《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Yaffs2文件系統(tǒng)中對NAND Flash磨損均衡的改進(jìn)
Yaffs2文件系統(tǒng)中對NAND Flash磨損均衡的改進(jìn)
2015年電子技術(shù)應(yīng)用第6期
溫朝建,,嚴(yán) 華
四川大學(xué) 電子信息學(xué)院,,四川 成都610065
摘要: 針對以NAND Flash為存儲介質(zhì)時Yaffs2文件系統(tǒng)存在磨損均衡的缺陷,,通過改進(jìn)回收塊選擇機(jī)制,并在數(shù)據(jù)更新中引入冷熱數(shù)據(jù)分離策略,,從而改善NAND Flash的磨損均衡性能,。實(shí)驗(yàn)借助Qemu軟件建立Linux嵌入式仿真平臺,從總擦除次數(shù),、最大最小擦除次數(shù)差值和塊擦除次數(shù)標(biāo)準(zhǔn)差等方面進(jìn)行對比,。實(shí)驗(yàn)結(jié)果表明,在改進(jìn)后的Yaffs2文件系統(tǒng)下NAND Flash的磨損均衡效果有明顯提升,,這有益于延長NAND Flash的使用壽命,。
中圖分類號: TP316
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)06-0016-04
Improvements on wear leveling of NAND Flash in the Yaffs2 file system
Wen Chaojian,Yan Hua
College of Electronics and Information Engineering, Sichuan University,,Chengdu 610065,,China
Abstract: To solve the problem of Yaffs2 file system in wear leveling when NAND Flash is used as storage device,two key strategies are realized to implement the Yaffs2 file system. One is the use of block age parameter to improve the victim block selection mechanism,and the other is the valid data are divided into “hot” data and “cold” data,which are respectively written back to the block with minimum or maximum erase cycle. The Qemu software and embedded Linux are used as the simulation platform. The degree of wear leveling can be shown by three parameters,which are the total erase cycles of block,the maximum difference and the standard deviation of block erase cycles.The experiment results show that the degree of wear leveling in the new storage system is improved greatly.
Key words : Yaffs2 file system;NAND Flash,;garbage collection,;cold and hot data

     

0 引言

    NAND Flash存儲設(shè)備與傳統(tǒng)機(jī)械磁盤相比,具有體積小,、存儲密度高,、隨機(jī)存儲和讀寫能力強(qiáng)、抗震抗摔,、功耗低等特點(diǎn)[1],。它被廣泛用于智能手機(jī),、車載智能中心,、平板電腦等智能終端中。近年來,,以NAND Flash為存儲介質(zhì)的固態(tài)硬盤也得到越來越多的應(yīng)用,。目前Yaffs2文件系統(tǒng)(Yet Another Flash File System Two,Yaffs2)[1]是使用最多,、可移植性最好的專用文件系統(tǒng),,在安卓、阿里云OS,、Linux等嵌入式系統(tǒng)中都有使用,。在Yaffs2文件系統(tǒng)下以NAND Flash為存儲介質(zhì)時存在磨損均衡的缺陷,,可通過對回收塊選擇機(jī)制作改進(jìn)和引入冷熱數(shù)據(jù)分離策略來提高磨損均衡的效果。

1 Yaffs2和Nand Flash關(guān)系

    這里以使用最多的Linux操作系統(tǒng)為實(shí)踐,,將Yaffs2文件系統(tǒng)移植到Linux操作系統(tǒng)中,。Linux系統(tǒng)通常可以分為3層:應(yīng)用層,、內(nèi)核層和設(shè)備層,,其中支持NAND Flash設(shè)備的Yaffs2文件系統(tǒng)屬于內(nèi)核層,如圖1所示,。

