專利名稱:閃存糾錯的制作方法
閃存糾錯本發(fā)明涉及用于將糾錯算法應用到將被寫入到和/或讀出自可重寫存儲器的數(shù)據(jù)的 數(shù)據(jù)處理裝置。閃速存儲器是一種可以被電擦除和重新編程的非易失性存儲器。它被組合入各種 各樣的消費產(chǎn)品中,諸如數(shù)字音頻播放器,數(shù)字攝象機和移動電話。然而,所有的閃 速存儲器都存在只能經(jīng)得起有限數(shù)量的擦除周期數(shù)的缺點。隨著閃存的裸片區(qū)域不斷 變大,存儲器中的任何給定位被損壞的統(tǒng)計概率增加。對于大容量存儲器應用,通用的選擇是NAND閃存,因為和NOR閃存相比數(shù)據(jù)密 度增加。使用NAND閃存具有的主要缺陷是字節(jié)的單個位不能隨機地存取。作為替 代,像硬盤驅(qū)動器一樣將裝置安排為512個字節(jié)扇區(qū)。當制造和測試閃存集成電路時, 可以預期,由于工藝,這些扇形中的一些將被受損,因此額外的扇區(qū)可以用來替換那些 失去的扇區(qū)以解決半導體成品率的問題。經(jīng)常存在使得這個工藝對外不可見的復雜的 控制器,通常對此存在2。/。的可用額外扇區(qū)。通常NAND閃存扇區(qū)可以重編程大約10000 次。由于閃存固有的有限持久性,許多制造商放置一些簡單的糾錯在存儲器中。典型 地他們使用漢明碼并且通過更進一步的16個字節(jié)增加扇區(qū)大小以調(diào)節(jié)糾錯的額外消 耗,但是這個數(shù)據(jù)空間對外部的系統(tǒng)是不可用的。所有這些技術(shù)要求閃存裝置上的額 外的裸片區(qū)域以執(zhí)行這些功能。利用糾錯,閃存可以僅僅糾正一個扇區(qū)中的一個位(4096位中的1位)并且檢測 每扇區(qū)中的2位錯誤。閃存制造商聲稱這對于大多數(shù)的用途是足夠的;然而, 一些文 件系統(tǒng)可能引起由某些扇區(qū)遭受的故障等級大大地增加,使得該產(chǎn)品在很短的時間內(nèi)就 會毀壞。文件系統(tǒng)諸如FAT16和FAT32保存表格的兩個副本,該表格用于告訴主處理器存 儲在該裝置所有東西的位置。每當大容量存儲器的任何部分被改變,文件系統(tǒng)使得這 個基本數(shù)據(jù)的兩個副本被重寫。在NAND閃存中,單個位置或者字節(jié)不能被單個地擦 除,因此每當大容量存儲器的部分被改變時,必須將整個塊(覆蓋幾個扇區(qū))格式化并且重寫。這引起許多裝置諸如拇指驅(qū)動器的過早失效。這個問題的一個解決方法是保證某些經(jīng)常被存取的數(shù)據(jù)項目不被寫回到該閃存的 相同區(qū)域而是旋轉(zhuǎn)該存儲器以將"磨損"遍及整個裝置布置。顯而易見,制造商不想不斷地增加閃存驅(qū)動的內(nèi)裝復雜性的水平,因為這在用戶不 一定能察覺到好處的情況下增加了成本。閃存制造商同樣不想引起關(guān)于其產(chǎn)品的先天 不可靠性的大問題。消費音頻制造商面臨的一個問題是他們的成本越來越與商品存儲器市場價格相聯(lián) 系。因為數(shù)字媒體的普及性增長,所以這個趨勢將增加。然而,終端客戶不允許他們 的音頻供應者將這個存儲器價格浮動轉(zhuǎn)嫁到他們的購買價格中(正如這是個人計算機市 場中的情況)因此這將音頻供應者暴露在了反復無常的存儲器市場風口浪尖。消費音頻工業(yè)已經(jīng)尋找到克服這個問題的方法并且存儲器的重復利用已經(jīng)變得平 常。DRAM是經(jīng)常地從舊的SIMMS中拯救出的一種商品存儲器產(chǎn)品并且其價格經(jīng)常 是周圍市價的一部分。隨著來自音頻電子工業(yè)的NAND閃存需求的革命即將發(fā)生,看 來很可能這種類型的存儲器產(chǎn)品將同樣成為部件重復利用公司的目標。重復利用閃存將以許多因素為特征(i)較舊的技術(shù)以及(ii)故障扇區(qū)的高檢出 概率。進入市場的任何閃存控制器應適合于處理這些缺點以便它能與重復利用閃存一 起被使用。因此存在對用于處理寫入到和/或讀出自可重復利用的存儲器的數(shù)據(jù)的改進的數(shù)據(jù) 處理裝置的需要。根據(jù)本發(fā)明的第一方面,提供對于施加糾錯算法到寫入到或者讀出自可重寫存儲器 的數(shù)據(jù)的數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置包括在硬件中實現(xiàn)的編碼單元,該編碼單元能 夠執(zhí)行編碼操作,在操作中它接收將寫入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理 那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出寫入到該存儲器的第二數(shù)據(jù)集,以及錯誤檢測操 作,在該操作中它接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定 是否該讀出數(shù)據(jù)包含錯誤以及在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含 錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法處理那些數(shù)據(jù)以糾正所述錯誤并因此形成校正數(shù)據(jù), 并輸出該校正數(shù)據(jù)。優(yōu)選地,如果它確定從存儲器讀出的數(shù)據(jù)不包含錯誤,該編碼單元被安排以輸出從 存儲器讀出的數(shù)據(jù)。該編碼單元可以被安排在錯誤檢測操作期間對從存儲器讀出的數(shù)據(jù)執(zhí)行與它在編碼操作期間在第一數(shù)據(jù)集上執(zhí)行的相同的處理。在錯誤檢測操作期間,該編碼單元可以被安排將從存儲器讀出的數(shù)據(jù)視為根據(jù)編碼 操作的第一數(shù)據(jù)集,并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集。該編碼單元優(yōu)選地被安排以接收從該存儲器中的第一位置讀出的信息數(shù)據(jù),在該第 一位置預先寫第一數(shù)據(jù)集,并與該信息數(shù)據(jù)有關(guān)的同等數(shù)據(jù)從該存儲器的第二位置讀 出,在該第二位置預先寫第二數(shù)據(jù)集,其中在編碼操作期間,從所述第一數(shù)據(jù)集預先形 成第二數(shù)據(jù)集。該編碼單元可以被安排通過根據(jù)糾錯處理處理信息數(shù)據(jù)以形成第二數(shù)據(jù)集而確定從存儲器讀出的數(shù)據(jù)包含錯誤,比較第二數(shù)據(jù)集和奇偶校驗數(shù)據(jù)并且如果第二數(shù)據(jù)集與 奇偶校驗數(shù)據(jù)不一致則確定信息數(shù)據(jù)包含錯誤。該編碼單元可以包括代碼字發(fā)生器,被安排為接收第一數(shù)據(jù)集,用生成多項式乘該數(shù)據(jù),并將該乘法的結(jié)果作為第二數(shù)據(jù)集輸出。該編碼單元可以包括代碼字發(fā)生器,被安排為接收從存儲器讀出的數(shù)據(jù),用生成多 項式乘包括在該讀出數(shù)據(jù)內(nèi)的信息數(shù)據(jù)并且比較該乘法的結(jié)果和包括在該讀出數(shù)據(jù)內(nèi) 的奇偶校驗數(shù)據(jù)。該編碼單元可以包括校正子發(fā)生器,被安排為接收從存儲器讀出的數(shù)據(jù),連接信息 數(shù)據(jù)和包括在該讀出數(shù)據(jù)內(nèi)的奇偶校驗數(shù)據(jù),將生成多項式的根替換為連結(jié)的數(shù)據(jù)并且 合計該結(jié)果值。優(yōu)選地,該編碼單元被安排以確定如果結(jié)果值的總和是非零,信息數(shù) 據(jù)包含錯誤。校正子發(fā)生器可以被安排為將復數(shù)個生成多項式的根替換為連接數(shù)據(jù)并且合計由 每個置換產(chǎn)生的值,每個和的結(jié)果表現(xiàn)出信息數(shù)據(jù)中的錯誤的位置。優(yōu)選地,當已經(jīng)確定從存儲器讀出的數(shù)據(jù)包含錯誤時,該編碼單元被安排以輸出那 些信息數(shù)據(jù)給糾錯單元。該糾錯單元可以被安排以分解將被寫到存儲器的數(shù)據(jù)并且合并從該存儲器讀出的 數(shù)據(jù)。該編碼單元優(yōu)選地能檢測從存儲器讀出的每256字節(jié)中的超過一位的錯誤。 該糾錯單元優(yōu)選地能糾正從存儲器讀出的每512字節(jié)中的超過一位的錯誤。 該糾錯算法可以是里德-索羅蒙碼代碼。該糾錯算法優(yōu)選地是交叉隔行里德-索羅蒙碼代碼。優(yōu)選地該糾錯單元是數(shù)字處理機。根據(jù)本發(fā)明的第二方面,提供包括可重寫存儲器,在硬件中實現(xiàn)的編碼單元的數(shù)據(jù) 存儲器,該編碼單元能夠執(zhí)行編碼操作,在操作中它接收將寫入到該存儲器的第一數(shù)據(jù) 集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出寫入到該存儲器的第二數(shù)據(jù) 集,以及錯誤檢測操作,在該操作中它接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法 處理那些數(shù)據(jù)以確定是否該讀出數(shù)據(jù)包含錯誤以及在軟件中實現(xiàn)的糾錯單元,該糾錯單 元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法處理那些數(shù)據(jù)以糾正所述錯誤并 因此形成校正數(shù)據(jù),并輸出該校正數(shù)據(jù)。至少該存儲器的一個被用于通過處理器進行數(shù)據(jù)讀取和/或?qū)懭氲纳葏^(qū)可能具有大 于512字節(jié)中的一位的差錯率。該存儲器可以是可重復利用的集成存儲器。該存儲器可能具有超過通常驗收的制造標準的差錯率。優(yōu)選地該存儲器是閃存。優(yōu)選地該存儲器是NAND閃存。該存儲器可以是這樣的,即該存儲器的位在與該存儲器的其它位隔離中是不可存取的。根據(jù)本發(fā)明的第三方面,提供用于處理被寫入到并且讀出自可重寫存儲器的方法, 包括在硬件中執(zhí)行編碼操作,該編碼操作包括接收將寫入到該存儲器的第一數(shù)據(jù)集,根 據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集執(zhí)行輸出寫入到該存儲器的第二數(shù)據(jù)集,以 及在硬件中執(zhí)行錯誤檢測操作,該錯誤檢測操作包括接收自該存儲器讀出的數(shù)據(jù)執(zhí)行根 據(jù)該糾錯算法處理那些數(shù)據(jù)以確定是否該讀出數(shù)據(jù)包含錯誤以及執(zhí)行在軟件中的糾錯 操作,該糾錯操作包括接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法處理那些數(shù)據(jù)以糾正 所述錯誤并因此形成校正數(shù)據(jù),并輸出該校正數(shù)據(jù)。根據(jù)本發(fā)明的第四方面,提供用于重復利用可重寫存儲器的方法,包括將該存儲器 從可操作的并且放置該存儲器的裝置移動到另外的裝置中,具有數(shù)據(jù)處理裝置的另一個 裝置包括在硬件中實現(xiàn)的編碼單元,該編碼單元能夠執(zhí)行編碼操作,其中它接收將寫入 到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出寫入 到該存儲器的第二數(shù)據(jù)集,以及錯誤檢測操作,在該操作中它接收自該存儲器讀出的數(shù) 據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定是否該讀出數(shù)據(jù)包含錯誤以及在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法處理那 些數(shù)據(jù)以糾正所述錯誤并因此形成校正數(shù)據(jù),并輸出該校正數(shù)據(jù)。現(xiàn)在將根據(jù)附圖舉例來描述本發(fā)明,其中
圖1表示根據(jù)本發(fā)明的實施例的數(shù)據(jù)處理裝置;圖2表示說明根據(jù)本發(fā)明的實施例的數(shù)據(jù)處理裝置的操作的流程圖;圖3表示通過里德-索羅蒙碼代碼生成的包括該數(shù)據(jù)和奇偶校驗位的代碼字;圖4表示系統(tǒng)編碼器的一般架構(gòu);圖5表示校正子計算器的一般架構(gòu);圖6表示根據(jù)交叉交錯的里德-索羅蒙碼代碼安排的數(shù)據(jù)位和奇偶校驗位; 圖7表示允許糾正多扇區(qū)的分解數(shù)據(jù)。本發(fā)明的實施例提供與可重寫存儲器一起使用的數(shù)據(jù)處理裝置。該裝置特別適合 于與包含大量損壞扇區(qū)的可重復利用的存儲器一起使用,或者與具有過高差錯率的但將 作為正規(guī)裝置銷售所制造的存儲器一起使用。該數(shù)據(jù)處理裝置被安排以根據(jù)糾錯碼處 理被寫入到和/或讀出自該存儲器的數(shù)據(jù)。該數(shù)據(jù)處理裝置方便地在硬件和軟件之間分 解該錯誤編碼和校正功能,以便可以實現(xiàn)一個強大的糾錯碼(其對處理由損壞存儲器扇 區(qū)所引起的數(shù)據(jù)錯誤是必需的)而不需要增加讀出和寫入時間的實際的額外消耗并且不 需要實質(zhì)上增加該處理器需要的處理能力。這和許多現(xiàn)有的存儲控制器大不相同,在 現(xiàn)有的存儲控制器中必須由軟件處理所有被寫入到和/或讀出自該存儲器的數(shù)據(jù)。圖1說明了根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置。一般地以101表示該數(shù)據(jù)處理裝置且與存儲器102耦合。該數(shù)據(jù)處理裝置包括編碼單元103,其在硬件中實現(xiàn),以及 糾錯單元104,其在軟件中實現(xiàn)。優(yōu)選地該糾錯單元是數(shù)字處理器。該編碼單元被安排以接收寫入到該存儲器的數(shù)據(jù)。該編碼單元編碼寫入到該存儲 器的數(shù)據(jù)并且輸出結(jié)果編碼數(shù)據(jù),以便也可以被寫入到該存儲器。該編碼單元優(yōu)選地 執(zhí)行系統(tǒng)碼,其中該編碼過程從被寫入到存儲器的數(shù)據(jù)生成輔助碼數(shù)據(jù)(即奇偶校驗數(shù) 據(jù)),而不是改變該數(shù)據(jù)本身。該編碼單元可以只輸出該被寫入到存儲器的編碼數(shù)據(jù),或者可以輸出該編碼數(shù)據(jù)和 寫入存儲器的實際數(shù)據(jù)。該編碼數(shù)據(jù)和實際數(shù)據(jù)可以隨后被保存在不同的存儲單元, 也就是說,該實際數(shù)據(jù)不必與它的相關(guān)奇偶校驗數(shù)據(jù)相鄰存儲。該編碼單元被同樣安排接收從該存儲器讀出的數(shù)據(jù)。該數(shù)據(jù)應該包括從寫入原始數(shù)據(jù)的存儲單元讀出的信息數(shù)據(jù)和與此信息數(shù)據(jù)相關(guān)聯(lián)的奇偶校驗數(shù)據(jù),也就是說,從 由原始數(shù)據(jù)形成的編碼數(shù)據(jù)被寫入到該存儲器的位置讀出數(shù)據(jù)。該編碼單元處理從存 儲器讀出的數(shù)據(jù)以便檢測它是否包含任何錯誤。這種處理可以包括奇偶校驗數(shù)據(jù)和信 息數(shù)據(jù)兩者或者僅僅包括奇偶校驗數(shù)據(jù)。如果該編碼單元從存儲器讀出的數(shù)據(jù)中檢測 到一個錯誤或者多個錯誤,它將錯誤的數(shù)據(jù)傳送給糾錯單元。如果該編碼單元未檢測 到任何錯誤,然后它可以輸出該信息數(shù)據(jù)??蛇x擇地,該編碼單元可以發(fā)信號給耦合 到該存儲器的另外部件,例如控制器,該信息數(shù)據(jù)可以通過這些部件安全地輸出。除如上所述的錯誤編碼和錯誤檢測操作之外,該編碼單元還可以在糾錯操作期間提 供針對糾錯單元的硬件支持。糾錯算法諸如里德-索羅蒙碼代碼需要的一些數(shù)據(jù)處理操 作特別適合于在硬件中實現(xiàn)。通過為編碼單元提供具有執(zhí)行一些此類處理的能力,可 以加快糾錯過程。這個附加過程可以包括例如校正子的計算和處理,在下面將更詳細 地描述。這種附加過程可以通過該編碼單元執(zhí)行,只要確定從存儲器讀出的數(shù)據(jù)包含 錯誤并且任何從那個處理生成的附加數(shù)據(jù)(諸如校正子)可以和該錯誤數(shù)據(jù)一起被傳送 到糾錯單元??蛇x擇地,在該糾錯單元的控制下該編碼單元可以執(zhí)行這種附加處理, 也就是說,如果該編碼單元通過該糾錯單元將用于處理的合適的數(shù)據(jù)轉(zhuǎn)發(fā)了,該編碼單 元可以立即將任何錯誤的數(shù)據(jù)傳送給該糾錯單元并且僅僅執(zhí)行附加處理??梢詫⒃摼幋a單元并入用于處理讀入到和/或讀出自存儲器的數(shù)據(jù)的不同的專門化 硬件塊。例如,該編碼單元可以使用與用于執(zhí)行如上所述的編碼和錯誤檢測操作相同 的硬件塊??蛇x擇地,該編碼單元可以由兩個相同的硬件塊提供 一個用于編碼被寫 入到存儲器的數(shù)據(jù)以及一個用于檢測從存儲器讀出的數(shù)據(jù)中的錯誤。該編碼單元可以 進一步地具備用于執(zhí)行任何附加處理的專門硬件。該編碼單元可以具備不同的專門硬件塊以提供對于可以通過該糾錯單元的軟件實現(xiàn)的不同的糾錯算法的硬件支持。作為執(zhí)行在該編碼單元中的附加數(shù)據(jù)處理單元的替代,針對可以在硬件中有效地執(zhí)行的任何糾錯處理,可以將與單獨的硬件單元該糾錯單元耦合并因此加快該糾錯操作。 該糾錯單元被安排以接收來自編碼單元的數(shù)據(jù)并且糾正包含在信息數(shù)據(jù)中的錯誤。通過該糾錯單元接收的數(shù)據(jù)可以包括該信息數(shù)據(jù),奇偶校驗數(shù)據(jù)以及可選地更進一步地包括一些由該編碼單元計算的數(shù)據(jù),例如校正子數(shù)據(jù)。由這種實現(xiàn)(其中在硬件中執(zhí)行錯誤檢測但是在軟件中執(zhí)行糾錯)提供的一個優(yōu)勢是可以由該處理器將復雜性的附加層引入糾錯編碼方案而不需要硬件編碼單元知道此額外的復雜性。例如,該處理器可以執(zhí)行在被寫入到以及讀出自存儲器的數(shù)據(jù)上的交 插以及去交插??梢宰们橛稍撎幚砥鲗⒃摻徊?去交插數(shù)據(jù)傳送到該編碼單元,而由編 碼單元執(zhí)行的編碼以及檢錯操作保持不變。根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置的進一步的優(yōu)勢是它可通過改變由該處理器使 用的算法而被用于實現(xiàn)各種各樣的糾錯方案。由該編碼單元執(zhí)行的基本的錯誤編碼以 及檢錯功能保持不變。同樣,因為在硬件中執(zhí)行該檢錯功能,任何經(jīng)改變該處理器實 現(xiàn)的算法而被加到讀出操作附加的額外消耗的影響可以被最小化。這是因為任何額外 開銷將不會存在于所有的讀取操作中,而是應該局限于在其中檢測到錯誤的讀取操作。圖2a以及2b表示根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置的操作。圖2a表示寫入操作, 其中在步驟S202,該數(shù)據(jù)處理裝置接收被寫入的數(shù)據(jù),在步驟S204處理該數(shù)據(jù)并在步 驟S206輸出編碼數(shù)據(jù)。圖2b表示讀出操作,其中在步驟S208中接收從存儲器讀出的 數(shù)據(jù)以及在步驟S210中處理該數(shù)據(jù)以確定是否它包含錯誤。如果確定該數(shù)據(jù)包含錯 誤,那么在步驟S212處理該數(shù)據(jù)以糾正那個錯誤并且在步驟S214輸出校正數(shù)據(jù)。如 果在步驟S210中從存儲器讀出的數(shù)據(jù)確定不包含錯誤,那么從存儲器讀出的數(shù)據(jù)在步 驟S216中被輸出。如上所釋,從存儲器讀出的數(shù)據(jù)可以由該數(shù)據(jù)處理裝置本身輸出, 或者由與該存儲器耦合的另外裝置輸出,該數(shù)據(jù)處理裝置發(fā)信號給該裝置以指示從存儲 器讀出的數(shù)據(jù)可以以它當前的形式輸出。使用糾錯碼執(zhí)行上述形成編碼數(shù)據(jù),檢測從存儲器讀出的數(shù)據(jù)中的錯誤以及糾正那 些錯誤的步驟。如上所釋, 一些現(xiàn)有的存儲器利用漢明碼引入一些簡單的糾錯。然而, 糾錯的水平不能勝任處理存在于可重復利用的存儲器中的或者作為正規(guī)裝置被銷售的 具有過高差錯率的存儲器中的大量的損壞扇區(qū)。通常,具有高達2%的不能使用的塊的 閃存被銷售(即2048塊中的40塊)。 一般任何其中不能使用的塊的百分比大于2%的 存儲器為不合格品。為了能利用舊的可重復利用的閃存,為了兩個理由需要施加擴展糾錯方案(i)舊 的存儲器類型在它們中甚至不包括簡單的漢明碼糾錯,以及(ii)很可能已經(jīng)超出了漢 明碼的能力(這是它首先被重復利用的原因)且該閃存已經(jīng)被認為"損壞"。存在許多執(zhí)行針對數(shù)字數(shù)據(jù)流的糾錯方法,并且所有這些方法都將包括計算的額外 消耗以及存儲器額外消耗,有一些比其他的更加繁重。所有的前向糾錯(FEC)校正系統(tǒng)都是復雜的,繁瑣的且一般需要花費相當多的時間和努力去開發(fā)。根據(jù)本發(fā)明的實施例的數(shù)據(jù)處理裝置使用的一些糾錯方案描述如下。這僅僅是用 于舉例的目的,并且很清楚的是本發(fā)明不被限制在任何特定的編碼方案中。如上所釋, 根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置可以用來實現(xiàn)各種各樣的糾錯方案。同時,該處理 器可以被配置為施加附加的糾錯編碼的水平給寫入到和/或讀出自下面未描述的存儲器 的數(shù)據(jù)。根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置使用的合適的糾錯方案包括里德-索羅蒙碼糾錯 碼。通常,這些代碼包括為數(shù)據(jù)幀增加奇偶校驗字節(jié)。通過不僅僅能夠確定是否已經(jīng) 存在錯誤,而且確定錯誤是什么以及在哪里的這樣的方式計算奇偶校驗字節(jié)。在一定 范圍內(nèi),在幀內(nèi)糾正幾個錯誤是可能的。這些基本的糾錯能力可以通過交叉交錯,在 所謂的交叉交錯里德-索羅蒙碼代碼(CIRC)中擴展。在下面更詳細地描述通常的里 德-索羅蒙碼代碼以及CIRC代碼,連同伽羅瓦域算法的描述一起,其可以有效地被用于生成簡單的硬件解碼器。里德-索羅蒙碼代碼是包括給數(shù)字數(shù)據(jù)塊(如圖3所示)增加冗余的奇偶校驗位的 糾錯碼。每個里德-索羅蒙碼代碼被定義為具有s位符號的RS (n,k)。這表示每個s 位的k個數(shù)據(jù)符號被處理以獲得當被加到該數(shù)據(jù)符號時形成n位符號代碼字的冗余的、 奇偶校驗位。里德-索羅蒙碼解碼器可以檢測高達代碼字中的2t個錯誤并且可以糾正高 達代碼字中的t個錯誤,在此2t-n-k (即奇偶校驗位的數(shù)目)。如果錯誤符號的位置 已知,則這個錯誤的符號被稱為擦除。里德-索羅蒙碼解碼器可以糾正代碼字中的高達 2t個擦除。通過被稱為生成器多項式的專門的多項式來生成里德-索羅蒙碼代碼字。所有的有 效代碼字由該生成多項式除盡。該生成多項式的通式被給定為<formula>formula see original document page 14</formula>該代碼字被構(gòu)造為在此g 6cJ是生成器多項式,;(^xJ是信息塊,c 6cJ是有效的代碼字,以及。被 稱為原始元素。舉例來說,對于生成6位奇偶校驗位的代碼,等式l可以被寫為<formula>formula see original document page 15</formula><formula>formula see original document page 15</formula>《4》系統(tǒng)的里德-索羅蒙碼代碼字中的2t個奇偶符號被給定為s=財mod g(:〗 《5)圖4表示里德-索羅蒙碼編碼器的架構(gòu)的例子。該圖中表示的每個寄存器都保有一 個符號并且算法運算符在完整的符號上執(zhí)行加法或者乘法。在根據(jù)本發(fā)明的實施例的數(shù)據(jù)處理裝置中,由該編碼單元中的專門化硬件執(zhí)行用于 每個被寫入到存儲器的信息塊的奇偶校驗位的計算。在硬件中計算該奇偶校驗位而不是使用軟件實現(xiàn)能夠使該奇偶符號計算地更快,因此減少被加到每個寫入操作的額外消 耗。當從存儲器讀出數(shù)據(jù)時由該編碼單元中的這個專門化硬件執(zhí)行奇偶符號的相同計 算。例如,該編碼單元可以接收從存儲器讀出的代碼字并且將這個代碼字分離為信息數(shù) 據(jù)和奇偶校驗數(shù)據(jù)。通過執(zhí)行與從存儲器讀出的信息數(shù)據(jù)上的生成器多項式相同的乘法 可以形成一套新奇偶符號。該新的奇偶符號能因此與從存儲器讀出的奇偶符號相比較以 確定是否該代碼字包含錯誤。如果該重新計算的奇偶符號與從存儲器讀出的那些不相 配,則檢測出從存儲器讀出的代碼字中的錯誤。這個可以通過從自存儲器讀出的奇偶符 號中減去該重新形成的奇偶符號而被直接完成。如果該減法的結(jié)果是非零,那么可以確 定從存儲器讀出的代碼字包含錯誤。如上所釋,包括特殊代碼字的奇偶符號和數(shù)據(jù)符號不必作為連續(xù)的數(shù)據(jù)被存儲在該 存儲器中。因此,存儲器保存的與特殊的信息塊有關(guān)的奇偶校驗數(shù)據(jù)的位置應該和該信 息塊的位置一起被記錄,以便當從存儲器讀出那些信息塊時,同時讀取與那些信息有關(guān) 的奇偶校驗數(shù)據(jù)。用這種方法,可以將一個完整的代碼字傳送給編碼單元用于錯誤檢測。如果由編碼單元在從存儲器讀出的數(shù)據(jù)上執(zhí)行的處理指示代碼字中存在錯誤,那些 代碼字則直接地被傳送給糾錯單元用于在軟件中處理。糾正代碼字中的任何錯誤的任 務(wù)比檢測他們的任務(wù)更繁重,因此這任務(wù)可以由該糾錯單元在軟件中更方便地執(zhí)行。在 一些實現(xiàn)中,編碼單元可以通過執(zhí)行錯誤代碼字的一些附加處理加速該軟件。例如, 編碼單元可以從自存儲器讀出的代碼字方便地生成"校正子"。下面更詳細地描述校正 子。通過將生成器多項式的根替換為從存儲器讀出的代碼字而生成"校正子"。將由每 個替換(即,對于該生成器多項式的每個根)生成的符號生成該校正子。針對正確的 代碼字的校正子都應該是零。如果校正子是非零,則表示該代碼字包含錯誤。由于該 生成器多項式存在2t個根,因此每個代碼字有2t個校正子。每個校正子取決于每個代 碼字中的錯誤。這些校正子不僅能被用于檢測代碼字中的錯誤還能被用于確定代碼字 中的錯誤的位置。由于校正子不僅能被用于檢測錯誤還能被用于糾正錯誤,在本發(fā)明的一些實施例 中,編碼單元可以方便地被安排以計算來自從存儲器讀出的代碼字的校正子而代替計算 奇偶校驗數(shù)據(jù)。編碼單元然后能通過計算那些數(shù)據(jù)的2t個校正子并確定是否有非零的 校正子來檢測從存儲器讀出的代碼字是否包含錯誤。如果檢測到錯誤,該錯誤的代碼 字以及它的相關(guān)的校正子通過編碼單元被傳送給糾錯單元。這是本發(fā)明特別有效的實 施例,因為通過該編碼單元計算的為了檢測錯誤的校正子數(shù)據(jù)然后被糾錯單元使用以糾 正任何檢測出的錯誤。根據(jù)該發(fā)明的這樣一個實施例的編碼單元可以具備不同的硬件 塊 一個塊用于在編碼操作期間計算奇偶校驗數(shù)據(jù),以及一個塊用于在錯誤檢測操作期 間計算校正子。圖5表示適合于計算校正子數(shù)據(jù)的一般架構(gòu)。典型地, 一個編碼單元將 具備2t個這樣的架構(gòu) 一個用于計算一個代碼字的一個校正子。這使單個代碼字的校 正子能并行的計算??梢詮纳厦娴牡仁?看出因為生成器多項式的每個根相差一個原始元素。的冪, 所以每個校正子同樣相差一個原始元素"的冪(這還可以從下面的等式7看出)。因此, 錯誤的位置可以通過將校正子相除并且獲得日志而確定。這種計算特別適合硬件實現(xiàn), 該硬件實現(xiàn)可以利用使用伽羅瓦域算法而有效的的簡易性。在伽羅瓦域算法中,字節(jié)的每個位都被認為是基本要素的冪的模2系數(shù)。當處理 如上所述的校正子時,這個基本要素是該生成器多項式的基本要素"。該數(shù)據(jù)的這個處理的真正優(yōu)勢是可以加、減、乘以及除數(shù)據(jù),并且結(jié)果總是在該域 中,即字節(jié)寬。這意味著作為數(shù)據(jù)字節(jié)的數(shù)字組合的錯誤檢測或者糾錯碼將總是字節(jié) 寬而與實際的數(shù)據(jù)無關(guān)。伽羅瓦域的元素可以由非常像偽隨機數(shù)發(fā)生器的反饋的移位寄存器產(chǎn)生。在CD 中該移位寄存器從LSB移位到MSB并且當存在執(zhí)行時值1Dh被異或入字節(jié)。因此該 伽羅瓦域的第一個元素,以十六進制計,是1,2,4,8,10,20,40,80,1D,3A,74,E8,CD.。在255個移位之后該周期重復。在數(shù)學上,每個移位被認為是a的乘法,所以該 域的每個元素可以被認為是"的冪。應當注意到零不是該域的元素。由于兩個原因這 是不意外的。不管有多少移位在該移位寄存器中的零總是產(chǎn)生零。"的冪不可能是零。 在一些情況下零必須被當做特例。該域的兩個元素的加、減法相同的。該結(jié)果只不過是兩個字節(jié)的異或。這是因為 每個位都是模2系數(shù)。乘法和除法是稍加復雜的。因為每個單元可以被認為是"的冪,對任何元素的求 對數(shù)是有可能的。該對數(shù)只不過是在上述序列中的位置即,移位的數(shù)目或者o的冪。 所以1的對數(shù)是0且3A的對數(shù)是9。為了乘或者除2個字節(jié)我們首先獲得每個數(shù)字的 對數(shù),再或者加或者減該對數(shù),然后將。提升至該冪以得到該結(jié)果。存在用乘法以及除法的更進一步的復雜化因為在該域內(nèi)在僅僅有255個元素。這 意味著當加或減對數(shù)時應該以模255算出它。如上所述的里德-索羅蒙碼代碼的糾錯能力可以通過使用交插而增加。這使得交叉 交錯里德-索羅蒙碼代碼(CIRC)是非常有效的糾錯算法。里德-索羅蒙碼代碼的基本的糾錯能力可以通過交叉交錯而擴展。這實質(zhì)上意味著 安排該數(shù)據(jù)成為二維陣列并且為行和列計算單獨的奇偶校驗字節(jié)。這意味著,可能來 自存儲器的損壞扇區(qū)的,影響一維中的許多相連字節(jié)的突發(fā)錯誤,僅影響其它的維中的 每幀的一或兩個字節(jié)。圖6表示這樣一個陣列。在"垂直的"或者列方向中的幀稱為Cl并且包含32個字節(jié),其中的四個字節(jié)是 奇偶校驗字節(jié)。在"水平的"上或者行方向中的幀稱為C2并且包含28個字節(jié),其中 的四個字節(jié)是奇偶校驗字節(jié)。在處理C1和C2之后,剩余24個數(shù)據(jù)字節(jié)。這些等于 6個立體的樣本。以大致相同的方式計算用于Cl和C2兩者的奇偶校驗字節(jié)。如此計算Cl奇偶校 驗以致以下等式成立。<formula>formula see original document page 18</formula>符號d0到d31是該幀中的字節(jié)。C2稍有不同因為僅僅具有28個字節(jié)所以a的冪 因此減少。使用該校正子發(fā)生器邏輯可以快速檢查該數(shù)據(jù)。這個邏輯包含4個累加器。當 向校正子邏輯寫入一個字節(jié)時,每個累加器中的先前的值分別乘以1, "、 "2和^ 然后加到新的字節(jié)。這有效地執(zhí)行上述計算而不管該幀的尺寸。如果該數(shù)據(jù)是正確的那么該累加器中的被稱為校正子的值可能全部是零。如果該 校正子是非零,那么該校正子可用單錯糾正,雙重錯誤糾正和四擦除糾正,三種方式之 一來糾正誤差。編碼單元可以被安排以計算接收的代碼字的一個校正子,而非從讀出自存儲器中的 數(shù)據(jù)中計算出一套新奇偶校驗數(shù)據(jù),來確定那些數(shù)據(jù)是否包含任何錯誤。如果該校正子是非零,則檢測到錯誤。 單錯糾正假設(shè),如果僅僅在d5中具有一個錯誤那么四個校正子字節(jié)被給定為<formula>formula see original document page 18</formula>在此e是d5的正確值和恢復值之間的差。顯而易見該錯誤被給定為S0。它的位置可以通過由S1除S0并通過求對數(shù)提取a冪來確定。超過一個錯誤可以冒充成單個錯誤一直是可能的。可以通過再次使用& 和S3計算該位置而獲得高置信度。這些必須是一致的而且在范圍0-31中。那么遺漏 糾正的幾率僅僅為524,288分之l。雙差錯糾正在該校正子字節(jié)中具有足夠的信息以識別2個錯誤的值和位置。算法是相對復雜 的。Peterson-Berlekamp算法可用于找到被稱為定位器多項式的多項式。 一旦該定位 器多項式已經(jīng)計算,該多項式的根必須被發(fā)現(xiàn)。這些可以使用Chien搜索法完成。還 可以使用歐幾里得算法發(fā)現(xiàn)該定位器多項式。這個算法一般地不如Peterson -Berlekamp有效,但是更適合于硬件解決方法。遺漏糾正具有雙重錯誤的幾率是32分之1。然而,由在CI的雙查錯糾錯所提供 的低置信級通過在C2提供的雙重檢查而被改善。在此兩個錯誤存在于代碼字中,開頭兩個校正子如下<formula>formula see original document page 19</formula>這里i^和丄/是已知的錯誤的位置。^和q可以如下求出<formula>formula see original document page 19</formula>注意在解這些等式中,減法等于加法。 四個擦除糾正如上所釋,擦除是給予幀中位置已知但是值未知的錯誤的名稱。這發(fā)生在一列數(shù) 據(jù)在C1階段被標志為壞,但然后,在C2階段處理相同的數(shù)據(jù)時,僅僅將一個單獨的 字節(jié)被標記為無效的時候。該標志列譯為該錯誤位置。C2可以糾正高達四個擦除即 四個連續(xù)的可能有差錯的列。通過偏移該數(shù)據(jù)以至于連續(xù)的行數(shù)據(jù)分別來自列四個一 組可以進一步地將這個能力提高四倍。因此可以是糾正16個連續(xù)的錯誤幀。用于具有四個錯誤的幀的校正子可以用下式表示<formula>formula see original document page 19</formula>值Zft Z/,"和&由來自CI的標志給出。因此存在具有四個未知數(shù)eft ^和e3的四個線性方程組并且以多種方式求解。 一個方法將方程組考慮為矩陣<formula>formula see original document page 20</formula>通過換算行并且從另外的行中減去一行,矩陣可以被轉(zhuǎn)換為單位矩陣。<formula>formula see original document page 20</formula>那么錯誤數(shù)與被修改的校正子字節(jié)相等。代碼為了速度運用某些捷徑。當系數(shù)可 能到達它的終值時不必計算或者存儲那些值因為不再需要它了。如果錯誤少于四個則可以在該幀外創(chuàng)建虛擬位置以使其達到四個??梢詾榫哂幸?個,兩個和三個擦除的情況提供專門代碼,因為這可能傾向于在單個幀上更快速。然 而,該系統(tǒng)必須對付連續(xù)的四個擦除幀因此一般地可能不具有提供這種專用代碼的系統(tǒng) 優(yōu)勢。還應該執(zhí)行在糾正后的幀上的最終的校正子校驗。如果僅使用了糾錯的第二階段,那么這連同去交插緩沖器一起將允許糾正高達4096 個連續(xù)的錯誤位,而一個位的錯誤數(shù)據(jù)都不需要由主機CPU去發(fā)現(xiàn)。這比當前糾錯好 4096倍,并且無需不定期檢査所可預期的巨大的額外消耗。在典型的由存儲器供應商使用的閃存糾錯算法中,將每512個字節(jié)中的16個字節(jié) 作為冗余,因此存儲到該閃存的數(shù)據(jù)的3.1 %是該糾錯額外消耗,在基于CIRC的系統(tǒng) 中,這個冗余水平上升到12.5%(當僅僅使用C2時),然而這是代表糾錯容量中的4096:1 的增長。該CIRC糾錯還可以重用來自現(xiàn)在不用的漢明碼系統(tǒng)的附加的可用空間,其 使得數(shù)據(jù)冗余降至僅僅9.4%。作為進一步改善糾錯能力的方法,另外對數(shù)據(jù)進行交插以允許糾正多個扇區(qū)是有可 能的。例如,如果該數(shù)據(jù)被寫入到的存儲器裝置的數(shù)據(jù)被交插在4個扇區(qū)上,那么錯 誤糾正系統(tǒng)能完全地從4個連續(xù)的完全被破壞的扇區(qū)恢復該數(shù)據(jù)。這額外的交插以需要額外的存儲器處理該數(shù)據(jù)為代價而發(fā)生,但是顯而易見,只要CPU中的工作存儲器 足夠,可以允許將該額外交插擴展以允許將可校正數(shù)據(jù)的最大長度延伸到任何長度。圖7表示當運行于一個典型的NAND閃存的四個512個字節(jié)扇區(qū)上時,該增加的 交插結(jié)構(gòu)。在該圖中,bn是位數(shù)而wn是字數(shù)。在這種情況下字是8位長。取決于在該數(shù)據(jù)中發(fā)現(xiàn)的錯誤等級,對于典型的128 kbps的MP3文件用于完成編 碼和解碼器的處理額外消耗應該小于1到4MIPS,且總內(nèi)存空間使用大約為1.5K字節(jié)。根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置的處理器可以利用存在于CD數(shù)據(jù)解碼器中的 現(xiàn)有的指令。這可以有助于加速數(shù)據(jù)糾正處理。糾錯的目的允許使用可重復利用的閃存,不是這個系統(tǒng)給與的僅有的優(yōu)勢一閃存 產(chǎn)品的使用壽命還可以顯著地增加,而不必需要在閃存存儲器件上的昂貴的硅解決方 法。在將根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置與包含大量損壞扇區(qū)的存儲器,諸如可重復 利用的存儲器或者具有過高差錯率而不能正常銷售的,和因其他原因制造的不合格的存 儲器, 一起使用時是特別有利的。然而,該數(shù)據(jù)處理裝置不局限于與這種損壞的存儲 器耦合在一起的狀況中。它可以被有利地用于任何期望實施有效的糾錯碼,但又不產(chǎn) 生在軟件中單獨實現(xiàn)這樣的糾錯碼一般所必須承擔的讀寫額外消耗的狀況中。根據(jù)本發(fā)明實施例的數(shù)據(jù)處理裝置,已經(jīng)在上面具體參照閃存描述了。然而,此 技術(shù)同樣地可應用到DRAM或者任何其它種類的固態(tài)存儲器裝置。根據(jù)本發(fā)明的數(shù)據(jù)處理裝置可以被方便地結(jié)合到各種各樣的消費電子產(chǎn)品中,諸如 CD播放器,數(shù)字音頻播放器,數(shù)字式照相機,移動式電話等等。申請人在此分別描述了每個單獨的特征以及兩個或更多這種特征的任何組合,對本 領(lǐng)域的技術(shù)人員,根據(jù)公知常識,根據(jù)本說明書可以實現(xiàn)這種特征或者組合,以及利用 這種特征或者特征組合解決任何在此揭露的問題,并且沒有限制本權(quán)利要求書的范圍。 申請人:指出,可以由任何這種單獨的特征或者組合特征組成本發(fā)明的各個方面。鑒于 上述描述,本領(lǐng)域的技術(shù)人員可以在本發(fā)明的范圍內(nèi)作出不同的修改是顯而易見的。
權(quán)利要求
1.一種用于施加糾錯算法到寫入到和讀出自可重寫存儲器的數(shù)據(jù)的數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置包括在硬件中實現(xiàn)的編碼單元,該編碼單元能夠執(zhí)行編碼操作,在該操作中它接收將寫入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出用于寫入到該存儲器的第二數(shù)據(jù)集,以及能夠執(zhí)行錯誤檢測操作,在該操作中它接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定該讀出數(shù)據(jù)是否包含錯誤;以及,在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法對此數(shù)據(jù)進行處理以糾正所述錯誤并因此形成校正數(shù)據(jù),并且輸出該校正數(shù)據(jù)。
2. 如權(quán)利要求1所要求的數(shù)據(jù)處理裝置,其中如果該編碼單元確定從存儲器讀出的 數(shù)據(jù)未包含錯誤,則它被安排以輸出該從存儲器讀出的數(shù)據(jù)。
3. 如權(quán)利要求1或2所要求的數(shù)據(jù)處理裝置,其中該編碼單元被安排為在錯誤檢測 操作期間以執(zhí)行與它于該編碼操作期間在第一數(shù)據(jù)集上執(zhí)行的從存儲器讀出的數(shù)據(jù)的 處理相同的處理。
4. 如權(quán)利要求3所要求的數(shù)據(jù)處理裝置,其中在錯誤檢測操作期間,該編碼單元被 安排為將從存儲器讀出的數(shù)據(jù)視為根據(jù)編碼操作的第一數(shù)據(jù)集,并且根據(jù)該糾錯算法處 理那些數(shù)據(jù)以形成第二數(shù)據(jù)集。
5. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理裝置,其中該編碼單元被安排以接 收從預先寫入第一數(shù)據(jù)集的該存儲器中的第一位置讀出的信息數(shù)據(jù),在該第一位置,并 從預先寫入了第二數(shù)據(jù)集中的該存儲器的第二位置讀出與該信息數(shù)據(jù)相關(guān)聯(lián)的奇偶校 驗數(shù)據(jù),其中從所述第一數(shù)據(jù)集通過編碼操作預先形成第二數(shù)據(jù)集。
6. 如直接地或者間接地從屬于權(quán)利要求4的權(quán)利要求5所要求的數(shù)據(jù)處理裝置,其中該編碼單元被安排以通過根據(jù)該糾錯算法而處理該信息數(shù)據(jù)確定從存儲器讀出的數(shù) 據(jù)包含錯誤以形成第二數(shù)據(jù)集,將此第二數(shù)據(jù)集與該奇偶校驗數(shù)據(jù)相比較并且如果第二 數(shù)據(jù)集和該奇偶校驗數(shù)據(jù)不一致,則確定該信息數(shù)據(jù)包含錯誤。
7. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理裝置,其中該編碼單元包括代碼字 發(fā)生器,該代碼字發(fā)生器被安排以接收第一數(shù)據(jù)集,由生成器多項式乘所述數(shù)據(jù),并且 輸出所述乘法的結(jié)果作為第二數(shù)據(jù)集。
8. 如權(quán)利要求5至7中任意一項所要求的數(shù)據(jù)處理裝置,其中該編碼單元包括代碼 字發(fā)生器,該代碼字發(fā)生器被安排以接收從存儲器讀出的數(shù)據(jù),由生成器多項式乘包括 在該讀出數(shù)據(jù)中的信息數(shù)據(jù)并且將所述乘法的結(jié)果與包括在該讀出數(shù)據(jù)中的奇偶校驗 數(shù)據(jù)進行比較。
9. 如權(quán)利要求5至8中任意一項所要求的數(shù)據(jù)處理裝置,其中該編碼單元包括校正 子發(fā)生器,該校正子發(fā)生器被安排以接收從存儲器讀出的數(shù)據(jù),連接該信息數(shù)據(jù)和包括 在該讀出數(shù)據(jù)內(nèi)的奇偶校驗數(shù)據(jù),將該生成多項式的一個根替換為該連接數(shù)據(jù)并且對結(jié) 果值求和。
10. 如權(quán)利要求9所要求的數(shù)據(jù)處理裝置,其中該編碼單元被安排以確定,如果該 結(jié)果值的和是非零,則該信息數(shù)據(jù)包含錯誤。
11. 如權(quán)利要求IO所要求的數(shù)據(jù)處理裝置,其中校正子發(fā)生器可以被安排為將復數(shù) 個生成器多項式的根替換為連接數(shù)據(jù)并且對由每個替換產(chǎn)生的值求和,每個和的結(jié)果指 示出信息數(shù)據(jù)中的錯誤的位置。
12. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理裝置,其中該編碼單元被安排為, 當已經(jīng)確定從存儲器讀出的數(shù)據(jù)包含錯誤時,輸出那個信息數(shù)據(jù)到該糾錯單元。
13. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理器,其中該糾錯單元被安排以對 被寫入到該存儲器的數(shù)據(jù)進行交插并對從該存儲器讀出的數(shù)據(jù)進行區(qū)交插。
14. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理器,其中該編碼單元能夠檢測每 256個從存儲器讀出的字節(jié)中的超過一位的錯誤。
15. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理器,其中該糾錯單元能夠糾正每 512個從存儲器讀出的字節(jié)中的超過一位的錯誤。
16. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理裝置,其中該糾錯算法是里德-索 羅蒙碼代碼。
17. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理裝置,其中該糾錯算法是交叉交 錯里德-索羅蒙碼代碼。
18. 如前述權(quán)利要求中任意一項所要求的數(shù)據(jù)處理器,其中該糾錯單元是數(shù)字處理器。
19. 一種數(shù)字存儲裝置包括 可重寫存儲器,在硬件中實現(xiàn)的編碼單元,該編碼單元能夠執(zhí)行編碼操作,在該操作中它接收將寫 入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出用 于寫入到該存儲器的第二數(shù)據(jù)集,以及能夠執(zhí)行錯誤檢測操作,在該操作中它接收自該 存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定該讀出數(shù)據(jù)是否包含錯誤; 以及,在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該 糾錯算法對此數(shù)據(jù)進行處理以糾正所述錯誤并因此形成校正數(shù)據(jù),并且輸出該校正數(shù)據(jù)。
20. 如權(quán)利要求19所要求的數(shù)據(jù)存儲裝置,其中至少該存儲器的一個被用于通過該 處理器讀取和/或?qū)懭霐?shù)據(jù)的扇區(qū)具有大于在512個字節(jié)中的1位的差錯率。
21. 如權(quán)利要求19或者20所要求的數(shù)據(jù)存儲裝置,其中該存儲器是可重復利用的 集成化存儲器。
22. 如權(quán)利要求19或者20所要求的數(shù)據(jù)存儲裝置,其中該存儲器具有超過通常驗 收制造標準的差錯率。
23. 如權(quán)利要求19至22中任何一個所要求的數(shù)據(jù)存儲裝置,其中該存儲器是閃存。
24. 如權(quán)利要求19至23中任何一個所要求的數(shù)據(jù)存儲裝置,其中該存儲器是NAND 閃存。
25. 如權(quán)利要求19到24任何一個所要求的數(shù)據(jù)存儲裝置,其中該存儲器是如此以 至該存儲器的位不可獨立于該存儲器的其它位而存取。
26. —種用于處理被寫入到并且讀出自可重寫存儲器的方法包括-在硬件中執(zhí)行編碼操作,該操作包括接收將寫入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算 法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出用于寫入到該存儲器的第二數(shù)據(jù)集;執(zhí)行錯誤檢測操作,該錯誤檢測操作包括接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾 錯算法處理那些數(shù)據(jù)以確定該讀出數(shù)據(jù)是否包含錯誤;以及,執(zhí)行糾錯操作,該糾錯操作包括接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法對此數(shù) 據(jù)進行處理以糾正所述錯誤并因此形成校正數(shù)據(jù),并且輸出該校正數(shù)據(jù)。
27. —種用于重復利用可重寫存儲器的方法包括將該存儲器從可操作的并且放置該存儲器的裝置移動到另外的裝置中,具有數(shù)據(jù)處理裝置的另一個裝置包括在硬件中實現(xiàn)的編碼單元,該編碼單元能夠執(zhí)行編碼操作,在該操作中它接收將寫 入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出用 于寫入到該存儲器的第二數(shù)據(jù)集,以及能夠執(zhí)行錯誤檢測操作,在該操作中它接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定該讀出數(shù)據(jù)是否包含錯誤; 以及,在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該 糾錯算法對此數(shù)據(jù)進行處理以糾正所述錯誤并因此形成校正數(shù)據(jù),并且輸出該校正數(shù) 據(jù)。
28. —種實質(zhì)上參考附圖在此描述的數(shù)據(jù)處理裝置。
29. —種實質(zhì)上參考附圖在此描述的數(shù)據(jù)存儲裝置。
30. —種實質(zhì)上參考附圖在此描述的用于處理數(shù)據(jù)的方法。
31. —種實質(zhì)上參考附圖在此描述的用于重復利用可重寫存儲器的方法。
全文摘要
一種用于施加糾錯算法到寫入到和讀出自可重寫存儲器的數(shù)據(jù)的數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置包括在硬件中實現(xiàn)的編碼單元,該編碼單元能夠執(zhí)行編碼操作,在該操作中它接收將寫入到該存儲器的第一數(shù)據(jù)集,根據(jù)糾錯算法處理那些數(shù)據(jù)以形成第二數(shù)據(jù)集并且輸出用于寫入到該存儲器的第二數(shù)據(jù)集,以及能夠執(zhí)行錯誤檢測操作,在該操作中它接收自該存儲器讀出的數(shù)據(jù)并且根據(jù)該糾錯算法處理那些數(shù)據(jù)以確定該讀出數(shù)據(jù)是否包含錯誤;以及在軟件中實現(xiàn)的糾錯單元,該糾錯單元被安排以接收包含錯誤的讀出數(shù)據(jù),根據(jù)該糾錯算法對此數(shù)據(jù)進行處理以糾正所述錯誤并因此形成校正數(shù)據(jù),并且輸出該校正數(shù)據(jù)。
文檔編號G06F11/10GK101258471SQ200680025877
公開日2008年9月3日 申請日期2006年7月6日 優(yōu)先權(quán)日2005年7月15日
發(fā)明者摩根·科爾默, 鄧肯·約翰·羅伯特·麥考雷 申請人:Gs Ip有限責任公司