當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]NAND閃存的自適應(yīng)閃存映射層設(shè)計

閃存存儲器主要分為NAND和XOR兩種類型,其中NAND型是專為數(shù)據(jù)存儲設(shè)計。本文的閃存映射方法主要是針對NAND類型的閃存芯片。一個NAND類型的閃存芯片的存儲空間是由塊(Block)構(gòu)成,每個塊又劃分為固定大小的頁,塊是擦寫操作的最小單元,頁是讀寫操作的最小單元。由于閃存存儲器的硬件特性,閃存的更新操作有自己的特點,在對數(shù)據(jù)進(jìn)行更新前需要先進(jìn)行擦寫操作,然后才能將新數(shù)據(jù)寫入,并且擦寫操作是以塊為單位,讀寫操作是以頁為單位。由于擦寫操作涉及的最小單元遠(yuǎn)大于讀寫操作的最小單元,需要對一個擦寫塊內(nèi)不需要更新的數(shù)據(jù)提供有效的保護(hù)。在閃存存儲管理中普遍采用的數(shù)據(jù)更新方法是非本地更新的方法(Out-place Update),通過構(gòu)建閃存映射層,在進(jìn)行更新操作時,將更新的數(shù)據(jù)寫到其他空閑的存儲位置,利用內(nèi)存中的地址映射表記錄數(shù)據(jù)存儲位置的變化。非本地更新的方法避免了更新時整塊數(shù)據(jù)的讀出寫入,從而減少數(shù)據(jù)復(fù)制次數(shù)和塊擦寫次數(shù),提高系統(tǒng)的整體性能。閃存映射層是閃存進(jìn)行非本地更新存儲管理的關(guān)鍵,主要由地址映射和垃圾回收機(jī)制兩部分構(gòu)成。

根據(jù)地址映射粒度的不同,可以將地址映射方法分為三種:頁映射(Page Mapping)、塊映射(BlockingMapping)和混合映射(Hybrid Mapping)。頁映射是以頁為單位進(jìn)行地址映射,在內(nèi)存中保存基手頁的映射表,每一邏輯頁都有一項與之對應(yīng)的物理頁,頁映射方法具有靈活性高的優(yōu)點,但由于需要為每個邏輯頁面建立地址映射表項,需要占用大量內(nèi)存空間。塊映射算法是以塊為單位進(jìn)行地址映射,邏輯塊內(nèi)地址偏移與物理塊內(nèi)偏移保持一致。該方法僅需要在內(nèi)存中保留塊映射表,建立從邏輯塊到物理塊的映射關(guān)系,塊映射算法優(yōu)點是內(nèi)存占用量少,不受閃存容量增大的影響,缺點是在處理小數(shù)據(jù)更新上性能較差,一小塊數(shù)據(jù)的更新會引起對整個塊內(nèi)容的復(fù)制。混合映射方法結(jié)合了塊映射和頁映射的優(yōu)點,首先以塊映射方法建立邏輯塊和物理塊的映射關(guān)系,同時對塊內(nèi)數(shù)據(jù)采用頁映射方法組織?;旌嫌成渌惴▋?nèi)存空間占用量少,同時對小數(shù)據(jù)更新比塊映射算法更加靈活、代價少。

垃圾回收是閃存存儲系統(tǒng)特有的空間管理機(jī)制。在閃存存儲管理中,由于采用非本地更新的方法,當(dāng)閃存的存儲空間消耗完時,就需要回收無效數(shù)據(jù)占用的空間。為了回收無效數(shù)據(jù)占用的空間,必須先將擦寫單位內(nèi)的有效數(shù)據(jù)轉(zhuǎn)移到其他空閑區(qū)域,然后擦寫整個單元,回收過程主要涉及有效數(shù)據(jù)復(fù)制和塊擦寫兩個耗時耗能的操作。垃圾回收工作需要從閃存中選擇回收對象,轉(zhuǎn)移有效數(shù)據(jù),最后完成對象擦除。進(jìn)行垃圾回收時選擇不同的區(qū)域進(jìn)行擦除,代價是不同的,垃圾回收器設(shè)計的目就是要減少有效數(shù)據(jù)復(fù)制和塊擦寫次數(shù),以提高系統(tǒng)性能。不同粒度的地址映射方法在不同寫模式下,垃圾回收的性能有較大差異。在此給出了一種能夠根據(jù)寫模式進(jìn)行自適應(yīng)判斷的閃存映射方法。通過對順序?qū)懞碗S機(jī)寫進(jìn)行判斷,將順序?qū)憦碾S機(jī)寫中分離,對順序?qū)懖捎脡K映射組織日記塊數(shù)據(jù),對隨機(jī)寫采用混合映射方法,并為熱數(shù)據(jù)分配多個日記塊,延遲對熱數(shù)據(jù)的垃圾回收,以提高垃圾回收的性能。通過實驗表明這里構(gòu)建的閃存映射方法能夠在不需要占用大量的內(nèi)存空間前提下,減少垃圾回收過程的有效數(shù)據(jù)復(fù)制和塊擦寫,從而優(yōu)化閃存系統(tǒng)的性能。

