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

評論