本發(fā)明專利技術公開了一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法,隨著NAND閃存存儲密度的提升,每個單元存儲較多的比特信息,單元之間的耦合干擾較強烈,造成嚴重的編程干擾錯誤,使得傳統(tǒng)的BCH碼不足以保證數據的可靠性,LDPC碼具有優(yōu)于BCH碼的糾錯性能而被應用于NAND閃存存儲系統(tǒng)中。使用被優(yōu)化的LDPC譯碼算法具有重要意義?,F已觀察,編程干擾錯誤具有數值相關性特征,當進行LDPC譯碼時,編程干擾錯誤的數值相關性特征能夠被融入到LDPC譯碼過程,為比特判決提供一種額外的信息以此提高比特判決精度和譯碼收斂速度,從而降低LDPC譯碼延遲。
【技術實現步驟摘要】
本專利技術屬于固態(tài)盤存儲
,更具體地,涉及一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法。
技術介紹
基于NAND閃存的固態(tài)盤(SolidStateDisk,簡稱SSD)具有高性能,大容量,抗震動,低功耗和非易失等優(yōu)點被廣泛應用于計算機存儲系統(tǒng)。固態(tài)盤SSD以NAND閃存(NANDflash)作為存儲介質,隨著NAND閃存制程工藝的提升,每個單元存儲較多的比特信息,比如MLCNAND閃存每個單元存儲兩比特信息,單元中存儲較少的電荷且單元之間的距離較近,單元之間的耦合干擾較為強烈,當對NAND閃存中某一個頁執(zhí)行編程操作時,會對鄰近的頁造成干擾,引起鄰近頁的存儲單元閾值電壓發(fā)生變化,閾值電壓從一個狀態(tài)轉移到另一個狀態(tài),當執(zhí)行讀操作時,由于編程干擾的影響發(fā)生比特錯誤,數據的可靠性遭到破壞。為了保證數據可靠性,糾錯碼(Errorcorrectioncode,簡稱ECC)被運用到NAND閃存的控制器中,如BCH碼和LDPC碼,傳統(tǒng)的方法采用BCH碼以保證數據可靠性。但是,NAND閃存的存儲容量越來越大,存儲單元之間的電容耦合更為強烈,編程干擾引起的比特錯誤率越來越高,BCH碼不足以勝任保證數據可靠性,此時,需要采用糾正能力更強的糾錯碼,LDPC碼以優(yōu)于BCH碼的糾錯性能被應用于NAND閃存。LDPC碼是一種線性分組碼,它的糾錯性質被一種稱為稀疏性的檢驗矩陣所決定,所謂稀疏檢驗矩陣就是矩陣中0的數量遠遠多于1的數量,矩陣中的每一行對應一個檢驗方程(也被稱為檢驗節(jié)點),每一行對應一個比特節(jié)點(與碼字中的每個比特對應),檢驗矩陣能夠形象的被Tanner圖所表示(如圖1和圖2所示),Tanner圖中的Ci(1≤i≤m)與檢驗矩陣中的行相對應,Tanner圖中的Vj(1≤j≤m)與檢驗矩陣中的列相對應,如果檢驗矩陣中的第i行和第j列是1,那么Tanner圖中Ci和Vj之間有一條邊相連。當進行LDPC譯碼時,這些邊用來傳遞譯碼所需要的可靠性信息(比特正確與否的概率信息)。LDPC譯碼是一種可靠性信息傳播的過程,是一種軟判決譯碼,具有較為復雜的譯碼結構,如果直接的使用LDPC碼會帶來較大譯碼延遲開銷,如果能夠將NAND閃存的錯誤模式融合到LDPC譯碼過程中,利用NAND閃存介質本身的錯誤特征為LDPC譯碼提供判斷比特正確性的額外信息,那么,這樣能夠提升LDPC譯碼的判決精度和收斂速度,降低譯碼延遲開銷。另外,我們得知NAND閃存的編程干擾錯誤具有數值相關性特征,即MLCNAND閃存單元中存儲的不同狀態(tài)的比特數據當有編程干擾存在時會表現出不同的錯誤率(如圖3所示),主要的編程干擾錯誤是11→10和10→01,它們的比例分別是70%和24%,其他的編程干擾錯誤是10→00,11→01和01→00,它們相對的比例分別是2.2%,1.5%和0.4%。當進行LDPC譯碼時,這些特征被融入到譯碼過程,為比特判決提供額外的信息以此提高譯碼精度降低譯碼延遲?,F有的LDPC譯碼算法有概率域置信傳播算法,最小和譯碼算法等?,F有的LDPC譯碼算法存在以下幾個明顯的不足之處:1、現有的LDPC譯碼算法只考慮內部的信息傳遞沒有充分利用flash本身的錯誤模式特征,具有較高的譯碼復雜度和較大的譯碼延遲開銷;2、現有的LDPC譯碼算法沒有考慮編程干擾錯誤的數值相關性特征的影響,沒有將這種有利特征融入到LDPC譯碼信息更新過程;3、現有的LDPC譯碼算法沒有額外的判決信息提供,單純的依靠譯碼機制本身的特性進行信息更新。
技術實現思路
針對現有技術的以上缺陷或改進需求,本專利技術提供了一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法,其目的在于,通過將編程干擾錯誤的數值相關性特征融入到LDPC譯碼過程中,為比特判決提供額外的信息,有效的提高了LDPC譯碼準確性降低了譯碼延遲開銷,進而提高系統(tǒng)的讀性能和延長SSD的壽命。為實現上述目的,按照本專利技術的一個方面,提供了一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法,包括以下步驟:(1)隨機生成檢驗矩陣H,其元素為0或1,碼率介于0.75至0.9之間,且不存在短環(huán)現象;其中檢驗矩陣的行數m是通過(SSD頁面大小/(SSD頁面大小+m))=碼率獲得,檢驗矩陣的列數是SSD頁面大小+m;(2)根據生成的檢驗矩陣H生成列向量(碼字)使其滿足其中列向量中的后m個記為冗余位,剩余的記為信息位;(3)根據生成的校驗矩陣H和列向量構造對應的Tanner圖,其體現了檢驗方程C1,C2,…,Cm與列向量之間的映射關系;(4)使用0和1對列向量中的元素V1到Vn-m進行隨機賦值,并使用公式計算獲得的列向量中的元素Vn-m到Vn的值,從而生成多個列向量,并將這些生成的列向量包括依次以順序寫的方式存入SSD的頁面中一直到頁面存滿為止;(5)將被寫入到SSD的頁面中的多個列向量依次讀出進行糾錯,其中記發(fā)生錯誤的列向量為該列向量為(6)獲取列向量中每個元素的初始可靠性信息,并根據可靠性信息將每個元素轉換為二進制,即將可靠性信息為負值的元素轉換為1,將可靠性信息為正值的元素轉換為0,從而獲得新的列向量(7)將校驗矩陣H和列向量相乘,并判斷相乘后生成的每個檢驗方程是否均為零向量,如果是則將列向量輸出給用戶,過程結束,否則轉入步驟(8);(8)根據步驟(6)中獲得的列向量中每個元素初始可靠性信息Ij,對每個碼字比特進行初始化賦值為其中當進行譯碼第一次迭代時,獲取的變量節(jié)點可靠性信息即為初始值Ij,Vij′k=Ij(1≤i≤m,1≤j≤n,i∈R(j),j∈Q(i))]]>其中i∈R(j)表示與變量節(jié)點Vj相連的所有檢驗節(jié)點Ci的集合,j∈Q(i)表示與檢驗節(jié)點Ci相連的所有變量節(jié)點Vj的集合;(9)設置計數器k=1;(10)判斷k是否小于預設最大迭代次數Tmax,如果是,則轉入步驟(11),如果否,則過程結束,將最終的碼字向量輸出,并向用戶提示譯碼失??;(11)根據步驟(8)對初始變量節(jié)點賦值并使用以下公式進行檢驗節(jié)點可靠性信息更新:Cijk=Πm∈Q(i)\\jsgn(Vim′k)·min{|Vim′k|:m∈Q(i)\\j本文檔來自技高網...
【技術保護點】
一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法,其特征在于,包括以下步驟:(1)隨機生成檢驗矩陣H,其元素為0或1,碼率介于0.75至0.9之間,且不存在短環(huán)現象;其中檢驗矩陣的行數m是通過(SSD頁面大小/(SSD頁面大小+m))=碼率獲得,檢驗矩陣的列數是SSD頁面大小+m;(2)根據生成的檢驗矩陣H生成列向量(碼字)使其滿足其中列向量中的后m個記為冗余位,剩余的記為信息位;(3)根據生成的校驗矩陣H和列向量構造對應的Tanner圖,其體現了檢驗方程C1,C2,…,Cm與列向量之間的映射關系;(4)使用0和1對列向量中的元素V1到Vn?m進行隨機賦值,并使用公式計算獲得的列向量中的元素Vn?m到Vn的值,從而生成多個列向量,并將這些生成的列向量包括依次以順序寫的方式存入SSD的頁面中一直到頁面存滿為止;(5)將被寫入到SSD的頁面中的多個列向量依次讀出進行糾錯,其中記發(fā)生錯誤的列向量為該列向量為(6)獲取列向量中每個元素的初始可靠性信息,并根據可靠性信息將每個元素轉換為二進制,即將可靠性信息為負值的元素轉換為1,將可靠性信息為正值的元素轉換為0,從而獲得新的列向量(7)將校驗矩陣H和列向量相乘,并判斷相乘后生成的每個檢驗方程是否均為零向量,如果是則將列向量輸出給用戶,過程結束,否則轉入步驟(8);(8)根據步驟(6)中獲得的列向量中每個元素初始可靠性信息Ij,對每個碼字比特進行初始化賦值為其中當進行譯碼第一次迭代時,獲取的變量節(jié)點可靠性信息即為初始值Ij,Vij′k=Ij,(1≤i≤m,1≤j≤n,i∈R(j),j∈Q(i))]]>其中i∈R(j)表示與變量節(jié)點Vj相連的所有檢驗節(jié)點Ci的集合,j∈Q(i)表示與檢驗節(jié)點Ci相連的所有變量節(jié)點Vj的集合;(9)設置計數器k=1;(10)判斷k是否小于預設最大迭代次數Tmax,如果是,則轉入步驟(11),如果否,則過程結束,將最終的碼字向量輸出,并向用戶提示譯碼失敗;(11)根據步驟(8)對初始變量節(jié)點賦值并使用以下公式進行檢驗節(jié)點可靠性信息更新:Cijk=Πm∈Q(i)\jsgn(Vim′k)·min{|Vim′k|:m∈Q(i)\j}]]>其中為符號函數,Q(i)\j表示與檢驗節(jié)點Ci相連的所有比特節(jié)點中排除Vj的集合。(12)判斷步驟(11)中檢驗節(jié)點更新是否結束,如果否,則返回步驟(11),如果是,則進入步驟(13);(13)根據步驟(12)中已經被更新的檢驗節(jié)點可靠性信息采用以下公式進行變量節(jié)點可靠性信息更新:Vij′k=Yj+Σn∈R(j)\iCnjk+Aj,]]>其中Aj是由flash編程干擾錯誤的數值相關性提供的額外比特判決信息,被融入到變量節(jié)點可靠性信息更新過程,其中R(j)\i表示與Vj相連的所有檢驗節(jié)點中排除Ci的集合,變量節(jié)點的可靠性信息表示為:當該檢驗方程成立時與之相連的變量節(jié)點等于0或1的概率;(14)判斷步驟(13)中的變量節(jié)點可靠性信息更新是否結束,如果否,則返回步驟(13),如果是,則進入步驟(15);(15)使用以下公式對檢驗節(jié)點進行譯碼判決:Vj′k=Yj+Σi∈R(j)Cijk+Aj]]>(16)根據步驟(15)譯碼判決的結果獲得每個碼字比特所對應的可靠性信息(17)對步驟(16)中獲得的可靠性信息進行硬判決,即判斷是否有如果是則將0賦值給aj,然后轉入步驟(18),否則將1賦值給aj,然后轉入步驟(18);(18)根據步驟(17)中硬判決的結果獲得被判決的碼字向量(19)檢驗步驟(18)中生成的碼字向量是否滿足檢驗方程其中H為(1)中生成的檢驗矩陣,如果滿足,則直接輸出碼字向量過程結束,如果不滿足則將迭代次數k逐次加1,并返回步驟(10)繼續(xù)迭代操作,直到滿足為止。...
【技術特征摘要】
1.一種基于flash編程干擾錯誤感知的LDPC譯碼優(yōu)化方法,其特征在于,包括以下步驟:(1)隨機生成檢驗矩陣H,其元素為0或1,碼率介于0.75至0.9之間,且不存在短環(huán)現象;其中檢驗矩陣的行數m是通過(SSD頁面大小/(SSD頁面大小+m))=碼率獲得,檢驗矩陣的列數是SSD頁面大小+m;(2)根據生成的檢驗矩陣H生成列向量(碼字)使其滿足其中列向量中的后m個記為冗余位,剩余的記為信息位;(3)根據生成的校驗矩陣H和列向量構造對應的Tanner圖,其體現了檢驗方程C1,C2,…,Cm與列向量之間的映射關系;(4)使用0和1對列向量中的元素V1到Vn-m進行隨機賦值,并使用公式計算獲得的列向量中的元素Vn-m到Vn的值,從而生成多個列向量,并將這些生成的列向量包括依次以順序寫的方式存入SSD的頁面中一直到頁面存滿為止;(5)將被寫入到SSD的頁面中的多個列向量依次讀出進行糾錯,其中記發(fā)生錯誤的列向量為該列向量為(6)獲取列向量中每個元素的初始可靠性信息,并根據可靠性信息將每個元素轉換為二進制,即將可靠性信息為負值的元素轉換為1,將可靠性信息為正值的元素轉換為0,從而獲得新的列...
【專利技術屬性】
技術研發(fā)人員:吳非,謝長生,張猛,馬瑞祥,
申請(專利權)人:華中科技大學,
類型:發(fā)明
國別省市:湖北;42
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。