1 閃存存儲系統(tǒng)的體系結(jié)構(gòu)

本文構(gòu)建的閃存存儲管理的體系結(jié)構(gòu)見圖1,將系統(tǒng)分為文件系統(tǒng)層、閃存管理層和閃存驅(qū)動層。閃存映射層負(fù)責(zé)對閃存設(shè)備進(jìn)行存儲管理,通過地址映射和垃圾回收技術(shù)將閃存轉(zhuǎn)換為塊設(shè)備。地址映射主要完成閃存塊的分配和地址映射信息管理,負(fù)責(zé)處理文件系統(tǒng)層的讀寫請求,將文件系統(tǒng)提供的邏輯地址轉(zhuǎn)換為閃存的物理地址;垃圾回收則負(fù)責(zé)回收無效數(shù)據(jù)占用的空間,主要涉及有效數(shù)據(jù)復(fù)制和塊擦寫兩個耗時耗能的過程。



1.1 地址映射結(jié)構(gòu)

閃存映射層的作用是將文件系統(tǒng)的邏輯地址轉(zhuǎn)換為閃存的物理地址,因此需要在內(nèi)存建立邏輯地址和物理地址的映射關(guān)系,同時管理物理地址的狀態(tài)變換。本文通過圖2所示的地址映射結(jié)構(gòu)進(jìn)行地址映射管理,將文件系統(tǒng)提供的邏輯地址分為四部分:邏輯組號、組內(nèi)塊號、塊內(nèi)頁號和頁內(nèi)偏移地址。其中邏輯頁和邏輯塊大小分別與閃存存儲器的讀寫頁和擦寫塊大小相同。每個邏輯組是由N個連續(xù)的邏輯塊構(gòu)成,N可以根據(jù)應(yīng)用類型進(jìn)行設(shè)置,在圖2中N的數(shù)目為2。將閃存存儲器中的物理塊分為數(shù)據(jù)塊和日記塊,數(shù)據(jù)塊用于存放原數(shù)據(jù),日記塊用于存放更新數(shù)據(jù),同時又將日記塊劃分為順序日記塊和隨機(jī)日記塊。數(shù)據(jù)塊和順序日記塊內(nèi)的內(nèi)容是以塊映射方法組織,而隨機(jī)日記塊采用混合映射粒度組織數(shù)據(jù)。邏輯塊和數(shù)據(jù)塊通過內(nèi)存中的塊映射表建立對應(yīng)關(guān)系,每一個邏輯塊都有惟一的數(shù)據(jù)塊與之對應(yīng)。與邏輯組對應(yīng)的N個數(shù)據(jù)塊構(gòu)成一個數(shù)據(jù)組。每個順序日記塊對應(yīng)惟一的數(shù)據(jù)塊,在對數(shù)據(jù)塊進(jìn)行順序更新操作時,為其分配順序日記塊存儲更新數(shù)據(jù)。每個數(shù)據(jù)組可以根據(jù)需求動態(tài)分配多個隨機(jī)日記塊,日記塊的數(shù)目是由該組數(shù)據(jù)訪問的冷熱屬性來決定的,對于有頻繁更新數(shù)據(jù)的組會動態(tài)分配較多的日記塊。隨機(jī)日記塊是組內(nèi)共享的,對組內(nèi)任一數(shù)據(jù)塊的隨機(jī)更新數(shù)據(jù)都可以存儲到隨機(jī)日記塊中,從而提高空間利用率。為了提高查找效率,對有隨機(jī)日記塊的數(shù)據(jù)組,在內(nèi)存中構(gòu)建組內(nèi)頁映射表,記錄邏輯地址對應(yīng)的更新數(shù)據(jù)在隨機(jī)日記塊內(nèi)的存儲位置,通過組內(nèi)頁映射表,在進(jìn)行讀取時不需要遍歷日記塊來獲取數(shù)據(jù)的存儲位置,從而提高系統(tǒng)性能。



1.2 寫請求處理過程

地址映射的主要作用是通過在內(nèi)存中構(gòu)建地址映射表,將文件系統(tǒng)的邏輯地址轉(zhuǎn)換為物理地址,在系統(tǒng)進(jìn)行讀請求時,利用地址映射表查找到存儲在閃存設(shè)備中的數(shù)據(jù),在系統(tǒng)進(jìn)行寫請求時在閃存設(shè)備上查找空閑位置存儲數(shù)據(jù),更新地址映射表,記錄數(shù)據(jù)的新存儲位置,同時將舊數(shù)據(jù)標(biāo)記為無效。

在本文中為每個數(shù)據(jù)塊設(shè)定狀態(tài)位來標(biāo)記該塊當(dāng)前的訪問模式,將每個數(shù)據(jù)塊訪問模式分為順序?qū)懞碗S機(jī)寫。在進(jìn)行寫請求時,首先計算出數(shù)據(jù)所屬的邏輯塊和塊內(nèi)偏移地址,判斷數(shù)據(jù)所在塊的訪問模式,如果所在塊是順序?qū)懀脡K映射表,將數(shù)據(jù)寫到順序日記塊中。如果所在塊為隨機(jī)寫,將更新數(shù)據(jù)寫到數(shù)據(jù)組的隨機(jī)日記塊中。訪問模式主要是根據(jù)過去的數(shù)據(jù)存儲訪問行為進(jìn)行判斷的,如果對某一邏輯地址在短時間內(nèi)進(jìn)行了多次更新,認(rèn)為系統(tǒng)對該地址進(jìn)行的是隨機(jī)寫,對其所屬塊將采用混合映射方法進(jìn)行存儲管理,以優(yōu)化小數(shù)據(jù)頻繁更新導(dǎo)致的性能問題。訪問模式的判斷是通過內(nèi)存中的雙鏈表來實現(xiàn)的,如圖3所示。在內(nèi)存中構(gòu)建兩定長的地址鏈表,一個鏈表為順序鏈表,另一個鏈表為隨機(jī)鏈表。順序鏈表中保存最近進(jìn)行順序?qū)懙臄?shù)據(jù)塊,而隨機(jī)鏈表中保留最近進(jìn)行隨機(jī)寫的數(shù)據(jù)組。兩鏈表都根據(jù)最后一次訪問時間進(jìn)行排序,將鏈表分為最近最少訪問端(LRU)和最近最多訪問端(MRU),在每次進(jìn)行更新操作時,將更新數(shù)據(jù)所在的塊或組提升到鏈表的最近最多訪問端。當(dāng)對數(shù)據(jù)塊首次進(jìn)行更新操作時,判斷該數(shù)據(jù)塊進(jìn)行的是順序?qū)?,?biāo)記該塊的訪問狀態(tài)為順序?qū)?,并將該?shù)據(jù)塊添加到順序鏈表中。如果數(shù)據(jù)塊內(nèi)已更新過的數(shù)據(jù)在短時間內(nèi)再一次被更新,即順序日記塊內(nèi)對應(yīng)的存儲空間已填充數(shù)據(jù),判斷該數(shù)據(jù)塊的訪問模式為隨機(jī)寫,將其從順序鏈表中刪除,標(biāo)記該塊的訪問狀態(tài)為隨機(jī)寫,同時添加該塊所在的數(shù)據(jù)組到隨機(jī)鏈表中,以后對該塊的更新數(shù)據(jù)將存儲到隨機(jī)日記塊中,直到該數(shù)據(jù)組從隨機(jī)鏈表中刪除。

