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

一種nand閃存的轉(zhuǎn)換層讀寫方法

文檔序號:6598383閱讀:373來源:國知局
專利名稱:一種nand閃存的轉(zhuǎn)換層讀寫方法
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式系統(tǒng)存儲器讀寫技術(shù)領(lǐng)域,具體來說涉及一種NAND閃存的轉(zhuǎn) 換層讀寫方法。
背景技術(shù)
目前的隨身電子產(chǎn)品,如手機(jī)、隨身聽所用的儲存裝置大都是閃存(以下稱 flashmemory或者直接稱為flash),但flash的特性是無法重復(fù)在同一塊內(nèi)存位置做寫入 的動作,必須事先擦除該塊內(nèi)存位置,亦即將其充電,才能再做寫入的動作,因此一般使用 的文件系統(tǒng),如FAT16、FAT32、NTFS, ext2等將無法直接用在flash memory上。如果想要 沿用這些文件系統(tǒng),則必須透過一層轉(zhuǎn)換層(以下稱為Translation Layer)來將邏輯塊 地址(以下稱為Logical BlockAddress)對應(yīng)到實(shí)體的flash memory的位置(以下簡稱 為物理地址),這種映射關(guān)系稱之為邏輯到物理的映射關(guān)系,并透過一些機(jī)制能讓系統(tǒng)能把 flash memory當(dāng)作一般的硬盤一樣處理,我們稱這層為NAND閃存的轉(zhuǎn)換層(即NAND Flash Translation Layer,以下簡稱為 NFTL)。在目前一些現(xiàn)有NFTL,也簡稱為存儲技術(shù)設(shè)備層(即Memory Technology Drivers,簡稱為MTD層),都使用邏輯到物理的一對一的映射關(guān)系,即,當(dāng)系統(tǒng)格式化時(shí),先 建立映射關(guān)系,并將這些映射關(guān)系寫入到NAND閃存的SPARE區(qū),因?yàn)镹AND閃存的數(shù)據(jù)塊一 般分為兩個(gè)區(qū)域數(shù)據(jù)區(qū)(即DATA區(qū))和文件系統(tǒng)信息區(qū)(即SPARE區(qū)),以便掉電后再 上電時(shí)的信息還原。如果以后對相同的邏輯頁進(jìn)行操作時(shí),會先拿另外一個(gè)備用塊來先做 數(shù)據(jù)交換。如果切換到其它塊寫操作,將這兩塊的數(shù)據(jù)進(jìn)行合并,擦除原來老的塊,然后重 新組合。如此循環(huán)更替,經(jīng)過長時(shí)間使用后,備用塊全部變成壞塊后,系統(tǒng)將無法工作。另外,現(xiàn)有技術(shù)方法無法使用NAND閃存的新特性——多平面(MULTIPLANE)方式。 由于現(xiàn)在市場上主流的多級單元(multi level cell,簡稱MLC)NAND閃存都有單平面(即 單plane)操作和雙平面(即雙plane)操作兩種模式,雙plane又可以稱為2plane操作。如圖1所示為一款MLC NAND閃存Samsung K9LBG08U0M的PLANE切分圖,單片 的 K9LBG08U0M 共有 8192 個(gè) block,被切分為 4 個(gè) plane。Plane 0 包括了 block 0、block
2、......、block 4094,Plane 1 包括了 block Ublock 3、......、block 4095,Plane2 包括了
block 4096,block 4098、......、block 8190, Plane 3包括了 block 4097、block4099、......、
block 8191。Plane 0與plane 1互為奇偶交替,plane 2和plane 3也互為奇偶交替,如 上的這樣奇偶交替的一對plane稱為paired plane。NAND閃存的普通操作,如擦除(erase)、寫(program)、讀(read)、頁對拷 (copyback),都是單plane的操作,即erase只能夠擦除某個(gè)plane的一個(gè)block,program 只能夠?qū)懩硞€(gè)plane的一個(gè)page,其他操作依此類同。MLC NAND閃存除了提供單plane的操作,還提供2plane的操作選擇,這里 的2plane只能互為paired plane。如雙平面擦除(2plane_erase),可對plane 0的 block 2和plane 1的block 3同時(shí)進(jìn)行擦除。雙平面寫(2plane_program)或雙平面讀
4(2plane_read),則可對block 2和block 3的pagel26同時(shí)進(jìn)行寫或讀,其他操作依此類同。2 plane的操作,大大減少了 NAND閃存的操作時(shí)間。相同數(shù)據(jù)量的操作中,寫速度 可以提高到原來的1. 5倍,擦速度可以提高到原來的1. 5倍。因此,合理地利用NAND閃存 的2plane操作將有助于提高NAND閃存的讀寫時(shí)間。綜上,現(xiàn)有技術(shù)存在以下缺點(diǎn)第一、當(dāng)系統(tǒng)格式化時(shí)就建立起映射關(guān)系,這樣會 增加系統(tǒng)的格式化的時(shí)間,而且浪費(fèi)了一次寫NAND閃存;第二、當(dāng)壞塊數(shù)目大于備用塊時(shí), 系統(tǒng)將無法啟動;第三、沒有實(shí)現(xiàn)擦寫的均衡;第四、對邏輯地址的跳寫時(shí)會發(fā)生塊的數(shù)據(jù) 搬移,從而此時(shí)效率低下;第五、無法使用NAND閃存的新特性多平面(MULTIPLANE)方式寫; 第六、在發(fā)生數(shù)據(jù)搬移時(shí),無法使用頁對拷(C0PYBACK)功能,使得數(shù)據(jù)搬移時(shí)效率過低。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種NAND閃存的轉(zhuǎn)換層讀寫方法,它能夠?qū)崿F(xiàn)NAND閃存 的均衡擦寫,提高NAND閃存的壽命,使用NAND閃存的MULTIPLANE方式寫,從而為整體寫文 件提速,從而提高讀寫的性能,實(shí)現(xiàn)NAND閃存的逆序?qū)懀嵘鴮?、回頭寫的性能。本發(fā)明的目的可通過以下的技術(shù)措施來實(shí)現(xiàn)一種NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于包括以下步驟(1)、系統(tǒng)啟動,從NAND閃存中讀出所有物理塊中的數(shù)據(jù)鏈的信息,還原掉電前 NAND閃存的轉(zhuǎn)換層的數(shù)據(jù)鏈;(2)、檢查數(shù)據(jù)鏈?zhǔn)欠褚驂膲K或者掉電而被損壞,并對所述數(shù)據(jù)鏈進(jìn)行修復(fù);(3)、檢查當(dāng)前可用塊的數(shù)目,如果可用塊的數(shù)目小于系統(tǒng)給定的一個(gè)閥值時(shí),則 進(jìn)行垃圾塊回收過程;(4)、等待系統(tǒng)調(diào)用;(5)、根據(jù)系統(tǒng)調(diào)用命令中所要求的NAND閃存的轉(zhuǎn)換層的邏輯地址找到與所述邏 輯地址對應(yīng)的數(shù)據(jù)鏈;如果系統(tǒng)調(diào)用命令為讀命令將轉(zhuǎn)向第(6)步,如果為寫命令將轉(zhuǎn)向 第⑶步;(6)、查找讀命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果所述邏輯頁中的所有物理頁 都是空頁,將直接返回OXff數(shù)據(jù);否則,讀出邏輯頁中的最靠近數(shù)據(jù)鏈表頭的非空物理頁 中的數(shù)據(jù),并返回;(7)、讀完操作后,返回第(4)步繼續(xù)等待;(8)、查找寫命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果所述邏輯頁的物理頁中存在 可用的物理頁,則對該物理頁進(jìn)行寫操作,如果不存在可用的物理頁,則執(zhí)行第(9)步;(9)、從系統(tǒng)可用塊中分配一組新的物理塊,并將數(shù)據(jù)寫入所述新的物理塊中;(10)、如果寫成功,則將新的物理塊加入到當(dāng)前數(shù)據(jù)鏈中,并返回到第(4)步等待 系統(tǒng)調(diào)用,如果寫失敗,則將該新的物理塊標(biāo)記為壞塊,退回到第(9)步。所述數(shù)據(jù)鏈信息記錄在數(shù)據(jù)鏈中每個(gè)物理塊的頁的SPARE區(qū)。所述邏輯頁是指某個(gè)數(shù)據(jù)鏈中所有物理塊的同一頁面號的所有物理頁的組合。所述步驟(8)中如果當(dāng)前數(shù)據(jù)鏈上沒有物理塊節(jié)點(diǎn),則從可用塊中分配一組新的 物理塊加入到數(shù)據(jù)鏈中。
所述一組新的物理塊優(yōu)先地為兩個(gè)可以使用多平面方式的物理塊,當(dāng)可用塊中不 存在可以使用多平面方式的物理塊時(shí),所述一組新的物理塊就為一個(gè)普通的物理塊。所述數(shù)據(jù)鏈?zhǔn)怯啥鄠€(gè)物理塊組成的數(shù)據(jù)鏈,每個(gè)數(shù)據(jù)鏈對應(yīng)一個(gè)邏輯地址,所述 數(shù)據(jù)鏈表示邏輯地址到物理地址的映射關(guān)系,所述映射關(guān)系為一對多的映射關(guān)系。所述對數(shù)據(jù)鏈進(jìn)行修復(fù)的過程為如果數(shù)據(jù)鏈中有一個(gè)物理塊變?yōu)閴膲K,則根據(jù) 數(shù)據(jù)鏈上其它物理塊的信息進(jìn)行數(shù)據(jù)鏈的修復(fù)。所述可用塊為NAND閃存的所有物理塊中垃圾塊和空閑塊的總和;所述空閑塊是 指已經(jīng)被擦除的且可直接使用的物理塊;所述垃圾塊是指垃圾塊回收過程中被釋放的物理 塊。所述垃圾回收的過程為查找所有的數(shù)據(jù)鏈,找到符合以下條件的數(shù)據(jù)鏈a、數(shù) 據(jù)鏈長大于1 ;b、擦除次數(shù)最??;C、數(shù)據(jù)鏈最長;所述三個(gè)條件的優(yōu)先級依次降低,如果找 到這樣的數(shù)據(jù)鏈,則將該數(shù)據(jù)鏈中的數(shù)據(jù)全部復(fù)制到一個(gè)可用塊上,并將該可用塊加入到 該數(shù)據(jù)鏈中,再釋放該數(shù)據(jù)鏈上的原有的物理塊,這些被釋放的物理塊就作為垃圾塊。所述系統(tǒng)調(diào)用的讀操作如果符合多平面讀操作,則使用這種方式讀,如果系統(tǒng)調(diào) 用的讀命令為單平面讀操作,則直接讀出相應(yīng)頁數(shù)據(jù);所述系統(tǒng)調(diào)用的寫命令如果符合多 平面寫操作,則使用這種方式寫入數(shù)據(jù),如果系統(tǒng)調(diào)用的寫命令為單平面寫操作,則直接寫 入相應(yīng)頁數(shù)據(jù)。本發(fā)明方法相對與現(xiàn)有技術(shù)存在以下有益效果1、本發(fā)明方法的寫操作中,只是對存在空的物理頁的物理塊進(jìn)行寫,如果不存在 空的物理頁,并不會擦除舊的物理塊,而是會分配一組新的物理塊進(jìn)行寫操作,即,不是每 一次的寫操作都進(jìn)行擦除操作,因此實(shí)現(xiàn)了 NAND閃存的均衡擦寫,提高NAND閃存的壽命;2、在讀或者寫操作是可以使用NAND閃存的MULTIPLANE方式寫,從而為整體寫文 件提速,從而提高讀寫的性能;3、由于每個(gè)邏輯地址中存在多個(gè)物理塊,因此可以對該邏輯地址中的任意一個(gè)邏 輯頁面進(jìn)行逆序?qū)懖僮?,從而?shí)現(xiàn)NAND閃存的逆序?qū)?,同時(shí),提升跳寫、回頭寫的性能。