qrs2-t1.gif

    最上層用戶應(yīng)用程序通過VFS(Virtual File System)提供的統(tǒng)一接口,,將數(shù)據(jù)更新等文件操作傳遞給Yaffs2。VFS代表虛擬文件系統(tǒng),,它為上層應(yīng)用提供統(tǒng)一的接口,。有了這些接口,應(yīng)用程序只用遵循抽象后的訪問規(guī)則,,而不必理會底層文件系統(tǒng)和物理構(gòu)成上的差異,。然后Yaffs2通過MTD(Memory Technology Device)提供的統(tǒng)一訪問接口對NAND Flash進(jìn)行讀、寫和擦除操作,,從而完成數(shù)據(jù)的更新或者存儲操作,。MTD代表內(nèi)存技術(shù)設(shè)備,它為存儲設(shè)備提供統(tǒng)一訪問的接口,。最終,,在NAND Flash上以怎樣的格式組織和存儲數(shù)據(jù)由Yaffs2文件系統(tǒng)決定。

    NAND Flash由若干塊(block)組成,,每個塊又是由若干頁(page)組成,,頁中含有數(shù)據(jù)區(qū)和附加區(qū)。NAND Flash的頁根據(jù)狀態(tài)不同,,可以分為有效頁,、臟頁、空閑頁,。有效頁中存放有效數(shù)據(jù),,臟頁中存放無效數(shù)據(jù),空閑頁是經(jīng)過擦除后可以直接用于寫入數(shù)據(jù)的頁,。NAND Flash在寫入數(shù)據(jù)前需要執(zhí)行擦除操作,,因此數(shù)據(jù)不能直接在相同的位置更新。當(dāng)一個頁中數(shù)據(jù)需要更新時,,必須將該頁中有效數(shù)據(jù)拷貝到其他空閑頁上再更新,,并將原來頁上的數(shù)據(jù)置為無效。隨著時間的推移,許多無效頁累積在存儲器中使得空閑頁逐漸減少,。當(dāng)存儲器中的空閑空間不足時,,啟動垃圾回收操作,利用回收塊選擇機(jī)制從待回收塊中選取滿足要求的塊來擦除,,從而得到足夠的空閑空間,。NAND Flash中塊的擦除次數(shù)有限,通常為10 000次~100 000次[2],。當(dāng)某個塊的擦除次數(shù)超過使用壽命時,,該塊將無法正常用于數(shù)據(jù)存儲。因此,,垃圾回收應(yīng)利用合理的回收塊選擇機(jī)制,,從待回收塊中找到回收后能產(chǎn)生良好磨損均衡效果且付出較少額外代價(jià)的塊來回收,從而獲得足夠的空閑空間用于數(shù)據(jù)更新操作,。

2 Yaffs2在磨損均衡方面的缺陷

    Yaffs2中回收塊的選擇機(jī)制[3]是從待回收塊中找到有效數(shù)據(jù)最少的塊來回收,。回收過程中,,Yaffs2能夠減少有效數(shù)據(jù)的額外讀和寫操作,。當(dāng)數(shù)據(jù)更新處于均勻分布的情況下,Yaffs2表現(xiàn)出較好的磨損均衡效果,。

    但是,,通常情況下數(shù)據(jù)的更新頻率不同,有些數(shù)據(jù)經(jīng)常更新,,而有些數(shù)據(jù)很少更新,。經(jīng)常更新的數(shù)據(jù)稱為熱數(shù)據(jù),很少更新的數(shù)據(jù)稱為冷數(shù)據(jù)[1],。如果某個塊上總有熱數(shù)據(jù)不斷更新,,那么該塊上有效數(shù)據(jù)會變少,Yaffs2容易選中這樣的塊來更新,。而當(dāng)某個塊中含大量有效冷數(shù)據(jù)時,,冷數(shù)據(jù)少更新的特點(diǎn)使得Yaffs2難以選中這類塊來更新。更新后的塊會用于存放新寫入的數(shù)據(jù),,而新寫入的數(shù)據(jù)通常是熱數(shù)據(jù),,由此可知熱數(shù)所在塊會經(jīng)常被更新。最終熱數(shù)據(jù)所在的塊成為擦除次數(shù)多的塊,,冷數(shù)據(jù)所在的塊成為擦除次數(shù)少的塊,。因此Yaffs2的回收塊選擇機(jī)制會造成NAND Flash設(shè)備中塊的擦除次數(shù)呈兩級分化,,即塊的最大,、最小擦除次數(shù)差值不斷變大。所以Yaffs2中不應(yīng)只考慮數(shù)據(jù)更新所產(chǎn)生的額外讀寫代價(jià),,還應(yīng)考慮塊的存在年齡對磨損均衡效果的影響,,這才能解決磨損均衡中兩級分化的問題,。

    Yaffs2文件系統(tǒng)中更新某個塊時,需將該塊上的剩余有效數(shù)據(jù)拷貝到其他空閑塊上,。而剩余有效數(shù)據(jù)不能占滿整個塊,,系統(tǒng)會將新寫入的數(shù)據(jù)繼續(xù)存放到該塊上,直到它的存儲空間用完為止,。更新過程中保留下來的數(shù)據(jù)通常是冷數(shù)據(jù),,而新寫入的數(shù)據(jù)通常是熱數(shù)據(jù),因此Yaffs2的更新策略會造成冷數(shù)據(jù)和熱數(shù)據(jù)同時存儲在一個塊中,。由于熱數(shù)據(jù)的更新速度快,,當(dāng)熱數(shù)據(jù)更新時會導(dǎo)致冷數(shù)據(jù)被迫更新。但更新后剩下的數(shù)據(jù)同樣不能占滿一個整塊,,系統(tǒng)會再次將冷數(shù)據(jù)和熱數(shù)據(jù)存放到同一個塊中,。隨著以上的更新方式不斷進(jìn)行,將導(dǎo)致一系列不必要的數(shù)據(jù)讀,、寫以及塊的擦除操作,。因此Yaffs2的更新策略會使冷熱數(shù)據(jù)共存的塊易被多次更新,而冷數(shù)據(jù)占據(jù)的塊很少更新,,最終使得塊擦除次數(shù)標(biāo)準(zhǔn)差過大,,導(dǎo)致磨損不均衡。由于Yaffs2的更新策略中沒有做冷熱數(shù)分離,,這使得磨損不均衡問題難以解決,。

