專利名稱:非易失性存儲器糾錯系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明 一般涉及存儲器系統(tǒng),尤其涉及帶有糾錯的非易失性存儲系統(tǒng)。
背景技術(shù):
用戶電子設(shè)備,諸如蜂窩電話、數(shù)字音樂播放器、拇指(thumb) 驅(qū)動器以及其他手持設(shè)備,執(zhí)行日益復(fù)雜的算法,例如用于解碼壓縮 數(shù)字音頻和視頻數(shù)據(jù)的算法和顯示用戶界面的算法。隨著這些算法復(fù) 雜度的增加,存儲這些算法的存儲器的大小也增加了。
越來越多地,制造商開始轉(zhuǎn)向非易失性存儲器設(shè)備,諸如包括 NAND和NOR閃存設(shè)備的閃存設(shè)備。典型地,非易失性存儲器設(shè)備 在邏輯單元中存儲數(shù)據(jù),例如內(nèi)存頁和內(nèi)存塊。通常,數(shù)據(jù)被寫入一 個特定的頁并可在該頁中從各個位置讀出。 一般地,塊是可被擦除的 數(shù)據(jù)的最小單位。
在一個典型的閃存設(shè)備中,每個頁具有一個載荷數(shù)據(jù)區(qū)和一個冗 余存儲區(qū),有時被稱為開銷區(qū)或者元數(shù)據(jù)區(qū)。該頁的冗余存儲區(qū)存儲 了有關(guān)該頁的信息,有關(guān)該頁內(nèi)數(shù)據(jù)的信息,和與該頁糾錯程序有關(guān) 的數(shù)據(jù)。
在諸如閃存的非易失性存儲設(shè)備上訪問和存儲數(shù)據(jù)典型地使用 了虛擬地址。非易失性存儲設(shè)備趨向于隨使用而損耗,這樣,固態(tài)的 非易失性存儲器設(shè)備中的扇區(qū)可能會失去存儲無錯數(shù)據(jù)的容量。通過 讀數(shù)據(jù)扇區(qū)和檢查系統(tǒng)數(shù)據(jù)中的特定編碼值來執(zhí)行壞扇區(qū)的編目和 扇區(qū)映射的生成。 一般地,與數(shù)據(jù)扇區(qū)的數(shù)據(jù)相關(guān)聯(lián)的糾錯碼(ECC) 被包括在冗余數(shù)據(jù)區(qū)中以用于數(shù)據(jù)中的噪音糾正。例如,當(dāng)數(shù)據(jù)將被 寫入存儲器時,基于被寫入的數(shù)據(jù)計算出ECC,并且該ECC與數(shù)據(jù)
6(例如,冗余數(shù)據(jù)區(qū)中) 一起存入存儲器。當(dāng)數(shù)據(jù)被訪問時,從被訪
問的數(shù)據(jù)中計算新的ECC,并且該計算出的ECC和與數(shù)據(jù)一起存儲 的ECC進(jìn)行比較。如果在計算的ECC和存儲的ECC間存在差異, 則數(shù)據(jù)很有可能被損壞了且該扇區(qū)可能是壞的。在一些例子中,在數(shù) 據(jù)發(fā)送到后續(xù)的存儲系統(tǒng)或者處理器之前,可使用多個ECC來糾正 數(shù)據(jù)。
盡管ECC方法可以處理存儲器錯誤,但是在非易失性存儲器中 讀ECC和對損害的數(shù)據(jù)執(zhí)行糾錯的過程是一個耗時的過程。因此, 需要為非易失性存儲器改善糾錯的系統(tǒng)和方法。
發(fā)明內(nèi)容
在一個實施例中,非易失性存儲器具有第 一載荷數(shù)據(jù)區(qū)域和與第 一載荷數(shù)據(jù)區(qū)域相關(guān)的第一冗余存儲區(qū)域。第一冗余存儲區(qū)具有第一 部分,第二部分和第三部分。第一部分包括與第一載荷數(shù)據(jù)區(qū)域相關(guān) 聯(lián)的第一載荷糾錯碼(ECC)數(shù)據(jù)。第二部分包括與第一載荷數(shù)據(jù)區(qū) 域相關(guān)聯(lián)的第一元數(shù)據(jù)。第三部分包括與第一元數(shù)據(jù)相關(guān)聯(lián)的第一元 數(shù)據(jù)ECC數(shù)據(jù)。
在另一個實施例中,系統(tǒng)具有非易失性存儲器和糾錯模塊。該非 易失性存儲器具有與第 一栽荷數(shù)據(jù)區(qū)域相關(guān)聯(lián)的栽荷糾錯碼(ECC ) 數(shù)據(jù)和與載荷數(shù)據(jù)區(qū)域相關(guān)聯(lián)的元數(shù)據(jù)ECC數(shù)據(jù)。該糾錯模塊包括 響應(yīng)于接收到元數(shù)據(jù)ECC數(shù)據(jù)而執(zhí)行糾錯的邏輯。
在另一個實施例中,生成與數(shù)據(jù)載荷相關(guān)聯(lián)的數(shù)據(jù)保護(hù)碼。生成 與數(shù)據(jù)保護(hù)碼相關(guān)的元數(shù)據(jù)保護(hù)碼。該數(shù)據(jù)載荷存儲于非易失性的載 荷數(shù)據(jù)區(qū)域中,數(shù)據(jù)保護(hù)碼和元數(shù)據(jù)保護(hù)碼存儲于非易失性存儲器的 冗余數(shù)據(jù)區(qū)域中。
通過參考以下附圖,本發(fā)明可被更好的理解,并且其眾多特征和 優(yōu)點對于本領(lǐng)域技術(shù)人員將變得明顯。圖l是處理系統(tǒng)的具體示例性實施例的一部分的框圖。
圖2是用于諸如圖l所示的處理系統(tǒng)的分區(qū)非易失性存儲器的框圖。
圖3是說明圖2非易失性存儲器的冗余存儲區(qū)部分的選擇內(nèi)容的 一般框圖。
圖4是用于諸如圖l所示的系統(tǒng)的處理系統(tǒng)的糾錯模塊的具體實 施例的框圖。
圖5是用于諸如圖1所示的系統(tǒng)的處理系統(tǒng)的糾錯模塊和通用存 儲器接口模塊的具體實施例的框圖。
圖6是將數(shù)據(jù)寫入非易失性存儲器的方法的流程圖。 圖7是從非易失性存儲器中讀取數(shù)據(jù)的方法的流程圖。 在不同圖中的相同參考符號指示相似或者相同的項。
具體實施例方式
圖1是具體示例性的處理系統(tǒng)100的一部分的框圖。該系統(tǒng)100 包括中央處理單元(CPU) 102,非易失性存儲器104,通用存儲器接 口 (GPMI) 106,錯誤檢測/糾正模塊108,和易失性存儲器,例如緩 存或者隨機存取存儲器(RAM) 110。來自非易失性存儲器104的傳 輸數(shù)據(jù)114和糾錯數(shù)據(jù)112可被存儲在RAM 110中。CPU 102、非易 失性存儲器104、 GPMI106、錯誤檢測/糾正模塊108和RAM110通 過通信總線116通信地耦合。
通常,CPU 102處理計算機可讀指令,例如軟件程序。在操作時, CPU 102生成到RAM 110和非易失性存儲器104的存儲器訪問請求 以請求訪問特定數(shù)據(jù)。GPMI 106可接收該存儲器訪問請求,獲取請 求的載荷數(shù)據(jù),并向錯誤檢測/糾正模塊108提供載荷數(shù)據(jù)、相關(guān)聯(lián)的 錯誤檢測碼以及糾錯碼(ECC )數(shù)據(jù)。錯誤檢測/糾正模塊108可處理 該栽荷數(shù)據(jù)以識別載荷數(shù)據(jù)中錯誤的位置和值。錯誤檢測/糾正模塊 108可基于所識別的位置和值來糾正錯誤,并可在RAM 110中存儲糾 4晉數(shù)據(jù)112。才艮據(jù)該方式,GPMI 106可通過總線116傳輸被請求的數(shù)據(jù)以存儲在RAM 110中。錯誤檢測/糾正模塊108可從RAM 110 加載所傳輸?shù)臄?shù)據(jù)114,以基于由GPMI106提供的錯誤檢測和ECC 數(shù)據(jù)進(jìn)行處理。
通常,非易失性存儲器104可被分區(qū)為數(shù)據(jù)載荷區(qū)和冗余數(shù)據(jù) 區(qū)。載荷數(shù)據(jù)可被存儲在數(shù)據(jù)載荷區(qū),而與載荷數(shù)據(jù)相關(guān)聯(lián)的錯誤檢 測和錯誤糾正數(shù)據(jù)可存儲于冗余數(shù)據(jù)區(qū)。此外,根據(jù)特定的實施方式,
f曰妖松狄'J p辨妖多"1 Jt欽游^目天的7L欽雜錯' 冗佘數(shù)據(jù)區(qū)或者可被存儲于元數(shù)據(jù)冗佘數(shù)據(jù)區(qū)。
圖2說明了用于處理系統(tǒng)(諸如圖1的處理系統(tǒng))的分區(qū)的非易 失性存儲器104。非易失性存儲器104被分區(qū)以形成載荷數(shù)據(jù)區(qū)204 和冗余數(shù)據(jù)區(qū)206。栽荷數(shù)據(jù)區(qū)204包括代表性的載荷區(qū)208, 210, 212和214。在具體實施例中,栽荷區(qū)208-214中的每一個可包括多達(dá) 512字節(jié)的載荷數(shù)據(jù)。
冗佘數(shù)據(jù)區(qū)206包括與每個單個載荷數(shù)據(jù)區(qū)208, 210, 212和 214相關(guān)聯(lián)的冗余數(shù)據(jù)。所示的冗余數(shù)據(jù)區(qū)206包括奇偶校驗區(qū)216, 220, 224, 228和232及校正子區(qū)218, 222, 226和230。在一個特 定的實施例中,奇偶校驗區(qū)216, 220, 224, 228和232中的每一個 以及4交正子區(qū)218, 222, 226以及230中的每一個包括多達(dá)12字節(jié) 的信息,該信息與載荷區(qū)208, 210, 212和214中的其中一個的載荷 數(shù)據(jù)相關(guān)。
例如,載荷區(qū)208包括512字節(jié)的載荷數(shù)據(jù)。奇偶校驗區(qū)216 和校正子區(qū)218的每一個分別包括12字節(jié)的奇偶校驗數(shù)據(jù)和12字節(jié) 的校正子數(shù)據(jù)。12字節(jié)的奇偶校驗數(shù)據(jù)和12字節(jié)的校正子數(shù)據(jù)與載 荷區(qū)208的512字節(jié)的栽荷數(shù)據(jù)相關(guān)聯(lián)。在特定的例子中,奇偶校驗 區(qū)域216, 220, 224, 228, 232中的每一個包括8個9比特的符號, 具有3個附加字節(jié)的對齊填充。校正子區(qū)218, 222, 226,230及234 中的每一個包括8個9比特的符號,具有3個附加字節(jié)的對齊填充。
通常,存儲于奇偶校驗區(qū)232的元數(shù)據(jù)奇偶校驗數(shù)據(jù)和存儲于校 正子區(qū)234中的計算出來的元數(shù)據(jù)校正子數(shù)據(jù)分別與奇偶校驗區(qū)216,
9220, 224及228中的奇偶校驗數(shù)據(jù)和校正子區(qū)218, 222, 226及230 中的校正子數(shù)據(jù)相關(guān)聯(lián)。此外,冗余數(shù)據(jù)區(qū)206包括20字節(jié)的輔助 存儲區(qū)236。元數(shù)據(jù)奇偶校驗數(shù)據(jù)和元數(shù)據(jù)校正子數(shù)據(jù)代表存儲于奇 偶校驗區(qū)216, 220, 224和228以及校正子區(qū)218, 222, 226和230 中的數(shù)據(jù)的奇偶校驗數(shù)據(jù)和校正子數(shù)據(jù)。在一個實施例中,奇偶校驗 數(shù)據(jù)和校正子數(shù)據(jù)代表載荷數(shù)據(jù)的元數(shù)據(jù)。存儲于奇偶校驗區(qū)232和 校正子區(qū)234中的數(shù)據(jù)代表元數(shù)據(jù)的元數(shù)據(jù)。
通常,圖2中的非易失性存儲器104的分區(qū)及載荷區(qū)204和206 說明了一個代表性的2K內(nèi)存頁的系統(tǒng)存儲覆蓋區(qū)。來自錯誤檢測/ 糾正模塊108的校正子生成模塊(圖4中所示)的數(shù)據(jù)包括32比特 的信息,該信息存儲于校正子區(qū)234和輔助存儲區(qū)236中。
在一個可選實施例中,分區(qū)及載荷區(qū)可被調(diào)整為4K內(nèi)存頁的大 小。例如,數(shù)據(jù)載荷區(qū)204可被擴(kuò)展為包括8個載荷區(qū),每個栽荷區(qū) 具有大約512字節(jié)的信息。冗余數(shù)據(jù)區(qū)206中的每一個奇偶校驗區(qū) 216, 220, 224及228以及每一個校正子區(qū)218, 222, 226及230可 類似地擴(kuò)展為存儲20字節(jié)的奇偶校驗數(shù)據(jù)和20字節(jié)的校正子數(shù)據(jù)。 在這種情況下,奇偶校驗數(shù)據(jù)區(qū)232和校正子數(shù)據(jù)區(qū)234可包括與奇 偶校驗區(qū)216, 220, 224和228以及校正子區(qū)218, 222, 226及230 相關(guān)聯(lián)的12個字節(jié)的奇偶校驗和校正子數(shù)據(jù),但輔助數(shù)據(jù)區(qū)236中 的輔助數(shù)據(jù)可能會增加。在一種情況下,輔助數(shù)據(jù)增加到大約68個 字節(jié)的信息。因此載荷奇偶校驗/校正子區(qū)可由16個9比特的符號組 成,具有2字節(jié)的對齊填充,并且輔助奇偶校驗/校正子區(qū)236可包含 8個9比特的符號,具有3字節(jié)的對齊填充。在另一個實施例中,元 數(shù)據(jù)ECC數(shù)據(jù)可存儲在分離的數(shù)據(jù)區(qū)中。
在另一個實施例中,冗余數(shù)據(jù)區(qū)206和載荷數(shù)據(jù)區(qū)204可以是分 布的。在這種情況下,奇偶校驗區(qū)216, 220, 224及228和校正子區(qū) 218, 222, 226及230會位于非連續(xù)的存儲地址位置。例如,載荷數(shù) 據(jù)區(qū)204的載荷數(shù)據(jù)可存儲于不同存儲地址的分離的載荷分區(qū),其分 布于冗余數(shù)據(jù)區(qū)206的冗余數(shù)據(jù)分區(qū)。例如,載荷區(qū)208,相關(guān)聯(lián)的奇偶校驗區(qū)216和校正子區(qū)218可被存儲于非易失性存儲器104內(nèi)的 相鄰的存儲分區(qū)。
通常,奇偶校驗及校正子數(shù)據(jù)提供可被錯誤檢測/糾正模塊108 用來檢測和糾正載荷數(shù)據(jù)中的錯誤的信息。此外,如果奇偶校驗/校正 子數(shù)據(jù)包含錯誤,則錯誤檢測/糾正模塊108可使用元數(shù)據(jù)ECC數(shù)據(jù) 來檢測和糾正這樣的錯誤。
圖3說明了非易失性存儲器104的冗余存儲區(qū)206的一部分的選 擇內(nèi)容。通常,冗余存儲區(qū)206包括糾錯數(shù)據(jù)302,該數(shù)據(jù)可包括栽 荷奇偶校驗數(shù)據(jù)和載荷校正子數(shù)據(jù),如圖2所示。此外,冗余存儲區(qū) 206包括糾錯碼(ECC)數(shù)據(jù)304,該數(shù)據(jù)可括元數(shù)據(jù)奇偶校驗數(shù)據(jù) 和元數(shù)據(jù)校正子數(shù)據(jù)。此外,冗余存儲區(qū)206可包括邏輯地址信息306, 數(shù)據(jù)塊狀態(tài)信息308,循環(huán)冗余校正(CRC)數(shù)據(jù)310,以及與元數(shù) 據(jù)相關(guān)的其他數(shù)據(jù)312。
通常,載荷數(shù)據(jù)存儲于非易失性存儲器的載荷數(shù)據(jù)區(qū),與載荷數(shù) 據(jù)相關(guān)聯(lián)的冗余數(shù)據(jù)存儲于該非易失性存儲器的冗余數(shù)據(jù)區(qū)。冗余數(shù) 據(jù)包括與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一載荷糾錯碼(ECC),以及與 該第一栽荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一元數(shù)據(jù)。與第一元數(shù)據(jù)相關(guān)聯(lián)的元數(shù) 據(jù)ECC數(shù)據(jù)也可被存儲在冗余數(shù)據(jù)區(qū)。元數(shù)據(jù)ECC數(shù)據(jù)可被獲取并 被用于糾正冗余數(shù)據(jù)中的錯誤,而無需從存儲器中獲取載荷數(shù)據(jù)。第 一元數(shù)據(jù)可包括循環(huán)冗余校驗(CRC)碼,或者其它類型的錯誤檢測 數(shù)據(jù)??蛇x地,第一元數(shù)據(jù)可包括錯誤校正子,其可被糾錯模塊用來 糾正載荷數(shù)據(jù)或者與該載荷數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)中的錯誤。
圖4是與諸如圖1中系統(tǒng)100的處理系統(tǒng)一起使用的錯誤檢觀'J/ 糾正模塊的一個具體實施例的框圖。錯誤檢測/糾正模塊108包括校正 子生成模塊402,錯誤方程解算和估算器406,糾錯單元407,以及 AHB總線主仲裁器和控制器408。 AHB總線主仲裁器和控制器408 為獲取校正子和糾正錯誤的訪問請求執(zhí)行加權(quán)的等級仲裁。
通常,AHB總線主仲裁器和控制器408將錯誤檢測/糾正模塊108 耦合到總線116,以便與系統(tǒng)100的其他模塊以及組件進(jìn)行通信。通常,通過執(zhí)行猝發(fā)操作、固定優(yōu)先級仲裁等,AHB總線主仲裁器和控 制器408為數(shù)據(jù)業(yè)務(wù)提供了高帶寬和低延時。此外,AHB總線主仲裁 器和控制器408限制了來自NAND接口 (GPMI106)的遲延。
通常,校正子生成模塊402通過通用存儲器接口 (GPMI) 106 接收來自非易失性存儲器104的數(shù)據(jù)塊。所述數(shù)據(jù)塊可包括固定數(shù)量 的載荷數(shù)據(jù)以及與該固定數(shù)量的載荷數(shù)據(jù)相關(guān)聯(lián)的奇偶校驗數(shù)據(jù)。校 正子生成模塊402還可接收與數(shù)據(jù)塊相關(guān)聯(lián)的控制信息。該校正子生 成模塊402根據(jù)載荷和奇偶校驗數(shù)據(jù)計算校正子信息。該校正子生成 模塊402向AHB總線主仲裁器和控制器408提供載荷數(shù)據(jù)、奇偶校 驗數(shù)據(jù)及計算出的校正子。
總線主仲裁器和控制器408可包括異步先入先出(FIFO)寄存 器(如圖5所示)以用于接收載荷數(shù)據(jù)、奇偶校驗數(shù)據(jù)、計算出的校 正子信息以及控制信息。此外,當(dāng)FIFO寄存器滿了時,總線主仲裁 器408可向校正子生成模塊402提供流控制信號。
可選地,校正子生成模塊402可在系統(tǒng)存儲器或其他存儲位置, 諸如圖1中的RAM 110中,存儲載荷數(shù)據(jù)、奇偶校驗數(shù)據(jù),校正子 信息和控制信息,直至總線主仲裁器和控制器408以及錯誤方程解算 和估算器406可用于錯誤處理。
錯誤方程解算和估算器406從總線主仲裁器和控制器408接收載 荷數(shù)據(jù)的校正子410。錯誤方程解算和估算器406處理校正子410以 生成符號索引412和符號掩碼414。符號索引412標(biāo)識包含一個或多 個錯誤的符號,而符號掩碼414指示該符號中的哪些特定比特需要被 執(zhí)行補操作(complement)以糾正錯誤。當(dāng)處理完成時,錯誤方程解 算和估算器406通知總線主仲裁器和控制器408,以使總線主仲裁器 和控制器408能提出下一組校正子410。錯誤方程解算和估算器406 將一對錯誤索引412和掩碼414提供給糾錯單元407,使其通過總線 主仲裁器和控制器408對特定的比特錯誤進(jìn)行補操作。錯誤方程解算 和估算器406還可向總線主仲裁器和控制器408提供需要糾正多少錯 誤的指示或載荷數(shù)據(jù)無法糾正的指示。
12通常,如果校正子模塊402將一個數(shù)據(jù)塊標(biāo)記為包含錯誤,則總 線主仲裁器和控制器408通過關(guān)鍵方程解算器安排一個錯誤糾正。從 而,校正子生成模塊402對數(shù)據(jù)塊執(zhí)行錯誤檢測,并且僅僅當(dāng)檢測到 錯誤時,錯誤方程解算和估算器406才執(zhí)行錯誤糾正過程。
總線主仲裁器和控制器408可適于使用錯誤索引和錯誤掩碼在 存儲器的塊中對數(shù)據(jù)比特進(jìn)行補操作。被糾正的數(shù)據(jù)可存儲在系統(tǒng)存 儲器、諸如緩存器或者RAM存儲器110的臨時存儲器、諸如非易失 性存儲器104的非易失性存儲器,和/或其任意組合中。
通常,錯誤方程解算和估算器406可為數(shù)據(jù)的可糾錯塊提供錯誤 索引412和錯誤掩碼414,其中一個數(shù)據(jù)塊包括n個符號減去2t個奇 偶校驗符號。n個符號是指符號中的塊的大小(例如,如圖2中的載 荷數(shù)據(jù)區(qū)中的512個符號),符號(t)是指可被糾正的錯誤的數(shù)量。在 一個實施例中,在512字節(jié)塊中的可被糾正的錯誤的數(shù)量可為8個。 根據(jù)所使用的錯誤糾正計算,或多或少可以糾正錯誤。
校正子生成模塊402計算2t個校正子。錯誤方程解算和估算器 406生成一組2t個線性方程,包括2t個未知數(shù)。錯誤方程解算和估 算器406使用Euclidean算法解算這組方程,用次數(shù)為2"(例如,Z或 者x")的特殊多項式除以根據(jù)2t個校正子形成的校正子多項式。 一旦 該除法產(chǎn)生小于或等于可被糾正錯誤(t)數(shù)量的次數(shù)的余數(shù),則錯誤方 程解算和估算器406終止該算法,并產(chǎn)生錯誤估算多項式和錯誤定位 多項式,以用來確定錯誤索引412和錯誤掩碼414。
圖5是糾錯系統(tǒng)500的一個實施例的框圖,糾錯系統(tǒng)500包括糾 錯模塊和通用存儲接口 (GPMI)模塊以用于諸如圖1的系統(tǒng)100的處理 系統(tǒng)。系統(tǒng)500包括通用存儲接口(GPMI)并行輸入/輸出502,校正子 生成器402,糾錯模塊108,總線主仲裁器和控制器408,通用存儲器 接口及計數(shù)器504,異步先入先出(FIFO)寄存器506和總線116。 GPMI 并行輸入/輸出502可通信地耦合到GPMI和計數(shù)器504以及校正子 生成器402。此外,GPMI并行輸入/輸出502可被耦合到非易失性存 儲器104。校正子生成器402被耦合到異步FIFO 506、 GPMI和計數(shù)器504。 異步FIFO 506還被連接到GPMI和計數(shù)器504和總線主仲裁器和控 制器408。 GPMI和計數(shù)器504被連接到總線主仲裁器和控制器408 和糾錯模塊108。
糾錯模塊108包括關(guān)鍵方程解算(KES)接口 512,關(guān)鍵方程解算 器514, Chein搜索和Forney估算器516,符號至地址轉(zhuǎn)換器518, 一個或多個寄存器520,以及糾錯模塊522。 KES接口512耦合到總 線主仲裁器和控制器408、關(guān)鍵方程解算器514以及糾錯模塊522。 Chein搜索/Forney估算器516被連接到符號至地址轉(zhuǎn)換器518,該轉(zhuǎn) 換器可被連接到一個或多個寄存器520和糾錯模塊522。糾錯模塊522 被連接到總線主仲裁器和控制器408。
總線主仲裁器和控制器408包括總線主接口 508以及仲裁器和控 制器510??偩€主接口 508連接到總線116,仲裁器和控制器510連 接到GPMI和計數(shù)器504、異步FIFO 506, KES接口 512和糾錯模 塊522。
通常,GPMI并行輸入/輸出502向GPMI和計數(shù)器504提供地 址信息。校正子生成模塊402向GPMI和計數(shù)器504提供塊的數(shù)量。 此外,校正子生成模塊402將載荷數(shù)據(jù)塊和計算出的校正子數(shù)據(jù)、奇 偶校驗數(shù)據(jù)及控制信息一起提供給異步FIFO 506。在讀操作中,載荷 數(shù)據(jù)塊被校正子生成模塊402處理并被傳送到異步FIFO 506。在一個 特定實施方式中,除了最后的寫操作,校正子生成模塊402的輸出字 由32個比特的數(shù)據(jù)(意指載荷,奇偶校驗或校正子比特)和4個標(biāo) 志位組成。載荷數(shù)據(jù)塊的最后一個輸出字可以是一個狀態(tài)字,其標(biāo)識 在塊中是否檢測到能節(jié)省處理時間的特定條件。例如,如果符號生成 模塊402并未檢測到錯誤,可以避免進(jìn)行錯誤糾正。異步FIFO 506 可向校正子生成模塊402提供流控制信號以控制數(shù)據(jù)塊和校正子信息 的傳輸。數(shù)據(jù)塊以及相關(guān)聯(lián)的奇偶校驗及校正子信息可被寫到異步 FIFO 506。
此外,還有多個從GPMI和計數(shù)器504以及從校正子生成模塊402傳輸?shù)娇偩€主仲裁器和控制器408的控制信號,例如模式比特, 存儲器地址,信道數(shù)量等等。典型地,控制信息可被包括在載荷數(shù)據(jù) 塊的開始。
異步FIFO 506向GPMI和計數(shù)器504提供數(shù)據(jù)、校正子信息、 奇偶校正數(shù)據(jù)及控制信息。通常,控制信息可包括比特標(biāo)志,其指示 新數(shù)據(jù)塊的第一個字、數(shù)據(jù)塊傳輸?shù)拈_始和結(jié)束以及狀態(tài)字標(biāo)志。異 步FIFO 506的控制邏輯可監(jiān)視FIFO的狀態(tài),并當(dāng)FIFO沒有足夠的 空間給新數(shù)據(jù)時,向校正子生成模塊402報告一個滿狀態(tài)。
GPMI和計數(shù)器504向KES接口 512傳輸數(shù)據(jù)及校正子信息。 KES接口 512向關(guān)鍵方程解算器514提供計算出的校正子數(shù)據(jù)以便進(jìn) 行錯誤檢測。如果數(shù)據(jù)塊被標(biāo)記為無錯誤,則GPMI和計數(shù)器504可 將該數(shù)據(jù)塊傳送到仲裁器和控制器510,繞過KES接口512。關(guān)鍵方 程解算器514向Chein搜索和Forney估算器單元516提供錯誤檢測 信息。
一旦關(guān)鍵方程解算器514完成錯誤檢測,KES接口 512向糾錯 模塊522提供塊信息。Chein搜索和Forney估算器(CF)單元516為數(shù) 據(jù)塊計算錯誤掩碼和錯誤索引,并將其提供給糾錯單元522。符號至 地址轉(zhuǎn)換器518將符號索引轉(zhuǎn)換為系統(tǒng)字對齊(word-aligned)的地 址,并將符號掩碼轉(zhuǎn)換為字對齊(word-aligned)的掩碼。
糾錯模塊522執(zhí)行字讀-改-寫操作以便完成錯誤糾正。根據(jù)系統(tǒng) 的操作模式,讀-寫-改糾正的次數(shù)可以變化。例如,對于8比特模式, 可能有高達(dá)16次的讀-改-寫的糾正,對于4比特模式,可能有高達(dá)8 次的讀-改-寫的糾正。
應(yīng)當(dāng)理解到,盡管以上的討論集中于一般的讀操作,但是可以以 多種方式應(yīng)用錯誤糾正。例如,栽荷數(shù)據(jù)的改變還可能需要存儲于非 易失性存儲器的冗余數(shù)據(jù)區(qū)中的元數(shù)據(jù)ECC數(shù)據(jù)和元數(shù)據(jù)的改變。 可使用元數(shù)據(jù)糾正載荷數(shù)據(jù)中檢測到的錯誤。恢復(fù)過程可被應(yīng)用到栽 荷數(shù)據(jù)、栽荷錯誤檢測數(shù)據(jù)(例如奇偶校驗數(shù)據(jù))、元數(shù)據(jù)、元數(shù)據(jù) ECC數(shù)據(jù)等等。通過單獨存儲元數(shù)據(jù)、奇偶校驗數(shù)據(jù)、元數(shù)據(jù)糾錯碼
15(ECC)數(shù)據(jù)和載荷數(shù)據(jù),糾錯模塊108可訪問一個或多個數(shù)據(jù)元以便 有效地糾正數(shù)據(jù)錯誤。
圖6是向非易失性存儲器寫入數(shù)據(jù)的方法流程圖。初始化存儲器 寫操作以將數(shù)據(jù)塊寫入非易失性存儲器(方框602)。計算該數(shù)據(jù)塊 的奇偶校驗數(shù)據(jù)及校正子數(shù)據(jù)(方框604)。為奇偶校驗數(shù)據(jù)及校正 子數(shù)據(jù)計算元數(shù)據(jù)糾錯碼(ECC)數(shù)據(jù)(方框606)。該數(shù)據(jù)塊被寫入 非易失性存儲器的載荷數(shù)據(jù)區(qū)(方框608)。奇偶校驗數(shù)據(jù)、校正子 數(shù)據(jù)以及元數(shù)據(jù)ECC數(shù)據(jù)被寫入非易失性存儲器的冗余數(shù)據(jù)區(qū)(方 框610)。
通常,每個寫操作導(dǎo)致糾錯模塊基于栽荷數(shù)據(jù)(例如,元數(shù)據(jù)) 生成校正子數(shù)據(jù),并基于校正子數(shù)據(jù)生成元數(shù)據(jù)ECC數(shù)據(jù)。在錯誤 糾正過程中,元數(shù)據(jù)ECC數(shù)據(jù)可被糾錯模塊用于糾正校正子數(shù)據(jù), 校正子數(shù)據(jù)可被用于糾正載荷數(shù)據(jù)。這些糾錯過程可被順序執(zhí)行或者 彼此獨立地執(zhí)行。
圖7是從非易失性存儲器讀取載荷數(shù)據(jù)的方法流程圖。初始化存 儲器讀操作以從非易失性存儲器讀取載荷數(shù)據(jù)(方框702)。校正子 生成模塊接收栽荷數(shù)據(jù)(方框704)。校正子生成模塊計算與栽荷數(shù) 據(jù)相關(guān)聯(lián)的多個校正子(方框706 )。校正子生成模塊向錯誤計算器 提供計算出的校正子(方框708)。錯誤計算器的關(guān)鍵方程解算器根 據(jù)校正子計算載荷數(shù)據(jù)錯誤(方框710)。錯誤計算器的Chdn搜索 和Forney計算器基于載荷數(shù)據(jù)錯誤生成錯誤掩碼和錯誤索引(方框 712)。錯誤計算器的糾錯模塊基于錯誤掩碼和錯誤索引在數(shù)據(jù)塊中 校正比特(方框714)。
通常,從非易失性存儲器中讀取載荷數(shù)據(jù)可按照圖7所描述的進(jìn) 行??蛇x地,如果在非易失性存儲器的冗余數(shù)據(jù)區(qū)中存儲的栽荷奇偶 校驗數(shù)據(jù)或者載荷元數(shù)據(jù)中檢測到錯誤,則糾錯模塊獲取與載荷元數(shù) 據(jù)相關(guān)聯(lián)的元數(shù)據(jù)糾錯碼(ECC)。隨后元數(shù)據(jù)ECC碼被用于計算上述 與載荷元數(shù)據(jù)相關(guān)的多個校正子(如方框706 )。關(guān)鍵方程解算器根 據(jù)校正子計算栽荷元數(shù)據(jù)錯誤。Chein搜索和Forney計算器基于該載
16荷元數(shù)據(jù)錯誤生成錯誤掩碼和錯誤索引。錯誤校正模塊基于該錯誤掩 碼和錯誤索引在載荷元數(shù)據(jù)內(nèi)校正比特。從而,載荷數(shù)據(jù)的元數(shù)據(jù)可
根據(jù)存儲于冗余數(shù)據(jù)區(qū)中的元數(shù)據(jù)ECC數(shù)據(jù)而被恢復(fù),也無需加載 載荷數(shù)據(jù),這樣節(jié)省了時間和計算資源。
通過在非易失性存儲器的冗余數(shù)據(jù)區(qū)中存儲元數(shù)據(jù)和錯誤檢測 數(shù)據(jù),并將與元數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)糾錯碼(ECC)數(shù)據(jù)和錯誤檢測數(shù) 據(jù)在冗余數(shù)據(jù)區(qū)中分開存儲,糾錯模塊中的邏輯可校正在載荷數(shù)據(jù)和 栽荷數(shù)據(jù)的元數(shù)據(jù)中的比特錯誤,也無需加載載荷數(shù)據(jù)。
元數(shù)據(jù)ECC數(shù)據(jù)可包括與載荷數(shù)據(jù)的元數(shù)據(jù)相關(guān)聯(lián)的校正子。 非易失性存儲器可包括載荷ECC數(shù)據(jù)以及元數(shù)據(jù)ECC數(shù)據(jù)。數(shù)據(jù)載
區(qū)和校正子數(shù)據(jù)區(qū)。每一對相應(yīng)的奇偶校驗數(shù)據(jù)區(qū)和校正子數(shù)據(jù)區(qū)可 在冗余數(shù)據(jù)區(qū)中存儲相應(yīng)的元數(shù)據(jù)ECC數(shù)據(jù)。因此,第一數(shù)據(jù)載荷 可具有第 一奇偶校驗數(shù)據(jù)和第 一元數(shù)據(jù),它們存儲在冗余數(shù)據(jù)區(qū)中。 第 一奇偶校驗數(shù)據(jù)和第 一元數(shù)據(jù)可具有相應(yīng)的第 一元數(shù)據(jù)ECC數(shù)據(jù)。 第二數(shù)據(jù)載荷可具有第二奇偶校驗數(shù)據(jù)和第二元數(shù)據(jù),它們存儲在冗 余數(shù)據(jù)區(qū)中。在一個實施例中,第一元數(shù)據(jù)ECC數(shù)據(jù)包括第一和第 二元數(shù)據(jù)以及第一和第二奇偶校驗數(shù)據(jù)的元數(shù)據(jù)ECC數(shù)據(jù)。在第二 實施例中,第二元數(shù)據(jù)ECC數(shù)據(jù)包括第二元數(shù)據(jù)和第二奇偶校驗數(shù) 據(jù)的元數(shù)據(jù)ECC數(shù)據(jù)。
以上描述的主題應(yīng)被認(rèn)為是說明性的,而不是限制性的,所附的 權(quán)利要求用于覆蓋所有這類改變、改進(jìn),以及其他的落入本發(fā)明的實 質(zhì)精神和范圍以內(nèi)的實施例。因此,為了達(dá)到法律允許的最大范圍, 本發(fā)明的范圍將由隨后的權(quán)利要求及其等價物的最廣泛的可允許的 解釋所確定,而不被前述的具體描述所限定或限制。
權(quán)利要求
1、一種非易失性存儲器,包括第一載荷數(shù)據(jù)區(qū);與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一冗余存儲區(qū),所述第一冗余存儲區(qū)包括第一部分,所述第一部分包括與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一載荷糾錯碼(ECC)數(shù)據(jù);第二部分,所述第二部分包括與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一元數(shù)據(jù);以及第三部分,所述第三部分包括與第一元數(shù)據(jù)相關(guān)聯(lián)的第一元數(shù)據(jù)ECC數(shù)據(jù)。
2、 如權(quán)利要求l所述的非易失性存儲器,進(jìn)一步包括 第二載荷數(shù)據(jù)區(qū);并且其中,第一元數(shù)據(jù)與第一載荷數(shù)據(jù)區(qū)以及第二栽荷數(shù)據(jù)區(qū)相關(guān)聯(lián)。
3、 如權(quán)利要求2所述的非易失性存儲器,其中第一冗余存儲區(qū) 包括與第二載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第二栽荷糾錯碼(ECC)數(shù)據(jù)。
4、 如權(quán)利要求1所述的非易失性存儲器,其中第一栽荷糾錯碼 (ECC)數(shù)據(jù)包括奇偶校驗數(shù)據(jù)和校正子數(shù)據(jù)。
5、 如權(quán)利要求1所述的非易失性存儲器,其中第一載荷數(shù)據(jù)區(qū) 包括512字節(jié)的存儲空間。
6、 如權(quán)利要求1所述的非易失性存儲器,其中第一元數(shù)據(jù)包括 循環(huán)冗余校驗(CRC)數(shù)據(jù)。
7、 如權(quán)利要求1所述的非易失性存儲器,其中第一元數(shù)據(jù)包括 塊狀態(tài)數(shù)據(jù)。
8、 如權(quán)利要求1所述的非易失性存儲器,其中第一元數(shù)據(jù)包括 與第 一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的邏輯地址數(shù)據(jù)。
9、 如權(quán)利要求l所述的非易失性存儲器,進(jìn)一步包括 第二栽荷區(qū);與第二載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第二冗余存儲區(qū),第二冗余存儲區(qū)包括第一部分,所述第一部分具有與第二載荷區(qū)相關(guān)聯(lián)的第二栽荷糾 錯碼(ECC)數(shù)據(jù);第二部分,所述第二部分具有與第二載荷區(qū)相關(guān)聯(lián)的第二元數(shù) 據(jù);以及,第三部分,所述第三部分包括與第二元數(shù)據(jù)相關(guān)聯(lián)的第二元數(shù)據(jù) ECC數(shù)據(jù)。
10、 一種系統(tǒng),包括非易失性存儲器,所述非易失性存儲器包括與載荷數(shù)據(jù)區(qū)相關(guān)聯(lián) 的載荷糾錯碼(ECC)數(shù)據(jù),以及與載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的元數(shù)據(jù)ECC數(shù) 據(jù);糾錯模塊,包括響應(yīng)于接收到元數(shù)據(jù)ECC數(shù)據(jù)而執(zhí)行糾錯的邏輯。
11、 如權(quán)利要求IO所述的系統(tǒng),其中元數(shù)據(jù)ECC數(shù)據(jù)包括錯誤 校正子,并且其中所述糾錯模塊包括用于生成錯誤校正子的校正子生 成模塊。
12、 如權(quán)利要求10所述的系統(tǒng),其中所述糾錯模塊包括關(guān)鍵生 成模塊,用于基于錯誤校正子來生成糾錯信息,以糾正從非易失性存 儲器存取的元數(shù)據(jù)中的錯誤。
13、 如權(quán)利要求12所述的系統(tǒng),其中所述糾錯信息包括錯誤索 引和錯誤掩碼。
14、 如權(quán)利要求10所述的系統(tǒng),其中所述非易失性存儲器包括 載荷ECC數(shù)據(jù)和元數(shù)據(jù)ECC數(shù)據(jù),每個都與第二載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)。
15、 如權(quán)利要求12所述的系統(tǒng),其中所述糾錯模塊對元數(shù)據(jù)執(zhí) 行Reed-Solomon纟H錯。
16、 一種方法,包括 生成與數(shù)據(jù)載荷相關(guān)的數(shù)據(jù)保護(hù)碼; 生成與該數(shù)據(jù)保護(hù)碼相關(guān)的元數(shù)據(jù)保護(hù)碼;以及 將所述數(shù)據(jù)載荷存儲在非易失性存儲器的載荷數(shù)據(jù)區(qū)中,并將所述數(shù)據(jù)保護(hù)碼和所述元數(shù)據(jù)保護(hù)碼存儲在非易失性存儲器的冗余數(shù) 據(jù)區(qū)中。
17、 如權(quán)利要求16所述的方法,其中所述數(shù)據(jù)保護(hù)碼包括錯誤 檢測數(shù)據(jù)和錯誤糾正數(shù)據(jù)。
18、 如權(quán)利要求17所述的方法,其中所述錯誤檢測數(shù)據(jù)包括奇 偶校驗數(shù)據(jù)。
19、 如權(quán)利要求16所述的方法,其中所述數(shù)據(jù)保護(hù)碼包括循環(huán) 冗余校驗(CRC)數(shù)據(jù)和糾錯碼(ECC)數(shù)據(jù)。
20、 如權(quán)利要求16所述的方法,其中所述元數(shù)據(jù)保護(hù)碼包括與 所述數(shù)據(jù)保護(hù)碼相關(guān)的糾錯碼(ECC)數(shù)據(jù)。
21、 如權(quán)利要求16所述的方法,其中所述生成數(shù)據(jù)保護(hù)碼包括 為數(shù)據(jù)栽荷計算至少 一個奇偶校驗數(shù)據(jù)和糾錯碼(ECC)數(shù)據(jù)。
22、 如權(quán)利要求16所述的方法,其中所述生成元數(shù)據(jù)保護(hù)碼包 括計算元數(shù)據(jù)糾錯碼(ECC)數(shù)據(jù)。
23、 一種系統(tǒng),包括訪問非易失性存儲器的糾錯模塊,所述糾錯模塊包括用于生成與 能夠從非易失性存儲器獲取的數(shù)據(jù)塊相關(guān)聯(lián)的多個校正子的邏輯,所 述糾錯模塊進(jìn)一步包括用于在數(shù)據(jù)塊中校正比特錯誤的邏輯,和用于 使用元數(shù)據(jù)糾錯碼(ECC)數(shù)據(jù)來糾正從非易失性存儲器中獲取的元數(shù) 據(jù)中的比特錯誤的邏輯。
全文摘要
一種非易失性存儲器,具有第一載荷數(shù)據(jù)區(qū)和與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一冗余存儲區(qū)。第一冗余存儲區(qū)包括第一部分、第二部分和第三部分。第一部分包括與第一載荷數(shù)據(jù)區(qū)相關(guān)聯(lián)的第一載荷糾錯碼(ECC)數(shù)據(jù)。第二部分包括與第一載荷數(shù)據(jù)區(qū)域相關(guān)的第一元數(shù)據(jù)。第三部分包括與第一元數(shù)據(jù)相關(guān)聯(lián)的第一元數(shù)據(jù)ECC數(shù)據(jù)。
文檔編號G06F11/10GK101473308SQ200780017182
公開日2009年7月1日 申請日期2007年3月14日 優(yōu)先權(quán)日2006年5月18日
發(fā)明者D·C·巴克爾, R·森德爾斯 申請人:矽瑪特公司