TWI829252B - 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 - Google Patents
低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 Download PDFInfo
- Publication number
- TWI829252B TWI829252B TW111127099A TW111127099A TWI829252B TW I829252 B TWI829252 B TW I829252B TW 111127099 A TW111127099 A TW 111127099A TW 111127099 A TW111127099 A TW 111127099A TW I829252 B TWI829252 B TW I829252B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- bit
- selection strategy
- sequential selection
- decoding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004590 computer program Methods 0.000 title claims abstract description 6
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 42
- 230000008859 change Effects 0.000 claims description 67
- 238000004364 calculation method Methods 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 52
- 208000011580 syndromic disease Diseases 0.000 claims description 36
- 230000006872 improvement Effects 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 101100443238 Caenorhabditis elegans dif-1 gene Proteins 0.000 description 1
- QAHFOPIILNICLA-UHFFFAOYSA-N Diphenamid Chemical compound C=1C=CC=CC=1C(C(=O)N(C)C)C1=CC=CC=C1 QAHFOPIILNICLA-UHFFFAOYSA-N 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004242 micellar liquid chromatography Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000004809 thin layer chromatography Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本發明涉及一種低密度奇偶校檢碼的解碼方法、電腦程式產品及裝置。該方法包含:在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,改為非順序性選擇策略,並且在非順序性選擇策略下對碼字執行位元翻轉演算法。通過非順序性選擇策略的使用,可讓位元翻轉演算法跳出陷阱狀態。
Description
本發明涉及儲存裝置,尤指一種低密度奇偶校檢碼的解碼方法、電腦程式產品及裝置。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。提升從閃存模組讀取資料的效率,一直是影響閃存控制器的整體效能的重要課題。因此.本發明提出一種低密度奇偶校檢碼的解碼方法、電腦程式產品及裝置,用於提升讀取資料的效率。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種由處理單元執行的低密度奇偶校檢碼的解碼方法。所述方法包含以下步驟:在使用順序性選擇策略的觀察期間後,判
斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,改為非順序性選擇策略,並且在非順序性選擇策略下對碼字執行位元翻轉演算法。
本說明書另涉及一種電腦程式產品,包含程式碼。當處理單元執行所述程式碼時,實施如上所述的低密度奇偶校檢碼的解碼方法。
本說明書另涉及一種低密度奇偶校檢碼的解碼裝置,包含:變化節點計算電路;以及處理單元,耦接於變化節點計算電路。處理單元用於在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,改為非順序性選擇策略,並且驅動變化節點計算電路在非順序性選擇策略下對碼字執行位元翻轉演算法。
碼字分為相同長度的多個塊。順序性選擇策略指順序性選擇碼字中的多個塊,並且驅動變化節點計算電路每次只針對碼字中選擇的塊執行位元翻轉演算法。非順序選擇策略指不同於順序性選擇策略的碼字中多個塊的任何順序組合。
上述實施例的優點之一,通過如上所述的非順序性選擇策略的使用,可讓位元翻轉演算法跳出陷阱狀態。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:電子裝置
110:主機端
130:閃存控制器
131:主機介面
134:處理單元
136:隨機存取記憶體
137:NAND閃存控制器
138:LDPC解碼器
139:閃存介面
140:靜態隨機存取記憶體
150:閃存模組
151:介面
153#0~153#15:NAND閃存單元
CH#0~CH#3:通道
CE#0~CE#3:致能訊號
31#0~31#2:校驗節點
33#0~33#5:變化節點
412:處理單元
416:變化節點計算電路
418:校驗節點計算電路
431,433:靜態隨機存取記憶體中的區域
50:碼字
510,530,550,570:塊
575:LDPC碼
S610~S650:方法步驟
S711~S759:方法步驟
圖1為依據本發明實施例的電子裝置的系統架構圖。
圖2為依據本發明實施例的閃存模組的示意圖。
圖3為依據本發明實施例的範例LDPC碼的示意圖。
圖4為依據本發明實施例的NAND閃存控制器的方塊圖。
圖5為依據本發明實施例的碼字的分塊示意圖。
圖6為依據本發明實施例的錯誤修正方法的流程圖。
圖7為依據本發明實施例的位元翻轉程序的流程圖。
圖8為依據本發明實施例的臨界值差異的變化示意圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
參考圖1。電子裝置10包含主機端(Host Side)110、閃存控制器130及閃存模組150,並且閃存控制器130及閃存模組150可合稱為裝置端(Device Side)。電子裝置10可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品之中。主機端110與閃存控制器130的主機介面(Host Interface)131之間可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元
件互聯(peripheral component interconnect express,PCI-E)、通用快閃記憶儲存(Universal Flash Storage,UFS)、嵌入式多媒體卡(Embedded Multi-Media Card,eMMC)等通訊協定彼此溝通。NAND閃存控制器(NAND Flash Controller,NFC)137的閃存介面(Flash Interface)139與閃存模組150之間可以雙倍資料率(Double Data Rate,DDR)通訊協定彼此溝通,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他通訊協定。閃存控制器130包含處理單元134,可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功能。處理單元134通過主機介面131接收主機命令,例如讀取命令(Read Command)、寫入命令(Write Command)、丟棄命令(Discard Command)、抹除命令(Erase Command)等,排程並執行這些命令。閃存控制器130另包含隨機存取記憶體(Random Access Memory,RAM)136,可實施為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)或上述兩者的結合,用於配置空間作為資料緩衝區,儲存從主機端110讀取並即將寫入閃存模組150的使用者資料(也可稱為主機資料),以及從閃存模組150讀取並即將輸出給主機端110的使用者資料。隨機存取記憶體136另可儲存執行過程中需要的資料,例如,變數、資料表、主機與閃存位址對照表(Host-to-Flash Address Mapping Table,簡稱H2F表)、閃存與主機位址對照表(Flash-to-Host Address Mapping Table,簡稱F2H表)等。NAND閃存控制器137提供存取閃存模組150時需要的功能,例如命令序列器(Command Sequencer)、低密度奇偶校驗(Low-Density Parity-Check,LDPC)等。
閃存控制器130中可配置共享匯流排架構(Shared Bus Architecture),用於讓元件之間彼此耦接以傳遞資料、位址、控制訊號等,這些元件包含主機介面131、處理單元134、RAM 136、NAND閃存控制器137等。匯流排包含並行的物理線,連接閃存控制器130中兩個以上的組件。共享匯流排是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當處理單元134想要讀取RAM 136的特定位址上的資料時,處理單元134在位址線上傳送此位址給RAM 136。接著,此位址的資料會在資料線上回覆給處理單元134。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。
閃存模組150提供大量的儲存空間,通常是數百個千兆位元組(Gigabytes,GB),甚至是數個兆兆位元組(Terabytes,TB),用於儲存大量的使用者資料,例如高解析度圖片、影片等。閃存模組150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可組態為單層式單元(Single Level Cells,SLCs)、多層式單元(Multiple Level Cells,MLCs)三層式單元(Triple Level Cells,TLCs)、四層式單元(Quad-Level Cells,QLCs)或上述的任意組合。處理單元134可通過閃存介面139寫入使用者資料到閃存模組150中的指定位址(目的位址),以及從閃存模組150中的指定位址(來源位址)讀取使用者資料。閃存介面139使用數個電子訊號來協調閃存控制器130與閃存模組150間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(Clock Signal)與控制訊號(Control Signal)。資料線可用於傳遞命令、位址、讀出及寫入的資料;控制訊號線可用於傳遞晶片致能(Chip Enable,CE)、位址提取致能(Address Latch Enable,ALE)、命令提取致能(Command Latch
Enable,CLE)、寫入致能(Write Enable,WE)等控制訊號。
參考圖2,閃存模組150中的介面151可包含四個輸出入通道(I/O channels,以下簡稱通道)CH#0至CH#3,每一個通道連接四個NAND閃存單元,例如,通道CH#0連接NAND閃存單元153#0、153#4、153#8及153#12。每個NAND閃存單元可封裝為獨立的芯片(die)。閃存介面139可通過介面151發出致能訊號CE#0至CE#3中的一個來致能NAND閃存單元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接著以並行的方式從致能的NAND閃存單元讀取使用者資料,或者寫入使用者資料至致能的NAND閃存單元。所屬技術領域人員可依據系統的需求改變閃存模組150的設計,在閃存模組150中配置更多或更少的通道,和/或將每個通道連接上更多或更少的NAND閃存單元,本發明並不因此受限。
NAND閃存控制器137可包含低密度奇偶校檢編碼器(LDPC Encoder),用於依據使用者資料來產生低密度奇偶校檢碼(LDPC Code),其是一種線性的錯誤修正碼(Linear Error Correcting Code)。舉例來說,LDPC碼的產生可使用以下公式表示:MSG1xn ⊙ PCMnx(n+m)=CW1x(n+m)
其中,MSG1xn代表使用者資料的1列、n行矩陣,PCMnx(n+m)代表n列、(n+m)行奇偶校檢矩陣(Parity Check Matrix),CW1x(n+m)代表最後產生的碼字(Codeword)的1列、(n+m)行矩陣,⊙代表模2乘法(Modulo 2 Multiplication)。奇偶校檢矩陣可包含類循環(Quasi-Cyclic,QC)結構,並且CW1x(n+m)中的前n個位元的值等於MSG1xn的值,而CW1x(n+m)中的後m個位元的值稱為LDPC碼。舉例如下:
所屬技術領域人員知道可使用習知的奇偶校檢矩陣和高效演算法來產生LDPC碼,例如二階段編碼(2-stage Encoding)等。
NAND閃存控制器137可包含LDPC解碼器(LDPC Decoder)138,用於校驗通過閃存介面139從閃存模組150被讀出的碼字(Codeword,包含使用者資料和LDPC碼)並判斷碼字中是否包含錯誤位元。一但發現碼字中存在錯誤位元,LDPC解碼器138嘗試回復出正確的碼字,並且從碼字中獲取使用者資料。如果經過預定數目的嘗試,還沒有辦法回復出正確的碼字,則LDPC解碼器138判定此碼字為無法修復錯誤的碼字(Uncorrectable Codeword)。關於LDPC解碼,參考圖3所示的範例(n=3,k=6)LDPC碼。方塊33#0至33#5代表變化節點(Variable Nodes),方塊31#0至31#2代表校驗節點(Check Nodes)。變化節點33#0至33#5中的位元形成碼字,由使用者資料和LDPC碼組成,其中的位元必須滿足圖形限制(Graphical Constrains)。詳細來說,所有連接到一個變化節點的線具有相同的值,並且所有連接到一個校驗節點的加總必須除以二後的餘數為0(也就是說,其加總起來為偶數,或者具有偶數個奇數值)。校驗節點31#0至31#2又可稱為校驗子(Syndrome)。
NAND閃存控制器137還包含靜態隨機存取記憶體(Static Random Access Memory,SRAM)140,用於儲存解碼過程中所需的資料。閃存介面139可儲存從閃存模組150讀取的碼字(包含多個硬位元)和軟位元在SRAM 140中的指定位址。每個硬位元可對應至少一個軟位元,對應的軟位元用於指出此硬位元的信心程度(Likelihood of Belief)。為了修正硬位元中的錯誤位元,SRAM 140還需要配置空間來儲存在解碼過程中的更新後的變化節點以及其對應的軟位元。類似地,每個變化節點可對應至少一個軟位元,對應的軟位元用於指出此變化節點的信心程度。
參考圖4所示的NAND閃存控制器137的方塊圖。詳細來說,LDPC解碼器(LDPC Decoder)138包含兩個重要的電路:校驗節點計算電路(Check-node Calculation Circuit)418和變化節點計算電路
(Variable-node Calculation Circuit)416。校驗節點計算電路418對硬位元或者變化節點,以及奇偶校檢矩陣執行模二乘法以計算出校驗子。變化節點計算電路416依據相應於硬位元或者變化節點的軟位元,以及校驗子執行習知的位元翻轉演算法(Bit Flipping Algorithm)以產生新的變化節點,並且使用習知的公式來計算新的變化節點的軟位元。SRAM 140中可配置區域431,用於儲存硬位元和變化節點,以及配置區域433,用於儲存硬位元和變化節點所對應的軟位元。閃存介面139將從閃存模組150讀取的碼字(包含多個硬位元)寫入區域431。在一些實施例中,閃存介面139可包含軟位元計算電路(Soft-bit Calculation Circuit),用於在從閃存模組150讀取碼字的時候,為碼字中的每個硬位元計算軟位元。並且將計算出來的軟位元寫入區域433。變化節點計算電路416分別將變化節點何其軟位元分別寫入區域431和433。LDPC解碼器138包含處理單元412,可使用多種方式實施,如使用通用硬體(例如,單一處理器、具有平行處理能力的多處理器、圖形處理器或其他具有運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功能,例如,在解碼的過程中統合校驗節點計算電路418和變化節點計算電路416的運行。所屬技術領域人員可將處理單元412設置於LDPC解碼器138之外,本發明並不因此受限。
校驗節點計算電路418用於依據區域431中儲存的硬位元或者變化節點,以及奇偶校檢矩陣來計算出校驗子。校驗子的產生可使用以下公式表示:PCMnx(n+m) ⊙ CW(n+m)x1=SYDmx1其中,PCMnx(n+m)代表n列、(n+m)行奇偶校檢矩陣,MSG(n+m)x1代表碼字的(n+m)列、1行矩陣,SYDmx1代表校驗子的m列、1行矩陣,⊙代表模2乘法。舉例如下:
由於計算後的校驗子為全”0”,碼字中不包含錯誤位元。如果計算後的校驗子不為全”0”,則碼字中包含錯誤位元。校驗節點計算電路418可輸出硬位元或者變化節點,以及計算出的校驗子至變化節點計算電路416。在一些實施例中,校驗節點計算電路418可依據相應於硬位元或者變化節點的軟位元計算校驗子的可靠度(Reliability of Syndrome),並且將校驗子及其可靠度一併傳送到變化節點計算電路416。
變化節點計算電路416依據從校驗節點計算電路418輸入的校驗子判斷是否需要修正碼字。如果不需要(也就是校驗子為全”0”),則變化節點計算電路416傳送解碼成功的訊息給處理單元412。如果需要(也就是校驗子不為全”0”),則變化節點計算電路416傳送解碼失敗的訊息給處理單元412,並且根據校驗子、硬位元或者變化節點、相應於硬位元或者變化節點的軟位元,執行習知的位元翻轉演算法,用於將碼字中可能出錯的一個或者多個硬位元或者變化節點進行狀態改變(也就是將”0b0”改變為”0b1”,或者將”0b1”改變為”0b0”)。變化節點也可合稱為碼字。變化節點計算電路416儲存更新後的變化節點至SRAM 140中的區域431。接著,變化節點計算電路416依據更新後的變化節點使用習知的公式來計算相應於更新後的變化節點的軟位元,並且儲存計算出的軟位元至SRAM 140中的區域433。軟位元可以是對數似然比(Log-likelihood Ratio,LLR)、對數似然比的量化值(Quantization of LLR)等。
一段碼字(可包含從閃存模組150讀取的硬位元,或者包含由變化節點計算電路416所產生的變化節點)可依據變化節點計算電路416
的運算能力分成相同長度(例如16、32、64、128、256、512、736位元等)的多個塊(Chunks)。碼字包含使用者資料和LDPC碼,常見的碼率(Code Rate)接近0.9。也就是說,使用者資料在整個碼字中所佔的比例接近90%。參考圖5,舉例來說,碼字50可分成相同長度的塊510、530、550和570,塊570包含LDPC碼575。雖然以下實施例以4塊為例,所屬技術領域人員可依據系統需要將一段碼字分成超過1的任意數目的塊。在先前的一些實施方式中,變化節點計算電路416反覆執行多次迭代的操作,在每次迭代中順序性地為碼字中的一個塊執行位元翻轉,而迭代的次數不能超過預設的閾值。例如,在每次迭代中,依序針對塊510、530、550和570執行位元翻轉。然而,由於奇偶校檢矩陣可能含有陷阱集(Trapping Set)而讓位元翻轉演算法進入陷阱狀態(Trapping State),使得在執行過最大允許次數的迭代之後,依然找不到可以讓校驗節點計算電路418產生校驗子為全”0”的結果。
為了避免進入陷阱狀態,本發明實施例在LDPC解碼方法中實施有別於如上所述的順序性選擇碼字中的不同塊的一種新的排程策略(Novel Scheduling Strategy)。LDPC解碼方法由LDPC解碼器138中的處理單元412執行,包含:在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,將排程策略改為非順序性選擇策略,並且在非順序性選擇策略下對碼字執行位元翻轉演算法。順序性選擇策略指順序性選擇所述碼字中的多個塊,並且每次處理只針對碼字中選擇的塊執行位元翻轉演算法。非順序性選擇策略指不同於順序性選擇策略的碼字中多個塊的任意順序組合。
詳細來說,當校驗節點計算電路418發現從閃存模組150讀取的碼字無法通過校檢時,通知處理單元412,讓處理單元412開始執行錯誤修正程序。參考如圖6所示的錯誤修正方法的流程圖,詳細說明如
下:
步驟S610:將變數i初始為0。處理單元412使用變數i來記錄迭代的次數,用以控制迭代的執行次數不超過預先設定的最大允許次數MAXitr。
步驟S621:將排程策略設定為順序性選擇碼字中的多個塊,並且一次只針對碼字中選擇的塊執行位元翻轉演算法,又可稱為順序性選擇策略。例如,參考圖4,排程策略設定為依序選擇塊510、530、550和570。
步驟S623:根據設定的排程策略(可以是順序性或者是非順序性選擇策略)執行整段碼字的位元翻轉演算法。此步驟可代表一次迭代的針對整段碼字的位元翻轉,其細節可參考之後段落中關於圖7的方法流程圖的說明。處理單元412可驅動變化節點計算電路416對碼字中的特定塊進行位元翻轉。當翻轉後的碼字通過校驗節點計算電路418的校檢時,變化節點計算電路416會發送解碼成功的訊息給處理單元412。當變化節點計算電路416對碼字中的所有需要的塊都進行位元翻轉但卻還無法解碼成功時,處理單元412知道這次迭代的位元翻轉失敗。
關於步驟S623的技術細節,參考圖7所示的位元翻轉程序的流程圖,詳細說明如下:
步驟S711:獲取排程策略(可以是順序性或者是非順序性選擇策略)。舉例來說,參考圖4,順序性選擇策略可表示為{#510,#530,#550,#570},代表依序選擇塊510、530、550和570進行位元翻轉。舉另一個例子,非順序性選擇策略可為{#530,#550,#570},代表跳過塊510,而依序選擇塊530、550和570進行位元翻轉。舉另一個例子,非順序性選擇策略可為{#570,#550,#530,#510},代表依序選擇塊570、550、530和510進行位元翻轉。
步驟S713:將變數j初始為0。處理單元412使用變數j以記錄已經翻轉過的塊數,用於控制位元翻轉的執行次數不超過需要執行的塊總數MAXchk。需要注意的是,因應不同的排程策略,不同迭代中所設定的MAXchk可能不同。
步驟S730:計算並儲存初始碼字的臨界值(Threshold),用於表示初始碼字的出錯情況,越接近“0”代表錯誤程度越低,高於“0”越多代表錯誤程度越高。處理單元412可先為碼字中的每個位元使用預設的多個習知校檢公式(Check Equations)計算出多個校驗子權重(Syndrome Weights),例如,每個位元分別使用4個校檢公式計算出4個校驗子權重。每個校檢公式可參考指定位元的軟位元、指定位元所關聯的指定校驗子、指定校驗子所關聯的其他位元,計算出1個校驗子權重,用於代表此位元的部分出錯情況,越接近“0”代表錯誤程度越低,高於“0”越多代表錯誤程度越高。以上所述的位元可指硬位元或者變化節點。處理單元412可使用塔納圖(Tanner Graph)推導出指定位元所關聯的指定校驗子,和指定校驗子所關聯的其他位元。接著,為每個位元將所有計算出的校驗子權重加總起來,用於代表此位元的整體出錯情況。處理單元412最後在所有位元的校驗子權重加總中獲取最大值,作為初始碼字的臨界值,並且將初始碼字的臨界值儲存至SRAM 140中的指定位址。
步驟S751:針對排程策略的第j個項目所指出的塊執行位元翻轉演算法,以產生翻轉後碼字。例如,假設排程策略設為{#510,#530,#550,#570},並且j=2:處理單元412可輸出塊550的地址訊號給變化節點計算電路416,用於驅動變化節點計算電路416從區域431讀取塊550的硬位元或者變化節點,並且根據校驗子、硬位元或者變化節點、相應於硬位元或者變化節點的軟位元,執行習知的位元翻轉演算法,用於將塊550中可能出錯的一個或者多個硬位元或者變化節點進行狀態改變。
步驟S753:計算並儲存翻轉後碼字的臨界值,用於表示翻轉後碼字的出錯情況,越接近“0”代表錯誤程度越低,高於“0”越多代表錯誤程度越高。計算的細節可從步驟S751推導而得,為求簡明不再贅述。
步驟S755:計算位元翻轉前的和位元翻轉後的碼字的臨界值之間的差值,用以表示翻轉後碼字的錯誤改善情況,並且儲存計算出的差值至SRAM 140中的指定位址。差值為“0”代表沒有改善,差值為正值代表變糟,差值為負值代表變好。處理單元412可在SRAM 140的指定位址中使用資料表來儲存碼字的臨界值的歷史變化。假設前三次迭代的排程策略都是{#510,#530,#550,#570}:表1顯示範例的資料表:
欄位Tr0儲存初始的碼字的臨界值,欄位Tr1儲存翻轉塊510後的碼字的臨界值,欄位Dif1儲存Tr1減去Tr0的結果。欄位Tr2儲存翻轉塊520後的碼字的臨界值,欄位Dif2儲存Tr2減去Tr1的結果。欄位Tr3儲存翻轉塊530後的碼字的臨界值,欄位Dif3儲存Tr3減去Tr2的結果。欄位Tr4儲存翻轉塊540後的碼字的臨界值,欄位Dif4儲存Tr4減去Tr3的結果。
步驟S757:判斷翻轉後的碼字是否通過校檢。變化節點計算電路416傳送翻轉後的碼字給校驗節點計算電路418,通過從校驗節點計算電路418接收到的校驗子判斷翻轉後的碼字是否通過校檢,並且依據判斷結果傳送解碼成功或者解碼失敗的訊息給處理單元412。如果處理單元412從變化節點計算電路416接收到解碼成功的訊息,
代表解碼成功。如果處理單元412從變化節點計算電路416接收到解碼失敗的訊息,代表解碼失敗,流程繼續進行步驟S758的處理。
步驟S758:將變數j加一,代表已經完成這個塊的位元翻轉。
步驟S759:判斷變數j是否大於需要執行的塊總數MAXchk。如果是,代表此迭代的位元翻轉完成,離開這個流程,並且繼續進行圖6的步驟S625的處理。否則,流程繼續進行步驟S751的處理。
步驟S625:判斷通過這次迭代的位元翻轉所產生的變化節點是否通過校檢。如果處理單元412在步驟S623中從變化節點計算電路416接收到解碼成功的訊息,代表解碼成功,結束整個錯誤修正程序。如果處理單元412在步驟S623中從變化節點計算電路416接收不到解碼成功的訊息,代表解碼失敗,流程繼續進行步驟S627的處理。
步驟S627:將變數i加一,代表已經完成這次迭代的位元翻轉。
步驟S629:判斷變數i是否大於觀察期間的預設迭代次數MAXobv,MAXobv為正整數。如果是,代表使用順序性選擇策略的觀察期間結束,流程繼續進行步驟S630的處理。否則,代表使用順序性選擇策略的觀察期間尚未結束,流程繼續進行步驟S621的處理。在一些實施例中,MAXobv設為3或者更大的值。
步驟S630:判斷變數i是否大於預先設定的最大允許次數MAXitr。如果是,代表此碼字的解碼失敗,整個流程結束。否則,流程繼續進行步驟S640的處理。
步驟S640:根據之前迭代中碼字的臨界值的歷史變化來判斷位元翻轉演算法是否進入陷阱狀態。如果是,則流程繼續進行步驟S650的處理。否則,流程繼續進行步驟S621的處理。參考圖8所示的相應於表1的臨界值差異的變化示意圖。舉例來說,處理單元412從表1的記錄發現位元翻轉演算法很可能進入陷阱狀態,因為在順序性選擇策略的觀察期間的三次迭代都出現了相同的變化模式(Variation Pattern)。
步驟S650:根據之前迭代中碼字的臨界值的歷史變化來改變排程策略,改變後的排程策略可稱為非順序性選擇策略。非順序性選擇策略指不同於順序性選擇策略的碼字中多個塊的任意順序組合。在一些實施例中,處理單元412可將前一個迭代中的第一個差值大於0的相應塊從碼字中移除而不處理。接續表1的範例,改變後的排程策略為{#530,#550,#570}。在另一些實施例中,處理單元412可依據前一個迭代中的差值由低至高安排碼字中的相應塊的順序。接續表1的範例,改變後的排程策略為{#530,#550,#570,#510}。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1、圖2、圖4中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。此外,雖然圖6、圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S610~S650:方法步驟
Claims (15)
- 一種低密度奇偶校檢碼的解碼方法,由低密度奇偶校檢解碼器中的處理單元執行,所述方法包含:在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態,其中,所述碼字分為相同長度的多個塊,所述順序性選擇策略指順序性選擇所述碼字中的多個所述塊,並且每次只針對所述碼字中選擇的塊執行所述位元翻轉演算法;以及當所述位元翻轉演算法進入所述陷阱狀態時,改為非順序性選擇策略,並且在所述非順序性選擇策略下對所述碼字執行所述位元翻轉演算法,其中,所述非順序性選擇策略指不同於所述順序性選擇策略的所述碼字中多個所述塊的任何順序組合。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述觀察期間包含至少三次使用所述順序性選擇策略來針對所述碼字執行所述位元翻轉演算法的迭代。
- 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,在所述觀察期間的每個迭代中包含多次位元翻轉程序,每次所述位元翻轉程序包含:獲取翻轉前碼字的第一臨界值,用以表示所述翻轉前碼字的出錯情況;針對所述選擇的塊執行所述位元翻轉演算法,以產生翻轉後碼字;計算所述翻轉後碼字的第二臨界值,用以表示所述翻轉後碼字的出錯情況;以及計算所述第二臨界值減去所述第一臨界值的差值,用以表示所述翻 轉後碼字的錯誤改善情況,其中,根據之前迭代中所述碼字的臨界值的歷史變化來判斷所述位元翻轉演算法是否在解碼碼字時進入所述陷阱狀態。
- 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,每次所述位元翻轉程序中的所述第二臨界值的計算步驟,包含:為所述翻轉後碼字的每個位元使用多個校檢公式計算多個校驗子權重;為所述翻轉後碼字的每個所述位元加總多個所述校驗子權重;以及獲取所述翻轉後碼字的所有所述位元的多個校驗子權重加總中的最大值,作為所述翻轉後碼字的所述第二臨界值。
- 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,當在所述觀察期間的多個所述迭代之間發現多個所述差值的相同變化模式時,判定所述位元翻轉演算法在解碼碼字時進入所述陷阱狀態。
- 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,所述非順序性選擇策略將前一個迭代中的第一個所述差值大於0的相應塊從所述碼字中移除而不處理。
- 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,所述非順序性選擇策略依據前一個迭代中的所述差值由低至高安排所述碼字中的相應塊的順序。
- 一種電腦程式產品,包含程式碼,其中,當處理單元執行所述程式碼時,實施如請求項1至7中任一項所述的低密度奇偶校檢碼的解碼方法。
- 一種低密度奇偶校檢碼的解碼裝置,包含:變化節點計算電路;以及處理單元,耦接於所述變化節點計算電路,用於在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態,其中,所述碼字分為相同長度的多個塊,所述順序性選擇策略指順序性選擇所述碼字中的多個所述塊,並且驅動所述變化節點計算電路每次只針對所述碼字中選擇的塊執行所述位元翻轉演算法;以及當所述位元翻轉演算法進入所述陷阱狀態時,改為非順序性選擇策略,並且驅動所述變化節點計算電路在所述非順序性選擇策略下對所述碼字執行所述位元翻轉演算法,其中,所述非順序性選擇策略指不同於所述順序性選擇策略的所述碼字中多個所述塊的任何順序組合。
- 如請求項9所述的低密度奇偶校檢碼的解碼裝置,其中,所述觀察期間包含至少三次使用所述順序性選擇策略來針對所述碼字執行所述位元翻轉演算法的迭代。
- 如請求項9所述的低密度奇偶校檢碼的解碼裝置,其中,在所述觀察期間的每個迭代中包含多次位元翻轉程序,每次所述位元翻轉程序包含:獲取翻轉前碼字的第一臨界值,用以表示所述翻轉前碼字的出錯情況;驅動所述變化節點計算電路針對所述選擇的塊執行所述位元翻轉演算法,以產生翻轉後碼字;計算所述翻轉後碼字的第二臨界值,用以表示所述翻轉後碼字的出錯情況;以及 計算所述第二臨界值減去所述第一臨界值的差值,用以表示所述翻轉後碼字的錯誤改善情況,其中,根據之前迭代中所述碼字的臨界值的歷史變化來判斷所述位元翻轉演算法是否在解碼碼字時進入所述陷阱狀態。
- 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,每次所述位元翻轉程序中的所述第二臨界值的計算操作,包含:為所述翻轉後碼字的每個位元使用多個校檢公式計算多個校驗子權重;為所述翻轉後碼字的每個所述位元加總多個所述校驗子權重;以及獲取所述翻轉後碼字的所有所述位元的多個校驗子權重加總中的最大值,作為所述翻轉後碼字的所述第二臨界值。
- 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,當所述處理單元在所述觀察期間的多個所述迭代之間發現多個所述差值的相同變化模式時,判定所述位元翻轉演算法在解碼碼字時進入所述陷阱狀態。
- 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,所述非順序性選擇策略將前一個迭代中的第一個所述差值大於0的相應塊從所述碼字中移除而不處理。
- 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,所述非順序性選擇策略依據前一個迭代中的所述差值由低至高安排所述碼字中的相應塊的順序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111127099A TWI829252B (zh) | 2022-07-20 | 2022-07-20 | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111127099A TWI829252B (zh) | 2022-07-20 | 2022-07-20 | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI829252B true TWI829252B (zh) | 2024-01-11 |
TW202405653A TW202405653A (zh) | 2024-02-01 |
Family
ID=90458896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111127099A TWI829252B (zh) | 2022-07-20 | 2022-07-20 | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI829252B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI646783B (zh) * | 2018-04-10 | 2019-01-01 | 大陸商深圳大心電子科技有限公司 | 解碼方法及儲存控制器 |
TWI664528B (zh) * | 2018-06-06 | 2019-07-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI686804B (zh) * | 2019-04-26 | 2020-03-01 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
US11005499B2 (en) * | 2018-11-19 | 2021-05-11 | SK Hynix Inc. | LDPC decoder, semiconductor memory system, and operating method thereof |
CN113032178A (zh) * | 2019-12-09 | 2021-06-25 | 慧荣科技股份有限公司 | 存储器控制器及快闪存储器的存取方法 |
-
2022
- 2022-07-20 TW TW111127099A patent/TWI829252B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI646783B (zh) * | 2018-04-10 | 2019-01-01 | 大陸商深圳大心電子科技有限公司 | 解碼方法及儲存控制器 |
TWI664528B (zh) * | 2018-06-06 | 2019-07-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
US11005499B2 (en) * | 2018-11-19 | 2021-05-11 | SK Hynix Inc. | LDPC decoder, semiconductor memory system, and operating method thereof |
TWI686804B (zh) * | 2019-04-26 | 2020-03-01 | 大陸商深圳大心電子科技有限公司 | 資料讀取方法、儲存控制器與儲存裝置 |
CN113032178A (zh) * | 2019-12-09 | 2021-06-25 | 慧荣科技股份有限公司 | 存储器控制器及快闪存储器的存取方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202405653A (zh) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10998923B2 (en) | Stopping criteria for layered iterative error correction | |
US10628256B2 (en) | Updating reliability data | |
TWI474330B (zh) | 用來進行記憶體存取管理之方法以及記憶裝置及其控制器 | |
TWI543178B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
KR20180052329A (ko) | 랜더마이즈 동작을 수행하는 반도체 메모리 장치 | |
US11243838B2 (en) | Methods and apparatuses for error correction | |
US20200036393A1 (en) | Apparatus and method for decoding ldpc codes | |
JP2012108890A (ja) | 同時読み出し及び書き込みメモリ動作を実行する方法及び装置 | |
US10153052B2 (en) | Flash command that reports a count of cell program failures | |
TW201921281A (zh) | 具備資料可靠性機制的儲存系統及其操作方法 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US11515898B2 (en) | Error correction decoder, error correction circuit having the same, and method of operating the same | |
US11996860B2 (en) | Scaled bit flip thresholds across columns for irregular low density parity check decoding | |
TWI829252B (zh) | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 | |
WO2018119900A1 (zh) | 数据读取方法及闪存设备 | |
TWI804359B (zh) | 低密度奇偶校檢碼的解碼方法及裝置 | |
US20230421175A1 (en) | Method and apparatus for decoding low-density parity-check (ldpc) code | |
CN117472643A (zh) | 低密度奇偶校检码的译码方法、存储介质和装置 | |
US20240338146A1 (en) | Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism |