本發(fā)明涉及一種奇偶校驗(paritycheck)技術,且特別涉及一種低密度奇偶校驗(low-densityparity-check,以下稱ldpc)裝置與ldpc的操作方法。
背景技術:
與傳統(tǒng)的硬盤設備相比,配置了快閃存儲器(flashmemory)的固態(tài)硬盤(solidstatedrive,ssd)具有快速讀/寫性能和低功耗等特性。固態(tài)硬盤是一種常用的數據存儲設備。固態(tài)硬盤的系統(tǒng)(固件與硬件)可以將原數據進行低密度奇偶校驗(low-densityparity-check,以下稱ldpc)編碼以獲得原碼字(codeword),然后將碼字寫入固態(tài)硬盤的快閃存儲器。固態(tài)硬盤的系統(tǒng)(固件與硬件)還可以從固態(tài)硬盤讀出原碼字,然后對原碼字進行l(wèi)dpc解碼(ldpcdecoding)以獲得經解碼碼字(原數據)。
ldpc的校驗矩陣h定義了多個變量節(jié)點(variablenode,vn)與多個校驗節(jié)點(checknode,cn)之間的關系。校驗矩陣h可以依照設計需求來決定。所述ldpc解碼的迭代運算包括,依據c2v信息計算從變量節(jié)點被傳送到校驗節(jié)點的v2c信息,以及依據所述v2c信息計算從校驗節(jié)點被傳送到變量節(jié)點的所述c2v信息。所述v2c信息的計算細節(jié)以及所述c2v信息的計算細節(jié)為已知技術,故不再贅述。一次“計算所有變量節(jié)點的v2c信息”以及一次“計算所有校驗節(jié)點的c2v信息”構成了一次迭代。傳統(tǒng)ldpc裝置在每一次迭代完成后會判斷l(xiāng)dpc迭代運算是否已收斂。當ldpc迭代運算已收斂時,表示ldpc解碼成功,因此傳統(tǒng)ldpc裝置可以停止/完成ldpc迭代運算。
無論如何,傳統(tǒng)ldpc裝置在每一次迭代完成后才會判斷l(xiāng)dpc迭代運算是否已收斂。
技術實現要素:
本發(fā)明提供一種低密度奇偶校驗(low-densityparity-check,以下稱ldpc)裝置與ldpc的操作方法,其可以在一次迭代的過程中進行判定ldpc迭代運算是否已收斂,而不用等到一次迭代完成后才判定。
本發(fā)明的實施例提供一種ldpc裝置,用以將原碼字解碼為經解碼碼字。所述ldpc裝置包括ldpc迭代計算電路、決定位存儲電路以及收斂檢測電路。ldpc迭代計算電路被配置為使用原碼字去進行l(wèi)dpc迭代運算,以獲得多個變量節(jié)點(variablenode,vn)的一個對應變量節(jié)點的新決定位(decisionbit)值。決定位存儲電路耦接至ldpc迭代計算電路,以接收對應變量節(jié)點的新決定位值。決定位存儲電路被配置為,使用新決定位值來更新被存儲于決定位存儲電路的這些變量節(jié)點的多個舊決定位值中的一個對應舊決定位值。當ldpc迭代運算為收斂時,決定位存儲電路所存儲的這些變量節(jié)點的這些舊決定位值作為經解碼碼字。收斂檢測電路耦接至ldpc迭代計算電路,以接收新決定位值。收斂檢測電路耦接至決定位存儲電路,以讀取對應舊決定位值。收斂檢測電路可以存儲多個校驗節(jié)點(checknode,cn)的每一個的校驗和。收斂檢測電路可以使用新決定位值與對應舊決定位值來更新這些校驗和中的一個對應校驗和。收斂檢測電路可以依據這些校驗節(jié)點的這些校驗和,來判定ldpc迭代運算是否為收斂。
本發(fā)明的實施例提供一種ldpc的操作方法。所述ldpc的操作方法包括:藉由使用原碼字去進行l(wèi)dpc迭代運算,以獲得多個變量節(jié)點的一個對應變量節(jié)點的新決定位值;藉由使用新決定位值來更新被存儲于決定位存儲電路的這些變量節(jié)點的多個舊決定位值中的一個對應舊決定位值,其中當ldpc迭代運算為收斂時,決定位存儲電路所存儲的這些變量節(jié)點的這些舊決定位值作為經解碼碼字;存儲多個校驗節(jié)點的每一個的校驗和;藉由使用新決定位值與對應舊決定位值來更新這些校驗和中的一個對應校驗和;以及依據這些校驗節(jié)點的這些校驗和來判定ldpc迭代運算是否為收斂。
基于上述,本發(fā)明諸實施例所提供的ldpc裝置與ldpc的操作方法,其可以在多個變量節(jié)點的任何一個獲得了新決定位值時,便即時地使用新決定位值與對應舊決定位值來更新這些校驗和中的一個對應校驗和。因此,本發(fā)明諸實施例所提供的ldpc裝置與ldpc的操作方法可以即時地依據這些校驗節(jié)點的這些校驗和來判定ldpc迭代運算是否為收斂,而不用等到一次迭代完成后,所有變量節(jié)點都獲得了新決定位值時才判定。
為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細說明如下。
附圖說明
圖1是依照本發(fā)明一實施例說明一種非易失性存儲器裝置的電路方塊(circuitblock)示意圖。
圖2是依照本發(fā)明一實施例說明圖1所示低密度奇偶校驗(ldpc)裝置的電路方塊示意圖。
圖3是依照本發(fā)明一實施例說明一種低密度奇偶校驗(ldpc)的操作方法的流程示意圖。
圖4是依照本發(fā)明一實施例說明圖2所示收斂檢測電路的電路方塊示意圖。
【符號說明】
10:主機
100:非易失性存儲器裝置
110:控制器
111:中央處理單元
112:存儲器控制電路
113:存儲器緩沖器
114:低密度奇偶校驗(ldpc)裝置
120:非易失性存儲器
210:ldpc迭代計算電路
211:變量節(jié)點(vn)計算電路
212:校驗節(jié)點(cn)計算電路
220:決定位存儲電路
230:收斂檢測電路
231:第一異或門
232:第二異或門
233:校驗和存儲電路
c2v:c2v信息
csj:對應校驗和
in:原碼字
out:經解碼的數據
s310~s360:步驟
v2c:v2c信息
vs:新決定位值
vs_old:對應舊決定位值
具體實施方式
在本申請說明書全文(包括權利要求書)中所使用的“耦接(或連接)”一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)于第二裝置,則應該被解釋成該第一裝置可以直接連接于該第二裝置,或者該第一裝置可以通過其他裝置或某種連接手段而間接地連接至該第二裝置。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。
圖1是依照本發(fā)明一實施例說明一種非易失性存儲器裝置100的電路方塊(circuitblock)示意圖。依照設計需求,非易失性存儲器裝置100可以是隨身碟、固態(tài)硬盤(solidstatedisc,ssd)或是其他存儲裝置。非易失性存儲器裝置100可以耦接至主機(host)10。此主機10可以是計算機、手持式電話、多媒體播放器、相機或是其他電子裝置。非易失性存儲器裝置100包括控制器(控制器電路)110以及非易失性存儲器120。依照設計需求,非易失性存儲器120可以是與非快閃存儲器(nandflashmemory)或是其他非易失性存儲電路/元件。
控制器110耦接(或連接)至非易失性存儲器120??刂破?10可以依照主機10的寫入命令(writecommand)的邏輯地址而存取非易失性存儲器120。在一些實施例中,所述邏輯地址信息可以是邏輯塊地址(logicalblockaddress,lba)或是其他邏輯地址。在圖1所示實施例中,控制器110包括中央處理單元111、存儲器控制電路112、存儲器緩沖器113與低密度奇偶校驗(low-densityparity-check,以下稱ldpc)裝置114。中央處理單元111經由通信接口耦接至主機10。依照設計需求,所述通信接口包括小型計算機系統(tǒng)接口(smallcomputersysteminterface,scsi)、串行連接小型計算機系統(tǒng)接口(serialattachedscsi,sas)、增強型小型裝置接口(enhancedsmalldiskinterface,esdi)、串行先進技術連接(serialadvancedtechnologyattachment,sata)、快速周邊元件互連(peripheralcomponentinterconnectexpress,pci-express)、整合式電子裝置(integrateddriveelectronics,ide)接口、通用串行總線(universalserialbus,usb)、雷電(thunderbolt)接口或其他接口。本實施例并沒有限制主機10與非易失性存儲器裝置100之間的接口結構。
當主機10發(fā)出寫入命令時,待寫入的數據可以被暫存于存儲器緩沖器113,而中央處理單元111可以將主機10的寫入命令(包含邏輯地址)轉換/解碼為對應的內部控制信號(包含非易失性存儲器120的物理地址),并將內部控制信號提供給存儲器控制電路112和/或存儲器緩沖器113。存儲器緩沖器113的例子包括動態(tài)隨機存取存儲器(dynamicrandomaccessmemory,dram)、靜態(tài)隨機存取存儲器(staticrandomaccessmemory,sram)或是其他易失性存儲器(volatilememory)。ldpc裝置114可以執(zhí)行l(wèi)dpc算法,以便將暫存于存儲器緩沖器113的數據加以編碼為碼字(codeword)。依照內部控制信號,存儲器控制電路112可以定址/控制非易失性存儲器120,以便將碼字寫入非易失性存儲器120。
當主機10發(fā)出讀取命令時,中央處理單元111可以將主機10的讀取命令(包含邏輯地址)轉換/解碼為對應的內部控制信號(包含非易失性存儲器120的物理地址)。依照內部控制信號,存儲器控制電路112可以定址/控制非易失性存儲器120,以便將非易失性存儲器120內的原碼字讀出。ldpc裝置114可以執(zhí)行l(wèi)dpc算法,以便將原碼字解碼為數據,并將經解碼的碼字暫存于存儲器緩沖器113。然后,中央處理單元111可以將暫存于存儲器緩沖器113的經解碼的碼字回傳給主機10。
ldpc的校驗矩陣h定義了多個變量節(jié)點(variablenode,vn)與多個校驗節(jié)點(checknode,cn)之間的關系。校驗矩陣h的行(row)的數量表示校驗節(jié)點的數量,而校驗矩陣h的列(column)的數量表示變量節(jié)點的數量。在ldpc的演算過程中,信息在變量節(jié)點與校驗節(jié)點之間傳遞。經過ldpc演算過程中的多次迭代運算,使變量節(jié)點的信息收斂而完成ldpc的解碼演算。當ldpc迭代運算為收斂時,這些變量節(jié)點的信息的決定位(decisionbit)值作為所述經解碼的碼字。所述決定位又可稱為符號(正負號)位(signbit)。
圖2是依照本發(fā)明一實施例說明圖1所示低密度奇偶校驗(ldpc)裝置114的電路方塊示意圖。ldpc裝置114可以進行l(wèi)dpc迭代運算,以解碼原碼字in而獲得經解碼的碼字out。在圖2所示實施例中,ldpc裝置114包括ldpc迭代計算電路210、決定位存儲電路220以及收斂檢測電路230。ldpc迭代計算電路210可以使用原碼字in去進行l(wèi)dpc迭代運算,以獲得多個變量節(jié)點的決定位值vs。ldpc裝置114可以將一個ldpc的校驗矩陣h切分為多個子矩陣。每一個子矩陣被稱為循環(huán)矩陣(circulant)。ldpc迭代計算電路210可以使用這些循環(huán)矩陣的每一個來計算至少一個對應變量節(jié)點的新決定位值vs。
在圖2所示實施例中,ldpc迭代計算電路210包括變量節(jié)點(vn)計算電路211與校驗節(jié)點(cn)計算電路212。依照設計需求,在一些實施例中,ldpc裝置114還可以包括一個對數相似率(loglikelihoodratio,以下稱llr)轉換電路(未繪示),而此llr轉換電路(未繪示)可以依據映射關系來將原碼字in轉換為llr向量給vn計算電路211?;蛘咴谄渌麑嵤├校缭趫D2所示實施例中,llr轉換電路可以依照設計需求而被內嵌于vn計算電路211中,因此vn計算電路211可以依據映射關系來將原碼字in轉換為llr向量。在一些實施例中,對數相似率轉換電路可以為獨立于ldpc裝置114之外的一前級電路。llr向量中的任何一個llr值是表示“原碼字in的某一特定位是某一特定值”的可能性。llr的范圍可以從-x到x。在一些實施例中,-x表示原碼字in的某一特定位被確信為邏輯“1”,而x表示原碼字in的某一特定位被確信為邏輯“0”。在另一些實施例中,-x表示原碼字in的某一特定位被確信為邏輯“0”,而x表示原碼字in的某一特定位被確信為邏輯“1”。
vn計算電路211可以使用所述llr向量與至少一c2v信息(亦即圖2所示“c2v”,由cn計算電路212所提供),來計算從變量節(jié)點到校驗節(jié)點的v2c信息。vn計算電路211所進行的計算相當在校驗矩陣h的列處理。vn計算電路211所進行的計算v2c信息的細節(jié)可以是已知算法或是其他算法,故不再贅述。vn計算電路211可以將變量節(jié)點的新信息的決定位值vs輸出給決定位存儲電路220。cn計算電路212耦接至vn計算電路211,以接收所述v2c信息(亦即圖2所示“v2c”)。cn計算電路212可以使用所述v2c信息,來計算從校驗節(jié)點到變量節(jié)點的所述c2v信息,以及將所述c2v信息(亦即圖2所示“c2v”)提供給vn計算電路211。cn計算電路212所進行的計算相當在校驗矩陣h的行處理。cn計算電路212所進行的計算c2v信息的細節(jié)可以是已知算法或是其他算法,故不再贅述。至此,vn計算電路211與cn計算電路212完成了一次迭代。
圖3是依照本發(fā)明一實施例說明一種低密度奇偶校驗(ldpc)的操作方法的流程示意圖。請參照圖2與圖3,ldpc迭代計算電路210可以在步驟s310中藉由使用原碼字in去進行l(wèi)dpc迭代運算,以獲得對應變量節(jié)點的新決定位值vs。決定位存儲電路220耦接至ldpc迭代計算電路210,以接收對應變量節(jié)點的新決定位值vs。在步驟s320中,決定位存儲電路220可以使用新決定位值vs來更新被存儲于決定位存儲電路220內的這些變量節(jié)點的多個舊決定位值中的一個對應舊決定位值vs_old。當ldpc迭代運算為收斂時,決定位存儲電路220所存儲的這些變量節(jié)點的這些舊決定位值可以作為經解碼碼字out。
收斂檢測電路230耦接至ldpc迭代計算電路210,以接收新決定位值vs。收斂檢測電路230可以使用校驗矩陣h來計算多個校驗節(jié)點的每一個的校驗和(checksum)。收斂檢測電路230可以存儲這些校驗節(jié)點的每一個的校驗和(步驟s330)。
收斂檢測電路230還耦接至決定位存儲電路220。在決定位存儲電路220所存儲的對應舊決定位值vs_old還沒被更新前,收斂檢測電路230可以從決定位存儲電路220讀取對應舊決定位值vs_old。在步驟s340中,收斂檢測電路230可以使用新決定位值vs(由ldpc迭代計算電路210提供)與對應舊決定位值vs_old(由決定位存儲電路220提供)來更新這些校驗和中的一個對應校驗和。因此,在多個變量節(jié)點的任何一個獲得了新決定位值vs時,收斂檢測電路230可以即時地更新這些校驗和中的一個對應校驗和。
舉例來說,收斂檢測電路230可以在步驟s340中使用決定位存儲電路220所提供的對應舊決定位值vs_old來去除在對應校驗和中所述對應舊決定位值vs_old所對應的成份,然后將ldpc迭代計算電路210所提供的新決定位值vs所對應的成份加入對應校驗和。依照設計需求,在一些實施例中,步驟s340可以計算下述等式check_sum_new=check_sum_oldxord_oldxord_new,以更新所述對應校驗和。其中,check_sum_new為被更新后的所述對應校驗和,check_sum_old為被更新前的所述對應校驗和,d_old為多個變量節(jié)點的第i個變量節(jié)點的舊決定位值(對應舊決定位值vs_old),d_new為第i個變量節(jié)點的新決定位值(新決定位值vs),而xor為異或(exclusive-or)運算。假設第i個變量節(jié)點連接了第j個校驗節(jié)點,則收斂檢測電路230可以在步驟s340中使用上述等式,來計算出第j個校驗節(jié)點的所述對應校驗和check_sum_new。
在步驟s350中,依據這些校驗節(jié)點的這些校驗和,收斂檢測電路230可以判定ldpc迭代運算是否為收斂。舉例來說(但不限于此),收斂檢測電路230可以校驗這些校驗節(jié)點的這些校驗和是否都為0。當這些校驗和都為0時,收斂檢測電路230可以判定ldpc迭代運算為收斂。當步驟s360判斷l(xiāng)dpc迭代運算尚未收斂時,表示ldpc解碼尚未成功,因此步驟s310、s320、s330、s340、s350與s360被再一次執(zhí)行。
本實施例所提供的ldpc裝置114可以在多個變量節(jié)點的任何一個獲得了新決定位值vs時,便即時地使用新決定位值vs與對應舊決定位值vs_old來更新這些校驗和中的一個對應校驗和。因此,本實施例所提供的ldpc裝置114與ldpc的操作方法可以即時地依據這些校驗節(jié)點的這些校驗和來判定ldpc迭代運算是否為收斂,而不用等到一次完整的迭代完成后才判定。對于分層(layered)ldpc解碼算法(在校驗矩陣h中,以一層一層的方式進行l(wèi)dpc解碼)而言,每一層的解碼操作可以稱為子迭代(sub-iteration)。本實施例所提供的ldpc裝置114與ldpc的操作方法可以即時地更新對應校驗和以便判定ldpc迭代運算是否為收斂,而不用等到一次完整的子迭代完成后才判定。
當步驟s360判斷l(xiāng)dpc迭代運算已收斂時,表示ldpc解碼成功,因此ldpc迭代運算可以被停止。在一些情況下,ldpc迭代運算的迭代次數已達到最大迭代次數,但ldpc迭代運算尚未收斂,此時ldpc迭代運算可以被斷定解碼失敗而停止迭代運算。
圖4是依照本發(fā)明一實施例說明圖2所示收斂檢測電路230的電路方塊示意圖。在圖4所示實施例中,收斂檢測電路230包括第一異或門231、第二異或門232以及校驗和存儲電路233。第一異或門231的第一輸入端耦接至ldpc迭代計算電路210,以接收新決定位值vs。第一異或門231的第二輸入端耦接至決定位存儲電路220,以讀取對應舊決定位值vs_old。第二異或門232的第一輸入端耦接至第一異或門231的輸出端。校驗和存儲電路233的輸出端耦接至第二異或門232的第二輸入端,以提供所述對應校驗和csj(舊的校驗和)。第二異或門232的輸出端耦接至校驗和存儲電路233的輸入端,以即時地更新對應校驗和csj。
值得注意的是,在不同的應用情境中,控制器110、中央處理單元111、存儲器控制電路112、存儲器緩沖器113、低密度奇偶校驗(ldpc)裝置114、ldpc迭代計算電路210、決定位存儲電路220和/或收斂檢測電路230的相關功能可以利用一般的編程語言(programminglanguages,例如c或c++)、硬件描述語言(hardwaredescriptionlanguages,例如veriloghdl或vhdl)或其他合適的編程語言來實現為軟件、固件或硬件??蓤?zhí)行所述相關功能的軟件(或固件)可以被布置為任何已知的計算機可存取介質(computer-accessiblemedias),例如磁帶(magnetictapes)、半導體(semiconductors)存儲器、磁盤(magneticdisks)或光盤(compactdisks,例如cd-rom或dvd-rom),或者可通過互聯網(internet)、有線通信(wiredcommunication)、無線通信(wirelesscommunication)或其它通信介質傳送所述軟件(或固件)。所述軟件(或固件)可以被存放在計算機的可存取介質中,以便于由計算機的處理器來存取/執(zhí)行所述軟件(或固件)的編程碼(programmingcodes)。另外,本發(fā)明的裝置和方法可以通過硬件和軟件的組合來實現。
綜上所述,本發(fā)明諸實施例所提供的ldpc裝置114與ldpc的操作方法,其可以在多個變量節(jié)點的任何一個獲得了新決定位值vs時,便即時地使用新決定位值vs與對應舊決定位值vs_old來更新這些校驗和中的一個對應校驗和。因此,本發(fā)明諸實施例所提供的ldpc裝置114與ldpc的操作方法可以即時地依據這些校驗節(jié)點的這些校驗和來判定ldpc迭代運算是否為收斂,而不用等到一次完整迭代(或完整子迭代)完成后,所有變量節(jié)點都獲得了新決定位值時才判定。
雖然本發(fā)明已以實施例公開如上,然其并非用以限定本發(fā)明,本領域技術人員,在不脫離本發(fā)明的精神和范圍內,當可作些許的更動與潤飾,故本發(fā)明的保護范圍當視所附權利要求書界定范圍為準。