專利名稱:Nand閃存的mtd設(shè)計中處理地址不連續(xù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種支持多平面類型的NAND閃存的MTD設(shè)計中處理地址不連續(xù)的方法。
背景技術(shù):
各種NAND閃存已經(jīng)被廣泛應(yīng)用于手機、數(shù)碼等終端消費產(chǎn)品,其容量越來越大,多平面 的MLC (Multi-Level Cell,多層單元閃存)正逐步取代SLC (Single-Level Cell,單層單 元閃存)成為市場主流。多平面的MLC具有很多新的特點,每個平面的塊地址不再是連續(xù)的 是影響MTD (Memory Technology Device,內(nèi)存技術(shù)設(shè)備)設(shè)計的最大變化之一。
由于大多數(shù)SLC都是單平面的設(shè)計,很多原來的MTD設(shè)計都是不支持多平面的NAND閃存 的。'同時,由于MLC的制造工藝更新很快,各種劃分平面的方法還在不斷更新,原有的MTD 設(shè)計以無法適應(yīng)這些新的變化
發(fā)明內(nèi)容
'
為克服上述不足,本發(fā)明的目的在于提供一種支持多平面類型的NAND閃存的MTD設(shè)計中 處理地址不連續(xù)的方法,使其可以支持包含多個物理平面的NAND閃存,適應(yīng)MLC的不斷變化。 為完成上述發(fā)明目的,本發(fā)明采取的技術(shù)方案包含以下步驟
a.把整個NAND閃存空間劃分為多個區(qū)域,每個區(qū)域通過一個MTD進行管理,MTD記 錄其管理區(qū)域的第一個塊所位于的物理平面號以及該塊相對于該物理平面的偏移量; b.每個區(qū)域內(nèi)的每個物理平面都抽象為一個邏輯平面,每個邏輯平面都有獨立的分 配區(qū);
c. MTD根據(jù)上層應(yīng)用傳來的邏輯扇區(qū)號計算出相應(yīng)的邏輯塊號,然后根據(jù)邏輯塊號進 行尋址;
d. 上述步驟c所述的邏輯塊號通過映射表一一對應(yīng)偽物理塊號;
e. MTD根據(jù)偽物理塊號通過相應(yīng)的映射算法實現(xiàn)對物理塊號的訪問。
其中,步驟d所述的映射表是以邏輯塊號為下標的數(shù)組,數(shù)組的內(nèi)容為邏輯塊號對應(yīng)的 偽物理塊號。
本發(fā)明支持多平面類型的NAND閃存的MTD設(shè)計中處理地址不連續(xù)的方法,使其可以支持 包含多個物理平面的NAND閃存,不會受MLC的不斷變化的影響。
圖1為前后地址劃分物理平面的情況;
圖2對應(yīng)于圖1的兩層地址轉(zhuǎn)換過程示意圖,其中,分配區(qū)有4個塊; 圖3單物理平面的Nand閃存(兩個芯片)區(qū)域劃分及地址映射關(guān)系示意圖; 倒4奇偶地址劃分兩個物理平面的雙芯片NAND閃存的區(qū)域劃分及地址映射關(guān)系示意圖; 圖5既有奇偶又有前后地址劃分的四個物理平面的單芯片NAND閃存的區(qū)域劃分及地址 映射關(guān)系示意圖。
上述圖l、圖3、圖4和圖5中陰影部分為一個劃分區(qū)域。
具體實施例方式
1、 根據(jù)上層應(yīng)用的具體需求如存儲內(nèi)容安全性的要求,把整個NAND閃存空間劃分為幾 個不同的區(qū)域, 一個區(qū)域可能會跨越多個物理平面,甚至多個NAND閃存芯片。每個這樣劃分 的區(qū)域均通過一個MTD進行管理。MTD需要記錄其管理區(qū)域的第一個物理塊所位于的物理平 面號以及該物理塊相對于該物理平面的偏移量。圖1是兩片NAND閃存芯片的劃分情況,前后 地址劃分兩個物理平面,三個邏輯平面Plane0、 Planel和Plane2共同構(gòu)成的部分就是一個 MTD所要管轄的區(qū)域。該區(qū)域左邊的三列數(shù)字由左至右如圖所示,分別表示物理塊號、偽物 理塊號和邏輯塊號,每一列數(shù)字都是分別限定在三個邏輯平面PlaneO、 Plam l和Plane2中, 例如,邏輯平面Plane0的邏輯塊號0不同于邏輯平面Planel中的邏輯塊號0。"一"表示邏 輯塊號中不存在這個塊號。整個NAND閃存空間的開始部分可以作為特殊用途,比如存放NAND 閃存的壞塊信息,它可以不歸任何MTD管理。如果劃分到最后一個物理平面,其剩余的塊數(shù) 還不足分配區(qū)的塊數(shù),則這些塊廢棄不能使用。該區(qū)域跨越了 2個NAND閃存芯片CHIP0和 CHIP1,共3個物理平面CHIP0_PLANE0、 CHIP0—PLANE1和CHIP1—PLANE0,由圖l可以看出, MTD管理的第一個物理平面為CHIP0一PLANE0,第一個物理塊相對于該物理平面的偏移量為4。
2、 根據(jù)區(qū)域跨越的物理平面?zhèn)€數(shù),每個物理平面位于該區(qū)域的部分都被抽象成一個邏 輯平面,如圖1中的3個邏輯平面PlaneO, Planel, Plane2。每個邏輯平面記錄各自包含 的塊數(shù),并且保留一定數(shù)量的無效塊,無效塊為不存放有效數(shù)據(jù)的塊,它們不對應(yīng)任何邏輯 塊號,這些塊的集合稱為分配區(qū)。對于每個物理塊,選擇其某一個頁的附加區(qū)記錄它相對于 該邏輯平面的邏輯塊號,對于分配區(qū)中的塊,其記錄的邏輯塊號是無效的。3、 MTD上層使用的邏輯塊號的集合會小于偽物理塊號組成的集合,因為分配區(qū)中的塊并 不對應(yīng)于任何邏輯塊號。掃描整個區(qū)域就可以把邏輯塊號到偽物理塊號的映射關(guān)系建立起來。 每一個邏輯平面把這種映射關(guān)系記錄到其各自擁有的映射表Log2Fake中,如圖2所示。映射 表Log2Fake可以是一個數(shù)組,數(shù)組的下標表示邏輯塊號,其內(nèi)容表示相應(yīng)的偽物理塊號,這 樣就可以由邏輯塊號迅速地找出其對應(yīng)的偽物理塊號。
,4、實際上,MTD上層基本都是通過邏輯扇區(qū)號SectorNum進行數(shù)據(jù)讀寫的。根據(jù)MTD記 錄的區(qū)域開始位置、區(qū)域大小以及NAND閃存的物理平面的大小,可以計算出與邏輯扇區(qū)號 SectorNum相應(yīng)的邏輯塊號和邏輯平面號。計算方法如下
首先由邏輯扇區(qū)號SectorNum除以一個塊所包含的扇區(qū)總數(shù)所得的商就表示該塊相對于 整個NAND閃存地址空間的邏輯偏移1 LogOffsetl;然后再根據(jù)邏輯偏移1 LogOffsetl,由 每個區(qū)域的起始位置以及大小就可以計算出該扇區(qū)位于的區(qū)域以及相對于該區(qū)域的邏輯偏移 2 Log0ffset2;然后由邏輯偏移2 Log0ffset2,再根據(jù)分配區(qū)的大小和各個邏輯平面包含的 邏輯塊號的個數(shù),求得該塊位于的邏輯平面號以及相應(yīng)的邏輯塊號;最后,根據(jù)該邏輯平面 對應(yīng)的映射表Log2Fake,就可以直接獲取出偽物理塊號,如圖2中最上層到中間層的轉(zhuǎn)換通 過映射表Log2Fake進行轉(zhuǎn)換。
5、訪問NAND閃存所需要的地址是物理芯片號Chip、物理塊號以及塊內(nèi)的偏移頁號Page, 它們可以通過相應(yīng)的映射算法Fake2Real獲得。下面用C語言的偽碼分別給出4種對應(yīng)于不 同劃分物理平面方法的映射算法Fake2Real,該算法是分別通過總結(jié)圖1、圖3、圖4和圖5 中各個塊號對應(yīng)關(guān)系得到的一般規(guī)律,由區(qū)域劃分以及NAND閃存劃分物理平面的方式?jīng)Q定。
偽碼使用的變量表示的含義如下 Chip為物理芯片號;
FstPlane表示MTD管理的第一個物理塊所位于的物理平面號;
StartBlkOfFstPlane表示MTD管理的第一個物理塊相對于FstPlane這個物理塊的偏移
一 量5
PlaneNum表示邏輯平面號; Fake表示偽物理塊號; Phy表示物理塊號;
PlanePerChip表示每個物理芯片劃分的物理平面?zhèn)€數(shù);BlockPerPlane表示一個物理平面包含的總塊數(shù);
Page為塊內(nèi)的偏移頁號;
SecPerBlk表示一個物理塊內(nèi)的扇區(qū)總數(shù)。
其中,邏輯扇區(qū)號SectorNum對應(yīng)的邏輯平面號PlaneNum以及偽物理威號Fake由上述 第4步的方法計算得出。
不論哪一種物理平面的劃分方法,計算物理芯片號Chip和塊內(nèi)的偏移頁號Page的方法 均為-
Chip = (PlaneNum + FstPlane) / PlanePerChip; PagS= SectorNum % SecPerBlk;
另外,計算物理塊號Phy需要針對具體的劃分物理平面的方式不同而不同
1) 單物理平面的情況,如圖3所示
if (PlaneNum等于0) 〃是否位于該區(qū)域的第一個邏輯平面
Fake = Fake + StartBlkOfFstPlane; Phy = Fake;
2) 前后地址劃分物理平面的情況,如圖l所示-
if (PlaneNum等于0) 〃是否位于該區(qū)域的第一個邏輯平面
Fake = Fake + StartBlkOfFstPlane; 〃需要增加該區(qū)域的偏移量
PlaneNum = (PlaneNum + FstPlane) % PlanePerChip; Phy = Fake + PlaneNum承BlockPerPlane;3) 奇偶地址劃分物理平面的情況,如圖4所示
if (PlaneNum等于0) 〃是否位于該區(qū)域的第一個邏輯平面
Fake = Fake + StartBlkOfFstPlane; 〃需要增加該區(qū)域的偏移量
PlaneNum = (PlaneNum + FstPlane) % PlanePerChip; Phy = Fake氺PlanePerChip + PlaneNum;
4) 既有奇偶又有前后地址劃分物理平面的情況,如圖5所示
if (PlaneNum等于0) 〃是否位于該區(qū)域的第一個邏輯平面 ,{
Fake = Fake+StartBlkOfFstPlane; 〃需要增加該區(qū)域的偏移量
PlaneNum = (PlaneNum + FstPlane) % PlanePerChip; Phy=Fake*2 + (PlaneN咖/2) *BlockPerPlane*2 + (PlaneNum%2);
下面根據(jù)圖1的區(qū)域劃分,舉例說明兩層地址映射的過程。
圖1中,區(qū)域所包含的總塊數(shù)為37,其中邏輯平面PlaneO包含12塊,邏輯平面Planel 包含16塊,邏輯平面Plane2包含9塊。存放有效數(shù)據(jù)的邏輯塊數(shù)總共為25,因為三個邏 輯平面都含有4個塊的分配區(qū)。假設(shè)該NAND閃存的塊包含128個頁,每個頁只有一個扇區(qū), 即NAND閃存的塊大小為128個扇區(qū),PlanePerChip等于2。其中FstPlane等于0, StartBlkOfFstPlane等于4?,F(xiàn)在上層需要訪問的邏輯扇區(qū)SectorNum為3002,此時 Planel—Log2Fake[10]=5, Planel—Log2Fake[ll]=13, Planel—Log2Fake[12]= 15。
首先根據(jù)第4步提供的計算方法,不難得到該邏輯扇區(qū)SectorNum位于區(qū)域內(nèi),并求得 邏輯偏移1Log0ffsetl等于23,即3002除以128得到的商,邏輯偏移2 Log0ffset2等于19。 由于各個邏輯平面的分配區(qū)為4,即Plane0、 Planel和Plane2包含的可存放有效數(shù)據(jù)的邏 輯塊數(shù)分別為8、 12和5,所以Log0ffset2的位置位于邏輯平面Planel中,且LogAddr等 于ll。
由該邏輯平面Planel的映射表可以直接獲取偽物理塊號就等于13(Planel_Log2Fake[ll]),作為第5步的輸入之一。由于該NAND閃存是前后地址劃分物理 平面的,第二層映射關(guān)系由第5步中的第2)種情況決定。映射關(guān)系的所有輸入為 PlanePerChip = 2' SecPerBlk=128, plane=l, Fake=13, StartBlk0fFstPlane=4, FstPlane=0' SectOrNum=3002.所以,帶入上面第5步中的第2)種情況的計算方法,即可得到Chip=0, Page=58, Phy=29。計算得到的結(jié)果與圖1示意圖的對應(yīng)關(guān)系是一致的。
圖3、圖4、圖5分別對應(yīng)著單物理平面、奇偶地址劃分物理平面和既有奇偶又有前后地 址劃分物理平面的NAND閃存的區(qū)域劃分以及地址映射關(guān)系示例。對于這三種情況其計算方式 可以參考上述關(guān)于圖1的舉例說明。在實際工程實現(xiàn)時,分配區(qū)中的塊數(shù)實際上遠遠小于每 個物理平面的總塊數(shù),圖示中為了方便描述沒有把這個信息描繪出來。 '
權(quán)利要求
1、一種NAND閃存的MTD設(shè)計中處理地址不連續(xù)的方法,其特征在于,它包含以下步驟a. 把整個NAND閃存空間劃分為多個區(qū)域,每個區(qū)域通過一個MTD進行管理,MTD記錄其管理區(qū)域的第一個塊所位于的物理平面號以及該塊相對于該物理平面的偏移量;b. 每個區(qū)域內(nèi)的每個物理平面都抽象為一個邏輯平面,每個邏輯平面都有獨立的分配區(qū);c. MTD根據(jù)上層應(yīng)用傳來的邏輯扇區(qū)號計算出相應(yīng)的邏輯塊號,然后根據(jù)邏輯塊號進行尋址;d. 上述步驟c所述的邏輯塊號通過映射表一一對應(yīng)偽物理塊號;e. MTD根據(jù)偽物理塊號通過相應(yīng)的映射算法實現(xiàn)對物理塊號的訪問。
2、 根據(jù)權(quán)利要求1所述的NAND閃存的MTD設(shè)計中處理地址不連續(xù)的一種方 法,其特征在于,步驟d所述的映射表是以邏輯塊號為下標的數(shù)組,數(shù)組的內(nèi)容 為邏輯塊號對應(yīng)的偽物理塊號。
全文摘要
本發(fā)明公開一種支持多平面類型的NAND閃存的MTD設(shè)計中處理地址不連續(xù)的方法,把整個NAND閃存空間劃分為多個區(qū)域,每個區(qū)域通過一個MTD進行管理,每個區(qū)域內(nèi)的每個物理平面都抽象為一個邏輯平面,MTD根據(jù)上層應(yīng)用傳來的邏輯扇區(qū)號計算出相應(yīng)的邏輯塊號,然后根據(jù)邏輯塊號進行尋址,而邏輯塊號通過映射表一一對應(yīng)偽物理塊號,最后MTD根據(jù)偽物理塊號通過相應(yīng)的映射算法實現(xiàn)對物理塊號的訪問。本發(fā)明使MTD可以支持包含多個物理平面的NAND閃存,并且獨立于不斷變化的MLC。
文檔編號G06F12/02GK101470663SQ20071003301
公開日2009年7月1日 申請日期2007年12月29日 優(yōu)先權(quán)日2007年12月29日
發(fā)明者易若翔, 胡勝發(fā), 范敬才 申請人:安凱(廣州)軟件技術(shù)有限公司