亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種提高nftl算法讀寫性能的方法

文檔序號:8339530閱讀:202來源:國知局
一種提高nftl算法讀寫性能的方法
【技術(shù)領域】
[0001]本發(fā)明涉及一種提高NFTL算法讀寫性能的方法,可以降低NFTL算法中額外的數(shù)據(jù)讀取造成的時間消耗,提升NandF Iash讀寫效率,可廣泛應用于片上系統(tǒng)的NandF I ash存儲器的管理。
【背景技術(shù)】
[0002]半導體行業(yè)的蓬勃發(fā)展,出現(xiàn)了高性能的存儲器NandFlash,NandFlash存儲器使用半導體作為存儲介質(zhì),具有高速,低能耗和防震等優(yōu)點。NandFlash最典型的應用就是固態(tài)硬盤SSD (Solid State Disk),是一種基于NandFlash芯片陣列的新型硬盤。固態(tài)盤沒有機械磁頭所以它也不會因為機械式的尋找數(shù)據(jù)而花費時間,它存取速度是普通磁盤的30倍。另外,固態(tài)存儲沒有普通磁盤的機械裝置而采用電子布線,所以在防震性、沖擊能力上也明顯好于普通磁盤,使它在惡劣環(huán)境下可以依然有很好的表現(xiàn),因此軍事、航天和通訊等行業(yè)都對NandFlash存儲的研宄高度的重視。
[0003]NandFlash存儲本身也存在一些不足。首先,它的存儲塊的擦除次數(shù)是有限的;其次,NandFlash必須要擦除之后才能重新寫入,導致寫入性能較低。因此,磨損均衡顯得尤為重要,好的磨損均衡管理方法不但能夠提高NandFlash性能和效率,還能夠大大的延長NandFlash的使用壽命?;诖?,出現(xiàn)了專門為NandFlash存儲器所使用的文件系統(tǒng),如JFFS,JFFS2,YAFFS, TrueFFS等,這些NandFlash專用的文件系統(tǒng)進行存儲管理為NandFlash設備提供專門的驅(qū)動和更好的數(shù)據(jù)管理。但是對于一個小型的S0C,由于資源的限制,想采用以上的文件系統(tǒng)對NandFlash進行管理不太現(xiàn)實,所以亟需一個輕量級的管理方法,能夠在有限資源的條件下,滿足對NandFlash的磨損均衡控制。目前對于小型的系統(tǒng),常采用的管理方法為FTL(Flash Translat1n Layer)及NFTL(NAND FlashTranslat1n Layer)兩種管理機制。
[0004]如圖1所示,F(xiàn)TL管理機制是采用以頁為單位進行存儲管理的方式,它采用的是物理頁地址與邏輯頁地址來進行一一對應。利用FTL管理機制,讀寫存取操作都是按頁進行,數(shù)據(jù)存儲時首先存儲在空白的頁面存儲區(qū)中,不可以對已經(jīng)寫有數(shù)據(jù)的頁上進行寫操作?;厥詹僮鲿r需要更新地址映射表中的轉(zhuǎn)換信息。這種管理算法比較直接,但是由于采用的頁映射機制,對于容量小、頁數(shù)少的存儲器,是極為方便的一種方法。但是,對于大容量NandFlash來說,就顯得比較吃力,例如,對于美光公司的MT29F32G08CBACA這個型號的NandFlash來說,共有4096個物理塊,每塊有256頁,按頁進行映射共需要4096*256*4=4MB的內(nèi)存空間來保存當前的映射表,對于片上系統(tǒng)來說內(nèi)存消耗過大。為了解決這個問題,提出了 NFTL算法,它是基于塊及頁的混合映射的機制。如圖2所示,每當寫入數(shù)據(jù)時,會查詢該鏈表中所有頁的狀態(tài),當找到頁為空閑時就將數(shù)據(jù)寫入該頁,當遍歷所有塊之后,仍然沒有找到可以寫入頁時,會重新分配一個新的塊,加入鏈表,然后將數(shù)據(jù)寫入其中。因為NFTL算法只需要記錄塊的狀態(tài),同樣對于美光公司的MT29F32G08CBACA這個型號的NandFlash來說,只需要4096*4B = 16KB的空間,大大降低了內(nèi)存消耗。但是對于NFTL算法來說,寫入或者讀取數(shù)據(jù)時,需要找到最近的數(shù)據(jù)則需要多次的查詢。例如,對于塊鏈長度為10的一個鏈表,最壞的情況下要獲取最新的數(shù)據(jù)需要讀取10頁的數(shù)據(jù),大大降低了讀寫性能。

