欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于錯(cuò)誤檢查和糾正的編解碼方法、裝置及處理器與流程

文檔序號(hào):12719223閱讀:365來(lái)源:國(guó)知局
一種用于錯(cuò)誤檢查和糾正的編解碼方法、裝置及處理器與流程

本申請(qǐng)涉及存儲(chǔ)技術(shù)領(lǐng)域,特別是一種用于錯(cuò)誤檢查和糾正的編解碼方法、裝置及處理器。



背景技術(shù):

NAND存儲(chǔ)器是目前使用廣泛的數(shù)據(jù)存儲(chǔ)工具。數(shù)據(jù)在NAND存儲(chǔ)器內(nèi)部的傳輸和保存的過(guò)程中,可能會(huì)由于存儲(chǔ)器的硬件故障、軟件故障、硬盤(pán)錯(cuò)誤等導(dǎo)致該數(shù)據(jù)的損壞。故,為了保證用戶數(shù)據(jù)的完整性,則需要對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正(Error Correcting Code,簡(jiǎn)稱(chēng):ECC)。

通常,NAND存儲(chǔ)器在寫(xiě)入數(shù)據(jù)時(shí),需要對(duì)該數(shù)據(jù)進(jìn)行編碼使得編碼后的該數(shù)據(jù)可實(shí)現(xiàn)錯(cuò)誤檢查和糾正,再將該可實(shí)現(xiàn)錯(cuò)誤檢查和糾正的數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中。在需要讀出數(shù)據(jù)時(shí),對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行對(duì)應(yīng)解碼以實(shí)現(xiàn)錯(cuò)誤檢查和糾正,進(jìn)而輸出經(jīng)過(guò)錯(cuò)誤檢查和糾正得到的準(zhǔn)確數(shù)據(jù)。

然而,現(xiàn)有存儲(chǔ)器都是固定采用一種編解碼方式,并不能針對(duì)不同數(shù)據(jù)而靈活配置編解碼方式。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)?zhí)峁┮环N用于錯(cuò)誤檢查和糾正的編解碼方法、裝置及處理器,能夠針對(duì)不同數(shù)據(jù)智能配置編解碼方式。

本申請(qǐng)第一方面提供一種用于錯(cuò)誤檢查和糾正的編碼方法,包括:存儲(chǔ)控制器在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),分析所述數(shù)據(jù)的重要程度;在所述數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和低密度奇偶校驗(yàn)碼LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用不高于第一碼率的LDPC對(duì) 所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一重要級(jí)的重要程度高于所述第二重要級(jí)的重要程度;以及將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息,其中,所述數(shù)據(jù)的編碼信息包括所述數(shù)據(jù)采用的編碼方式。

其中,所述分析所述數(shù)據(jù)的重要程度的步驟,包括:分析所述數(shù)據(jù)的來(lái)源、屬性及類(lèi)型中的至少一種,得到所述數(shù)據(jù)的重要程度值;當(dāng)所述重要程度值超過(guò)第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第一重要級(jí);以及當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)。

其中,所述第二重要級(jí)包括第一重要子級(jí)和第二重要子級(jí);所述當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)的步驟包括:當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值且超過(guò)第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí);當(dāng)所述重要程度值不超過(guò)所述第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí),其中,所述第一預(yù)設(shè)值大于所述第二預(yù)設(shè)值;以及所述在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼的步驟,包括:在所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí)時(shí),采用高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,在所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí)時(shí),采用不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一碼率高于所述第二碼率。

其中,所述存儲(chǔ)器為SLC、MLC或TLC類(lèi)型的NAND存儲(chǔ)器;在所述將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息的步驟之前,所述方法還包括:確定所述存儲(chǔ)器的類(lèi)型,并當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),將LDPC解碼中的有限域GF(2^q)中的所述q取值為1;當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),將所述q取值為2;當(dāng)所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),將所述q取值為3;以及所述數(shù)據(jù)的編碼信息 還包括所述q的取值。

其中,所述BCH的生成矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,所述LDPC的生成矩陣按照所述LDPC的碼率進(jìn)行選擇。

本申請(qǐng)第二方面提供一種用于錯(cuò)誤檢查和糾正的解碼方法,包括:存儲(chǔ)控制器在接收到數(shù)據(jù)的讀取指令時(shí),從存儲(chǔ)器中讀取所述數(shù)據(jù)及所述數(shù)據(jù)的編碼信息,其中,所述編碼信息包括所述數(shù)據(jù)采用的編碼方式,所述數(shù)據(jù)采用的編碼方式取決于所述數(shù)據(jù)的重要程度,在所述數(shù)據(jù)的重要程度為第一重要級(jí)時(shí),采用BCH和低密度奇偶校驗(yàn)碼LDPC的結(jié)合或不高于第一碼率的LDPC的編碼方式;在所述數(shù)據(jù)的重要程度為第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC的編碼方式,所述第一重要級(jí)的重要程度大于所述第二重要級(jí)的重要程度;根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼,其中,所述解碼方式包括BCH和LDPC的結(jié)合、不高于第一碼率的LDPC、BCH或者高于所述第一碼率的LDPC;以及輸出進(jìn)行所述解碼后得到的數(shù)據(jù)。

其中,所述第二重要級(jí)包括第一重要子級(jí)和第二重要子級(jí),所述第一重要子級(jí)的重要程度大于所述第二重要子級(jí)的重要程度;所述數(shù)據(jù)采用的編碼方式還包括在所述數(shù)據(jù)的重要程度為所述第一重要子級(jí)時(shí)而采用的高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC的編碼方式,在所述數(shù)據(jù)的重要程度為所述第二重要子級(jí)時(shí)而采用的不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC的編碼方式,其中,所述第一碼率高于所述第二碼率;以及所述BCH或者高于所述第一碼率的LDPC解碼方式包括高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH、高于所述第一碼率且低于第二碼率的LDPC、不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH、或不低于所述第二碼率的LDPC的解碼方式。

其中,在所述根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼的步驟之后,所述方法還包括檢測(cè)到所述BCH的錯(cuò)誤比特?cái)?shù)超過(guò)預(yù)設(shè)比特值和/或所述LDPC的實(shí)際迭代次數(shù)超過(guò)預(yù)設(shè)次數(shù)時(shí),發(fā)出所述存儲(chǔ)器中存儲(chǔ)所述數(shù) 據(jù)的塊出現(xiàn)問(wèn)題的警報(bào)。

其中,所述存儲(chǔ)器為SLC、MLC或TLC類(lèi)型的NAND存儲(chǔ)器;所述數(shù)據(jù)的編碼信息還包括q的取值,當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),所述q取值為1,當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),所述q取值為2,當(dāng)所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),所述q取值為3;以及在所述采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼的步驟中,若進(jìn)行所述LDPC解碼,則將所述編碼信息中的所述q的取值作為所述LDPC解碼中的有限域GF(2^q)中的q的取值,以進(jìn)行所述LDPC解碼。

