欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在固態(tài)存儲(chǔ)器中實(shí)現(xiàn)raid的制作方法

文檔序號(hào):6332232閱讀:217來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):在固態(tài)存儲(chǔ)器中實(shí)現(xiàn)raid的制作方法
在固態(tài)存儲(chǔ)器中實(shí)現(xiàn)RAID
相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)要求2009年9月15日提交的且標(biāo)題為“IMPLEMENTING RAIDINSIDESSD"的美國(guó)臨時(shí)申請(qǐng)序列號(hào)61/242,662的利益,并要求2009年10月23日提交的且 標(biāo)題為“IMPLEMENTING RAID INSIDE SSD”的美國(guó)臨時(shí)申請(qǐng)序列號(hào)61/2 ,577的利 益;這兩個(gè)優(yōu)先權(quán)申請(qǐng)的全部?jī)?nèi)容由此通過(guò)引用被并入。
背景技術(shù)
計(jì)算機(jī)系統(tǒng)常常產(chǎn)生需要被持久地存儲(chǔ)的數(shù)據(jù)。系統(tǒng)設(shè)置、數(shù)字照片、電子文 檔和數(shù)字視頻都是計(jì)算機(jī)系統(tǒng)的大部分用戶(hù)希望持久地存儲(chǔ)的電子文件。在一般個(gè)人計(jì) 算機(jī)中,這些和其它類(lèi)型的電子文件存儲(chǔ)在硬盤(pán)驅(qū)動(dòng)器上,或日益增加地存儲(chǔ)在固態(tài)存 儲(chǔ)器設(shè)備(例如,閃存驅(qū)動(dòng)器)上。
對(duì)計(jì)算機(jī)用戶(hù)的一個(gè)問(wèn)題是電子文件和數(shù)據(jù)的損失。硬盤(pán)驅(qū)動(dòng)器是機(jī)械設(shè)備, 與任何其它機(jī)器一樣,受到可導(dǎo)致故障的損耗或損壞,其中它們包含的信息可能變得部 分地或完全不可得到。數(shù)據(jù)損失的可能性有時(shí)通過(guò)使用獨(dú)立驅(qū)動(dòng)器的冗余陣列(RAID) 來(lái)減小。RAID是多個(gè)硬盤(pán)驅(qū)動(dòng)器合并成一個(gè)較大的邏輯單元的技術(shù),并通過(guò)冗余提供增 加的可靠性。被儲(chǔ)存到邏輯單元的數(shù)據(jù)連同錯(cuò)誤恢復(fù)數(shù)據(jù)一起分布在多個(gè)驅(qū)動(dòng)器中。如 果一個(gè)物理硬盤(pán)驅(qū)動(dòng)器出故障,則只有存儲(chǔ)到該驅(qū)動(dòng)器的數(shù)據(jù)的部分變得不可得到。不 可得到的數(shù)據(jù)能夠根據(jù)存儲(chǔ)在其余驅(qū)動(dòng)器上的錯(cuò)誤恢復(fù)數(shù)據(jù)來(lái)恢復(fù)或重建。發(fā)明內(nèi)容
本公開(kāi)包括涉及容錯(cuò)系統(tǒng)的系統(tǒng)和技術(shù)以及用于將數(shù)據(jù)存儲(chǔ)在固態(tài)存儲(chǔ)器例如 閃存中的方法。根據(jù)所述系統(tǒng)和技術(shù)的方面,用于存儲(chǔ)數(shù)據(jù)的電子設(shè)備包括配置成接 收數(shù)據(jù)的輸入端口;保存比較值的比較緩沖存儲(chǔ)器;比較數(shù)據(jù)被劃分到的多個(gè)邏輯塊中 的每個(gè)與比較值來(lái)確定新的比較值以保存在比較緩沖存儲(chǔ)器中的比較電路;以及存儲(chǔ)邏 輯塊和相應(yīng)于比較值的恢復(fù)碼的固態(tài)數(shù)據(jù)儲(chǔ)存存儲(chǔ)器,其中通過(guò)合并來(lái)自所存儲(chǔ)的邏輯 塊的一個(gè)或多個(gè)未選擇的邏輯塊的數(shù)據(jù)與恢復(fù)碼,來(lái)自所存儲(chǔ)的邏輯塊中的至少一個(gè)的 數(shù)據(jù)是可恢復(fù)的。
各種實(shí)現(xiàn)可包括下列特征中的一些、全部或一個(gè)特征也不包括。固態(tài)數(shù)據(jù)儲(chǔ)存 存儲(chǔ)器可為閃存。比較電路可執(zhí)行邏輯異或操作。緩沖存儲(chǔ)器可包括多個(gè)緩沖存儲(chǔ)器, 且緩沖存儲(chǔ)器中的至少一個(gè)可包括單端口存儲(chǔ)器。通過(guò)確定當(dāng)與比較值比較時(shí)導(dǎo)致預(yù)定 值的值可確定恢復(fù)碼。設(shè)備可包括由軟件編程的處理器以實(shí)現(xiàn)比較電路,其中該比較電 路可執(zhí)行邏輯異或操作。
固態(tài)數(shù)據(jù)儲(chǔ)存存儲(chǔ)器可包括多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備。多個(gè)固態(tài)物理存儲(chǔ)器設(shè) 備中的每個(gè)可包括包含至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊的單個(gè)集成電路芯片,其中物理數(shù)據(jù)存 儲(chǔ)塊可包括在集成電路芯片上形成的固態(tài)存儲(chǔ)器的塊,并連同在同一集成電路芯片上形 成的固態(tài)存儲(chǔ)器的其它塊一起是單獨(dú)可尋址的。本設(shè)備可作為單個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備與主設(shè)備通過(guò)接口連接。

根據(jù)所述系統(tǒng)和技術(shù)的另一方面,一種方法包括在存儲(chǔ)控制器處接收待存儲(chǔ) 在包括多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備的固態(tài)存儲(chǔ)器中的數(shù)據(jù);通過(guò)存儲(chǔ)控制器將所接收的數(shù) 據(jù)分到相應(yīng)于固態(tài)存儲(chǔ)器的邏輯數(shù)據(jù)塊中;通過(guò)存儲(chǔ)控制器將邏輯數(shù)據(jù)塊分配到邏輯塊 分組,所述邏輯塊分組包括來(lái)自多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的兩個(gè)或多個(gè)的至少一個(gè)物 理數(shù)據(jù)存儲(chǔ)塊;將邏輯數(shù)據(jù)塊存儲(chǔ)在邏輯塊分組的被指定用于將持久數(shù)據(jù)存儲(chǔ)在邏輯塊 分組內(nèi)的物理數(shù)據(jù)存儲(chǔ)塊中;通過(guò)存儲(chǔ)控制器確定相應(yīng)于存儲(chǔ)在邏輯塊分組中的持久數(shù) 據(jù)的代碼;以及通過(guò)存儲(chǔ)控制器將代碼存儲(chǔ)在至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊中,所述至少一 個(gè)物理數(shù)據(jù)存儲(chǔ)塊被指定用于存儲(chǔ)相應(yīng)于存儲(chǔ)在邏輯塊分組中的持久數(shù)據(jù)的代碼。各種實(shí)現(xiàn)可包括下列特征中的一些、全部或一個(gè)特征也不包括。多個(gè)固態(tài)物理 存儲(chǔ)器設(shè)備可為閃存設(shè)備。所述確定可為邏輯異或操作。多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備和存 儲(chǔ)控制器可為單個(gè)存儲(chǔ)器存儲(chǔ)設(shè)備。多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備可為包括至少一個(gè)物理數(shù) 據(jù)存儲(chǔ)塊的單個(gè)集成電路芯片,其中物理數(shù)據(jù)存儲(chǔ)塊可包括在集成電路芯片上形成的固 態(tài)存儲(chǔ)器的塊,并可連同在同一集成電路芯片上形成的固態(tài)存儲(chǔ)器的其它塊一起是單獨(dú) 可尋址的。該方法還可包括通過(guò)識(shí)別相應(yīng)于選定的物理數(shù)據(jù)存儲(chǔ)塊的邏輯數(shù)據(jù)塊被分配 給的邏輯塊分組、讀取存儲(chǔ)在所識(shí)別的邏輯塊分組中的持久數(shù)據(jù)和代碼、以及比較代碼 與不同于存儲(chǔ)在選定的物理數(shù)據(jù)存儲(chǔ)塊中的持久數(shù)據(jù)的所讀取的持久數(shù)據(jù),由存儲(chǔ)控制 器恢復(fù)存儲(chǔ)在選定的物理數(shù)據(jù)存儲(chǔ)塊中的持久數(shù)據(jù)。該比較可為邏輯異或操作。確定代 碼可包括在緩沖存儲(chǔ)器中存儲(chǔ)邏輯塊分組的第一個(gè)邏輯數(shù)據(jù)塊作為緩存值;對(duì)于邏輯 塊分組中的剩余邏輯數(shù)據(jù)塊中的每個(gè),通過(guò)存儲(chǔ)控制器比較剩余邏輯數(shù)據(jù)塊與緩存值以 確定比較值并將比較值作為緩存值存儲(chǔ)在緩沖存儲(chǔ)器中;以及通過(guò)存儲(chǔ)控制器確定當(dāng)與 緩存值比較時(shí)導(dǎo)致預(yù)定值的值。緩沖存儲(chǔ)器可包括多個(gè)緩沖存儲(chǔ)器,且緩沖存儲(chǔ)器中的 至少一個(gè)可包括單端口存儲(chǔ)器。所述系統(tǒng)和技術(shù)可在電路、計(jì)算機(jī)硬件、固件、軟件中或在它們的組合例如在 本說(shuō)明書(shū)中公開(kāi)的結(jié)構(gòu)裝置及其結(jié)構(gòu)等效形式中實(shí)現(xiàn)。這可包括體現(xiàn)可操作來(lái)使一個(gè)或 多個(gè)數(shù)據(jù)處理裝置(例如,包括可編程處理器的信號(hào)處理設(shè)備)執(zhí)行所述操作的程序的至 少一個(gè)計(jì)算機(jī)可讀介質(zhì)。因此,程序?qū)崿F(xiàn)可從所公開(kāi)的方法、系統(tǒng)或裝置實(shí)現(xiàn),且裝置 實(shí)現(xiàn)可從所公開(kāi)的系統(tǒng)、計(jì)算機(jī)可讀介質(zhì)或方法實(shí)現(xiàn)。類(lèi)似地,方法實(shí)現(xiàn)可從所公開(kāi)的 系統(tǒng)、計(jì)算機(jī)可讀介質(zhì)或裝置實(shí)現(xiàn),且系統(tǒng)實(shí)現(xiàn)可從所公開(kāi)的方法、計(jì)算機(jī)可讀介質(zhì)或 裝置實(shí)現(xiàn)。例如,下面所公開(kāi)的實(shí)施方式可在各種系統(tǒng)和裝置中實(shí)現(xiàn),這些系統(tǒng)和裝置包 括但不限于專(zhuān)用數(shù)據(jù)處理裝置(例如,無(wú)線接入點(diǎn)、遠(yuǎn)程環(huán)境監(jiān)控器、路由器、交換 機(jī)、計(jì)算機(jī)系統(tǒng)部件、介質(zhì)訪問(wèn)單元)、移動(dòng)數(shù)據(jù)處理裝置(例如,無(wú)線客戶(hù)機(jī)、蜂窩電 話、個(gè)人數(shù)字助理(PDA)、移動(dòng)計(jì)算機(jī)、數(shù)據(jù)攝像機(jī))、通用數(shù)據(jù)處理裝置(例如,微型 計(jì)算機(jī)、服務(wù)器、主計(jì)算機(jī)、超級(jí)計(jì)算機(jī))或這些部件的組合。所述系統(tǒng)和技術(shù)可導(dǎo)致存儲(chǔ)在固態(tài)存儲(chǔ)器設(shè)備中的數(shù)據(jù)的增加的容錯(cuò)和可恢復(fù) 性(例如,在設(shè)備內(nèi)的部件或存儲(chǔ)器塊的故障的情況下)。固態(tài)存儲(chǔ)器設(shè)備的物理結(jié)構(gòu) 可有利地用于通過(guò)內(nèi)在地提供可與RAID設(shè)備和條帶類(lèi)似地被處理的結(jié)構(gòu)來(lái)減小在以前的RAID系統(tǒng)中使用的方法的復(fù)雜性。已經(jīng)在一些固態(tài)存儲(chǔ)器設(shè)備中使用的存儲(chǔ)控制器可適 合于使用現(xiàn)有的數(shù)據(jù)路徑來(lái)計(jì)算、存儲(chǔ)和使用奇偶值。已經(jīng)用于便于存儲(chǔ)器位置的均勻 損耗的技術(shù)也可被利用以消除對(duì)現(xiàn)有RAID系統(tǒng)所需要的遍及硬盤(pán)驅(qū)動(dòng)器的明確的工作負(fù) 荷分布和損耗均衡的需要。此外,因?yàn)楣虘B(tài)存儲(chǔ)器設(shè)備不是機(jī)械的、旋轉(zhuǎn)的設(shè)備,不需 要使設(shè)備同步(例如,使軸同步),如在一些基于硬盤(pán)的RAID實(shí)現(xiàn)中存在的同步。
下面在附圖和描述中闡述一個(gè)或多個(gè)實(shí)現(xiàn)的細(xì)節(jié)。從描述和附圖中以及從權(quán)利 要求中,其它特征、目的和優(yōu)點(diǎn)可能明顯。