3 Yaffs2的改進(jìn)方法

3.1 回收塊選擇機(jī)制的改進(jìn)

    對于Yaffs2回收塊選擇機(jī)制的缺陷,可以通過加入塊的年齡(age)參數(shù)[4]解決,。增加age參數(shù)后的回收塊選擇機(jī)制遵循式(1),,這可以將一些長期不更新的塊選中更新。

    qrs2-gs1.gif

其中,,age指塊從分配開始到當(dāng)前垃圾回收時刻為止的年齡,,u表示單個塊中有效數(shù)據(jù)的占有比率。新的回收塊選擇機(jī)制選取當(dāng)前時刻年齡最大且有效數(shù)據(jù)占有最少(即benefit/cost比值最大)的塊作為回收對象,。當(dāng)一個塊上存儲的是冷數(shù)據(jù)時,,一定時間后該塊沒有被更新,那么它的age參數(shù)會變得很大,。盡管該塊上有效數(shù)據(jù)很多(即(1-u)/2u的比值較小),,但age參數(shù)很大使得benefit/cost的比值足夠大,最終會選中被冷數(shù)據(jù)占據(jù)的塊來更新,。由此可知引入age參數(shù)后,,能解決Yaffs2文件系統(tǒng)下NAND Flash中最大、最小擦除次數(shù)差值過大的磨損均衡問題。

3.2 增加冷熱數(shù)據(jù)分離策略

    對于Yaffs2中數(shù)據(jù)更新的缺陷,,可以引入冷熱數(shù)據(jù)分離策略[5]來解決,。冷熱數(shù)據(jù)分離策略能夠收集冷數(shù)據(jù),解決同一個塊中存放不同溫度數(shù)據(jù)時,,由于熱數(shù)據(jù)更新而強(qiáng)制更新冷數(shù)據(jù)的問題,。在系統(tǒng)運(yùn)行過程中檢測到塊的最大、最小擦除次數(shù)差值過大時,,將收集到的冷數(shù)據(jù)用數(shù)據(jù)交換操作放置到擦除次數(shù)多的塊上,。當(dāng)冷池中塊被熱數(shù)據(jù)占據(jù)或者熱池中塊被冷數(shù)據(jù)占據(jù)時,冷熱數(shù)據(jù)分離策略也能處理這類塊反轉(zhuǎn)問題,。數(shù)據(jù)的冷熱程度對塊的擦除次數(shù)會產(chǎn)生直接影響,,因此冷熱數(shù)據(jù)分離策略通過塊擦除次數(shù)來判斷數(shù)據(jù)溫度。改進(jìn)步驟如下:

    (1)初始化:將NAND Flash中的所有塊平均分為兩個部分,,一部分塊放到熱池中,,另一部分塊放到冷池中。

    (2)數(shù)據(jù)交換:找出熱池中擦除次數(shù)最多(Hottesthp)的塊,,冷池中擦除次數(shù)最少(Coldestcp)的塊,。當(dāng)Hottesthp減去Coldestcp之差大于一個閾值時(如式(2)),則需要做數(shù)據(jù)交換操作,。數(shù)據(jù)交換操作是將擦除次數(shù)為Coldestcp的塊中收集的冷數(shù)據(jù)拷貝到擦除次數(shù)為Hottesthp的塊中,,將擦除次數(shù)為Hottesthp的塊上原來的熱數(shù)據(jù)存放到任意其他空閑塊上。數(shù)據(jù)交換操作的目的是將冷數(shù)據(jù)放到擦除次數(shù)最多的塊上,,利用冷數(shù)據(jù)不易更新的特點(diǎn)來減少塊的繼續(xù)擦除,;而將新寫入的數(shù)據(jù)存放到擦除次數(shù)少的塊上,最終達(dá)到磨損均衡的目的,。

    qrs2-gs2.gif

    (3)塊反轉(zhuǎn):當(dāng)熱池中某個塊被冷數(shù)據(jù)突然占據(jù)時,,導(dǎo)致該塊中的冷數(shù)據(jù)無法用于數(shù)據(jù)交換操作。這需要找到熱池中擦除次數(shù)最多(Hottesthp)的塊和熱池中擦除最少(Coldesthp)的塊,,二者擦除次數(shù)之差小于一個閾值時(如式(3))則進(jìn)行熱塊反轉(zhuǎn)操作,。熱塊反轉(zhuǎn)操作,將熱池中擦除次數(shù)最少的塊放到冷池中去,。另外當(dāng)冷池中的某個塊數(shù)據(jù)突然變熱時,,導(dǎo)致該塊不能被數(shù)據(jù)交換操作降溫。這需要用該塊的eec參數(shù)來判別,,eec表示有效擦除周期(塊改變所屬池后的擦除次數(shù)),。因此滿足式(4)時,進(jìn)行冷塊反轉(zhuǎn)操作,。冷塊反轉(zhuǎn)操作是將冷池中擦除次數(shù)為Hottesteec的塊放到熱池中,,并把該塊的eec參數(shù)清零,。

    qrs2-gs3-4.gif

