欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種降低混合映射算法中映射表內(nèi)存資源占用的方法與流程

文檔序號(hào):12747953閱讀:624來(lái)源:國(guó)知局
一種降低混合映射算法中映射表內(nèi)存資源占用的方法與流程

本發(fā)明涉及NAND Flash存儲(chǔ)器存儲(chǔ)數(shù)據(jù)領(lǐng)域,尤其是涉及降低混合映射算法中映射表內(nèi)存資源占用的方法。本發(fā)明針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,提供了一種降低混合映射算法中映射表內(nèi)存資源占用的方法,可以降低基于頁(yè)映射的日志塊映射表的緩存占用,對(duì)與系統(tǒng)內(nèi)存資源較為寶貴的嵌入式的片上系統(tǒng)具有實(shí)際意義。



背景技術(shù):

半導(dǎo)體行業(yè)的蓬勃發(fā)展,出現(xiàn)了高性能的存儲(chǔ)器NAND Flash,NAND Flash存儲(chǔ)器使用半導(dǎo)體作為存儲(chǔ)介質(zhì),具有高速,低能耗和防震等優(yōu)點(diǎn),但NAND Flash存儲(chǔ)器本身也存在一些不足。首先,它的存儲(chǔ)塊的擦除次數(shù)是有限的;其次,NAND Flash必須要擦除之后才能重新寫入,導(dǎo)致寫入性能較低。因此,磨損均衡顯得尤為重要,好的磨損均衡管理方法不但能夠提高NAND Flash性能和效率,還能夠大大的延長(zhǎng)NAND Flash的使用壽命。基于此,出現(xiàn)了專門為NAND Flash存儲(chǔ)器所使用的文件系統(tǒng),如JFFS、JFFS2、YAFFS、TrueFFS等,這些NAND Flash專用的文件系統(tǒng)進(jìn)行存儲(chǔ)管理為NAND Flash設(shè)備提供專門的驅(qū)動(dòng)和更好的數(shù)據(jù)管理。但是對(duì)于一個(gè)小型的SoC,由于資源的限制,想采用以上的文件系統(tǒng)對(duì)NAND Flash進(jìn)行管理不太現(xiàn)實(shí),所以亟需一個(gè)輕量級(jí)的管理方法,能夠在有限資源的條件下,滿足對(duì)NAND Flash的磨損均衡控制。目前對(duì)于小型的系統(tǒng),常采用的管理方法為FTL(Flash Translation Layer)。

典型的FTL管理機(jī)制采用以頁(yè)為單位進(jìn)行存儲(chǔ)管理的方式,如圖1所示,將物理頁(yè)地址與邏輯頁(yè)地址來(lái)進(jìn)行一一對(duì)應(yīng),讀、寫操作都是按頁(yè)進(jìn)行,數(shù)據(jù)存儲(chǔ)時(shí)存儲(chǔ)在空白的頁(yè)面存儲(chǔ)區(qū)中,數(shù)據(jù)寫入完成后需更新地址映射表中的轉(zhuǎn)換信息。這種管理算法比較直接,但是由于采用的頁(yè)映射機(jī)制,對(duì)于容量小、頁(yè)數(shù)少的存儲(chǔ)器,是極為方便的一種方法。但是,對(duì)于大容量NAND Flash來(lái)說(shuō),就顯得比較吃力,例如,對(duì)于美光公司的MT29F32G08CBACA這個(gè)型號(hào)的NAND Flash來(lái)說(shuō),共有4096個(gè)物理塊,每塊有256頁(yè),基于頁(yè)映射共需要4096*256*4 = 4MB的內(nèi)存空間來(lái)保存當(dāng)前的映射表,對(duì)于片上系統(tǒng)來(lái)說(shuō)內(nèi)存消耗過(guò)大。

