亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Nand-Flash存儲(chǔ)系統(tǒng)的管理方法

文檔序號(hào):6458736閱讀:145來源:國知局
專利名稱:一種Nand-Flash存儲(chǔ)系統(tǒng)的管理方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)系統(tǒng)的管理方法,尤其涉及計(jì)算機(jī)Nand-Flash (非 易失閃存)存儲(chǔ)系統(tǒng)的管理方法。
技術(shù)背景Nand-Flash存儲(chǔ)系統(tǒng)是一種非易失閃存存儲(chǔ)系統(tǒng),Nand-Flash存儲(chǔ)系統(tǒng)具 有很快的寫入和擦除速度,主要功能是存儲(chǔ)資料,其在U-盤、數(shù)碼相機(jī)、MP3、 MP4、手機(jī)、GPS接收裝置等手持移動(dòng)裝置中得到了廣泛的應(yīng)用。傳統(tǒng)的Nand-Flash存儲(chǔ)系統(tǒng)是主要基于單層單元(SLC,即Single Layer Cell) Flash器件的存儲(chǔ)系統(tǒng),但是近兩年隨著Flash器件工藝的改進(jìn),不但原 有的基于單層單元(SLC) Flash器件的Nand-Flash存儲(chǔ)系統(tǒng)在訪問控制上有 了變化,還出現(xiàn)了新型的基于多層單元(MLC,即Multiple Layer Cell) Flash 器件的Nand-Flash存儲(chǔ)系統(tǒng),并且由于后者在相同成本下有兩倍的容量優(yōu)勢(shì), 將替代基于單層單元(SLC) Flash器件的Nand-Flash存儲(chǔ)系統(tǒng)。傳統(tǒng)單層單 元Flash器件與基于多層單元(MLC) Flash器件在物理接口和內(nèi)部特性上都有 很大不同,因此傳統(tǒng)Flash器件存儲(chǔ)系統(tǒng)的存儲(chǔ)管理方法在速度和穩(wěn)定性上都 已不能與新型Flash器件相適應(yīng)。例如,現(xiàn)有技術(shù)關(guān)于對(duì)基于單層單元(SLC) Flash器件的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法中,使用了前向鏈表和頁替換寫 入的技術(shù),來實(shí)現(xiàn)閃存的邏輯物理地址轉(zhuǎn)換,該技術(shù)的不足之處在于其中使 用前向鏈表就必須發(fā)生物理頁面的局部寫入和再次寫入,不能使物理頁面一次 性寫入;而其中使用的頁替換寫入的技術(shù)會(huì)導(dǎo)致同一物理塊內(nèi)的頁面非順序?qū)?入。在新型的基于多層單元(MLC) Flash器件的Nand-Flash存儲(chǔ)管理方法中, 上述頁面的局部寫入和再次寫入以及同一物理塊內(nèi)的頁面非順序?qū)懭脒@樣的訪 問是受到嚴(yán)格限制的,因?yàn)槠錈o法保證數(shù)據(jù)的完整性。發(fā)明內(nèi)容本發(fā)明針對(duì)現(xiàn)有技術(shù)中的不足,提供一種基于多層單元(MIX) Flash器件 的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其既能滿足物理頁面一次性寫入的要求,又能保證同一物理塊內(nèi)的頁面按順序?qū)懭耄瑥亩趯?shí)現(xiàn)閃存的邏輯物理地址轉(zhuǎn) 換時(shí),能保證數(shù)據(jù)的完整性。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的
一種Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,動(dòng)態(tài)的將多個(gè)物理塊對(duì)應(yīng)到一個(gè)邏 輯塊,形成一個(gè)由各物理塊構(gòu)成的邏輯塊鏈;在每個(gè)物理塊的第一物理頁的擴(kuò) 展區(qū)域,分別存放該物理塊所對(duì)應(yīng)的邏輯塊號(hào)信息和在邏輯塊鏈中它的前一個(gè) 物理塊的塊號(hào)信息,在系統(tǒng)初始化時(shí),通過存放的上述信息,重建出與所述邏 輯塊鏈對(duì)應(yīng)的雙向鏈表,在模塊正常工作時(shí),依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的讀 寫操作。
進(jìn)一步,依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),具體步驟如下
(1) 、使每個(gè)邏輯頁寫入的物理頁號(hào)與邏輯頁號(hào)一致;
(2) 、在邏輯塊鏈中的每個(gè)物理塊可以全寫滿,也可以局部被寫入,但必須滿
足每個(gè)物理塊最后一個(gè)被寫入的頁前面的所有頁也被寫入過,它后面的所有頁 都是空閑頁。
(3) 、依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),在所述雙向鏈表對(duì)應(yīng)的邏輯塊 鏈中從前往后搜索,只要找到該邏輯塊鏈上已使用物理頁數(shù)小于所請(qǐng)求寫入邏 輯頁號(hào)的第一個(gè)物理塊,就直接將數(shù)據(jù)寫入該物理塊的所請(qǐng)求寫入邏輯頁;如 果請(qǐng)求寫入的邏輯頁號(hào)小于該邏輯塊鏈的最后一個(gè)物理塊的已使用物理頁號(hào),
則在邏輯塊鏈上新添加一個(gè)空閑物理塊,將所請(qǐng)求寫入邏輯頁之前的所有有效 頁數(shù)據(jù)復(fù)制到當(dāng)前新空閑物理塊中,再在所請(qǐng)求寫入的邏輯頁上寫入數(shù)據(jù)。
更具體地說,依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),在所述雙向鏈表對(duì) 應(yīng)的邏輯塊鏈中從前往后正向搜索,當(dāng)在該邏輯塊鏈上找到已使用物理頁號(hào)小 于所請(qǐng)求寫入邏輯頁號(hào)的第一個(gè)物理塊,按下述方法直接將數(shù)據(jù)寫入該物理塊:
在該物理塊上所述已使用物理頁號(hào)與所請(qǐng)求寫入邏輯頁號(hào)之間的所有頁面空 間,復(fù)制填入該物理塊的前向物理塊中相應(yīng)頁面空間的物理頁上的數(shù)據(jù),然后 再在所請(qǐng)求寫入邏輯頁號(hào)上寫入數(shù)據(jù);或者,依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫 操作時(shí),在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中從前往后搜索,如果所有的物理塊 已使用物理頁號(hào)都大于所請(qǐng)求寫入的邏輯頁號(hào),則在邏輯塊鏈上新添加一個(gè)空 閑物理塊,按下述方法將數(shù)據(jù)寫入該空閑物理塊在所請(qǐng)求寫入邏輯頁之前的 所有頁面空間,復(fù)制填入該空閑物理塊的前向物理塊中相應(yīng)頁面空間的物理頁上的數(shù)據(jù),然后再在所請(qǐng)求寫入邏輯頁號(hào)上寫入數(shù)據(jù)。
進(jìn)一步,依據(jù)所述雙向鏈表迸行數(shù)據(jù)的讀操作時(shí),具體步驟如下 在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中自后往前反向搜索,找到第一個(gè)寫入頁
數(shù)不小于當(dāng)前請(qǐng)求的讀操作邏輯頁號(hào)的物理塊,即為有效的讀取目標(biāo)物理塊,
在該目標(biāo)物理塊上讀取和當(dāng)前請(qǐng)求的讀操作邏輯頁號(hào)相同的物理頁號(hào),即得到
所需數(shù)據(jù)。
當(dāng)一個(gè)邏輯的長度超過設(shè)定的門限值或者系統(tǒng)需要更多可用的空閑物理塊 時(shí),執(zhí)行回收操作,具體步驟如下
從該邏輯塊鏈中的最后一個(gè)物理塊開始自后往前反向搜索,假設(shè)最后一個(gè) 物理塊使用到第N頁,則由倒數(shù)第二個(gè)物理塊的第N+1頁開始復(fù)制,復(fù)制到該 物理塊的第一個(gè)空閑頁為止;然后依次尋找前一個(gè)使用過的頁數(shù)大于當(dāng)前已復(fù) 制頁數(shù)的物理塊,再繼續(xù)在該物理塊的相應(yīng)頁復(fù)制它的數(shù)據(jù),復(fù)制到該物理塊 的第一個(gè)空閑頁為止,直到最后一個(gè)物理塊的最后一頁被填滿為止,最后,釋 放掉原邏輯塊鏈的除最后一塊的所有物理塊。
上述技術(shù)方案中-
所述邏輯塊號(hào)是指該模塊面像上層調(diào)用所虛擬出來的塊號(hào),其中模塊是指 整個(gè)Nand-Flash管理系統(tǒng)在上層系統(tǒng)看來只是一個(gè)標(biāo)準(zhǔn)的塊設(shè)備(即以塊為單 位,每個(gè)單位可以單獨(dú)讀寫的存儲(chǔ)設(shè)備);
物理塊號(hào),是指該模塊所管理的Nand-Flash物理設(shè)備的塊號(hào)(屬于 Nand-Flash管理系統(tǒng)的存儲(chǔ)區(qū)中用于尋址的編號(hào));
邏輯塊鏈,是指同一邏輯塊由多個(gè)物理塊與之對(duì)應(yīng),這些物理塊從前往后 虛擬連接成的一條鏈?zhǔn)浇Y(jié)構(gòu);
所述的雙向鏈表,是指在內(nèi)存中存放的物理塊號(hào)對(duì)應(yīng)關(guān)系表,該表是由儲(chǔ) 存在Nand-Flash每一頁的擴(kuò)展區(qū)域的邏輯塊號(hào)和前向替換物理塊號(hào)信息重建得
出的;
所述的邏輯頁號(hào),是指邏輯地址對(duì)應(yīng)在邏輯塊內(nèi)的頁號(hào);比如,需要訪問 的邏輯地址為0x00201000,假設(shè)該Nand-Flash的物理塊大小為256KB,頁大小 為2KB,則邏輯地址0x00201000對(duì)應(yīng)的是第8塊的第2頁(0x00201000 = 256K * 8 + 2K * 2),那我們稱該邏輯地址對(duì)應(yīng)的邏輯塊號(hào)為8,邏輯頁號(hào)為2。該 邏輯塊號(hào)8,但在讀寫時(shí)可能對(duì)應(yīng)到不同的物理塊,所謂邏輯頁號(hào)和物理頁號(hào)一
6致是指,無論該邏輯地址對(duì)應(yīng)到那個(gè)物理塊,其對(duì)應(yīng)的物理頁號(hào)始終為2,和邏 輯頁號(hào)一致。
所述的物理頁號(hào),是指Nand-Flash存儲(chǔ)器物理塊內(nèi)的頁號(hào)(屬于 Nand-Flash管理系統(tǒng)的存儲(chǔ)區(qū)中用于尋址的編號(hào));
所述的第一物理頁是指每個(gè)Nand—Hash管理系統(tǒng)的存儲(chǔ)區(qū)域分為N物 理塊,每個(gè)塊又分為X頁,每一頁分為兩部分區(qū)域, 一部分為普通的數(shù)據(jù)區(qū), 另一部分為的信息區(qū),兩個(gè)區(qū)域都可存放數(shù)據(jù)。第一物理頁就是指的每一物理 塊的第一頁。
所述的有效的讀取目標(biāo)物理塊,是指在一個(gè)邏輯塊鏈中,某目標(biāo)邏輯頁有 效數(shù)據(jù)所存放的那個(gè)物理塊;目標(biāo)邏輯頁號(hào)是指上層發(fā)出讀寫請(qǐng)求的頁號(hào),也 就是整個(gè)向上層虛擬出來的邏輯頁號(hào),而非底層真正的物理頁號(hào),由于本算法 在邏輯頁和物理頁映射上使用的一一映射,所以邏輯頁號(hào)和物理頁號(hào)相等;
所述的空閑物理塊,是指沒有參與到某個(gè)邏輯塊鏈中的可用的物理塊;
所述的有效頁數(shù)據(jù),是指這些邏輯頁在讀取時(shí)對(duì)應(yīng)的那個(gè)物理頁內(nèi)的數(shù)據(jù)。本發(fā)明的優(yōu)點(diǎn)在于
用本發(fā)明進(jìn)行寫操作時(shí),其既能滿足物理頁面一次性寫入的要求,又能保 證了同一物理塊內(nèi)的頁面按順序?qū)懭?,從而在?shí)現(xiàn)閃存的物理地址轉(zhuǎn)換時(shí),能 保證數(shù)據(jù)的完整性。
用本發(fā)明進(jìn)行讀操作時(shí),由于搜索讀取位置都在內(nèi)存中完成,所以大大減 少了搜索的時(shí)間,減小了讀取的時(shí)間延遲。對(duì)于MLC—Flash器件芯片,在Limix 操作系統(tǒng)下加入RS-ECC算法(里德所羅門算法)后,在應(yīng)用層讀取文件速度 可達(dá)3MB/s 5MB/s。本發(fā)明雖然對(duì)隨機(jī)的寫入看起來效率不髙,但對(duì)于通常 情況下的順序?qū)懭肽苡休^快的速度,同樣在應(yīng)用層加入了 RS-ECC算法的文件 寫入速度可達(dá)0.8MB/s 1.5MB/s。
利用上述雙向鏈表及"雙向搜索"技術(shù)的優(yōu)點(diǎn)在于能夠滿足物理頁面一次 性寫入的要求,如果只用前向指針?biāo)阉?,要發(fā)生2次寫入同一個(gè)物理頁面。之 所以采用"直接復(fù)制技術(shù)",是因?yàn)橹挥羞@樣才能既不影響速度,同時(shí)保證在同 一塊中滿足頁的順序?qū)懭?。上述兩種技術(shù)結(jié)合起來才能滿足數(shù)據(jù)完整性的要求。


