專利名稱:高速緩存輔助的存儲器檢錯和糾錯的方法和裝置的制作方法
高速緩存輔助的存儲器檢錯和糾錯的方法和裝置
背景技術(shù):
本發(fā)明實施例概括來說涉及存儲器器件。存儲器器件在各種不同的系 統(tǒng)中用來存儲代碼和數(shù)據(jù)。由于具有不同的訪問要求,代碼和數(shù)據(jù)有時存 儲在兩個分開的存儲器中。例如,通常在系統(tǒng)制造或者代碼安裝或更新的 過程中,將代碼以大的數(shù)據(jù)塊的形式寫入存儲器器件。代碼以隨機的方式 進行讀取,由軟件例程中的程序計數(shù)器、跳轉(zhuǎn)和分支進行控制。在應(yīng)用處 理期間大多數(shù)數(shù)據(jù)是以塊的形式寫入或讀取的。
直接對存儲在存儲器中的指令進行執(zhí)行要求使這些指令在相對較短的
初始訪問延遲(可能是100ns)內(nèi)以正確的形式可用。以這些存儲器上的邏輯 的能力,在將指令導(dǎo)出到系統(tǒng)以前,僅能對這些指令進行單個單元的糾錯。 在許多情形下,多個單元的錯誤先以單個單元的錯誤的形式出現(xiàn)。稍 后,在同一碼字內(nèi)出現(xiàn)第二個錯誤。采用傳統(tǒng)的技術(shù),這種多個單元的錯 誤無法糾正,并且錯誤的數(shù)據(jù)將返回系統(tǒng)。
在本文的結(jié)束部分將特別地指出并清楚地要求保護作為本發(fā)明的主
題。然而,通過結(jié)合附圖參照下面的詳細說明,將會更好地理解本發(fā)明的
操作組織和方法,及其目標、特征及優(yōu)點,在附圖中
圖1示出了根據(jù)本發(fā)明一個示例性實施例的存儲器框圖2示出了根據(jù)本發(fā)明另一示例性實施例的存儲器系統(tǒng)框圖3示出了根據(jù)本發(fā)明示例性實施例的對錯誤的碼字進行檢錯和糾錯
的方法的流程圖;以及
圖4示出了根據(jù)本發(fā)明實施例的對圖3的碼字中的后續(xù)錯誤進行檢錯
和糾錯的方法的流程圖。
在不同的附圖中使用相同的附圖符號表示相似或相同的內(nèi)容。 應(yīng)當理解,為了簡化說明和清楚起見,圖中示出的要件并不一定按比例繪出。例如,為了清楚起見,可將一些要件的大小相對于其他要件進行 放大。進一步地,在適當?shù)牡胤?,可在附圖之間重復(fù)附圖標號,以表示對 應(yīng)的或類似的要件。
具體實施例方式
在下面的說明中,闡述了許多特定細節(jié)。然而,可以理解,本發(fā)明實 施例可以在沒有這些特定細節(jié)的情況下進行實施。在其他實例中,沒有詳 細示出公知的方法、結(jié)構(gòu)和技術(shù),以避免妨礙對本說明的理解。
本文提到的"一個實施例"、"實施例"、"示例性的實施例"、"各個實 施例"等表示本發(fā)明中如此描述的實施例可以包括特定的特征、結(jié)構(gòu)或特 性,但并非每個實施例都必須包括這些特定的特征、結(jié)構(gòu)或特性。另外, 重復(fù)應(yīng)用的短語"在一個實施例中"不一定表示同一個實施例,盡管其可 以這樣表示。
除非另有說明,否則,在權(quán)利要求書中用來描述一般對象的序數(shù)形容 詞"第一"、"第二"、"第三"等等僅僅表示所提及的是相同對象的不同實 例,而不是要暗示所描述的組件必須在時間上、空間上、等級上或以任何 其它方式處于指定順序。
除非另有指明,否則,在下文的描述中,例如"處理"、"計算"、"運 算"等術(shù)語指的是計算機或計算系統(tǒng)或類似電子計算設(shè)備的動作和域過程, 上述計算機或計算系統(tǒng)或類似設(shè)備將表示成物理(例如電子)量的數(shù)據(jù)進行 操作和/或轉(zhuǎn)換成與表示成物理量相類似的其它數(shù)據(jù)。
類似地,術(shù)語"處理器"表示對來自寄存器和/或存儲器的電子數(shù)據(jù)進 行處理以便將電子數(shù)據(jù)轉(zhuǎn)換為能夠存儲在寄存器和/或存儲器中的其他電子 數(shù)據(jù)的任意設(shè)備或設(shè)備的部分。"計算平臺"可以包括一個或多個處理器。
術(shù)語"主陣列"表示用來存儲代碼或數(shù)據(jù)的存儲單元陣列。術(shù)語"冗
余元件"表示用來修正錯誤的代碼或數(shù)據(jù)的另外的存儲器元件。術(shù)語"EDAC 引擎"表示檢錯和糾錯電路。術(shù)語"錯誤高速緩存RAM"表示用于存儲碼 字中檢測到的錯誤的易失性存儲器,而術(shù)語"NV錯誤高速緩存"表示用于 持久存儲碼字中檢測到的錯誤的非易失性存儲器(NV)。
先參看圖1 ,示出了根據(jù)本發(fā)明一個示例性實施例的存儲器100的框圖。存儲器器件100包括存儲單元110的主陣列、U碼(UCODE)持久修正算法 部件U0、 EDAC引擎130、錯誤高速緩存RAM 140和NV錯誤高速緩存 150,但本發(fā)明的范圍不限于此。
根據(jù)本發(fā)明的該示例性實施例,存儲器100可以是NOR閃存,并可以 包括基于NOR的存儲單元陣列,然而應(yīng)當理解,本發(fā)明的范圍在此方面并 無限制。
根據(jù)本發(fā)明的該示例性實施例,系統(tǒng)105(例如,計算平臺)可以訪問主 陣列110中包含錯誤的地址。如果需要,EDAC引擎130可以檢測和糾正 在系統(tǒng)所訪問的地址的碼字比特中的錯誤。EDAC引擎130可以在錯誤高 速緩存RAM 140中存儲碼字比特的糾錯信息。對于碼字比特中進一步出現(xiàn) 的錯誤,錯誤高速緩存RAM140可以使用糾錯信息來糾正該比特中的錯誤。
根據(jù)本發(fā)明的該實施例,錯誤高速緩存RAM可以在NV錯誤高速緩存 150中存儲比特的糾錯信息。在存儲器100的電源故障或者電源關(guān)閉的情形 下,NV錯誤高速緩存可以是存儲器鏡像。在其他示例性實施例中,如果需 要,快速讀/寫NV存儲器可以代替錯誤高速緩存RAM140。可以由U碼持 久修正算法120來實現(xiàn)對碼字的持久修正。
根據(jù)本發(fā)明的實施例,U碼持久修正算法120是對主陣列110中的錯 誤進行持久修正的方法。例如,U碼持久修正算法120可以在擦除算法期 間內(nèi)運行、在上電過程中運行,或響應(yīng)于用戶命令而運行,該用戶命令允 許設(shè)備有時間修正主陣列110中已知的錯誤。U碼持久修正算法120可以 擦除有錯的行,并作為替換,寫入從NV錯誤高速緩存150下載的修正的 行。U碼持久修正算法120可以有效地減小錯誤高速緩存RAM 140和NV 錯誤高速緩存150所需的尺寸。
應(yīng)當理解,EDAC引擎130、 U碼持久修正算法120以及存儲器100的 其他部件可以采用硬件、軟件或者硬件和軟件的任意需要的組合來實現(xiàn), 但本發(fā)明的范圍不受此限制。
轉(zhuǎn)到圖2,示出了根據(jù)本發(fā)明另一示例性實施例的存儲器系統(tǒng)200的框 圖。存儲器系統(tǒng)200包括存儲器210和存儲器控制器220, ^a本發(fā)明的范圍 不限于此。存儲器210可以包括主陣列215。存儲器控制器220可以包括U 碼持久修正算法230、 EDAC引擎240、錯誤高速緩存RAM 250和NV錯誤高速緩存260。
根據(jù)本發(fā)明的該示例性實施例,存儲器210可以是基于NAND的閃存, 主陣列215可以包括基于NAND的存儲單元陣列,然而應(yīng)當理解,本發(fā)明 的范圍在此方面并無限制。
根據(jù)本發(fā)明的該示例性實施例,地址掃描引擎205可以掃描存儲器210 的地址。地址掃描引擎205可以訪問包含錯誤的地址。如果需要,存儲器 控制器220的EDAC引擎240可以檢測和糾正碼字的比特中的錯誤。EDAC 引擎240可以在錯誤高速緩存RAM250中存儲碼字比特的糾錯信息。對該 碼字的比特中進一步出現(xiàn)的錯誤中,錯誤高速緩存RAM250可以使用糾錯 信息來糾正該比特中的錯誤。
根據(jù)本發(fā)明的該實施例,錯誤高速緩存RAM 250可以在NV錯誤高速 緩存260中存儲比特的糾錯信息,在存儲器210的電源故障和/或電源關(guān)閉 的情形下,所述NV錯誤高速緩存260作為存儲器鏡像。在其他示例性實 施例中,快速讀/寫NV存儲器可以代替錯誤高速緩存RAM250??梢杂蒛 碼持久修正算法230來實現(xiàn)對碼字的持久修正。
根據(jù)本發(fā)明的實施例,U碼持久修正算法230是對存儲器210中的錯 誤進行持久修正的方法。例如,U碼持久修正算法230可以在擦除算法期 間內(nèi)運行、在上電過程中運行,或響應(yīng)于用戶命令而運行,該用戶命令允 許設(shè)備有時間修正存儲器210的主陣列215中已知的錯誤。U碼持久修正 算法230可以擦除有錯的行,并作為替換,寫入糾錯后的行。如果需要, 該糾錯后的行可以從NV錯誤高速緩存260下載。
應(yīng)當理解,存儲器控制器220的部件,例如EDAC引擎240、 U碼持 久修正算法部件230以及其他部件可以采用硬件、軟件或者硬件和軟件任 意需要的組合來實現(xiàn),但本發(fā)明的范圍不受此限制。
轉(zhuǎn)至圖3,示出了根據(jù)本發(fā)明一些實施例的對碼字中一個或多個比特進 行檢錯和糾錯的方法流程圖。根據(jù)本發(fā)明一些實施例,如文本框310中所 示,方法可以開始于系統(tǒng)(例如,計算平臺)對存儲器主陣列包含錯誤的地址 進行訪問。
根據(jù)本發(fā)明的其他實施例,如文本框320中所示,方法可以開始于掃 描引擎(未示出)對存儲器主陣列包含錯誤的地址進行訪問。在本發(fā)明任一實施例中,如文本框330中所示,EDAC引擎(例如,EDAC 130)可以檢測和 糾正碼字(例如,碼字100)的比特(例如,比特4)中的錯誤。EDAC引擎可以 在錯誤高速緩存RAM中存儲糾錯信息(文本框340)。根據(jù)本發(fā)明示例性實 施例,糾錯信息可以包括錯誤行的地址、行中的符號位置以及包含有錯比 特(例如比特4)的符號的糾正值。在將期望地址(例如地址IOOO)的糾正的數(shù) 據(jù)提供給系統(tǒng)后該方法結(jié)束,然而本發(fā)明的范圍并不限于此。
轉(zhuǎn)到圖4,示出了根據(jù)本發(fā)明其他實施例對圖3的碼字中的后續(xù)錯誤進 行檢錯和糾錯的方法的流程圖。根據(jù)本發(fā)明一些實施例,方法可以使用提 供給系統(tǒng)的糾錯信息來糾正碼字的比特中已知的錯誤(如由圖3的方法提供 的)。如文本框410中所示,方法可以開始于系統(tǒng)(例如,計算平臺)對存儲 器主陣列包含錯誤的地址進行訪問。
根據(jù)本發(fā)明其他實施例,如文本框420中所示,方法可以開始于掃描
引擎(未示出)對存儲器主陣列包含錯誤的地址進行訪問。在本發(fā)明任一實施 例中,如文本框430中所示,錯誤高速緩存RAM(例如,錯誤高速緩存RAM 140)可以檢測和糾正碼字(例如,碼字100)的比特(例如,比特4)中已知的錯 誤。EDAC引擎可以對碼字的另一比特(例如,比特6)中的另一錯誤進行檢 測和糾正(文本框440)。并可以在錯誤高速緩存RAM中存儲新的糾錯信息 (文本框450)。新的糾錯信息可以包括錯誤行的地址、行中的符號位置以及 包含有錯比特(例如比特6)的符號的糾正值。在將所需要地址(例如地址1000) 糾正的數(shù)據(jù)提供給系統(tǒng)后該方法結(jié)束,然而本發(fā)明的范圍并不限于此。
下面給出使用圖3和4的方法的實例。根據(jù)該實例,在第一天錯誤出 現(xiàn)在碼字3中的比特4處。EDAC檢測并糾正該錯誤,將糾正后的數(shù)據(jù)提 供給主機系統(tǒng)。該錯誤存儲在錯誤高速緩存RAM中。在另一天,另一錯誤 出現(xiàn)在碼字3中的比特6處(例如,比特4的錯誤仍存在)。主陣列輸出在比 特4和6中有錯誤。根據(jù)本發(fā)明實施例,使用在第一天存儲的信息糾正比 特4的錯誤,使用EDAC引擎糾正比特6的錯誤。
可以在配置計算系統(tǒng)來執(zhí)行該方法的計算機可讀介質(zhì)中實現(xiàn)上述技 術(shù)。舉例來說而非限制性地,計算機可讀介質(zhì)可以包括任意數(shù)量的下述各 項磁存儲介質(zhì),包括磁盤和磁帶存儲介質(zhì);光存儲介質(zhì),例如光盤介質(zhì)(例 如,CD-ROM, CD-R等)和數(shù)字視頻光盤存儲介質(zhì);全息存儲器;非易失性存儲器存儲介質(zhì),包括基于半導(dǎo)體的存儲單元,例如閃存、EEPROM、 EPROM、 ROM;鐵磁數(shù)字存儲器;易失性存儲介質(zhì),包括寄存器、緩沖器 或高速緩存、主存儲器、RAM等;以及數(shù)據(jù)傳輸介質(zhì),包括持久和臨時的 計算機網(wǎng)絡(luò)、點對點通信設(shè)備、載波傳輸介質(zhì)、因特網(wǎng)等等。其他新的及 各類計算機可讀介質(zhì)可用來存儲和/或發(fā)送本申請描述的軟件模塊。計算系 統(tǒng)可以有多種形式,包括但不限于大型計算機、微型計算機、服務(wù)器、工 作站、個人計算機、筆記本計算機、個人數(shù)字助理、各種無線設(shè)備和嵌入 式系統(tǒng)等等。典型的計算系統(tǒng)包括至少一個處理單元、相關(guān)聯(lián)的存儲器和 若干個輸入/輸出(i/o)設(shè)備。計算系統(tǒng)根據(jù)程序來處理信息并通過I/O設(shè)備 生成作為結(jié)果的輸出信息。
已結(jié)合特定實施例描述了根據(jù)本發(fā)明的實現(xiàn)。這些實施例旨在進行說 明而非限制??梢赃M行許多變型、修改、增加和改進。相應(yīng)地,針對本申 請描述的多個部件,可以將多個實例作為單個實例來進行提供。各種部件、 操作和數(shù)據(jù)存儲裝置之間的界限是具有隨意性的,在特定的說明性結(jié)構(gòu)的 上下文中描述了特定的操作。可以預(yù)見功能的其他分配,其也落入所附的 權(quán)利要求的范圍內(nèi)。最后,在各種結(jié)構(gòu)中作為分離部件給出的結(jié)構(gòu)和功能 塊可以以組合的結(jié)構(gòu)或部件來實現(xiàn)。這些以及其他變型、修改、增加和改 進將落入所附的權(quán)利要求定義的本發(fā)明的范圍內(nèi)。
權(quán)利要求
1、一種對存儲器內(nèi)存儲的碼字中的錯誤進行檢測和糾正的方法,所述方法包括檢測并糾正所述碼字的一個比特中的第一錯誤;存儲所述第一錯誤的糾錯信息;檢測并糾正具有所述第一錯誤和第二錯誤的所述碼字的另一個比特中的所述第二錯誤;以及使用所存儲的所述第一錯誤的糾錯信息來糾正所述第一錯誤。
2、 根據(jù)權(quán)利要求1所述的方法,包括-將所述第一錯誤的糾錯信息存儲在錯誤高速緩存隨機存取存儲器 (RAM)中o
3、 根據(jù)權(quán)利要求1所述的方法,包括 掃描所述存儲器以進行錯誤檢測; 使用所存儲的糾錯信息來糾正已知錯誤;以及 糾正新的錯誤,并存儲所述新的錯誤的糾錯信息。
4、 根據(jù)權(quán)利要求1所述的方^i,包括將所述糾錯信息存儲在備份存儲器中。
5、 根據(jù)權(quán)利要求1所述的方法,包括通過用經(jīng)糾錯的存儲器行替換包含檢測到的錯誤的存儲器行,來對所 述存儲器進行持久性糾錯。
6、 一種裝置,包括 存儲單元陣列;檢錯和糾錯引擎,用于檢測碼字的比特中的錯誤,并生成所述碼字的 該比特的糾錯信息;以及錯誤高速緩存隨機存取存儲器(RAM),用于存儲所檢測到的錯誤的糾 錯信息,并基于所存儲的所述碼字的該比特的糾錯信息來糾正同一比特的 檢測到的錯誤。
7、 根據(jù)權(quán)利要求6所述的裝置,包括地址掃描引擎,用于掃描所述存儲單元陣列的行以尋找錯誤。
8、 根據(jù)權(quán)利要求6所述的裝置,包括 非易失性高速緩存,用于存儲所述糾錯信息的備份。
9、 根據(jù)權(quán)利要求6所述的裝置,包括持久修正算法部件,用于通過用經(jīng)糾錯的存儲器行替換包含檢測到的 錯誤的存儲器行,來修正所述存儲單元陣列中的錯誤。
10、 根據(jù)權(quán)利要求6所述的裝置,其中所述存儲單元陣列包括NOR閃存。
11、 一種存儲器系統(tǒng),包括-存儲單元陣列;以及存儲器控制器,包括檢錯和糾錯引擎,用于檢測碼字的比特中的錯誤,并生成所述碼字的該比特的糾錯信息;以及錯誤高速緩存隨機存取存儲器(RAM),用于存儲所檢測到的錯誤的糾錯信息,并基于所存儲的所述碼字的該比特的糾錯信息來糾正同一比 特的檢測到的錯誤。
12、 根據(jù)權(quán)利要求11所述的存儲器系統(tǒng),包括 地址掃描引擎,用于掃描所述存儲單元陣列的行以尋找錯誤。
13、 根據(jù)權(quán)利要求11所述的存儲器系統(tǒng),其中所述存儲器控制器包括:非易失性高速緩存,用于存儲所述糾錯信息的備份。
14、 根據(jù)權(quán)利要求11所述的存儲器系統(tǒng),其中所述存儲器控制器包括: 持久修正算法部件,用于通過用經(jīng)糾錯的存儲器行替換包含檢測到的錯誤的存儲器行,來修正所述存儲單元陣列中的錯誤。
15、 根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述存儲單元陣列包括NAND 閃存。
16、 一種存儲器系統(tǒng),包括 基于NAND的存儲單元陣列;以及 存儲器控制器,包括檢錯和糾錯引擎,用于檢測碼字的比特中的錯誤,并生成所述碼 字的該比特的糾錯信息;以及錯誤高速緩存隨機存取存儲器(RAM),用于存儲所檢測到的錯誤 的糾錯信息,并基于所存儲的所述碼字的該比特的糾錯信息來糾正同一比 特的檢測到的錯誤。
17、 根據(jù)權(quán)利要求16所述的存儲器系統(tǒng),包括 地址掃描引擎,用于掃描所述存儲單元陣列的行以尋找錯誤。
18、 根據(jù)權(quán)利要求16所述的存儲器系統(tǒng),其中所述存儲器控制器包括: 非易失性高速緩存,用于存儲所述糾錯信息的備份。
19、 根據(jù)權(quán)利要求16所述的存儲器系統(tǒng),其中所述存儲器控制器包括: 持久修正算法部件,用于通過用經(jīng)糾錯的存儲器行替換包含檢測到的錯誤的存儲器行,來修正所述存儲單元陣列中的錯誤。
全文摘要
本發(fā)明提出了一種存儲器以及對存儲器的碼字中的錯誤進行檢測和糾正的方法。該方法包括由檢錯和糾錯引擎對碼字的比特進行檢錯和糾錯,將錯誤的糾錯信息存儲在高速緩存中。在對同一比特的相同錯誤進行的第二次檢測中,基于所存儲的糾錯信息進行糾錯。
文檔編號G06F12/16GK101558385SQ200780045740
公開日2009年10月14日 申請日期2007年11月8日 優(yōu)先權(quán)日2006年12月14日
發(fā)明者S·艾勒特 申請人:英特爾公司