[!--empirenews.page--]

順序鏈表的項數(shù)設(shè)有上限值,該值為系統(tǒng)中分配的順序日記塊數(shù)目。當(dāng)表項超過上限值時,將從順序鏈表的最近最少訪問端刪除數(shù)據(jù)塊,合并日記塊和數(shù)據(jù)塊中的有效數(shù)據(jù)。當(dāng)順序日記塊完全更新時,即數(shù)據(jù)塊內(nèi)的數(shù)據(jù)完全無效,采用切換操作,用順序日記塊替換數(shù)據(jù)塊,并將該塊從順序鏈表中刪除。在本文中始終保留了一定數(shù)據(jù)的順序日記塊,以優(yōu)化系統(tǒng)的順序?qū)憽?br />
位于隨機(jī)鏈表中的數(shù)據(jù)組,當(dāng)需要新的存儲空間時,將為其分配新的隨機(jī)日記塊。隨機(jī)鏈表的項數(shù)也設(shè)有上限值,當(dāng)超過上限值時,將從最近最少訪問端刪除數(shù)據(jù)組,將隨機(jī)日記塊和數(shù)據(jù)塊中的數(shù)據(jù)合并,生成新的數(shù)據(jù)塊,同時重設(shè)數(shù)據(jù)塊的狀態(tài)位,當(dāng)再一次進(jìn)行數(shù)據(jù)更新時,將重新進(jìn)行訪問模式判斷。采用該方法能夠?qū)⒗鋽?shù)據(jù)及時從鏈表刪除,回收日記塊占用的存儲空間和頁映射表占用的內(nèi)存空間。

1.3 垃圾回收機(jī)制

由于采用日記結(jié)構(gòu)進(jìn)行存儲管理,在長時間運行時需要進(jìn)行垃圾回收。進(jìn)行垃圾回收時需要考慮的問題是回收時機(jī)和回收對象選擇,以及回收方法。垃圾回收機(jī)制是建立在地址映射方法基礎(chǔ)上,主要由兩部分構(gòu)成:擦寫進(jìn)程和回收進(jìn)程。擦寫進(jìn)程是專門負(fù)責(zé)擦寫操作,它的優(yōu)先級比較低。在系統(tǒng)空閑的時候,擦寫進(jìn)程才會輪到執(zhí)行,每次該進(jìn)程啟動,只負(fù)責(zé)擦寫一個塊,以免影響到正常的I/O性能。回收進(jìn)程是當(dāng)系統(tǒng)中的日記塊消耗完或閃存中的空閑塊低于某閾值,將從日記塊和數(shù)據(jù)塊中選擇回收對象,將有效數(shù)據(jù)復(fù)制到其他空閑區(qū)域中,將其交給擦寫進(jìn)程處理,回收存儲空間。

本文回收進(jìn)程主要包括兩部分,對順序日記塊的回收和對隨機(jī)日記塊的回收。當(dāng)系統(tǒng)中的順序日記塊消耗完全時,將從順序鏈表的最近最少訪問端選擇日記塊,利用數(shù)據(jù)塊和順序日記塊內(nèi)數(shù)據(jù)組織有序的特點,采用如圖4所示的方法,將數(shù)據(jù)塊中的有效數(shù)據(jù)復(fù)制到日記塊中,用日記塊來替換數(shù)據(jù)塊,擦除數(shù)據(jù)塊,回收數(shù)據(jù)塊占用的空間。對于隨機(jī)日記塊,將從隨機(jī)鏈表中選擇具有最多無效數(shù)據(jù)的數(shù)據(jù)組,回收方法是從數(shù)據(jù)組中選擇兩個或多個具有較多無效數(shù)據(jù)的日記塊,將日記塊中的有效數(shù)據(jù)復(fù)制到數(shù)據(jù)組的其他隨機(jī)日記塊中,如圖5所示,擦除選中日記塊,回收日記塊空間。