【發(fā)明內(nèi)容】

[0005]為了克服現(xiàn)有技術(shù)的上述缺點,本發(fā)明提供了一種提高NFTL算法讀寫性能的方法,只需要讀取I次就能獲取最新數(shù)據(jù)所在的塊,從而降低了額外的數(shù)據(jù)讀取消耗,提升讀與性能。
[0006]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種提高NFTL算法讀寫性能的方法,將記錄塊中每一頁最新數(shù)據(jù)所在塊編號的自定義數(shù)據(jù)存儲在NFTL塊鏈表的首塊中的每一頁的OOB區(qū)中;數(shù)據(jù)寫入時,在獲得最新數(shù)據(jù)所在的塊后,先判斷該塊是否為塊鏈的最后一塊:若否,則將需要寫入的數(shù)據(jù)寫入塊鏈表中的下一個替換塊中;若是,則重新分配一個新的塊加入到塊鏈中,將需要寫入的數(shù)據(jù)寫入新的塊中;最后更新鏈表首塊對應頁的OOB區(qū)信息。
[0007]與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果是:NFTL算法的讀、寫性能與塊鏈表的長度成線性降低的關系,即鏈表越長,讀寫性能越低。應用本發(fā)明可以將需要L-1(L為塊鏈表長度)次查詢簡化為I次查詢,提升了 NFTL算法的讀、寫的性能,為NFTL算法在高速設備上的應用提供了很好的解決方法,可廣泛應用于片上系統(tǒng)的NandFlash存儲器的管理。
【附圖說明】
[0008]本發(fā)明將通過例子并參照附圖的方式說明,其中:
[0009]圖1是FTL管理機制映射不意圖;
[0010]圖2是NFTL算法示意圖;
[0011]圖3是NandFlash結(jié)構(gòu)不意圖;
[0012]圖4是本發(fā)明的OOB區(qū)數(shù)據(jù)結(jié)構(gòu)示意圖;
[0013]圖5是本發(fā)明的數(shù)據(jù)讀取/寫入流程圖。
【具體實施方式】
[0014]在本發(fā)明中利用了 NandFlash的冗余數(shù)據(jù)區(qū),稱OOB區(qū)。目前所有的NandFlash存儲設備的存儲區(qū)均由數(shù)據(jù)區(qū)和OOB區(qū)組成,OOB區(qū)可以存放校驗信息等數(shù)據(jù),也可以存放用戶自定義的數(shù)據(jù)。本發(fā)明選用美光公司MT29F32G08CBACA型NandFlash作為試驗對象,該NandFlash物理結(jié)構(gòu)如圖3所示。每一頁除了 4096字節(jié)的數(shù)據(jù)區(qū)外,還有224字節(jié)的OOB區(qū),在該區(qū)內(nèi)可以存儲數(shù)據(jù)。據(jù)此,本發(fā)明中設計了一種數(shù)據(jù)結(jié)構(gòu),存儲在OOB區(qū)中,數(shù)據(jù)結(jié)構(gòu)如圖4所示。用16bit記錄塊中每一頁最新數(shù)據(jù)所在塊編號,存儲在NFTL塊鏈表的首塊中的每一頁的OOB區(qū)當中,假若塊鏈長度為64,一共需要16*64/8 = 128字節(jié)。
[0015]在本發(fā)明中,數(shù)據(jù)讀取流程如圖5所示,首先根據(jù)NFTL算法獲取塊鏈表的首地址,根據(jù)此塊地址和頁內(nèi)偏移量讀取OOB區(qū)信息,然后根據(jù)OOB區(qū)信息獲得最新數(shù)據(jù)所在的塊,直接讀取該塊當中的數(shù)據(jù),結(jié)束讀流程。
[0016]在本發(fā)明中,數(shù)據(jù)寫入流程如圖5所示,包括如下步驟:
[0017]步驟一、首先根據(jù)NFTL算法獲取塊鏈表的首地址;
[0018]步驟二、根據(jù)首地址和頁內(nèi)偏移量讀取OOB區(qū)信息;
[0019]步驟三、根據(jù)OOB區(qū)信息獲得最新數(shù)據(jù)所在的塊;
[0020]步驟四、判斷該塊是否為塊鏈的最后一塊:
[0021]若否,則將需要寫入的數(shù)據(jù)寫入塊鏈表中的下一個替換塊中,然后進入步驟五;
[0022]若是,則重新分配一個新的塊加入到塊鏈中,將需要寫入的數(shù)據(jù)寫入新的塊中,然后進入步驟五;
[0023]步驟五、更新鏈表首塊對應頁的OOB信息。
[0024]在本發(fā)明中,數(shù)據(jù)讀取/寫入與塊鏈長度無關,讀取和寫入效率穩(wěn)定。設單頁讀取時間為R(單位ms),寫入時間為W (單位ms)。對于NFTL算法,若塊鏈長度為64,讀取數(shù)據(jù)最壞的可能是需要經(jīng)過63次讀取,即需要耗時Rnftl= 63R。寫入數(shù)據(jù)最壞的可能是需要經(jīng)過63次讀取再加上I次寫入時間,即需耗時Wnftl= 63R+W。在本發(fā)明中,讀取一次數(shù)據(jù)消耗時間為2R,寫入一次數(shù)據(jù)的時間為2R+W,因此,本發(fā)明的性能遠遠優(yōu)于NFTL算法,當塊鏈長度越長時越性能提升越明顯。
【主權(quán)項】
1.一種提高NFTL算法讀寫性能的方法,其特征在于:將記錄塊中每一頁最新數(shù)據(jù)所在塊編號的自定義數(shù)據(jù)存儲在NFTL塊鏈表的首塊中的每一頁的OOB區(qū)中;數(shù)據(jù)寫入時,在獲得最新數(shù)據(jù)所在的塊后,先判斷該塊是否為塊鏈的最后一塊:若否,則將需要寫入的數(shù)據(jù)寫入塊鏈表中的下一個替換塊中;若是,則重新分配一個新的塊加入到塊鏈中,將需要寫入的數(shù)據(jù)寫入新的塊中;最后更新鏈表首塊對應頁的OOB區(qū)信息。
2.根據(jù)權(quán)利要求1所述的一種提高NFTL算法讀寫性能的方法,其特征在于:所述最新數(shù)據(jù)的讀取流程為:首先根據(jù)NFTL算法獲取塊鏈表的首地址,再根據(jù)此塊地址和頁內(nèi)偏移量讀取OOB區(qū)信息,然后根據(jù)OOB區(qū)信息獲得最新數(shù)據(jù)所在的塊,直接讀取該塊當中的數(shù)據(jù),結(jié)束讀流程。
3.根據(jù)權(quán)利要求1所述的一種提高NFTL算法讀寫性能的方法,其特征在于:所述獲得最新數(shù)據(jù)所在的塊的方法為:首先根據(jù)NFTL算法獲取塊鏈表的首地址;然后根據(jù)首地址和頁內(nèi)偏移量讀取OOB區(qū)信息;最后根據(jù)OOB區(qū)信息獲得最新數(shù)據(jù)所在的塊。
4.根據(jù)權(quán)利要求1所述的一種提高NFTL算法讀寫性能的方法,其特征在于:所述自定義數(shù)據(jù)為16bit。
【專利摘要】本發(fā)明公開了一種提高NFTL算法讀寫性能的方法,將記錄塊中每一頁最新數(shù)據(jù)所在塊編號的自定義數(shù)據(jù)存儲在NFTL塊鏈表的首塊中的每一頁的OOB區(qū)中;數(shù)據(jù)寫入時,在根據(jù)OOB區(qū)信息獲得最新數(shù)據(jù)所在的塊后,先判斷該塊是否為塊鏈的最后一塊:若否,則將需要寫入的數(shù)據(jù)寫入塊鏈表中的下一個替換塊中;若是,則重新分配一個新的塊加入到塊鏈中,將需要寫入的數(shù)據(jù)寫入新的塊中;最后更新鏈表首塊對應頁的OOB信息。本發(fā)明方法將查詢次數(shù)簡化為1次,提升了NFTL算法的讀、寫的性能,為NFTL算法在高速設備上的應用提供了很好的解決方法,可廣泛應用于片上系統(tǒng)的NandFlash存儲器的管理。
【IPC分類】G06F12-06
【公開號】CN104657283
【申請?zhí)枴緾N201510056423
【發(fā)明人】王志奇, 章睿, 任仕玖, 龔冰青
【申請人】成都三零嘉微電子有限公司
【公開日】2015年5月27日
【申請日】2015年2月4日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1