圖1是一款多級單元NAND閃存的平面切分圖;圖2是本發(fā)明的NAND閃存的轉(zhuǎn)換層讀寫方法的流程圖;圖3是本發(fā)明方法中各種類型的物理塊的轉(zhuǎn)換關(guān)系示意圖;圖4是本發(fā)明方法中的邏輯地址到物理地址的映射關(guān)系圖;圖5是本發(fā)明的NAND閃存中一個(gè)數(shù)據(jù)鏈的結(jié)構(gòu)示意圖;圖6是圖5所示的數(shù)據(jù)鏈中物理塊的使用狀態(tài)圖。
具體實(shí)施例方式圖2示出了本發(fā)明的NAND閃存的轉(zhuǎn)換層讀寫方法的流程圖,該方法包括以下步 驟(1)、系統(tǒng)啟動,從NAND閃存中讀出所有物理塊中的數(shù)據(jù)鏈中每個(gè)物理塊的頁的 SPARE區(qū)的數(shù)據(jù)鏈信息,還原掉電前NAND閃存的轉(zhuǎn)換層的數(shù)據(jù)鏈;多個(gè)物理塊組成數(shù)據(jù)鏈,每個(gè)數(shù)據(jù)鏈對應(yīng)一個(gè)邏輯地址,數(shù)據(jù)鏈表示邏輯地址到物理地址的映射關(guān)系,映射關(guān)系為 一對多的映射關(guān)系。如圖4的邏輯地址到物理地址的映射關(guān)系圖中示出了一個(gè)邏輯地址為 KLogical add= 1)的數(shù)據(jù)鏈表的結(jié)構(gòu)示意圖,該數(shù)據(jù)鏈表中包含三個(gè)物理塊(block),塊 號分別為2、1、5。圖中示出了這三個(gè)物理塊分別為不同plane上的物理塊,物理塊2為該 數(shù)據(jù)鏈的表頭元素,其中物理塊2的物理頁中的空閑區(qū)記錄數(shù)據(jù)鏈表信息,物理塊1和5的 物理頁中的空閑區(qū)則記錄下一個(gè)物理塊的信息。(2)、根據(jù)SPARE區(qū)記錄的數(shù)據(jù),檢查數(shù)據(jù)鏈?zhǔn)欠褚驂膲K或者掉電而被損壞,并對 數(shù)據(jù)鏈進(jìn)行修復(fù);對數(shù)據(jù)鏈進(jìn)行修復(fù)的過程為如果數(shù)據(jù)鏈中有一個(gè)物理塊變?yōu)閴膲K,則 根據(jù)數(shù)據(jù)鏈上其它物理塊的信息進(jìn)行數(shù)據(jù)鏈的修復(fù)。(3)、檢查當(dāng)前可用塊的數(shù)目,如果可用塊的數(shù)目小于系統(tǒng)給定的一個(gè)閥值時(shí),則 進(jìn)行垃圾塊回收過程;可用塊為NAND閃存的所有物理塊中垃圾塊和空閑塊的總和;空閑塊 是指已經(jīng)被擦除的、且可直接使用的物理塊;垃圾塊是指垃圾塊回收過程中被釋放的物理 塊。當(dāng)垃圾塊和空閑塊的總和小于系統(tǒng)給定的一個(gè)閥值時(shí),則進(jìn)行垃圾塊回收過程。垃圾 回收的過程為查找所有的數(shù)據(jù)鏈,找到符合以下條件的數(shù)據(jù)鏈a、數(shù)據(jù)鏈長大于1 ;b、擦 除次數(shù)最??;c、數(shù)據(jù)鏈最長;上述三個(gè)條件的優(yōu)先級依次降低,如果找到這樣的數(shù)據(jù)鏈,則 將該數(shù)據(jù)鏈中的數(shù)據(jù)全部復(fù)制到一個(gè)可用塊上,并將該可用塊加入到該數(shù)據(jù)鏈中,再釋放 該數(shù)據(jù)鏈上的原有的物理塊,這些被釋放的物理塊就作為垃圾塊。圖3示出了數(shù)據(jù)塊、空閑塊和垃圾塊之間的轉(zhuǎn)換關(guān)系。當(dāng)空閑塊和垃圾塊的總和 小于系統(tǒng)閾值時(shí),對已有的數(shù)據(jù)塊進(jìn)行垃圾回收并產(chǎn)生新的垃圾塊,該系統(tǒng)閾值對于不同 系統(tǒng)為不同的值;當(dāng)空閑塊少于一定的閾值時(shí),則將已有的垃圾塊進(jìn)行擦除生成新的空閑 塊,該空閑塊的閾值也可根據(jù)系統(tǒng)需求進(jìn)行調(diào)節(jié);當(dāng)系統(tǒng)需要分配新的物理塊進(jìn)行寫入操 作時(shí),則從空閑塊中取出所需要的物理塊寫入數(shù)據(jù),使之成為有效的數(shù)據(jù)塊。(4)、等待系統(tǒng)調(diào)用;(5)、根據(jù)系統(tǒng)調(diào)用命令中所要求的NAND閃存的轉(zhuǎn)換層的邏輯地址找到與邏輯地 址對應(yīng)的數(shù)據(jù)鏈;如果系統(tǒng)調(diào)用命令為讀命令將轉(zhuǎn)向第(6)步,如果為寫命令將轉(zhuǎn)向第(8)