其中,所述BCH的校驗(yàn)矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,所述LDPC的校驗(yàn)矩陣按照所述LDPC的碼率進(jìn)行選擇。

本申請(qǐng)第三方面提供一種用于錯(cuò)誤檢查和糾正的編碼裝置,包括:分析模塊,用于在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),分析所述數(shù)據(jù)的重要程度;編碼模塊,用于在所述數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和低密度奇偶校驗(yàn)碼LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用不高于第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一重要級(jí)的重要程度高于所述第二重要級(jí)的重要程度;以及寫(xiě)入模塊,用于將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息,其中,所述數(shù)據(jù)的編碼信息包括所述數(shù)據(jù)采用的編碼方式。

本申請(qǐng)第四方面提供一種用于錯(cuò)誤檢查和糾正的解碼裝置,包括:讀取模塊,用于存儲(chǔ)控制器在接收到數(shù)據(jù)的讀取指令時(shí),從存儲(chǔ)器中讀取所述數(shù)據(jù)及所述數(shù)據(jù)的編碼信息,其中,所述編碼信息包括所述數(shù)據(jù)采用的編碼方式,所述數(shù)據(jù)采用的編碼方式取決于所述數(shù)據(jù)的重要程度,在所述數(shù)據(jù)的重要程度為第一重要級(jí)時(shí),采用BCH和低密度奇偶校驗(yàn)碼LDPC的結(jié)合或不高于第一碼率的LDPC的編碼方式;在所述數(shù)據(jù)的重要程度為第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC的編碼方式,所述第一重要級(jí)的重要程度大于所述第二重要級(jí)的重要程度;解碼模塊,用于根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方 式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼,其中,所述解碼方式包括BCH和LDPC的結(jié)合、不高于第一碼率的LDPC、BCH或者高于所述第一碼率的LDPC;以及輸出模塊,用于輸出進(jìn)行所述解碼后得到的數(shù)據(jù)。

本申請(qǐng)第五方面提供一種用于錯(cuò)誤檢查和糾正的編解碼處理器,包括上述的編碼裝置和/或上述的解碼裝置。

上述方案中,存儲(chǔ)控制器通過(guò)分析數(shù)據(jù)的重要程度,并根據(jù)不同重要程度為數(shù)據(jù)配置不同的編碼方式及解碼方式,即越重要的數(shù)據(jù)配置錯(cuò)誤檢查及糾正能力越強(qiáng)的編碼方式及解碼方式,實(shí)現(xiàn)了存儲(chǔ)器對(duì)數(shù)據(jù)編解碼方式的智能配置,且保證了重要數(shù)據(jù)的可靠及準(zhǔn)確存儲(chǔ)。同時(shí),存儲(chǔ)控制器對(duì)于重要程度低的數(shù)據(jù)選擇錯(cuò)誤檢查及糾正能力較低的編碼方式及解碼方式,降低了其所需編碼能力及校驗(yàn)碼長(zhǎng),提高了編碼效率和節(jié)省了存儲(chǔ)空間。

附圖說(shuō)明

圖1是本申請(qǐng)用于錯(cuò)誤檢查和糾正編碼方法一實(shí)施方式的流程圖;

圖2是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼方法另一實(shí)施方式的流程圖;

圖3是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼方法再一實(shí)施方式中保存的編碼信息的示意圖。

圖4是本申請(qǐng)用于錯(cuò)誤檢查和糾正解碼方法一實(shí)施方式的流程圖;

圖5是本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼方法另一實(shí)施方式的流程圖;

圖6是本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼方法再一實(shí)施方式中的LDPC解碼時(shí)的LLR概率示意圖;

圖7a是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼裝置一實(shí)施方式的結(jié)構(gòu)示意圖;

圖7b是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼裝置的編譯模塊一實(shí)施方式的結(jié)構(gòu)示意圖。

圖8是本申請(qǐng)本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼裝置一實(shí)施方式的結(jié)構(gòu)示意圖。

具體實(shí)施方式

以下描述中,為了說(shuō)明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類(lèi)的具體細(xì)節(jié),以便透徹理解本申請(qǐng)。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒(méi)有這些具體細(xì)節(jié)的其它實(shí)施方式中也可以實(shí)現(xiàn)本申請(qǐng)。在其它情況中,省略對(duì)眾所周知的裝置、電路以及方法的詳細(xì)說(shuō)明,以免不必要的細(xì)節(jié)妨礙本申請(qǐng)的描述。

請(qǐng)參閱圖1,圖1是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼方法一實(shí)施方式的流程圖。本實(shí)施方式可由存儲(chǔ)器中的存儲(chǔ)控制器執(zhí)行,該方法包括:

S11:存儲(chǔ)控制器在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),分析所述數(shù)據(jù)的重要程度。

存儲(chǔ)控制器先將所需寫(xiě)入的數(shù)據(jù)劃分重要程度級(jí)如包括第一重要級(jí)和第二重要級(jí),并按照該數(shù)據(jù)的重要程度選擇相應(yīng)編碼方式。例如,存儲(chǔ)器作為計(jì)算機(jī)的存儲(chǔ)設(shè)備,存儲(chǔ)控制器在接收到計(jì)算機(jī)文件系統(tǒng)下發(fā)的數(shù)據(jù)的寫(xiě)入指令時(shí),接收該數(shù)據(jù),并分析該數(shù)據(jù)的重要程度屬于第一重要級(jí)或第二重要級(jí)。

具體地,存儲(chǔ)控制器可根據(jù)該分析所述數(shù)據(jù)的參數(shù)確定其重要程度。例如,存儲(chǔ)器中預(yù)存不同數(shù)據(jù)參數(shù)分別對(duì)應(yīng)的重要程度值。在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),存儲(chǔ)控制器在上述預(yù)存信息中,查找所述數(shù)據(jù)的參數(shù)對(duì)應(yīng)的重要程度值以得到該數(shù)據(jù)的重要程度值,并判斷該數(shù)據(jù)的重要程度值是否超過(guò)第一預(yù)設(shè)值,當(dāng)所述重要程度值超過(guò)第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第一重要級(jí);以及當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)。其中,該數(shù)據(jù)的參數(shù)可包括數(shù)據(jù)的來(lái)源、屬性及類(lèi)型中的至少一種。

S12:存儲(chǔ)控制器在所述數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用不高于第一碼率的 LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一重要級(jí)的重要程度高于所述第二重要級(jí)的重要程度。

