曹馥源,楊 柳,劉 楊,霍宗亮
(1.中國(guó)科學(xué)院微電子研究所,北京 100029;2.中國(guó)科學(xué)院大學(xué),北京 100049)
近年來,NAND閃存以其高密度、高傳輸速度、低功耗等優(yōu)點(diǎn)被廣泛應(yīng)用于各類信息存儲(chǔ)設(shè)備中。NAND閃存制造工藝節(jié)點(diǎn)的降低進(jìn)一步提高了存儲(chǔ)密度,降低了單位比特成本。然而,更高的存儲(chǔ)密度同時(shí)也帶來了更加嚴(yán)重的可靠性問題即不斷縮小的存儲(chǔ)單元所能儲(chǔ)存的電子數(shù)量也越來越少,閃存單元內(nèi)獲得或者流失部分電子都將引起閃存單元閾值電壓的改變,進(jìn)而改變閃存單元內(nèi)的數(shù)據(jù)儲(chǔ)存狀態(tài),導(dǎo)致數(shù)據(jù)出錯(cuò)。NAND閃存中存在的錯(cuò)誤是由多種效應(yīng)引起的噪聲導(dǎo)致,主要包括編程/擦除噪聲、數(shù)據(jù)保留噪聲、讀干擾和編程干擾噪聲。其中,讀干擾和數(shù)據(jù)保留噪聲所引發(fā)的可靠性問題在NAND閃存中廣泛存在,是NAND閃存錯(cuò)誤的主要來源。隨著三維堆疊閃存技術(shù)的出現(xiàn)和多值存儲(chǔ)技術(shù)的進(jìn)一步發(fā)展,提升NAND閃存的可靠性已成為國(guó)內(nèi)外科研院所和產(chǎn)業(yè)界研究的熱點(diǎn),也成為提升基于NAND閃存的存儲(chǔ)產(chǎn)品核心競(jìng)爭(zhēng)力的關(guān)鍵。改善工藝、器件,優(yōu)化電路設(shè)計(jì)和采用可靠性算法是常用的幾種提高NAND閃存可靠性的方法。然而,對(duì)硬件結(jié)構(gòu)和制造工藝進(jìn)行調(diào)整所需的成本都很高。因此,通過設(shè)計(jì)更加先進(jìn)的算法來提升NAND閃存的可靠性就成為一個(gè)重要的研究方向。
根據(jù)存儲(chǔ)單元閾值電壓偏移方向,可將NAND閃存中的錯(cuò)誤分為左偏和右偏兩種類型。兩類錯(cuò)誤示意圖如圖1所示。
圖1 NAND閃存中的兩類錯(cuò)誤
隨著數(shù)據(jù)保留時(shí)間的增加,NAND閃存單元內(nèi)存儲(chǔ)的電荷會(huì)逐漸泄露,導(dǎo)致存儲(chǔ)單元閾值電壓降低,整體閾值電壓分布向左偏移,如圖1a)所示。由于讀電壓通常是固定值,因此讀出的數(shù)據(jù)會(huì)發(fā)生部分比特位反轉(zhuǎn),引起數(shù)據(jù)出錯(cuò)。隨著編程/擦除循環(huán)次數(shù)的增加,NAND閃存保持電荷能力會(huì)變得越來越差,數(shù)據(jù)保留效應(yīng)所引發(fā)的可靠性問題將變得更加嚴(yán)重。
NAND閃存編程干擾和讀干擾原理如圖2所示。當(dāng)對(duì)NAND閃存頁(yè)編程時(shí),需在編程的字線上施加編程電壓,不需要編程的單元處于圖2所示的pass模式,施加一個(gè)較小的電壓。由于電壓所產(chǎn)生的弱編程效應(yīng)以及相鄰字線單元間存在的寄生電容耦合效應(yīng),在對(duì)NAND閃存字線進(jìn)行編程時(shí),其他未被編程字線的閃存的閾值電壓也隨之升高,整體閾值電壓分布向右偏移,如圖1b)所示,最終引發(fā)編程干擾錯(cuò)誤。
圖2 NAND閃存中的干擾原理
讀干擾與編程干擾類似,在進(jìn)行讀操作時(shí),讀電壓()施加在選定的字線上,其他字線施加一個(gè)較小的電壓,引發(fā)的弱編程效應(yīng)使得閃存塊內(nèi)未被讀取的閃存單元閾值電壓升高。當(dāng)多次讀取同一個(gè)單元而不進(jìn)行擦除操作時(shí),會(huì)發(fā)生讀干擾錯(cuò)誤。相比于編程干擾,讀干擾的較小,每次讀操作所產(chǎn)生的閾值偏移比較微弱。然而,NAND閃存單元在擦除前只能進(jìn)行一次編程,讀操作則不受限制。一個(gè)單元的讀操作次數(shù)遠(yuǎn)大于編程操作的次數(shù),使得讀干擾現(xiàn)象在實(shí)際應(yīng)用中更為普遍,已成為影響NAND閃存可靠性的重要因素。
通常采用定期刷新機(jī)制來防止數(shù)據(jù)保留錯(cuò)誤的累積,具體方法是:定期將長(zhǎng)時(shí)間未訪問的閃存塊中的數(shù)據(jù)讀出,糾錯(cuò)后重新將正確的數(shù)據(jù)寫入新的閃存塊中。然而,定期刷新機(jī)制會(huì)產(chǎn)生額外的編程和擦除操作,從而加速SSD的損耗。因此,Tanakamaru等人提出了一種基于讀電壓脈沖的數(shù)據(jù)恢復(fù)技術(shù)(Data Retention-error Recovery Pulse,DRRP),對(duì)發(fā)生數(shù)據(jù)保留錯(cuò)誤的單元反復(fù)施加讀電壓脈沖,從而補(bǔ)償數(shù)據(jù)保留損失的電荷,在經(jīng)過1 000次的讀電壓脈沖后,誤碼率下降了55%。由于讀電壓脈沖較低,導(dǎo)致每次注入的電荷數(shù)量較少,因此數(shù)據(jù)恢復(fù)需要較多的讀脈沖操作次數(shù)。
為了提高數(shù)據(jù)恢復(fù)的效率,Ma等人提出使用更高的字線編程干擾電壓脈沖(Word-line Program Disturbance,WPD)來對(duì)發(fā)生數(shù)據(jù)保留錯(cuò)誤的單元進(jìn)行數(shù)據(jù)恢復(fù),經(jīng)過100次編程電壓脈沖后,誤碼率下降了75%。然而,應(yīng)用DRRP和WPD方法都需要較多的冗余操作,因此這兩種方案僅在ECC糾錯(cuò)失敗時(shí)執(zhí)行。由于NAND廠商只對(duì)外開放讀、編程和擦除等基本操作命令,用戶無法對(duì)單元進(jìn)行多次編程以及自行調(diào)整NAND的操作電壓,導(dǎo)致DRRP和WPD方法應(yīng)用門檻較高。
Ha等人通過對(duì)金融、搜索引擎、數(shù)據(jù)庫(kù)等以讀操作為主的工作負(fù)載進(jìn)行分析研究,發(fā)現(xiàn)讀操作的邏輯塊地址(Logical Block Address,LBA)有著很強(qiáng)的空間集中性,即大量的讀操作集中在少數(shù)的LBA范圍內(nèi),這些不斷被讀取的數(shù)據(jù)被稱為讀熱數(shù)據(jù)。在NAND閃存中,這種針對(duì)一個(gè)閃存頁(yè)的大量連續(xù)讀操作將導(dǎo)致讀干擾錯(cuò)誤的積累。對(duì)于讀干擾導(dǎo)致的數(shù)據(jù)誤碼增加的問題,Kim提出一種與定期刷新類似的方式來緩解讀干擾錯(cuò)誤,稱為讀回收。讀回收的關(guān)鍵思想是:為每個(gè)閃存塊設(shè)置一個(gè)最大讀次數(shù),當(dāng)讀次數(shù)達(dá)到預(yù)先設(shè)定的閾值后,讀回收機(jī)制將把該塊內(nèi)的數(shù)據(jù)重新編程到新塊中去。與針對(duì)數(shù)據(jù)保留錯(cuò)誤的定期刷新機(jī)制類似,讀回收也會(huì)引發(fā)大量的額外讀寫操作,進(jìn)而影響SSD的性能。
本文根據(jù)編程干擾、讀干擾與數(shù)據(jù)保留效應(yīng)對(duì)NAND閃存閾值電壓產(chǎn)生相反方向的偏移現(xiàn)象,結(jié)合3D NAND閃存結(jié)構(gòu)特點(diǎn),提出一種基于干擾補(bǔ)償?shù)腻e(cuò)誤緩解算法。該算法可同時(shí)緩解讀干擾導(dǎo)致的閾值電壓左偏和數(shù)據(jù)保留所引發(fā)閾值電壓右偏造成的兩類數(shù)據(jù)出錯(cuò),且僅需要極小的額外讀寫開銷,易于實(shí)現(xiàn)。
3D NAND閃存的垂直溝道結(jié)構(gòu)如圖3a)所示,一個(gè)閃存塊由垂直方向的不同層組成,每層包含多條字線,一根字線上所連接的所有單元構(gòu)成一個(gè)閃存頁(yè)。
圖3 3D NAND閃存陣列示意圖
由第1節(jié)介紹的編程干擾和讀干擾原理可知,在對(duì)3D NAND閃存某一層的閃存頁(yè)進(jìn)行編程操作和讀操作時(shí),會(huì)對(duì)其他層的字線施加一個(gè)電壓,產(chǎn)生使閾值電壓向右偏移的干擾效應(yīng),引發(fā)干擾錯(cuò)誤。
基于3D NAND閃存的多層結(jié)構(gòu)和數(shù)據(jù)干擾原理,將傳統(tǒng)的閃存塊以層為單位,分為普通數(shù)據(jù)存儲(chǔ)層和讀熱數(shù)據(jù)預(yù)留層。如圖3b)所示,在3D NAND閃存中預(yù)留一層的閃存頁(yè)用于單獨(dú)存放讀熱數(shù)據(jù),稱為讀熱數(shù)據(jù)預(yù)留層。通過識(shí)別讀熱數(shù)據(jù)并定期將其遷移到“冷閃存塊”(即長(zhǎng)時(shí)間未被訪問的閃存塊)的讀熱數(shù)據(jù)預(yù)留層中,所產(chǎn)生的編程操作以及大量的讀操作可以補(bǔ)充泄露的電荷,以降低NAND閃存的數(shù)據(jù)保留錯(cuò)誤,同時(shí)也阻止了讀干擾錯(cuò)誤的累積。
干擾補(bǔ)償算法流程如圖4所示,在存入數(shù)據(jù)時(shí),首先對(duì)普通數(shù)據(jù)存儲(chǔ)層進(jìn)行編程操作,通過比較每個(gè)閃存頁(yè)的讀次數(shù),可以區(qū)分出讀熱頁(yè)和讀冷頁(yè)。然而,如果準(zhǔn)確記錄每個(gè)閃存頁(yè)的所有讀操作,將占用相當(dāng)大的內(nèi)存空間。為了節(jié)約內(nèi)存開銷,根據(jù)讀熱數(shù)據(jù)LBA分布的空間集中性,可使用一個(gè)比特飽和計(jì)數(shù)器,通過部分記錄每個(gè)閃存頁(yè)的讀次數(shù)就能區(qū)分冷熱數(shù)據(jù),當(dāng)該閃存頁(yè)被讀請(qǐng)求訪問時(shí),計(jì)數(shù)器值加1。當(dāng)閃存頁(yè)被寫請(qǐng)求訪問時(shí),讀計(jì)數(shù)器置0。閃存塊每經(jīng)歷×2次讀操作就對(duì)塊內(nèi)所有閃存頁(yè)的讀計(jì)數(shù)器進(jìn)行檢測(cè),若讀計(jì)數(shù)器達(dá)到飽和,該閃存頁(yè)被標(biāo)記為讀熱頁(yè),然后將塊內(nèi)所有讀熱頁(yè)重新編程到冷閃存塊內(nèi)的讀熱數(shù)據(jù)預(yù)留層。最終修改地址映射表,將原閃存頁(yè)標(biāo)記為無效。
圖4 干擾補(bǔ)償算法流程
干擾補(bǔ)償前后的閾值電壓分布示意圖如圖5所示。在初始階段,NAND閃存的誤碼率較低,閾值電壓分布如圖5a)所示。經(jīng)一段時(shí)間的數(shù)據(jù)保留后,如圖5b)所示,NAND閃存單元的閾值電壓分布向左偏移,數(shù)據(jù)保留錯(cuò)誤增多。經(jīng)過編程干擾和讀干擾的電荷補(bǔ)償,閾值電壓將向右移動(dòng),如圖5c)所示,此時(shí)數(shù)據(jù)保留所導(dǎo)致的錯(cuò)誤可被部分緩解。
圖5 干擾補(bǔ)償前后的閾值電壓分布示意圖
采用開源的固態(tài)盤模擬器3Dsim對(duì)本文提出的干擾補(bǔ)償算法進(jìn)行評(píng)估。
3Dsim支持現(xiàn)有3D NAND閃存的主要操作指令,通過運(yùn)行從實(shí)際應(yīng)用場(chǎng)景中收集的負(fù)載蹤跡文件(trace),以模擬3D NAND閃存的使用情況。實(shí)驗(yàn)采用的芯片是長(zhǎng)江存儲(chǔ)Gen2256Gb NAND顆粒,該閃存為64層的TLC閃存,每層包含18個(gè)閃存頁(yè),每個(gè)閃存頁(yè)大小為16 KB。根據(jù)實(shí)際芯片的參數(shù),在3Dsim中配置SSD仿真參數(shù),具體信息如表1所示。
表1 SSD參數(shù)配置信息
為了對(duì)本算法的讀熱數(shù)據(jù)遷移效果進(jìn)行評(píng)估,本實(shí)驗(yàn)選取4種常用的讀密集型負(fù)載文件,其參數(shù)如表2所示。
表2 負(fù)載文件信息
實(shí)驗(yàn)對(duì)比了應(yīng)用干擾補(bǔ)償算法和未應(yīng)用補(bǔ)償算法兩種情況下,單個(gè)閃存塊最大讀次數(shù)和熱頁(yè)遷移至冷塊后所產(chǎn)生的平均讀次數(shù)、最大讀次數(shù),前者反映了算法對(duì)讀干擾噪聲的抑制作用,后者反映了可用于恢復(fù)冷塊中數(shù)據(jù)保留錯(cuò)誤的讀干擾脈沖次數(shù)。
圖6為單個(gè)閃存塊最大讀次數(shù)的變化情況,通過定期對(duì)讀熱數(shù)據(jù)進(jìn)行遷移,4種負(fù)載的塊最大讀次數(shù)分別下降了86.6%,87.5%,94.6%和96.8%,有效阻止了讀干擾錯(cuò)誤的累積。
圖6 不同負(fù)載下單個(gè)閃存塊最大讀次數(shù)
基于4種負(fù)載文件仿真,記錄了遷移的讀熱頁(yè)數(shù)量,以及讀熱頁(yè)遷移至冷塊后所產(chǎn)生的平均讀次數(shù)和最大讀次數(shù),如表3所示。
表3 讀熱數(shù)據(jù)遷移結(jié)果
根據(jù)表3的仿真結(jié)果,在實(shí)際芯片上測(cè)試了本文提出的干擾補(bǔ)償算法和DRRP技術(shù)對(duì)數(shù)據(jù)保留錯(cuò)誤的恢復(fù)效果。本實(shí)驗(yàn)的數(shù)據(jù)保留通過高溫烘烤加速來實(shí)現(xiàn),根據(jù)Arrhenius定律計(jì)算得出,在125℃烘烤1 h近似等于數(shù)據(jù)在25℃的常溫下存儲(chǔ)1年。在編程擦除4 000次、1年的數(shù)據(jù)保留時(shí)間的閃存塊中,首先對(duì)前63層閃存頁(yè)進(jìn)行編程,并記錄誤碼數(shù);然后經(jīng)過高溫烘烤加速后,對(duì)第64層閃存頁(yè)進(jìn)行編程,來模擬讀熱數(shù)據(jù)的遷移;再對(duì)64層閃存進(jìn)行連續(xù)讀操作,每隔1 000次讀操作對(duì)閃存塊中前63層閃存頁(yè)的誤碼數(shù)進(jìn)行一次檢測(cè)。以1年數(shù)據(jù)保留后(烘烤后)的誤碼率為基準(zhǔn),誤碼率的變化如圖7所示。
圖7 數(shù)據(jù)保留時(shí)間為1年時(shí),誤碼率的變化
由圖7可知,在經(jīng)歷了50 000次的讀操作后,傳統(tǒng)的DRRP技術(shù)最多只能將1年的數(shù)據(jù)保留錯(cuò)誤降低23%,此后,隨著讀操作次數(shù)的增加,誤碼率基本不再變化。采用本文提出的干擾補(bǔ)償算法后,WPD僅對(duì)最后一層字線的編程操作所引發(fā)的編程干擾,就能將1年的數(shù)據(jù)保留錯(cuò)誤降低39%,這意味著即使在讀熱數(shù)據(jù)較少的情況下,該算法依然有較好的錯(cuò)誤緩解效果。其中,prxy負(fù)載在遷移讀熱數(shù)據(jù)至新的閃存塊后最多累積了93 210次讀操作,此時(shí)數(shù)據(jù)保留所產(chǎn)生的誤碼率可降低58%,在DRRP和WPD技術(shù)的基礎(chǔ)上又降低了35%和19%。
由于有效利用了讀熱數(shù)據(jù)所產(chǎn)生的讀干擾電壓脈沖,與DRRP技術(shù)和WPD技術(shù)相比,本文算法額外開銷只有對(duì)讀熱數(shù)據(jù)的定期遷移所產(chǎn)生的讀操作和編程操作,可忽略不計(jì)。
基于對(duì)NAND閃存中的數(shù)據(jù)干擾現(xiàn)象以及數(shù)據(jù)保留現(xiàn)象的分析研究,同時(shí)結(jié)合3D NAND閃存結(jié)構(gòu)特點(diǎn),本文提出一種干擾補(bǔ)償算法。該算法將3D NAND閃存分為讀熱數(shù)據(jù)預(yù)留層和普通數(shù)據(jù)存儲(chǔ)層,利用讀熱數(shù)據(jù)遷移時(shí)的編程干擾和遷移后的讀干擾電壓脈沖,實(shí)現(xiàn)對(duì)數(shù)據(jù)保留效應(yīng)的電荷補(bǔ)償,同時(shí)阻止讀干擾效應(yīng)的累積,提高3D NAND閃存的可靠性。
采用長(zhǎng)江存儲(chǔ)3D TLC NAND作為實(shí)驗(yàn)樣本,在3Dsim固態(tài)盤模擬器和實(shí)際芯片上對(duì)干擾補(bǔ)償算法效果進(jìn)行了驗(yàn)證。結(jié)果表明,在編程擦除4 000次、1年的數(shù)據(jù)保留時(shí)間的條件下,與未應(yīng)用干擾補(bǔ)償算法相比,采用本文算法的NAND閃存數(shù)據(jù)保留誤碼率降低58%,閃存塊最大讀次數(shù)降低96.8%;與應(yīng)用DRRP和WPD技術(shù)相比,采用本文算法的NAND閃存誤碼率分別在兩者的基礎(chǔ)上又降低35%和19%,表明該算法的錯(cuò)誤緩解效果優(yōu)于DRRP和WPD技術(shù),且冗余操作更少,能夠有效緩解當(dāng)前日益嚴(yán)重的NAND閃存可靠性問題。