少;(6)、查找讀命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果邏輯頁中的所有物理頁都是 空頁,將直接返回OXff數(shù)據(jù);否則,讀出邏輯頁中的最靠近數(shù)據(jù)鏈表頭的非空物理頁中的 數(shù)據(jù),并返回;其中,邏輯頁是指某個(gè)數(shù)據(jù)鏈中所有物理塊的同一頁面號的所有物理頁的組
I=I O如圖5至圖6所表示的某個(gè)數(shù)據(jù)鏈,數(shù)據(jù)鏈狀態(tài)為圖5所示 (52 — 88 — 8 — 5 — 21),其中物理塊號為52的物理塊為數(shù)據(jù)鏈的表頭,物理塊號為21 的數(shù)據(jù)塊為數(shù)據(jù)鏈的表尾。各個(gè)物理塊可能每個(gè)塊的使用狀態(tài)如圖6所示,圖6中標(biāo)明 “USE” (被使用)所對應(yīng)的頁為已經(jīng)寫有數(shù)據(jù)的頁,沒有標(biāo)志“USE”的頁為沒有寫過數(shù)據(jù)的 頁。對于讀操作,如果系統(tǒng)需要讀這個(gè)數(shù)據(jù)鏈的第0個(gè)邏輯頁時(shí),因?yàn)檎麄€(gè)數(shù)據(jù)鏈的 第O頁都沒有數(shù)據(jù),證明這頁從來沒有被寫過數(shù)據(jù),則將返回全OXFF數(shù)據(jù),如果讀第1個(gè)邏 輯頁,將會從表頭開始查找數(shù)據(jù)鏈,直到找到不為空的頁,讀出并返回其中數(shù)據(jù),因?yàn)槲锢?塊52、物理塊88的第1頁都為空,所以將讀塊8的數(shù)據(jù),并返回。如果讀第5個(gè)邏輯頁,因?yàn)楸眍^物理塊52的第5頁已經(jīng)有數(shù)據(jù)了,所以將直接讀出物理塊52的數(shù)據(jù),并返回。下表
1出了所有邏輯頁的有效數(shù)據(jù)所在的物理塊的號 表 1(7)、讀完操作后,返回第(4)步繼續(xù)等待;(8)、查找寫命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果邏輯頁的物理頁中存在可用 的物理頁,則對該物理頁進(jìn)行寫操作,如果不存在可用的物理頁,則執(zhí)行第(9)步;如果當(dāng) 前數(shù)據(jù)鏈上沒有物理塊節(jié)點(diǎn),則從可用塊中分配一組新的物理塊加入到數(shù)據(jù)鏈中。一組新 的物理塊優(yōu)先地為兩個(gè)可以使用多平面方式的物理塊,當(dāng)可用塊中不存在可以使用多平面 方式的物理塊時(shí),一組新的物理塊就為一個(gè)普通的物理塊。(9)、從系統(tǒng)可用塊中分配一組新的物理塊,并將數(shù)據(jù)寫入所述新的物理塊中;(10)、如果寫成功,則將新的物理塊加入到當(dāng)前數(shù)據(jù)鏈中,并返回到第(4)步等待 系統(tǒng)調(diào)用,如果寫失敗,則將該新的物理塊標(biāo)記為壞塊,退回到第(9)步。由于NANDFLASH有一種特性,不能重復(fù)寫和回寫,不能重復(fù)寫的意思是,如果塊的 某頁已經(jīng)被寫過就不能再寫,必須擦寫才能寫,不能回寫的意思是當(dāng)?shù)贜頁被寫過后,不管 第0頁到第N-I頁是否被寫過,都不能再使用。對于圖5至圖6所示的數(shù)據(jù)鏈的寫操作過 程如下下表2示出了可以寫的頁的塊號信息,因?yàn)槲锢韷K52的第6頁已經(jīng)被使用,所以第 0到5頁都不能再使用了,只有第七頁沒有使用,但是因?yàn)檎麄€(gè)數(shù)據(jù)鏈的第七頁都沒有被使 用,所以將會優(yōu)先使用塊尾的第七頁,如果寫其它頁的話,將會需要分配一個(gè)空閑塊,寫相 應(yīng)頁,并加入到數(shù)據(jù)鏈表中。 表 2對于如圖1所示NAND閃存,Plane 0的block 2和Plane 1的block 3分別位于 兩個(gè)對應(yīng)plane之內(nèi),邏輯上把它們當(dāng)作一個(gè)整體block來使用,也就是上述的一組物理 塊,則這兩個(gè)物理塊的物理頁page則重新相間排布,形成新的“大bl0Ck”:bl0Ck 2的page
0、1、2、......、126、127 變成了新的“大 block” 的 page 0、2、4、......,252,254 ;block 3 的
page 0、1、2、......、126、127 變成了新的大 block 的 page 1、3、5、......、253、255。這樣把原本不相干的page當(dāng)作了連續(xù)的page,系統(tǒng)分配時(shí)則分配一組這樣的物 理塊,這樣的好處是便于讀寫操作中可以使用2 plane方式。從而,在上述的讀寫過程中系統(tǒng)調(diào)用的讀操作如果符合多平面讀操作,則使用這 種方式讀,如果系統(tǒng)調(diào)用的讀命令為單平面讀操作,則直接讀出相應(yīng)頁數(shù)據(jù);系統(tǒng)調(diào)用的寫 命令如果符合多平面寫操作,則使用這種方式寫入數(shù)據(jù),如果系統(tǒng)調(diào)用的寫命令為單平面
8寫操作,則直接寫入相應(yīng)頁數(shù)據(jù)。如圖1所示,當(dāng)上層邏輯要求讀、寫連續(xù)的page (如page 0到page 3)時(shí),則使用“大block”的page (^Ppage 1組成符合2plane操作的兩個(gè)page, 一次性讀、寫這兩個(gè)page。同理page 2和page 3也是如此組合使用。從而,系統(tǒng)的讀、寫 性能大為提升。此外,在垃圾塊的擦除操作的時(shí)候也是如此,可以使用block 2和block 3組成的 “大block”,使用2plane的操作,一次性擦除block 2和block 3。綜上,本發(fā)明的NAND閃存的轉(zhuǎn)換層讀寫方法,能夠?qū)崿F(xiàn)NAND閃存的均衡擦寫, 提高NAND閃存的壽命,使用NAND閃存的MULTIPLANE方式寫,從而為整體寫文件提速,從 而提高讀寫的性能,同時(shí)配合由硬件對數(shù)據(jù)區(qū)與文件系統(tǒng)信息區(qū)分別進(jìn)行的ECC(Error Correction Code,糾錯(cuò)碼)校驗(yàn),實(shí)現(xiàn)NAND閃存的逆序?qū)?,提升跳寫、回頭寫的性能。本發(fā) 明方法中使用的數(shù)據(jù)鏈可以為普通的數(shù)據(jù)鏈,當(dāng)然也可以為雙向鏈表或者其他格式的數(shù)據(jù) 鏈表。在Plane的基礎(chǔ)上的“大block”的劃分當(dāng)然也可以根據(jù)系統(tǒng)的性能采用兩個(gè)以上的 物理塊組成新的“大block”從而可以采用多Plane的讀寫等操作,因此,在不脫離本發(fā)明構(gòu) 思的基礎(chǔ)上所作出的修改都屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于包括以下步驟(1)、系統(tǒng)啟動,從NAND閃存中讀出所有物理塊中的數(shù)據(jù)鏈的信息,還原掉電前NAND閃存的轉(zhuǎn)換層的數(shù)據(jù)鏈;(2)、檢查數(shù)據(jù)鏈?zhǔn)欠褚驂膲K或者掉電而被損壞,并對所述數(shù)據(jù)鏈進(jìn)行修復(fù);(3)、檢查當(dāng)前可用塊的數(shù)目,如果可用塊的數(shù)目小于系統(tǒng)給定的一個(gè)閥值時(shí),則進(jìn)行垃圾塊回收過程;(4)、等待系統(tǒng)調(diào)用;(5)、根據(jù)系統(tǒng)調(diào)用命令中所要求的NAND閃存的轉(zhuǎn)換層的邏輯地址找到與所述邏輯地址對應(yīng)的數(shù)據(jù)鏈;如果系統(tǒng)調(diào)用命令為讀命令將轉(zhuǎn)向第(6)步,如果為寫命令將轉(zhuǎn)向第(8)步;(6)、查找讀命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果所述邏輯頁中的所有物理頁都是空頁,將直接返回0Xff數(shù)據(jù);否則,讀出邏輯頁中的最靠近數(shù)據(jù)鏈表頭的非空物理頁中的數(shù)據(jù),并返回;(7)、讀完操作后,返回第(4)步繼續(xù)等待;(8)、查找寫命令所要求的當(dāng)前數(shù)據(jù)鏈的邏輯頁,如果所述邏輯頁的物理頁中存在可用的物理頁,則對該物理頁進(jìn)行寫操作,如果不存在可用的物理頁,則執(zhí)行第(9)步;(9)、從系統(tǒng)可用塊中分配一組新的物理塊,并將數(shù)據(jù)寫入所述新的物理塊中;(10)、如果寫成功,則將新的物理塊加入到當(dāng)前數(shù)據(jù)鏈中,并返回到第(4)步等待系統(tǒng)調(diào)用,如果寫失敗,則將該新的物理塊標(biāo)記為壞塊,退回到第(9)步。
2.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述數(shù)據(jù)鏈信息 記錄在數(shù)據(jù)鏈中每個(gè)物理塊的頁的空閑區(qū)。
3.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述邏輯頁是指 某個(gè)數(shù)據(jù)鏈中所有物理塊的同一頁面號的所有物理頁的組合。
4.根據(jù)權(quán)利要求3所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述步驟(8)中 如果當(dāng)前數(shù)據(jù)鏈上沒有物理塊節(jié)點(diǎn),則從可用塊中分配一組新的物理塊加入到數(shù)據(jù)鏈中。
5.根據(jù)權(quán)利要求1或者4所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述一組 新的物理塊優(yōu)先地為兩個(gè)可以使用多平面方式的物理塊,當(dāng)可用塊中不存在可以使用多平 面方式的物理塊時(shí),所述一組新的物理塊就為一個(gè)普通的物理塊。
6.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述數(shù)據(jù)鏈?zhǔn)怯?多個(gè)物理塊組成的數(shù)據(jù)鏈,每個(gè)數(shù)據(jù)鏈對應(yīng)一個(gè)邏輯地址,所述數(shù)據(jù)鏈表示邏輯地址到物 理地址的映射關(guān)系,所述映射關(guān)系為一對多的映射關(guān)系。
7.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述對數(shù)據(jù)鏈進(jìn) 行修復(fù)的過程為如果數(shù)據(jù)鏈中有一個(gè)物理塊變?yōu)閴膲K,則根據(jù)數(shù)據(jù)鏈上其它物理塊的信 息進(jìn)行數(shù)據(jù)鏈的修復(fù)。
8.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述可用塊為 NAND閃存的所有物理塊中垃圾塊和空閑塊的總和;所述空閑塊是指已經(jīng)被擦除的、且可直 接使用的物理塊;所述垃圾塊是指垃圾塊回收過程中被釋放的物理塊。
9.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述垃圾回收的 過程為查找所有的數(shù)據(jù)鏈,找到符合以下條件的數(shù)據(jù)鏈a、數(shù)據(jù)鏈長大于1 ;b、擦除次數(shù)最?。籆、數(shù)據(jù)鏈最長;所述三個(gè)條件的優(yōu)先級依次降低,如果找到這樣的數(shù)據(jù)鏈,則將該數(shù) 據(jù)鏈中的數(shù)據(jù)全部復(fù)制到一個(gè)可用塊上,并將該可用塊加入到該數(shù)據(jù)鏈中,再釋放該數(shù)據(jù) 鏈上的原有的物理塊,這些被釋放的物理塊就作為垃圾塊。
10.根據(jù)權(quán)利要求1所述的NAND閃存的轉(zhuǎn)換層讀寫方法,其特征在于所述系統(tǒng)調(diào)用 的讀操作如果符合多平面讀操作,則使用這種方式讀,如果系統(tǒng)調(diào)用的讀命令為單平面讀 操作,則直接讀出相應(yīng)頁數(shù)據(jù);所述系統(tǒng)調(diào)用的寫命令如果符合多平面寫操作,則使用這種 方式寫入數(shù)據(jù),如果系統(tǒng)調(diào)用的寫命令為單平面寫操作,則直接寫入相應(yīng)頁數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種NAND閃存的轉(zhuǎn)換層讀寫方法,包括以下步驟(1)系統(tǒng)啟動還原掉電前NAND閃存的轉(zhuǎn)換層的數(shù)據(jù)鏈;(2)檢查數(shù)據(jù)鏈并修復(fù);(3)檢查當(dāng)前可用塊的數(shù)目;(4)等待系統(tǒng)調(diào)用;(5)根據(jù)系統(tǒng)調(diào)用命令進(jìn)行相應(yīng)的讀寫操作。其中,所述系統(tǒng)調(diào)用的讀或者寫操作如果符合多平面讀或?qū)懖僮?,則使用這種方式讀或?qū)?,如果系統(tǒng)調(diào)用的讀命令為單平面讀或?qū)懖僮?,則直接讀出或?qū)懭胂鄳?yīng)頁數(shù)據(jù)。本發(fā)明方法能夠?qū)崿F(xiàn)NAND閃存的均衡擦寫,提高NAND閃存的壽命,使用NAND閃存的MULTIPLANE方式寫,從而為整體寫文件提速,從而提高讀寫的性能,實(shí)現(xiàn)NAND閃存的逆序?qū)?,提升跳寫、回頭寫的性能。
文檔編號G06F12/02GK101923448SQ20101011172
公開日2010年12月22日 申請日期2010年2月8日 優(yōu)先權(quán)日2010年2月8日
發(fā)明者易若翔, 胡勝發(fā), 艾駿 申請人:安凱(廣州)微電子技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1