本申請(qǐng)存儲(chǔ)控制器可按照數(shù)據(jù)重要程度采用不同的編碼方式。其中,可采用的編碼方式包括BCH(取自Bose、Ray-Chaudhuri與Hocquenghem的縮寫(xiě))、低密度奇偶校驗(yàn)碼(英文:Low Density Parity Check Code,簡(jiǎn)稱(chēng):LDPC)、或BCH和LDPC的結(jié)合。上述三種編碼方式的錯(cuò)誤檢查和糾正能力由強(qiáng)至弱依序?yàn)椋築CH和LDPC的結(jié)合、LCPD、BCH。而且,存儲(chǔ)控制器可自適應(yīng)采用不同碼率(英文:code rate)的LDPC。對(duì)于一定碼長(zhǎng)的原始數(shù)據(jù),當(dāng)采用的LDPC的碼率越大,其編碼后得到的校驗(yàn)碼越多,且其錯(cuò)誤檢查和糾正能力則越強(qiáng)。

本實(shí)施例中,存儲(chǔ)控制器對(duì)重要級(jí)越高的數(shù)據(jù),采用錯(cuò)誤檢查和糾正能力越強(qiáng)的編碼方式。具體地,存儲(chǔ)控制器在判斷所需寫(xiě)入的數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和LDPC(即前述的BCH和LDPC的結(jié)合)對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,該LDPC的碼率可為低于或高于該第一碼率,且進(jìn)行BCH、LDPC編碼的順序不限定,如可先進(jìn)行BCH編碼再對(duì)BCH編碼的輸出進(jìn)行LDPC編碼,或先進(jìn)行LDPC編碼再對(duì)LDPC編碼的輸出進(jìn)行BCH編碼;或存儲(chǔ)控制器在判斷所需寫(xiě)入的數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),采用不高于第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼。存儲(chǔ)控制器在判斷所需寫(xiě)入的數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH對(duì)所述數(shù)據(jù)進(jìn)行編碼,或者采用高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼。在實(shí)際應(yīng)用中,該第一碼率可由用戶配置并保存在存儲(chǔ)器中,該第一碼率通常取值為0.2-0.7,具體如為0.2、0.3、0.5、0.6或0.7。在采用以上編碼方式時(shí),對(duì)于同一重要級(jí)的數(shù)據(jù),存儲(chǔ)控制器可根據(jù)該數(shù)據(jù)的重要程度值而具體采用不同碼率,如數(shù)據(jù)的重要程度值越高,其采用的LDPC的碼率越低。在一實(shí)施例中,存儲(chǔ)器可預(yù)存16種碼率如0.5,0.6,0.650.7,0.75,0.8,0.85,0.9,0.95等,存儲(chǔ)控制器根據(jù)其重要程度值選擇其中一種碼率。當(dāng)然,存儲(chǔ)控制器也可對(duì)同一重要級(jí)的所有數(shù)據(jù)均采用相同碼率。

S13:存儲(chǔ)控制器將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息,其中,所述數(shù)據(jù)的編碼信息包括所述數(shù)據(jù)采用的編碼方式。

所需寫(xiě)入的數(shù)據(jù)按照上述S12的編碼方式進(jìn)行編碼后,得到的編碼后的數(shù)據(jù)包括原始數(shù)據(jù)和檢驗(yàn)碼,并將該編碼后的數(shù)據(jù)寫(xiě)入存儲(chǔ)器中。而且,由于本實(shí)施例中可根據(jù)不同數(shù)據(jù)配置不同編碼方式。為了便于解碼,存儲(chǔ)控制器還將該數(shù)據(jù)的編碼信息保存在存儲(chǔ)器中,或保存在軟件層如新技術(shù)文件系統(tǒng)(英文:New Technology File System,簡(jiǎn)稱(chēng):NTFS)、或無(wú)排序區(qū)塊圖像文件系統(tǒng)(英文:Unsorted Block Image File System,簡(jiǎn)稱(chēng):UBIFS)中。存儲(chǔ)控制器還可通過(guò)列表方式將該數(shù)據(jù)與其編碼信息建立映射關(guān)系,以將該數(shù)據(jù)及其編碼信息關(guān)聯(lián)起來(lái)。當(dāng)需要對(duì)該編碼后數(shù)據(jù)進(jìn)行解碼時(shí),存儲(chǔ)控制器可讀取相應(yīng)編碼信息以得到其編碼方式,并以對(duì)應(yīng)該編碼方式的解碼方式進(jìn)行解碼。

請(qǐng)參閱圖2,圖2是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼方法另一實(shí)施方式的流程圖。本方法包括以下步驟:

S21:存儲(chǔ)控制器在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),分析所述數(shù)據(jù)的來(lái)源、屬性及類(lèi)型中的至少一種,得到所述數(shù)據(jù)的重要程度值。

例如,存儲(chǔ)器預(yù)存有該數(shù)據(jù)不同的來(lái)源、屬性及類(lèi)型分別對(duì)應(yīng)的重要程度值。如數(shù)據(jù)來(lái)源為管理員賬戶,則其重要程度值為80%;數(shù)據(jù)來(lái)源為游客賬戶,則其重要程度值為30%;數(shù)據(jù)的類(lèi)型為引導(dǎo)狀態(tài)程序(英文:boot loader),則其重要程度值為100%,數(shù)據(jù)類(lèi)型為視頻或音頻,則其重要程度值為20%。存儲(chǔ)控制器查找該預(yù)存信息,得到數(shù)據(jù)的重要程度值。其中,當(dāng)存儲(chǔ)控制器分析的數(shù)據(jù)參數(shù)包括兩種以上,則由該兩種以上數(shù)據(jù)參數(shù)對(duì)應(yīng)的重要程度值的平均值作為該數(shù)據(jù)重要程度值。如存儲(chǔ)控制器分析數(shù)據(jù)為管理員賬號(hào)的視頻,則數(shù)據(jù)重要程度值為(80%+30%)/2=55%。

S22:當(dāng)所述重要程度值超過(guò)第一預(yù)設(shè)值時(shí),存儲(chǔ)控制器確定所述數(shù)據(jù)的重要程度屬于第一重要級(jí);以及當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),存儲(chǔ)控制器確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)。

本實(shí)施例以第一預(yù)設(shè)值為重要程度值的界線,將數(shù)據(jù)劃分包括兩個(gè)主要重要級(jí):第一重要級(jí)和第二重要級(jí)。進(jìn)一步地,本實(shí)施例的第二重要級(jí)還可包括第一重要子級(jí)和第二重要子級(jí)。上述S22中,所述當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)的步驟包括:當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值且超過(guò)第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí);當(dāng)所述重要程度值不超過(guò)所述第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí),其中,所述第一預(yù)設(shè)值大于所述第二預(yù)設(shè)值。該第一預(yù)設(shè)值、第二預(yù)設(shè)值可由用戶設(shè)置。第一預(yù)設(shè)值可為50%至80%,第二預(yù)設(shè)值可為30%至60%。