為了解決這個(gè)問(wèn)題,提出了混合映射(Hybrid mapping)算法,它是基于塊和頁(yè)的混合映射的機(jī)制,如圖2所示,在該算法中,將NAND Flash在邏輯上分為數(shù)據(jù)塊和日志塊兩個(gè)部分,日志塊是有多個(gè)空閑塊組成。同時(shí),在內(nèi)存中存儲(chǔ)著兩個(gè)表:基于塊映射的數(shù)據(jù)塊地址映射表DBMT和基于頁(yè)映射的日志塊頁(yè)映射表LPMT。根據(jù)混合映射算法,以MT29F32G08CBACA型號(hào)的NAND Flash為例,物理結(jié)構(gòu)如圖3,DBMT塊映射表映射粒度為塊,MT29F32G08CBACA共有4096個(gè)塊,則DBMT存儲(chǔ)的數(shù)值范圍為0~0x1000,用2個(gè)字節(jié)就可以表示出完整的信息,LPMT頁(yè)映射表映射粒度為頁(yè),MT29F32G08CBACA共有4096*256個(gè)塊,數(shù)值范圍為0~0x100000,需要4個(gè)字節(jié)才可以表示出完整的信息,需要消耗的內(nèi)存如下:4096*2+ (TBN-X)*256*4,其中(TBN-X)為分配的日志塊個(gè)數(shù),可以看出,該算法所消耗的內(nèi)存與日志塊個(gè)數(shù)(TBN-X)有關(guān),若(TBN-X)為128,則需要消耗內(nèi)存為:4096*2+ 128*256*4 = 136KB。相對(duì)于基于頁(yè)映射的算法,該算法內(nèi)存消耗已經(jīng)大大降低,但是經(jīng)過(guò)分析發(fā)現(xiàn),內(nèi)存消耗主要部分為日志映射表LPMT,并且內(nèi)存消耗與(TBN-X)相關(guān),成倍數(shù)增長(zhǎng)。



技術(shù)實(shí)現(xiàn)要素:

為解決上述問(wèn)題,本發(fā)明提供了一種降低內(nèi)存資源占用的方法,包括如下步驟:

步驟一:預(yù)先定義對(duì)應(yīng)于NAND Flash的數(shù)據(jù)結(jié)構(gòu)CPMT[N]及數(shù)據(jù)結(jié)構(gòu)LatestW[M],存儲(chǔ)項(xiàng)字節(jié)數(shù)分別為X、Y, 上述兩個(gè)數(shù)據(jù)結(jié)構(gòu)均存儲(chǔ)在內(nèi)存中;N、M、X、Y為預(yù)先定義好的整數(shù);所述CPMT[N]用于記錄物理塊內(nèi)物理頁(yè)邏輯地址到物理地址的映射信息。LatestW[M]用于記錄NAND Flash所有物理塊最后一次被寫的物理頁(yè)頁(yè)號(hào)信息。

步驟二:將NAND Flash每個(gè)物理頁(yè)的存儲(chǔ)空間分成兩個(gè)部分,一部分用于存儲(chǔ)用戶數(shù)據(jù),一部分用于存儲(chǔ)CPMT[N],每個(gè)物理塊最后一次寫入的物理頁(yè)上的CPMT[N]保存該物理塊最新的物理頁(yè)映射信息。

步驟三:對(duì)NAND Flash進(jìn)行讀,包括如下步驟:

步驟3.1 獲取用戶數(shù)據(jù)。

步驟3.2 根據(jù)主機(jī)下發(fā)的邏輯地址計(jì)算對(duì)應(yīng)物理塊的塊號(hào)Block_Num。

步驟3.3 根據(jù)該Block_Num查詢LatestW[M]數(shù)據(jù)結(jié)構(gòu),得到該物理塊的最后一次寫入的數(shù)據(jù)頁(yè)號(hào)LatestW_Page_Num。

步驟3.3 讀取LatestW_Page_Num頁(yè)號(hào)數(shù)據(jù),獲得CPMT[N] ,分配新的物理頁(yè),頁(yè)號(hào)為L(zhǎng)atestW_Page_Num+1。

步驟3.5 更新LatestW[M]數(shù)據(jù)結(jié)構(gòu),記錄最后操作的物理頁(yè)的頁(yè)號(hào),更新CPMT[N]數(shù)據(jù)結(jié)構(gòu),記錄最新的邏輯地址到物理地址映射信息。

步驟3.6 向新的物理頁(yè)寫入用戶數(shù)據(jù),同時(shí)寫入的CPMT[N]數(shù)據(jù)結(jié)構(gòu)到該物理頁(yè)中。

優(yōu)選的,還包括讀操作流程,包括如下步驟:

步驟1:根據(jù)主機(jī)下發(fā)的邏輯地址計(jì)算對(duì)應(yīng)物理塊的塊號(hào)Block_Num。

步驟2:根據(jù)Block_Num查詢LatestW[M]數(shù)據(jù)結(jié)構(gòu),得到該物理塊的最后一次寫入的數(shù)據(jù)頁(yè)號(hào)LatestW_Page_Num。

