專利名稱:存儲裝置的壞塊管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及快閃存儲器技術(shù)領(lǐng)域,具體來說,本發(fā)明涉及一種存儲裝置的壞塊管
理方法。
背景技術(shù):
閃存(Flash memory),簡稱為閃存或Flash,是電子清除式可程序只讀存儲器(EEPROM)的一種,允許在操作中被多次擦(Erase)或?qū)?Program)。閃存是一種特殊的、以大區(qū)塊擦寫的EEPR0M,其成本和速度都遠較普通的以字節(jié)為單位寫入的EEPROM有優(yōu)勢,也因此成為非揮發(fā)性固態(tài)儲存最重要也最廣為采納的技術(shù)。目前Flash主要分為NOR型和NAND型兩種結(jié)構(gòu),NAND Flash相較于NORFlash具有擦寫速度快、儲存密度高、單位成本低的優(yōu)點,因此主要用于各種存儲卡、U盤以及近兩年興起的固態(tài)硬盤(SSD,Solid State Disk)等大容量儲存裝置,此外包括各種手機、多媒體播放器以及平板電腦也都有采用。NAND Flash (本文以下簡稱Flash)雖然是EEPROM的一種,但卻與常見的EEPROM有著很大的不同,主要表現(xiàn)在其擦寫上有一些限制。Flash的一個主要限制在于它的物理單元在寫操作(Program)時只能由I變成0,因此當一個單元寫過之后是只能借由擦除操作(Erase)來恢復I的狀態(tài)。Flash在物理上分為塊(Block)和頁(Page)兩種基本單位,F(xiàn)lash由若干塊組成,而其中每個塊由若干個頁組成,而每個頁則是由若干個物理單元(Cell)組成。不同類型的Flash,其一個物理單元可以存儲I個bit或2個bit或甚至更多個bit的數(shù)據(jù),因此分為 SLC (Single LevelCell) MLC (Multi Level Cell)等類型。Flash 的基本讀寫單位是頁,而擦除操作則以塊為單位。一個頁在進行寫入數(shù)據(jù)之前,必須先保證其所在的塊已經(jīng)經(jīng)過了擦除,且每次該頁需要重新寫入數(shù)據(jù)之前也必須先擦除其對應的塊。因此,F(xiàn)lash的存儲裝置都采用塊為基本單位來管理數(shù)據(jù)的存儲。Flash相較于傳統(tǒng)的磁盤介質(zhì)或其他EEPR0M,還有個特點是擦寫次數(shù)較少,也就是其物理單元經(jīng)過一定的擦除和寫入操作之后,I或0的狀態(tài)變得不穩(wěn)定,這些物理單元就認為已經(jīng)損壞,整體表現(xiàn)出來就是存儲數(shù)據(jù)出錯。雖然大部分基于Flash的存儲裝置都會帶有一定程度的糾錯機制,但是一旦錯誤的范圍擴大到糾錯能力之外,就不再能夠保證數(shù)據(jù)的正確性,這時候可以認為存儲裝置的使用壽命到了。但是如果因為一小部分物理單元錯誤,就導致整個Flash不能用了,顯然是很浪費的。針對這種情況,所有的Flash存儲裝置有一定的壞塊管理機制,其基本原理均為JfFlash以塊為基本單位,劃分出一部分作為冗余塊(Redundant Block),剩下的用來作為有效容量存儲數(shù)據(jù);當使用過程中,裝置檢測到存儲數(shù)據(jù)的塊發(fā)生損壞時,即從冗余塊當中選取一 個,替換之前損壞的塊,這樣就能保證裝置的有效存儲,從而延長裝置的使用壽命。只有當所有冗余塊都耗盡時,才認為整個裝置的使用壽命到了。顯然,冗余塊數(shù)量保留的越多,則裝置的使用壽命越長,但是相應的用于有效存儲數(shù)據(jù)的塊數(shù)也越少,裝置的有效容量也越小,因此,需要在這兩者之間保持一定的平衡。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種存儲裝置的壞塊管理方法,能夠?qū)崿F(xiàn)不增加冗余塊的數(shù)量和比例,即可大幅度延長存儲裝置的使用壽命。為解決上述技術(shù)問題,本發(fā)明提供一種存儲裝置的壞塊管理方法,包括步驟A.將所述存儲裝置的所有塊劃分為數(shù)據(jù)區(qū)和冗余區(qū);B.找出所述數(shù)據(jù)區(qū)中的一個或多個壞 塊;C.針對一個或多個所述壞塊分別建立壞塊頁表,所述壞塊頁表對當前壞塊中的具體損壞頁作出標記;D.將所有所述壞塊頁表的標記結(jié)果進行綜合疊加,形成總壞塊頁表,所述總壞塊頁表對所有所述壞塊中的具體損壞頁作出標記,并統(tǒng)計所述總壞塊頁表中的好頁數(shù)量;E.根據(jù)所述存儲裝置的每個塊的總頁數(shù)以及所述總壞塊頁表中的好頁數(shù)量,將所述好頁數(shù)量收斂為所述總頁數(shù)的最大因數(shù);F.從所述總壞塊頁表中挑取所述最大因數(shù)個好頁,建立一張大小為所述最大因數(shù)的頁映射表,將所有所述壞塊映射到每個塊的好頁的物理頁地址;G.令y = n/x,將所有所述壞塊按每y個壞塊編成一組,重新組合成一個或多個虛擬塊,建立起虛擬塊映射表將一個或多個所述虛擬塊的地址與其對應的物理塊地址聯(lián)系起來,其中n為所述總頁數(shù),X為所述最大因數(shù);H.通過所述虛擬塊映射表并結(jié)合所述頁映射表實現(xiàn)每個虛擬塊與對應物理塊的頁訪問,將一個或多個所述虛擬塊替換掉所述數(shù)據(jù)區(qū)中的一個或多個壞塊??蛇x地,從所述總壞塊頁表中挑取好頁包括方式挑取前最大因數(shù)個好頁、挑取后最大因數(shù)個好頁、從中間挑取連續(xù)的最大因數(shù)個好頁或者任意挑取最大因數(shù)個好頁??蛇x地,所述壞塊管理方法中的所述虛擬塊的重新組合次數(shù)為I 2次??蛇x地,所述壞塊管理方法是在所述冗余區(qū)耗盡之后再執(zhí)行的,或者是在所述冗余區(qū)耗盡之前執(zhí)行的??蛇x地,所述壞塊管理方法的固件程序燒入于所述存儲裝置中??蛇x地,所述存儲裝置為NAND型閃存或者NOR型閃存。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點本發(fā)明提出的這種方法,在原有存儲裝置的壞塊管理算法的基礎(chǔ)上可直接加以改進,通過頁映射的方式,將產(chǎn)生的壞塊進行重新利用,重組成新的冗余塊,使得存儲裝置的使用壽命得到大幅度的延長。該方法并沒有改變原有的壞塊管理的基本方法,也沒有改變初始設(shè)定的冗余塊的比例和數(shù)量,因而不會改變存儲裝置的有效存儲容量,只是在其原有的管理算法的基礎(chǔ)上進行增強。因此,本發(fā)明理論上可適用于所有的壞塊管理方法,適用范圍極廣而沒有額外的限制,并且因為只需要修改存儲裝置的軟件算法即可實現(xiàn),對于產(chǎn)品的成本基本沒有影響。
本發(fā)明的上述的以及其他的特征、性質(zhì)和優(yōu)勢將通過下面結(jié)合附圖和實施例的描述而變得更加明顯,其中圖I為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(尚未分配);圖2為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(已分配一個);圖3為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(全部分配);圖4為本發(fā)明一個實施例的存儲裝置的4個壞塊的每個頁的實際損壞情況(左側(cè)),以及每個壞塊所對應的壞塊頁表(右側(cè));圖5為本發(fā)明一個實施例的存儲裝置的所有40個壞塊的壞塊頁表進行綜合疊加形成的一個總壞塊頁表;圖6為本發(fā)明一個實施例的存儲裝置從總壞塊頁表中挑取X個好頁,建立起的一張?zhí)摂M頁地址大小為X的頁映射表;圖7為本發(fā)明一個實施例的存儲裝置將所有40個壞塊重新組合成20個虛擬塊,并建立起將虛擬塊地址與對應的物理塊地址聯(lián)系起來的虛擬塊映射表;圖8為本發(fā)明一個實施例的存儲裝置的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(已分配三個)。
具體實施例方式下面結(jié)合具體實施例和附圖對本發(fā)明作進一步說明,在以下的描述中闡述了更多的細節(jié)以便于充分理解本發(fā)明,但是本發(fā)明顯然能夠以多種不同于此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下根據(jù)實際應用情況作類似推廣、演繹,因此不應以此具體實施例的內(nèi)容限制本發(fā)明的保護范圍。假定一個基于NAND閃存(Flash)的存儲裝置,其所用的Flash —共有1024個塊,每個塊包含128個頁,每個頁的大小是8K字節(jié),因此每個塊大小為IM字節(jié),其所用的Flash的總物理容量就是1024M字節(jié)。一般地,該存儲裝置可以保留約4%作為冗余塊,即大約40個塊左右用于壞塊替換。這樣所有塊劃分為數(shù)據(jù)區(qū)(984個塊)和冗余區(qū)(40個塊)兩部分,前者的容量為984M,即為裝置的實際有效容量。當數(shù)據(jù)區(qū)的塊出現(xiàn)損壞時,用冗余區(qū)的塊進行替換,以保證對應地址的數(shù)據(jù)仍然可以有效存儲。因此,這里會用到塊地址映射的方法首先建立一張邏輯塊地址映射表,尋址范圍為0 983 (假設(shè)地址從0開始,邏輯地址可以訪問到所有有效容量區(qū)間),以及一張冗余塊分配狀態(tài)表,用于表示冗余塊是否已被用于替換損壞的數(shù)據(jù)塊;初始時邏輯塊地址0 983映射的是物理塊地址0 983,冗余塊則是全部處于未分配狀態(tài)(全部為0),如圖I所示為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(尚未分配)。使用一段時間之后,假設(shè)第37個邏輯塊映射的第37個物理塊損壞,則從冗余區(qū)中選擇一個未被使用的冗余塊(假定第984個 物理塊)作為替換塊,這樣邏輯塊地址映射表中,邏輯塊地址37映射到了物理塊地址984,并且冗余塊分配狀態(tài)表中,將第984個物理塊的對應狀態(tài)標記為I (已分配),如圖2所示為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(已分配一個)。此時裝置在存儲邏輯塊地址37時,數(shù)據(jù)存儲的實際地址變成物理塊地址984了。由于邏輯地址的范圍仍然是O 983,所以數(shù)據(jù)存儲的邏輯塊地址和容量都不會變化,正常存儲不會受任何影響。直到所有的冗余塊都耗盡,也就說,在數(shù)據(jù)區(qū)的984個塊當中,已經(jīng)有40個塊損壞,相應的全部用冗余區(qū)的40個塊都進行了替換,如圖3所示為現(xiàn)有技術(shù)中一個閃存的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(全部分配)。此后如果數(shù)據(jù)區(qū)再有新的塊損壞,則沒有冗余塊可以替換了,這時裝置通常就應該進入寫保護狀態(tài),防止新的壞塊產(chǎn)生后,導致數(shù)據(jù)存儲出錯,換而言之,裝置的存儲壽命也到了,用戶只能將其作為只讀裝置,并盡快將數(shù)據(jù)備份保存到其他地方。 而事實上,對于Flash而言,如果一個塊被定義為壞塊,通常并非是整個塊中的所有物理單元(Cell)都損壞,事實上往往只是其中某一個頁(Page),甚至某個頁中一部分物理單元損壞。因此,該塊其實還有很多頁是可以正常使用的。如果能將標記為壞的塊中的完好的頁利用起來,將其重新組織成冗余塊,就等于增加了冗余塊的數(shù)量,從而延長了裝置的使用壽命。這就是本發(fā)明的關(guān)鍵所在,以下具體說明還是借助上面的例子進行闡述I.針對圖3中被替換的37、73、74、…、851等40個原數(shù)據(jù)區(qū)中的壞塊,建立40張壞塊頁表,每張壞塊頁表記錄每個壞塊中所有頁的好壞狀況。圖4為本發(fā)明一個實施例的存儲裝置的4個壞塊的每個頁的實際損壞情況(左側(cè)),以及每個壞塊所對應的壞塊頁表(右側(cè))。如圖4所示,假定一個閃存(Flash)存儲裝置中的每個塊包含128個頁,例如其中第37個物理塊的第3個頁損壞,則在壞塊頁表I中將其標記為1,其他頁良好,則標記為
O。類似地,例如該Flash中除了第37個物理塊之外,別的物理塊(例如第73個、第74個、第851個)中各自有一個或多個頁損壞(其中第73個物理塊的第60個頁損壞,第74個物理塊的第2、3個頁損壞,第851個物理塊的第I、111個頁損壞),則也可以在每個壞塊各自的壞塊頁表2 4中得到對應體現(xiàn),如圖4所示。2.將40張壞塊頁表的結(jié)果進行綜合疊加,形成一個總壞塊頁表。圖5為本發(fā)明一個實施例的存儲裝置的所有40個壞塊的壞塊頁表進行綜合疊加形成的一個總壞塊頁表。如圖5所示,將所有40張壞塊頁表中的壞頁在這張總壞塊頁表中都標記為I,其他好頁則標記為0,并統(tǒng)計好頁的數(shù)量,在此假設(shè)一共有89個,如圖5所示。3.統(tǒng)計總壞塊頁表中的好頁數(shù)量為m,將其收斂為總頁數(shù)n的最大因數(shù)X。比如本發(fā)明一個實施例的一個Flash中每個塊的總頁數(shù)是128頁,128的因數(shù)有128、64、32、16…等,假如64 < m < 128,則X等于64 ;若32 < m < 64,則x等于32 ;依此類推。4.在總壞塊頁表中挑取X個好頁(當然可以是挑取前X個好頁、挑取后X個好頁、從中間挑取連續(xù)的X個好頁或者任意挑取X個好頁等方式),建立一張?zhí)摂M頁地址大小為X的頁映射表。圖6為本發(fā)明一個實施例的存儲裝置從總壞塊頁表中挑取X個好頁,建立起的一張?zhí)摂M頁地址大小為X的頁映射表。假定在本實施例當中,總壞塊頁表中好頁數(shù)量m=89,因此總頁數(shù)n = 128的最大因數(shù)X = 64,于是建立其一張?zhí)摂M頁地址大小為0 64的頁映射表,如圖6所示。顯然,所有40個壞塊,經(jīng)過這張頁映射表,都能映射到每個塊的好頁的實際物理頁地址。5.令y = n/x,在所有40個壞塊中,每y個壞塊編成一組,重新組合成一個虛擬塊,然后建立虛擬塊映射表將虛擬塊地址與對應的物理塊地址聯(lián)系起來,并通過虛擬塊映射表實現(xiàn)每個虛擬塊與對應物理塊的頁訪問。從總壞塊頁表中挑取X個好頁,建立起的一張?zhí)摂M頁地址大小為X的頁映射表。圖7為本發(fā)明一個實施例的存儲裝置將所有40個壞塊重新組合成20個虛擬塊,并建立起將虛擬塊地址與對應的物理塊地址聯(lián)系起來的虛擬塊映射表。如圖7所示,在本實施例中X = 64,因此,y = 2,這樣一共可以得到40/y = 20個虛擬塊,每個虛擬塊的128個頁分別映射到其對應兩個物理塊的64個頁。6.這些虛擬塊,都是由原來的壞塊組成的,而這些虛擬塊中的頁又是這些壞塊中的好頁組成的,因此,實際上這些塊就變成可以正常使用的好塊了。顯然,可以將這20個虛擬塊當成新的冗余塊,一旦有新的壞塊產(chǎn)生,又可以有替換塊可供使用,相當于存儲裝置的使用壽命得到了延續(xù)。圖8為本發(fā)明一個實施例的存儲裝置的數(shù)據(jù)區(qū)的邏輯塊地址映射表和冗余區(qū)的冗余塊分配狀態(tài)表(已分配三個)。在本實施例中,假設(shè)物理塊37和73組合成虛擬塊2,而使用過程中新產(chǎn)生的壞塊為塊15。這樣,將虛擬塊2替換掉邏輯塊地址映射表中的原來映射的物理塊15即可。為實現(xiàn)方便,可以將虛擬塊進行特殊編號,只要不與已有的塊編號范圍重復即可,比如將虛擬塊的編號統(tǒng)一加100000,這樣,虛擬塊2就編號為塊100002,如圖8所示。7.如果這些虛擬塊作為冗余塊,在后續(xù)的使用過程中再次耗盡時,可以重新經(jīng)過上述步驟I 6的方式,再次組合出新的虛擬塊,作為新的冗余塊,由此存儲裝置的使用壽命可再一次得到延長。理論上,可依此方式不斷在冗余塊耗盡時進行重組,直到無法組合出新的虛擬塊為止。8.但需要注意的是,第二輪冗余塊耗盡后新產(chǎn)生的壞塊有兩種情況,一種是物理塊,另一種是虛擬塊。因此處理起來更加復雜。隨著重組的次數(shù)越多,相應管理算法也越復雜,并且頁映射表的大小也可能因為壞頁變多也相應的進一步縮減,導致虛擬塊需要更多的物理塊進行組合,結(jié)果是組合出來的新冗余塊數(shù)量也更少,相應存儲裝置使用壽命也延長得有限。綜合考慮實現(xiàn)的復雜性以及對存儲裝置壽命延長的效果,對于這種冗余塊耗盡、重組的反復次數(shù)建議做合理的限制,建議重組I 2次即可。因為具體實現(xiàn)方法有很多種,對此本發(fā)明不做進一步舉例說明。綜上所述,本發(fā)明提出的這種方法,在原有存儲裝置的壞塊管理算法的基礎(chǔ)上可直接加以改進,通過頁映射的方式,將產(chǎn)生的壞塊進行重新利用,重組成新的冗余塊,使得存儲裝置的使用壽命得到大幅度的延長。該方法并沒有改變原有的壞塊管理的基本方法,也沒有改變初始設(shè)定的冗余塊的比例和數(shù)量,因而不會改變存儲裝置的有效存儲容量,只是在其原有的管理算法的基礎(chǔ)上進行增強。因此,本發(fā)明理論上可適用于所有的壞塊管理方法,適用范圍極廣而沒有額外的限制,并且因為只需要修改存儲裝置的軟件算法即可實現(xiàn),對于產(chǎn)品的成本基本沒有影響。本發(fā)明雖然以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以做出可能的變動和修改。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何修改、等同變化及修飾,均落入本發(fā)明權(quán)利要求所界定的保護范圍之內(nèi)。
權(quán)利要求
1.一種存儲裝置的壞塊管理方法,包括步驟 A.將所述存儲裝置的所有塊劃分為數(shù)據(jù)區(qū)和冗余區(qū); B.找出所述數(shù)據(jù)區(qū)中的ー個或多個壞塊; C.針對ー個或多個所述壞塊分別建立壞塊頁表,所述壞塊頁表對當前壞塊中的具體損壞頁作出標記; D.將所有所述壞塊頁表的標記結(jié)果進行綜合疊加,形成總壞塊頁表,所述總壞塊頁表對所有所述壞塊中的具體損壞頁作出標記,并統(tǒng)計所述總壞塊頁表中的好頁數(shù)量(m); E.根據(jù)所述存儲裝置的每個塊的總頁數(shù)(η)以及所述總壞塊頁表中的好頁數(shù)量(m),將所述好頁數(shù)量(m)收斂為所述總頁數(shù)(η)的最大因數(shù)(X); F.從所述總壞塊頁表中挑取所述最大因數(shù)(X)個好頁,建立ー張大小為所述最大因數(shù)(x)的頁映射表,將所有所述壞塊映射到每個塊的好頁的物理頁地址; G.令y= n/x,將所有所述壞塊按每y個壞塊編成一組,重新組合成一個或多個虛擬塊,建立起虛擬塊映射表將ー個或多個所述虛擬塊的地址與其對應的物理塊地址聯(lián)系起來,其中η為所述總頁數(shù),X為所述最大因數(shù); H.通過所述虛擬塊映射表并結(jié)合所述頁映射表實現(xiàn)每個虛擬塊與對應物理塊的頁訪問,將ー個或多個所述虛擬塊替換掉所述數(shù)據(jù)區(qū)中的ー個或多個壞塊。
2.根據(jù)權(quán)利要求I所述的壞塊管理方法,其特征在于,從所述總壞塊頁表中挑取好頁包括方式挑取前最大因數(shù)(X)個好頁、挑取后最大因數(shù)(X)個好頁、從中間挑取連續(xù)的最大因數(shù)(X)個好頁或者任意挑取最大因數(shù)(X)個好頁。
3.根據(jù)權(quán)利要求I或2所述的壞塊管理方法,其特征在于,所述壞塊管理方法中的所述虛擬塊的重新組合次數(shù)為I 2次。
4.根據(jù)權(quán)利要求I或2所述的壞塊管理方法,其特征在于,所述壞塊管理方法是在所述冗余區(qū)耗盡之后再執(zhí)行的,或者是在所述冗余區(qū)耗盡之前執(zhí)行的。
5.根據(jù)權(quán)利要求4所述的壞塊管理方法,其特征在于,所述壞塊管理方法的固件程序燒入于所述存儲裝置中。
6.根據(jù)權(quán)利要求I所述的壞塊管理方法,其特征在于,所述存儲裝置為NAND型閃存或者NOR型閃存。
全文摘要
本發(fā)明提供一種存儲裝置的壞塊管理方法,包括步驟找出數(shù)據(jù)區(qū)中的壞塊;建立壞塊頁表,對壞塊中的壞頁作標記;將所有壞塊頁表的標記結(jié)果疊加,形成總壞塊頁表,對所有壞塊中的壞頁作標記并統(tǒng)計好頁數(shù)量;根據(jù)塊的總頁數(shù)及好頁數(shù)量,將好頁數(shù)量收斂為總頁數(shù)的最大因數(shù);從總壞塊頁表中挑取最大因數(shù)個好頁,建立大小為最大因數(shù)的頁映射表,將所有壞塊映射到每個塊的好頁地址;令y=n/x,將所有壞塊按每y個壞塊編組,重組成虛擬塊,建立虛擬塊映射表,n為總頁數(shù),x為最大因數(shù);由虛擬塊映射表并結(jié)合頁映射表實現(xiàn)每個虛擬塊與對應物理塊的頁訪問,將虛擬塊替換數(shù)據(jù)區(qū)中的壞塊。本發(fā)明能不增加冗余塊的數(shù)量和比例,即可大幅度延長存儲裝置的使用壽命。
文檔編號G06F12/06GK102622306SQ20121004029
公開日2012年8月1日 申請日期2012年2月21日 優(yōu)先權(quán)日2012年2月21日
發(fā)明者張欽 申請人:中穎電子股份有限公司