專利名稱:使用相對等級來實(shí)現(xiàn)閃存中的磨損均衡的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及閃存,并且更準(zhǔn)確地說,涉及通過實(shí)現(xiàn)存儲器中的塊
的磨損均衡(wear leveling )來延長閃存的使用壽命的方法。
背景技術(shù):
閃存裝置已經(jīng)為人所知多年。閃存裝置被用于制造高度可靠的固 態(tài)盤、用于PDA和蜂窩電話的數(shù)據(jù)存儲、用于MP3播放器的音頻文 件存儲以及用于許多其它應(yīng)用。當(dāng)設(shè)計(jì)將閃存用于數(shù)據(jù)存儲的產(chǎn)品時(shí) 必須考慮的一個方面是,閃存塊可被擦除和重寫的次數(shù)是有限的。例 如當(dāng)前可以商用的NAND閃存裝置通常由其制造商指定支持每塊多 達(dá)100,000個寫入/擦除周期,而每單元存儲兩位的更高密度多層單元 (MLC, Multi-Level-Cell) NAND閃存裝置通常被指定支持每塊多達(dá) 10,000個寫入/擦除周期。當(dāng)一個塊達(dá)到其指定的寫入/擦除周期極限 后,裝置制造商將不再確保其可以根據(jù)其規(guī)范進(jìn)行操作。因此,必須 注意避免存儲器的塊不必要地達(dá)到該極限的情況。
由于不同的閃存供應(yīng)商使用不同的術(shù)語來描述存儲的單位,為了 本公開的用途,我們在此定義"塊"是可以在單個操作中被擦除的最小 存儲單位,而"頁"是可以在單個操作中被寫入(或"被編程")的最小 存儲單位。
如果沒有避免非均勻磨損的措施,存儲器系統(tǒng)的一般操作可能導(dǎo) 致塊群上的這種非均勻磨損。這是因?yàn)榇蠖鄶?shù)軟件系統(tǒng)趨向于以不均 勻的方式在其存儲地址空間上進(jìn)行寫入。當(dāng)在存儲系統(tǒng)中維護(hù)諸如 Microsoft FAT的文件系統(tǒng)時(shí)尤其是這樣。在這種情況下, 一些管理 數(shù)據(jù)通常由文件系統(tǒng)保存在存儲系統(tǒng)地址空間的開頭。這些數(shù)據(jù)可以 是文件分配表或存儲巻的根目錄的一個或多個副本。對這些管理數(shù)據(jù)區(qū)域的寫入頻率遠(yuǎn)比向其它存儲區(qū)域的寫入頻率高,并且因此,除非 采用特殊措施,包含它們的塊會經(jīng)歷高得多的寫入/擦除周期次數(shù),并 且較其它塊更快地達(dá)到其壽命終點(diǎn)。因此,我們就有其中大多數(shù)塊距 離它們的壽命終點(diǎn)限制還很遠(yuǎn)但是因?yàn)?一些關(guān)鍵塊已經(jīng)到達(dá)該條件而 巻作為一個整體已經(jīng)到達(dá)其壽命終點(diǎn)的存儲巻。
由上可以明白,我們應(yīng)該嘗試均衡裝置的塊上的寫入/擦除周期 的次數(shù)。如果所有塊具有大致相似的寫入/擦除歷史,則作為一個整體 的存儲系統(tǒng)的壽命被最大化。
現(xiàn)有技術(shù)講授了用于解決上述閃存磨損均衡問題的許多解決方
案。 一些例子是
授予Lofgren等人的美國專利第6,230,233號
授予Wells的美國專利第5,341,339號
授予Jou等人的美國專利第5,568,423號
授予Assar等人的美國專利第5,388,083號
授予Harari的美國專利第5,712,819號
授予Harari的美國專利第6,570,790號
授予Harari的美國專利第5,963,480號
授予Chang等人的美國專利第6,831,865號
所有上述專利通過引用而并入,用于在此全面闡明的所有用途。
上述所有現(xiàn)有技術(shù)的共同之處在于,其均是基于計(jì)數(shù)每個塊所經(jīng) 歷的擦除周期的數(shù)量。出于本公開的用途,"擦除計(jì)數(shù)"是代表閃存塊 在其使用歷史中被擦除的次數(shù)的數(shù)字。擦除計(jì)數(shù)被存儲在存儲系統(tǒng)內(nèi) 并且在系統(tǒng)操作過程中被維護(hù)。只要塊被擦除,其擦除計(jì)數(shù)就遞增。 上述解決方案中的一些將塊的擦除計(jì)數(shù)存儲在塊內(nèi)。 一些將所有塊的 所有擦除計(jì)數(shù)存儲在閃存內(nèi)特別分配的位置的一個集中表中。除了將 擦除計(jì)數(shù)存儲在非易失性存儲器中之外,還有其它的將擦除計(jì)數(shù)存儲 在管理閃存的控制器的RAM中。但是在所有情況下,由塊執(zhí)行的擦 除周期的次數(shù)是公知的并且用于實(shí)現(xiàn)磨損均衡目標(biāo)。通過查看塊的擦 除計(jì)數(shù),閃存管理軟件可以檢測哪些塊被使用得最多以及哪些塊被使用得最少。
在如何使用該擦除計(jì)數(shù)的知識來實(shí)現(xiàn)磨損均衡方面有兩種主要 等級。當(dāng)需要分配使用新的塊并且閃存管理系統(tǒng)必須決定哪些可用的 空閑塊應(yīng)該被分配時(shí)激活最簡單的等級。通常,較具有較高擦除周期 次數(shù)的其它塊,決策算法優(yōu)選具有較低擦除周期次數(shù)的塊,使得計(jì)數(shù) 的差距將更小并且塊的磨損將更均勻。該磨損均衡的等級在此被稱為 "動態(tài)磨損均衡"。更先進(jìn)的等級考慮一些文件本質(zhì)上是靜態(tài)的并且通 常被一次寫入并且?guī)缀鯊牟桓禄蛑匦聦懭氲氖聦?shí)。這是大多數(shù)諸如 文字處理程序的操作系統(tǒng)代碼文件或軟件應(yīng)用的情況。不釆取特殊措塊,因?yàn)槟切K在系統(tǒng)操作的一般過程中不會再變?yōu)榭臻e。這就剩下 了那些具有非常低的擦除計(jì)數(shù)的塊,并且實(shí)際上意味著存儲器系統(tǒng)的 壽命比其應(yīng)該具有的壽命短。因此,先進(jìn)的磨損均衡解決方案通過偶 爾強(qiáng)制靜態(tài)文件移動到其它塊來處理這個問題,即使這些文件沒有被 重寫。這允許靜態(tài)文件的塊重新進(jìn)入?yún)⑴c分配的經(jīng)常分配的塊的池, 并且因此改善擦除計(jì)數(shù)的整體磨損以及因此提高存儲系統(tǒng)的壽命。該 磨損均衡的等級在此被稱為"靜態(tài)磨損均衡。沒有額外限定的術(shù)語"磨 損均衡"適用于動態(tài)和靜態(tài)磨損均衡兩者。
上述現(xiàn)有技術(shù)參考公開了許多實(shí)現(xiàn)期望的磨損均衡結(jié)果的算法, 但是所有這些算法都依賴于知道塊的擦除計(jì)數(shù)。
該一般規(guī)則的一個例外是授予Ban的美國專利6,732,221。 Ban 公開了不依賴于計(jì)數(shù)每個塊的擦除周期的實(shí)現(xiàn)閃存磨損均衡的方法。 作為替代,Ban使用統(tǒng)計(jì)方法來選擇要分配和使用的塊,使得最后, 在系統(tǒng)經(jīng)過擦除塊的許多周期之后,所有塊的磨損很有可能接近一致。 然而,Ban并不能保證僅在相對較低的擦除周期次數(shù)之后在短期內(nèi)實(shí) 現(xiàn)磨損均衡的一致性。因此,Ban的解決方案對于具有非常低的寫入/擦除周期極限,諸如1,000的閃存裝置并不能起到好的作用。
在依賴于計(jì)數(shù)每個塊的擦除周期的所有現(xiàn)有技術(shù)的解決方案中, 需要存儲每個塊的計(jì)數(shù)。無論計(jì)數(shù)被保存在其所施加的同一個塊或任何其它位置,必須分配存儲用于計(jì)數(shù)。對于100,000周期的閃存裝置, 每次計(jì)數(shù)至少需要17位,并且對于10,000的閃存裝置每次計(jì)數(shù)至少 需要14位。在一些情況下,這對于該用途而言保留了過多空間。例如, 假定用于管理NAND閃存裝置的閃存管理系統(tǒng)使得用戶數(shù)據(jù)的512字 節(jié)的每個頁伴有16字節(jié)用于存儲系統(tǒng)的控制信息的"額外區(qū)域"。因?yàn)?擦除計(jì)數(shù)是完整塊而不是單頁的屬性,通常這種擦除計(jì)數(shù)僅存儲在塊 的一頁中,通常在第一頁中。因此第一頁的額外區(qū)域的至少三個字節(jié) (假定100,000周期裝置)應(yīng)該被分配用于存儲塊的擦除計(jì)數(shù)。但是 這些額外區(qū)域字節(jié)可能需要用于存儲閃存管理軟件用于有效管理所需 的其它管理信息,或用于存儲在頁中的數(shù)據(jù)的誤差校正方案的奇偶校 驗(yàn)位。
同樣地,如果擦除計(jì)數(shù)被保存在中央表中,那么所需空間量可能 會過高。如果閃存盤包括四個1Gbit的閃存裝置,每個閃存裝置具有 4,096個32K字節(jié)的塊,并且每個閃存裝置需要三字節(jié)的擦除計(jì)數(shù), 那么表的大小為4x4,096x3=49,152字節(jié)。即使在包括多個用于備份的 副本之前,這比塊的大小還大。更重要地,由于性能原因在RAM中 保留擦除計(jì)數(shù)表的副本很有用,但是上述量太大,通常超過閃存控制 器中的可用RAM的量。
因此,廣泛地認(rèn)識到需要并且將是非常有利地具有用于實(shí)現(xiàn)閃存塊的磨損均衡的方法, 一方面在塊群上提供統(tǒng)一的擦除周期,另一方免吡技術(shù)擦除周期并且存儲它們的數(shù)目的現(xiàn)有技術(shù)方法消耗更少的存儲器.
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供了一種管理包括多個塊的存儲器裝置的存儲器 的方法,所述方法包括對于每個塊執(zhí)行的下列步驟(a)計(jì)算作為每 個塊已被擦除的次數(shù)和至少一個其它塊已被擦除的次數(shù)的函數(shù)的數(shù); 以及(b)將所述數(shù)存儲在所述存儲器裝置中。
根據(jù)本發(fā)明,提供了一種存儲器裝置,包括(a)包括多個塊
的存儲器;以及(b)用于通過對于每個塊執(zhí)行下列步驟來管理存儲 器的控制器(i)計(jì)算作為每個塊已被擦除的次數(shù)和至少一個其它塊 已被擦除的次數(shù)的函數(shù)的數(shù);以及(ii)將所述數(shù)存儲到所述存儲器 裝置中。
根據(jù)本發(fā)明,提供了一種具有嵌入計(jì)算機(jī)可讀存儲介質(zhì)上的計(jì)算 機(jī)可讀代碼的計(jì)算機(jī)可讀存儲介質(zhì),所述計(jì)算機(jī)可讀代碼用于管理包 括多個塊的存儲裝置的存儲器,所述計(jì)算機(jī)可讀代碼包括(a)用于 對于每個塊計(jì)算作為每個塊已被擦除的次數(shù)和至少一個其它塊已被擦 除的次數(shù)的函數(shù)的數(shù)的程序代碼;以及(b)用于對于每個塊將所述 數(shù)存儲到存儲器裝置中的程序代碼,。
根據(jù)本發(fā)明的基本方法,存儲器裝置的存儲器的塊的管理包括對 于每個塊計(jì)算作為塊已被擦除的次數(shù)和一個或更多其它塊已被擦除的 次數(shù)的函數(shù)的數(shù),以及將所述數(shù)存儲到存儲器裝置中。優(yōu)選地,每當(dāng) 塊被擦除以及每當(dāng)擦除計(jì)數(shù)是函數(shù)的自變數(shù)的一個其它塊被擦除時(shí), 更新每個塊的數(shù)。
優(yōu)選地,所述方法包括至少部分根據(jù)所述數(shù)來選擇擦除至少一個 塊的步驟。
每個塊的數(shù)可以存儲在塊自身中或存儲在塊之外。
優(yōu)選地,對于每個塊,所述函數(shù)是塊的相對等級。如在此理解的,塊的"相對等級"是該塊已被擦除的次數(shù)相對于至少一個其它塊已被擦 除的次數(shù)的度量。如將在下面看到的, 一般不需要明確地計(jì)數(shù)塊被擦 除的次數(shù)以便計(jì)算其相對等級。
在本發(fā)明的一個優(yōu)選實(shí)施例中,所使用的特定"相對等級,,是這樣 的,對于至少一個塊,該塊的相對等級取決于該塊的擦除計(jì)數(shù)和另一 個塊的擦除計(jì)數(shù)之間的差。最優(yōu)選地,其它塊是目標(biāo)塊的相鄰塊。
在本發(fā)明的另 一個優(yōu)選實(shí)施例中,所使用的特定"相對等級,,是這 樣的,對于至少一個塊,該塊的相對等級取決于該塊的擦除計(jì)數(shù)和至 少兩個其它塊的平均擦除計(jì)數(shù)之間的差。最優(yōu)選地,至少一個其它塊 是目標(biāo)塊的相鄰塊。
優(yōu)選地,計(jì)算所述數(shù)包括在不足以存儲每個塊的期望最大擦除周 期數(shù)的位數(shù)截取每個塊的函數(shù)。
本發(fā)明的范圍還包括根據(jù)本發(fā)明的方法管理的存儲器裝置,以及 具有在其上嵌入根據(jù)本發(fā)明的方法來管理存儲器的計(jì)算機(jī)可讀編碼的 計(jì)算機(jī)可讀存儲介質(zhì)。
在此將參考附圖僅通過例子來描述本發(fā)明,其中
圖l是根據(jù)本發(fā)明如何分配空閑塊來使用的流程圖2是如何更新圖1的塊的相對等級的流程圖3是如何更新圖1的塊的相鄰塊的相對等級的流程圖4是本發(fā)明的閃存裝置的高級方塊圖5是本發(fā)明的數(shù)據(jù)存儲系統(tǒng)的高級局部方塊圖。
具體實(shí)施例方式
本發(fā)明是一種實(shí)現(xiàn)諸如閃存的存儲器中的磨損均衡而不明確地 計(jì)數(shù)擦除周期的方法。
參考附圖和所附說明書,可以更好地理解根據(jù)本發(fā)明的磨損均衡 的原理和操作。
本發(fā)明基于觀察到為了均衡塊的擦除周期,并不真正需要知道每 個塊的擦除周期的精確數(shù)目。因?yàn)椴脸芷诘牡韧詫?shí)際上是不同塊 的周期數(shù)之間的關(guān)系問題,可以通過依賴于僅保存不同塊的周期數(shù)之 間的關(guān)系,而不依賴于保存周期數(shù)的絕對值的度量來實(shí)現(xiàn)該目標(biāo)。
這種方法的一個例子是,對于每個塊,保存等于該塊已被擦除的 次數(shù)和其最近的兩個相鄰塊已被擦除的次數(shù)的平均數(shù)之間的差的值。 在本上下文中,"相鄰塊,,由塊地址來定義。例如,如果塊被連續(xù)編號, 塊10的"相鄰塊"是塊9和塊11?;蛘咭愿降姆栆慌c塊n相關(guān) 的數(shù)是EC(n)-(EC(n-l)+EC(n+l))/2,其中EC(i)是塊i的擦除計(jì)數(shù)。 由于分?jǐn)?shù)不方便處理,我們稍微修改值的定義為上述表達(dá)式的兩倍,使得在下面的說明中所述值等于2EC(n)-EC(n-l)-EC(n+l)。
該值是在此被稱為塊的"相對等級"的簡單實(shí)例。為了使上述相對 等級的定義同樣適用于第一和最后一個塊,第一和最后一個塊被定義 為彼此的相鄰塊,使得所有塊被認(rèn)為是第一塊跟隨最后一個塊的循環(huán) 順序排列。因此,第一個塊的相對等級(假定塊被從0到N-1編號) 是2EC(0)-EC(N-1)-EC(1), 并且最后一個塊的相對等級是 2EC(N畫1)畫EC(N畫2)-EC(0)。
對于每個塊存儲的不是塊的擦除計(jì)數(shù),而是塊的相對等級。應(yīng)該 注意到,盡管相對等級是由擦除計(jì)數(shù)唯一確定的,擦除計(jì)數(shù)不是由相 對等級唯一確定的。這可以通過考慮其中所有塊被擦除正好相同次數(shù) 的簡單情況來輕松檢驗(yàn)。在這種情況下,所有塊具有為零的相對等級。 但是知道所有塊的相對等級并不允許我們來推想擦除計(jì)數(shù)。有可能所 有塊已經(jīng)經(jīng)過了 IO個擦除周期或可能所有塊已經(jīng)經(jīng)過了 1,000個擦除 周期。對于任意整數(shù)N,所有塊經(jīng)過N個擦除周期的情況導(dǎo)致正好相 同的相對等級所有塊的相對等級為零。
因此很清楚,相對等級的概念與擦除計(jì)數(shù)的概念是根本不同的。 塊的擦除計(jì)數(shù)是單獨(dú)塊的特征,而塊的相對等級不是該單獨(dú)塊的特征, 而是該塊與其它塊相比的相對條件的度量。塊的相對等級不包含有關(guān) 該塊自身的條件的絕對信息。這將相對等級方法區(qū)別于使用擦除計(jì)數(shù) 作為實(shí)現(xiàn)磨損均衡的基礎(chǔ)的現(xiàn)有技術(shù)解決方案,并且還區(qū)別于使用"塊 的特征"作為擦除計(jì)數(shù)的概括的美國5,712,819、 Harari的廣義解決方 案。
相對等級的概念與對于每個塊存儲諸如擦除計(jì)數(shù)的兩倍或擦除 計(jì)數(shù)的平方的塊的擦除計(jì)數(shù)的一些函數(shù)有根本不同。盡管擦除計(jì)數(shù)的 平方肯定與擦除計(jì)數(shù)不同,但是因?yàn)樗蝗Q于所述塊的條件,它還 是落入"塊的特征"的范圍內(nèi)。應(yīng)該注意到,使得相對等級與塊的特征 不同的相對等級的關(guān)鍵特征不是不能從相對等級中推想擦除計(jì)數(shù),而 是塊的相對等級不是由僅僅該同一個塊的擦除計(jì)數(shù)來唯一確定的。例 如,如果我們對于每個塊存儲當(dāng)其擦除計(jì)數(shù)被某個整數(shù)M除時(shí)的余
數(shù),則盡管不可能由該余數(shù)推想出擦除計(jì)數(shù),該值仍然是該塊的特征, 因?yàn)橛鄶?shù)是由塊的擦除計(jì)數(shù)唯一確定的。
存儲相對等級而不是擦除計(jì)數(shù)的一個優(yōu)點(diǎn)是節(jié)約存儲空間。如果
那么相對等級的絕對值會很小。這意味著,為使磨損均衡小于現(xiàn)有技 術(shù)解決方案,我們可以在非易失性或易失性存儲器中的每個塊和投入 的整個存儲中使用更少的位。例如,即使一個塊所允許的最大擦除周
期數(shù)為100,000,我們可以只分配每個塊8位存儲。這小于存儲擦除計(jì) 數(shù)的現(xiàn)有技術(shù)系統(tǒng)中所用的存儲量的一半。應(yīng)該注意,與擦除計(jì)數(shù)總 是正整數(shù)不同,相對等級可以為正或負(fù)。因此,當(dāng)使用每個相對等級 8位時(shí),假設(shè)使用"二的補(bǔ)碼"方法來表示負(fù)數(shù),則可以表示的值的范 圍在-128和+127之間。
給定所有塊的相對等級,這些相對等級被用于取代擦除計(jì)數(shù)來實(shí) 現(xiàn)塊的磨損均衡?,F(xiàn)有技術(shù)中公開的使用擦除計(jì)數(shù)的磨損均衡算法的 每一個可被容易地調(diào)整為使用相對等級來代替擦除計(jì)數(shù)?,F(xiàn)在參閱附 圖,圖1示出了這是如何實(shí)現(xiàn)的例子。圖1是當(dāng)需要分配空閑塊來使 用時(shí)采取的步驟的流程圖(即,用于進(jìn)行動態(tài)磨損均衡)。在步驟100, 從閃存管理系統(tǒng)接收用于分配空閑塊來使用的請求。在步驟110,掃 描所有空閑塊的相對等級以找到具有最低相對等級的空閑塊。如果超 過一個空閑塊具有相同的最低值,則隨機(jī)選擇這些塊中的一個。在步 驟120,被選擇的塊(自此以后被稱為"塊K")被擦除。這假設(shè)閃存 管理系統(tǒng)保持其空閑塊池處于未擦除狀態(tài)。 一些閃存管理系統(tǒng)保持其 空閑塊池處于已擦除狀態(tài),用于加速將空閑塊投入使用的過程。業(yè)內(nèi)
內(nèi)工作。在步驟130,塊K被投入使用。如何做到這個以及作為結(jié)果 更新哪些控制字段的細(xì)節(jié)在不同閃存管理系統(tǒng)之間不同,并且與理解
本發(fā)明的方法無關(guān)。
在步驟140,塊K的相對等級被更新,以反映塊K剛剛經(jīng)過又 一個擦除周期的事實(shí)。這在圖2被進(jìn)一步詳細(xì)闡述。
在步驟150,塊K-1的相對等級被更新,以反映塊K剛剛經(jīng)過又 一個擦除周期的事實(shí)。這在圖3被進(jìn)一步詳細(xì)闡述。
在步驟160,塊K+l的相對等級被更新,以反映塊K剛剛經(jīng)過 又一個擦除周期的事實(shí)。這也在圖3被進(jìn)一步詳細(xì)闡述。
圖2詳細(xì)闡述了如何更新塊K的相對等級(圖1的步驟140)。 在步驟200,我們檢查塊K的相對等級是否等于可被存儲的最大值。 對于上面使用8位相對等級的例子,這意味著詢問相對等級是否等于 127。如果答案是肯定的,我們不能進(jìn)一步遞增相對等級并且我們什么 都不做(步驟210)。如果答案是否定的,則有空間遞增相對等級, 并且隨后我們進(jìn)一步檢查(步驟220 )塊K的相對等級是否等于可被 存儲的最大值減去1。對于上面使用8位相對等級的例子,這意味著 詢問相對等級是否等于126。如果答案是肯定的,那么在步驟230我 們將相對等級遞增1。如果答案是否定的,那么在步驟240我們將相 對等級遞增2。該邏輯的最終結(jié)果是相對等級被遞增2,除非沒有空間 進(jìn)行這種遞增,在這種情況下,相對等級在最大可能值被截?cái)?。該結(jié)的兩倍的相對等級;定義。讓塊經(jīng)過一個附加擦除周^ (而在此階段 兩個相鄰塊并不經(jīng)過附加擦除周期)無疑會導(dǎo)致相對等級增加2。
圖3詳細(xì)闡述了如何更新塊K-l和K+l的相對等級(分別地, 圖1的步驟150和160 )。在步驟300,我們檢查塊K-l或塊K+l的 相對等級是否等于可被存儲的最小值。對于上面使用8位相對等級的 例子,這意味著詢問相對等級是否等于-128。如果答案是肯定的,我 們不能進(jìn)一步遞減相對等級并且我們什么都不做(步驟310)。如果 答案是否定的,則有空間遞減相對等級并且隨后在步驟320我們將相 對等級遞減1。該邏輯的最終結(jié)果是相對等級被遞減1,除非沒有空間 進(jìn)行這種遞減,在這種情況下,相對等級在最小可能值被截?cái)?。該結(jié)的差的兩倍的相對等級的定義。讓一個相鄰塊通過一個附加周期(而 在此階段該塊或另一個相鄰塊不經(jīng)過附加擦除周期)無疑會導(dǎo)致相對等級減少1。
相對等級值有可能在最小或最大值被截?cái)嗟氖聦?shí)意味著,相對等級的保存值可以僅僅是理論真實(shí)值的近似值。然而,因?yàn)槭褂孟鄬Φ燃墎韺?shí)現(xiàn)磨損均衡導(dǎo)致相對等級通常很小并且接近零,該近似值對于大多數(shù)塊都相當(dāng)精確。磨損均衡算法通常對于與擦除周期的精確計(jì)數(shù)的小偏差不敏感,并且因此通過使用更小的位數(shù)來存儲相對等級而節(jié)約存儲空間來交換值的一些不精確和近似是合理的。
上述解釋處理基于相對等級來實(shí)現(xiàn)動態(tài)磨損均衡。相對等級還可以被用作靜態(tài)磨損均衡的用途。為實(shí)現(xiàn)這個用途,不時(shí)掃描所有使用 的塊的相對等級,尋找具有非常低的相對等級的塊。找到具有這種低 相對等級的塊意味著,該塊比其相鄰塊循環(huán)少得多。閃存管理系統(tǒng)隨后留意將該塊的內(nèi)容復(fù)制到被分配用于替代它的另一個塊中并且隨后 將該塊帶回到空閑塊池中。這最后導(dǎo)致所期望的與其它塊相比均衡該 塊的擦除周期數(shù)。掃描具有非常低的相對等級的塊可以在每個一定時(shí) 間間隔被周期性地觸發(fā)一次,或并入動態(tài)磨損均衡機(jī)制中,使得靜態(tài) 塊僅當(dāng)進(jìn)行一些用戶發(fā)起的寫操作時(shí)才被帶回到空閑池中。兩種方法 在現(xiàn)有技術(shù)中被教導(dǎo)用于實(shí)施靜態(tài)磨損均衡。
應(yīng)該理解,使用相對等級作為磨損均衡的基礎(chǔ)是近似,可能不會 導(dǎo)致最優(yōu)的均衡。這是因?yàn)橄鄬Φ燃墐H提供塊相對于塊的相鄰塊的使 用量的局部信息。它不提供適用于整個裝置的全面信息??赡馨l(fā)生一 個塊具有比第二個塊的相對等級高的相對等級,但是實(shí)際上第二個塊 已經(jīng)經(jīng)過比第一個塊多的擦除周期。盡管如此,平均起來并且經(jīng)過長 時(shí)間的操作,依賴于相對等級提供了接近最優(yōu)的磨損均衡。
等級一起存儲到中央位^的系統(tǒng)尤其有用:這是因?yàn)楦氯齻€相鄰塊 或一個塊的相對等級的成本實(shí)際上是一樣的。在將每個塊的等級存儲 在該塊內(nèi)的系統(tǒng)中不是這樣,因?yàn)樵谶@種情況下,更新三個塊的相對 等級意味著寫入三個塊,并且這是更新單個塊的時(shí)間的三倍之多。然 而,本發(fā)明的方法即使在分離存儲相對等級的這種情況下也是適用的,即使它們比在中央存儲的情況具有更低的效率。
上面介紹的是所述塊的擦除周期數(shù)和其兩個相鄰塊的平均擦除周期數(shù)之間的差的兩倍的用于計(jì)算k的相對一級的公式不是計(jì)算相對 等級的僅有方法。例如,我們可以定義相對等級代表所述塊的擦除周 期數(shù)和其每側(cè)兩個共四個最近的相鄰塊的平均擦除周期數(shù)之間的差。
一般地,對于每個偶數(shù)N,我們可以計(jì)算代表所述塊的擦除周期數(shù)和 其每側(cè)N/2個塊共N個最近的相鄰塊的平均擦除周期數(shù)之間的差的相 對等級。上面介紹的兩塊相鄰計(jì)算的優(yōu)勢在于,它在每個塊擦除操作 時(shí)需要更新僅三個塊的相對等級,而在N塊相鄰計(jì)算的一般情況下, 必須在每個塊擦除操作時(shí)更新N+l個塊的相對等級。該要更新的相對 等級數(shù)的最小化在當(dāng)每個相對等級被分別存儲在其塊內(nèi)時(shí)尤其重要, 因?yàn)檫@需要寫入更多的塊,并且向閃存中寫入是相對較慢的操作。另 一方面,使用 >2使得本發(fā)明對于本地波動更不敏感。
相對等級的計(jì)算還可以通過采用在塊周圍非對稱地居中的相對 等級來進(jìn)一步近似和簡化。例如,相對等級可以被定義成代表所述塊
的擦除周期數(shù)和比方說在它前面的一個相鄰塊的擦除周期數(shù)之間的 差。因此塊i的相對等級等于EC(i)-EC(i-l),并且塊0的相對等級是 EC(0)-EC(N-1),其中,N是塊的數(shù)量。這種一側(cè)的定義提供了比上面 討論的對稱定義更粗略的塊的擦除周期數(shù)的相對非平均的近似,但是 它仍然在最后提供了足夠好的磨損均衡。該簡化的相對等級的定義的 優(yōu)點(diǎn)是,每次塊擦除操作僅需要更新兩個相對等級。
此外,甚至不需要用于計(jì)算給定塊的相對等級的其它塊真正是相 鄰的塊。只要我們注意保持在所有塊上的計(jì)算一致,任何其它塊都可 以。例如,我們可以使用其中塊i的相對等級等于 2EC(i)-EC(i+30)-EC(i+70)的定義。為了使計(jì)算對于所有塊都有意義, 我們認(rèn)為第一塊是最后一塊的跟隨者。該相對等級的定義與上面提出 的第一個定義類似,差別是使用偏移量(+30)和(+70)而非偏移量(-l)和 (+1)?;谶@兩種相對等級的定義的磨損均衡算法被期望以平均相同 的水平執(zhí)行。
作為所有上述的結(jié)果,我們看到本發(fā)明的方法提供了用于實(shí)現(xiàn)基 于閃存的存儲系統(tǒng)的塊的磨損均衡的有效方法。本發(fā)明的范圍包括上 面提出的方法、采用這些方法的存儲器系統(tǒng)、以及具有嵌入到其中并 且實(shí)施那些方法的計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀存儲介質(zhì)。
再次參看附圖,圖4是與主機(jī)30耦合的本發(fā)明的閃存裝置20的 高級方塊圖。圖4改編自圖1的Ban的美國專利第5,404,485號,其 專利由于在此闡明的全部用途通過引用而并入。(請注意US 5,404,485 使用與本公開不同的術(shù)語US 5,404,485稱閃存的擦除塊為"單元")。 閃存裝置20包括閃存24、控制器22和隨機(jī)存取存儲器(RAM) 26。 如US 5,404,485所描述的,控制器22相應(yīng)于US 5,404,485的"閃存控 制器14",在RAM 26的幫助下,管理閃存24??刂破?2還支持如 上所述使用相對等級的閃存24的塊的磨損均衡。
圖5是本發(fā)明的可替換數(shù)據(jù)存儲系統(tǒng)50的高級局部方塊圖。數(shù) 據(jù)存儲系統(tǒng)50包括處理器52和四個存儲器裝置RAM 54、引導(dǎo)ROM 56、大容量存儲裝置(硬盤)58和閃存裝置40,全都通過公用總線 60通信。與閃存裝置20相同,閃存裝置40包括閃存42。與閃存裝置 20不同,閃存裝置40沒有自己的控制器和RAM。替代地,處理器 52通過執(zhí)行以例如以色列的Kfar Saba的M-系統(tǒng)閃存先鋒公司的 TrueFFSTM驅(qū)動器的方式實(shí)施US 5,404,485的方法的軟件驅(qū)動器來仿 真控制器22,并且同樣采用本發(fā)明的磨損均衡方法。閃存裝置還包括 總線接口 44,以使能處理器52與閃存42通信。
處理器52執(zhí)行用于管理閃存42的軟件驅(qū)動器的代碼被存儲在大 容量存儲裝置58中并且轉(zhuǎn)移到RAM 54用于執(zhí)行。大容量存儲裝置 58因此是計(jì)算機(jī)可讀代碼存儲介質(zhì)的例子,其中嵌入用于根據(jù)本發(fā)明 的原理來管理閃存42的計(jì)算機(jī)可讀代碼。
盡管參考有限個數(shù)的實(shí)施例對本發(fā)明進(jìn)行了描述,應(yīng)該意識到, 可以進(jìn)行本發(fā)明的許多變化、修改和其它應(yīng)用。
權(quán)利要求
1.一種管理包括多個塊的存儲器裝置的存儲器的方法,所述方法包括對于每個塊執(zhí)行的下列步驟(a)計(jì)算作為所述每個塊已被擦除的次數(shù)和至少一個其它塊已被擦除的次數(shù)的函數(shù)的數(shù);以及(b)將所述數(shù)存儲在所述存儲器裝置中。
2. 根據(jù)權(quán)利要求1所述的方法,還包括對于每個塊執(zhí)行的步驟(c) 每當(dāng)所述每個塊被擦除時(shí)更新所述數(shù)。
3. 根據(jù)權(quán)利要求1所述的方法,還包括對于每個塊執(zhí)行的步驟 (c)每當(dāng)所述至少一個其它塊中的一個被擦除時(shí),更新所述數(shù)。
4. 根據(jù)權(quán)利要求1所述的方法,還包括對于每個塊執(zhí)行的步驟 (c)至少部分根據(jù)所述數(shù)來選擇至少一個要被擦除的塊。
5. 根據(jù)權(quán)利要求1所述的方法,其中,對于至少一個所述塊的 每一個,所述存儲是通過包括將所述數(shù)存儲到所述每個塊中的步驟來 實(shí)現(xiàn)的。
6. 根據(jù)權(quán)利要求1所述的方法,其中,對于至少一個所述塊的 每一個,所述存儲是通過包括將所述數(shù)存儲到所述每個塊之外的步驟 來實(shí)現(xiàn)的。
7. 根據(jù)權(quán)利要求1所述的方法,其中,對于每個塊,所述函數(shù) 是所述每個塊的相對等級。
8. 根據(jù)權(quán)利要求7所述的方法,其中,對于所述至少一個塊的 每一個,所述相對等級取決于所述每個塊的擦除計(jì)數(shù)和一個其它塊的 擦除計(jì)數(shù)之間的差。
9. 根據(jù)權(quán)利要求8所述的方法,其中,所述一個其它塊是所述 每個塊的相鄰塊。
10. 根據(jù)權(quán)利要求7所述的方法,其中,對于所述至少一個塊的 每一個,所述相對等級取決于所述每個塊的擦除計(jì)數(shù)和至少兩個其它 塊的平均擦除計(jì)數(shù)之間的差。
11. 根據(jù)權(quán)利要求10所述的方法,其中,所述至少兩個其它塊 的至少一個是所述每個塊的相鄰塊。
12. 根據(jù)權(quán)利要求10所述的方法,其中,所述計(jì)算包括,對于 每個塊,在不足以存儲每個塊的最大允許擦除周期數(shù)的位數(shù)截?cái)嗨?函數(shù)。
13. —種存儲器裝置,包括(a) 包括多個塊的存儲器;以及(b) 用于通過對于每個塊執(zhí)行下列步驟來管理所述存儲器的控制 器,所述步驟包括(i) 計(jì)算作為所述每個塊已被擦除的次數(shù)和至少一個其它所述塊 已被擦除的次數(shù)的函數(shù)的數(shù);以及(ii) 將所述數(shù)存儲在存儲器裝置中。
14. 根據(jù)權(quán)利要求13所述的存儲器,其中,所述存儲器是閃存。
15. —種計(jì)算機(jī)可讀存儲介質(zhì),具有嵌入所述計(jì)算機(jī)可讀存儲介 質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼用于管理包括多個塊的 存儲器裝置的存儲器,所述計(jì)算機(jī)可讀代碼包括(a) 用于對于每個塊計(jì)算作為所述每個塊已被擦除的次數(shù)和至少 一個其它所述塊已被擦除的次數(shù)的函數(shù)的數(shù)的程序代碼;以及(b) 用于對于每個塊將所述數(shù)存儲到存儲器裝置中的程序代碼。
全文摘要
對于存儲器的每個塊,計(jì)算作為所述塊已被擦除的次數(shù)和至少一個其它塊已被擦除的次數(shù)的函數(shù)的數(shù)。所述數(shù)被存儲到包括存儲器的存儲器裝置中。當(dāng)塊被擦除時(shí)根據(jù)需要更新所述數(shù)。根據(jù)塊的數(shù)來選擇要被擦除的塊。優(yōu)選地,每個塊的函數(shù)是所述塊的相對等級。
文檔編號G11C16/06GK101208753SQ200680015052
公開日2008年6月25日 申請日期2006年3月12日 優(yōu)先權(quán)日2005年3月14日
發(fā)明者曼納切姆·拉瑟 申請人:晟碟以色列有限公司