專利名稱:與非閃存的讀取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及與非(NAND)閃存的讀取方法,尤其涉及在讀取與非閃 存中的存儲(chǔ)數(shù)據(jù)的過(guò)程中實(shí)現(xiàn)可能發(fā)生的錯(cuò)誤最少和穩(wěn)定與非閃存讀 取性能的與非閃存的讀取方法。
背景技術(shù):
最近,在PDA、 MP3播放器等多媒體裝置中正在廣泛使用閃存存 儲(chǔ)器。尤其當(dāng)存儲(chǔ)媒體的容量較大時(shí),需要使用與非閃存。
閃存存儲(chǔ)器劃分為或非(NOR)閃存和與非閃存兩種?;蚍情W存價(jià)格 比較昂貴,可以進(jìn)行XIP(Execute In Place:芯片內(nèi)執(zhí)行);與非閃存價(jià) 格便宜,但由于利用請(qǐng)求式頁(yè)面調(diào)度(Demand Paging),所以替代XIP 存在性能下降的可能。這里,我們對(duì)XIP進(jìn)行說(shuō)明。所謂XIP是一種即 使在隨機(jī)存取存儲(chǔ)器中不裝載閃存文件系統(tǒng)中存儲(chǔ)的實(shí)行代碼,也可 以執(zhí)行操作的技術(shù),該技術(shù)不但能夠減少隨機(jī)存取存儲(chǔ)器的存儲(chǔ)器要 求量,而且可以同時(shí)運(yùn)行多個(gè)應(yīng)用程序。
與非閃存中使用的請(qǐng)求式頁(yè)面調(diào)度是將用戶需要的數(shù)據(jù)從與非閃 存讀取一定部分,并存儲(chǔ)到SDRAM (同步式動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)中 的技術(shù),由于可以使用的SDRAM的空間受到限制,所以從與非閃存中 一次讀取的數(shù)據(jù)量并不多,與讀取數(shù)據(jù)的時(shí)間相比,其系統(tǒng)性能降低。
圖l為普通的與非閃存的結(jié)構(gòu)示意圖。普通的與非閃存一般由512 字節(jié)[Bytes]構(gòu)成的主數(shù)據(jù)和包括錯(cuò)誤糾正代碼(Error Correction Code:
以下簡(jiǎn)稱"ECC")在內(nèi)的16字節(jié)的備用區(qū)域構(gòu)成。
圖2是上述結(jié)構(gòu)構(gòu)成的與非閃存讀取數(shù)據(jù)方法的示意圖。下面,對(duì) 讀取數(shù)據(jù)的過(guò)程進(jìn)行說(shuō)明。
首先,為了讀取與非閃存中存儲(chǔ)的數(shù)據(jù),中央處理器(CPU)輸入讀 取指令,并輸入要讀取的與非閃存的地址。
與非閃存接收到CPU輸入的指令和地址后,輸出相關(guān)數(shù)據(jù),為了 檢測(cè)上述與非閃存輸出的數(shù)據(jù)是否存在錯(cuò)誤,CPU生成正確的ECC值, 將與非閃存輸出數(shù)據(jù)的ECC值與上述CPU生成的ECC值進(jìn)行比較。
對(duì)上述ECC值比較,當(dāng)兩個(gè)ECC值相同時(shí),結(jié)束讀取過(guò)程;當(dāng)兩 個(gè)ECC值不同時(shí),向CPU報(bào)告存在錯(cuò)誤。
經(jīng)過(guò)上述兩個(gè)ECC值的比較,當(dāng)與非閃存輸出的數(shù)據(jù)存在錯(cuò)誤時(shí), 例如,如果在與非閃存輸出數(shù)據(jù)的最小單位一512字節(jié)頁(yè)中存在1字節(jié) 錯(cuò)誤,則CPU利用從與非閃存接收的ECC值與在CPU中生成的ECC值, 查找到l字節(jié)錯(cuò)誤,并對(duì)l字節(jié)的錯(cuò)誤進(jìn)行糾正。
但,如果與非閃存輸出的數(shù)據(jù)中存在2字節(jié)錯(cuò)誤,由于只能判斷發(fā) 生了2字節(jié)錯(cuò)誤,不能查找到錯(cuò)誤位置或錯(cuò)誤值,只好向CPU報(bào)告發(fā)生 2字節(jié)錯(cuò)誤,重新執(zhí)行讀取動(dòng)作。如果在重新執(zhí)行的讀取動(dòng)作中再次發(fā) 生2字節(jié)錯(cuò)誤,根本沒(méi)有解決的方法。
即,當(dāng)讀取現(xiàn)有的與非閃存中存儲(chǔ)的數(shù)據(jù)時(shí),當(dāng)512字節(jié)存在1字 節(jié)錯(cuò)誤,可以查找到錯(cuò)誤位置,并對(duì)錯(cuò)誤值進(jìn)行糾正。但,對(duì)于2字節(jié) 錯(cuò)誤卻束手無(wú)策。當(dāng)然,發(fā)生2字節(jié)錯(cuò)誤的幾率很低,但是,隨著使用 大容量與非閃存裝置的不斷增多,讀取動(dòng)作也會(huì)增多,因此,發(fā)生2字
節(jié)以上致命錯(cuò)誤的幾率必然增多。
發(fā)明內(nèi)容
為了解決上述問(wèn)題,本發(fā)明旨在提供一種與非閃存的讀取方法, 即,當(dāng)發(fā)生1字節(jié)錯(cuò)誤時(shí),對(duì)已具有的管理發(fā)生1字節(jié)錯(cuò)誤頁(yè)面的錯(cuò) 誤頁(yè)面一覽表進(jìn)行更新,如果存在發(fā)生1字節(jié)錯(cuò)誤的次數(shù)超過(guò)已設(shè)定 的頻度基準(zhǔn)的頁(yè)面,則將超過(guò)頻度基準(zhǔn)頁(yè)面的數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)
約區(qū)域中,當(dāng)在存儲(chǔ)到預(yù)約區(qū)域的頁(yè)面中發(fā)生2字節(jié)錯(cuò)誤時(shí),利用存 儲(chǔ)在預(yù)約區(qū)域的頁(yè)面進(jìn)行修復(fù),提高發(fā)生2字節(jié)錯(cuò)誤頁(yè)面的錯(cuò)誤修復(fù) 能力,增強(qiáng)與非閃存讀取性能的與非閃存的讀取方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明與非閃存的讀取方法的特征包括如下 步驟CPU輸入讀取的指令和地址,從與非閃存讀取相關(guān)頁(yè)面數(shù)據(jù)的 第1步驟;為了檢測(cè)在上述相關(guān)頁(yè)面數(shù)據(jù)中是否存在錯(cuò)誤,生成正確 的錯(cuò)誤糾正代碼值,將生成的ECC值與上述相關(guān)頁(yè)面的ECC值進(jìn)行 比較的第2步驟;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在上述相關(guān)頁(yè)面中 發(fā)生1字節(jié)錯(cuò)誤時(shí),對(duì)發(fā)生的1字節(jié)錯(cuò)誤進(jìn)行糾正后,對(duì)已具有的管 理發(fā)生1字節(jié)錯(cuò)誤頁(yè)面的錯(cuò)誤頁(yè)面一覽表進(jìn)行更新,當(dāng)上述相關(guān)頁(yè)面 的1字節(jié)錯(cuò)誤發(fā)生的次數(shù)超過(guò)已設(shè)定的頻度基準(zhǔn)次數(shù)時(shí),將相關(guān)頁(yè)面 的數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)約區(qū)域中的第3步驟;當(dāng)上述兩個(gè)ECC值的 比較結(jié)果是在上述相關(guān)頁(yè)面發(fā)生2字節(jié)錯(cuò)誤時(shí),判斷在上述預(yù)約區(qū)域 是否存在相關(guān)頁(yè)面的數(shù)據(jù),如果在上述預(yù)約區(qū)域存在相關(guān)頁(yè)面的數(shù)據(jù), 則讀取在預(yù)約區(qū)域中存儲(chǔ)的相關(guān)頁(yè)面數(shù)據(jù),執(zhí)行第2步驟的第4步驟。
如上所述,本發(fā)明的與非閃存的讀取方法具有特征當(dāng)發(fā)生1字 節(jié)錯(cuò)誤時(shí),對(duì)已具有的管理發(fā)生1字節(jié)錯(cuò)誤頁(yè)面的錯(cuò)誤頁(yè)面一覽表進(jìn)
行更新,如果存在發(fā)生1字節(jié)錯(cuò)誤的次數(shù)超過(guò)已設(shè)定的頻度基準(zhǔn)的頁(yè) 面,則將超過(guò)頻度基準(zhǔn)的頁(yè)面的數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)約區(qū)域中,當(dāng)
在存儲(chǔ)到預(yù)約區(qū)域的頁(yè)面中發(fā)生2字節(jié)錯(cuò)誤時(shí),利用存儲(chǔ)在預(yù)約區(qū)域 的頁(yè)面進(jìn)行修復(fù),以此提高發(fā)生2字節(jié)錯(cuò)誤的頁(yè)面的錯(cuò)誤修復(fù)能力, 提高與非閃存的讀取性能。
圖l為普通的與非閃存結(jié)構(gòu)的示意圖。 圖2為現(xiàn)有的與非閃存的讀取方法的一實(shí)施例的順序框圖。 圖3為本發(fā)明的與非閃存的讀取方法的一實(shí)施例的順序框圖。
具體實(shí)施例方式
下面將參照附圖對(duì)具有以上特征的本發(fā)明與非閃存的讀取方法的 實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明的重點(diǎn)在于,在進(jìn)行與非閃存的讀取動(dòng)作過(guò)程中,當(dāng)與非 閃存輸出的頁(yè)面上發(fā)生1字節(jié)錯(cuò)誤時(shí),除了對(duì)1字節(jié)錯(cuò)誤進(jìn)行修復(fù)以 外,對(duì)常常發(fā)生1字節(jié)錯(cuò)誤的頁(yè)面的一覽表繼續(xù)管理,以后,當(dāng)發(fā)生2 字節(jié)錯(cuò)誤時(shí),對(duì)2字節(jié)錯(cuò)誤進(jìn)行修復(fù)。
發(fā)生上述2字節(jié)錯(cuò)誤時(shí)修復(fù)的方法是,通過(guò)一覽表對(duì)常常發(fā)生1 字節(jié)錯(cuò)誤的頁(yè)面繼續(xù)管理,如果1字節(jié)錯(cuò)誤發(fā)生的次數(shù)超過(guò)已設(shè)定的 頻度基準(zhǔn)次數(shù),則將相關(guān)頁(yè)面存儲(chǔ)到與非閃存的部分區(qū)域-已設(shè)定的預(yù) 約區(qū)域中,以后,如果存儲(chǔ)在預(yù)約區(qū)域中的相關(guān)頁(yè)面發(fā)生2字節(jié)錯(cuò)誤, 讀取存儲(chǔ)在預(yù)約區(qū)域中的同一頁(yè)面,并修復(fù)。
隨著預(yù)測(cè)錯(cuò)誤發(fā)生的可能性和預(yù)約區(qū)域大小的不同,本發(fā)明的性 能存在很大差異,上述兩個(gè)變數(shù)的最佳值可以根據(jù)使用與非閃存的系 統(tǒng)特性,通過(guò)試驗(yàn)獲得。
圖3為本發(fā)明的與非閃存的讀取方法的一實(shí)施例的順序圖。如圖 所示,包括以下幾個(gè)步驟CPU輸入讀取的指令和地址,從與非閃存 讀取相關(guān)頁(yè)面數(shù)據(jù)的第1步驟;CPU生成ECC值,將生成的ECC值 與上述相關(guān)頁(yè)面的ECC值進(jìn)行比較的第2步驟;當(dāng)上述兩個(gè)ECC值 的比較結(jié)果是在上述相關(guān)頁(yè)面中發(fā)生1字節(jié)錯(cuò)誤時(shí),對(duì)發(fā)生的1字節(jié) 錯(cuò)誤進(jìn)行糾正后,更新錯(cuò)誤頁(yè)面一覽表,當(dāng)上述相關(guān)頁(yè)面的1字節(jié)錯(cuò) 誤發(fā)生的次數(shù)超過(guò)已設(shè)定的頻度基準(zhǔn)次數(shù)時(shí),將相關(guān)頁(yè)面數(shù)據(jù)存儲(chǔ)到 已設(shè)定的預(yù)約區(qū)域中的第3步驟;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在 上述相關(guān)頁(yè)面發(fā)生2字節(jié)錯(cuò)誤時(shí),如果在上述預(yù)約區(qū)域存在相關(guān)頁(yè)面 的數(shù)據(jù),讀取在預(yù)約區(qū)域中存儲(chǔ)的相關(guān)頁(yè)面數(shù)據(jù),執(zhí)行第2步驟的第4 步驟。
而且,與非閃存的讀取方法還包括當(dāng)發(fā)生上述2字節(jié)錯(cuò)誤時(shí), 如果在預(yù)約區(qū)域不存在發(fā)生2字節(jié)錯(cuò)誤的相關(guān)頁(yè)面的數(shù)據(jù),則向CPU 報(bào)告2字節(jié)錯(cuò)誤的步驟。
下面,對(duì)以上步驟構(gòu)成的本發(fā)明的動(dòng)作進(jìn)行詳細(xì)說(shuō)明。
首先,為了讀取與非閃存中存儲(chǔ)的數(shù)據(jù),CPU輸入讀取指令,并 輸入要讀取的與非閃存的地址。
CPU從與非閃存讀取與上述輸入的指令和地址對(duì)應(yīng)的相關(guān)頁(yè)面數(shù) 據(jù),為了檢測(cè)與非閃存輸出的相關(guān)頁(yè)面數(shù)據(jù)中是否存在錯(cuò)誤,生成正 確的ECC值,將與非閃存輸出的相關(guān)頁(yè)面數(shù)據(jù)的ECC值與其進(jìn)行比 較。
對(duì)上述ECC值比4交,當(dāng)兩個(gè)ECC值相同時(shí),由于在相關(guān)頁(yè)面沒(méi) 有錯(cuò)誤,結(jié)束讀取過(guò)程,當(dāng)兩個(gè)ECC值不同時(shí),向CPU報(bào)告存在錯(cuò)誤。
經(jīng)過(guò)比較上述兩個(gè)ECC值,如果在與非閃存輸出的數(shù)據(jù)中存在1 字節(jié)錯(cuò)誤,CPU就利用從與非閃存接收的ECC值與在CPU中生成的 ECC值,查找到1字節(jié)錯(cuò)誤,并對(duì)1字節(jié)的錯(cuò)誤進(jìn)行糾正。
對(duì)上述相關(guān)頁(yè)面的1字節(jié)錯(cuò)誤進(jìn)行糾正,然后對(duì)已設(shè)定的錯(cuò)誤頁(yè) 面一覽表的相應(yīng)錯(cuò)誤頁(yè)面信息進(jìn)行更新。即,上述錯(cuò)誤頁(yè)面一覽表包 括發(fā)生1字節(jié)錯(cuò)誤頁(yè)面的1字節(jié)錯(cuò)誤發(fā)生的次數(shù),如果存儲(chǔ)在上述一 覽表中的頁(yè)面再次發(fā)生1字節(jié)錯(cuò)誤,就增加頁(yè)面的镅-i吳發(fā)生次數(shù),更 新一覽表。而且,當(dāng)存儲(chǔ)在上述錯(cuò)誤頁(yè)面一覽表中的頁(yè)面的1字節(jié)錯(cuò) 誤發(fā)生次數(shù)相同時(shí),在最近發(fā)生的頁(yè)面上設(shè)置加權(quán)值進(jìn)行管理。這是 由于當(dāng)在與非閃存中存儲(chǔ)數(shù)據(jù)時(shí),存在時(shí)間的類似性,最近使用的數(shù) 據(jù)很有可能在一定期間持續(xù)使用的緣故。
完成更新上述錯(cuò)誤頁(yè)面一覽表后,判斷發(fā)生1字節(jié)錯(cuò)誤的相應(yīng)頁(yè) 面的錯(cuò)誤發(fā)生的次數(shù)是否超過(guò)已設(shè)定的頻度基準(zhǔn)。當(dāng)上述判斷結(jié)果為, 如果與非閃存輸出的相應(yīng)頁(yè)面的i字節(jié)錯(cuò)誤發(fā)生的次數(shù)超過(guò)頻度基準(zhǔn),
則將相應(yīng)頁(yè)面的數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)約區(qū)域中。這時(shí),預(yù)約區(qū)域大 小據(jù)讀取動(dòng)作以頁(yè)面單位形成,將頁(yè)面單位的預(yù)約區(qū)域大小設(shè)置較多
即可,但通常,在需要進(jìn)行清除動(dòng)作的情況下,由于其基本單位是由
32個(gè)頁(yè)面構(gòu)成的塊,預(yù)約區(qū)域的大小優(yōu)選為塊大小。而且,預(yù)約區(qū)域
大小并沒(méi)有規(guī)定,隨著存儲(chǔ)裝置的容量的大小和常常執(zhí)行的動(dòng)作不同,
預(yù)約區(qū)域大小也不同。
相反,當(dāng)上述兩個(gè)ECC值的比較結(jié)果為,如果在與非閃存輸出的 相應(yīng)頁(yè)面上存在2字節(jié)錯(cuò)誤,判斷在預(yù)約區(qū)域是否存在與相關(guān)頁(yè)面相 同的頁(yè)面數(shù)據(jù),當(dāng)不存在與相關(guān)頁(yè)面相同的頁(yè)面數(shù)據(jù)時(shí),與現(xiàn)有的技 術(shù)一樣,向CPU報(bào)告存在2字節(jié)錯(cuò)誤后,結(jié)束動(dòng)作;否則,當(dāng)在預(yù)約 區(qū)域存在與發(fā)生2字節(jié)錯(cuò)誤相應(yīng)頁(yè)面相同的頁(yè)面數(shù)據(jù)時(shí),讀取在預(yù)約 區(qū)域中存儲(chǔ)的相應(yīng)頁(yè)面的數(shù)據(jù)。
如果讀取在預(yù)約區(qū)域中存儲(chǔ)的相應(yīng)頁(yè)面的數(shù)據(jù),由于執(zhí)行讀取動(dòng) 作,為了檢測(cè)相應(yīng)頁(yè)面的錯(cuò)誤,在CPU中生成正確的ECC值,并重 新運(yùn)行在上述預(yù)約區(qū)域讀取的相應(yīng)頁(yè)面的ECC值與上述CPU中生成 的ECC值進(jìn)行比較的過(guò)程。
由于本發(fā)明通過(guò)比較在預(yù)約區(qū)域中讀取的相應(yīng)頁(yè)面的ECC值和 CPU中生成的ECC值,進(jìn)行錯(cuò)誤糾正,即使在與非閃存輸出的相應(yīng)頁(yè) 面上發(fā)生2字節(jié)錯(cuò)誤,也可以對(duì)錯(cuò)誤進(jìn)行修復(fù),具有提高效率的優(yōu)點(diǎn)。
并且,由于很難掌握使用頻度低的頁(yè)面的錯(cuò)誤特性,所以本發(fā)明 在初始化過(guò)程中, 一次讀取與非閃存中存儲(chǔ)的整個(gè)頁(yè)面的數(shù)據(jù),掌握 所有頁(yè)面的讀取錯(cuò)誤特性。
權(quán)利要求
1、一種與非閃存的讀取方法,其特征在于,包括如下步驟CPU輸入讀取的指令和地址,從與非閃存讀取相關(guān)頁(yè)面的數(shù)據(jù)的第1步驟;為了檢測(cè)是否在上述相關(guān)頁(yè)面數(shù)據(jù)中存在錯(cuò)誤,生成正確的ECC值,將生成的ECC值與上述相關(guān)頁(yè)面的ECC值進(jìn)行比較的第2步驟;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在上述相關(guān)頁(yè)面中發(fā)生1字節(jié)錯(cuò)誤時(shí),對(duì)發(fā)生的1字節(jié)錯(cuò)誤進(jìn)行糾正后,對(duì)已具有的管理發(fā)生1字節(jié)錯(cuò)誤頁(yè)面的錯(cuò)誤頁(yè)面一覽表進(jìn)行更新,當(dāng)上述相關(guān)頁(yè)面的1字節(jié)錯(cuò)誤發(fā)生的次數(shù)超過(guò)已設(shè)定的頻度基準(zhǔn)次數(shù)時(shí),將相關(guān)頁(yè)面數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)約區(qū)域中的第3步驟;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在上述相關(guān)頁(yè)面發(fā)生2字節(jié)錯(cuò)誤時(shí),判斷在上述預(yù)約區(qū)域是否存在相關(guān)頁(yè)面的數(shù)據(jù),如果在上述預(yù)約區(qū)域存在相關(guān)頁(yè)面的數(shù)據(jù),讀取在預(yù)約區(qū)域中存儲(chǔ)的相關(guān)頁(yè)面數(shù)據(jù),執(zhí)行第2步驟的第4步驟。
2、 如權(quán)利要求1所述與非閃存的讀取方法,其特征在于當(dāng)在上 述相應(yīng)頁(yè)面發(fā)生上述2字節(jié)錯(cuò)誤時(shí),如果在預(yù)約區(qū)域不存在相關(guān)頁(yè)面 的數(shù)據(jù),則向CPU報(bào)告2字節(jié)錯(cuò)誤。
3、 如權(quán)利要求1所述的與非閃存的讀取方法,其特征在于上述 預(yù)約區(qū)域大小是由32個(gè)頁(yè)面構(gòu)成的塊大小。
4、 如權(quán)利要求1所述的與非閃存的讀取方法,其特征在于上述 錯(cuò)誤頁(yè)面一覽表包括發(fā)生1字節(jié)錯(cuò)誤的頁(yè)面的1字節(jié)錯(cuò)誤發(fā)生的次數(shù),如果存儲(chǔ)在上述一覽表中的頁(yè)面再次發(fā)生1字節(jié)錯(cuò)誤,就增加頁(yè)面的 錯(cuò)誤發(fā)生次數(shù),并進(jìn)行更新。
全文摘要
本發(fā)明涉及一種與非閃存的讀取方法,包括CPU輸入讀取的指令和地址,從與非閃存中讀取相關(guān)頁(yè)面數(shù)據(jù);為了檢測(cè)是否在上述相關(guān)頁(yè)面數(shù)據(jù)中存在錯(cuò)誤,生成正確的ECC值,將該值與上述相關(guān)頁(yè)面的ECC值進(jìn)行比較;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在上述相關(guān)頁(yè)面中發(fā)生1字節(jié)錯(cuò)誤時(shí),對(duì)發(fā)生的1字節(jié)錯(cuò)誤進(jìn)行糾正后,對(duì)相應(yīng)的錯(cuò)誤頁(yè)面一覽表進(jìn)行更新,當(dāng)上述相關(guān)頁(yè)面的1字節(jié)錯(cuò)誤發(fā)生的次數(shù)超過(guò)已設(shè)定的頻度基準(zhǔn)次數(shù)時(shí),將相關(guān)頁(yè)面數(shù)據(jù)存儲(chǔ)到已設(shè)定的預(yù)約區(qū)域中;當(dāng)上述兩個(gè)ECC值的比較結(jié)果是在上述相關(guān)頁(yè)面發(fā)生2字節(jié)錯(cuò)誤時(shí),如果判斷在上述預(yù)約區(qū)域存在相關(guān)頁(yè)面的數(shù)據(jù),則讀取該區(qū)域存儲(chǔ)的相關(guān)頁(yè)面數(shù)據(jù),執(zhí)行第2步驟。
文檔編號(hào)G11C16/06GK101101790SQ200610086318
公開日2008年1月9日 申請(qǐng)日期2006年7月7日 優(yōu)先權(quán)日2006年7月7日
發(fā)明者金泰瓘 申請(qǐng)人:樂(lè)金電子(昆山)電腦有限公司