圖1為本發(fā)明構(gòu)建內(nèi)存反向鏈表實(shí)施例1的示意圖;圖2為由實(shí)施例1構(gòu)建的內(nèi)存雙向鏈表的示意圖; 圖3為本發(fā)明構(gòu)建內(nèi)存反向鏈表實(shí)施例2的示意圖; 圖4為由實(shí)施例2構(gòu)建的內(nèi)存雙向鏈表的示意圖 圖5為本發(fā)明的寫操作實(shí)施例1的示意圖; 圖6為本發(fā)明寫操作實(shí)施例2的示意圖; 圖7為本發(fā)明讀操作實(shí)施例示意圖8為本發(fā)明中頁回收操作的示意圖。
具體實(shí)施例方式
以下結(jié)合

本發(fā)明的具體實(shí)施方式
。 (一)、構(gòu)建雙向鏈表
圖1為本發(fā)明構(gòu)建反向鏈表實(shí)施例1的示意圖。見圖1,本發(fā)明方法動(dòng)態(tài)的 將物理塊7及物理塊9共同對(duì)應(yīng)表示一個(gè)邏輯塊號(hào)M,形成一個(gè)由物理塊7及物 理塊9虛擬連接構(gòu)成的邏輯塊鏈(LBC) —M。圖1中物理塊7由豎線分成左右兩 區(qū),左區(qū)為數(shù)據(jù)的正常存放區(qū),右區(qū)為擴(kuò)展區(qū)域;圖1中物理塊7由橫線分成 上下兩區(qū),上區(qū)為物理塊7中第一物理頁的存放區(qū),下區(qū)為其余物理頁的存放 區(qū),白色區(qū)為空閑存放區(qū)。物理塊9的圖示相同。在物理塊9的第一物理頁的 擴(kuò)展區(qū)域10分別存放該物理塊所對(duì)應(yīng)的邏輯塊號(hào)M和在邏輯塊鏈中它的前一個(gè) 物理塊(又稱前向替換物理塊)的塊號(hào)7,作為物理塊9的反向鏈附加信息(M, 7);在物理塊7的第一物理頁的擴(kuò)展區(qū)域10也存放了它所對(duì)應(yīng)表示的邏輯塊號(hào) M,由于物理塊7是邏輯塊M的第一塊,所以他的前向替換物理塊號(hào)為一個(gè)特殊 標(biāo)記HEAD,以表示該塊是邏輯塊M上的第一塊,由此物理塊7的反向鏈附加信 息為(M, HEAD)。圖1至圖8中,物理塊之間上方的弧形箭頭表示前向替換物 理塊的方位。
之所以要在Nand-Flash存儲(chǔ)系統(tǒng)中每個(gè)物理塊的第一物理頁的擴(kuò)展區(qū)域 10,分別存放前向替換物理塊號(hào),是因?yàn)橹挥惺褂们跋蛱鎿Q物理塊號(hào),才能滿 足基于新型多層單元(MLC) Flash器件的Nand-Flash存儲(chǔ)系統(tǒng)的物理頁面一 次性寫入的要求,如果使用后向替換物理塊號(hào),則在寫入數(shù)據(jù)的時(shí)候并不確切 知道當(dāng)前塊的后向替換物理塊究竟是哪一塊,必須等到下一塊分配的時(shí)候才寫 入后向替換物理塊的信息,因此就免不了發(fā)生再次寫入的情況,這對(duì)保證 Nand-Flash的數(shù)據(jù)完整性帶來了較大的風(fēng)險(xiǎn)。本發(fā)明方法完全避免了這樣的風(fēng)險(xiǎn)。
在系統(tǒng)初始化時(shí),完整的搜索Nand-Flash存儲(chǔ)器中物理塊9及物理塊7上 存放的上述反向鏈附加信息(M, 7)以及(M, HEAD),可以重建出完整的與所 述邏輯塊鏈(LBC)—M對(duì)應(yīng)的反向鏈表。
實(shí)施例l,見圖l,在系統(tǒng)初始化時(shí),首先搜索到物理塊9,得到它所表示 的邏輯塊號(hào)為M,它的前向物理塊號(hào)為7,讀取物理塊7的前向替換物理塊號(hào)時(shí), 發(fā)現(xiàn)為HEAD標(biāo)記,則對(duì)邏輯M塊鏈的搜索結(jié)束,得到邏輯M塊鏈(LBC)—M的 內(nèi)存反向鏈表9->7,再根據(jù)該內(nèi)存反向鏈表構(gòu)建出邏輯M塊鏈(LBC)—M的內(nèi) 存正向鏈表7->9,進(jìn)而構(gòu)成一個(gè)完整的邏輯M塊鏈(LBC) —M的內(nèi)存雙向鏈表 7<->9,如圖2所示,圖2為由上述實(shí)施例1構(gòu)建的內(nèi)存雙向鏈表的示意圖。
實(shí)施例2,圖3為本發(fā)明構(gòu)建內(nèi)存反向鏈表實(shí)施例2的示意圖。見圖3,在 系統(tǒng)初始化時(shí),首先搜索到物理塊4,得到它所表示的邏輯塊號(hào)為K,它的前向 替換物理塊號(hào)為8,接著在對(duì)物理塊8進(jìn)行搜索,得到它的前向替換物理塊號(hào)為 5,再讀取5的前向替換物理塊號(hào)時(shí)發(fā)現(xiàn)為HEAD標(biāo)記,則對(duì)邏輯K塊鏈的搜索 結(jié)束,得到邏輯K塊鏈(LBC)—K的內(nèi)存反向鏈表4->8-〉5,再根據(jù)反向鏈表 構(gòu)建出邏輯K塊鏈(LBC)—K的內(nèi)存正向鏈表[K]: 5->8->4,進(jìn)而構(gòu)成一個(gè)完整 的邏輯K塊鏈(LBC)—K的內(nèi)存雙向鏈表[幻5<->8<->4,如圖4所示,圖4 為由上述實(shí)施例2構(gòu)建的內(nèi)存雙向鏈表的示意圖。
(二)、依據(jù)所述內(nèi)存雙向鏈表進(jìn)行數(shù)據(jù)的讀寫操作
在模塊正常工作時(shí),依據(jù)內(nèi)存雙向鏈表進(jìn)行數(shù)據(jù)的讀寫操作。
1、寫操作
按雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),具體步驟如下 (1)、每個(gè)邏輯頁寫入的物理頁號(hào)與邏輯頁號(hào)一致。圖5為本發(fā)明頁映射的 寫操作實(shí)施例1的示意圖,圖5中示出由物理塊7、物理塊5以及物理塊13組成 的虛擬邏輯塊鏈(LBC)所對(duì)應(yīng)的雙向鏈表為7〈-〉5〈-〉13。圖5中的斜線區(qū)為已 使用或已寫入的物理頁,空白區(qū)為未使用或未寫入的物理頁,斜線區(qū)中的豎向 分界線為普通存儲(chǔ)區(qū)(左部)與擴(kuò)展存儲(chǔ)區(qū)(右部)的分界線,圖5中物理塊 7下方的UsedPage71 = 128表示輯物理塊7的第一空閑頁,頁號(hào)為128, UsedPage5-lll及UsedPage13-46類同。見圖5,邏輯頁號(hào)為110,則在相 應(yīng)的物理塊5中寫入第110頁物理頁號(hào)(黑色區(qū))的位置。每個(gè)邏輯頁寫入的物理頁號(hào)與邏輯頁號(hào)一致,是使讀取速度達(dá)到最快的一種直接映射的設(shè)計(jì)方式, 這樣能夠省去搜索頁位置的時(shí)間。
(2)、圖5中的邏輯塊鏈中,每個(gè)物理塊可以全寫滿,也可以局部被寫入, 但必須滿足每個(gè)物理塊最后一個(gè)被寫入的頁的前面所有頁被寫入過,其后面的 所有頁都是空閑頁,如圖5中物理塊7的第127頁、物理塊5的70頁以及物理 塊13的45頁的前面所有頁被寫入過,其后面的所有頁都是空閑頁,這是新型 的基于多層單元MLC—Flash器件的Nand-Flash存儲(chǔ)系統(tǒng)對(duì)寫入的規(guī)定,某一 塊內(nèi)必須按照順序?qū)懭?,否則寫入數(shù)據(jù)時(shí)會(huì)出錯(cuò)。 (3)、寫操作(正向搜索)
在發(fā)生一次寫請(qǐng)求時(shí),包括請(qǐng)求寫入的邏輯塊號(hào)(圖5中示出邏輯塊號(hào)為2, 物理塊7、物理塊5以及物理塊13共同對(duì)應(yīng)于邏輯塊號(hào)2)、請(qǐng)求寫入的邏輯頁 號(hào)(圖5中為110)以及請(qǐng)求寫入的數(shù)據(jù),根據(jù)請(qǐng)求寫入的邏輯塊號(hào)2的邏輯塊 鏈以及請(qǐng)求寫入的邏輯頁號(hào)110,在與雙向鏈表7<->5<->13對(duì)應(yīng)的邏輯塊鏈上, 依次按照7-〉5->13的順序從前往后正向搜索每個(gè)物理塊(例如圖5中的邏輯物 理塊7、邏輯物理塊5以及邏輯物理塊13)所使用的物理頁數(shù),找到已使用物 理頁數(shù)小于所請(qǐng)求寫入邏輯頁數(shù)110的第一個(gè)物理塊為物理塊5,便按下述方法 直接將數(shù)據(jù)寫入該物理塊5的所請(qǐng)求寫入邏輯頁110:在該物理塊5上所述已使 用物理頁號(hào)70與所請(qǐng)求寫入邏輯頁號(hào)110之間的所有頁面空間71 — 109頁號(hào), 復(fù)制填入該物理塊的前向物理塊7中相應(yīng)頁面空間71 — 109頁號(hào)的物理頁上的 數(shù)據(jù),然后再在所請(qǐng)求寫入邏輯頁號(hào)110上寫入當(dāng)前請(qǐng)求的數(shù)據(jù)。
如果請(qǐng)求寫入的邏輯頁號(hào)小于該邏輯塊鏈的最后一個(gè)物理塊的已使用物理 頁號(hào),則再新建一個(gè)替換物理塊,在新建替換物理塊上0至該請(qǐng)求寫入的邏輯 頁號(hào)之間的所有頁面空間,復(fù)制填入該新建替換物理塊的前向物理塊中相應(yīng)頁 的有效數(shù)據(jù),然后在請(qǐng)求寫入的頁號(hào)寫入當(dāng)前請(qǐng)求的數(shù)據(jù);圖6為本發(fā)明寫操 作實(shí)施例2的示意圖,見圖6,所請(qǐng)求寫入的頁號(hào)為31 (黑色區(qū)),它小于該邏 輯塊鏈的最后一個(gè)物理塊13的已使用頁數(shù)45,則新建一個(gè)替換物理塊l,加入 該邏輯塊鏈(LBC)中,在新建替換物理塊1上0至該請(qǐng)求寫入的頁號(hào)31之間的 所有頁面空間0—30頁,復(fù)制填入其前向物理塊13中0-30頁的數(shù)據(jù),如圖6 中的空白箭頭及替換物理塊1上的黑點(diǎn)區(qū)所示。最后再在請(qǐng)求寫入的頁號(hào)31寫 入當(dāng)前請(qǐng)求寫入的數(shù)據(jù)。物理塊1的32頁起為空閑區(qū)。2、讀操作(反向搜索)按雙向鏈表進(jìn)行數(shù)據(jù)的讀操作時(shí),具體步驟如下在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中從后往前反向搜索每個(gè)物理塊所使用的 物理頁數(shù),找到第一個(gè)(因?yàn)槌说箶?shù)第一個(gè)里的數(shù)據(jù)是有效數(shù)據(jù)外,以前的 都是無效數(shù)據(jù))已寫入頁數(shù)不小于當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)的物理塊,即為有 效的讀取目標(biāo)物理塊,在目標(biāo)物理塊上讀取的物理頁號(hào)和當(dāng)前請(qǐng)求讀操作的邏 輯頁號(hào)相同(因?yàn)槭遣捎玫捻搩?nèi)直接復(fù)制的技術(shù),所以物理頁號(hào)和邏輯頁號(hào)是 相同的、 一一對(duì)應(yīng)的)。圖7為本發(fā)明的讀操作實(shí)施例示意圖,見圖7實(shí)施例,所請(qǐng)求的讀操作邏 輯頁號(hào)為第52頁時(shí),首先找到與邏輯塊2雙向鏈表對(duì)應(yīng)的邏輯塊鏈2: 7<->5<->13<->1,從后往前反向搜索每個(gè)物理塊(例如圖7中的物理塊1、物理 塊13、物理塊5以及物理塊7)所使用的邏輯頁數(shù),找到第一個(gè)已寫入頁數(shù)為 61 (62表示空閑頁)、不小于當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)52頁(第二根箭頭線所 示)的物理塊13,其即為有效的讀取目標(biāo)物理塊,讀取物理塊13的第52物理 頁(與當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)52相同),即得到所需讀取數(shù)據(jù)。同理,從圖7 可見,第一個(gè)已寫入頁數(shù)45、不小于當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)30的物理塊1, 其即為有效的讀取目標(biāo)物理塊,讀取物理塊1的第30物理頁,即得到所需讀取 數(shù)據(jù);第一個(gè)已寫入頁數(shù)70、不小于當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)70的物理塊5, 其即為有效的讀取目標(biāo)物理塊,讀取物理塊5的第70物理頁,即得到所需讀取 數(shù)據(jù);第一個(gè)已寫入頁數(shù)127、不小于當(dāng)前請(qǐng)求讀操作邏輯頁號(hào)120的物理塊7, 其即為有效的讀取目標(biāo)物理塊,讀取物理塊7的第120物理頁,即得到所需讀 取數(shù)據(jù)。3、回收操作(反向搜索)當(dāng)一個(gè)邏輯塊鏈(LBC)太長,超過設(shè)定的門限值,或者系統(tǒng)需要更多可用的 空閑邏輯塊時(shí),執(zhí)行回收操作,具體步驟如下圖8為本發(fā)明中頁回收操作的示意圖,見圖8,首先在雙向鏈表中査找到邏 輯塊鏈(LBC)上的最后一個(gè)物理塊l,假定物理塊1上已有18頁物理頁寫入數(shù) 據(jù),再從該邏輯塊鏈(LBC)上的倒數(shù)第二個(gè)物理塊開始,自后往前逐塊反向搜 索,并按如下復(fù)制數(shù)據(jù):由倒數(shù)第二個(gè)物理塊13的19頁開始復(fù)制至物理塊1, 復(fù)制到該物理塊的第一個(gè)空閑頁(UsedPage)為止(即頁45為止,因?yàn)轫?6為ii空閑頁);然后尋找前一個(gè)使用過的頁數(shù)大于當(dāng)前已復(fù)制頁數(shù)的物理塊,找到了 前一個(gè)物理塊5,它的已使用頁數(shù)為70,大于當(dāng)前已復(fù)制頁數(shù)45,所以從物理 塊5的第46頁開始繼續(xù)復(fù)制數(shù)據(jù)至物理塊1,到物理塊5的第一個(gè)空閑頁71 前為止,即復(fù)制到頁70,直到最后一塊的所有頁都已經(jīng)被填滿(即到某一物理 塊復(fù)制到了最后一頁一例如前面的物理塊復(fù)制到了最后一頁127),如圖8中 物理塊1上的箭頭及各區(qū)域?qū)懭氲臄?shù)據(jù)所示,此時(shí)才算完成了回收的復(fù)制工作。 最后,釋放掉(擦除)原邏輯塊鏈(LBC)除了最后一物理塊1以外的所有物理 塊,即圖8中的物理塊7、物理塊5、物理塊13。本發(fā)明方法既滿足了新型的基于多層單元(MLC) Flash器件的Nand-Flash 存儲(chǔ)管理方法對(duì)所有物理塊的頁必須順序?qū)懭氲囊?,又在最大限度上減小了 Flash器件的損耗,因?yàn)樵谶@種結(jié)構(gòu)下,復(fù)制數(shù)據(jù)的次數(shù)達(dá)到了最少,每一次 的復(fù)制都僅是受到物理器件的限制,而不存在人為的浪費(fèi),同時(shí)還保證了最快 的讀取速度和較快的寫入速度,在實(shí)現(xiàn)閃存的邏輯物理地址轉(zhuǎn)換時(shí),能保證數(shù) 據(jù)的完整性。
權(quán)利要求
1、一種Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在于動(dòng)態(tài)的將多個(gè)物理塊對(duì)應(yīng)到一個(gè)邏輯塊,形成一個(gè)由各物理塊構(gòu)成的邏輯塊鏈;在每個(gè)物理塊的第一物理頁的擴(kuò)展區(qū)域,分別存放該物理塊所對(duì)應(yīng)的邏輯塊號(hào)信息和在邏輯塊鏈中它的前一個(gè)物理塊的塊號(hào)信息,在系統(tǒng)初始化時(shí),通過存放的上述信息,重建出與所述邏輯塊鏈對(duì)應(yīng)的雙向鏈表,在模塊正常工作時(shí),依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的讀寫操作。
2、 依據(jù)權(quán)利要求1所述的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在于 依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),具體步驟如下(1) 、使每個(gè)邏輯頁寫入的物理頁號(hào)與邏輯頁號(hào)一致;(2) 、在邏輯塊鏈中的每個(gè)物理塊可以全寫滿,也可以局部被寫入,但必須滿 足每個(gè)物理塊最后一個(gè)被寫入的頁前面的所有頁也被寫入過,它后面的所有頁 都是空閑頁。(3) 、依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),在所述雙向鏈表對(duì)應(yīng)的邏輯塊 鏈中從前往后搜索,只要找到該邏輯塊鏈上已使用物理頁數(shù)小于所請(qǐng)求寫入邏 輯頁數(shù)的第一個(gè)物理塊,就直接將數(shù)據(jù)寫入該物理塊的所請(qǐng)求寫入邏輯頁;如果請(qǐng)求寫入的頁號(hào)小于該邏輯塊鏈的最后一個(gè)物理塊的已使用頁號(hào),則在邏輯塊鏈上新添加一個(gè)空閑物理塊,將所請(qǐng)求寫入邏輯頁之前的所有有效頁數(shù)據(jù)復(fù) 制到當(dāng)前新空閑物理塊中,再在所請(qǐng)求寫入的邏輯頁上寫入數(shù)據(jù)。
3、 依據(jù)權(quán)利要求1所述的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在于 依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的讀操作時(shí),具體步驟如下在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中自后往前搜索,找到第一個(gè)寫入頁數(shù)不 小于當(dāng)前請(qǐng)求的讀操作邏輯頁號(hào)的物理塊,即為有效的讀取目標(biāo)物理塊,在該 目標(biāo)物理塊上讀取和當(dāng)前請(qǐng)求的讀操作邏輯頁號(hào)相同的物理頁號(hào),即得到所需 數(shù)據(jù)。
4、 依據(jù)權(quán)利要求1中所述的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在 于當(dāng)一個(gè)邏輯塊鏈的長度超過設(shè)定的門限值或者系統(tǒng)需要更多可用的空閑物理 塊時(shí),執(zhí)行回收操作,具體步驟如下首先在雙向鏈表中査找到邏輯塊鏈上的最后一個(gè)物理塊,再從該邏輯塊鏈上的倒數(shù)第二個(gè)物理塊開始自后往前逐塊反向搜索,并按如下復(fù)制數(shù)據(jù)假設(shè) 最后一個(gè)物理塊使用到第N頁,則由倒數(shù)第二個(gè)物理塊的第N+l頁開始復(fù)制數(shù) 據(jù)至最后一個(gè)物理塊的相應(yīng)頁,復(fù)制到該物理塊的第一個(gè)空閑頁為止;然后依 次尋找前一個(gè)使用過的頁數(shù)大于當(dāng)前已復(fù)制頁數(shù)的物理塊,再繼續(xù)按上述方法 在該物理塊的相應(yīng)頁復(fù)制它的數(shù)據(jù)至最后一個(gè)物理塊的相應(yīng)頁,復(fù)制到該物理 塊的第一個(gè)空閑頁為止;照此類推,直到最后一個(gè)物理塊的最后一頁被寫入為 止,最后,釋放掉原邏輯塊鏈的除最后一塊的所有物理塊。
5、 依據(jù)權(quán)利要求2所述的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在于 依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中從 前往后搜索,當(dāng)在該邏輯塊鏈上找到已使用物理頁號(hào)小于所請(qǐng)求寫入邏輯頁號(hào) 的第一個(gè)物理塊,按下述方法直接將數(shù)據(jù)寫入該物理塊在該物理塊上所述已 使用物理頁號(hào)與所請(qǐng)求寫入邏輯頁號(hào)之間的所有頁面空間,復(fù)制填入該物理塊 的前向物理塊中相應(yīng)頁面空間的物理頁上的數(shù)據(jù),然后再在所請(qǐng)求寫入邏輯頁 號(hào)上寫入數(shù)據(jù)。
6、 依據(jù)權(quán)利要求3所述的Nand-Flash存儲(chǔ)系統(tǒng)的管理方法,其特征在于 依據(jù)所述雙向鏈表進(jìn)行數(shù)據(jù)的寫操作時(shí),在所述雙向鏈表對(duì)應(yīng)的邏輯塊鏈中從 前往后搜索,如果所有的物理塊已使用物理頁號(hào)都大于所請(qǐng)求寫入邏輯頁號(hào), 則在邏輯塊鏈上新添加一個(gè)空閑物理塊,按下述方法將數(shù)據(jù)寫入該空閑物理塊: 在所請(qǐng)求寫入邏輯頁之前的所有頁面空間,復(fù)制填入該空閑物理塊的前向物理塊中相應(yīng)頁面空間的物理頁上的數(shù)據(jù),然后再在所請(qǐng)求寫入邏輯頁號(hào)上寫入數(shù)
全文摘要
本發(fā)明涉及計(jì)算機(jī)Nand-Flash存儲(chǔ)系統(tǒng)的管理方法。將多個(gè)物理塊形成邏輯塊鏈;在各物理塊第一物理頁的擴(kuò)展區(qū)域,存放物理塊的塊號(hào)及其前向物理塊塊號(hào)信息,系統(tǒng)初始化時(shí),通過存放的上述信息,重建出邏輯塊鏈的雙向鏈表。讀操作時(shí),利用雙向鏈表從后往前搜索,讀取目標(biāo)物理塊,讀取的物理頁號(hào)和邏輯頁號(hào)相同。寫操作時(shí),利用雙向鏈表從前往后搜索,只要找到該邏輯塊鏈上已使用頁數(shù)小于所請(qǐng)求寫入邏輯頁號(hào)的第一個(gè)物理塊,就直接將數(shù)據(jù)寫入該物理塊所請(qǐng)求寫入的邏輯頁;如果所有的物理塊已使用頁數(shù)都大于所請(qǐng)求寫入的邏輯頁號(hào),則在邏輯塊鏈上添加一個(gè)空閑物理塊,將有效頁數(shù)據(jù)復(fù)制到當(dāng)前新空閑物理塊中,再寫入當(dāng)前頁的數(shù)據(jù)。
文檔編號(hào)G06F12/08GK101329656SQ200810025488
公開日2008年12月24日 申請(qǐng)日期2008年5月6日 優(yōu)先權(quán)日2008年5月6日
發(fā)明者詠 何, 趙海源 申請(qǐng)人:無錫紫芯集成電路系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1