專利名稱:成塊可擦存儲器的管理數(shù)據(jù)組的復(fù)原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對用扇區(qū)方式描述的并成塊可擦的非易失存儲器的管理數(shù)據(jù)組進(jìn)行復(fù)原方法,該管理數(shù)據(jù)組保存在所屬的存儲控制器的一個易失的標(biāo)志存儲器中。
廣泛流傳的非易失的半導(dǎo)體存儲器(快閃存儲器)以塊和扇區(qū)方式編成,其中一個塊譬如由32個扇區(qū)每個為512字節(jié)組成。存儲器具有以扇區(qū)方式寫新信息的特點(diǎn),并且只可在事先寫入可擦扇區(qū)??煞謩e對一個塊對各個扇區(qū)共同實(shí)現(xiàn)擦除。寫入存儲器的一個扇區(qū)比讀所需時間長,并且擦除一個塊的工作需要一個長的時間譬如幾個毫秒。
按照同時以此提出的方法,由一個在所屬的存儲控制器中的程序管理一個快速訪問的易失的標(biāo)志存儲器中的表,在該易失的標(biāo)志存儲器中分別成塊和成扇區(qū)地記錄管理數(shù)據(jù)組。這些表主要在寫入非易失存儲器的扇區(qū)時,由分配邏輯的塊地址到物理的塊地址和備用塊的地址組成。當(dāng)現(xiàn)在電流斷開時,數(shù)據(jù)從易失的標(biāo)志存儲器內(nèi)丟失。那么,在這個時刻,數(shù)據(jù)必須安全地包含在非易失存儲器的一部分中,以便在重新啟動后可用正確的數(shù)據(jù)繼續(xù)工作。但是,對此在斷電時由于寫操作的持續(xù)時間不再有時間。所以通過拷貝持久地保障所有管理數(shù)據(jù)組的安全使所有的寫操作放慢了速度,并且導(dǎo)致增強(qiáng)損耗非易失存儲器。
還有在專利說明書US 5 930 193 A中,敘述了一種在系統(tǒng)斷開時在非易失存儲器的一個特別存儲區(qū)中存儲管理表的方法。但是,這也只是在設(shè)置的斷開的情況下才是可能的,在沒等到斷電時管理數(shù)據(jù)組就丟失了。
本發(fā)明的任務(wù)是公開一種方法,即允許對用扇區(qū)方式描述的和成塊可擦的存儲器的管理數(shù)據(jù)組保存在一個所屬的存儲控制器的快速地易失的標(biāo)志存儲器中,并且在中斷后重新啟動時可完全復(fù)原這個管理數(shù)據(jù)組。
這個任務(wù)可由以下來解決,即在非易失存儲器中連續(xù)地更新一個重建表,作為項(xiàng)可將范圍內(nèi)的寫和擦操作記錄在該重建表內(nèi),以致于內(nèi)部標(biāo)志存儲器的管理數(shù)據(jù)組,分別在斷電后重新啟動時完全得到重建。
優(yōu)選的實(shí)施方案在從屬權(quán)利要求中給出。
在非易失存儲器中,保留了一個或多個將重建表寫入其中的數(shù)據(jù)塊。這些重建表具有確定的長度譬如為128個扇區(qū)。在易失的標(biāo)志存儲器中,為所描述的存儲器塊建立起管理數(shù)據(jù)組,在該管理數(shù)據(jù)組中,其中注釋了邏輯和物理的塊地址,以及當(dāng)前所寫的備用塊的地址。如果現(xiàn)在要說明新的存儲區(qū),或提供新的備用塊,并且解除過時的從邏輯到物理的地址的分配,則可連續(xù)地每次都將一個項(xiàng)寫入重建表。在重建表內(nèi)的相應(yīng)的項(xiàng)至少包括原存儲區(qū)的邏輯的塊地址、物理的塊地址,以及可能使用的備用塊的地址。
當(dāng)斷電后現(xiàn)在重新啟動存儲器系統(tǒng)時,由存儲器控制器的程序在易失標(biāo)志存儲器中空白地預(yù)置管理數(shù)據(jù)組,然后從開始起就傳輸重建表,并且相應(yīng)地在重建表中的每個項(xiàng)的分配都填入管理數(shù)據(jù)組內(nèi)。這對于重建表中的每個項(xiàng)來說都要進(jìn)行重復(fù),直到這個表達(dá)到結(jié)束為止。在此,多次重寫幾種分配是完全可能的,因?yàn)檫@幾種分配也可在原存儲過程中得到更新。但是,在重新啟動結(jié)束時,可重新建立在管理數(shù)據(jù)組中地址分配的當(dāng)前狀態(tài),如該狀態(tài)在斷電前所處的那樣。
在重建表的優(yōu)選的實(shí)施方案中,這種情況可如此構(gòu)成,即在表中的每個項(xiàng)都準(zhǔn)是一個扇區(qū)長,盡管不是填滿扇區(qū)的所有字節(jié)。由于存儲器總是按扇區(qū)方式寫入,所以對于一次數(shù)據(jù)準(zhǔn)備不需附加耗費(fèi)。盡管以這種方式使用不了幾個存儲單元,但是這在整個存儲器的大小上并不具有決定性的意義。由于所有的扇區(qū)從表內(nèi)的當(dāng)前項(xiàng)起也可擦除,所以無須其它耗費(fèi)就可將下一個項(xiàng)直接寫入表內(nèi)。
在幾種類型的非易失存儲器中,只描述一個扇區(qū)的一段、譬如128字節(jié)的一段,而與扇區(qū)的其它的段無關(guān)也是可能的。在這些類型中,只描述一個扇區(qū)的這樣一個段,由此譬如對重建表只需一個存儲區(qū)。
通過特別建立重建表和在非易失存儲器中存儲這種表可達(dá)到,在管理數(shù)據(jù)組重建期間,也會引起電流無故障地再次中斷。在系統(tǒng)重新啟動時,同樣地重建表也可再次完整地進(jìn)行分析計算,然后由此達(dá)到管理數(shù)據(jù)組的當(dāng)前狀態(tài)。
由于重建表具有一個確定的長度、譬如128項(xiàng),所以在通常的存儲工作中填充重建表直到快結(jié)束為止。當(dāng)寫入最后一項(xiàng)時,則優(yōu)選啟動重組。對此,關(guān)于重組的注釋可作為最后一項(xiàng)寫入重建表內(nèi)。然后,所有的地址分配,如它在當(dāng)前列入管理數(shù)據(jù)組內(nèi)那樣,都要解除,并且由此在管理數(shù)據(jù)組中建立起確定的基本狀態(tài),雖然該基本狀態(tài)在系統(tǒng)重新啟動時是作為第一種狀態(tài)預(yù)置的。
當(dāng)在成功地重組以后將作業(yè)項(xiàng)寫入重建表時,要繼續(xù)改進(jìn)所述的方法。優(yōu)選這種作業(yè)項(xiàng)設(shè)有一個計數(shù)值,該計數(shù)值在每次重組時都向高端計數(shù)。
此外,在每次重組時都將一個新的重建表置入其它的存儲區(qū)內(nèi),是有利的。這些新的重建表都是從處于可擦存儲區(qū)的棧中取出,這些可擦的存儲區(qū)不是用原來方式擦除的就是由后臺程序擦除的。作業(yè)項(xiàng)作為第一項(xiàng)寫入新的重建表中。然后,釋放該重建表的迄今所用的塊,并且由此這樣表明的特征是,重建表由可進(jìn)行擦除的后臺程序處理。
如果在重組的過程中,斷電,新的作業(yè)項(xiàng)還沒有寫入,則在系統(tǒng)重新啟動時可重新啟動重組。這個重組可隨時進(jìn)行重復(fù)。
如果作業(yè)項(xiàng)已經(jīng)寫入,但還沒有釋放該迄今所用的重建表,則可發(fā)生,在系統(tǒng)重新啟動時,得到2個重建表、即迄今所用的和新的重建表。然后,根據(jù)計數(shù)值在重建表的作業(yè)項(xiàng)內(nèi)確定,哪個表是新表,并且相應(yīng)地繼續(xù)重組過程。由此,在這種情況下,也可保障存儲系統(tǒng)的正確地繼續(xù)工作的安全。
在每次進(jìn)行從物理的塊地址到邏輯的塊地址的新的地址分配時,塊指示器必須在塊指示器表中相應(yīng)地變化。這個塊指示器表存在于非易失存儲器中,并且寫變化每次都必須通過備用塊機(jī)構(gòu)進(jìn)行。為使寫操作最佳化,在易失存儲器中保留一個指示器中間表,在該指示器中間表中保持著具有邏輯的塊地址的和變化的物理的塊地址的變化的地址分配。這個表按照邏輯的塊地址排列。如果現(xiàn)在進(jìn)行地址分配,則首先在指示器中間表中查找,邏輯地址是否在那里登記。如果是這種情況,則可使用在那里給出的物理存儲器塊地址,否則使用來自塊指示器表的物理存儲器塊地址。
由此,指示器中間表給出,哪些項(xiàng)在塊指示器表中不再有效。在現(xiàn)述的重組中,也可在非易失存儲器中重新寫入塊指示器表,并且用來自指示器中間表的值進(jìn)行更新。由此,塊指示器的變化只在重組時重新寫入非易失存儲器中,并且由此節(jié)省了大量的寫操作。
在斷電時,指示器中間表丟失。由于具有其邏輯和物理的塊地址的每次新的地址分配時,自最后一次重組以來,都是作為項(xiàng)在重建表內(nèi)存儲,所以在系統(tǒng)重新啟動時指示器中間表也要一起重新建立。
本發(fā)明的實(shí)施方案在圖中舉例說明。
圖1示出了重建表的結(jié)構(gòu)圖2示出了中間指示器表與塊指示器表的關(guān)系。
在圖1中,示出了重建表RKT的結(jié)構(gòu)。在這里該表由128項(xiàng)組成,該128項(xiàng)分別是長為一個扇區(qū)的長度。第一項(xiàng)以作業(yè)項(xiàng)FE為特征,此外還包括作業(yè)計數(shù)器FZ。它有其它的管理數(shù)據(jù)VD的區(qū)。從第二項(xiàng)起,記錄了重建項(xiàng)RE,該重建項(xiàng)RE從注釋的寫操作起,包括邏輯的塊地址LBA、物理的存儲區(qū)地址SBA、已用的備用塊地址ABA以及其它的管理數(shù)據(jù)。在重建表RKT的最后的項(xiàng)則以重組項(xiàng)OE為特征。它也有其它管理數(shù)據(jù)VD的區(qū)。
圖2示出了塊指示器表BZT,該表BZT用邏輯地址LBA指示,并且分別包括所屬的物理存儲區(qū)地址SBA。這個表BZT位于非易失存儲器中。在易失的標(biāo)志存儲器中,建有指示器中間表ZZT,該指示器中間表ZZT在每個表所列的行中都包括一個從邏輯地址LBA到物理存儲區(qū)地址SBA的分配。這些是邏輯地址LBA,其到物理存儲區(qū)地址SBA的分配從最后的重組以來就開始變化。表所列的行按照出現(xiàn)的邏輯的塊地址LBAn分類,并且在塊指示器表BZT中給出了不再有效的項(xiàng)和在下一個重組時更新的項(xiàng)。
附圖標(biāo)記清單ABA 備用塊地址BZT 塊指示器表FE 作業(yè)項(xiàng)FZ 作業(yè)計數(shù)器LBA 邏輯塊地址LBAn在ZZT中邏輯塊地址nOE 重組項(xiàng)RE 重建項(xiàng)RKT 重建表
SBA 存儲區(qū)地址VD 管理數(shù)據(jù)ZZT 指示器中間表
權(quán)利要求
1.復(fù)原一個以扇區(qū)方式描述的和成塊可擦的非易失存儲器的管理數(shù)據(jù)組的方法,該管理數(shù)據(jù)組保存在所屬的存儲控制器的可快速訪問內(nèi)部的易失標(biāo)志存儲器中,其特征在于,在非易失存儲器的一個或多個存儲區(qū)中連續(xù)地更新重建表(RKT),在該重建表(RKT)中在非易失存儲器范圍內(nèi)作為項(xiàng)記錄所有的寫和擦操作,以致于存儲控制器的內(nèi)部的標(biāo)志存儲器的管理數(shù)據(jù)組可在斷電后重新啟動時分別完全得到重建。
2.按照權(quán)利要求1所述的方法,其特征在于,記入重建表(RKT)中的每個項(xiàng)都是一個扇區(qū)或一個扇區(qū)段那么長。
3.按照權(quán)利要求1所述的方法,其特征在于,當(dāng)數(shù)據(jù)組重建電流再次中斷時,可重復(fù)標(biāo)志存儲器的管理數(shù)據(jù)組的重建。
4.按照權(quán)利要求1所述的方法,其特征在于,在達(dá)到預(yù)定的重建表(RKT)的填充狀態(tài)時,啟動一個重組以建立在標(biāo)志存儲器和重建表(RKT)中管理數(shù)據(jù)組的確定的基本狀態(tài),并且重組的這種啟動作為最后一項(xiàng)(OE)在重建表(RKT)中進(jìn)行注釋。
5.按照權(quán)利要求4所述的方法,其特征在于,每次在重組成功時,作業(yè)項(xiàng)(FE)在包括一個計數(shù)器(FZ)在內(nèi)的重建表中實(shí)現(xiàn),該計數(shù)器(FZ)在作業(yè)項(xiàng)中向高端計數(shù)。
6.按照權(quán)利要求5所述的方法,其特征在于,在成功地重組以后為重新建立重建表(RKT),可釋放按后臺程序進(jìn)行擦除的迄今所使用的存儲區(qū),并且相應(yīng)地預(yù)置還可擦除的塊。
7.按照權(quán)利要求5所述的方法,其特征在于,在重建表(RKT)中第一項(xiàng)是一個作業(yè)項(xiàng)(FE)。
8.按照權(quán)利要求1所述的方法,其特征在于,在標(biāo)志存儲器中作為管理數(shù)據(jù)組的一部分保存分別為無效的塊指示器用的表(ZZT),表(ZZT)包含在非易失存儲器中塊指示器表(BZT)內(nèi)。
9.按照權(quán)利要求3所述的方法,其特征在于,在重組時,根據(jù)用于無效的塊指示器的表(ZZT)可分別更新塊指示器表(BZT)。
全文摘要
本發(fā)明涉及復(fù)原一個以扇區(qū)方式描述的和以塊方式可擦的非易失存儲器的管理數(shù)據(jù)組的方法,該管理數(shù)據(jù)組保存在所屬的存儲控制器的可快速訪問內(nèi)部的易失標(biāo)志存儲器中,其中在非易失存儲器的一個或多個存儲區(qū)中連續(xù)地更新重建表(RKT),在該重建表(RKT)中在非易失存儲器范圍內(nèi)作為項(xiàng)記錄所有的寫和擦操作,以致于存儲控制器的內(nèi)部標(biāo)志存儲器的管理數(shù)據(jù)組可在斷電后重新啟動時分別完全得到重建。
文檔編號G11C16/10GK1662873SQ03814193
公開日2005年8月31日 申請日期2003年6月17日 優(yōu)先權(quán)日2002年6月19日
發(fā)明者C·鮑姆霍夫, R·屈內(nèi) 申請人:海珀斯通股份公司