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