例如,第一預(yù)設(shè)值為60%,第二預(yù)設(shè)值為40%。存儲(chǔ)控制器由S21獲得需寫(xiě)入數(shù)據(jù)的重要程度值為55%,未超過(guò)60%但超過(guò)40%,故確定該數(shù)據(jù)屬于第二重要級(jí),且屬于第二重要級(jí)中的第一重要子級(jí)。

S23:存儲(chǔ)控制器在所述數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用不高于第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí)時(shí),采用高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,在所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí)時(shí),采用不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一重要級(jí)的重要程度高于所述第二重要級(jí)的重要程度,所述第一碼率高于所述第二碼率。

基于上一實(shí)施方式,存儲(chǔ)控制器還可自適應(yīng)采用不同檢驗(yàn)位數(shù)的BCH。當(dāng)采用的BCH的校驗(yàn)位數(shù)越多,其錯(cuò)誤檢查和糾正能力則越強(qiáng)。該預(yù)設(shè)校驗(yàn)位數(shù)可為50bit至500bit。該第一碼率通常取值為0.2-0.7,第二碼率通常取值為0.7-0.95。

例如,預(yù)設(shè)檢驗(yàn)位數(shù)為80bit,第一碼率為0.6,第二碼率為0.8。存儲(chǔ)控制器在需要寫(xiě)入的數(shù)據(jù)屬于第一重要級(jí)時(shí),分別采用BCH和LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用碼率不高于0.6的LDPC對(duì)所述數(shù)據(jù)進(jìn)行 編碼;在所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí)時(shí),采用高于80bit校驗(yàn)位的BCH對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用碼率高于0.6且低于0.8的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí)時(shí),采用不高于80bit校驗(yàn)位的BCH對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用碼率不低于0.8的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼。在采用以上編碼方式時(shí),存儲(chǔ)控制器可根據(jù)該數(shù)據(jù)的重要程度值而具體采用不同碼率和不同校驗(yàn)位,如數(shù)據(jù)的重要程度值越高,其采用的LDPC的碼率越低,且采用的BCH的校驗(yàn)位數(shù)越多。

其中,該BCH的生成矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,該LDPC的生成矩陣按照所述LDPC的碼率進(jìn)行選擇。例如,存儲(chǔ)器可預(yù)存分別多個(gè)分別對(duì)應(yīng)不同校驗(yàn)位數(shù)的BCH的生成矩陣G1,以及多個(gè)分別對(duì)應(yīng)不同碼率的LDPC的生成矩陣G2。當(dāng)存儲(chǔ)控制器為需寫(xiě)入的數(shù)據(jù)確定編碼方式時(shí),可對(duì)應(yīng)其確定的碼率和/或校驗(yàn)位數(shù),讀取對(duì)應(yīng)的BCH的生成矩陣G1以進(jìn)行相應(yīng)的BCH編碼,和/或讀取LDPC的生成矩陣G2以進(jìn)行相應(yīng)的LDPC編碼。進(jìn)一步地,存儲(chǔ)控制器在讀取生成矩陣后,可分析該生成矩陣是否存在規(guī)律,若存在規(guī)律,則將該生成矩陣分成若干個(gè)小矩陣,采用該若干個(gè)小矩陣對(duì)該數(shù)據(jù)進(jìn)行編碼,以提高編碼效率。

可選地,由于不同編碼方式,所得到的校驗(yàn)碼位數(shù)不同,通常,編碼方式的糾錯(cuò)能力越強(qiáng),其校驗(yàn)碼位數(shù)越多。故,存儲(chǔ)控制器還可在按照重要程度確定編碼方式時(shí),檢查該存儲(chǔ)器自身配置的校驗(yàn)碼的存儲(chǔ)空間大小,預(yù)算該校驗(yàn)碼存儲(chǔ)空間是否足夠存放采用選擇的編碼方式對(duì)需寫(xiě)入的數(shù)據(jù)進(jìn)行編碼所得到的校驗(yàn)碼,如果能,則確定采用該編碼方式進(jìn)行編碼,否則,提高該LDPC的碼率和/或降低BCH的校驗(yàn)位數(shù),以保證與該校驗(yàn)碼存儲(chǔ)空間大小匹配。

S24:存儲(chǔ)控制器確定所述存儲(chǔ)器的類(lèi)型,并當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),將LDPC解碼中的有限域GF(2^q)中的所述q取值為1;當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),將所述q取值為2;當(dāng)所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),將所述q取值為3。

本實(shí)施例中,該存儲(chǔ)器可為單層單元(英文:Single-Level Cell,簡(jiǎn)稱(chēng):SLC)、多層單元(英文:Multi-Level Cell,簡(jiǎn)稱(chēng):MLC)或三層單元(英文:Trinary-Level_Cell,簡(jiǎn)稱(chēng):TLC)類(lèi)型的NAND存儲(chǔ)器,該NAND存儲(chǔ)器具體可為Raw Nand、或固態(tài)硬盤(pán)(英文:Solid State Drives,簡(jiǎn)稱(chēng):SSD)等。由于SLC類(lèi)型為每個(gè)單元存儲(chǔ)1bit,需劃分為21=2個(gè)電壓狀態(tài)表示;MLC類(lèi)型為每個(gè)單元存儲(chǔ)2bit,需劃分為22=4個(gè)電壓狀態(tài)表示;TLC類(lèi)型為每個(gè)單元存儲(chǔ)3bit,需劃分為23=8個(gè)電壓狀態(tài)表示。相應(yīng)地,SLC、MLC、TLC類(lèi)型存儲(chǔ)器對(duì)錯(cuò)誤檢查和糾正的需求不同且為順序增大。故,針對(duì)不同類(lèi)型存儲(chǔ)器的錯(cuò)誤檢查和糾正需求,存儲(chǔ)控制器可預(yù)先確定該存儲(chǔ)器的類(lèi)型,并由所述存儲(chǔ)器的類(lèi)型確定該LDPC解碼中的有限域GF(2^q)中的所述q的取值,具體為若SLC類(lèi)型則將q取值為1,若MLC類(lèi)型則將q取值為2,若TLC類(lèi)型則將q取值為3。

可以理解的是,該S24未必在執(zhí)行S21-23之后進(jìn)行,在其他實(shí)施例中,存儲(chǔ)控制器可在接收到數(shù)據(jù)寫(xiě)入指令后至S25步驟之間的任何時(shí)刻執(zhí)行。

S25:存儲(chǔ)控制器將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息,其中,所述數(shù)據(jù)的編碼信息包括所述數(shù)據(jù)采用的編碼方式和所述q的取值。