圖1是示出容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備的例子的結(jié)構(gòu)圖。
圖2是示出容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備的另一例子的結(jié)構(gòu)圖。
圖3是示出包括多個(gè)固態(tài)存儲(chǔ)器設(shè)備的容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備的例子的結(jié)構(gòu)圖。
圖4示出對(duì)幾個(gè)固態(tài)存儲(chǔ)器設(shè)備的概念邏輯分組。
圖5A和5B是示出奇偶編碼器的例子的結(jié)構(gòu)圖。
圖6是示出配置成將數(shù)據(jù)寫(xiě)到物理存儲(chǔ)器的存儲(chǔ)控制器的例子的示意圖。
圖7是奇偶數(shù)據(jù)測(cè)試器的例子的結(jié)構(gòu)圖。
圖8是示出配置成從物理存儲(chǔ)器讀取數(shù)據(jù)的存儲(chǔ)控制器的例子的示意圖。
圖9是示出多個(gè)奇偶數(shù)據(jù)緩沖器的例子的結(jié)構(gòu)圖。
圖IOA和IOB示出用于將邏輯索引映射到物理索引的查找表的例子。
圖11是示出用于存儲(chǔ)數(shù)據(jù)和錯(cuò)誤恢復(fù)碼的過(guò)程的例子的流程圖。
圖12是示出用于檢測(cè)所存儲(chǔ)的數(shù)據(jù)中的錯(cuò)誤的過(guò)程的例子的流程圖。
圖13是示出用于恢復(fù)數(shù)據(jù)的過(guò)程的例子的流程圖。
不同附圖中的相似的符號(hào)表示相似的元件。
具體實(shí)施方式
這里所述的系統(tǒng)和技術(shù)可被實(shí)現(xiàn)為一個(gè)或多個(gè)設(shè)備,例如在固態(tài)存儲(chǔ)器設(shè)備 (例如,閃存設(shè)備、USB存儲(chǔ)設(shè)備、固態(tài)驅(qū)動(dòng)器)中的一個(gè)或多個(gè)集成電路(IC)設(shè)備。
圖1是示出容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備100的例子的結(jié)構(gòu)圖。通常,設(shè)備100是使用固 態(tài)存儲(chǔ)器部件和相關(guān)電路來(lái)提供用戶(hù)數(shù)據(jù)和其它數(shù)據(jù)的非易失性存儲(chǔ)的數(shù)據(jù)存儲(chǔ)設(shè)備。 可由設(shè)備100體現(xiàn)的固態(tài)存儲(chǔ)器設(shè)備的例子包括通常稱(chēng)為“閃存驅(qū)動(dòng)器”、“USB驅(qū)動(dòng) 器”、“拇指驅(qū)動(dòng)器”或固態(tài)盤(pán)驅(qū)動(dòng)器6SD驅(qū)動(dòng)器)的設(shè)備。設(shè)備100至少部分地通 過(guò)分配將被存儲(chǔ)在多個(gè)存儲(chǔ)器存儲(chǔ)子部件中的數(shù)據(jù)同時(shí)也計(jì)算和存儲(chǔ)描述所儲(chǔ)存的數(shù)據(jù) 的糾錯(cuò)(例如,奇偶)碼的方式來(lái)獲得其容錯(cuò)。因?yàn)楣虘B(tài)存儲(chǔ)器設(shè)備例如設(shè)備100由多 個(gè)固態(tài)(例如,閃存)存儲(chǔ)器設(shè)備子部件組成,獨(dú)立塊冗余陣列(RAIB)可在單個(gè)SSD內(nèi) 實(shí)現(xiàn),這與RAID系統(tǒng)的情況下的一組固態(tài)驅(qū)動(dòng)器相反。在存儲(chǔ)器存儲(chǔ)子部件的故障的 情況下,奇偶信息可作為恢復(fù)存儲(chǔ)在出故障的子部件中的數(shù)據(jù)的過(guò)程的一部分來(lái)使用。
設(shè)備100通過(guò)輸入端口 104通信地連接到主設(shè)備102(例如,計(jì)算機(jī))。在一些實(shí) 現(xiàn)中,輸入端口 104可為通用串行總線(USB)、串行ATA6ΑΤΑ)總線、并行ATA(PATA) 總線、FireWire或任何其它串行或并行數(shù)據(jù)總線。6
設(shè)備100包括存儲(chǔ)控制器110。存儲(chǔ)控制器110將主設(shè)備102通過(guò)接口連接到存 儲(chǔ)器設(shè)備120a-120f的集合,使得主設(shè)備102能夠使用存儲(chǔ)設(shè)備120a_120f用于數(shù)據(jù)的存 儲(chǔ)。存儲(chǔ)設(shè)備120a-120f中的每個(gè)是固態(tài)存儲(chǔ)器設(shè)備,其中每個(gè)存儲(chǔ)設(shè)備可包括物理存儲(chǔ) 器的一個(gè)或多個(gè)塊。在一些實(shí)施方式中,存儲(chǔ)設(shè)備120a-120f可為閃存設(shè)備、NAND設(shè) 備或其它適當(dāng)類(lèi)型的固態(tài)存儲(chǔ)器設(shè)備。存儲(chǔ)設(shè)備的額外例子將結(jié)合圖3和4在下面的描 述中被進(jìn)一步討論。在一些實(shí)現(xiàn)中,存儲(chǔ)控制器110可組織存儲(chǔ)設(shè)備120a-120f來(lái)通過(guò)接 口與主設(shè)備102連接作為一個(gè)或多個(gè)存儲(chǔ)設(shè)備。閃存設(shè)備120a_120f中的每個(gè)被細(xì)分成邏輯數(shù)據(jù)塊。在一些實(shí)現(xiàn)中,邏輯數(shù)據(jù) 塊代表在閃存設(shè)備120a-120f內(nèi)的固態(tài)存儲(chǔ)器的最小可擦除單元。每個(gè)塊被分成頁(yè)。在 一些實(shí)現(xiàn)中,頁(yè)可為可被讀取或?qū)懙綁K的存儲(chǔ)器的最小單元。在一些例子中,塊可具有 192個(gè)4KB頁(yè)。邏輯數(shù)據(jù)塊的例子將結(jié)合圖4在下面的描述中被討論。存儲(chǔ)控制器110包括處理器112、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 114、頁(yè)糾錯(cuò)碼 (ECC)模塊116和獨(dú)立塊冗余陣列(RAIB)編碼器212。處理器112從主設(shè)備102接收 數(shù)據(jù)并將數(shù)據(jù)緩存在DRAM 114中。在一些實(shí)現(xiàn)中,DRAM 114可在存儲(chǔ)控制器110的 外部。處理器112接著通過(guò)將數(shù)據(jù)劃分、分組或以另外方式加入到一個(gè)或多個(gè)邏輯數(shù)據(jù) 塊中、確定將邏輯數(shù)據(jù)塊存儲(chǔ)為邏輯塊分組的閃存設(shè)備120a-120f的子集并將數(shù)據(jù)儲(chǔ)存在 其中的方式來(lái)處理從主設(shè)備102接收的或從DRAM 114讀取的數(shù)據(jù)。邏輯分組的例子將 結(jié)合圖4在下面的描述中被進(jìn)一步討論。當(dāng)數(shù)據(jù)被發(fā)送到存儲(chǔ)設(shè)備120a-120f時(shí),數(shù)據(jù)通過(guò)頁(yè)ECC模塊116傳遞。頁(yè) ECC模塊116將糾錯(cuò)碼冗余添加到被發(fā)送到存儲(chǔ)設(shè)備120a-120f用于存儲(chǔ)的每頁(yè),并存儲(chǔ) ECC冗余連同每頁(yè)。在一些實(shí)現(xiàn)中,ECC代碼可用于檢測(cè)并修補(bǔ)相關(guān)頁(yè)內(nèi)的錯(cuò)誤。例 如 ,可在確定頁(yè)內(nèi)的哪些位被錯(cuò)誤地存儲(chǔ)或讀取以及恢復(fù)頁(yè)內(nèi)的最初存儲(chǔ)的數(shù)據(jù)的過(guò)程 中使用ECC代碼。在一些實(shí)現(xiàn)中,ECC可在字線層上完成。例如,對(duì)于單比特位單元(例如,單 層單元SLC),可能每字線有一頁(yè)。然而,在一些例子中,閃存設(shè)備可能能夠每單元存儲(chǔ) 兩位(例如,多層單元MLC)、三位(例如,三層單元TLC)或多位。這樣的設(shè)備可具 有能夠保存多頁(yè)的字線(例如,多行單元)。例如,一頁(yè)可相應(yīng)于每個(gè)單元的最低有效位 (LSB),而另一頁(yè)相應(yīng)于中心位,以及又一頁(yè)相應(yīng)于每個(gè)單元的最高有效位(MSB)。在 TLC或MLC的例子中,可使用頁(yè)層ECC或字線層ECC。除了 ECC代碼對(duì)儲(chǔ)存在存儲(chǔ)設(shè)備120a-120f上的單獨(dú)的頁(yè)提供保護(hù)以外,RAIB 編碼器118處理頁(yè)以產(chǎn)生邏輯塊分組的RAIB冗余代碼(例如,糾錯(cuò)碼奇偶數(shù)據(jù))??刂?器可接著使用存儲(chǔ)設(shè)備120a-120f中的兩個(gè)或多個(gè)來(lái)存儲(chǔ)由編碼器118所計(jì)算的用戶(hù)數(shù)據(jù) 和RAIB冗余。在一些實(shí)現(xiàn)中,在給定的時(shí)間,可能只有一個(gè)活動(dòng)的邏輯塊分組。數(shù)據(jù)可接著 被逐頁(yè)地寫(xiě),同時(shí)遍及邏輯塊分組的物理存儲(chǔ)器塊使頁(yè)交錯(cuò)。在一些實(shí)現(xiàn)中,如果在邏 輯塊分組內(nèi)的塊存在于不同的存儲(chǔ)設(shè)備120a-120f上,則可實(shí)現(xiàn)增加的吞吐量和/或可靠 性。一旦用戶(hù)數(shù)據(jù)的相應(yīng)頁(yè)被寫(xiě)到存儲(chǔ)設(shè)備120a-120f,RAIB奇偶性就是可用的并被控 制器寫(xiě)到存儲(chǔ)設(shè)備120a-120f的相應(yīng)頁(yè)上。在一些實(shí)現(xiàn)中,處理器112可在所有用戶(hù)頁(yè)被寫(xiě)到存儲(chǔ)設(shè)備120a_120f之前請(qǐng)求RAIB編碼器118將奇偶數(shù)據(jù)寫(xiě)到存儲(chǔ)設(shè)備120a-120f。在這樣的例子中,空的用戶(hù)頁(yè)可 被標(biāo)記為已用過(guò)的。例如,由于RAIB編碼器118將不能夠更新RAIB冗余,寫(xiě)到用過(guò) 的用戶(hù)頁(yè)將使RAIB糾錯(cuò)碼結(jié)構(gòu)無(wú)效,因?yàn)樵趦蓚€(gè)連續(xù)的塊擦除操作之間一頁(yè)只能被寫(xiě)一 次。
在一些實(shí)現(xiàn)中,處理器112或主設(shè)備102可處理數(shù)據(jù)以確定糾錯(cuò)數(shù)據(jù)和/或控制 糾錯(cuò)數(shù)據(jù)的分布和存儲(chǔ)。例如,處理器112或主設(shè)備102可仿效RAIB編碼器118的功 能以將遍及不同設(shè)備的邏輯數(shù)據(jù)塊分組成邏輯分組,并對(duì)每個(gè)這樣的邏輯分組引入糾錯(cuò)碼。
圖2是示出容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備200的另一例子的結(jié)構(gòu)圖。設(shè)備200經(jīng)由數(shù)據(jù) 總線104通過(guò)接口與主設(shè)備102連接,以為主設(shè)備102提供固態(tài)存儲(chǔ)器。
設(shè)備200包括存儲(chǔ)控制器210。存儲(chǔ)控制器210包括處理器112、DRAMl 14和 頁(yè)ECC模塊116。存儲(chǔ)控制器210還包括獨(dú)立塊冗余陣列(RAIB)編碼器212。
除了在本例中控制器將RAIB奇偶性存儲(chǔ)在專(zhuān)用的奇偶設(shè)備220a和220b中之 外,RAIB編碼器212執(zhí)行與圖1的RAIB編碼器118實(shí)質(zhì)上相同的功能。在一些實(shí)現(xiàn) 中,奇偶設(shè)備220a和220b是類(lèi)似于存儲(chǔ)設(shè)備120a-120f的存儲(chǔ)設(shè)備,其專(zhuān)供RAIB奇偶 數(shù)據(jù)的存儲(chǔ)之用。存儲(chǔ)在奇偶設(shè)備220a和220b上的RAIB奇偶數(shù)據(jù)可稍后用于恢復(fù)存 儲(chǔ)在存儲(chǔ)設(shè)備120a-120f上的數(shù)據(jù)。
圖3是示出包括多個(gè)儲(chǔ)存存儲(chǔ)器設(shè)備的容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備300的例子的結(jié)構(gòu) 圖。通常,在例如設(shè)備300等設(shè)備中的容錯(cuò)的概念是通過(guò)RAIB奇偶數(shù)據(jù)鏈接存儲(chǔ)在該設(shè) 備內(nèi)的不同存儲(chǔ)設(shè)備上的數(shù)據(jù)。在一些實(shí)現(xiàn)中,容錯(cuò)技術(shù)(例如,RAID)的前提是存儲(chǔ) 模塊故障可為獨(dú)立的。在容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備例如設(shè)備100、200和300的一些實(shí)現(xiàn)中, 通過(guò)將設(shè)備100、200和300內(nèi)的每個(gè)存儲(chǔ)設(shè)備模塊或每個(gè)芯片處理為能夠獨(dú)立于同一容 錯(cuò)固態(tài)存儲(chǔ)器設(shè)備內(nèi)的其它類(lèi)似設(shè)備出故障的設(shè)備來(lái)實(shí)現(xiàn)分離存儲(chǔ)設(shè)備的邏輯方法。
設(shè)備300包括存儲(chǔ)控制器310和存儲(chǔ)設(shè)備320a_320f的集合。存儲(chǔ)控制器310包 括處理器312和DRAM 314。在一些實(shí)現(xiàn)中,處理器312和DRAM可分別為處理器112 和DRAM 114。存儲(chǔ)控制器310還包括固態(tài)設(shè)備數(shù)據(jù)路徑316。在一些實(shí)現(xiàn)中,固態(tài)設(shè) 備數(shù)據(jù)路徑316可協(xié)調(diào)將用戶(hù)數(shù)據(jù)和恢復(fù)碼分布到存儲(chǔ)設(shè)備320a-320f中的存儲(chǔ)位置。
存儲(chǔ)設(shè)備320a-320f中的每個(gè)包括多個(gè)存儲(chǔ)子設(shè)備,例如在320a中的存儲(chǔ)子設(shè)備 322a-322d。在一些實(shí)現(xiàn)中,存儲(chǔ)子設(shè)備322a_322d中的每個(gè)可為單個(gè)集成存儲(chǔ)器電路或 芯片。存儲(chǔ)子設(shè)備中的每個(gè)進(jìn)一步細(xì)分成很多存儲(chǔ)器塊,例如存儲(chǔ)子設(shè)備32 中的存儲(chǔ) 器塊32^-3Md。在一些實(shí)現(xiàn)中,物理存儲(chǔ)塊可包括存儲(chǔ)器塊324a-324d的集合,其中存 儲(chǔ)器塊是單獨(dú)可尋址的且都在同一集成電路芯片上形成。在一些實(shí)現(xiàn)中,存儲(chǔ) 器塊3Ma-324d中的每個(gè)代表存儲(chǔ)子設(shè)備32 上的最小可擦除單元的分組,且存儲(chǔ)器塊 324a-324d中的每個(gè)包括很多代表存儲(chǔ)器塊內(nèi)的存儲(chǔ)器的最小可寫(xiě)單元的頁(yè)(未示出)。
在一些實(shí)現(xiàn)中,為了創(chuàng)建容錯(cuò)存儲(chǔ)系統(tǒng)的目的,可利用設(shè)備300的物理結(jié)構(gòu), 更具體地,利用存儲(chǔ)設(shè)備320a-320f。例如,因?yàn)殚W存通常不能在頁(yè)層上被蓋寫(xiě),一旦每 個(gè)塊被寫(xiě)入,整個(gè)塊就必須先被擦除,然后新數(shù)據(jù)才能寫(xiě)到其頁(yè)上,因此可能不需要考 慮一些塊被更改且RAIB奇偶性必須相應(yīng)地更新的使用情況。在另一例子中,設(shè)備300 的設(shè)計(jì)可能不需要如通常在RAID控制器中完成的適應(yīng)插入、刪除或替換包含用戶(hù)數(shù)據(jù)或RAIB奇偶數(shù)據(jù)的塊,因?yàn)橐坏┰O(shè)備300被制造,添加或移除存儲(chǔ)器設(shè)備可能就是不可能 的。
圖4示出幾個(gè)固態(tài)存儲(chǔ)器設(shè)備的概念邏輯分組400。通常,該分組代表在容錯(cuò)固 態(tài)存儲(chǔ)器設(shè)備內(nèi)的存儲(chǔ)器設(shè)備的邏輯布置,以示出提供容錯(cuò)的存儲(chǔ)器塊的邏輯分組的例 子。在一些實(shí)現(xiàn)中,分組400可分別由圖1、2和3的設(shè)備100、200和/或300使用。
分組400包括存儲(chǔ)設(shè)備410a、存儲(chǔ)設(shè)備410b、存儲(chǔ)設(shè)備410c和存儲(chǔ)設(shè)備410d。 在一些實(shí)現(xiàn)中,存儲(chǔ)設(shè)備410a-410d可為實(shí)質(zhì)上類(lèi)似于圖1的存儲(chǔ)設(shè)備120a_120f的 存儲(chǔ)設(shè)備。在一些實(shí)現(xiàn)中,存儲(chǔ)設(shè)備410a-410d中的一個(gè)或多個(gè)可為圖2的奇偶設(shè)備 220a-200bo
存儲(chǔ)設(shè)備410a_410d中的每個(gè)包括物理存儲(chǔ)器塊420的集合。物理存儲(chǔ)器塊420 以行和列的概念布置示出,其中每個(gè)存儲(chǔ)設(shè)備(例如,芯片)410a-410d由多個(gè)塊組成。 在一些實(shí)現(xiàn)中,存儲(chǔ)設(shè)備可用于代表并行化結(jié)構(gòu),例如單個(gè)儲(chǔ)存存儲(chǔ)器設(shè)備內(nèi)的可被同 時(shí)寫(xiě)入或讀取的存儲(chǔ)器單元的集合(例如,多平面設(shè)備)。例如,列430代表包括在存儲(chǔ) 設(shè)備410b中的物理存儲(chǔ)器塊。
物理存儲(chǔ)器塊420的行例如行440代表包括每個(gè)子設(shè)備內(nèi)的相應(yīng)塊(例如,第k 個(gè)塊)的存儲(chǔ)器的邏輯單元。在一些實(shí)現(xiàn)中,行440代表可被一起擦除的存儲(chǔ)器的邏輯 單元(或其子組,如可能是每設(shè)備有兩個(gè)面的情況)。
為了容錯(cuò)(例如,RAIB條帶或RAIB ECC碼字)的目的,行440還用作物理存 儲(chǔ)器塊420的邏輯塊分組。存儲(chǔ)控制器例如存儲(chǔ)控制器110、210或310使用行440來(lái)存 儲(chǔ)用戶(hù)數(shù)據(jù)和RAIB冗余。例如,用戶(hù)數(shù)據(jù)可分成相應(yīng)于物理存儲(chǔ)器設(shè)備420的尺寸和數(shù) 量的塊,物理存儲(chǔ)器設(shè)備420被指定用于行440內(nèi)的用戶(hù)數(shù)據(jù)的存儲(chǔ)。更具體地,用戶(hù) 數(shù)據(jù)可一次一頁(yè)地以交錯(cuò)的方式(例如,先寫(xiě)每個(gè)塊的第0頁(yè),然后寫(xiě)每個(gè)塊的第一頁(yè), 等等)被寫(xiě)到這些塊中。存儲(chǔ)控制器可通過(guò)對(duì)用戶(hù)頁(yè)執(zhí)行按位異或操作來(lái)計(jì)算RAIB奇 偶頁(yè)。存儲(chǔ)控制器可接著將RAIB奇偶頁(yè)存儲(chǔ)到行440內(nèi)的最后一個(gè)自由塊(例如,并 非必須的,如圖400上所示的最右邊的塊)上。
在一些實(shí)現(xiàn)中,容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備的設(shè)計(jì)可部分地基于數(shù)據(jù)可能由于物理設(shè) 備的故障而丟失的概念。例如,物理存儲(chǔ)器塊420之一可能發(fā)生故障,使它存儲(chǔ)的數(shù)據(jù) 被破壞或不可得到。在另一例子中,一個(gè)設(shè)備上的整個(gè)平面可能發(fā)生故障,從而使平面 內(nèi)的物理存儲(chǔ)器塊420不可讀。
然而,在一些實(shí)現(xiàn)中,假定同一設(shè)備內(nèi)的所有平面都是獨(dú)立的可能不是可行的 (例如,如果存儲(chǔ)設(shè)備410a發(fā)生故障,存儲(chǔ)設(shè)備410a內(nèi)的所有平面可能是不可讀的)。 為了適應(yīng)這樣的設(shè)計(jì)考慮,幾個(gè)RAIB條帶可在單行內(nèi)交錯(cuò),使得每個(gè)RAIB碼字不包含 來(lái)自單個(gè)存儲(chǔ)設(shè)備模塊上的兩個(gè)或多個(gè)平面的位。
例如,行440的邏輯組合包括來(lái)自每個(gè)存儲(chǔ)設(shè)備模塊的一個(gè)物理存儲(chǔ)器塊420。 屬于每行內(nèi)的單個(gè)RAIB條帶的物理存儲(chǔ)器塊420被顯示有類(lèi)似的填充模式。例如,物 理存儲(chǔ)器塊420a的集合代表屬于被交錯(cuò)到行440中的條帶的物理存儲(chǔ)器塊420,使得來(lái)自 存儲(chǔ)設(shè)備410a-410d中的任何一個(gè)的僅僅一個(gè)物理存儲(chǔ)器設(shè)備包括在單個(gè)RAIB條帶中。
在圖4的例子中,每行分成示有不同的填充模式的三個(gè)RAIB條帶,且RAIB條 帶內(nèi)的每個(gè)物理單元(例如,每個(gè)存儲(chǔ)設(shè)備410a-410d)從故障點(diǎn)的角度來(lái)看獨(dú)立于其它物理單元。更一般地,具有N個(gè)子設(shè)備的存儲(chǔ)設(shè)備可每行提供N個(gè)RAIB條帶。在本例中,存 儲(chǔ)設(shè)備410a-410d被指定用于用戶(hù)數(shù)據(jù)和恢復(fù)碼的存儲(chǔ)。在一些 實(shí)現(xiàn)中,存儲(chǔ)控制器可確定物理存儲(chǔ)器塊420中的哪些將用于RAIB奇偶性的存儲(chǔ)。在一 些實(shí)現(xiàn)中,多于一個(gè)的物理存儲(chǔ)器塊420可用于存儲(chǔ)單個(gè)RAIB條帶的奇偶性。例如, 使用恢復(fù)碼的一個(gè)塊的RAIB條帶可能通常能夠恢復(fù)在RAIB條帶內(nèi)的單個(gè)出故障的物理 存儲(chǔ)器塊中的數(shù)據(jù)。通過(guò)實(shí)現(xiàn)能夠恢復(fù)每RAIB條帶的兩個(gè)或多個(gè)故障塊的代碼,可恢 復(fù)相應(yīng)的兩個(gè)或多個(gè)壞的塊。在一些實(shí)現(xiàn)中,這個(gè)關(guān)系可稱(chēng)為RAIB碼率(coderate)。單個(gè)塊校正RAIB碼率
由(RAIB條帶中設(shè)備的數(shù)量-1)/(RAIB條帶中的設(shè)備的數(shù)量)給出。例如,對(duì)于具有八 個(gè)閃存設(shè)備的容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備,RAIB碼率將為(8-1)/8或7/8,這意味著整個(gè)設(shè)備 的大約12%將用于存儲(chǔ)恢復(fù)碼。在八個(gè)閃存設(shè)備中的兩個(gè)用于存儲(chǔ)RAIB奇偶性的例子 中,于是RAIB碼率將為(8-2)/8或3/4,這意味著整個(gè)設(shè)備的大約25%將用于存儲(chǔ)恢復(fù) 碼。在恢復(fù)碼的多于一個(gè)的塊被使用的實(shí)現(xiàn)中,Reed-Solomon(RS)碼可用于實(shí)現(xiàn)RAIB ECC。仍然參考圖4,在一些實(shí)現(xiàn)中,RAIB條帶可被選擇成與行440重合,使得RAIB 冗余占據(jù)單個(gè)平面(例如,子設(shè)備)以產(chǎn)生較高的RAIB碼率(例如,存儲(chǔ)的空間的較小 部分用于恢復(fù)碼),以由在同一設(shè)備上的多個(gè)平面發(fā)生故障的可能性而導(dǎo)致的減小的數(shù)據(jù) 可靠性保護(hù)為代價(jià)。例如,對(duì)于每個(gè)設(shè)備有16個(gè)閃存設(shè)備和兩個(gè)平面的容錯(cuò)固態(tài)存儲(chǔ)器 設(shè)備,這可產(chǎn)生31/32RAIB碼率系統(tǒng)。在一些實(shí)現(xiàn)中,RAIB碼率可響應(yīng)于用戶(hù)選擇來(lái) 配置。在一些實(shí)現(xiàn)中,有可能需要選擇RAIB條帶與由控制器所使用的邏輯塊分組重合 或是其子集,以實(shí)現(xiàn)存儲(chǔ)器管理(例如,損耗均衡,垃圾收集)。因?yàn)榭赡苄枰谌魏纬?員塊可被擦除之前使RAIB條帶內(nèi)的所有頁(yè)無(wú)效,在一些實(shí)現(xiàn)中,擦除RAIB條帶內(nèi)的一 些塊可能導(dǎo)致RAIB恢復(fù)碼保護(hù)的損失。如果RAIB條帶內(nèi)的所有設(shè)備屬于單個(gè)損耗均衡 單元,該功能可以是固有的。在一些實(shí)現(xiàn)中,存儲(chǔ)控制器可對(duì)RAIB條帶內(nèi)的相似數(shù)據(jù) (例如,具有熱點(diǎn)的熱點(diǎn)數(shù)據(jù)、具有冷點(diǎn)的冷點(diǎn)數(shù)據(jù))分組,并選擇相似的塊(例如,具 有實(shí)質(zhì)上類(lèi)似的循環(huán)特征的塊)以形成條帶。到目前為止描述的很多例子實(shí)現(xiàn)了單個(gè)塊校正RAIB。在一些實(shí)現(xiàn)中,可設(shè)計(jì)能 夠恢復(fù)RAIB條帶內(nèi)的多于一個(gè)的塊的RAIB ECC。例如,Reed-Solomon(RS)ECC碼可
用于對(duì)RAIB條帶內(nèi)的頁(yè)的第k個(gè)符號(hào)(例如,8位符號(hào))編碼。在一些實(shí)現(xiàn)中,使用產(chǎn) 生N維多項(xiàng)式的RS ECC碼可產(chǎn)生能夠校正2N個(gè)塊故障的RAIB條帶,假設(shè)出故障的塊 能夠被識(shí)別的話(例如,使用頁(yè)層ECC/字線層ECC)。圖5A是示出奇偶編碼器500的例子的結(jié)構(gòu)圖。在一些實(shí)現(xiàn)中,奇偶編碼器500 可包括在存儲(chǔ)控制器110、210或310中。通常,奇偶編碼器500對(duì)用戶(hù)數(shù)據(jù)的頁(yè)進(jìn)行異 或操作以產(chǎn)生一頁(yè)RAIB冗余碼。在本例中,奇偶編碼器500配置成產(chǎn)生用于確定單個(gè) 塊校正恢復(fù)碼的單個(gè)奇偶檢驗(yàn)碼。寫(xiě)路徑500包括頁(yè)ECC編碼器510。在一些實(shí)現(xiàn)中,頁(yè)ECC編碼器510可為圖 1的頁(yè)ECC編碼器116。頁(yè)ECC編碼器510處理用戶(hù)數(shù)據(jù)的頁(yè)以確定對(duì)頁(yè)層ECC的糾
錯(cuò)碼冗余。在一些實(shí)現(xiàn)中,ECC碼可用于校正用戶(hù)數(shù)據(jù)的單獨(dú)的頁(yè)內(nèi)的錯(cuò)誤。用戶(hù)數(shù)據(jù)和頁(yè)層ECC冗余位接著被存儲(chǔ)在存儲(chǔ)設(shè)備520的集合中。寫(xiě)路徑500維持存儲(chǔ)部分RAIB奇偶值的RAIB奇偶緩沖器530。例如,在邏輯塊分組的第一用戶(hù)頁(yè)被寫(xiě)入之前,奇偶緩沖器530被復(fù)位到零。當(dāng)用戶(hù)頁(yè)進(jìn)入時(shí),奇偶 緩沖器530通過(guò)在奇偶緩沖器530的內(nèi)容和進(jìn)入的頁(yè)之間執(zhí)行異或操作540而被更新。一 旦邏輯塊分組(例如,RAIB條帶)的最后一個(gè)用戶(hù)頁(yè)被寫(xiě)入,奇偶緩沖器530的內(nèi)容就 被寫(xiě)到存儲(chǔ)設(shè)備520。圖5B是示出另一奇偶編碼器501的例子的結(jié)構(gòu)圖。奇偶編碼器501實(shí)質(zhì)上類(lèi) 似于奇偶編碼器500,除了一旦邏輯塊分組的最后一個(gè)用戶(hù)頁(yè)被寫(xiě)入,奇偶緩沖器530的 內(nèi)容就被寫(xiě)到專(zhuān)用奇偶設(shè)備550。在一些實(shí)現(xiàn)中,可包括額外的奇偶設(shè)備550以預(yù)防多 個(gè)設(shè)備故障。也可實(shí)現(xiàn)相等或較大數(shù)量的額外的奇偶緩沖器530,其中每個(gè)奇偶緩沖器 530可使用額外的控制以與以前描述的類(lèi)似的方式被更新,以根據(jù)查找表和用戶(hù)頁(yè)索引來(lái) 啟用或禁用異或540操作。多個(gè)奇偶緩沖器的例子將在圖9的描述中被進(jìn)一步討論。查 找表和用戶(hù)頁(yè)索引的例子將結(jié)合圖IOa和IOb在下面的描述中被討論。圖6是示出配置成將數(shù)據(jù)寫(xiě)到物理存儲(chǔ)器的存儲(chǔ)控制器600的例子的示意圖。在 一些實(shí)現(xiàn)中,存儲(chǔ)控制器600可為圖1的存儲(chǔ)控制器110、圖2的存儲(chǔ)控制器210或圖3 的存儲(chǔ)控制器310。存儲(chǔ)控制器600包括雙倍數(shù)據(jù)率(DDR)存儲(chǔ)器605,其緩存從主設(shè)備(未示出) 發(fā)送的用戶(hù)數(shù)據(jù),用于存儲(chǔ)在物理存儲(chǔ)器設(shè)備610的集合中。緩存在DDR 605中的用戶(hù) 數(shù)據(jù)的頁(yè)被介質(zhì)CRC/LBA615處理。在一些實(shí)現(xiàn)中,介質(zhì)CRC/LBA 615可對(duì)用戶(hù)數(shù)據(jù) 的頁(yè)執(zhí)行循環(huán)冗余校驗(yàn)、邏輯塊尋址或兩者。用戶(hù)數(shù)據(jù)的頁(yè)在選擇器(switch) 620處被接收,選擇器620受控于通過(guò)奇偶介質(zhì) 傳輸信號(hào)625從主設(shè)備接收的信號(hào)。當(dāng)沒(méi)有這樣的信號(hào)存在時(shí),用戶(hù)頁(yè)被ECC 630處理 并存儲(chǔ)在物理存儲(chǔ)器設(shè)備610內(nèi)的邏輯塊分組中。從介質(zhì)CRC/LBA615出現(xiàn)的用戶(hù)數(shù)據(jù)的頁(yè)也在選擇器635處被接收,選擇器 635受控于通過(guò)奇偶緩沖復(fù)位信號(hào)640從主設(shè)備接收的信號(hào)。當(dāng)奇偶緩沖復(fù)位信號(hào)640存 在時(shí),用戶(hù)頁(yè)由存儲(chǔ)器保護(hù)奇偶(MPP)編碼器645處理,存儲(chǔ)器保護(hù)奇偶(MPP)編碼器 645確定CRC值以使數(shù)據(jù)被存儲(chǔ)在奇偶緩沖器650中。當(dāng)奇偶緩沖復(fù)位信號(hào)不存在時(shí), MPP編碼器接收進(jìn)入的用戶(hù)頁(yè)與奇偶緩沖器的內(nèi)容的異或(例如,表示新的運(yùn)行RAIB奇 偶性)。用戶(hù)頁(yè)和CRC接著被緩存在奇偶緩沖器650中。MPP檢查器模塊655使用CRC 值來(lái)確定當(dāng)數(shù)據(jù)存儲(chǔ)在奇偶緩沖器650中時(shí)它是否被破壞。如果MPP檢查器模塊655檢 測(cè)到比較值中的錯(cuò)誤,則奇偶緩沖誤差信號(hào)660被置位以通知主設(shè)備比較值中有問(wèn)題。奇偶介質(zhì)傳輸信號(hào)625也控制選擇器665。通常,當(dāng)邏輯塊分組的RAIB奇偶數(shù) 據(jù)準(zhǔn)備存儲(chǔ)在物理存儲(chǔ)器模塊610的集合中時(shí),奇偶介質(zhì)傳輸信號(hào)625被存儲(chǔ)器設(shè)備控制 器置位。當(dāng)邏輯塊分組中的所有用戶(hù)頁(yè)被處理了時(shí),控制器設(shè)置奇偶介質(zhì)傳輸信號(hào)625, 從而使選擇器665和620指示將被寫(xiě)到物理存儲(chǔ)器設(shè)備610上的最后的RAIB奇偶性。被分配到同一邏輯塊分組的隨后的用戶(hù)頁(yè)接著與以前緩存的值進(jìn)行異或操作。 在本例中,以前緩存的值在異或邏輯670中與隨后的用戶(hù)頁(yè)進(jìn)行異或操作以產(chǎn)生新的中 間RIAB奇偶值??刂破麽尫牌媾季彌_復(fù)位信號(hào)640,因此選擇器635指示運(yùn)行的RAIB奇偶性被MPP編碼器645處理,作為更新的運(yùn)行的RAIB奇偶性被緩存在奇偶緩沖器650 中,并被MPP檢查器模塊655檢查。這個(gè)循環(huán)對(duì)被分配給邏輯塊分組的每個(gè)隨后的用戶(hù)頁(yè)重復(fù)。
在一些實(shí)現(xiàn)中,RAIB奇偶數(shù)據(jù)可能描述不到整個(gè)邏輯塊分組。例如,響應(yīng)于掉 電操作,RAIB編碼器可能需要通過(guò)將相應(yīng)的奇偶緩沖器寫(xiě)到物理存儲(chǔ)器設(shè)備610來(lái)關(guān)閉 所有打開(kāi)的RAIB條帶(例如,RAIB關(guān)聯(lián)被認(rèn)為是打開(kāi)的,如果其奇偶緩沖區(qū)的內(nèi)容還 沒(méi)有被存儲(chǔ))。一旦奇偶緩沖器被寫(xiě)到介質(zhì),所有未寫(xiě)入的頁(yè)就被標(biāo)為無(wú)效的。允許主 設(shè)備將數(shù)據(jù)寫(xiě)到這些頁(yè)可能使RAIB奇偶更新操作成為必需的,這通常對(duì)閃存設(shè)備是不可 能的。
在一些實(shí)現(xiàn)中,這樣的限制可通過(guò)允許每RAIB條帶使用多于一個(gè)的奇偶頁(yè)來(lái)克 服。例如,RAIB編碼器可通過(guò)將奇偶緩沖器的當(dāng)前內(nèi)容存儲(chǔ)到下一可用的存儲(chǔ)器塊并將 未寫(xiě)的頁(yè)填充在RAIB條帶中來(lái)關(guān)閉打開(kāi)的RAIB條帶。一旦奇偶頁(yè)被寫(xiě)到介質(zhì),RAIB 條帶內(nèi)的所有有效頁(yè)的異或就為“0”頁(yè)。如果在以后的時(shí)刻,RAIB編碼器確定更多 的頁(yè)將被寫(xiě)到同一 RAIB條帶中,則不需要讀以前寫(xiě)的頁(yè)。每當(dāng)RAIB編碼器再次打開(kāi) RAIB奇偶關(guān)聯(lián)時(shí),它可寫(xiě)只在寫(xiě)會(huì)話期間積累的RAIB奇偶性。
例如,RAIB條帶可包括10頁(yè)(0-9)。RAIB編碼器可接收并處理三頁(yè)用戶(hù)數(shù) 據(jù),且那些頁(yè)可被存儲(chǔ)為第0、1和2頁(yè)。如果在此時(shí),RAIB編碼器被請(qǐng)求關(guān)閉RAIB關(guān) 聯(lián),同時(shí)條帶是不完整的(例如,第4-9頁(yè)沒(méi)有被寫(xiě)),則RAIB編碼器可將RAIB緩沖器 的當(dāng)前內(nèi)容(例如,第0-2頁(yè)的異或)存儲(chǔ)到條帶中的下一可用的頁(yè)(例如,第3頁(yè)), 并將其余的第4-9頁(yè)標(biāo)為無(wú)效的。因?yàn)?-3頁(yè)異或?yàn)椤?”頁(yè),當(dāng)重新開(kāi)始寫(xiě)操作時(shí), 不需要重新讀、異或以及緩存第0-2頁(yè);RAIB編碼器再一次在第4頁(yè)起開(kāi)始對(duì)新的頁(yè)編 碼以及將第4-8頁(yè)的相應(yīng)的RAIB奇偶性存儲(chǔ)在頁(yè)9中。因此,存儲(chǔ)在第9頁(yè)中的恢復(fù) 碼將可用于恢復(fù)第0-8頁(yè)的任一頁(yè)。
圖7是示出能夠執(zhí)行自測(cè)試功能的RAIB奇偶編碼器700的例子的結(jié)構(gòu)圖。在 一些實(shí)現(xiàn)中,自測(cè)試功能可用于使RAIB特征測(cè)試自動(dòng)化。通常,可只在存儲(chǔ)設(shè)備模塊 故障的情況下使用RAIB功能。因?yàn)檫@是通常罕見(jiàn)的情況,檢查RAIB結(jié)構(gòu)完整性的方法 被提供。在操作中,控制器讀單個(gè)RAIB條帶的所有頁(yè),同時(shí)在它們被讀取時(shí)對(duì)頁(yè)的內(nèi) 容進(jìn)行異或操作。正常期望將是奇偶緩沖器650將為全“0”頁(yè)。奇偶緩沖器650的內(nèi) 容由邏輯710檢查,邏輯710對(duì)頁(yè)中的所有位進(jìn)行異或操作,以確定測(cè)試寄存器720的內(nèi) 容是否會(huì)變成非零的,非零可指示可能歸因于存儲(chǔ)設(shè)備故障的所讀的頁(yè)中的錯(cuò)誤。
在存儲(chǔ)設(shè)備模塊故障的情況下,設(shè)備控制器可試圖恢復(fù)存儲(chǔ)在出故障的平面/ 設(shè)備上的數(shù)據(jù)。在一些實(shí)現(xiàn)中,這可通過(guò)讀RAIB條帶中的所有頁(yè)(排除失效的頁(yè))并使 用RAIB ECC來(lái)恢復(fù)位于有故障的設(shè)備上的數(shù)據(jù)來(lái)完成。更具體地,失效的頁(yè)可通過(guò)對(duì) RAIB條帶中的剩余頁(yè)進(jìn)行異或操作來(lái)恢復(fù)。在一些實(shí)現(xiàn)中,如果在恢復(fù)期間確定RAIB 條帶中的另一頁(yè)失效(例如,頁(yè)層ECC失效),則控制器可停止恢復(fù)操作,因?yàn)橹挥幸豁?yè) 可在單個(gè)頁(yè)RAIB恢復(fù)碼被使用時(shí)被恢復(fù)。在一些實(shí)現(xiàn)中,多頁(yè)恢復(fù)RAIB碼(例如, RS ECC)可用來(lái)恢復(fù)數(shù)量等于或少于多頁(yè)恢復(fù)碼所適應(yīng)的頁(yè)的數(shù)量的頁(yè)。
圖8是示出配置成從物理存儲(chǔ)器讀取數(shù)據(jù)的存儲(chǔ)控制器800的例子的示意圖。在 一些實(shí)現(xiàn)中,存儲(chǔ)控制器800可為在讀配置中的圖6的存儲(chǔ)控制器600。一般來(lái)說(shuō),用于從物理存儲(chǔ)器設(shè)備610讀和/或?qū)懙轿锢泶鎯?chǔ)器設(shè)備610的電路可為單獨(dú)的電路,因?yàn)?它們執(zhí)行不同的操作(例如,頁(yè)層ECC編碼器/解碼器可不同地操作)。實(shí)現(xiàn)用于使讀 和寫(xiě)數(shù)據(jù)路徑允許控制器同時(shí)從物理存儲(chǔ)器設(shè)備610的一個(gè)讀和/或?qū)懙轿锢泶鎯?chǔ)器設(shè)備 610的不同一個(gè)的單獨(dú)的電路也可能是優(yōu)先的。仍 然概況地講,雖然可始終對(duì)寫(xiě)操作啟用RAIB編碼器,RAIB解碼器可能只在 存儲(chǔ)器故障被檢測(cè)到的情況下被啟動(dòng)。因?yàn)榇鎯?chǔ)器故障通常罕見(jiàn),在控制器的壽命中這 些被認(rèn)為是例外。在存儲(chǔ)區(qū)故障被檢測(cè)到的一些實(shí)現(xiàn)中,控制器可停止接受來(lái)自主設(shè)備 的讀或?qū)憯?shù)據(jù)的請(qǐng)求,直到執(zhí)行了 RAIB數(shù)據(jù)恢復(fù)為止。在一些實(shí)施方式中,RAIB解碼 器邏輯可實(shí)質(zhì)上與RAIB編碼器的邏輯相同,且因此相同電路用于RAIB編碼和解碼(例 如,RAIB編碼器硬件可被重新使用來(lái)減小控制器尺寸)。在本例中,從物理存儲(chǔ)器設(shè)備610的集合中讀取在邏輯塊分組內(nèi)的所儲(chǔ)存的數(shù) 據(jù)的頁(yè)。頁(yè)層ECC 830檢查每頁(yè)以檢測(cè)可能存在的任何錯(cuò)誤。在沒(méi)有錯(cuò)誤被檢測(cè)到的頁(yè) 的例子中,主設(shè)備釋放奇偶DDR傳輸信號(hào)825,且頁(yè)通過(guò)選擇器805涌到介質(zhì)CRC/LBA 815并繼續(xù)到DDR 605,從DDR 605中頁(yè)變得對(duì)主設(shè)備可用。在錯(cuò)誤被檢測(cè)到的例子中,主設(shè)備設(shè)置奇偶DDR傳輸信號(hào)825,使得選擇器810 將無(wú)錯(cuò)誤的頁(yè)_包括RAIB冗余-引導(dǎo)到選擇器835。奇偶緩沖復(fù)位信號(hào)840使選擇器 830將第一個(gè)有效的頁(yè)引導(dǎo)到MPP編碼器845,且頁(yè)被緩存在奇偶緩沖器850中。MPP 檢查器模塊855檢查奇偶緩沖器的內(nèi)容,然后將它們傳遞回選擇器865和異或邏輯870。隨后,主設(shè)備釋放奇偶緩沖復(fù)位信號(hào),使進(jìn)入的邏輯塊分組的無(wú)錯(cuò)誤頁(yè)與奇偶 緩沖器850的內(nèi)容進(jìn)行異或操作。該過(guò)程對(duì)邏輯塊分組中的每個(gè)無(wú)錯(cuò)誤頁(yè)重復(fù)。在此 時(shí),奇偶緩沖器850的內(nèi)容代表存儲(chǔ)在出故障的存儲(chǔ)器塊上的頁(yè)。控制器接著設(shè)置奇偶DDR傳輸信號(hào)825。信號(hào)825使選擇器865和805將所恢 復(fù)的數(shù)據(jù)引導(dǎo)到主設(shè)備。圖9是示出多奇偶數(shù)據(jù)緩沖器900的例子的結(jié)構(gòu)圖。在一些實(shí)現(xiàn)中,多奇偶數(shù) 據(jù)緩沖器900可包括在存儲(chǔ)控制器例如存儲(chǔ)控制器110、210和310中。在一些實(shí)現(xiàn)中, 奇偶數(shù)據(jù)緩沖器可為圖6的奇偶緩沖器650。在一些實(shí)現(xiàn)中,容錯(cuò)固態(tài)存儲(chǔ)器設(shè)備可支持 同時(shí)活動(dòng)(例如,被部分地讀或?qū)?的多個(gè)邏輯塊分組。這樣的實(shí)現(xiàn)可使用多個(gè)奇偶緩 沖器,對(duì)于每個(gè)同時(shí)活動(dòng)的邏輯塊分組,一個(gè)奇偶緩沖器在使用中。多奇偶數(shù)據(jù)緩沖器900包括RAIB奇偶數(shù)據(jù)緩沖器910a-910g的集合。在一些實(shí) 現(xiàn)中,RAIB奇偶數(shù)據(jù)緩沖器910a-910g中的每個(gè)可各自對(duì)很多活動(dòng)的邏輯塊分組保存單 獨(dú)的運(yùn)行奇偶值。選擇器920配置成響應(yīng)于寫(xiě)奇偶緩沖選擇信號(hào)930將MPP檢查器模塊 645所檢查的比較數(shù)據(jù)選擇性地發(fā)送到RAIB奇偶緩沖器910a-910g中的一個(gè)。在一些實(shí) 現(xiàn)中,信號(hào)930可由主設(shè)備或由包括900的存儲(chǔ)控制器的其它部件發(fā)送。多RAIB奇偶數(shù)據(jù)緩沖器900還包括選擇器940,其配置成響應(yīng)于讀奇偶緩沖選 擇信號(hào)950將緩存的運(yùn)行奇偶數(shù)據(jù)從緩沖器910a-910g中的選定的一個(gè)選擇性地發(fā)送到 MPP檢查器模塊655。在一些實(shí)現(xiàn)中,信號(hào)950可由存儲(chǔ)控制器發(fā)送。注意,在一些實(shí) 現(xiàn)中,緩沖器900包括對(duì)選擇器920、940的單緩沖選擇輸入;在這種情況下,選擇信號(hào) 930、950合并到單緩沖選擇信號(hào)中。在一些實(shí)現(xiàn)中,單奇偶數(shù)據(jù)緩沖器910a_910g可為雙端口存儲(chǔ)器,其中N個(gè)緩沖器可提供多達(dá)N個(gè)活動(dòng)分組。例如,可實(shí)現(xiàn)六個(gè)雙端口存儲(chǔ)器以一次提供多達(dá)六個(gè)活動(dòng) 邏輯塊分組。在其它實(shí)現(xiàn)中,單奇偶數(shù)據(jù)緩沖器910a_910g可為單端口存儲(chǔ)器,其中通過(guò)讀/ 寫(xiě)2N來(lái)使讀和寫(xiě)到存儲(chǔ)器中的操作交錯(cuò),其中,N是要在單個(gè)時(shí)鐘循環(huán)中處理的比特位 的數(shù)量。例如,可實(shí)現(xiàn)12個(gè)單端口存儲(chǔ)器以一次提供多達(dá)十二個(gè)活動(dòng)邏輯塊分組。單 端口存儲(chǔ)器設(shè)備的這樣的實(shí)現(xiàn)可實(shí)現(xiàn)較大的吞吐量(例如,一個(gè)緩沖器可被寫(xiě)入,而另 一個(gè)緩沖器可被同時(shí)讀)。圖IOA和IOB示出用于將邏輯索引映射到物理索引的查找表1000的例子。在一 些實(shí)現(xiàn)中,存儲(chǔ)控制器可結(jié)合多奇偶數(shù)據(jù)緩沖器900來(lái)使用查找表1000。參考圖10A, 表1000在默認(rèn)的映射配置中被示出(例如,在復(fù)位操作之后)。邏輯緩沖器位置的邏輯索 引范圍1010直接映射到多奇偶數(shù)據(jù)緩沖器900中的物理緩沖設(shè)備的物理索引范圍1020。存儲(chǔ)控制器能夠處理“N”個(gè)邏輯緩沖器(例如,在本例中“N”等于六),且第“N+1”個(gè)物理緩沖器用作“備用”緩沖器。在一些例子中,存儲(chǔ)控制器提供奇偶緩 沖活動(dòng)信號(hào)以選擇邏輯緩沖器位置。范圍1030顯示可由存儲(chǔ)控制器使用的邏輯索引的范 圍。相應(yīng)于活動(dòng)邏輯緩沖器的物理緩沖器被查找,并例如通過(guò)設(shè)置奇偶緩沖讀選擇信號(hào) 950被啟動(dòng)。存儲(chǔ)控制器還可將奇偶緩沖寫(xiě)選擇設(shè)置到相應(yīng)于備用邏輯緩沖器的物理緩沖 器(例如,在本例中第六個(gè)物理緩沖器)。在一些實(shí)現(xiàn)中,當(dāng)對(duì)選定的頁(yè)的處理完成時(shí),查找表1000可通過(guò)更新相應(yīng)于被 分配到備用緩沖器的選定邏輯地址的緩沖器來(lái)更改,且相應(yīng)于邏輯地址“N+1”的緩沖 器可被映射到由奇偶緩沖讀選擇信號(hào)所給出的物理地址。在一些實(shí)現(xiàn)中,查找表1000可 能不需要響應(yīng)于奇偶介質(zhì)傳輸信號(hào)625或奇偶DDR傳輸信號(hào)825而被更新。在一些實(shí)現(xiàn)中,當(dāng)接收到復(fù)位信號(hào)時(shí),可通過(guò)將奇偶緩沖讀選擇信號(hào)950設(shè)置 到相應(yīng)于邏輯緩沖器N+1的物理緩沖器來(lái)更新查找表1000,且奇偶緩沖寫(xiě)選擇信號(hào)930 可被設(shè)置到由奇偶緩沖活動(dòng)信號(hào)指示的邏輯緩沖器位置。例如,當(dāng)使用前面所述的技術(shù) 時(shí),存儲(chǔ)控制器可設(shè)置奇偶緩沖活動(dòng)信號(hào)等于2,奇偶緩沖讀選擇信號(hào)可被設(shè)置到2,且 奇偶緩沖寫(xiě)選擇信號(hào)可被設(shè)置到6。以這種方式更新的查找表1000在圖IOb中被示出。 在一些實(shí)現(xiàn)中,查找表1000可在寄存器中實(shí)現(xiàn),以減小對(duì)表1000中存儲(chǔ)的值的存儲(chǔ)器保 護(hù)。圖11是示出用于存儲(chǔ)數(shù)據(jù)和RIAB奇偶性的過(guò)程1100的例子的流程圖。在一 些實(shí)現(xiàn)中,過(guò)程1100可由存儲(chǔ)控制器110、210和310使用。在1102,接收待被存儲(chǔ)在包括多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備(例如,存儲(chǔ)數(shù)據(jù)設(shè)備 320a-320f)的固態(tài)存儲(chǔ)器中的數(shù)據(jù)(例如,在存儲(chǔ)控制器110處從主設(shè)備102)。在1104, 所接收的數(shù)據(jù)分成相應(yīng)于固態(tài)存儲(chǔ)器的邏輯數(shù)據(jù)塊。例如,邏輯數(shù)據(jù)塊可與存儲(chǔ)數(shù)據(jù)的 物理數(shù)據(jù)塊(例如,存儲(chǔ)器塊324a-324d)相同。在1106,邏輯數(shù)據(jù)塊被分配到至少一個(gè)塊分組,其包括來(lái)自多個(gè)固態(tài)物理存儲(chǔ) 器設(shè)備(例如,行440)的每個(gè)的至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊。在1108,讀取存儲(chǔ)在被分配 到邏輯塊分組的塊中的數(shù)據(jù)。在1110,如果所讀取的塊是從邏輯塊分組讀取的第一邏輯數(shù)據(jù)塊,則在1112, 該邏輯數(shù)據(jù)塊作為緩存值被緩存(例如,緩存在奇偶緩沖器650中)。接著在1114,邏輯數(shù)據(jù)塊被存儲(chǔ)(例如,存儲(chǔ)在相應(yīng)于邏輯塊分組的邏輯數(shù)據(jù)塊的物理存儲(chǔ)器塊中)。然 而,如果在1110,所讀的塊不是從邏輯塊分組讀取的第一邏輯數(shù)據(jù)塊,則在1116,該邏 輯數(shù)據(jù)塊與緩存值異或(例如,通過(guò)異或邏輯670)以產(chǎn)生運(yùn)行的RAIB奇偶性。運(yùn)行 RAIB奇偶性接著在1118作為緩存值被緩存,且邏輯數(shù)據(jù)塊存儲(chǔ)在邏輯塊分組的物理數(shù) 據(jù)存儲(chǔ)塊中,物理數(shù)據(jù)存儲(chǔ)塊被指定用于在1114將持久數(shù)據(jù)存儲(chǔ)在邏輯塊分組內(nèi)。在一 些實(shí)現(xiàn)中,多個(gè)緩沖器(例如,多奇偶數(shù)據(jù)緩沖器900)可用于緩存運(yùn)行RAIB奇偶性。
如果在1120確定該塊不是被分配到邏輯塊分組的最后一個(gè)邏輯數(shù)據(jù)塊,則在 1122從邏輯塊分組選擇另一個(gè)塊,并在1108被讀取該塊。如果在1120該塊被確定為邏 輯塊分組的最后一個(gè)塊,則在1124確定相應(yīng)于存儲(chǔ)在邏輯塊分組中的持久數(shù)據(jù)的RAIB 奇偶性。在一些實(shí)現(xiàn)中,RAIB奇偶性可為最后一個(gè)緩存的RAIB奇偶性。在1126,相 應(yīng)的代碼存儲(chǔ)在邏輯塊分組的至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊中,物理數(shù)據(jù)存儲(chǔ)塊被指定用于 存儲(chǔ)相應(yīng)于存儲(chǔ)在邏輯塊分組中的持久數(shù)據(jù)的代碼。在一些實(shí)現(xiàn)中,相應(yīng)的代碼可為恢 復(fù)碼(例如,奇偶碼、RAIB奇偶數(shù)據(jù))。圖12是示出用于檢測(cè)所存儲(chǔ)的數(shù)據(jù)中的錯(cuò)誤的過(guò)程1200的例子的流程圖。在 一些實(shí)現(xiàn)中,過(guò)程1200可由存儲(chǔ)控制器110、210和310使用。在1202,存儲(chǔ)在固態(tài)物 理存儲(chǔ)器(例如,存儲(chǔ)數(shù)據(jù)設(shè)備320a-320f)內(nèi)的邏輯塊分組的邏輯數(shù)據(jù)塊中的數(shù)據(jù)被讀 取(例如,通過(guò)存儲(chǔ)控制器110來(lái)讀取)。如果在1204確定邏輯數(shù)據(jù)塊是從邏輯塊分組讀取的第一個(gè)塊,則邏輯數(shù)據(jù)塊在 1206作為RAIB奇偶性被緩存(例如,緩存在奇偶數(shù)據(jù)緩沖器650中)。然而,如果在 1204該塊被確定為不是從邏輯塊分組讀取的第一個(gè)塊,則該塊在1208與運(yùn)行RAIB奇偶 性異或(例如,通過(guò)異或邏輯670進(jìn)行比較),并在1210作為運(yùn)行RAIB奇偶性被緩存。 在一些實(shí)現(xiàn)中,多個(gè)緩沖器(例如,多奇偶數(shù)據(jù)緩沖器900)可用于緩存運(yùn)行RAIB奇偶 性。在1212確定該塊是否是從邏輯塊分組讀取的最后一個(gè)塊。如果不是,則邏輯 塊分組的下一個(gè)塊在1214被選擇并在1202被讀取。如果該塊是邏輯塊分組的最后一個(gè) 塊,則在1216運(yùn)行RAIB奇偶性被檢查,以確定它是否等于預(yù)定值(例如,零)。如果 在1216運(yùn)行RAIB奇偶性被確定為等于預(yù)定值,則在1220沒(méi)有錯(cuò)誤被檢測(cè)到。然而, 如果在1216運(yùn)行RAIB奇偶性不同于預(yù)定值,則錯(cuò)誤在所讀取的邏輯塊中被檢測(cè)到,且 所檢測(cè)的錯(cuò)誤的通知在1218被給出。在一些實(shí)現(xiàn)中,邏輯塊分組內(nèi)的錯(cuò)誤的檢測(cè)可用于 觸發(fā)用于恢復(fù)錯(cuò)誤數(shù)據(jù)的過(guò)程。圖13是示出用于恢復(fù)數(shù)據(jù)的過(guò)程1300的例子的流程圖。在一些實(shí)現(xiàn)中,過(guò)程 1300可由存儲(chǔ)控制器110、210和310使用。在1302,選擇存儲(chǔ)不可得到的或錯(cuò)誤的數(shù)據(jù)的物理數(shù)據(jù)塊(例如,通過(guò)存儲(chǔ)控 制器110來(lái)選擇)。在1304,識(shí)別相應(yīng)于選定的物理數(shù)據(jù)存儲(chǔ)塊的邏輯數(shù)據(jù)塊。在1306, 識(shí)別相應(yīng)于選定的物理數(shù)據(jù)存儲(chǔ)塊的邏輯數(shù)據(jù)塊被分配到的邏輯塊分組。在1308,讀取 存儲(chǔ)在所識(shí)別的邏輯塊分組中的持久數(shù)據(jù),包括相應(yīng)的代碼(例如,恢復(fù)碼、奇偶碼、 RAIB奇偶數(shù)據(jù))。如果在1310確定所讀取的邏輯數(shù)據(jù)塊是從邏輯塊分組讀取的第一個(gè)塊,則該邏 輯數(shù)據(jù)塊在1312作為運(yùn)行RAIB奇偶性被緩存(例如,緩存在緩沖器650中)。然而,如果在1310邏輯數(shù)據(jù)塊被確定為除了第一個(gè)塊以外的塊,則在1314,該邏輯數(shù)據(jù)塊與緩 存的運(yùn)行RAIB奇偶性異或(例如,通過(guò)異或邏輯670進(jìn)行比較)。因而產(chǎn)生的值接著在 1316作為運(yùn)行RAIB奇偶性被緩存。在一些實(shí)現(xiàn)中,多個(gè)緩沖器(例如,多奇偶數(shù)據(jù)緩 沖器900)可用于緩存運(yùn)行RAIB奇偶性。如果在1318邏輯數(shù)據(jù)塊被確定為不是邏輯塊分組的最后一個(gè)塊,則在1320選擇 邏輯塊分組的另一個(gè)塊。如果在1322選定的塊相應(yīng)于所識(shí)別的物理塊(例如,在1302 識(shí)別的塊),則在 1320選擇另一個(gè)塊。例如,如果最新選擇的塊是被識(shí)別為存儲(chǔ)破壞的 或不可得到的數(shù)據(jù)的塊,則忽略該塊并選擇另一個(gè)塊。否則,在1308讀取選定的邏輯數(shù) 據(jù)塊。然而,如果在1318邏輯數(shù)據(jù)塊被確定為邏輯塊分組的最后一個(gè)塊,則在1324確 定相應(yīng)于邏輯塊分組的代碼。在一些實(shí)現(xiàn)中,相應(yīng)的代碼可為最后緩存的運(yùn)行RAIB奇 偶性。例如,在1316緩存的最終奇偶性可用作相應(yīng)于邏輯塊分組的代碼。例如,如果 第一頁(yè)存儲(chǔ)二進(jìn)制值01101101,而第二頁(yè)存儲(chǔ)二進(jìn)制值11010100,則這兩頁(yè)的異或可為 10111001并被存儲(chǔ)為這兩頁(yè)的奇偶性。如果第二頁(yè)變得不可讀,則其內(nèi)容可通過(guò)對(duì)RAIB 奇偶性10111001和第一頁(yè)值01101101進(jìn)行異或操作來(lái)恢復(fù),以給出11010100的值,該 值是最初被存儲(chǔ)為第二頁(yè)的值。在一些實(shí)現(xiàn)中,相應(yīng)的代碼可為當(dāng)與最后緩存的RAIB奇偶性合并時(shí)將導(dǎo)致預(yù)定 值(例如,零)的值。在簡(jiǎn)化的例子中,8比特位頁(yè)大小可緩存從0到255的值,且對(duì)于 為200的最終值(例如,在1316被緩存)和零的預(yù)定值,相應(yīng)的代碼可被確定為56 (例 如,二進(jìn)制200+二進(jìn)制56回繞等于零值)。在1326,(例如,向主設(shè)備)提供相應(yīng)的 代碼作為存儲(chǔ)在選定的物理數(shù)據(jù)存儲(chǔ)塊中的數(shù)據(jù)。繼續(xù)前面的例子,值56可為最初存儲(chǔ) 在損壞的塊中的值,并可被提供給主設(shè)備以恢復(fù)在損壞的塊中丟失的數(shù)據(jù)。上面詳細(xì)描述了新的實(shí)施方式,且各種更改是可能的。所公開(kāi)的主題_包括在 本說(shuō)明書(shū)中描述的功能操作-可在電路、計(jì)算機(jī)硬件、固件、軟件中或在它們的組合例 如在本說(shuō)明書(shū)中公開(kāi)的結(jié)構(gòu)裝置及其結(jié)構(gòu)等效形式中實(shí)現(xiàn),可能包括可操作來(lái)使一個(gè)或 多個(gè)數(shù)據(jù)處理裝置執(zhí)行所述操作的程序(例如,在計(jì)算機(jī)可讀介質(zhì)中編碼的程序,計(jì)算 機(jī)可讀介質(zhì)可為存儲(chǔ)器設(shè)備、存儲(chǔ)設(shè)備、機(jī)器可讀存儲(chǔ)基片或其它物理、機(jī)器可讀介質(zhì) 或它們的一個(gè)或多個(gè)的組合)。術(shù)語(yǔ)“數(shù)據(jù)處理裝置”包括用于處理數(shù)據(jù)的所有裝置、設(shè)備和系統(tǒng),作為例子 包括可編程處理器、計(jì)算機(jī)或多個(gè)處理器或計(jì)算機(jī)。該裝置除了硬件以外還可包括為正 被討論的計(jì)算機(jī)程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如構(gòu)成處理器固件、協(xié)議堆棧、數(shù)據(jù)庫(kù)管 理系統(tǒng)、操作系統(tǒng)或它們的一個(gè)或多個(gè)的組合的代碼。程序(也稱(chēng)為計(jì)算機(jī)程序、軟件、軟件應(yīng)用、腳本或代碼)可用任何形式的編程 語(yǔ)言-包括編譯或解釋語(yǔ)言或說(shuō)明性或過(guò)程語(yǔ)言-來(lái)編寫(xiě),且它可配置在任何形式中,包 括作為獨(dú)立的程序或作為模塊、部件、子例程或適合于用在計(jì)算環(huán)境中的其它單元。程 序可存儲(chǔ)在電子存儲(chǔ)器中、磁或光記錄介質(zhì)上、或另一適當(dāng)?shù)挠行畏菚簳r(shí)計(jì)算機(jī)可讀介 質(zhì)上。程序不一定相應(yīng)于文件系統(tǒng)中的文件。程序可存儲(chǔ)在保存其它程序或數(shù)據(jù)(例 如,存儲(chǔ)在標(biāo)記語(yǔ)言文件中的一個(gè)或多個(gè)腳本)的文件的一部分中、專(zhuān)用于正被討論的 程序的單個(gè)文件中或多個(gè)協(xié)調(diào)的文件(例如,存儲(chǔ)一個(gè)或多個(gè)模塊、子程序或代碼的部分的文件)中。程序可部署成一個(gè)計(jì)算機(jī)上或在位于一個(gè)地點(diǎn)或分布在多個(gè)地點(diǎn)中并被 通信網(wǎng)絡(luò)互連的多個(gè)計(jì)算機(jī)上執(zhí)行。雖然本說(shuō)明書(shū)包括很多細(xì)節(jié),這些不應(yīng)被解釋為對(duì)可被主張的內(nèi)容的范圍的限 制,而更確切地作為可能對(duì)特定的實(shí)施方式特有的特征的描述。在本說(shuō)明書(shū)中在不同的 實(shí)施方式的背景下描述的某些特征也可結(jié)合單個(gè)實(shí)施方式實(shí)現(xiàn)。反過(guò)來(lái),在單個(gè)實(shí)施方 式的背景下描述的各種特征也可在多個(gè)實(shí)施方式中單獨(dú)地或以任何適當(dāng)?shù)淖咏M合實(shí)現(xiàn)。 而且,雖然特征在上面被描述為在某些實(shí)施方式中起作用且甚至最初照此被主張,來(lái)自 所主張的組合的一個(gè)或多個(gè)特征在一些情況下可從該組合刪除,且所主張的組合可針對(duì) 于子組合或子組合的變形。
類(lèi)似地,雖然以特定的順序在附圖中描述了操作,這不應(yīng)被理解為要求這樣的 操作以所示的特定順序或以連續(xù)的順序被執(zhí)行,或所有示出的操作都被執(zhí)行來(lái)實(shí)現(xiàn)期望 的結(jié)果。在某些情況下,多任務(wù)化和并行處理可能是有利的。而且,上述實(shí)施方式中的 各種部件的分離不應(yīng)被理解為在所有實(shí)施方式中都需要這樣的分離。其它實(shí)施方式落在下面的權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種方法,包括在存儲(chǔ)控制器處接收待存儲(chǔ)在包括多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備的固態(tài)存儲(chǔ)器中的數(shù)據(jù);通過(guò)所述存儲(chǔ)控制器將所接收的數(shù)據(jù)分成相應(yīng)于所述固態(tài)存儲(chǔ)器的邏輯數(shù)據(jù)塊; 通過(guò)所述存儲(chǔ)控制器將所述邏輯數(shù)據(jù)塊分配到邏輯塊分組,所述邏輯塊分組包括來(lái) 自所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的兩個(gè)或多個(gè)的至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊;將所述邏輯數(shù)據(jù)塊存儲(chǔ)在所述邏輯塊分組的、被指定用于將持久數(shù)據(jù)存儲(chǔ)在所述邏 輯塊分組內(nèi)的物理數(shù)據(jù)存儲(chǔ)塊中;通過(guò)所述存儲(chǔ)控制器確定相應(yīng)于存儲(chǔ)在所述邏輯塊分組中的所述持久數(shù)據(jù)的代碼;以及通過(guò)所述存儲(chǔ)控制器將所述代碼存儲(chǔ)在至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊中,所述至少一個(gè) 物理數(shù)據(jù)存儲(chǔ)塊被指定用于存儲(chǔ)相應(yīng)于存儲(chǔ)在所述邏輯塊分組中的所述持久數(shù)據(jù)的所述 代碼。
2.如權(quán)利要求1所述的方法,其中所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備是閃存設(shè)備。
3.如權(quán)利要求1所述的方法,其中所述確定是邏輯異或操作。
4.如權(quán)利要求1所述的方法,其中所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備和所述存儲(chǔ)控制器包 括單個(gè)存儲(chǔ)器存儲(chǔ)設(shè)備,且所述邏輯塊分組對(duì)應(yīng)于由所述存儲(chǔ)控制器所使用的邏輯塊分 組,以實(shí)現(xiàn)在所述單個(gè)存儲(chǔ)器存儲(chǔ)設(shè)備中的存儲(chǔ)器管理。
5.如權(quán)利要求1所述的方法,其中所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的每個(gè)包括包含至 少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊的單個(gè)集成電路芯片,其中物理數(shù)據(jù)存儲(chǔ)塊包括在所述集成電路 芯片上形成的固態(tài)存儲(chǔ)器的塊以及連同在同一集成電路芯片上形成的固態(tài)存儲(chǔ)器的其它 塊一起是單獨(dú)可尋址的。
6.如權(quán)利要求1所述的方法,還包括通過(guò)識(shí)別相應(yīng)于選定的物理數(shù)據(jù)存儲(chǔ)塊的邏輯數(shù)據(jù)塊被分配給的邏輯塊分組、讀取 存儲(chǔ)在所識(shí)別的邏輯塊分組中的持久數(shù)據(jù)和代碼、將所述代碼與不同于存儲(chǔ)在所述選定 的物理數(shù)據(jù)存儲(chǔ)塊中的持久數(shù)據(jù)的所讀取的持久數(shù)據(jù)進(jìn)行比較,來(lái)由所述存儲(chǔ)控制器恢 復(fù)存儲(chǔ)在所述選定的物理數(shù)據(jù)存儲(chǔ)塊中的持久數(shù)據(jù)。
7.如權(quán)利要求6所述的方法,其中所述比較是邏輯異或操作。
8.如權(quán)利要求1所述的方法,其中確定所述代碼包括在緩沖存儲(chǔ)器中存儲(chǔ)所述邏輯塊分組的第一個(gè)邏輯數(shù)據(jù)塊作為緩存值; 對(duì)于所述邏輯塊分組中的剩余邏輯數(shù)據(jù)塊中的每個(gè),通過(guò)所述存儲(chǔ)控制器比較所述剩余邏輯數(shù)據(jù)塊與所述緩存值以確定比較值,以及 將所述比較值作為緩存值存儲(chǔ)在所述緩沖存儲(chǔ)器中;以及 通過(guò)所述存儲(chǔ)控制器確定當(dāng)與所述緩存值比較時(shí)導(dǎo)致預(yù)定值的值。
9.如權(quán)利要求9所述的方法,其中所述緩沖存儲(chǔ)器包括多個(gè)緩沖存儲(chǔ)器,且所述緩沖 存儲(chǔ)器中的至少一個(gè)包括單端口存儲(chǔ)器。
10.—種用于存儲(chǔ)數(shù)據(jù)的電子設(shè)備,包括 輸入端口,其配置成接收數(shù)據(jù);比較緩沖存儲(chǔ)器,其保存比較值;比較電路,其比較所述數(shù)據(jù)被劃分到的多個(gè)邏輯塊中的每個(gè)與所述比較值來(lái)確定新 的比較值以保存在所述比較緩沖存儲(chǔ)器中;以及固態(tài)數(shù)據(jù)儲(chǔ)存存儲(chǔ)器,其存儲(chǔ)所述邏輯塊和相應(yīng)于所述比較值的恢復(fù)碼,其中通過(guò) 合并來(lái)自所存儲(chǔ)的邏輯塊的一個(gè)或多個(gè)未被選擇的邏輯塊的數(shù)據(jù)與所述恢復(fù)碼,來(lái)自所 存儲(chǔ)的邏輯塊中的至少一個(gè)邏輯塊的數(shù)據(jù)是可恢復(fù)的。
11.如權(quán)利要求10所述的設(shè)備,其中所述固態(tài)數(shù)據(jù)儲(chǔ)存存儲(chǔ)器是閃存。
12.如權(quán)利要求10所述的設(shè)備,其中所述比較電路執(zhí)行邏輯異或操作。
13.如權(quán)利要求10所述的設(shè)備,其中所述緩沖存儲(chǔ)器包括多個(gè)緩沖存儲(chǔ)器,且所述緩 沖存儲(chǔ)器中的至少一個(gè)包括單端口存儲(chǔ)器。
14.如權(quán)利要求10所述的設(shè)備,其中通過(guò)確定當(dāng)與所述比較值比較時(shí)導(dǎo)致預(yù)定值的值 來(lái)確定所述恢復(fù)碼。
15.如權(quán)利要求10所述的設(shè)備,包括由軟件編程的處理器以實(shí)現(xiàn)所述比較電路。
16.如權(quán)利要求15所述的設(shè)備,其中所述比較電路執(zhí)行邏輯異或操作。
17.如權(quán)利要求10所述的設(shè)備,其中所述固態(tài)數(shù)據(jù)儲(chǔ)存存儲(chǔ)器包括多個(gè)固態(tài)物理存儲(chǔ) 器設(shè)備。
18.如權(quán)利要求17所述的設(shè)備,其中所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的每個(gè)包括包含 至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊的單個(gè)集成電路芯片,其中物理數(shù)據(jù)存儲(chǔ)塊包括在所述集成電 路芯片上形成的固態(tài)存儲(chǔ)器的塊,并連同在同一集成電路芯片上形成的固態(tài)存儲(chǔ)器的其 它塊一起是單獨(dú)可尋址的。
19.如權(quán)利要求17所述的設(shè)備,其中所述設(shè)備作為單個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備與主設(shè)備通過(guò)接 口連接。
20.—種方法,包括接收對(duì)存儲(chǔ)在包括多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備的固態(tài)存儲(chǔ)器中的數(shù)據(jù)的請(qǐng)求;通過(guò)存儲(chǔ)控制器識(shí)別所請(qǐng)求的數(shù)據(jù)的邏輯數(shù)據(jù)塊的邏輯塊分組,所述邏輯數(shù)據(jù)塊相 應(yīng)于所述固態(tài)存儲(chǔ)器,以及所述邏輯塊分組包括來(lái)自所述多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的 兩個(gè)或多個(gè)的至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊;讀取存儲(chǔ)在所識(shí)別的邏輯塊分組中的所儲(chǔ)存的數(shù)據(jù)和代碼;以及比較所述代碼與所儲(chǔ)存的數(shù)據(jù)以估計(jì)所請(qǐng)求的數(shù)據(jù)。
全文摘要
本公開(kāi)包括涉及在固態(tài)存儲(chǔ)器中實(shí)現(xiàn)容錯(cuò)數(shù)據(jù)存儲(chǔ)的系統(tǒng)和技術(shù)。在一些實(shí)現(xiàn)中,方法包括接收待存儲(chǔ)的數(shù)據(jù);將數(shù)據(jù)分成邏輯數(shù)據(jù)塊;將塊分配到邏輯塊分組,邏輯塊分組包括來(lái)自多個(gè)固態(tài)物理存儲(chǔ)器設(shè)備中的兩個(gè)或多個(gè)的至少一個(gè)物理數(shù)據(jù)存儲(chǔ)塊;將所述塊存儲(chǔ)在物理數(shù)據(jù)存儲(chǔ)塊中;確定相應(yīng)于持久數(shù)據(jù)的代碼;以及存儲(chǔ)相應(yīng)于存儲(chǔ)在邏輯塊分組中的數(shù)據(jù)的代碼。通過(guò)識(shí)別相應(yīng)于損壞的物理數(shù)據(jù)存儲(chǔ)塊的邏輯數(shù)據(jù)塊和邏輯塊分組,讀取存儲(chǔ)在所識(shí)別的分組中的數(shù)據(jù)和代碼,并將該代碼與不同于存儲(chǔ)在損壞的塊中的數(shù)據(jù)的所讀取的數(shù)據(jù)進(jìn)行比較,可恢復(fù)損壞的所存儲(chǔ)的數(shù)據(jù)的塊。
文檔編號(hào)G06F3/06GK102023815SQ20101028523
公開(kāi)日2011年4月20日 申請(qǐng)日期2010年9月15日 優(yōu)先權(quán)日2009年9月15日
發(fā)明者格雷戈里·伯德 申請(qǐng)人:格雷戈里·伯德
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
滕州市| 鄂尔多斯市| 洛阳市| 柳江县| 依安县| 苗栗市| 射洪县| 柳州市| 云阳县| 西和县| 阿克| 托克逊县| 阳信县| 沂南县| 醴陵市| 聊城市| 肃北| 西林县| 松溪县| 耿马| 稷山县| 西宁市| 两当县| 和田市| 故城县| 信丰县| 绥棱县| 安泽县| 浪卡子县| 灯塔市| 金川县| 仁寿县| 新邵县| 沧州市| 开江县| 阿图什市| 镇原县| 长乐市| 舒兰市| 兰考县| 阿图什市|