專利名稱:閃存ftl的地址轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)與NAND閃存技術(shù)領(lǐng)域,特別涉及一種閃存FTL (閃存轉(zhuǎn)換層)的地址轉(zhuǎn)換方法。
背景技術(shù):
隨著移動(dòng)通信的發(fā)展和便攜式設(shè)備的普及,F(xiàn)lash存儲(chǔ)器的非易失、高密度、高存取速度,低功耗,低價(jià)格等特性,使其在很多領(lǐng)域有廣泛的應(yīng)用。如常用的便攜式播放器、數(shù)碼相機(jī)、掌上電腦、移動(dòng)電話等。但是,NAND FLASH設(shè)備由于工藝的關(guān)系,在使用中存在以下特點(diǎn)1)擦除操作單元比寫操作單元大。2)與傳統(tǒng)硬盤不同,不能直接在數(shù)據(jù)上進(jìn)行覆蓋,而是必須先擦后寫。3) NAND FLASH存儲(chǔ)限制了寫和擦的次數(shù)。數(shù)據(jù)并不是順序的寫入存儲(chǔ)地址中,因此一些特定的塊可能會(huì)比其他塊更多地使用,從而導(dǎo)致磨損,最終使整個(gè)存儲(chǔ)不能使用。4)NAND FLASH會(huì)在出廠時(shí)存在壞塊,同時(shí)在操作過(guò)程中也會(huì)產(chǎn)生壞塊。5)NAND FLASH會(huì)在讀取數(shù)據(jù)時(shí)產(chǎn)生錯(cuò)誤或讀取失敗。因此必須存在一個(gè)特殊的系統(tǒng)層來(lái)使得可以像操作HDD —樣操作NAND Flash。閃存轉(zhuǎn)換層FTL的主要功能實(shí)現(xiàn)系統(tǒng)直接對(duì)閃存進(jìn)行讀、寫、擦除操作。當(dāng)操作系統(tǒng)發(fā)出對(duì)某個(gè)邏輯地址進(jìn)行操作的指令后,F(xiàn)TL分析指令,通過(guò)轉(zhuǎn)譯在與該邏輯地址相對(duì)應(yīng)的物理地址上進(jìn)行操作,其功能的核心就在于地址映射。根據(jù)閃存的物理結(jié)構(gòu),映射通常分為塊映射和頁(yè)映射兩種,一般映射信息是記錄在閃存的冗余區(qū)中的。若采用頁(yè)映射,雖然映射速度快,空間利用率高,但存儲(chǔ)映射表所需的空間大,浪費(fèi)了過(guò)多的系統(tǒng)資源,并且映射表的更新也相當(dāng)頻繁。若采用塊映射,存儲(chǔ)映射表所需空間相對(duì)較小,同時(shí)也降低了垃圾回收時(shí)的復(fù)制和擦除操作,但空間利用率低,并且當(dāng)對(duì)某邏輯地址進(jìn)行多次操作時(shí),垃圾回收代價(jià)大,并加快了磨損速度,運(yùn)行效率也較低。中國(guó)發(fā)明專利申請(qǐng)“閃存FTL的地址轉(zhuǎn)換方法”(申請(qǐng)?zhí)?01010133944. 8)中提出了一種閃存FTL的地址轉(zhuǎn)換方法,該方案采用三次映射,并將物理塊固定分為63組,地址轉(zhuǎn)換效率較低,運(yùn)算復(fù)雜,不適于實(shí)際應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供另一種閃存FTL的地址轉(zhuǎn)換方法,旨在解決上述現(xiàn)有技術(shù)的缺陷,特別是解決目前FTL地址轉(zhuǎn)換速度慢和運(yùn)算復(fù)雜的缺點(diǎn)。本發(fā)明的技術(shù)方案如下一種閃存FTL的地址轉(zhuǎn)換方法,包括以下步驟根據(jù)邏輯地址得到相應(yīng)的邏輯塊號(hào)和塊內(nèi)邏輯簇號(hào);根據(jù)所述邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表,得到物理塊號(hào)和物理頁(yè)號(hào);根據(jù)所述物理塊號(hào)和塊內(nèi)邏輯簇號(hào)查找邏輯簇到物理頁(yè)的映射表,得到邏輯塊中所有邏輯簇相應(yīng)的物理頁(yè)號(hào);所述超級(jí)塊用于對(duì)所有物理塊進(jìn)行分組,每個(gè)超級(jí)塊包括8個(gè)物理塊,所有超級(jí)塊的物理號(hào)不重復(fù),每個(gè)邏輯塊對(duì)應(yīng)一個(gè)超級(jí)塊組。其進(jìn)一步的技術(shù)方案為所述根據(jù)邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表,得到物理塊號(hào)和物理頁(yè)號(hào),包括根據(jù)所述邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表找到該邏輯塊地址空間最后一次映射到的物理塊號(hào)。其進(jìn)一步的技術(shù)方案為構(gòu)建邏輯塊地址空間到超級(jí)塊組的映射表,所述邏輯塊地址空間到超級(jí)塊組的映射表用來(lái)記錄每個(gè)邏輯塊最后一次映射到的超級(jí)塊的物理號(hào)。其進(jìn)一步的技術(shù)方案為構(gòu)建邏輯簇到物理頁(yè)的映射表,所述邏輯簇到物理頁(yè)的映射表用來(lái)保存邏輯簇到當(dāng)前打開的超級(jí)塊的物理頁(yè)的映射關(guān)系。其進(jìn)一步的技術(shù)方案為構(gòu)建邏輯簇到物理頁(yè)的映射表,所述邏輯簇到物理頁(yè)的 映射表保存在每個(gè)超級(jí)塊的最后4頁(yè),當(dāng)邏輯塊映射到該超級(jí)塊時(shí),首先從該超級(jí)塊中讀出該邏輯簇到物理頁(yè)的映射表,查找該映射表得到相應(yīng)的物理頁(yè)地址。本發(fā)明的有益技術(shù)效果是本發(fā)明提出的方案相比中國(guó)發(fā)明專利申請(qǐng)“閃存FTL的地址轉(zhuǎn)換方法”(申請(qǐng)?zhí)?01010133944. 8)所提出的方案(以下簡(jiǎn)稱“方案A”),不同之處在于I、本發(fā)明只需要進(jìn)行兩次映射,相比采用三次映射的方案A而言,地址轉(zhuǎn)換效率更聞;2、本發(fā)明采用了超級(jí)塊的組織形式,將8個(gè)物理塊組成了一個(gè)超級(jí)塊進(jìn)行地址映射,減少了地址轉(zhuǎn)換次數(shù),并且方便后續(xù)進(jìn)行適用于NAND Flash的并行高速數(shù)據(jù)傳輸機(jī)制。綜上所述,與現(xiàn)有FTL地址轉(zhuǎn)換的方法相比較,本發(fā)明具有以下優(yōu)點(diǎn)I、本發(fā)明對(duì)于每一個(gè)邏輯塊查找邏輯塊地址空間到超級(jí)塊組(LBA_SB)的映射表和邏輯簇到物理頁(yè)的映射表就可以找到邏輯塊中所有邏輯簇對(duì)應(yīng)的物理頁(yè)地址,因此本發(fā)明能夠有效的提高FTL地址轉(zhuǎn)換速度,并且還可降低運(yùn)算的復(fù)雜度。2、本發(fā)明對(duì)物理塊的分組,引進(jìn)超級(jí)塊的概念,可以方便在NAND Flash中采用Multi-plane, Multi-LUN, Multi-device等高級(jí)命令來(lái)加速傳輸速度。3、本發(fā)明采用兩級(jí)映射表來(lái)查找地址,將塊映射和頁(yè)映射有效結(jié)合起來(lái),顯著提高FTL地址轉(zhuǎn)換速度,占用的硬件資源少,對(duì)于連續(xù)數(shù)據(jù)以及隨機(jī)數(shù)據(jù)的讀寫具有很好的執(zhí)行效率,具有較強(qiáng)的靈活性。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面具體實(shí)施方式
部分的描述中給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
圖I是本發(fā)明實(shí)施例的Super Block的內(nèi)部結(jié)構(gòu)。圖2是本發(fā)明實(shí)施例的LBA Space到SB Group的鏈表。圖3是本發(fā)明實(shí)施例的LBA_SB映射表。圖4是本發(fā)明實(shí)施例的邏輯簇到物理頁(yè)的映射表。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
做進(jìn)一步說(shuō)明。本發(fā)明以32GB容量的U盤作為例子,采用4個(gè)邏輯單元(LUN)來(lái)構(gòu)建NAND Flash陣列,選擇4個(gè)設(shè)備(device),每個(gè)設(shè)備含有一個(gè)邏輯單元的形式來(lái)構(gòu)成存儲(chǔ)陣列。為了加速數(shù)據(jù)的傳輸,本發(fā)明將4個(gè)邏輯單元(LUN1 LUN4)組織在一起形成超級(jí)塊(Super Block,簡(jiǎn)稱SB)。每個(gè)邏輯單元中包含兩個(gè)層(Plane),每個(gè)層中有2048個(gè)塊。本發(fā)明將4個(gè)邏輯單元共計(jì)8個(gè)層中的具有相同編號(hào)的塊綁定在一起形成一個(gè)超級(jí)塊,這個(gè)超級(jí)塊具有相同的編號(hào)。由于每個(gè)超級(jí)塊的容量為16MB,則對(duì)于32GB容量的U盤,本發(fā)明一共可以得到2048個(gè)超級(jí)塊,每個(gè)超級(jí)塊中包含8個(gè)物理塊。圖I顯示了一個(gè)超級(jí)塊的內(nèi)部結(jié)構(gòu)。對(duì)于32GB的U盤,就有32GB的邏輯數(shù)據(jù)空間。本發(fā)明將這個(gè)邏輯空間劃分為若干個(gè)小空間,這些小空間稱之為邏輯塊地址空間(LBA Space)。數(shù)據(jù)從邏輯空間轉(zhuǎn)移到物理空間時(shí)必須要存在一個(gè)映射關(guān)系來(lái)反映哪些超級(jí)塊對(duì)應(yīng)于哪個(gè)邏輯塊地址空間。一個(gè)邏輯塊地址空間的容量為128MB-4MB,一個(gè)超級(jí)塊的容量為16MB-32KB,因此一個(gè)邏輯塊地址空間可以對(duì)應(yīng)于8個(gè)超級(jí)塊。為每個(gè)邏輯塊地址空間建立一個(gè)超級(jí)塊組(SB group)來(lái)表示哪些超級(jí)塊對(duì)應(yīng)于這個(gè)邏輯塊地址空間。圖2顯示了超級(jí)塊組的構(gòu)成方式。從圖2中可以 看到,邏輯塊地址空間m (LBA Space m)對(duì)應(yīng)于一個(gè)超級(jí)塊組,在這個(gè)超級(jí)塊組中有若干個(gè)超級(jí)塊,這些超級(jí)塊在超級(jí)塊組中按順序排列,但是超級(jí)塊的物理號(hào)是任意的,是由系統(tǒng)運(yùn)行時(shí)根據(jù)狀態(tài)按照一定算法進(jìn)行分配的,系統(tǒng)會(huì)在一個(gè)表中記錄每個(gè)邏輯塊地址空間對(duì)應(yīng)的超級(jí)塊組中的最后一個(gè)分配的超級(jí)塊的物理號(hào),然后超級(jí)塊組中每個(gè)超級(jí)塊的最后一個(gè)物理頁(yè)中都會(huì)標(biāo)記在該超級(jí)塊組中當(dāng)前這個(gè)超級(jí)塊之前被分配的那個(gè)超級(jí)塊的物理號(hào)。為了找到一個(gè)組中的所有超級(jí)塊,必須記錄下下一個(gè)超級(jí)塊的物理號(hào)。這樣只要找個(gè)一個(gè)邏輯塊地址空間所對(duì)應(yīng)的超級(jí)塊組中的最后一個(gè)超級(jí)塊,就能反向追蹤出該超級(jí)塊組中所有的超級(jí)塊的物理號(hào)。在內(nèi)存中劃出一塊區(qū)域用來(lái)記錄每個(gè)邏輯塊地址空間最后一次映射到的超級(jí)塊的物理號(hào)。32GB容量的系統(tǒng)中共有214個(gè)有效的邏輯塊地址空間,因此本發(fā)明設(shè)置一個(gè)214X32bit的空間用來(lái)存放映射關(guān)系。入口 O存放邏輯塊地址空間O的最后一次打開的超級(jí)塊的物理號(hào)以及映射到的物理頁(yè)號(hào)。同理,入口 213存放邏輯塊地址空間213的相應(yīng)信息。圖3給出了這個(gè)LBA SB映射表(二級(jí)映射表),即邏輯塊地址空間到其最后一次打開的超級(jí)塊的物理號(hào)及物理頁(yè)號(hào)的映射表的結(jié)構(gòu)。一個(gè)物理頁(yè)為8KB,而一個(gè)邏輯簇為4KB,因此一個(gè)物理頁(yè)可以映射到兩個(gè)邏輯簇。對(duì)于一個(gè)超級(jí)塊來(lái)說(shuō),其中包含8個(gè)物理塊,每個(gè)物理塊包含256個(gè)物理頁(yè)(如圖I中PageO page255),因此每個(gè)超級(jí)塊包含2048個(gè)物理頁(yè)。邏輯簇到物理頁(yè)的映射表保存在每個(gè)超級(jí)塊的最后4頁(yè)。本發(fā)明準(zhǔn)備4096個(gè)映射入口(entry)來(lái)保存邏輯簇到當(dāng)前打開的超級(jí)塊的物理頁(yè)的映射關(guān)系。圖4給出了這個(gè)邏輯簇到物理頁(yè)的映射表(二級(jí)映射表)的組成形式。當(dāng)主機(jī)要將數(shù)據(jù)寫進(jìn)NAND Flash中時(shí),F(xiàn)TL首先完成邏輯地址到物理地址的尋址,此時(shí)根據(jù)邏輯地址可以得到邏輯塊地址空間號(hào)和塊內(nèi)邏輯簇號(hào),然后查找LBA_SB映射表,可以知道邏輯塊地址空間最后映射到哪個(gè)超級(jí)塊,從該超級(jí)塊的最后4頁(yè)中讀出邏輯簇到物理頁(yè)的映射表。如果該映射表還未滿的話,將為當(dāng)前邏輯簇分配一個(gè)空余的物理頁(yè),完成地址轉(zhuǎn)換;如果該映射表滿的話,則表示當(dāng)前超級(jí)塊中已經(jīng)沒(méi)有空余物理頁(yè)了,那么系統(tǒng)重新為當(dāng)前邏輯塊分配一個(gè)超級(jí)塊,將當(dāng)前超級(jí)塊的第一頁(yè)分配給當(dāng)前邏輯簇。
當(dāng)主機(jī)要從NAND Flash中讀出數(shù)據(jù)時(shí),F(xiàn)TL首先完成邏輯地址到物理地址的轉(zhuǎn)換。根據(jù)主機(jī)發(fā)來(lái)的邏輯地址得到相應(yīng)的邏輯塊地址空間號(hào)和塊內(nèi)邏輯簇號(hào),然后查找LBA_SB表,找到該邏輯塊地址空間最后映射到哪個(gè)超級(jí)塊,然后從該超級(jí)塊的最后4頁(yè)讀出邏輯簇到物理頁(yè)的映射表,在映射表中查找該邏輯簇對(duì)應(yīng)的物理頁(yè)地址。如果該映射表中沒(méi)有該邏輯簇號(hào),那么再打開前一個(gè)超級(jí)塊的邏輯簇到物理頁(yè)的映射表繼續(xù)查找,直到找到為止。通過(guò)本發(fā)明,對(duì)于每一個(gè)邏輯塊,只要記錄其最后一次映射到的物理塊號(hào)和物理頁(yè)號(hào),就可以找到該邏輯塊中所有邏輯簇對(duì)應(yīng)的物理頁(yè)的地址。因此本發(fā)明實(shí)施例能夠顯著提高FTL的地址轉(zhuǎn)換速度,占用的硬件資源少,對(duì)于連續(xù)數(shù)據(jù)以及隨機(jī)數(shù)據(jù)的讀寫具有很好的執(zhí)行效率,具有較強(qiáng)的靈活性。以上所述的僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明不限于以上實(shí)施例。可以理解,本 領(lǐng)域技術(shù)人員在不脫離本發(fā)明的基本構(gòu)思的前提下直接導(dǎo)出或聯(lián)想到的其他改進(jìn)和變化,均應(yīng)認(rèn)為包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種閃存FTL的地址轉(zhuǎn)換方法,其特征在于包括以下步驟 根據(jù)邏輯地址得到相應(yīng)的邏輯塊號(hào)和塊內(nèi)邏輯簇號(hào); 根據(jù)所述邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表,得到物理塊號(hào)和物理頁(yè)號(hào); 根據(jù)所述物理塊號(hào)和塊內(nèi)邏輯簇號(hào)查找邏輯簇到物理頁(yè)的映射表,得到邏輯塊中所有邏輯簇相應(yīng)的物理頁(yè)號(hào); 所述超級(jí)塊用于對(duì)所有物理塊進(jìn)行分組,每個(gè)超級(jí)塊包括8個(gè)物理塊,所有超級(jí)塊的物理號(hào)不重復(fù),每個(gè)邏輯塊對(duì)應(yīng)一個(gè)超級(jí)塊組。
2.根據(jù)權(quán)利要求I所述閃存FTL的地址轉(zhuǎn)換方法,其特征在于所述根據(jù)邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表,得到物理塊號(hào)和物理頁(yè)號(hào),包括根據(jù)所述邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表找到該邏輯塊地址空間最后一次映射到的物理塊號(hào)。
3.根據(jù)權(quán)利要求2所述閃存FTL的地址轉(zhuǎn)換方法,其特征在于構(gòu)建邏輯塊地址空間到超級(jí)塊組的映射表,所述邏輯塊地址空間到超級(jí)塊組的映射表用來(lái)記錄每個(gè)邏輯塊最后一次映射到的超級(jí)塊的物理號(hào)。
4.根據(jù)權(quán)利要求I所述閃存FTL的地址轉(zhuǎn)換方法,其特征在于構(gòu)建邏輯簇到物理頁(yè)的映射表,所述邏輯簇到物理頁(yè)的映射表用來(lái)保存邏輯簇到當(dāng)前打開的超級(jí)塊的物理頁(yè)的映射關(guān)系。
5.根據(jù)權(quán)利要求4所述閃存FTL的地址轉(zhuǎn)換方法,其特征在于構(gòu)建邏輯簇到物理頁(yè)的映射表,所述邏輯簇到物理頁(yè)的映射表保存在每個(gè)超級(jí)塊的最后4頁(yè),當(dāng)邏輯塊映射到該超級(jí)塊時(shí),首先從該超級(jí)塊中讀出該邏輯簇到物理頁(yè)的映射表,查找該映射表得到相應(yīng)的物理頁(yè)地址。
全文摘要
本發(fā)明公開一種閃存FTL的地址轉(zhuǎn)換方法,包括以下步驟根據(jù)邏輯地址得到相應(yīng)的邏輯塊號(hào)和塊內(nèi)邏輯簇號(hào);根據(jù)所述邏輯塊號(hào)查找邏輯塊地址空間到超級(jí)塊組的映射表得到相應(yīng)的物理塊號(hào)和物理頁(yè)號(hào);根據(jù)物理塊號(hào)和塊內(nèi)邏輯簇號(hào)查找邏輯簇到物理頁(yè)的映射表得到相應(yīng)的物理地址。根據(jù)本發(fā)明,對(duì)于每一個(gè)邏輯塊,只要記錄其最后一次映射到的物理塊號(hào)和物理頁(yè)號(hào),就可以找到該邏輯塊中所有邏輯簇對(duì)應(yīng)的物理頁(yè)的地址。因此本發(fā)明能夠顯著提高FTL的地址轉(zhuǎn)換速度,占用的硬件資源少,對(duì)于連續(xù)數(shù)據(jù)以及隨機(jī)數(shù)據(jù)的讀寫具有很好的執(zhí)行效率,具有較強(qiáng)的靈活性。
文檔編號(hào)G06F12/02GK102819496SQ20121029259
公開日2012年12月12日 申請(qǐng)日期2012年8月16日 優(yōu)先權(quán)日2012年8月16日
發(fā)明者黃益人, 董春雷, 周毅, 奚谷楓 申請(qǐng)人:無(wú)錫紫芯集成電路系統(tǒng)有限公司