4 仿真實(shí)驗(yàn)

4.1 實(shí)驗(yàn)環(huán)境

    實(shí)驗(yàn)環(huán)境是通過Vmware工具安裝Linux虛擬機(jī),然后在Linux下安裝Qemu工具來搭建仿真實(shí)驗(yàn)開發(fā)板,,并移植Yaffs2文件系統(tǒng)。為了公平測試,,關(guān)閉Yaffs2自帶的緩存功能,。用于測試的文件大小是從16 KB~1 024 KB隨機(jī)生成,測試數(shù)據(jù)占據(jù)整個Flash設(shè)備容量的90%,,其中僅有15%的數(shù)據(jù)更新,,這樣的更新操作滿足齊夫分布(Zif)[6]

    實(shí)驗(yàn)中NAND Flash總?cè)萘渴?4 MB,,共有512個塊,,每個塊含64個頁,每個頁大小是2 048 B,。試驗(yàn)中Th閾值選定為8,。

4.2 實(shí)驗(yàn)結(jié)果

    實(shí)驗(yàn)對比數(shù)據(jù)包含:總擦除次數(shù)、最大與最小擦除次數(shù)差值和塊擦除次數(shù)標(biāo)準(zhǔn)差,??偛脸螖?shù)的差異表示額外付出的擦除代價(jià),最大與最小擦除次數(shù)差值的差異表示磨損均衡中兩級分化情況,。塊擦除次數(shù)標(biāo)準(zhǔn)差隨擦除次數(shù)增長越快,,則表示閃存設(shè)備中的數(shù)據(jù)更新是在少部分塊中完成(表示磨損均衡效果差);塊擦除次數(shù)標(biāo)準(zhǔn)差隨擦除次數(shù)增長緩慢,,則表示數(shù)據(jù)更新是在大部分塊間交替完成(表示磨損均衡效果好),。因此,塊擦除次數(shù)標(biāo)準(zhǔn)差隨擦除次數(shù)的變化情況能直接反應(yīng)磨損均衡的效果,。

    改進(jìn)前后總的擦除次數(shù)對比圖如圖2所示,,可以看到改進(jìn)后相較于改進(jìn)前額外付出了4.05%的擦除代價(jià)。額外增加擦除代價(jià)足夠小,,這樣的開銷可以接受,。

qrs2-t2.gif

    改進(jìn)前后最大、最小擦除次數(shù)差值對比圖如圖3所示,,可以看到改進(jìn)后的磨損均衡情況更好,。

qrs2-t3.gif

    改進(jìn)前后塊擦除次數(shù)標(biāo)準(zhǔn)差對比圖如圖4所示,可以看到隨著擦除次數(shù)的增加,,改進(jìn)后塊擦除次數(shù)標(biāo)準(zhǔn)差增長的速度遠(yuǎn)小于改進(jìn)前,。