例如,該編碼信息中的編碼方式可由以下組成的碼組表示:“是否采用LDPC”、“LDPC的碼率”、“是否采用BCH”、“BCH的校驗(yàn)位數(shù)”。其中,該是否采用LDPC、是否采用BCH均可由但不限由1bit表示,如0表示是,1表示否。q的取值可由但不限由1bit或2bit表示,如01表示q為1,10表示q為2,11表示q為3。LDPC的碼率、BCH的校驗(yàn)位數(shù)可由但不限由2bit-6bit表示,如為4bit??蛇x地,用于記載編碼信息的碼組還可預(yù)留1bit-2bit作為擴(kuò)展使用。

可以理解的是,該用于記載編碼信息的碼組可根據(jù)實(shí)際編碼方式進(jìn)行適應(yīng)性設(shè)置。例如,若在一實(shí)施例中,該存儲(chǔ)控制器所采用的編碼方式只為BCH和LDPC的結(jié)合、或不同碼率的LDPC,則該用于記載編碼 信息的碼組可為圖3所示的格式,即不包含“是否采用LDPC”項(xiàng),以及“BCH的檢驗(yàn)位數(shù)”項(xiàng),該編碼信息為每頁(yè)1byte。

存儲(chǔ)控制器在接收到讀取該數(shù)據(jù)的指令時(shí),則可根據(jù)該編碼信息確定該數(shù)據(jù)所采用的編碼方式,并按照相應(yīng)解碼方式對(duì)其進(jìn)行解碼。

上述方案中,存儲(chǔ)控制器通過(guò)分析數(shù)據(jù)的重要程度,并根據(jù)不同重要程度為數(shù)據(jù)配置不同的編碼方式,即越重要的數(shù)據(jù)配置錯(cuò)誤檢查及糾正能力越強(qiáng)的編碼方式,實(shí)現(xiàn)了存儲(chǔ)器對(duì)數(shù)據(jù)編碼方式的自適應(yīng)配置,且保證了重要數(shù)據(jù)的可靠及準(zhǔn)確存儲(chǔ)。同時(shí),由于錯(cuò)誤檢查及糾正能力越強(qiáng)的編碼方式,所需的編碼能力越強(qiáng)及所需校驗(yàn)碼長(zhǎng)越多。存儲(chǔ)控制器對(duì)于重要程度低的數(shù)據(jù)選擇錯(cuò)誤檢查及糾正能力較低的編碼方式,降低了其所需編碼能力及校驗(yàn)碼長(zhǎng),提高了編碼效率和節(jié)省了存儲(chǔ)空間。

請(qǐng)參閱圖4,圖4是本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼方式一實(shí)施方式的流程圖。本實(shí)施方法中,存儲(chǔ)控制器進(jìn)行解碼的數(shù)據(jù)可為由以上實(shí)施方式進(jìn)行編碼得到的數(shù)據(jù)。該方法包括以下步驟:

S41:存儲(chǔ)控制器在接收到數(shù)據(jù)的讀取指令時(shí),從存儲(chǔ)器中讀取所述數(shù)據(jù)及所述數(shù)據(jù)的編碼信息。

例如,存儲(chǔ)器作為計(jì)算機(jī)的存儲(chǔ)設(shè)備,存儲(chǔ)控制器在接收到計(jì)算機(jī)文件系統(tǒng)下發(fā)的數(shù)據(jù)的讀取指令時(shí),獲取該讀取指令中攜帶的存儲(chǔ)地址,并從存儲(chǔ)器的該存儲(chǔ)地址中讀取該數(shù)據(jù),以及通過(guò)查表查找到與該數(shù)據(jù)具有映射關(guān)系的編碼信息。

其中,所述編碼信息包括所述數(shù)據(jù)采用的編碼方式,所述數(shù)據(jù)采用的編碼方式取決于所述數(shù)據(jù)的重要程度,在所述數(shù)據(jù)的重要程度為第一重要級(jí)時(shí),采用BCH和低密度奇偶校驗(yàn)碼LDPC的結(jié)合或不高于第一碼率的LDPC的編碼方式;在所述數(shù)據(jù)的重要程度為第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC的編碼方式,所述第一重要級(jí)的重要程度大于所述第二重要級(jí)的重要程度。例如,該數(shù)據(jù)和編碼信息為圖1所示實(shí)施方式編碼得到的數(shù)據(jù)以及保存的編碼信息。

S42:存儲(chǔ)控制器根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼,其中,所述 解碼方式包括BCH和LDPC的結(jié)合、不高于第一碼率的LDPC、BCH或者高于所述第一碼率的LDPC。

具體地,存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為BCH和LDPC的結(jié)合時(shí),其對(duì)應(yīng)的解碼方式則為BCH和LDPC的結(jié)合,即分別采用BCH和LDPC對(duì)該數(shù)據(jù)進(jìn)行解碼。其中,進(jìn)行BCH、LDPC解碼的順序不限定,如可先進(jìn)行BCH解碼再對(duì)BCH解碼的輸出進(jìn)行LDPC解碼,或先進(jìn)行LDPC解碼再對(duì)LDPC解碼的輸出進(jìn)行BCH解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為不高于第一碼率的LDPC編碼時(shí),其對(duì)應(yīng)的解碼方式則為不高于第一碼率的LDPC解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為BCH編碼時(shí),其對(duì)應(yīng)的解碼方式則為不高于第一碼率的BCH解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為高于所述第一碼率的LDPC編碼時(shí),其對(duì)應(yīng)的解碼方式則為高于所述第一碼率的LDPC解碼。

其中,S41中獲取的編碼信息包括LDPC的碼率,存儲(chǔ)控制器將該編碼信息中的碼率作為L(zhǎng)DPC解碼時(shí)的碼率。

S43:存儲(chǔ)控制器輸出進(jìn)行所述解碼后得到的數(shù)據(jù)。

由于本實(shí)施例解碼方法與該數(shù)據(jù)的編碼方式對(duì)應(yīng),對(duì)重要程度高的數(shù)據(jù)選擇錯(cuò)誤檢查和糾正能力較高的編解碼方式,對(duì)重要程度低的選擇錯(cuò)誤檢查和糾正能力較低的編解碼方式,實(shí)現(xiàn)了存儲(chǔ)器對(duì)數(shù)據(jù)編解碼方式的自適應(yīng)配置,且保證了重要數(shù)據(jù)的可靠及準(zhǔn)確存儲(chǔ)。同時(shí),也降低了重要程度低數(shù)據(jù)所需的解碼能力,提高了解碼效率。

請(qǐng)參閱圖5,圖5是本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼方法另一實(shí)施方式的流程圖。本方法包括以下步驟:

S51:存儲(chǔ)控制器在接收到數(shù)據(jù)的讀取指令時(shí),從存儲(chǔ)器中讀取所述數(shù)據(jù)及所述數(shù)據(jù)的編碼信息。

其中,所述編碼信息包括所述數(shù)據(jù)采用的編碼方式,所述數(shù)據(jù)采用的編碼方式取決于所述數(shù)據(jù)的重要程度為第一重要級(jí)或第二重要級(jí),所述第二重要級(jí)包括第一重要子級(jí)和第二重要子級(jí)。在所述數(shù)據(jù)的重要程度為第一重要級(jí)時(shí),采用BCH和低密度奇偶校驗(yàn)碼LDPC的結(jié)合或不 高于第一碼率的LDPC的編碼方式;在所述數(shù)據(jù)的重要程度為所述第一重要子級(jí)時(shí)而采用的高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC的編碼方式,在所述數(shù)據(jù)的重要程度為所述第二重要子級(jí)時(shí)而采用的不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC的編碼方式,所述第一重要級(jí)的重要程度大于所述第二重要級(jí)的重要程度,所述第一重要子級(jí)的重要程度大于所述第二重要子級(jí)的重要程度,所述第一碼率高于所述第二碼率。例如,該數(shù)據(jù)和編碼信息為圖2所示實(shí)施方式編碼得到的數(shù)據(jù)以及保存的編碼信息

S52:存儲(chǔ)控制器根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼,其中,所述解碼方式包括BCH和LDPC的結(jié)合、不高于第一碼率的LDPC、高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH、高于所述第一碼率且低于第二碼率的LDPC、不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH、或不低于所述第二碼率的LDPC的解碼方式。

基于圖4所示實(shí)施方式,本實(shí)施方式中的BCH或者高于所述第一碼率的LDPC解碼方式包括高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH、高于所述第一碼率且低于第二碼率的LDPC、不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH、或不低于所述第二碼率的LDPC的解碼方式。具體地,存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH編碼時(shí),其對(duì)應(yīng)的解碼方式則為高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為高于所述第一碼率且低于第二碼率的LDPC編碼時(shí),其對(duì)應(yīng)的解碼方式則為高于所述第一碼率且低于第二碼率的LDPC解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH編碼時(shí),其對(duì)應(yīng)的解碼方式則為不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH解碼。存儲(chǔ)控制器在確定所述數(shù)據(jù)的編碼方式為不低于所述第二碼率的LDPC編碼時(shí),其對(duì)應(yīng)的解碼方式則為不低于所述第二碼率的LDPC解碼。

其中,該BCH的校驗(yàn)矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,該LDPC的校驗(yàn)矩陣按照所述LDPC的碼率進(jìn)行選擇。例如,存儲(chǔ)器可預(yù)存分別多個(gè)分別對(duì)應(yīng)不同校驗(yàn)位數(shù)的BCH的校驗(yàn)矩陣H1,以及 多個(gè)分別對(duì)應(yīng)不同碼率的LDPC的校驗(yàn)矩陣H2。當(dāng)存儲(chǔ)控制器為需寫(xiě)入的數(shù)據(jù)確定解碼方式時(shí),可對(duì)應(yīng)其確定的碼率和/或校驗(yàn)位數(shù),讀取對(duì)應(yīng)的BCH的校驗(yàn)矩陣H1以進(jìn)行相應(yīng)的BCH解碼,和/或讀取LDPC的校驗(yàn)矩陣H2以進(jìn)行相應(yīng)的LDPC解碼。

S53:存儲(chǔ)控制器檢測(cè)到所述BCH的錯(cuò)誤比特?cái)?shù)超過(guò)預(yù)設(shè)比特值和/或所述LDPC的實(shí)際迭代次數(shù)超過(guò)預(yù)設(shè)次數(shù)時(shí),發(fā)出所述存儲(chǔ)器中存儲(chǔ)所述數(shù)據(jù)的塊出現(xiàn)問(wèn)題的警報(bào)。

本實(shí)施例中,存儲(chǔ)控制器還可對(duì)保存該數(shù)據(jù)的塊進(jìn)行預(yù)警。存儲(chǔ)控制器在進(jìn)行BCH解碼時(shí),檢測(cè)該BCH的錯(cuò)誤比特?cái)?shù)是否超過(guò)預(yù)設(shè)比特值,若在進(jìn)行LDPC解碼時(shí),檢測(cè)該LDPC的實(shí)際迭代次數(shù)是否超過(guò)預(yù)設(shè)次數(shù),若上述兩種檢測(cè)中的其中一個(gè)為超過(guò),則發(fā)出所述存儲(chǔ)器中存儲(chǔ)所述數(shù)據(jù)的塊出現(xiàn)問(wèn)題的警報(bào),例如向包含該BCH的錯(cuò)誤比特?cái)?shù)或LDPC的實(shí)際迭代次數(shù)的警報(bào)消息發(fā)送給上層計(jì)算機(jī)系統(tǒng)。其中,該預(yù)設(shè)比特值、預(yù)設(shè)次數(shù)可由用戶設(shè)置,該預(yù)設(shè)比特值具體可為但不限為該數(shù)據(jù)的數(shù)據(jù)量的1/1000至5/100中的任意比特值,該預(yù)設(shè)次數(shù)可為但不限為2-10次。

其中,該存儲(chǔ)器可為SLC、MLC或TLC類(lèi)型的NAND存儲(chǔ)器,,該NAND存儲(chǔ)器具體可為Raw Nand、或SSD等。所述數(shù)據(jù)的編碼信息還包括q的取值,當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),所述q取值為1,當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),所述q取值為2,當(dāng)所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),所述q取值為3。在該S53步驟中,若進(jìn)行所述LDPC解碼,則將所述編碼信息中的所述q的取值作為所述LDPC解碼中的有限域GF(2^q)中的q的取值,以進(jìn)行所述LDPC解碼。

S54:存儲(chǔ)控制器輸出進(jìn)行所述解碼后得到的數(shù)據(jù)。

下面對(duì)以上實(shí)施例中的LDPC的具體編碼及解碼進(jìn)行說(shuō)明。

1)LDPC編碼:

存儲(chǔ)器中存儲(chǔ)有分別對(duì)應(yīng)不同碼率的生成矩陣,存儲(chǔ)控制器根據(jù)確定的LDPC的碼率獲取相應(yīng)的生成矩陣G,由公式v=u·G得到編碼后的數(shù)據(jù)。其中,v為編碼過(guò)后的碼字,包括信息碼和校驗(yàn)碼;u為需寫(xiě)入 的原始數(shù)據(jù)。

