張 旋,李曉強(qiáng)
(西安理工大學(xué),陜西 西安 710082)
MLC型NAND閃存的比特翻轉(zhuǎn)譯碼算法研究
張 旋,李曉強(qiáng)
(西安理工大學(xué),陜西 西安 710082)
隨著閃存編程/擦除循環(huán)次數(shù)的增加,多級單元(Multi-Level Cell, MLC)的氧化隔離層被破壞,進(jìn)而導(dǎo)致閃存的可靠性急劇降低。針對這種情況,在深入分析MLC閃存信道模型和數(shù)據(jù)保持噪聲模型的基礎(chǔ)上,提出了一種MLC型NAND閃存的比特翻轉(zhuǎn)譯碼算法。仿真結(jié)果表明,在MLC閃存信道下,該方法既可保證閃存單元的可靠性,又具有較短閃存單元的讀取時間,從而實現(xiàn)了譯碼復(fù)雜度和性能間的良好折衷。
多級單元;低密度奇偶校驗碼;比特翻轉(zhuǎn)譯碼算法
NAND閃存作為一種非易失性存儲器,由于其體積小、容量大和功耗低等特點,已廣泛應(yīng)用于各種移動設(shè)備中。多級單元(Multi-Level Cell, MLC)技術(shù)成為提高NAND型閃存數(shù)據(jù)容量和降低成本的有效手段。然而,由于MLC單元內(nèi)部通過增加電壓等級(Voltage Level)數(shù)量來提高存儲密度,使得單元內(nèi)的閾值電壓分布窗口縮小。隨著閃存單元編程/擦除(Program/Erase, P/E)次數(shù)的增多導(dǎo)致MLC的氧化隔離層被破壞,進(jìn)而MLC閃存更容易發(fā)生讀寫錯誤。因此,MLC型NAND閃存的可靠性面臨嚴(yán)峻挑戰(zhàn)[1]。
BCH碼由于具有良好的糾錯能力,已經(jīng)廣泛應(yīng)用于單級單元(Single-Level Cell, SLC)NAND閃存中。但是,隨著NAND閃存封裝尺寸減小和MLC技術(shù)的應(yīng)用,BCH碼已不能滿足MLC型NAND閃存的可靠性要求。逼近香農(nóng)限的LDPC碼,由于其在迭代譯碼下?lián)碛蟹浅:玫募m錯性能,已成為提高M(jìn)LC型NAND閃存可靠性的研究方向之一[2-4]。LDPC碼的迭代譯碼算法包括軟判決譯碼算法和硬判決譯碼算法。文獻(xiàn)[5]利用閃存信道的統(tǒng)計信息獲得更好的LDPC碼軟判決譯碼性能。軟信息的精確計算能夠為LDPC碼譯碼提供更高的譯碼性能,但這也導(dǎo)致閃存控制器需要消耗的感知時間和譯碼時間增多,影響閃存單元的讀取速度。本文算法是將LDPC碼比特翻轉(zhuǎn)(Bit-Flipping, BF)硬判決譯碼算法應(yīng)用到NAND閃存中,該算法不但硬件實現(xiàn)簡單,還可以大幅減少譯碼時延從而加快數(shù)據(jù)讀取速度,為高密度NAND閃存提供更高效的差錯控制方案。
NAND閃存的最小存儲單元是帶浮柵(Floating Gate)的MOS晶體管。其中浮柵被氧化絕緣層隔離,電荷注入其中可以長期穩(wěn)定保存。浮柵中電荷數(shù)量決定閃存單元的閾值電壓,不同的閾值電壓可以映射為不同的狀態(tài),從而表示不同的數(shù)據(jù)[6]。傳統(tǒng)的閃存單元采用SLC,由浮柵中是否有電荷來表示“0”和“1”,因此,SLC中只存儲1 bit信息。MLC包含4個電壓等級,不同的閾值電壓水平表示不同數(shù)據(jù)(s0=11,s1=01,s2=00,s3=10),進(jìn)而存儲2 bit 信息(如圖1所示)。
MLC型NAND閃存芯片的層級組織結(jié)構(gòu)依次是:陣列(Array)、塊(Block)、頁(Page)和單元(MLC)。每個塊通常由16、32或者64頁構(gòu)成,而每頁大小從512 B~8 KB不等,頁是閃存編程和讀取的最小單位。
圖1 SLC和MLC閃存基本結(jié)構(gòu)圖
1.1MLC閾值電壓模型建立
MLC閃存在擦除操作之后閾值電壓服從高斯分布。因此用式(1)表示MLC閃存單元擦除狀態(tài)(Erase State)的閾值電壓分布(s0=11表示擦除狀態(tài))[7]:
(1)
其中,μe和δe是刪除狀態(tài)閾值電壓的均值和標(biāo)準(zhǔn)方差。
(2)
圖2 編程/校驗迭代編程操作
1.2噪聲模型的建立
μr=Ks(x-x0)KdN0.5ln(1+t/t0)
(3)
(4)
其中Ks、Kd、Km和t0為常量,N表示P/E循環(huán)次數(shù),x0表示擦除狀態(tài)下單元閾值電壓的初值,x表示編程后的閾值電壓,而t表示時間。
MLC閾值電壓模型參數(shù)設(shè)置為:擦除狀態(tài)閾值電壓分布概率密度函數(shù)ps0(x)的均值μe=1.4,標(biāo)準(zhǔn)差σe=0.4,迭代編程步長電壓增量ΔVpp=0.3 V,三個編程狀態(tài)的校驗電壓Vp分別為2.8 V、3.8 V和4.0 V。數(shù)據(jù)保持噪聲參數(shù)分別設(shè)置為Ks=0.38,x0=1.4,Kd=4×10-4,Km=4×10-6,t0=1 h,其中P/E循環(huán)次數(shù)N=10 000,數(shù)據(jù)保持時間t=1 year。
對10個閃存塊,每塊32頁,每頁17 260個MLC進(jìn)行100次蒙特卡洛仿真,統(tǒng)計得到加入數(shù)據(jù)保持噪聲的單元閾值電壓分布直方圖統(tǒng)計結(jié)果(如圖3所示),圖3(a)為無干擾的單元閾值電壓分布,圖3(b)為加入數(shù)據(jù)保持噪聲之后的MLC閃存閾值電壓分布。由圖3(b)分析可得,NAND閃存在加入隨機(jī)數(shù)據(jù)保持噪聲后,MLC閃存單元閾值電壓會發(fā)生波動,編程狀態(tài)的單元閾值電壓會向相鄰狀態(tài)發(fā)生偏移,相鄰的閾值電壓分布出現(xiàn)重疊區(qū)域,位于此區(qū)域的MLC單元在判決時出錯概率較高,進(jìn)而導(dǎo)致錯誤讀取存儲的數(shù)據(jù)。
圖3 MLC閃存加入數(shù)據(jù)保持噪聲后單元閾值電壓分布
2.1MLC閾值電壓的多精度感知
讀取閃存單元中數(shù)據(jù)需要對MLC單元閾值電壓感知。為了準(zhǔn)確地感知MLC閾值電壓,通常采用多精度的軟感知方法[7]。將每個閾值電壓狀態(tài)分布用若干個參考電壓均分成多個小區(qū)間,參考電壓越多,劃分的區(qū)間越窄,感知的閾值電壓越精確。通常將感知精度表示為p(p>2),對應(yīng)的參考電壓數(shù)量為2p-1,單元閾值電壓分布區(qū)間數(shù)量為2p。圖4為感知精度p=4時的閾值電壓區(qū)間均勻劃分。感知時從低電壓區(qū)間向高電壓區(qū)間逐個檢測,判斷MLC閾值電壓所在的區(qū)間,從而得到一個區(qū)間范圍[Rl,Rr)。
圖4 感知精度p=4時閾值電壓區(qū)間均勻劃分
對于每單元存儲2 bit的MLC,每個閃存單元有4個狀態(tài)(s0=11,s1=01,s2=00,s3=10),左側(cè)的比特稱為最高有效位(Most Significant Bit,MSB),右側(cè)的比特稱為最低有效位(Least Significant Bit,LSB),分別通過式(5)和式(6)計算出最高有效位MSB與最低有效位LSB的LLR值[7]。
(5)
(6)
2.2MLC閃存的比特翻轉(zhuǎn)譯碼算法
比特翻轉(zhuǎn)譯碼算法是基于LDPC碼的迭代譯碼算法,它具有較低的譯碼時間復(fù)雜度,比軟判決譯碼速度快的優(yōu)點,能有效縮短閃存單元的讀取時間[8-9]。同時在不同的數(shù)據(jù)保持噪聲干擾強(qiáng)度下,采用不同的閃存單元閾值電壓感知精度,可進(jìn)一步提升比特翻轉(zhuǎn)譯碼算法的譯碼性能。
具體步驟如下:
(1) 根據(jù)2.1節(jié)方法對MLC閃存單元閾值電壓進(jìn)行感知精度為p的感知,得到MLC的閾值電壓Vth。
(2) 通過式(5)和式(6)計算出Vth所對應(yīng)的MSB和LSB對應(yīng)LLR值。
(3) 比特信息的硬判決(i=0,1,…,N-1)。
(4) 計算校驗和,如果所有的校驗方程都滿足,則譯碼成功;否則,重復(fù)步驟(5)~(7)。
(5) 計算每一比特對應(yīng)“不滿足校驗方程的個數(shù)”,記作fi。
(6) 找出fi值最大的比特,對其進(jìn)行翻轉(zhuǎn)。
(7) 直到所有的校驗方程都滿足(譯碼成功)。若達(dá)到迭代次數(shù)設(shè)定的上限,增大感知精度p++(p≤5),轉(zhuǎn)步驟(1);否則譯碼失敗。
考慮到閃存存儲效率,一般選取高碼率的LDPC碼。為了在閃存信道中對LDPC碼比特翻轉(zhuǎn)譯碼算法進(jìn)行性能仿真,選取兩種碼率較大的QC-LDPC碼,該仿真實驗使用碼率為0.95(34 520,32 794)的C1和碼率為0.9 (34 520, 32 794)的C2,列重為4,環(huán)長為6,該碼避免了迭代譯碼過程中出現(xiàn)的短環(huán),可以提高迭代譯碼的性能,最大迭代次數(shù)為50。MLC信道模型參數(shù)和數(shù)據(jù)保持噪聲參數(shù)設(shè)置與1.2節(jié)相同。
圖5和圖6分別為感知精度p=3、4和5時BF譯碼算法在不同P/E次數(shù)下的性能圖,仿真結(jié)果表明:
(1) 在閃存信道下對于碼字C1和C2,LDPC碼比特翻轉(zhuǎn)譯碼算法能有效降低碼字的誤比特率,提高閃存存儲系統(tǒng)的可靠性。
(2) 在感知精度為p=3、4和5時,對應(yīng)的閾值電壓分布區(qū)間分別被劃分為8、16與32個小區(qū)間。在相同的P/E次數(shù)下,感知精度越高,即閃存單元閾值電壓分布中參考電壓越多,閾值電壓分布區(qū)間劃分越細(xì),相應(yīng)的LLR值越精確,比特翻轉(zhuǎn)譯碼算法的譯碼性能越好。
圖5 閃存信道中碼C1在BF譯碼算法下的譯碼性能
圖6 閃存信道中碼C2在BF譯碼算法下的譯碼性能
對閃存進(jìn)行P/E循環(huán)次數(shù)的增多,MLC的氧化隔離層被破壞成為影響MLC型NAND閃存可靠性的主要因素,本文提出了一種MLC型NAND閃存比特翻轉(zhuǎn)硬判決譯碼方法。該方法具有低的譯碼復(fù)雜度,而且易于工程實現(xiàn),同時達(dá)到譯碼復(fù)雜度和性能間的良好折衷。仿真結(jié)果驗證了所提出方法的有效性。
[1] CAI Y, HARATSCH E F, MUTLU O, et al. Error patterns in MLC NAND Flash memory: measurement, characterization, and analysis[J]. Seminars in Roentgenology, 2012, 5(3):245-259.
[2] WANG X, DONG G, PAN L, et al. Error correction codes and signal processing in Flash memory[M]. Flash Memories. In Tech, 2011.
[3] SALA F, IMMINK K A S, DOLECEK L. Error control schemes for modern Flash memories solutions for flash deficiencies[J]. IEEE Consumer Electronics Magazine, 2015, 4(1): 66-73.
[4] GUO J, WANG D, SHAO Z, et al. Data-pattern-aware error prevention technique to improve system reliability[J]. IEEE Transactions on Very Large Scale Integration Systems, 2017,25(4): 1433-1443.
[5] WANG J, DONG G, COURTADE T, et al. LDPC decoding with limited-precision soft information in Flash memories[J]. International Journal of Technology in Teaching & Learning, 2012:652-657.
[6] CAI Y, HARATSCH E F, MUTLU O, et al. Threshold voltage distribution in MLC NAND Flash memory: Characterization, analysis, and modeling[C].Design, Automation & Test in Europe Conference & Exhibition. IEEE, 2013: 1285- 1290.
[7] DONG G, XIE N, ZHANG T. On the use of soft-decision error-correction codes in NAND flash memories[J]. IEEE Transactions on Circuits and Systems I: Regular Papers, 2011, 58(2): 429-439.
[8] GALLAGER R. G. Low-density parity check codes[D]. Massachusetts: M.I.T. Press, 1963.
[9] 屠亮亮,徐榮青. 基于LDPC硬判決算法的高效數(shù)據(jù)協(xié)調(diào)方法[J].微型機(jī)與應(yīng)用, 2016,35(12):67-69.
Research on bit-flipping decoding algorithm for MLC NAND Flash memory
Zhang Xuan, Li Xiaoqiang
(Xi’an University of Technology, Xi’an 710082, China)
With the increase of the number of program/erase cycles, the oxide isolation layer of multi-level cell(MLC) is destroyed and the reliability of the flash memory is reduced sharply. By making a thorough analysis of MLC channel model and data retention noise, a bit-flipping decoding algorithm is presented for MLC NAND flash memory. The simulation results show that this method can ensure the reliability of flash memory, and has a short access time, so as to achieve a better tradeoff between decoding complexity and decoding performance.
multi-level cell; low-density parity-check codes; bit-flipping decoding algorithm
TP393.0
A
10.19358/j.issn.1674- 7720.2017.19.008
張旋,李曉強(qiáng).MLC型NAND閃存的比特翻轉(zhuǎn)譯碼算法研究[J].微型機(jī)與應(yīng)用,2017,36(19):27-29,33.
2017-04-12)
旋(1980-),男,碩士,講師,主要研究方向:計算機(jī)網(wǎng)絡(luò)與差錯控制編碼。李曉強(qiáng)(1980-),男,碩士,講師,主要研究方向:計算機(jī)網(wǎng)絡(luò)。