本工作來(lái)自多倫多大學(xué)和谷歌Shehbaz Jaffer,發(fā)表于FAST 2022。為了解決下一代高密度閃存低耐久性帶來(lái)的可靠性挑戰(zhàn),提出新的編碼WOM-v (Voltage-based Write-Once-Memory),來(lái)提高SSD的使用壽命。通過(guò)重編程的方式,增加擦除操作間的編寫(xiě)次數(shù)來(lái)應(yīng)對(duì)高密度閃存有限擦除次數(shù)的瓶頸問(wèn)題。本文基于FEMU+LightNVM平臺(tái),實(shí)現(xiàn)WOM-v碼,并基于FEMU實(shí)現(xiàn)QLC模擬。展示如何通過(guò)以可忽略的性能開(kāi)銷提高QLC閃存的壽命4.4x-11.1x。WOM-v開(kāi)源代碼:
01背景&問(wèn)題
隨著閃存密度的增加,其可承受的擦除次數(shù)逐漸減少。如下圖所示。QLC的擦除次數(shù)不到1000次,而PLC僅為幾十至幾百次。特別是存儲(chǔ)元尺寸小,擦除次數(shù)就更少了。針對(duì)這個(gè)問(wèn)題,本文將從WOM編碼的角度探索如何通過(guò)增加重編程次數(shù)來(lái)降低擦除次數(shù)。下面首先討論傳統(tǒng)binary-WOM碼的原理及缺陷。
Binary-WOM codes
Binary-WOM應(yīng)用于較早的存儲(chǔ)設(shè)備上,例如Punch Card。在這類介質(zhì)上,數(shù)據(jù)以位為粒度寫(xiě)入,并且一旦寫(xiě)入,位只能在一個(gè)方向上更改。例如,只能從比特0變換到比特1。表1和表2給出的是WOM(2,3)和WOM(2,4),對(duì)于WOM(2,3),表示數(shù)據(jù)存儲(chǔ)兩位,但實(shí)際存儲(chǔ)三位。可以看作底層是TLC閃存,抽象出MLC閃存。對(duì)于每個(gè)TLC頁(yè)面,可以編程兩次(兩代)。第一代和第二代中的比特位是TLC三位組成的8種形式。因此,通過(guò)這種方式,兩次編程后,實(shí)際寫(xiě)入的數(shù)據(jù)為2+2=4bits,比TLC的3bits要多。
然而,Binary-WOM不適合新一代的閃存,如QLC。對(duì)于閃存存儲(chǔ)元的真正限制是,電壓值總是增加(達(dá)到最大電壓Vmax),但不能降低,這與編碼的位值無(wú)關(guān)。堅(jiān)持采用二進(jìn)制模型會(huì)產(chǎn)生不必要的約束。
經(jīng)過(guò)作者的測(cè)試發(fā)現(xiàn),存儲(chǔ)元中比特?cái)?shù)量與其能夠支持的重編程次數(shù)成反比關(guān)系。存儲(chǔ)元每多增加一個(gè)比特,可實(shí)現(xiàn)的重編程次數(shù)少一個(gè)數(shù)量級(jí)。因此,WOM碼本身的寫(xiě)放大,對(duì)QLC使用binary-WOM沒(méi)有凈增益。
02WOM-v Code
為了解決上述問(wèn)題,本文設(shè)計(jì)了新的編碼WOM-v (Voltage-based Write-Once-Memory),實(shí)現(xiàn)更高的寫(xiě)入量。WOM-v碼借助于閃存編程的特征(往存儲(chǔ)元中存儲(chǔ)電荷)。編程以ISPP方式總是由低電壓編程到高電壓。因此,可以將電壓分布范圍劃分成多個(gè)GEN,一個(gè)GEN中包含的電壓區(qū)間表示一次編程可以到達(dá)的電壓值。以QLC為例,存儲(chǔ)元中存儲(chǔ)4個(gè)比特,可以形成16種電壓狀態(tài)(V0-V15)。如下圖所示,可以有WOM-v(3,4), WOM-v(2,4), WOM-v(1,4)。事實(shí)上,WOM-v(3,4)就是將QLC看作TLC使用,用戶存儲(chǔ)3個(gè)數(shù)據(jù)字,而實(shí)際存儲(chǔ)4位碼字。由于每次表示3位,因此單次編程只需要8個(gè)狀態(tài)。這樣QLC的16個(gè)狀態(tài)就可以編程兩次。更高階WOM-v(2,4)則可以編程16/4=4次。
基于上述思想,有以下幾個(gè)優(yōu)化點(diǎn):
1)同代轉(zhuǎn)換:是指重編程后,存儲(chǔ)元的電壓狀態(tài)還在同個(gè)GEN中。具體來(lái)說(shuō),在編程時(shí),若編程后的DATA可以用當(dāng)前電壓值和當(dāng)前GEN的最大電壓值之間的電壓狀態(tài)表示時(shí),同一個(gè)GEN內(nèi)部也可以重編程。例如,當(dāng)前是001(V1),編程后為101。那么無(wú)需進(jìn)入GEN2,編程到GEN1中的V5即可,并做好記錄;此優(yōu)化點(diǎn)的問(wèn)題是會(huì)產(chǎn)生寫(xiě)前讀,每次重編程之前需要通過(guò)一次讀取來(lái)確定存儲(chǔ)元的電壓狀態(tài)。本文進(jìn)一步提出NR模式來(lái)權(quán)衡是否采取此優(yōu)化點(diǎn)。
2)碼字共享:WOM-v(3,4)中的電壓狀態(tài)V7在GEN1和GEN2之間是共享的。數(shù)據(jù)111在GEN1和GEN2中都映射到V7。這種共享讓我們可以擠出更多的重編程代數(shù)。例如,WOM-v(2,4)原先是4代,共享后為5代。
3)利用ECC容錯(cuò)空間:當(dāng)寫(xiě)發(fā)生在頁(yè)面粒度(而不是存儲(chǔ)元)上時(shí),一旦頁(yè)面的任何一個(gè)存儲(chǔ)元達(dá)到GEN_MAX,就不能再重編程。”當(dāng)頁(yè)面中少量存儲(chǔ)元達(dá)到GEN_MAX的情況下,繼續(xù)進(jìn)行頁(yè)面重編程而不擦除“。要實(shí)現(xiàn)上述目標(biāo),可以利用設(shè)備中的ECC糾錯(cuò)碼的容錯(cuò)空間。通過(guò)標(biāo)記少量已達(dá)到GEN_MAX的存儲(chǔ)元為無(wú)效,剩余存儲(chǔ)元組成的頁(yè)面可繼續(xù)執(zhí)行重編程。而這些標(biāo)記無(wú)效的存儲(chǔ)元的值可以通過(guò)現(xiàn)有ECC來(lái)確定。當(dāng)然,無(wú)效存儲(chǔ)元的數(shù)量超過(guò)ECC_Threshold時(shí),當(dāng)前頁(yè)面無(wú)法進(jìn)行后續(xù)重編程,需要先執(zhí)行擦除。
03系統(tǒng)實(shí)現(xiàn)
本文在Linux LightNVM Open-Channel SSD子系統(tǒng)模塊中實(shí)現(xiàn)了WOM-v碼,它允許在FTL中進(jìn)行更改。并擴(kuò)展FEMU來(lái)模擬QLC設(shè)備。通過(guò)WOM-v的系統(tǒng)實(shí)現(xiàn),可以測(cè)試在SSD中實(shí)際減少的擦除次數(shù)(以EU為粒度執(zhí)行擦除操作),以及評(píng)估在理論上無(wú)法準(zhǔn)確收集的input data contents、workload patterns和performance overhead。
LightNVM架構(gòu)
LightNVM是一個(gè)Linux模塊,它向主機(jī)公開(kāi)了NVMe SSD的底層體系結(jié)構(gòu)。有助于對(duì)讀寫(xiě)方式進(jìn)行修改,也能夠控制垃圾回收,以及何時(shí)應(yīng)該在底層設(shè)備上執(zhí)行擦除操作。LightNVM的內(nèi)部體系結(jié)構(gòu)如下圖所示。LightNVM模塊的兩個(gè)主要數(shù)據(jù)結(jié)構(gòu)是1) Ring Buffer和2) Parallel Units。
要將WOM-v碼合并到LightNVM代碼中,需要做以下更改:
1)對(duì)設(shè)備的所有寫(xiě)入操作都需要進(jìn)行編碼。
2)發(fā)布給設(shè)備的所有讀取都需要解碼以前編寫(xiě)的數(shù)據(jù)。編碼和解碼涉及到簡(jiǎn)單的表查找。
3)需要修改默認(rèn)的垃圾回收邏輯。與其在垃圾回收過(guò)程中擦除所有的EU,現(xiàn)在應(yīng)該根據(jù)EU內(nèi)部頁(yè)面的狀態(tài)(是否達(dá)到GEN_MAX)有選擇地進(jìn)行擦除。也就是說(shuō),如果垃圾回收選擇的EU中頁(yè)面未達(dá)到GEN_MAX,則只需要回收有效頁(yè)面而無(wú)需擦除,回收后可與空閑資源一樣拿過(guò)來(lái)直接覆蓋寫(xiě)。
4)底層設(shè)備模擬器需要支持下一代配備QLC或更密集閃存介質(zhì)的SSD設(shè)備。
5)本文進(jìn)一步實(shí)現(xiàn)了兩種優(yōu)化,GC_OPT和NR模式,有助于提高性能和減少WOM-v的開(kāi)銷。
基本實(shí)現(xiàn)
將以下組件添加到LightNVM模塊中:1) 編碼和解碼邏輯;2) WOM-v感知的垃圾回收邏輯;3) 基于FEMU的QLC支持。
寫(xiě)入操作:應(yīng)用程序或文件系統(tǒng)可以向LightNVM提交寫(xiě)請(qǐng)求。所有寫(xiě)數(shù)據(jù)在寫(xiě)入設(shè)備之前都進(jìn)行編碼。默認(rèn)情況下,WOM編碼首先讀取設(shè)備上先前寫(xiě)入的數(shù)據(jù)(查看當(dāng)前編程到哪一代了)。由于這種默認(rèn)方法會(huì)帶來(lái)寫(xiě)前讀。在將環(huán)形緩沖區(qū)數(shù)據(jù)寫(xiě)入設(shè)備之前,在環(huán)形緩沖區(qū)中暫存頁(yè)面的邏輯塊地址(LBA)與設(shè)備物理頁(yè)地址(PPA)之間創(chuàng)建一個(gè)映射。在此階段,攔截所有的寫(xiě)操作,并執(zhí)行以下轉(zhuǎn)換:1)對(duì)正在寫(xiě)入的所有頁(yè)面的PPA中讀取預(yù)先存在的編碼數(shù)據(jù);2)使用現(xiàn)有的數(shù)據(jù)對(duì)頁(yè)面進(jìn)行再編碼;3)將新的編碼頁(yè)面寫(xiě)入設(shè)備。
讀取操作:在讀取工作流中,來(lái)自應(yīng)用程序的原始讀取bio請(qǐng)求首先被轉(zhuǎn)換為相應(yīng)的連續(xù)LBA地址bio請(qǐng)求。由于邏輯頁(yè)面的局部性,連續(xù)的頁(yè)面對(duì)應(yīng)于單個(gè)頁(yè)面。接下來(lái),所有被讀取的編碼頁(yè)面都在讀取返回路徑中被解碼。解碼后的數(shù)據(jù)被復(fù)制到最初提交的bio請(qǐng)求中,并且可以被應(yīng)用程序讀取而無(wú)需修改。
垃圾回收:傳統(tǒng)的GC是回收有效頁(yè)面后直接擦除才能使用,然而本文使用的WOM-v碼下,頁(yè)面可重編程。因此只有當(dāng)EU中任何一個(gè)頁(yè)面達(dá)到最大可重編程次數(shù)后才會(huì)被擦除。所以每次GC只需要回收有效頁(yè)面而不需要執(zhí)行擦除操作。
一個(gè)WOM-v(k,N)方案可以自然地?cái)U(kuò)展到任何N級(jí)存儲(chǔ)元,通過(guò)將N的值更改為設(shè)備的每個(gè)存儲(chǔ)元的位數(shù)。k的值決定了容量和壽命的權(quán)衡——較低的k值會(huì)產(chǎn)生更高的閃存壽命,但也會(huì)消耗更多的物理空間。
WOM-v優(yōu)化
GC_OPT模式:解決GC期間有效頁(yè)面回收帶來(lái)的寫(xiě)放大問(wèn)題,進(jìn)一步提高了SSD的耐久性。關(guān)鍵的觀察是,在大多數(shù)情況下,如果EU中的無(wú)效頁(yè)面可以被重寫(xiě),則無(wú)需執(zhí)行擦除。這意味著,在EU不需要擦除的情況下,我們可以保留有效頁(yè)面,只要我們?cè)谖磥?lái)寫(xiě)入EU時(shí)跳過(guò)這些有效頁(yè)面。塊中剩余的無(wú)效頁(yè)面將以與以前相同的特定順序被覆蓋,以減少單元間的干擾,并像以前一樣在EU的并行單元上條帶化寫(xiě)入。
No_Read(NR)模式:解決寫(xiě)前讀問(wèn)題。由于采用同代轉(zhuǎn)換,在數(shù)據(jù)寫(xiě)入存儲(chǔ)元之前,需要知道存儲(chǔ)元的內(nèi)容,確定其處于哪一代的哪一個(gè)電壓狀態(tài)。因此,每次寫(xiě)都需要先讀一次。如何消除寫(xiě)前讀:去掉同代轉(zhuǎn)換,只在GEN之間轉(zhuǎn)換。通過(guò)記錄當(dāng)前編程的代數(shù),下一次編程直接跳轉(zhuǎn)到下一代。NR模式可優(yōu)化性能,但對(duì)耐久性有輕微影響。
04實(shí)驗(yàn)評(píng)估
實(shí)驗(yàn)采用微基準(zhǔn)測(cè)試負(fù)載和真實(shí)世界收集的負(fù)載進(jìn)行評(píng)估。
1.微基準(zhǔn)測(cè)試負(fù)載
1)數(shù)據(jù)緩沖區(qū)內(nèi)容變化的影響
由于WOM-v(k,N)碼可能發(fā)生同代轉(zhuǎn)換,因此其收益取決于被覆蓋到已有數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容。通過(guò)順序填充設(shè)備,一旦設(shè)備滿,翻轉(zhuǎn)數(shù)據(jù)緩沖區(qū)中所有位的一部分(10%-100%),然后用修改后的數(shù)據(jù)再次填充整個(gè)設(shè)備。重復(fù)這一過(guò)程多次,并比較隨著數(shù)據(jù)緩沖區(qū)內(nèi)容變化速率的增加而被擦除的EU數(shù)量。
下圖顯示了在寫(xiě)入期間因不同數(shù)據(jù)緩沖區(qū)內(nèi)容而擦除的EU總數(shù)。與NO_WOM相比,WOM-v減少了被擦除的EU數(shù)量。然而,當(dāng)后續(xù)寫(xiě)入之間的數(shù)據(jù)變化速率較小時(shí),存儲(chǔ)元達(dá)到Vmax的速率將會(huì)更慢。對(duì)于數(shù)據(jù)變化量較大的負(fù)載,將更快地達(dá)到Vmax,因此EU擦除增益將更低。NO_WOM與數(shù)據(jù)緩沖區(qū)內(nèi)容無(wú)關(guān)。
2)訪問(wèn)模式的影響
為了衡量訪問(wèn)模式的影響,以特定順序?qū)懭雭?lái)無(wú)效先前寫(xiě)入的數(shù)據(jù),來(lái)產(chǎn)生不同程度的設(shè)備寫(xiě)放大。Hot-S是順序更新數(shù)據(jù),Hot-R是隨機(jī)更新數(shù)據(jù),Hot-S和Hot-R下保證所有的頁(yè)面都是熱寫(xiě)的并且垃圾回收中不產(chǎn)生寫(xiě)放大。Cold是只更新一小部分頁(yè)面,Low-GC和High-GC則產(chǎn)生不同程度的垃圾回收操作。
下圖顯示了在不同負(fù)載模式下被擦除的EU的數(shù)量。WOM-v(2,4)顯著減少了被擦除的EU數(shù)量。然而,由于GC導(dǎo)致的寫(xiě)放大增加,WOM-v(1,4)的收益不斷減少。最后,GC-OPT模式能保持較低的寫(xiě)放大開(kāi)銷。
2. 真實(shí)世界負(fù)載
所有方法下物理空間一樣大,并預(yù)先填充一半容量的數(shù)據(jù)。根據(jù)負(fù)載的footprint設(shè)置QLC容量大小。所有WOM-v(2,4)設(shè)置的邏輯地址空間是NO_WOM的邏輯地址空間的一半。同樣,WOM-v(1,4)設(shè)置的邏輯地址空間是NO_WOM的邏輯地址空間的四分之一。
1)壽命評(píng)估
WOM-v(2,4)減少EU擦除次數(shù)為68%-71%。針對(duì)GC密集型工作負(fù)載(MP-auth和MP-Backend),WOM-v(1,4)的性能不佳。這表明,WOM-v碼通過(guò)重編程所帶來(lái)的擦除操作的減少并不能彌補(bǔ)較高速率碼所帶來(lái)的寫(xiě)放大。引入GC_OPT后可以顯著降低垃圾回收過(guò)程產(chǎn)生的寫(xiě)放大。與NO_WOM相比,WOM-v(2,4)-GC-OPT的擦除次數(shù)減少了77-83%,WOM-v(1,4)-GC-OPT減少了82-91%。這意味著在現(xiàn)實(shí)負(fù)載中,擦除操作減少了4.4-11.1×。
2) 性能評(píng)估
由于WOM需要寫(xiě)前讀來(lái)確定當(dāng)前寫(xiě)的代數(shù),會(huì)影響寫(xiě)性能,并提出了WOM-v_NR來(lái)優(yōu)化性能(可能以降低耐久性增益為代價(jià))。
由于WOM-v(k,N)產(chǎn)生的更高的寫(xiě)入量(寫(xiě)k比特的數(shù)據(jù)實(shí)際寫(xiě)N比特,導(dǎo)致每次寫(xiě)入都要添加額外的(N/k)數(shù)據(jù))。
平均性能和吞吐量:與NO_WOM相比,WOM-v(2,4)的性能開(kāi)銷相當(dāng)小(需要寫(xiě)前讀),在3-8%的范圍內(nèi)。添加NR模式消除了這些性能開(kāi)銷,與NO_WOM差不多。同時(shí),與WOM-v(2,4)相比,啟用NR模式對(duì)耐久性影響不大。同時(shí)啟用GC_OPT和NR模式大大降低了WOM-v(1,4)方案的性能開(kāi)銷,使性能在NO_WOM的0-8%以內(nèi)。并且對(duì)比NO_WOM顯著改善耐久性。
讀尾端延遲:評(píng)估讀取密集型負(fù)載的尾端延遲。觀察到NO_WOM和WOM-v(k,N)基線編碼方案的第95百分位尾端延遲為0.6-7%,并且沒(méi)有引入較大的尾端延遲。
05總結(jié)
本文針對(duì)下一代高密度閃存提出一種新的編碼方案,可以有效降低擦除次數(shù),從而改善閃存壽命。即使對(duì)于高寫(xiě)放大的負(fù)載,WOM-v碼也可以通過(guò)GC_OPT模式優(yōu)化;對(duì)性能關(guān)鍵型負(fù)載,可以采用NR模式進(jìn)行優(yōu)化WOM-v使用時(shí)的性能問(wèn)題。另外,WOM-v碼本身的寫(xiě)放大問(wèn)題可能是對(duì)空間利用率要求高的SSD所關(guān)注的。對(duì)于這樣的設(shè)備,本文建議根據(jù)設(shè)備的使用情況或工作負(fù)載的容量要求,在具有不同碼率的WOM-v碼之間進(jìn)行常規(guī)轉(zhuǎn)換。WOM-v碼可以很容易地?cái)U(kuò)展到更高密度的未來(lái)SSD,如PLC SSD和更復(fù)雜的編碼方案。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7613瀏覽量
165888 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42047 -
TLC
+關(guān)注
關(guān)注
0文章
137瀏覽量
51868 -
ECC
+關(guān)注
關(guān)注
0文章
97瀏覽量
20865 -
qlc閃存
+關(guān)注
關(guān)注
0文章
12瀏覽量
4049
原文標(biāo)題:如何提升下一代高密度閃存的可靠性
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦

評(píng)論