另外,BCH的編碼類(lèi)同于上,即同樣由v=u·G得到編碼數(shù)據(jù)。但具體BCH與LDPC的實(shí)現(xiàn)不同。在本申請(qǐng)中,BCH編碼中的有限域GF(2^q)中的q的取值也可配置,一般來(lái)說(shuō),為提高抗突發(fā)性錯(cuò)誤能力,q的取值與NAND的類(lèi)型相關(guān),如若SLC類(lèi)型則將q取值為1,若MLC類(lèi)型則將q取值為2,若TLC類(lèi)型則將q取值為3,即采用非二進(jìn)制編碼。當(dāng)然對(duì)于任何類(lèi)型的NAND,q都可以取1,即采用二進(jìn)制LDPC編碼。

2)LDPC解碼:

a、初始化:對(duì)于每個(gè)變量節(jié)點(diǎn)(v=1…N),對(duì)數(shù)似然比(英文:Log-Likelihood Ratio,簡(jiǎn)稱(chēng):LLR)消息設(shè)為:

b、變量節(jié)點(diǎn)更新:每個(gè)變量節(jié)點(diǎn)有dv個(gè)輸入消息{Uvp}p=1…dv∈Rq,其中,Rq表示以q為單位構(gòu)成的集合;

c、校驗(yàn)節(jié)點(diǎn)更新:對(duì)于每個(gè)變量節(jié)點(diǎn),可認(rèn)為有dc個(gè)輸入消息{Ucp}p=1…dc∈Rq,其中,Rq表示以q為單位構(gòu)成的集合;

d、根據(jù)校驗(yàn)矩陣H來(lái)判斷所譯出的碼字是否正確,如果正確,則停止迭代;否則繼續(xù)迭代進(jìn)行譯碼,直到迭代次數(shù)達(dá)到所設(shè)定的最大次數(shù),如果此時(shí)仍未正確譯碼,則譯碼失敗。該校驗(yàn)矩陣H與該數(shù)據(jù)編碼時(shí)的生成矩陣G對(duì)偶,即G·H=0。

在以上LDPC解碼過(guò)程中,通過(guò)LLR得到某點(diǎn)的概率,以確定其電壓表示的數(shù)值,即如圖6所示,t點(diǎn)更靠近11的電壓范圍,即通過(guò)LLR得到t點(diǎn)為11的概率最大,故該t點(diǎn)電壓表示的數(shù)值為11,其中,圖6中的P(v)表示概率,Vth表示電壓。例如,b0=1的初始LLR可由以下公式計(jì)算得出:

請(qǐng)參閱圖7a,圖7a是本申請(qǐng)用于錯(cuò)誤檢查和糾正的編碼裝置一實(shí)施方式結(jié)構(gòu)示意圖。該編碼裝置700用于將數(shù)據(jù)進(jìn)行編碼并寫(xiě)入存儲(chǔ)器中。該編碼裝置700包括分析模塊710、編碼模塊720及寫(xiě)入模塊730。

分析模塊710用于在接收到數(shù)據(jù)的寫(xiě)入指令時(shí),分析所述數(shù)據(jù)的重要程度。

編碼模塊720用于在所述數(shù)據(jù)的重要程度屬于第一重要級(jí)時(shí),分別采用BCH和低密度奇偶校驗(yàn)碼LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,或采用不高于第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼;在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一重要級(jí)的重要程度高于所述第二重要級(jí)的重要程度。

寫(xiě)入模塊730用于將編碼后的所述數(shù)據(jù)寫(xiě)入到存儲(chǔ)器中,并保存所述數(shù)據(jù)的編碼信息,其中,所述數(shù)據(jù)的編碼信息包括所述數(shù)據(jù)采用的編碼方式。

可選地,分析模塊710執(zhí)行所述分析所述數(shù)據(jù)的重要程度的步驟包括:分析所述數(shù)據(jù)的來(lái)源、屬性及類(lèi)型中的至少一種,得到所述數(shù)據(jù)的重要程度值;當(dāng)所述重要程度值超過(guò)第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第一重要級(jí);以及當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)。

可選地,所述第二重要級(jí)包括第一重要子級(jí)和第二重要子級(jí)。所述分析模塊710執(zhí)行所述當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于第二重要級(jí)的步驟包括:當(dāng)所述重要程度值不超過(guò)所述第一預(yù)設(shè)值且超過(guò)第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí);當(dāng)所述重要程度值不超過(guò)所述第二預(yù)設(shè)值時(shí),確定所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí),其中,所述第一預(yù)設(shè) 值大于所述第二預(yù)設(shè)值。編碼模塊720執(zhí)行所述在所述數(shù)據(jù)的重要程度屬于第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼的步驟包括:在所述數(shù)據(jù)的重要程度屬于所述第一重要子級(jí)時(shí),采用高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,在所述數(shù)據(jù)的重要程度屬于所述第二重要子級(jí)時(shí),采用不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC對(duì)所述數(shù)據(jù)進(jìn)行編碼,其中,所述第一碼率高于所述第二碼率。

可選地,所述存儲(chǔ)器為SLC、MLC或TLC類(lèi)型的NAND存儲(chǔ)器。該編碼裝置還可包括取值模塊,用于確定所述存儲(chǔ)器的類(lèi)型,并當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),將LDPC解碼中的有限域GF(2^q)中的所述q取值為1;當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),將所述q取值為2;當(dāng)所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),將所述q取值為3。而且,所述寫(xiě)入模塊730保存的所述數(shù)據(jù)的編碼信息還包括所述q的取值。

可選地,所述BCH的生成矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,所述LDPC的生成矩陣按照所述LDPC的碼率進(jìn)行選擇。

在一應(yīng)用實(shí)施例中,該編碼模塊720可如圖7b所示,包括BCH編碼器721、LDPC編碼器722、選擇器723及控制器724??刂破?24用于根據(jù)分析模塊710得到的數(shù)據(jù)重要程度確定編碼方式,并將是否進(jìn)行BCH的信號(hào)bypass發(fā)送至選擇器723,將LDPC的碼率codrate信號(hào)發(fā)送至LDPC編碼器722。該選擇器723用于根據(jù)bypass信號(hào),確定是否需要對(duì)該數(shù)據(jù)進(jìn)行BCH編碼,如需要,則選擇BCH編碼器721的輸出連接LDPC編碼器722的輸入,如不需要,則將原始數(shù)據(jù)不經(jīng)BCH編碼器721直接輸入至LDPC編碼器722。BCH編碼器721用于對(duì)輸入進(jìn)行BCH編碼。LDPC編碼器722用于根據(jù)coderate信號(hào)確定碼率,并按照確定的碼率對(duì)輸入進(jìn)行LDPC編碼。

請(qǐng)參閱圖8,圖8是本申請(qǐng)用于錯(cuò)誤檢查和糾正的解碼裝置一實(shí)施方式的結(jié)構(gòu)示意圖。該解碼裝置800用于從存儲(chǔ)器中讀取數(shù)據(jù)并解碼。該解碼裝置800包括讀取模塊810、解碼模塊820及輸出模塊830。