步驟3:讀取LatestW_Page_Num頁(yè)號(hào)數(shù)據(jù),獲取最新的CPMT[N]。

步驟4:根據(jù)CPMT[N]獲取主機(jī)下發(fā)的邏輯地址對(duì)應(yīng)的實(shí)際物理頁(yè)的物理地址Page_Addr;

步驟5:讀取Page_Addr對(duì)應(yīng)物理頁(yè),得到主機(jī)所需的數(shù)據(jù)。

進(jìn)一步的,N等于物理頁(yè)頁(yè)數(shù)。

進(jìn)一步的,M等于物理塊塊數(shù)。

進(jìn)一步的,CPMT[N] 的存儲(chǔ)項(xiàng)字節(jié)數(shù)為4。

進(jìn)一步的,LatestW[M] 的存儲(chǔ)項(xiàng)字節(jié)數(shù)為4。

進(jìn)一步的,NAND Flash物理頁(yè)內(nèi)用于存儲(chǔ)用戶數(shù)據(jù)的空間大小為該物理頁(yè)的總存儲(chǔ)字節(jié)數(shù)減去N*4的差值。

本發(fā)明的有益效果為:

本發(fā)明提出了一種資源消耗小的算法,可廣泛應(yīng)用于資源有限的片上SoC中,提升系統(tǒng)寫入數(shù)據(jù)的性能。

采用本發(fā)明,成本無(wú)需增加就能取得很好的技術(shù)效果,具有廣泛的應(yīng)用前景。

附圖說(shuō)明

圖1 基于頁(yè)映射的映射表示意圖;

圖2 基于混合映射的映射表示意圖;

圖3 NAND Flash結(jié)構(gòu)示意圖;

圖4 用戶數(shù)據(jù)與CMPT數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)示意圖;

圖5 數(shù)據(jù)寫入流程圖;

圖6 數(shù)據(jù)讀取流程圖。

具體實(shí)施方式

在執(zhí)行本方法前,需要預(yù)先確定NAND Flash,用B代表NAND Flash具有的物理塊數(shù)量,用P代表每個(gè)物理塊中有具有的物理頁(yè)數(shù)量,B、P均為整數(shù)。

下面對(duì)本發(fā)明進(jìn)行步驟性說(shuō)明。

步驟一:預(yù)先定義對(duì)應(yīng)于NAND Flash的數(shù)據(jù)結(jié)構(gòu)CPMT[N]及數(shù)據(jù)結(jié)構(gòu)LatestW[M],存儲(chǔ)項(xiàng)字節(jié)數(shù)分別為X、Y,上述兩個(gè)數(shù)據(jù)結(jié)構(gòu)均存儲(chǔ)在內(nèi)存中。N、M、X、Y為預(yù)先定義好的整數(shù)。所述CPMT[N]用于記錄物理塊內(nèi)物理頁(yè)邏輯地址到物理地址的映射信息,LatestW[M]用于記錄NAND Flash所有物理塊最后一次被寫的物理頁(yè)頁(yè)號(hào)信息。

X、Y為預(yù)先定義好的整數(shù)。其中N大小與NAND Flash介質(zhì)相關(guān),若一片NAND Flash有B個(gè)物理塊,每個(gè)物理塊中有P個(gè)物理頁(yè),則為了保存該物理塊的映射表信息,則需要P個(gè)表項(xiàng),即N為P, M為B。應(yīng)該理解,N為P,M為B的設(shè)計(jì)不會(huì)浪費(fèi)存儲(chǔ)空間,并使得各個(gè)物理塊及物理頁(yè)信息都得到存儲(chǔ)。

在本發(fā)明中采用將用戶數(shù)據(jù)與CPMT[N]同步更新的方式保證每個(gè)NAND Flash物理塊中最后一次被寫的物理頁(yè)中保存著該物理塊的最新CPMT[N]信息。

步驟二:將NAND Flash每個(gè)物理頁(yè)的存儲(chǔ)空間分成兩個(gè)部分,一部分用于存儲(chǔ)用戶數(shù)據(jù),一部分用于存儲(chǔ)CPMT[N]。(如圖4所示)。

設(shè)NAND Flash一個(gè)物理頁(yè)大小為Dpage字節(jié), 則用于存儲(chǔ)用戶數(shù)據(jù)的空間大小為Duser=Dpage– N*X字節(jié)。

