NAND閃存的自適應閃存映射層設計
順序鏈表的項數設有上限值,該值為系統中分配的順序日記塊數目。當表項超過(guò)上限值時(shí),將從順序鏈表的最近最少訪(fǎng)問(wèn)端刪除數據塊,合并日記塊和數據塊中的有效數據。當順序日記塊完全更新時(shí),即數據塊內的數據完全無(wú)效,采用切換操作,用順序日記塊替換數據塊,并將該塊從順序鏈表中刪除。在本文中始終保留了一定數據的順序日記塊,以?xún)?yōu)化系統的順序寫(xiě)。
位于隨機鏈表中的數據組,當需要新的存儲空間時(shí),將為其分配新的隨機日記塊。隨機鏈表的項數也設有上限值,當超過(guò)上限值時(shí),將從最近最少訪(fǎng)問(wèn)端刪除數據組,將隨機日記塊和數據塊中的數據合并,生成新的數據塊,同時(shí)重設數據塊的狀態(tài)位,當再一次進(jìn)行數據更新時(shí),將重新進(jìn)行訪(fǎng)問(wèn)模式判斷。采用該方法能夠將冷數據及時(shí)從鏈表刪除,回收日記塊占用的存儲空間和頁(yè)映射表占用的內存空間。
1.3垃圾回收機制
由于采用日記結構進(jìn)行存儲管理,在長(cháng)時(shí)間運行時(shí)需要進(jìn)行垃圾回收。進(jìn)行垃圾回收時(shí)需要考慮的問(wèn)題是回收時(shí)機和回收對象選擇,以及回收方法。垃圾回收機制是建立在地址映射方法基礎上,主要由兩部分構成:擦寫(xiě)進(jìn)程和回收進(jìn)程。擦寫(xiě)進(jìn)程是專(zhuān)門(mén)負責擦寫(xiě)操作,它的優(yōu)先級比較低。在系統空閑的時(shí)候,擦寫(xiě)進(jìn)程才會(huì )輪到執行,每次該進(jìn)程啟動(dòng),只負責擦寫(xiě)一個(gè)塊,以免影響到正常的I/O性能?;厥者M(jìn)程是當系統中的日記塊消耗完或閃存中的空閑塊低于某閾值,將從日記塊和數據塊中選擇回收對象,將有效數據復制到其他空閑區域中,將其交給擦寫(xiě)進(jìn)程處理,回收存儲空間。
本文回收進(jìn)程主要包括兩部分,對順序日記塊的回收和對隨機日記塊的回收。當系統中的順序日記塊消耗完全時(shí),將從順序鏈表的最近最少訪(fǎng)問(wèn)端選擇日記塊,利用數據塊和順序日記塊內數據組織有序的特點(diǎn),采用如圖4所示的方法,將數據塊中的有效數據復制到日記塊中,用日記塊來(lái)替換數據塊,擦除數據塊,回收數據塊占用的空間。對于隨機日記塊,將從隨機鏈表中選擇具有最多無(wú)效數據的數據組,回收方法是從數據組中選擇兩個(gè)或多個(gè)具有較多無(wú)效數據的日記塊,將日記塊中的有效數據復制到數據組的其他隨機日記塊中,如圖5所示,擦除選中日記塊,回收日記塊空間。

通過(guò)根據順序日記塊和隨機日記塊數據組織特點(diǎn)分別采用不同的回收方法,從而優(yōu)化了垃圾回收的性能。對于順序日記塊,將數據塊與日記塊內有效數據合并,用日記塊替換數據塊,從而減少回收過(guò)程中的有效數據復制。而對于隨機日記通過(guò)選擇無(wú)效數據最多的塊進(jìn)行回收,同時(shí)利用本文的多日記塊機制,將有效數據存儲到其他日記塊。從而不需要合并數據塊和日記塊的數據,減少了小數據更新情況下的有效數據的復制和塊擦寫(xiě)次數,優(yōu)化了垃圾回收的性能。
2 試驗結果與分析
在Linux系統中實(shí)現了本文的存儲管理方法,同時(shí)利用Linux自帶的閃存模擬器,模擬閃存存儲器的功能,在該模擬器上對本文的閃存映射方法展開(kāi)研究,并與NFTL和混合映射方法進(jìn)行比較,NFTL是Linux系統實(shí)現的塊映射方法。在實(shí)驗中采用額外寫(xiě)操作次數和擦除操作次數來(lái)衡量閃存系統性能的標準,其中額外寫(xiě)操作次數由實(shí)驗中閃存的實(shí)際寫(xiě)次數減去用戶(hù)請求的寫(xiě)次數來(lái)獲取,主要是由垃圾回收時(shí)有效數據的復制產(chǎn)生的。額外擦寫(xiě)操作次數是指閃存系統的塊擦寫(xiě)次數,是由于日記塊的消耗引起的。采用這兩個(gè)指標能夠直接反應垃圾回收的性能。首先研究了在進(jìn)行文件和圖像等存取操作下系統的性能。由于僅進(jìn)行圖像存取操作時(shí),系統的大部分操作是順序寫(xiě)。圖6所示是三種方法的額外寫(xiě)操作次數和擦寫(xiě)操作次數對比情況。從圖6中可以看出本文方法與NFTL方法接近,需要較少的有效數據復制和塊擦寫(xiě),而混合映射方法表現較差,尤其是有效數據的復制次數,明顯多于其他兩種方法。主要是由于本文方法與NFTL能夠利用塊映射方法來(lái)處理順序寫(xiě)模式,在進(jìn)行垃圾回收時(shí),能夠通過(guò)將數據塊的有效數據復制到日記塊中,用日記塊替換數據塊,而不需要分配新的數據塊,減少有效數據復制和塊擦寫(xiě)。而混合映射方法在進(jìn)行垃圾回收時(shí),需要分配新的數據塊來(lái)合并舊數據塊和日記塊中的數據,導致系統進(jìn)行大量的復制操作和擦寫(xiě)操作,降低垃圾回收的性能。

圖7的實(shí)驗結果是在進(jìn)行圖像存取操作的同時(shí)加入對局部數據進(jìn)行隨機訪(fǎng)問(wèn)來(lái)獲取的。從結果可以看出,NFTL方法與混合映射方法的性能接近,都需要較多的額外寫(xiě)次數和塊擦寫(xiě)次數。本文的方法由于采用寫(xiě)模式判別機制,能夠將隨機寫(xiě)從順序寫(xiě)中分離出來(lái),對順序寫(xiě)采用塊映射方法,對隨機寫(xiě)采用混合映射方法進(jìn)行存儲管理,從而垃圾回收次數較少,優(yōu)化系統性能。

3 結 語(yǔ)
在本文中給出一種閃存映射方法,通過(guò)對數據寫(xiě)模式進(jìn)行區分,為不同的寫(xiě)模式提供不同粒度的地址映射方法進(jìn)行存儲管理,從而減少了垃圾回收過(guò)程有效數據復制和塊擦寫(xiě),提高了閃存存儲系統的性能。在將來(lái),還需要進(jìn)一步研究訪(fǎng)問(wèn)屬性的判別方法,減少判斷錯誤的情況,進(jìn)一步提升垃圾回收的性能。本文引用地址:http://dyxdggzs.com/article/151826.htm
評論