讀取模塊810用于存儲(chǔ)控制器在接收到數(shù)據(jù)的讀取指令時(shí),從存儲(chǔ)器中讀取所述數(shù)據(jù)及所述數(shù)據(jù)的編碼信息,其中,所述編碼信息包括所述數(shù)據(jù)采用的編碼方式,所述數(shù)據(jù)采用的編碼方式取決于所述數(shù)據(jù)的重要程度,在所述數(shù)據(jù)的重要程度為第一重要級(jí)時(shí),采用BCH和低密度奇偶校驗(yàn)碼LDPC的結(jié)合或不高于第一碼率的LDPC的編碼方式;在所述數(shù)據(jù)的重要程度為第二重要級(jí)時(shí),采用所述BCH或者高于所述第一碼率的LDPC的編碼方式,所述第一重要級(jí)的重要程度大于所述第二重要級(jí)的重要程度。

解碼模塊820用于根據(jù)所述編碼信息確定所述數(shù)據(jù)的編碼方式,并采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼,其中,所述解碼方式包括BCH和LDPC的結(jié)合、不高于第一碼率的LDPC、BCH或者高于所述第一碼率的LDPC。

輸出模塊830用于輸出進(jìn)行所述解碼后得到的數(shù)據(jù)。

可選地,所述第二重要級(jí)包括第一重要子級(jí)和第二重要子級(jí),所述第一重要子級(jí)的重要程度大于所述第二重要子級(jí)的重要程度。所述數(shù)據(jù)采用的編碼方式還包括在所述數(shù)據(jù)的重要程度為所述第一重要子級(jí)時(shí)而采用的高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH或高于所述第一碼率且低于第二碼率的LDPC的編碼方式,在所述數(shù)據(jù)的重要程度為所述第二重要子級(jí)時(shí)而采用的不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH或不低于所述第二碼率的LDPC的編碼方式,其中,所述第一碼率高于所述第二碼率。所述BCH或者高于所述第一碼率的LDPC解碼方式包括高于預(yù)設(shè)校驗(yàn)位數(shù)的BCH、高于所述第一碼率且低于第二碼率的LDPC、不高于所述預(yù)設(shè)校驗(yàn)位數(shù)的BCH、或不低于所述第二碼率的LDPC的解碼方式。

可選地,該解碼裝置800還可包括警報(bào)模塊,用于檢測(cè)到所述BCH的錯(cuò)誤比特?cái)?shù)超過(guò)預(yù)設(shè)比特值和/或所述LDPC的實(shí)際迭代次數(shù)超過(guò)預(yù)設(shè)次數(shù)時(shí),發(fā)出所述存儲(chǔ)器中存儲(chǔ)所述數(shù)據(jù)的塊出現(xiàn)問(wèn)題的警報(bào)。

可選地,所述存儲(chǔ)器為SLC、MLC或TLC類(lèi)型的NAND存儲(chǔ)器。所述數(shù)據(jù)的編碼信息還包括q的取值,當(dāng)所述存儲(chǔ)器的類(lèi)型為SLC時(shí),所述q取值為1,當(dāng)所述存儲(chǔ)器的類(lèi)型為MLC時(shí),所述q取值為2,當(dāng) 所述存儲(chǔ)器的類(lèi)型為T(mén)LC時(shí),所述q取值為3。解碼模塊820在所述采用與所述編碼方式對(duì)應(yīng)的解碼方式對(duì)所述數(shù)據(jù)進(jìn)行解碼的步驟中,若解碼模塊820進(jìn)行所述LDPC解碼,則解碼模塊820具體用于將所述編碼信息中的所述q的取值作為所述LDPC解碼中的有限域GF(2^q)中的q的取值,以進(jìn)行所述LDPC解碼。

可選地,所述BCH的校驗(yàn)矩陣按照所述BCH的校驗(yàn)位數(shù)進(jìn)行選擇,和/或,所述LDPC的校驗(yàn)矩陣按照所述LDPC的碼率進(jìn)行選擇。

上述編碼裝置的各模塊具體用于執(zhí)行上述編碼方法中的對(duì)應(yīng)步驟,上述解碼裝置的各模塊具體用于執(zhí)行上述解碼方法中的對(duì)應(yīng)步驟,具體請(qǐng)參閱以上相關(guān)說(shuō)明,在此不作贅述。

本申請(qǐng)還提供一種用于錯(cuò)誤檢查和糾正的編解碼處理器的實(shí)施方式,該編解碼處理器可設(shè)置在存儲(chǔ)器中,并該編解碼處理器可包括以上實(shí)施例中的編碼裝置和/或以上實(shí)施例中的解碼裝置。例如,在一實(shí)施例中,該存儲(chǔ)器包括編碼裝置和解碼裝置。編碼裝置為以上實(shí)施例中的編碼裝置。解碼裝置為以上實(shí)施例中的解碼裝置。

上述方案中,存儲(chǔ)控制器通過(guò)分析數(shù)據(jù)的重要程度,并根據(jù)不同重要程度為數(shù)據(jù)配置不同的編碼方式,即越重要的數(shù)據(jù)配置錯(cuò)誤檢查及糾正能力越強(qiáng)的編碼方式,實(shí)現(xiàn)了存儲(chǔ)器對(duì)數(shù)據(jù)編碼方式的自適應(yīng)配置,且保證了重要數(shù)據(jù)的可靠及準(zhǔn)確存儲(chǔ)。同時(shí),存儲(chǔ)控制器對(duì)于重要程度低的數(shù)據(jù)選擇錯(cuò)誤檢查及糾正能力較低的編碼方式,降低了其所需編碼能力及校驗(yàn)碼長(zhǎng),提高了編碼效率和節(jié)省了存儲(chǔ)空間。

在本申請(qǐng)所提供的幾個(gè)實(shí)施方式中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施方式僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。

所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施方式方案的目的。

另外,在本申請(qǐng)各個(gè)實(shí)施方式中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施方式所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
二连浩特市| 桂平市| 五大连池市| 仁寿县| 榆林市| 泗洪县| 都昌县| 五莲县| 黑水县| 奇台县| 乡宁县| 四平市| 德惠市| 平顺县| 车致| 三原县| 谷城县| 周宁县| 洛隆县| 仙桃市| 花莲市| 临颍县| 苍南县| 宣汉县| 汉沽区| 宜阳县| 婺源县| 英山县| 梧州市| 天全县| 岳阳县| 孟津县| 和顺县| 东乌珠穆沁旗| 青铜峡市| 白水县| 桦甸市| 昌乐县| 玉田县| 新宾| 灵台县|