步驟三:對(duì)NAND Flash進(jìn)行寫操作,如圖5所示,包括如下步驟:

步驟3.1 獲取用戶數(shù)據(jù)。

步驟3.2 根據(jù)主機(jī)下發(fā)的邏輯地址計(jì)算對(duì)應(yīng)物理塊的塊號(hào)Block_Num。

步驟3.3 根據(jù)該Block_Num查詢LatestW[M]數(shù)據(jù)結(jié)構(gòu),得到該物理塊的最后一次寫入的數(shù)據(jù)頁(yè)號(hào)LatestW_Page_Num。

步驟3.4 讀取LatestW_Page_Num頁(yè)號(hào)數(shù)據(jù),獲得CPMT[N] ,分配新的物理頁(yè),頁(yè)號(hào)為L(zhǎng)atestW_Page_Num+1。

步驟3.5 更新LatestW[M]數(shù)據(jù)結(jié)構(gòu),記錄最后操作的頁(yè)號(hào),更新CPMT[N]數(shù)據(jù)結(jié)構(gòu),記錄最新的邏輯頁(yè)到物理頁(yè)映射信息。

步驟3.6 向新的物理頁(yè)寫入用戶數(shù)據(jù),同時(shí)寫入的CPMT[N]數(shù)據(jù)結(jié)構(gòu)到該物理頁(yè)中。

當(dāng)然,還可以對(duì)NAND Flash進(jìn)行讀操作時(shí),如圖6所示,包括如下步驟:

步驟1:根據(jù)主機(jī)下發(fā)的邏輯地址計(jì)算對(duì)應(yīng)物理塊的塊號(hào)Block_Num。

步驟2:根據(jù)Block_Num查詢LatestW[M]數(shù)據(jù)結(jié)構(gòu),得到該物理塊的最后一次寫入的數(shù)據(jù)頁(yè)號(hào)LatestW_Page_Num。

步驟3:讀取LatestW_Page_Num頁(yè)號(hào)數(shù)據(jù),獲取最新的CPMT[N]。

步驟4:根據(jù)CPMT[N]獲取主機(jī)下發(fā)的邏輯地址對(duì)應(yīng)的實(shí)際物理地址Page_Addr。

步驟5:讀取Page_Addr數(shù)據(jù),得到主機(jī)所需的數(shù)據(jù)。

下面舉例說(shuō)明利用本發(fā)明所述方法后資源情況:

選用美光公司MT29F32G08CBACA型NAND Flash作為試驗(yàn)對(duì)象,物理結(jié)構(gòu)如圖3所示。該NAND Flash有4096個(gè)物理塊,每個(gè)塊有256個(gè)物理頁(yè),每個(gè)物理頁(yè)大小有4096字節(jié)存儲(chǔ)空間,則用于記錄頁(yè)映射表的數(shù)據(jù)結(jié)構(gòu)為CPMT[256],存儲(chǔ)字節(jié)數(shù)為4字節(jié),共占用空間為1K字節(jié);用于記錄每個(gè)物理塊最后一次編程的頁(yè)頁(yè)號(hào)信息的數(shù)據(jù)結(jié)構(gòu)為L(zhǎng)atestW[4096],存儲(chǔ)字節(jié)數(shù)為4字節(jié),共占用空間為16K字節(jié);所以該算法一共占用16+1 = 17K字節(jié),遠(yuǎn)遠(yuǎn)小于采用頁(yè)映射算法所需的4M字節(jié)以及采用通用混合映射算法所需的136K字節(jié),并且該算法占用空間恒定,與其他參數(shù)無(wú)關(guān),對(duì)小型的SoC上實(shí)現(xiàn)NAND Flash管理算法具有很重要的實(shí)際意義。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
禹城市| 武穴市| 夏津县| 黑山县| 长丰县| 岱山县| 项城市| 富蕴县| 奉节县| 松江区| 平顶山市| 峨眉山市| 都匀市| 涟水县| 永康市| 仙游县| 承德县| 江孜县| 朔州市| 麻栗坡县| 米泉市| 济源市| 井研县| 陵川县| 尚志市| 色达县| 兴安县| 石台县| 垫江县| 华容县| 屯昌县| 安平县| 吴旗县| 自治县| 马公市| 罗山县| 金乡县| 靖江市| 宁南县| 开江县| 海口市|