本發(fā)明涉及Nand Flash為存儲(chǔ)介質(zhì)的數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其是指一種基于Nand Flash的LDPC獲取軟信息譯碼方法及編譯碼器。
背景技術(shù):
目前,Nand Flash已經(jīng)成為數(shù)據(jù)存儲(chǔ)系統(tǒng)中最常用的存儲(chǔ)設(shè)備。但是,隨著存儲(chǔ)密度的增大和多位存儲(chǔ)技術(shù)的出現(xiàn),Nand Flash數(shù)據(jù)存儲(chǔ)的誤碼率越來越嚴(yán)重。ECC技術(shù)一直是確保Nand Flash數(shù)據(jù)存儲(chǔ)可靠性的關(guān)鍵技術(shù)。近幾年來,性能優(yōu)越的LDPC碼被提出應(yīng)用于Nand Flash上。軟信息譯碼的LDPC碼才能充分展示其接近香農(nóng)限的優(yōu)越性能。然而,目前要從Nand Flash中獲取軟信息并且傳輸仍然存在較大的困難而且實(shí)現(xiàn)的代價(jià)昂貴[1,2]。從Nand Flash中生成軟信息需要對Nand Flash進(jìn)行多次的讀取數(shù)據(jù)。該方案需要Nand Flash實(shí)現(xiàn)更加細(xì)粒度的軟判決存儲(chǔ)電平采樣,通過大量的讀取次數(shù)來實(shí)現(xiàn),這將導(dǎo)致嚴(yán)重的線上采樣延遲和傳輸延遲。同時(shí),細(xì)粒度采樣數(shù)據(jù)的暫時(shí)存儲(chǔ),需要更大的芯片緩存區(qū),增大芯片的面積。另外,準(zhǔn)確的計(jì)算似然概率,要求得到一個(gè)準(zhǔn)確有效的存儲(chǔ)單元閾值電壓分布模型[3],近幾年來有學(xué)者在構(gòu)造該電壓分布模型[4,5],但結(jié)果仍然不夠準(zhǔn)確。
也有學(xué)者提出通過Nand Flash的硬判決信息從輔助碼獲取軟信息的方案。文獻(xiàn)【6】提出通過CC碼給LDPC提供粗糙的軟信息;也有人搭建BCH+LDPC糾錯(cuò)架構(gòu),通過BCH輔助給LDPC提供軟信息。這兩種方案的輔助碼(CC、BCH)都采用檢錯(cuò)糾錯(cuò)方法給LDPC提供軟信息。然而,糾錯(cuò)將需要實(shí)現(xiàn)輔助碼的譯碼電路,在硬件上實(shí)現(xiàn)勢必耗費(fèi)很多資源,增大芯片面積。
參考文獻(xiàn):
[1]Guiqiang Dong,Ningde Xie,Tong Zhang.On the use of soft‐decision error correction codes in NAND flash memory[J].IEEE Transactions on Circuits and Systems,2011,58(2):429–439
[2]E.Yeo.An LDPC‐Enabled flash controller in 40nm CMOS[A].2012 Flash Memory Summit[C].Santa Clara,Calif:IEEE Press,2012.335‐360
[3]J.Wang,T.Courtade,H.Shankar,and R.Wesel.Soft information for LDPC decoding in flash:Mutual‐information optimized quantization[A].Global Telecommunications Conference(GLOBECOM 2011)[C].Hoston,USA:IEEE Press,2011:1–6
[4]Cai Y,Haratsch E F,Mutlu O,et al.Error patterns in MLC NAND flash memory:Measurement,characterization,and analysis[A].Design,Automation&Test in Europe Conference&Exhibition(DATE)[C].Dresden:IEEE Press,2012:521‐526
[5]Shi L,Qiu K,Zhao M,et al.Error model guided joint performance and endurance optimization for flash memory[J].IEEE Transactions on Computer‐Aided Design of Integrated Circuits and Systems,2014,33(3):343‐355
[6]M.N.Kaynak,P.R.Khayat and S.Parthasarathy,"Classification Codes for Soft Information Generation from Hard Flash Reads,"in IEEE Journal on Selected Areas in Communications,vol.32,no.5,pp.892‐899,May 2014.
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)和不足,提供了一種基于Nand Flash的LDPC獲取軟信息譯碼方法及編譯碼器,該方法以犧牲一定的冗余位保存檢錯(cuò)碼信息來獲取粗糙的軟信息,提高Nand Flash數(shù)據(jù)存儲(chǔ)的糾錯(cuò)性能。
為實(shí)現(xiàn)上述目的,本發(fā)明所提供的技術(shù)方案,如下:
一種基于Nand Flash的LDPC獲取軟信息譯碼方法,包括以下步驟:
1)獲取K個(gè)信息比特cm,m=1,2,...,K,K為信息比特長度,K位信息比特cm經(jīng)LDPC編碼得到N位編碼后的碼字xi,
xi=cm×G
其中,G為K×N的LDPC生成矩陣,i=1,2,...,N;
2)確定檢錯(cuò)碼的維度w、檢錯(cuò)碼的類型,對N位的碼字xi進(jìn)行分行列分塊生成相應(yīng)的檢錯(cuò)碼p1,p2,...,pw;
3)將N位的LDPC編碼后的碼字xi和檢錯(cuò)碼pt,t=1,2,...,w整個(gè)比特序列{xi|p1|p2|...|pw}寫入Nand Flash;
4)從Nand Flash獲取經(jīng)過硬判決的N位碼字Yi={0,1},i=1,2,...,N和檢錯(cuò)碼pt,按照檢錯(cuò)碼的維度w、檢錯(cuò)碼的類型對Yi進(jìn)行分行列分塊檢錯(cuò),得到各維度的檢錯(cuò)信息Q1,Q2,...,Qw;
5)通過對各維度的檢錯(cuò)信息Q1,Q2,...,Qw進(jìn)行分析,對N位碼字Yi={0,1}的每一位比特按可靠程度Dj,j=1,2,3...,2w進(jìn)行劃分,給予相應(yīng)的軟信息yi,i=1,2,...,N;不同可靠程度Dj都有一個(gè)相對應(yīng)的基準(zhǔn)值Drefj,j=1,2,...,2w;在基準(zhǔn)值基礎(chǔ)上再加上一個(gè)隨機(jī)偏移量Ri,i=1,2,...,N,模擬實(shí)際的軟信息輸入;其中,軟信息yi計(jì)算如下:
6)對N位的軟信息yi進(jìn)行軟判決迭代譯碼,每次迭代譯碼得到N位的譯碼結(jié)果zi,i=1,2,...,N,譯碼正確或者達(dá)到最大的迭代次數(shù)則跳到下面步驟7);若譯碼迭代次數(shù)達(dá)到預(yù)先設(shè)置的閾值f,則將N位zi替換Yi,回到上面步驟4),更新生成檢錯(cuò)信息Q1,Q2,...,Qw,進(jìn)而更新軟信息yi,重新迭代譯碼;
7)輸出譯碼結(jié)果zi,結(jié)束譯碼。
一種基于Nand Flash的編譯碼器,包括編碼部分和譯碼部分:
所述編碼部分包括:
LDPC編碼單元,將輸入的K位信息進(jìn)行編碼,得到包含檢驗(yàn)信息的N位碼字;
檢錯(cuò)碼生成單元,將N位的碼字按照選擇的維度w進(jìn)行分塊并生成相應(yīng)的檢錯(cuò)碼,然后將N位的碼字和檢錯(cuò)碼傳輸給Nand Flash;
所述譯碼部分包括:
檢錯(cuò)單元,將從Nand Flash得到的N位碼字和檢錯(cuò)碼按照選擇的維度w進(jìn)行相應(yīng)的檢錯(cuò),得到每個(gè)維度的檢錯(cuò)信息;
軟信息單元,通過多維檢錯(cuò)信息自適應(yīng)地對碼字的每一位產(chǎn)生相應(yīng)的軟信息以更新軟信息;
LDPC譯碼單元,接收軟信息單元的軟信息進(jìn)行軟判決迭代譯碼,并進(jìn)行校驗(yàn)判決輸出或者返回給檢錯(cuò)單元。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)與有益效果:
本發(fā)明基于Nand Flash獲取軟信息困難,代價(jià)昂貴情況,提供一種通過檢錯(cuò)碼(CRC、奇偶校驗(yàn)等)獲取軟信息的方法及編譯碼器,本發(fā)明以犧牲一定的冗余位保存檢錯(cuò)碼信息來獲取粗糙的軟信息,提高Nand Flash數(shù)據(jù)存儲(chǔ)的糾錯(cuò)性能。粗糙的軟信息譯碼相對LDPC無量化譯碼在性能方面有一定退化。本發(fā)明的編譯碼器主要從三個(gè)方面來減少性能退化:一是通過檢錯(cuò)單元維度、檢錯(cuò)碼類型有效合理選擇,使得到的軟信息更接近原始軟信息。二是通過軟信息單元對檢錯(cuò)信息可靠性程度的不同進(jìn)行相應(yīng)隨機(jī)產(chǎn)生軟信息,模擬原始軟信息的輸入。三是采用軟信息更新策略,通過自適應(yīng)地更新軟信息,重新迭代,使譯碼的誤碼率降低,提高譯碼性能。
附圖說明
圖1是本發(fā)明編譯碼器的架構(gòu)圖。
圖2是本發(fā)明的檢錯(cuò)碼生成單元示意圖。
圖3是本發(fā)明的檢錯(cuò)單元示意圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對本發(fā)明做進(jìn)一步的說明。
本實(shí)施例以(8608,8192)LDPC碼為例對本發(fā)明所提供的基于Nand Flash的LDPC獲取軟信息譯碼方法及編譯碼器進(jìn)行詳細(xì)的說明。
如圖1所示,所述編譯碼器由編碼部分和譯碼部分組成,編碼部分包括LDPC編碼單元、檢錯(cuò)碼生成單元,譯碼部分包括檢錯(cuò)單元、軟信息單元、LDPC譯碼單元。LDPC編碼單元主要將輸入的K位信息進(jìn)行編碼,得到包含檢驗(yàn)信息的N位碼字;檢錯(cuò)碼生成單元主要將N位的碼字按照選擇的維度(w)進(jìn)行分塊并生成相應(yīng)的檢錯(cuò)碼,然后將N位的碼字和檢錯(cuò)碼傳輸給Nand Flash;檢錯(cuò)單元將從Nand Flash得到的N位碼字和檢錯(cuò)碼按照選擇的維度(w)進(jìn)行相應(yīng)的檢錯(cuò),得到每個(gè)維度的檢錯(cuò)信息;軟信息單元主要通過多維檢錯(cuò)信息自適應(yīng)地對碼字的每一位產(chǎn)生相應(yīng)的軟信息以更新軟信息;LDPC譯碼單元主要接收軟信息單元的軟信息進(jìn)行軟判決迭代譯碼,并進(jìn)行校驗(yàn)判決輸出或者返回給檢錯(cuò)單元。
所述基于Nand Flash的LDPC獲取軟信息譯碼方法,包含以下步驟:
步驟1:獲取8192個(gè)信息比特cm(m=1,2,...,8192)。8192位信息比特cm經(jīng)LDPC編碼單元得到8608位編碼后的碼字xi(i=1,2,...,8608)。
xi=cm×G(G為8192×8608的LDPC生成矩陣)
步驟2:確定檢錯(cuò)碼的維度w=3,記為X、Y和Z維,如圖2所示。X維采用CRC4檢錯(cuò)碼,Y、Z維采用奇偶校驗(yàn)碼。對xi補(bǔ)全96個(gè)0構(gòu)成8704=68×128位比特,然后劃分為68行128列,同時(shí)將每4行16列劃分為一塊,共136塊。X維的校驗(yàn)碼生成為pXr(r=1,2,...,68),pXr生成過程如下:X維總共68行,每行128bits。對于第r行(r=1,2,...,68);CRC4的生成多項(xiàng)式取g(x)=x4+x+1;pXr=Remainder(Mr×x4/g(x))
(Mr表示第r行的信息,Remainder表示余式)。同理,Y維的校驗(yàn)碼生成為pYc(c=1,2,...,128);Z維的校驗(yàn)碼生成為pZs(s=1,2,...,136)。則有:
pX={pX1|pX2|···|pX68}
pY={pY1|pY2|···|pY128}
pZ={pZ1|pZ2|···|pZ136}
步驟3:將8608位的LDPC編碼后的碼字xi和檢錯(cuò)碼pt(t=X,Y,Z)整個(gè)比特序列{xi|pX|pY|pZ}寫入Nand Flash。
步驟4:從Nand Flash獲取經(jīng)過硬判決的8608位碼字Yi={0,1}(i=1,2,...,8608)和檢錯(cuò)碼pX,pY,pZ。按照檢錯(cuò)碼的維度w=3、檢錯(cuò)碼的類型(X維為CRC4、Y、Z維為奇偶校驗(yàn))對Yi補(bǔ)全96個(gè)0構(gòu)成8704=68×128位比特,然后劃分為68行128列,同時(shí)將每4行16列劃分為一塊,共136塊,如圖3所示。X、Y和Z維的檢錯(cuò)信息為:
QXr={true,false}(r=1,2,...,68)
QYc={true,false}(c=1,2,...,128)
QZs={true,false}(s=1,2,...,136)。
假設(shè)數(shù)據(jù)經(jīng)過閃存后出現(xiàn)兩個(gè)錯(cuò)誤(圖3所示的五角星處),假設(shè)錯(cuò)誤1在第2行(QX2)第63列(QY63)第4塊(QZ4),即檢錯(cuò)模塊會(huì)檢錯(cuò)到QX2==false,QY63==false,QZ4==false。錯(cuò)誤2在第5行(QX5)第23列(QY23)第10塊(QZ10),即檢錯(cuò)模塊會(huì)檢錯(cuò)到QX5==false,QY23==false,QZ10==false。其余的檢錯(cuò)信息為true。
步驟5:通過對各維度的檢錯(cuò)信息QX,QY,QZ進(jìn)行分析,對8608位碼字Yi={0,1}(i=1,2,...,8608)的每一位比特的可靠程度Dj(j=1,2,...,8)進(jìn)行劃分,給予相應(yīng)的軟信息yi(i=1,2,...,8608)。不同可靠程度Dj(j=1,2,...,8)都有一個(gè)相對應(yīng)的基準(zhǔn)值Drefj(j=1,2,...,8)。在基準(zhǔn)值基礎(chǔ)上加上一個(gè)隨機(jī)偏移量Ri(i=1,2,...,8608),模擬實(shí)際的軟信息輸入。軟信息yi計(jì)算如下:
步驟6:對8608位的軟信息yi(i=1,2,...,8608)進(jìn)行軟判決迭代譯碼,每次迭代譯碼得到8608位的譯碼結(jié)果zi(i=1,2,...,8608),譯碼正確或者達(dá)到最大的迭代次數(shù)則跳到步驟7)。否則譯碼迭代次數(shù)達(dá)到預(yù)先設(shè)置的閾值f,將8608位zi替換Yi,回到步驟4),更新生成檢錯(cuò)信息QX,QY,QZ,進(jìn)而更新軟信息QX,QY,QZ,重新迭代譯碼,使譯碼的誤碼率降低,提高譯碼性能。
步驟7:輸出譯碼結(jié)果zi,結(jié)束譯碼。
在上述步驟過程中,LDPC編碼單元完成步驟1,完成對信息的編碼操作;檢錯(cuò)碼生成單元主要完成步驟2和步驟3,產(chǎn)生相應(yīng)的檢錯(cuò)碼,把檢錯(cuò)碼和碼字一起寫入Nand Flash;檢錯(cuò)單元完成步驟4,產(chǎn)生相應(yīng)的檢錯(cuò)信息;軟信息單元完成步驟5,主要負(fù)責(zé)將檢錯(cuò)信息自適應(yīng)地生成相應(yīng)的軟信息以更新軟信息;LDPC譯碼單元主要完成步驟6和步驟7,基于軟信息進(jìn)行迭代譯碼,結(jié)合軟信息更新策略,使譯碼的誤碼率降低,提高譯碼性能。
本發(fā)明通過檢錯(cuò)碼方法給LDPC生成粗糙軟信息。然而,粗糙軟信息譯碼相對LDPC原始軟信息譯碼在性能方面有一定退化。本發(fā)明編譯碼器主要從以下三個(gè)方面來減少性能退化。
(1)檢錯(cuò)碼維度、類型的合理選擇
本發(fā)明通過檢錯(cuò)碼來生成粗糙軟信息,用來模擬原始軟信息的輸入。為了減少譯碼性能的退化,就盡可能地使生成的粗糙軟信息更接近原始軟信息。本發(fā)明是通過不同維度的檢錯(cuò)碼的檢錯(cuò)信息來生成軟信息,通過合理選擇檢錯(cuò)碼的維度以及檢錯(cuò)碼的類型,使之盡可能接近原始軟信息。
如果選擇的維度較少(例如2維),檢錯(cuò)碼檢錯(cuò)能力差(例如奇偶檢驗(yàn)(偶數(shù)個(gè)錯(cuò)誤無法檢錯(cuò)))的方案,則碼率較高,但譯碼性能較差;如果選擇的維度較高(例如5維),檢錯(cuò)碼檢錯(cuò)能力強(qiáng)(例如CRC16)的方案,則譯碼性能較好,但碼率降低。可見,可以通過檢錯(cuò)碼的維度和類型的合理選擇,在這兩種方案中折中,使得到的軟信息更接近原始軟信息的較高碼率的譯碼方案。
(2)自適應(yīng)生成軟信息
盡可能模擬原始軟信息的輸入,是減少性能退化的方法。本發(fā)明通過對各維度的檢錯(cuò)信息QX,QY,QZ進(jìn)行綜合分析,對于碼字的每一位比特,在各個(gè)維度上都對應(yīng)一個(gè)檢錯(cuò)信息值{true,false}兩種情況。則對于w=3維檢錯(cuò)信息,就會(huì)有8種可靠性Dj(j=1,2,...,8)。碼字Yi={0,1}(i=1,2,...,8608)對應(yīng)每個(gè)維度的檢錯(cuò)信息為:QX,QY,QZ。獲取可靠程度Dj(j=1,2,...,8)方法如下:
以AWGN信道模擬Nand Flash信道,給每個(gè)可靠性Dj(j=1,2,...,8)確定一個(gè)相對應(yīng)的基準(zhǔn)值Drefj(j=1,2,...,8)。編碼后的比特經(jīng)過BPSK調(diào)整后,0、1映射為1、-1。Drefj(j=1,2,...,8)取值如下:
在基準(zhǔn)值基礎(chǔ)上加上一個(gè)隨機(jī)偏移量Ri(i=1,2,...,8608),給予碼字每個(gè)信息比特相應(yīng)的軟信息yi(i=1,2,...,8608),模擬實(shí)際的軟信息輸入。軟信息yi計(jì)算如下:
隨機(jī)偏移量Ri的選擇,應(yīng)盡可能保持yi在相應(yīng)可靠性基準(zhǔn)值Dref附近,此處選擇Ri<0.2的隨機(jī)正數(shù)。本發(fā)明通過在基準(zhǔn)值基礎(chǔ)上,加入隨機(jī)偏移量,更好的模擬原始的軟信息,在一定程度上有效地減少性能退化。
(3)軟信息更新策略
通過檢錯(cuò)碼生成的軟信息是粗糙的,本發(fā)明采用軟信息更新策略,通過自適應(yīng)地更新軟信息,重新迭代,使譯碼的誤碼率降低,提高譯碼性能。LDPC譯碼單元設(shè)置一個(gè)迭代次數(shù)的閾值f,當(dāng)譯碼單元迭代到閾值還沒校驗(yàn)成功輸出碼字,將8608位譯碼結(jié)果zi替換Yi,傳回檢錯(cuò)單元,更新生成檢錯(cuò)信息QX,QY,QZ,進(jìn)而更新軟信息yi(i=1,2,...,8608),重新迭代譯碼。通過軟信息更新策略,在一定程度上有效地減少性能退化。
以上所述實(shí)施例只為本發(fā)明之較佳實(shí)施例,并非以此限制本發(fā)明的實(shí)施范圍,故凡依本發(fā)明之形狀、原理所作的變化,均應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。