鄭敏華,韓國軍
廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006
近幾年,NAND 閃存因?yàn)槠涓叽鎯?chǔ)容量、快速讀寫、非易失性、低成本以及體積小等優(yōu)點(diǎn),被廣泛應(yīng)用于各類電子產(chǎn)品和數(shù)據(jù)存儲(chǔ)中心。隨著閃存工藝水平的發(fā)展,閃存芯片的尺寸由早期的50 nm縮減到20 nm 以下,使得閃存密度顯著增大,相鄰閃存單元距離越來越近,單元間干擾加劇[1?4]。同時(shí),閃存在使用過程中存在不同程度的磨損,氧化層的絕緣性降低導(dǎo)致電子泄露從而引起持久性噪聲,使得存儲(chǔ)單元的閾值電壓隨時(shí)間向較低狀態(tài)偏移[5?8],閃存的數(shù)據(jù)可靠性和使用壽命都不同程度降低。為了提高M(jìn)LC 閃存的傳輸完整性,可對信號進(jìn)行數(shù)據(jù)后補(bǔ)償或數(shù)字預(yù)失真的信號處理方式。其中,Adnan[8]利用閃存持久性噪聲的特點(diǎn)對第一次譯碼錯(cuò)誤的比特置信度進(jìn)行修正,并重新譯碼。另一種算法[9]通過大量的譯碼數(shù)據(jù)樣本找出更為準(zhǔn)確的閾值量化電壓。然而,這2 種算法復(fù)雜度高,鑒于此,本文利用閃存讀取順序和編程順序之間的關(guān)系,通過相鄰字線低頁的譯碼信息來輔助改善高頁的糾錯(cuò)性能,并利用譯碼過程中校驗(yàn)信息與置信度的關(guān)系來輔助改善低頁的糾錯(cuò)性能。
MLC 閃存信道的建模如圖1 所示,數(shù)據(jù)先通過擦除與編程操作寫入存儲(chǔ)單元。不失一般性,閃存信道的干擾主要包括隨機(jī)電報(bào)噪聲[10?11]、持久性噪聲和單元間干擾。
圖1 MLC 閃存信道模型
由于閃存的物理結(jié)構(gòu),不能直接改變閃存單元內(nèi)的電子數(shù)量來完成編程,因此需要對整個(gè)閃存塊進(jìn)行擦除操作,再進(jìn)行編程操作。處于擦除狀態(tài)與編程狀態(tài)下的閾值電壓均服從高斯分布。
擦除狀態(tài)下閾值電壓概率密度函數(shù)為
式中: μe和 σe分別表示擦除狀態(tài)下閾值電壓概率密度函數(shù)的均值與標(biāo)準(zhǔn)方差, μp和 σp分別表示編程狀態(tài)下閾值電壓概率密度函數(shù)的均值與標(biāo)準(zhǔn)方差。
當(dāng)前閃存采用的編程順序?yàn)槠露染幊添樞騕5,12?13],如圖2 所示。對每個(gè)字線(記為WL i)的高頁(記為MSB)與低頁(記為LSB)都進(jìn)行編號,并按編號從小到大的順序進(jìn)行編程。除了WL 0 對應(yīng)的LSB 的編號為0 和最后的字線WL n 對應(yīng)的MSB 的編號為2n+1,WL i 對應(yīng)的LSB 的編號為2i?1,對應(yīng)的MSB 的編號為2i+2。
圖2 編程順序
隨著編程和擦除次數(shù)的增加,干擾也會(huì)增加,導(dǎo)致閾值電壓向兩側(cè)漂移,隨機(jī)電報(bào)噪聲服從指數(shù)分布,其概率密度函數(shù)為
閃存氧化層的絕緣性能會(huì)隨著PE的增加而降低,使得電子泄露得更快,導(dǎo)致閾值電壓向左偏移。持久性噪聲服從高斯分布,其概率密度函數(shù)如下:
式中: μt=KS(Vs?x0)·[At(PE)ai+Bt(PE)a0]·log(1+T),其中, Ks、 x0、 At、 Bt、 αi、 α0都是常數(shù), T為持久性噪聲時(shí)間; σt=0.3·|μt|。
當(dāng)閃存結(jié)構(gòu)為干擾較小的全位線結(jié)構(gòu)時(shí),由于相鄰閃存單元間寄生電容耦合效應(yīng),如圖3 所示。因此,單元間干擾可用每個(gè)閃存單元的閾值電壓變化量的線性組合來表示:
式中 ?V(n)和 γ(n)分別表示第n 個(gè)干擾單元的閾值電壓變化量和寄生電容的耦合系數(shù)。其中 γ有2 種形式: γy為垂直相鄰方向和 γxy為斜對角相鄰方向,令 γy=0.08s 和 γxy=0.006s , s為單元間干擾影響因子。
圖3 全位線結(jié)構(gòu)下的單元間干擾示意
閾值電壓的條件概率分布函數(shù)在受到隨機(jī)電報(bào)噪聲、持久性噪聲和單元間干擾后的數(shù)學(xué)表達(dá)式為
圖4 是MLC 閃存信道在單元間干擾下的閾值電壓分布圖。狀態(tài)‘11’為擦除狀態(tài),不對相鄰單元產(chǎn)生單元間干擾;狀態(tài)‘10’、‘00’和‘01’為編程狀態(tài),會(huì)對相鄰單元造成單元間干擾,因此大部分閃存單元會(huì)受到單元間干擾,閾值電壓向右移。
圖4 MLC 閃存信道在單元間干擾下的閾值電壓分布(s=1.6 、 PE=10 000、T =0)
如圖4 所示,狀態(tài)‘11’與‘10’的重疊區(qū)設(shè)有3 個(gè)量化電壓,同樣地,狀態(tài)‘10’與‘00’的重疊區(qū)和狀態(tài)‘00’與‘01’的重疊區(qū)也設(shè)有3 個(gè)量化電壓,共9 個(gè) 量 化 電 壓 R={Ri|i=1,2,···,9},其 中R2、R5、R8為硬判決電壓。這9 個(gè)量化電壓把MLC 閃存閾值電壓劃分為10 個(gè)閾值電壓區(qū)域,并按閾值電壓從小到大的順序?qū)﹂撝惦妷簠^(qū)域進(jìn)行標(biāo)號{flag(m)=m|m=1,2,···,10}。
存儲(chǔ)單元上不同頁的錯(cuò)誤概率是不平衡的,通常高頁(記為MSB)的錯(cuò)誤概率比低頁(記為LSB)的錯(cuò)誤概率高,同一個(gè)存儲(chǔ)單元上的2 個(gè)比特的可靠性不同[2],并用置信度信息表示比特的可靠性,作為譯碼時(shí)的初始化信息。為了減少計(jì)算復(fù)雜度,定義MSB 與LSB 的置信度(可靠度)信息為RMSB(i) 和 RLSB(i),i=1,2,···,N,N 為碼長,如圖5 所示。
圖5 MSB 和LSB 的置信度信息賦值
閃存在相同干擾下通過閾值量化電壓對整體閾值電壓進(jìn)行量化,并不能確保該量化電壓滿足閃存每一字線的閾值電壓量化,存在量化電壓補(bǔ)償不足和過渡補(bǔ)償?shù)目赡?。如圖6 所示。當(dāng)閾值電壓右移嚴(yán)重時(shí),量化電壓會(huì)出現(xiàn)補(bǔ)償不足的情況,使得圓形標(biāo)注的閃存單元在閾值電壓量化后為‘10’狀態(tài)的單元,因此其置信度信息賦值為RMSB(3)。而當(dāng)閾值電壓右移不嚴(yán)重時(shí),量化電壓會(huì)出現(xiàn)過渡補(bǔ)償?shù)那闆r,使得三角形標(biāo)注的閃存單元在閾值電壓量化后為‘11’狀態(tài)的單元,因此其置信度信息賦值為 RMSB(2)。A2 狀態(tài)重疊區(qū)也出現(xiàn)同樣的置信度賦值錯(cuò)誤,因此需要對譯碼錯(cuò)誤的MSB 狀態(tài)重疊區(qū)的置信度進(jìn)行糾正。
圖6 MLC 閃存信道高頁重疊區(qū)置信度錯(cuò)誤分析
根據(jù)閃存的讀取機(jī)制[4,13?14],可同時(shí)讀取到WL i 的MSB 和LSB,由 圖2 可 知,在WL i 的MSB 編程前,WL i+1 的LSB 已完成編程。因此,當(dāng)讀取到WL i 的MSB 時(shí),結(jié)合閃存的編程順序可 讀 取 到WL i 的LSB(記 為LLSB)和WL i+1 的LSB(記為NLSB),則譯碼錯(cuò)誤的MSB 可利用LLSB和NLSB 的譯碼信息。
首先找到譯碼失敗的MSB 重疊區(qū)中的閃存單元在碼字中的位置U。若譯碼錯(cuò)誤的MSB 讀取到的LLSB 和NLSB 都譯碼正確,說明LLSB和NLSB 的譯碼信息可靠。則譯碼失敗的MSB 可利用譯碼成功的LLSB 和NLSB 在位置U 上的比特值來確定MSB 重疊區(qū)中置信度賦值錯(cuò)誤的比特位,并糾正其置信度信息。比如,當(dāng)RMSB(U)==?5,BLLSB(U)==1時(shí),該閃存單元在[R2,R3]區(qū)間內(nèi),若BNLSB(U)==0,說明該字線閾值電壓右移嚴(yán)重,使得量化電壓補(bǔ)償不足,則修正其置信度RMSB(U)==RMSB(2)。具體過程如算法1。
算法1 利用相鄰低頁信息輔助修正高頁
1)若MSB 譯碼失敗,LLSB 和NLSB 都沒有譯碼成功,則執(zhí)行步驟5)。
2)讀取LLSB 和NLSB 在譯碼后的比特信息,并分別記為 BLLSB(i)和 BNLSB(i),i=1,2,···,N,其中N 為碼長。找出MSB 的變量節(jié)點(diǎn){vi∈flag(2,3,8,9)}的位置U, U=find(RMSB==|5|)。
3)讀取并更新MSB 重疊區(qū)中錯(cuò)誤比特的自信度信息:
4)該譯碼錯(cuò)誤的MSB 頁重新BP 譯碼。
5)結(jié)束。
算法1 的延伸:在譯碼錯(cuò)誤的MSB 讀取到的LLSB 和NLSB 中,會(huì)出現(xiàn)只有一個(gè)譯碼成功的情況,則此LLSB 和NLSB 并不完全可靠,在位置U 上的比特值未必正確。而閾值電壓區(qū)域?qū)?yīng)的置信度信息表示該閾值電壓區(qū)域的可靠性,因此可判斷LLSB 和NLSB 在位置U 上的置信度信息是否可靠,若可靠則表明LLSB 和NLSB 在位置U 上的比特信息可靠。由已發(fā)表的大量文獻(xiàn)[15?18]可知,LSB 只有一個(gè)狀態(tài)重疊區(qū),相比LSB 其他區(qū)域的可靠度要低很多。如果LLSB 或NLSB在位置U 上的置信度信息是LSB 在狀態(tài)重疊區(qū)的置信度信息,則LLSB 和NLSB 在位置U 上的比特信息不可靠,若(RLLSB(U)!=|5|)&&(RNLSB(U)!=|5|),進(jìn)行算法1 的步驟3)。
由于在算法1 中,找出MSB 狀態(tài)重疊區(qū)置信度信息賦值錯(cuò)誤的比特需要借助LLSB 和NLSB的譯碼信息,若LLSB 和NLSB 譯碼失敗會(huì)影響MSB 的修正,所以需要提高LSB 的糾錯(cuò)性能。
在狀態(tài)‘10’和狀態(tài)‘00’的重疊區(qū)中,存在著少量LSB 可靠性低的變量節(jié)點(diǎn) vf∈flag(5,6),該部分變量節(jié)點(diǎn)通過校驗(yàn)節(jié)點(diǎn)ci的更新[19?20],如式(1);傳遞可靠性低的信息給其他變量節(jié)點(diǎn) vj?flag(5,6)。變量節(jié)點(diǎn)vj通過更新節(jié)點(diǎn)信息,如式(2);對外傳遞含有vf的信息。并在完成一次譯碼后計(jì)算vj的總信息,如式(3);并進(jìn)行硬判決,如式(4)。
由式(1)~(4)可知,可靠性低的變量節(jié)點(diǎn)有可能會(huì)影響到可靠性高的變量節(jié)點(diǎn)總信息的計(jì)算及其向外傳遞信息的可靠性,從而影響硬判決,導(dǎo)致可靠性高的比特翻轉(zhuǎn)。在閃存信道內(nèi),LSB 的變量節(jié)點(diǎn) {vi∈flag(1,10)}的可靠性高,比特錯(cuò)誤率低[15?17],且比特?cái)?shù)幾乎占了一個(gè)碼字的一半。為了防止LSB 的變量節(jié)點(diǎn) {vi∈flag(1,10)}的比特因?yàn)殄e(cuò)誤的變量節(jié)點(diǎn)導(dǎo)致翻轉(zhuǎn),對比了255 幀LSB 在不同單元間干擾影響因子s 下,LSB 的變量節(jié)點(diǎn){vi∈flag(1,10)}在傳統(tǒng)BP 譯碼算法和無算法譯碼(硬判決)下的總比特錯(cuò)誤量,如表1 所示。
表1 BP 譯碼算法和無譯碼下‘11’和‘01’的總比特錯(cuò)誤量
對LSB 的變量節(jié)點(diǎn) {vi∈flag(1,10)}不進(jìn)行譯碼直接硬判決,由表1 可推斷:
經(jīng)過BP 譯碼后,LSB 的變量節(jié)點(diǎn)vi∈flag(1,10)中存在少量錯(cuò)誤比特,則該錯(cuò)誤比特的總信息與置信度信息的正負(fù)關(guān)系為
因此根據(jù)式(3),可得出該錯(cuò)誤比特的總信息與校驗(yàn)信息的正負(fù)關(guān)系為
所以該錯(cuò)誤比特的置信度與校驗(yàn)信息的正負(fù)關(guān)系是
由以上推導(dǎo)可知,可靠性高的比特會(huì)因接收到可靠性低的校驗(yàn)信息而發(fā)生翻轉(zhuǎn),因此對校驗(yàn)信息增加可靠性權(quán)重a。為了去除可靠性低的校驗(yàn)信息對可靠性高的比特造成影響,令a=0;若校驗(yàn)信息可靠則保留,令a =1。具體過程如算法2 所示。
算法2 增加LSB 加權(quán)可靠度
2)更新校驗(yàn)節(jié)點(diǎn),計(jì)算式(1)。
3)更新變量節(jié)點(diǎn),計(jì)算碼字總信息。
if {vj∈flag(1,10)|vj∈LSB}
更新式(2)變量節(jié)點(diǎn),計(jì)算式(3)碼字總信息。
else 計(jì)算式(3),并計(jì)算校正信息可靠性權(quán)重:
4)硬判決式(4)。
5)若滿足 c·HT=0,則停止迭代,否則繼續(xù)重復(fù)步驟2)、3),直到滿足 c·HT=0或迭代到最大迭代次數(shù) Imax。
本實(shí)驗(yàn)仿真是在MATLAB 平臺上實(shí)現(xiàn),所有算法都基于傳統(tǒng)并行BP 譯碼算法上進(jìn)行改進(jìn),在每一算法中MSB 和LSB 同時(shí)參與譯碼,參數(shù)T =0,PE=104。圖7 表示的是在不同的單元間干擾影響因子s 下,MSB 重疊區(qū)域的錯(cuò)誤比特?cái)?shù)以及MSB 的誤碼率和誤幀率在傳統(tǒng)BP 譯碼算法和算法1 及其延伸算法下的比較。當(dāng)s=1.4 時(shí),算法1 及其延伸算法的誤碼率降低尤為明顯;當(dāng)s 逐漸增大,算法1 的延伸比算法1 有更明顯的性能提升。算法1 及其延伸算法通過結(jié)合閃存的寫入與讀取機(jī)制,通過相鄰字線LSB 的譯碼信息,有效確定譯碼錯(cuò)誤的MSB 重疊區(qū)中置信度賦值錯(cuò)誤的比特,并對其進(jìn)行改正,能大幅度提升譯碼性能。
圖7 BP 算法和算法1 及其延伸算法性能分析
圖8 表示在不同的單元間干擾影響因子s 下,狀態(tài)‘11’和狀態(tài)‘01’在LSB 非重疊區(qū)下的錯(cuò)誤比特?cái)?shù),以及LSB 的誤碼率和誤幀率在傳統(tǒng)BP 譯碼算法和算法2 下的比較??梢奓SB 中變量節(jié)點(diǎn)vi∈flag(1,10)的校驗(yàn)信息,在傳統(tǒng)BP 譯碼算法下,受到可靠度低的變量節(jié)點(diǎn)的影響很大,導(dǎo)致少部分該變量節(jié)點(diǎn)的比特發(fā)生翻轉(zhuǎn)。算法2 通過這部分變量節(jié)點(diǎn)的置信度信息與校驗(yàn)信息之積的正負(fù)信息來計(jì)算校驗(yàn)信息的可靠性權(quán)重,能有效降低這部分的錯(cuò)誤比特?cái)?shù),提高譯碼性能。
圖8 BP 算法和算法2 性能分析
根據(jù)高密度NAND 閃存數(shù)據(jù)的寫入與讀取機(jī)制,以及高低頁比特之間的關(guān)聯(lián)關(guān)系,提出了一種融合相鄰單元高低頁存儲(chǔ)可靠性的BP 譯碼算法。
1)算法1 利用讀取順序與編程順序之間的關(guān)系,通過相鄰字線的譯碼信息來輔助改善高頁的糾錯(cuò)性能。由于算法1 性能的改進(jìn)需通過相鄰字線,因此提出算法2 來改善相鄰字線的糾錯(cuò)性能。
2)算法2 利用了可靠性較高的比特位上的總信息求和,對該比特位接收到的校驗(yàn)信息增加可靠性權(quán)重,保證可靠性較高的比特位向外傳遞信息的可靠性,并防止可靠性較高的比特位翻轉(zhuǎn)。理論分析以及數(shù)據(jù)的仿真表明該算法能夠有效提高糾錯(cuò)性能。