通過根據(jù)順序日記塊和隨機(jī)日記塊數(shù)據(jù)組織特點分別采用不同的回收方法,從而優(yōu)化了垃圾回收的性能。對于順序日記塊,將數(shù)據(jù)塊與日記塊內(nèi)有效數(shù)據(jù)合并,用日記塊替換數(shù)據(jù)塊,從而減少回收過程中的有效數(shù)據(jù)復(fù)制。而對于隨機(jī)日記通過選擇無效數(shù)據(jù)最多的塊進(jìn)行回收,同時利用本文的多日記塊機(jī)制,將有效數(shù)據(jù)存儲到其他日記塊。從而不需要合并數(shù)據(jù)塊和日記塊的數(shù)據(jù),減少了小數(shù)據(jù)更新情況下的有效數(shù)據(jù)的復(fù)制和塊擦寫次數(shù),優(yōu)化了垃圾回收的性能。

2 試驗結(jié)果與分析

在Linux系統(tǒng)中實現(xiàn)了本文的存儲管理方法,同時利用Linux自帶的閃存模擬器,模擬閃存存儲器的功能,在該模擬器上對本文的閃存映射方法展開研究,并與NFTL和混合映射方法進(jìn)行比較,NFTL是Linux系統(tǒng)實現(xiàn)的塊映射方法。在實驗中采用額外寫操作次數(shù)和擦除操作次數(shù)來衡量閃存系統(tǒng)性能的標(biāo)準(zhǔn),其中額外寫操作次數(shù)由實驗中閃存的實際寫次數(shù)減去用戶請求的寫次數(shù)來獲取,主要是由垃圾回收時有效數(shù)據(jù)的復(fù)制產(chǎn)生的。額外擦寫操作次數(shù)是指閃存系統(tǒng)的塊擦寫次數(shù),是由于日記塊的消耗引起的。采用這兩個指標(biāo)能夠直接反應(yīng)垃圾回收的性能。首先研究了在進(jìn)行文件和圖像等存取操作下系統(tǒng)的性能。由于僅進(jìn)行圖像存取操作時,系統(tǒng)的大部分操作是順序?qū)?。圖6所示是三種方法的額外寫操作次數(shù)和擦寫操作次數(shù)對比情況。從圖6中可以看出本文方法與NFTL方法接近,需要較少的有效數(shù)據(jù)復(fù)制和塊擦寫,而混合映射方法表現(xiàn)較差,尤其是有效數(shù)據(jù)的復(fù)制次數(shù),明顯多于其他兩種方法。主要是由于本文方法與NFTL能夠利用塊映射方法來處理順序?qū)懩J?,在進(jìn)行垃圾回收時,能夠通過將數(shù)據(jù)塊的有效數(shù)據(jù)復(fù)制到日記塊中,用日記塊替換數(shù)據(jù)塊,而不需要分配新的數(shù)據(jù)塊,減少有效數(shù)據(jù)復(fù)制和塊擦寫。而混合映射方法在進(jìn)行垃圾回收時,需要分配新的數(shù)據(jù)塊來合并舊數(shù)據(jù)塊和日記塊中的數(shù)據(jù),導(dǎo)致系統(tǒng)進(jìn)行大量的復(fù)制操作和擦寫操作,降低垃圾回收的性能。



圖7的實驗結(jié)果是在進(jìn)行圖像存取操作的同時加入對局部數(shù)據(jù)進(jìn)行隨機(jī)訪問來獲取的。從結(jié)果可以看出,NFTL方法與混合映射方法的性能接近,都需要較多的額外寫次數(shù)和塊擦寫次數(shù)。本文的方法由于采用寫模式判別機(jī)制,能夠?qū)㈦S機(jī)寫從順序?qū)懼蟹蛛x出來,對順序?qū)懖捎脡K映射方法,對隨機(jī)寫采用混合映射方法進(jìn)行存儲管理,從而垃圾回收次數(shù)較少,優(yōu)化系統(tǒng)性能。


3 結(jié)  語

在本文中給出一種閃存映射方法,通過對數(shù)據(jù)寫模式進(jìn)行區(qū)分,為不同的寫模式提供不同粒度的地址映射方法進(jìn)行存儲管理,從而減少了垃圾回收過程有效數(shù)據(jù)復(fù)制和塊擦寫,提高了閃存存儲系統(tǒng)的性能。在將來,還需要進(jìn)一步研究訪問屬性的判別方法,減少判斷錯誤的情況,進(jìn)一步提升垃圾回收的性能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