qrs2-t4.gif

    在改進(jìn)后的Yaffs2文件系統(tǒng)下,塊的最大,、最小擦除次數(shù)差值減少為改進(jìn)前的1/4,,如圖3所示,。這表明在回收塊選擇機(jī)制中加入塊的年齡參數(shù)后,被冷數(shù)據(jù)占據(jù)的塊能夠及時得到更新,,使得NAND Flash設(shè)備中的塊可以更加均勻地參與擦除操作,。另外引入冷熱數(shù)據(jù)分離策略后,隨著擦除次數(shù)增加,,塊擦除次數(shù)標(biāo)準(zhǔn)差增加得更緩慢,,如圖4所示。這說明將冷數(shù)據(jù)拷貝到擦除次數(shù)多的塊上,,這樣的數(shù)據(jù)交換方法能有效阻止塊繼續(xù)擦除,。并且冷熱數(shù)據(jù)分離策略中冷數(shù)據(jù)的收集方式有效解決了冷熱數(shù)據(jù)共存時的更新問題。

    當(dāng)NAND Flash設(shè)備中出現(xiàn)一個壞塊后,,該壞塊不僅不能繼續(xù)用于存儲數(shù)據(jù),,而且會引起別的塊迅速壞掉。為了保障數(shù)據(jù)的穩(wěn)定,,通常情況下NAND Flash設(shè)備中出現(xiàn)一個壞塊后不會繼續(xù)使用[7],。試驗(yàn)中塊的擦除壽命是100 000次,若每天需要做400次擦除操作,,在未做改進(jìn)的Yaffs2文件系統(tǒng)下,,NAND Flash僅有5%的塊輪流更新,那么可以得到閃存設(shè)備的使用壽命:

    qrs2-gs5.gif

    在改進(jìn)后的Yaffs2文件系統(tǒng)下,,NAND Flash有20%的塊輪流更新,,而磨損均衡需要付出額外4.05%的擦除代價(jià),那么可以得到閃存設(shè)備的使用壽命:

    qrs2-gs6.gif

    由式(5)和式(6)可知,,改進(jìn)后的Yaffs2文件系統(tǒng)可以延長NAND Flash設(shè)備的使用壽命,。

5 結(jié)論

    本文從兩方面對Yaffs2文件系統(tǒng)作改進(jìn):一方面對回收塊選擇機(jī)制作改進(jìn),另一方面引入冷熱數(shù)據(jù)分離策略,。NAND Flash設(shè)備在改進(jìn)后的文件系統(tǒng)中,,磨損均衡效果得到明顯提升。良好的磨損均衡表現(xiàn)可以增加NAND Flash的使用壽命,,仿真實(shí)驗(yàn)?zāi)M了真實(shí)的設(shè)備運(yùn)行情況,,實(shí)驗(yàn)成果適用于以NAND Flash為存儲介質(zhì)的智能消費(fèi)電子產(chǎn)品或者計(jì)算機(jī)領(lǐng)域中。

參考文獻(xiàn)

[1] Yan Hua,,Yao Qian.An efficient file-aware garbage collection algorithm for NAND Flash-based consumer[J].IEEE Transactions on Consumer Electronics,,November 2014,60(4):623-627.

[2] 姚乾,,嚴(yán)華.基于冷熱數(shù)據(jù)識別的NAND Flash數(shù)據(jù)存儲管理研究[D].成都:四川大學(xué),,2013.

[3] WU M,ZWAENEPOE W.eNvy:A non-volatile main memory storage system[C].CA,,USA:AMC,,In Proceedings of 6th International Conference on Architecture Support for Programming Language and Operating Systems,,1994:86-97.

[4] KAWAGUCHI A,NISHIOKA S,,MOTODA H.A flash memory based file system[C].LA,,USA:In Proceedings of 1995 USENIX Technical Conference,1995:155-164.

[5] Chang Lipin.On efficient wear leveling for large-scale flash memory storage systems[C].Proceedings of the 2007 ACM Symposium on Applied Computing,,SAC′07,,2007:1126-1130.

[6] Lin Mingwei,Chen Shuyu.Efficient and intelligent garbage collection policy for NAND Flash-based consumer electronics[J].IEEE Transactions on Consumer Electronics,,2013,,59(3):538-543.

[7] 楊習(xí)偉,,賀云健.車載娛樂系統(tǒng)的Nand Flash管理模式研究[J].Microcontrollers & Embedded Systems,,2008(3):19-22.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。