一種固態(tài)盤(pán)自適應(yīng)糾錯(cuò)方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于固態(tài)盤(pán)糾錯(cuò)技術(shù)領(lǐng)域,具體地,涉及一種固態(tài)盤(pán)自適應(yīng)糾錯(cuò)方法與系 統(tǒng)。
【背景技術(shù)】
[0002] 隨著日常生活中各種電子設(shè)備的普及,固態(tài)盤(pán)作為一種存儲(chǔ)設(shè)備被廣泛使用,保 證固態(tài)盤(pán)中數(shù)據(jù)的安全顯得日益重要。作為保證數(shù)據(jù)安全重要措施的糾錯(cuò)碼如何發(fā)揮最大 效率非常重要。
[0003] 固態(tài)盤(pán)內(nèi)部的閃存芯片制造工藝已經(jīng)發(fā)展到10納米的水平,意味著閃存芯片內(nèi) 部的單元尺寸越來(lái)越小,噪聲也相應(yīng)的增加,需要更加強(qiáng)大的糾錯(cuò)碼。閃存芯片有多個(gè)結(jié)構(gòu) 層次構(gòu)成,最小的讀寫(xiě)單位是頁(yè)(Page),多個(gè)頁(yè)構(gòu)成一個(gè)塊(Block)。閃存芯片在寫(xiě)入數(shù)據(jù) 前要先進(jìn)行擦除操作,擦除單位是塊。擦除后的塊成為空白區(qū)域,可以寫(xiě)入相關(guān)的數(shù)據(jù)信 息。從閃存讀取數(shù)據(jù)時(shí)必須經(jīng)過(guò)糾錯(cuò)碼譯碼過(guò)程,以保證讀出的數(shù)據(jù)是可靠的數(shù)據(jù)。如果 數(shù)據(jù)出現(xiàn)錯(cuò)誤,則用糾錯(cuò)碼進(jìn)行糾錯(cuò)改正。另外,在不同時(shí)期閃存芯片受到的噪聲干擾也不 同,因而數(shù)據(jù)出錯(cuò)率也不同。普遍規(guī)律下,早期的閃存芯片出錯(cuò)率非常低,到后期隨著擦寫(xiě) 次數(shù)的增加,數(shù)據(jù)保存時(shí)間的增長(zhǎng),數(shù)據(jù)出錯(cuò)率也相應(yīng)的增長(zhǎng)。
[0004] 低密度奇偶校驗(yàn)碼(Low-Density Parity-Check code,LDPC)具有強(qiáng)大的糾錯(cuò)能 力。LDPC主要由編碼器和譯碼器構(gòu)成。編碼器負(fù)責(zé)將寫(xiě)入閃存的數(shù)據(jù)進(jìn)行編碼生成LDPC 碼字。LDPC碼字由原始數(shù)據(jù)和LDPC校驗(yàn)信息構(gòu)成。譯碼器則負(fù)責(zé)對(duì)LDPC碼字進(jìn)行譯碼 糾錯(cuò)。譯碼器主要有兩種結(jié)果輸出:一是譯碼成功,說(shuō)明輸出的數(shù)據(jù)沒(méi)有錯(cuò)誤;二是譯碼失 敗,說(shuō)明LDPC譯碼器不能糾正LDPC碼字中的錯(cuò)誤,輸出的數(shù)據(jù)含有錯(cuò)誤信息。不同的LDPC 碼率具有不同的糾錯(cuò)性能,碼率越高糾錯(cuò)能力越弱。高碼率LDPC碼作為弱LDPC碼,其糾錯(cuò) 能力不如低碼率LDPC碼。通常情況下,固態(tài)盤(pán)使用最強(qiáng)糾錯(cuò)能力的LDPC碼,以保證固態(tài)盤(pán) 在最壞情況下的數(shù)據(jù)安全,這樣就存在最強(qiáng)LDPC糾錯(cuò)碼糾錯(cuò)能力冗余現(xiàn)象,也會(huì)影響固態(tài) 盤(pán)的讀寫(xiě)性能,造成固態(tài)盤(pán)糾錯(cuò)能耗的浪費(fèi)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是根據(jù)固態(tài)盤(pán)內(nèi)部閃存芯片數(shù)據(jù)出錯(cuò)情況不同,采用合適糾錯(cuò)能力 的LDPC碼進(jìn)行糾錯(cuò),達(dá)到提高LDPC碼糾錯(cuò)效能的目的,減少單一 LDPC碼糾錯(cuò)性能的冗余, 同時(shí)提高固態(tài)盤(pán)的讀性能并減少其譯碼能耗。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明構(gòu)建了一種自動(dòng)切換弱LDPC碼和強(qiáng)LDPC碼的方法,減 少了只使用強(qiáng)LDPC碼而產(chǎn)生的LDPC糾錯(cuò)性能的冗余,同時(shí)減少了固態(tài)盤(pán)使用LDPC碼的糾 錯(cuò)能耗,并提高了固態(tài)盤(pán)使用不同LDPC碼進(jìn)行糾錯(cuò)的準(zhǔn)確度,保證了固態(tài)盤(pán)內(nèi)部數(shù)據(jù)的可 靠性。本發(fā)明將高碼率LDPC碼作為弱LDPC碼,低碼率LDPC碼作為強(qiáng)LDPC碼。
[0007] 按照本發(fā)明的一個(gè)方面,提供了一種固態(tài)盤(pán)自適應(yīng)糾錯(cuò)方法,包括如下步驟:
[0008] (1)初始化:固態(tài)盤(pán)在輸入數(shù)據(jù)前,進(jìn)行塊擦除操作,以便寫(xiě)入數(shù)據(jù),并初始化所 有擦除塊的糾錯(cuò)碼標(biāo)識(shí)符Bi = 0,其中i = 0, 1,···,η,η表示固態(tài)盤(pán)擦除塊的數(shù)量;
[0009] (2)固態(tài)盤(pán)自適應(yīng)糾錯(cuò)編碼,包括:
[0010] (2. 1)當(dāng)一頁(yè)原始數(shù)據(jù)R被寫(xiě)入固態(tài)盤(pán)閃存芯片時(shí),根據(jù)弱LDPC碼的生成矩陣G1 對(duì)原始數(shù)據(jù)R進(jìn)行編碼得到碼字C1 = RX G i,碼字C1去掉原始數(shù)據(jù)R得到弱LDPC碼校驗(yàn)信 息P1;
[0011] (2.2)由強(qiáng)LDPC碼的生成矩陣62對(duì)一頁(yè)原始數(shù)據(jù)R編碼生成碼字
[0012] C2= RXG2,碼字C2去掉原始數(shù)據(jù)R得到強(qiáng)LDPC碼校驗(yàn)信息P2;
[0013] (2. 3) -頁(yè)原始數(shù)據(jù)R和P1,匕組成一頁(yè)的碼字C = (R,P i,P2);
[0014] (2. 4)將生成的碼字C寫(xiě)入閃存芯片中;
[0015] (3)固態(tài)盤(pán)譯碼過(guò)程,包括:
[0016] (3. 1)判斷是否有讀操作,如果有讀操作則轉(zhuǎn)向(3. 2),否則結(jié)束;
[0017] (3. 2)判斷讀取頁(yè)所在塊i的糾錯(cuò)碼標(biāo)識(shí)符Bi是否為0 ;
[0018] (3. 3)如果&為0,則塊i內(nèi)所有頁(yè)采用弱LDPC碼進(jìn)行糾錯(cuò);
[0019] (3. 4)固態(tài)盤(pán)自適應(yīng)糾錯(cuò)碼切換操作,包括:
[0020] (3. 4. 1)如果塊i中一頁(yè)使用弱LDPC碼糾錯(cuò)失敗,賦值塊i的糾錯(cuò)碼標(biāo)識(shí)符Bi = 1,并轉(zhuǎn)到步驟(3.5);
[0021] (3. 4. 2)如果塊i使用強(qiáng)LDPC碼進(jìn)行糾錯(cuò)后,如果塊i被擦除,賦值塊i的糾錯(cuò)碼 標(biāo)識(shí)符Bi= 0,并轉(zhuǎn)到步驟(3. 2);
[0022] (3. 5)如果&為1,則塊i內(nèi)所有頁(yè)采用強(qiáng)LDPC碼進(jìn)行糾錯(cuò)。
[0023] 按照本發(fā)明的另一方面,還提供了一種固態(tài)盤(pán)自適應(yīng)糾錯(cuò)系統(tǒng),所述系統(tǒng)包括如 下模塊:固態(tài)盤(pán)初始化模塊、自適應(yīng)糾錯(cuò)編碼模塊、固態(tài)盤(pán)譯碼模塊,其中:
[0024] 所述固態(tài)盤(pán)初始化模塊,用于在輸入數(shù)據(jù)前,對(duì)固態(tài)盤(pán)進(jìn)行塊擦除操作,以便寫(xiě)入 數(shù)據(jù),并初始化所有擦除塊的糾錯(cuò)碼標(biāo)識(shí)符B i= 0,其中i = 0, 1,…,η,η表示固態(tài)盤(pán)擦除 塊的數(shù)量;
[0025] 所述固態(tài)盤(pán)自適應(yīng)糾錯(cuò)編碼模塊,用于對(duì)原始數(shù)據(jù)進(jìn)行自適應(yīng)糾錯(cuò)編碼,具體 地:當(dāng)一頁(yè)原始數(shù)據(jù)R被寫(xiě)入固態(tài)盤(pán)閃存芯片時(shí),根據(jù)弱LDPC碼的生成矩陣G 1對(duì)原始數(shù)據(jù) R進(jìn)行編碼得到碼字C1= RXG i,碼字C1去掉原始數(shù)據(jù)R得到弱LDPC碼校驗(yàn)信息P 1;由強(qiáng) LDPC碼的生成矩陣62對(duì)一頁(yè)原始數(shù)據(jù)R編碼生成碼字C 2= RXG 2,碼字C2去掉原始數(shù)據(jù)R 得到強(qiáng)LDPC碼校驗(yàn)信息P2;-頁(yè)原始數(shù)據(jù)R和P1Jji成一頁(yè)的碼字C= (R,Pi,P2);將生 成的碼字C寫(xiě)入閃存芯片中;
[0026] 所述固態(tài)盤(pán)譯碼模塊,包括讀判斷模塊、糾錯(cuò)碼識(shí)別模塊、弱LDPC碼糾錯(cuò)模塊、自 適應(yīng)糾錯(cuò)碼切換模塊以及強(qiáng)LDPC碼糾錯(cuò)模塊,其中:
[0027] 所述讀判斷模塊,用于判斷是否有讀操作,如果有讀操作則轉(zhuǎn)向(3. 2),否則結(jié) 束;
[0028] 所述糾錯(cuò)碼識(shí)別模塊,用于判斷讀取頁(yè)所在塊i的糾錯(cuò)碼標(biāo)識(shí)符Bi是否為0 ;
[0029] 所述弱LDPC碼糾錯(cuò)模塊,用于如果&為0,則對(duì)塊i內(nèi)所有頁(yè)采用弱LDPC碼進(jìn)行 糾錯(cuò);
[0030] 所述自適應(yīng)糾錯(cuò)碼切換模塊,用于執(zhí)行固態(tài)盤(pán)自適應(yīng)糾錯(cuò)碼切換操作,具體為:如 果塊i中一頁(yè)使用弱LDPC碼糾錯(cuò)失敗,賦值塊i的糾錯(cuò)碼標(biāo)識(shí)符&= 1,并轉(zhuǎn)到所述強(qiáng)LDPC 碼糾錯(cuò)模塊;如果塊i使用強(qiáng)LDPC碼進(jìn)行糾錯(cuò)后,如果塊i被擦除,賦值塊i的糾錯(cuò)碼標(biāo)識(shí) 符Bi= 0,并轉(zhuǎn)到所述糾錯(cuò)碼識(shí)別模塊;
[0031] 所述強(qiáng)LDPC碼糾錯(cuò)模塊,用于如果&為1,則對(duì)塊i內(nèi)所有頁(yè)采用強(qiáng)LDPC碼進(jìn)行 糾錯(cuò)。
[0032] 綜上所述,本發(fā)明技術(shù)方案的有益效果是:
[0033] 提出了一種固態(tài)盤(pán)自適應(yīng)LDPC糾錯(cuò)優(yōu)化方法,該方法能夠根據(jù)固態(tài)盤(pán)出錯(cuò)率的 不同在強(qiáng)弱兩種LDPC糾錯(cuò)碼間進(jìn)行自動(dòng)切換。與傳統(tǒng)的只使用單一的LDPC糾錯(cuò)碼方法相 比,能夠有效發(fā)揮不同的LDPC糾錯(cuò)碼的糾錯(cuò)性能,減少單一 LDPC糾錯(cuò)碼引起的糾錯(cuò)性能 冗余,用此方法對(duì)固態(tài)盤(pán)進(jìn)行糾錯(cuò)可以有效提高讀性能。因?yàn)槭褂酶叽a率LDPC糾錯(cuò)碼時(shí), 生成的碼字長(zhǎng)度明顯變小,引起的閾值電壓感知時(shí)間,碼字傳輸時(shí)間,譯碼時(shí)間都有相應(yīng)減 少。同時(shí)相對(duì)于單一的LDPC糾錯(cuò)碼,自適應(yīng)LDPC糾錯(cuò)方法的譯碼能耗也能大幅的降低。
【附圖說(shuō)明】
[0034] 圖1為本發(fā)明自適應(yīng)糾錯(cuò)算法的處理流程示意圖;
[0035] 圖2為弱LDPC碼和強(qiáng)LDPC碼編碼過(guò)程示意圖;
[0036] 圖3為弱LDPC碼和強(qiáng)LDPC碼譯碼過(guò)程示意圖;
[0037] 圖4為固態(tài)盤(pán)塊糾錯(cuò)碼自適應(yīng)切換算法示意圖;
[0038] 圖5為本發(fā)明自適應(yīng)糾錯(cuò)系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要 彼此之間未構(gòu)成沖突就可以相互組合。
[0040] 本發(fā)明中高碼率的LDPC碼表示弱LDPC碼,低碼率的LDPC碼表示強(qiáng)LDPC碼。
[0041] 如圖1所示,為本發(fā)明自適應(yīng)糾錯(cuò)算法的處理流程示意圖,所述糾錯(cuò)算法包括如 下步驟:
[0042] (1)初始化具體為:
[0043] 固態(tài)盤(pán)在輸入數(shù)據(jù)前,要進(jìn)行塊擦除操作,以便寫(xiě)入數(shù)據(jù)。初始化所有擦除塊的糾 錯(cuò)碼標(biāo)識(shí)符Bi= 0 (i = 0, 1,…,η),η表示固態(tài)盤(pán)塊的數(shù)量;
[0044] (2)固態(tài)盤(pán)自適應(yīng)糾錯(cuò)方法的具體編碼過(guò)程為:
[0045] (2. 1)如圖2所示,當(dāng)一頁(yè)原始數(shù)據(jù)R被寫(xiě)入固態(tài)盤(pán)閃存芯片時(shí),根據(jù)弱LDPC碼 的生成矩陣G1對(duì)原始數(shù)據(jù)R進(jìn)行編碼得到碼字C 1= RXG i,碼字C1去掉原始數(shù)據(jù)R得到弱 LDPC碼校驗(yàn)信息P1;
[0046] (2. 2)由強(qiáng)LDPC碼的生成矩陣62對(duì)一頁(yè)原始數(shù)據(jù)R編碼生成碼字
[0047] C2= RXG 2,碼字C2去掉原始數(shù)據(jù)R得到強(qiáng)LDPC碼校驗(yàn)信息P 2;
[0048] (2. 3) -頁(yè)原始數(shù)據(jù)R和P1,匕組成一頁(yè)的碼字C = (R,P i,P2);
[0049] (2. 4)將生成的碼字C寫(xiě)入閃存芯片中;
[0050] (3)固態(tài)盤(pán)譯碼過(guò)程包括如下步驟:
[0051] (3. 1)判斷是否有讀操作,如果有讀操作則轉(zhuǎn)向(3. 2),否則結(jié)束本算法;
[0052] (3. 2)判斷讀取