TW202405653A - Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code - Google Patents

Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code Download PDF

Info

Publication number
TW202405653A
TW202405653A TW111127099A TW111127099A TW202405653A TW 202405653 A TW202405653 A TW 202405653A TW 111127099 A TW111127099 A TW 111127099A TW 111127099 A TW111127099 A TW 111127099A TW 202405653 A TW202405653 A TW 202405653A
Authority
TW
Taiwan
Prior art keywords
codeword
bit
selection strategy
sequential selection
density parity
Prior art date
Application number
TW111127099A
Other languages
Chinese (zh)
Other versions
TWI829252B (en
Inventor
鄧惇益
Original Assignee
慧榮科技股份有限公司
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW111127099A priority Critical patent/TWI829252B/en
Priority claimed from TW111127099A external-priority patent/TWI829252B/en
Application granted granted Critical
Publication of TWI829252B publication Critical patent/TWI829252B/en
Publication of TW202405653A publication Critical patent/TW202405653A/en

Links

Images

Abstract

The invention is related to a method, a computer program product and an apparatus for decoding low-density parity-check (LDPC) code. The method includes: determining whether a bit flipping algorithm for decoding a codeword goes to a trapping state after an observation period, in which a sequential selection strategy is used; and changing to use a un-sequential selection strategy to perform the bit flipping algorithm on the codeword when the bit flipping algorithm goes to the trapping state. With the usage of un-sequential selection strategy, it would allow the flipping algorithm jump out of the trapping state.

Description

低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置Low-density parity check code decoding method and computer program products and devices

本發明涉及儲存裝置,尤指一種低密度奇偶校檢碼的解碼方法、電腦程式產品及裝置。The invention relates to a storage device, and in particular to a low-density parity check code decoding method, computer program product and device.

閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用於定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。提升從閃存模組讀取資料的效率,一直是影響閃存控制器的整體效能的重要課題。因此.本發明提出一種低密度奇偶校檢碼的解碼方法、電腦程式產品及裝置,用於提升讀取資料的效率。Flash memory is usually divided into NOR flash memory and NAND flash memory. NOR flash memory is a random access device. The central processor (Host) can provide any address to access the NOR flash memory on the address pin, and obtain the data stored at the address from the data pin of the NOR flash memory in a timely manner. material. On the contrary, NAND flash memory does not have random access, but sequential access. NAND flash memory cannot access any random address like NOR flash memory. Instead, the central processor needs to write a sequence of Bytes values to the NAND flash memory to define the type of request command (Command) (such as , read, write, erase, etc.), and the address used on this command. The address can point to a page (the smallest block of data for a write operation in flash memory) or a block (the smallest block of data for an erase operation in flash memory). Improving the efficiency of reading data from flash memory modules has always been an important issue that affects the overall performance of flash memory controllers. therefore. The present invention proposes a low-density parity check code decoding method, computer program product and device to improve the efficiency of reading data.

有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。In view of this, how to alleviate or eliminate the deficiencies in the above-mentioned related fields is a problem that needs to be solved.

本說明書涉及一種由處理單元執行的低密度奇偶校檢碼的解碼方法。所述方法包含以下步驟:在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,改為非順序性選擇策略,並且在非順序性選擇策略下對碼字執行位元翻轉演算法。This specification relates to a method of decoding a low-density parity check code performed by a processing unit. The method includes the following steps: after an observation period using a sequential selection strategy, determining whether the bit flip algorithm enters a trap state when decoding the codeword; and when the bit flip algorithm enters the trap state, changing to non-sequential The sequential selection strategy is used, and the bit flipping algorithm is performed on the codeword under the non-sequential selection strategy.

本說明書另涉及一種電腦程式產品,包含程式碼。當處理單元執行所述程式碼時,實施如上所述的低密度奇偶校檢碼的解碼方法。This manual also relates to a computer program product, including program code. When the processing unit executes the program code, the decoding method of the low-density parity check code as described above is implemented.

本說明書另涉及一種低密度奇偶校檢碼的解碼裝置,包含:變化節點計算電路;以及處理單元,耦接於變化節點計算電路。處理單元用於在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,改為非順序性選擇策略,並且驅動變化節點計算電路在非順序性選擇策略下對碼字執行位元翻轉演算法。This specification also relates to a low-density parity check code decoding device, which includes: a change node calculation circuit; and a processing unit coupled to the change node calculation circuit. The processing unit is configured to determine whether the bit flip algorithm enters a trap state when decoding the codeword after an observation period using the sequential selection strategy; and when the bit flip algorithm enters the trap state, change to a non-sequential selection strategy , and drives the change node calculation circuit to perform a bit flipping algorithm on the codeword under a non-sequential selection strategy.

碼字分為相同長度的多個塊。順序性選擇策略指順序性選擇碼字中的多個塊,並且驅動變化節點計算電路每次只針對碼字中選擇的塊執行位元翻轉演算法。非順序選擇策略指不同於順序性選擇策略的碼字中多個塊的任何順序組合。The codeword is divided into blocks of the same length. The sequential selection strategy refers to sequentially selecting multiple blocks in the codeword, and driving the change node calculation circuit to execute the bit flip algorithm only for the selected blocks in the codeword each time. A non-sequential selection strategy refers to any sequential combination of blocks in a codeword that is different from a sequential selection strategy.

上述實施例的優點之一,通過如上所述的非順序性選擇策略的使用,可讓位元翻轉演算法跳出陷阱狀態。One of the advantages of the above embodiment is that the bit flipping algorithm can escape from the trap state through the use of the non-sequential selection strategy as mentioned above.

本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。Other advantages of the present invention will be explained in more detail in conjunction with the following description and drawings.

以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。The following description is a preferred implementation manner for completing the invention, and its purpose is to describe the basic spirit of the invention, but is not intended to limit the invention. For the actual invention, reference must be made to the following claims.

必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。It must be understood that the words "including" and "include" used in this specification are used to indicate the existence of specific technical features, numerical values, method steps, work processes, components and/or components, but do not exclude the possibility of adding further technical features, values, method steps, processes, components, components, or any combination of the above.

於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。The use of words such as "first", "second" and "third" in the claims is used to modify the elements in the claims, and is not used to indicate that there is a priority, precedence relationship between them, or that they are one element. Prior to another element, or the chronological order in which method steps are performed, it is only used to distinguish elements with the same name.

必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。It must be understood that when an element is described as being "connected" or "coupled" to another element, it can be directly connected or coupled to the other element, and intervening elements may be present. In contrast, when an element is described as being "directly connected" or "directly coupled" to another element, there are no intervening elements present. Other words used to describe the relationship between elements could be interpreted in a similar fashion, such as "between" versus "directly between," "adjacent" versus "directly adjacent," etc.

參考圖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)等。Refer to Figure 1. The electronic device 10 includes a host side (Host Side) 110, a flash memory controller 130 and a flash memory module 150, and the flash memory controller 130 and the flash memory module 150 can be collectively referred to as a device side (Device Side). The electronic device 10 can be implemented in electronic products such as personal computers, laptop computers (Laptop PC), tablet computers, mobile phones, digital cameras, and digital video cameras. The host 110 and the host interface (Host Interface) 131 of the flash memory controller 130 can be connected by a Universal Serial Bus (USB), an advanced technology attachment (ATA), or a serial advanced technology attachment (ATA). attachment, SATA), peripheral component interconnect express (PCI-E), Universal Flash Storage (UFS), embedded multi-media card (Embedded Multi-Media Card, eMMC) and other communication protocols are mutually exclusive communication. The flash interface (Flash Interface) 139 of the NAND Flash Controller (NFC) 137 and the flash memory module 150 can communicate with each other using a Double Data Rate (DDR) communication protocol, for example, open NAND flash (Open NAND Flash Interface, ONFI), double data rate switch (DDR Toggle) or other communication protocols. The flash memory controller 130 includes a processing unit 134, which can be implemented in a variety of ways, such as using general-purpose hardware (eg, a single processor, multiple processors with parallel processing capabilities, a graphics processor, or other processors with computing capabilities), and When executing software and/or firmware instructions, the functions described later are provided. The processing unit 134 receives host commands through the host interface 131, such as read command (Read Command), write command (Write Command), discard command (Discard Command), erase command (Erase Command), etc., schedules and executes these commands. . The flash memory controller 130 also includes a random access memory (Random Access Memory, RAM) 136, which can be implemented as a dynamic random access memory (Dynamic Random Access Memory, DRAM) or a static random access memory (Static Random Access Memory, SRAM) or a combination of the above two, is used to configure space as a data buffer to store user data (also called host data) read from the host 110 and about to be written to the flash memory module 150, and from the flash memory module. The group 150 reads and outputs the user data to the host 110 . The random access memory 136 can also store data needed during execution, such as variables, data tables, host-to-Flash Address Mapping Table (H2F table for short), flash memory and host addresses. Comparison table (Flash-to-Host Address Mapping Table, referred to as F2H table), etc. The NAND flash memory controller 137 provides functions required for accessing the flash memory module 150, such as a command sequencer (Command Sequencer), low-density parity-check (Low-Density Parity-Check, LDPC), etc.

閃存控制器130中可配置共享匯流排架構(Shared Bus Architecture),用於讓元件之間彼此耦接以傳遞資料、位址、控制訊號等,這些元件包含主機介面131、處理單元134、RAM 136、NAND閃存控制器137等。匯流排包含並行的物理線,連接閃存控制器130中兩個以上的組件。共享匯流排是一種共享的傳輸媒體,在任意的時間上,只能有兩個裝置可以使用這些線來彼此溝通,用於傳遞資料。資料及控制訊號能夠在組件間分別沿資料和控制線進行雙向傳播,但另一方面,位址訊號只能沿位址線進行單向傳播。例如,當處理單元134想要讀取RAM 136的特定位址上的資料時,處理單元134在位址線上傳送此位址給RAM 136。接著,此位址的資料會在資料線上回覆給處理單元134。為了完成資料讀取操作,控制訊號會使用控制線進行傳遞。The flash memory controller 130 can be configured with a shared bus architecture (Shared Bus Architecture) for coupling components to each other to transmit data, addresses, control signals, etc. These components include the host interface 131, the processing unit 134, and the RAM 136 , NAND flash memory controller 137, etc. The bus includes parallel physical lines that connect two or more components in the flash memory controller 130 . A shared bus is a shared transmission medium. At any time, only two devices can use these lines to communicate with each other and transfer data. Data and control signals can propagate in both directions between components along data and control lines respectively, but on the other hand, address signals can only propagate in one direction along address lines. For example, when the processing unit 134 wants to read data at a specific address of the RAM 136, the processing unit 134 transmits the address to the RAM 136 on the address line. Then, the data at this address will be returned to the processing unit 134 on the data line. In order to complete the data reading operation, control signals are transmitted using control lines.

閃存模組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)等控制訊號。The flash memory module 150 provides a large amount of storage space, usually hundreds of Gigabytes (GB) or even several Terabytes (TB), for storing large amounts of user data. For example, high-resolution pictures, videos, etc. The flash memory module 150 includes a control circuit and a memory array. The memory cells in the memory array can be configured as single-level cells (Single Level Cells, SLCs) and multi-level cells (Multiple Level Cells, MLCs). (Triple Level Cells, TLCs), Quad-Level Cells (QLCs), or any combination of the above. The processing unit 134 can write user data to a specified address (destination address) in the flash memory module 150 through the flash memory interface 139, and read user data from a specified address (source address) in the flash memory module 150. . The flash memory interface 139 uses several electronic signals to coordinate the transmission of data and commands between the flash memory controller 130 and the flash memory module 150, including data lines (Data Line), clock signals (Clock Signal) and control signals (Control Signal). Data lines can be used to transmit commands, addresses, read and write data; control signal lines can be used to transmit chip enable (Chip Enable, CE), address extraction enable (Address Latch Enable, ALE), command extraction enable Control signals such as Command Latch Enable (CLE) and 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閃存單元,本發明並不因此受限。Referring to Figure 2, the interface 151 in the flash memory module 150 may include four input/output channels (I/O channels, hereinafter referred to as channels) CH#0 to CH#3, each channel is connected to four NAND flash memory units, for example, channel CH#0 is connected to NAND flash memory cells 153#0, 153#4, 153#8 and 153#12. Each NAND flash memory cell can be packaged as an independent chip (die). The flash memory interface 139 can send one of the enable signals CE#0 to CE#3 through the interface 151 to enable the NAND flash memory units 153#0 to 153#3, 153#4 to 153#7, and 153#8 to 153#11. , or 153#12 to 153#15, and then read user data from the enabled NAND flash memory unit in a parallel manner, or write user data to the enabled NAND flash memory unit. Those skilled in the art can change the design of the flash memory module 150 according to system requirements, configure more or fewer channels in the flash memory module 150, and/or connect each channel to more or fewer NAND flash memory cells. , the present invention is not limited thereby.

NAND閃存控制器137可包含低密度奇偶校檢編碼器(LDPC Encoder),用於依據使用者資料來產生低密度奇偶校檢碼(LDPC Code),其是一種線性的錯誤修正碼(Linear Error Correcting Code)。舉例來說,LDPC碼的產生可使用以下公式表示: MSG 1xn⊙ PCM nx (n+m)= CW 1x(n+m)其中,MSG 1xn代表使用者資料的1列、n行矩陣,PCM nx (n+m)代表n列、(n+m)行奇偶校檢矩陣(Parity Check Matrix),CW 1x(n+m)代表最後產生的碼字(Codeword)的1列、(n+m)行矩陣,⊙代表模2乘法(Modulo 2 Multiplication)。奇偶校檢矩陣可包含類循環(Quasi-Cyclic,QC)結構,並且CW 1x(n+m)中的前n個位元的值等於MSG 1xn的值,而CW 1x(n+m)中的後m個位元的值稱為LDPC碼。舉例如下: 所屬技術領域人員知道可使用習知的奇偶校檢矩陣和高效演算法來產生LDPC碼,例如二階段編碼(2-stage Encoding)等。 The NAND flash memory controller 137 may include a low-density parity check encoder (LDPC Encoder) for generating a low-density parity check code (LDPC Code) based on user data, which is a linear error correction code (Linear Error Correcting Code). For example, the generation of LDPC code can be expressed by the following formula: MSG 1xn ⊙ PCM nx (n+m) = CW 1x(n+m) where MSG 1xn represents a 1-column, n-row matrix of user data, PCM nx (n+m) represents n columns and (n+m) rows Parity Check Matrix, CW 1x(n+m) represents 1 column and (n+m) of the last generated codeword (Codeword) Row matrix, ⊙ represents Modulo 2 Multiplication. The parity check matrix can contain a Quasi-Cyclic (QC) structure, and the value of the first n bits in CW 1x(n+m) is equal to the value of MSG 1xn , while the value of the first n bits in CW 1x(n+m) The value of the last m bits is called the LDPC code. Examples are as follows: Those skilled in the art know that conventional parity check matrices and efficient algorithms can be used to generate LDPC codes, such as two-stage encoding (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)。The NAND flash memory controller 137 may include an LDPC decoder (LDPC Decoder) 138 for verifying the codeword (including user information and LDPC code) read from the flash memory module 150 through the flash memory interface 139 and determining the codeword. contains error bits. Once an erroneous bit is found in the codeword, the LDPC decoder 138 attempts to recover the correct codeword and obtains user information from the codeword. If the correct codeword cannot be recovered after a predetermined number of attempts, the LDPC decoder 138 determines that the codeword is an uncorrectable codeword. Regarding LDPC decoding, refer to the example (n=3, k=6) LDPC code shown in Figure 3. Blocks 33#0 to 33#5 represent Variable Nodes, and blocks 31#0 to 31#2 represent Check Nodes. The bits in the change nodes 33#0 to 33#5 form a codeword, which is composed of user data and LDPC code. The bits must meet the graphic constraints (Graphical Constrains). Specifically, all lines connected to a change node have the same value, and the sum of all lines connected to a check node must leave a remainder of 0 when divided by two (that is, they add up to an even number, or has an even number of odd values). Check nodes 31#0 to 31#2 can also be called syndromes (Syndrome).

NAND閃存控制器137還包含靜態隨機存取記憶體(Static Random Access Memory,SRAM)140,用於儲存解碼過程中所需的資料。閃存介面139可儲存從閃存模組150讀取的碼字(包含多個硬位元)和軟位元在SRAM 140中的指定位址。每個硬位元可對應至少一個軟位元,對應的軟位元用於指出此硬位元的信心程度(Likelihood of Belief)。為了修正硬位元中的錯誤位元,SRAM 140還需要配置空間來儲存在解碼過程中的更新後的變化節點以及其對應的軟位元。類似地,每個變化節點可對應至少一個軟位元,對應的軟位元用於指出此變化節點的信心程度。The NAND flash memory controller 137 also includes a static random access memory (Static Random Access Memory, SRAM) 140 for storing data required during the decoding process. The flash memory interface 139 can store the code words (including multiple hard bits) read from the flash memory module 150 and the specified addresses of the soft bits in the SRAM 140 . Each hard bit can correspond to at least one soft bit, and the corresponding soft bit is used to indicate the confidence of the hard bit (Likelihood of Belief). In order to correct the erroneous bits in the hard bits, the SRAM 140 also needs configuration space to store the updated changed nodes and their corresponding soft bits during the decoding process. Similarly, each change node may correspond to at least one soft bit, and the corresponding soft bit is used to indicate the degree of confidence of this change node.

參考圖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之外,本發明並不因此受限。Reference is made to the block diagram of NAND flash memory controller 137 shown in FIG. 4 . In detail, the LDPC Decoder 138 includes two important circuits: a Check-node Calculation Circuit 418 and a Variable-node Calculation Circuit 416 . The check node calculation circuit 418 performs modular square multiplication on the hard bits or change nodes and the parity check matrix to calculate the syndrome. The change node calculation circuit 416 performs a known bit flipping algorithm (Bit Flipping Algorithm) based on the soft bits corresponding to the hard bits or the change node and the syndrome to generate a new change node, and uses a known formula To calculate the soft bits of the new changed node. The configurable area 431 in the SRAM 140 is used to store hard bits and change nodes, and the configuration area 433 is used to store the hard bits and soft bits corresponding to the change nodes. The flash memory interface 139 writes the codeword (including a plurality of hard bits) read from the flash memory module 150 into the area 431 . In some embodiments, the flash memory interface 139 may include a soft-bit calculation circuit for calculating each hard bit in the codeword when reading the codeword from the flash memory module 150 . Soft bits. And write the calculated soft bits into area 433. The change node calculation circuit 416 writes the change node and its soft bits into areas 431 and 433 respectively. LDPC decoder 138 includes a processing unit 412, which may be implemented in a variety of ways, such as using general-purpose hardware (e.g., a single processor, multiple processors with parallel processing capabilities, a graphics processor, or other processors with computing capabilities), and When executing software and/or firmware instructions, functions described later are provided, for example, integrating the operations of the check node calculation circuit 418 and the change node calculation circuit 416 during the decoding process. Those skilled in the art can dispose the processing unit 412 outside the LDPC decoder 138, and the present invention is not limited thereby.

校驗節點計算電路418用於依據區域431中儲存的硬位元或者變化節點,以及奇偶校檢矩陣來計算出校驗子。校驗子的產生可使用以下公式表示: PCM nx (n+m)⊙ CW ( n+m )x 1= SYD mx1其中,PCM nx (n+m)代表n列、(n+m)行奇偶校檢矩陣,MSG (n+m)x1代表碼字的(n+m)列、1行矩陣, SYD mx1代表校驗子的m列、1行矩陣,⊙代表模2乘法。舉例如下: 由於計算後的校驗子為全”0”,碼字中不包含錯誤位元。如果計算後的校驗子不為全”0”,則碼字中包含錯誤位元。校驗節點計算電路418可輸出硬位元或者變化節點,以及計算出的校驗子至變化節點計算電路416。在一些實施例中,校驗節點計算電路418可依據相應於硬位元或者變化節點的軟位元計算校驗子的可靠度(Reliability of Syndrome),並且將校驗子及其可靠度一併傳送到變化節點計算電路416。 The check node calculation circuit 418 is used to calculate the syndrome based on the hard bits or change nodes stored in the area 431 and the parity check matrix. The generation of the syndrome can be expressed by the following formula: PCM nx (n+m) ⊙ CW ( n+m )x 1 = SYD mx1 where, PCM nx (n+m) represents n columns and (n+m) row odd and even Check matrix, MSG (n+m)x1 represents the (n+m) column, 1-row matrix of the codeword, SYD mx1 represents the m-column, 1-row matrix of the syndrome, ⊙ represents modulo 2 multiplication. Examples are as follows: Since the calculated syndrome is all "0", the codeword does not contain error bits. If the calculated syndrome is not all "0", the codeword contains erroneous bits. The check node calculation circuit 418 may output hard bits or change nodes, and the calculated syndrome to the change node calculation circuit 416 . In some embodiments, the check node calculation circuit 418 can calculate the reliability of the syndrome (Reliability of Syndrome) based on the soft bits corresponding to the hard bits or the change nodes, and combine the syndrome and its reliability. transmitted to the change node calculation circuit 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)等。The change node calculation circuit 416 determines whether the codeword needs to be corrected based on the syndrome input from the check node calculation circuit 418. If it is not needed (that is, the syndrome is all “0”), the changed node calculation circuit 416 sends a decoding success message to the processing unit 412 . If necessary (that is, the syndrome is not all "0"), the change node calculation circuit 416 sends a decoding failure message to the processing unit 412, and calculates the decoding failure information based on the syndrome, the hard bit or the change node, corresponding to the hard bit. Or the soft bits of the change node, execute the conventional bit flip algorithm, which is used to change the state of one or more hard bits or change nodes that may be wrong in the codeword (that is, change "0b0" to " 0b1", or change "0b1" to "0b0"). Change nodes can also be collectively called codewords. The change node calculation circuit 416 stores the updated change node into the area 431 in the SRAM 140 . Then, the change node calculation circuit 416 uses a conventional formula to calculate the soft bits corresponding to the updated change node according to the updated change node, and stores the calculated soft bits to the area 433 in the SRAM 140 . The soft bits can be log-likelihood ratio (Log-likelihood Ratio, LLR), quantization value of log-likelihood ratio (Quantization of LLR), etc.

一段碼字(可包含從閃存模組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”的結果。A section of codeword (which may include hard bits read from the flash memory module 150 or include change nodes generated by the change node calculation circuit 416) may be divided into the same length (for example, 16, 32) according to the computing power of the change node calculation circuit 416. , 64, 128, 256, 512, 736 bits, etc.) multiple chunks (Chunks). The codeword includes user information and LDPC code, and the common code rate (Code Rate) is close to 0.9. In other words, user data accounts for close to 90% of the entire codeword. Referring to Figure 5, for example, codeword 50 may be divided into blocks 510, 530, 550, and 570 of equal length, block 570 containing LDPC code 575. Although the following embodiments take 4 blocks as an example, those skilled in the art can divide a codeword into any number of blocks exceeding 1 according to system requirements. In some previous embodiments, the change node calculation circuit 416 repeatedly performs multiple iteration operations. In each iteration, bit flips are sequentially performed for a block in the codeword, and the number of iterations cannot exceed a preset number. threshold. For example, in each iteration, bit flips are performed on blocks 510, 530, 550, and 570 in sequence. However, since the parity check matrix may contain a trap set (Trapping Set), the bit flip algorithm enters the trapping state (Trapping State), so that after executing the maximum allowed number of iterations, the check node is still not found. Calculation circuit 418 produces a result in which the syndrome is all "0"s.

為了避免進入陷阱狀態,本發明實施例在LDPC解碼方法中實施有別於如上所述的順序性選擇碼字中的不同塊的一種新的排程策略(Novel Scheduling Strategy)。LDPC解碼方法由LDPC解碼器138中的處理單元412執行,包含:在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態;以及當位元翻轉演算法進入陷阱狀態時,將排程策略改為非順序性選擇策略,並且在非順序性選擇策略下對碼字執行位元翻轉演算法。順序性選擇策略指順序性選擇所述碼字中的多個塊,並且每次處理只針對碼字中選擇的塊執行位元翻轉演算法。非順序性選擇策略指不同於順序性選擇策略的碼字中多個塊的任意順序組合。In order to avoid entering a trap state, the embodiment of the present invention implements a new scheduling strategy (Novel Scheduling Strategy) in the LDPC decoding method that is different from the sequential selection of different blocks in the codeword as described above. The LDPC decoding method is performed by the processing unit 412 in the LDPC decoder 138 and includes: after an observation period using the sequential selection strategy, determining whether the bit flip algorithm enters a trap state when decoding the codeword; and when the bit flip algorithm enters a trap state When the method enters the trap state, the scheduling strategy is changed to a non-sequential selection strategy, and a bit flip algorithm is performed on the codeword under the non-sequential selection strategy. The sequential selection strategy refers to sequentially selecting multiple blocks in the codeword, and each process only performs the bit flipping algorithm on the selected blocks in the codeword. The non-sequential selection strategy refers to any sequential combination of multiple blocks in the codeword that is different from the sequential selection strategy.

詳細來說,當校驗節點計算電路418發現從閃存模組150讀取的碼字無法通過校檢時,通知處理單元412,讓處理單元412開始執行錯誤修正程序。參考如圖6所示的錯誤修正方法的流程圖,詳細說明如下:Specifically, when the check node calculation circuit 418 finds that the codeword read from the flash memory module 150 cannot pass the check, it notifies the processing unit 412 and allows the processing unit 412 to start executing the error correction program. Referring to the flow chart of the error correction method shown in Figure 6, the details are as follows:

步驟S610:將變數i初始為0。處理單元412使用變數i來記錄迭代的次數,用以控制迭代的執行次數不超過預先設定的最大允許次數MAX itrStep S610: Initialize variable i to 0. The processing unit 412 uses the variable i to record the number of iterations to control the number of executions of the iterations not to exceed the preset maximum allowed number of times MAX itr .

步驟S621:將排程策略設定為順序性選擇碼字中的多個塊,並且一次只針對碼字中選擇的塊執行位元翻轉演算法,又可稱為順序性選擇策略。例如,參考圖4,排程策略設定為依序選擇塊510、530、550和570。Step S621: Set the scheduling strategy to sequentially select multiple blocks in the codeword, and execute the bit flipping algorithm only for the selected blocks in the codeword at a time, which can also be called a sequential selection strategy. For example, referring to Figure 4, the scheduling policy is set to select blocks 510, 530, 550 and 570 in sequence.

步驟S623:根據設定的排程策略(可以是順序性或者是非順序性選擇策略)執行整段碼字的位元翻轉演算法。此步驟可代表一次迭代的針對整段碼字的位元翻轉,其細節可參考之後段落中關於圖7的方法流程圖的說明。處理單元412可驅動變化節點計算電路416對碼字中的特定塊進行位元翻轉。當翻轉後的碼字通過校驗節點計算電路418的校檢時,變化節點計算電路416會發送解碼成功的訊息給處理單元412。當變化節點計算電路416對碼字中的所有需要的塊都進行位元翻轉但卻還無法解碼成功時,處理單元412知道這次迭代的位元翻轉失敗。Step S623: Execute the bit flipping algorithm of the entire codeword according to the set scheduling strategy (which can be a sequential or non-sequential selection strategy). This step may represent one iteration of bit flipping for the entire codeword. For details, please refer to the description of the method flowchart of FIG. 7 in the following paragraphs. The processing unit 412 can drive the change node calculation circuit 416 to perform bit flipping on specific blocks in the codeword. When the flipped codeword passes the check of the check node calculation circuit 418, the change node calculation circuit 416 will send a decoding success message to the processing unit 412. When the change node calculation circuit 416 performs bit flipping on all required blocks in the codeword but fails to decode successfully, the processing unit 412 knows that the bit flipping of this iteration has failed.

關於步驟S623的技術細節,參考圖7所示的位元翻轉程序的流程圖,詳細說明如下:Regarding the technical details of step S623, refer to the flow chart of the bit flipping program shown in Figure 7. The detailed description is as follows:

步驟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進行位元翻轉。Step S711: Obtain the scheduling policy (which can be a sequential or non-sequential selection policy). For example, referring to FIG. 4 , the sequential selection strategy can be expressed as {#510, #530, #550, #570}, which represents sequentially selecting blocks 510, 530, 550 and 570 for bit flipping. As another example, the non-sequential selection strategy may be {#530, #550, #570}, which means that block 510 is skipped, and blocks 530, 550, and 570 are selected sequentially for bit flipping. As another example, the non-sequential selection strategy may be {#570, #550, #530, #510}, which represents sequentially selecting blocks 570, 550, 530 and 510 for bit flipping.

步驟S713:將變數j初始為0。處理單元412使用變數j以記錄已經翻轉過的塊數,用於控制位元翻轉的執行次數不超過需要執行的塊總數MAX chk。需要注意的是,因應不同的排程政策,不同迭代中所設定的MAX chk可能不同。 Step S713: Initialize variable j to 0. The processing unit 412 uses variable j to record the number of blocks that have been flipped, and is used to control the number of executions of bit flipping not to exceed the total number of blocks that need to be executed MAX chk . It should be noted that due to different scheduling policies, the MAX chk set in different iterations may be different.

步驟S730:計算並儲存初始碼字的臨界值(Threshold),用於表示初始碼字的出錯情況,越接近“0”代表錯誤程度越低,高於“0” 越多代表錯誤程度越高。處理單元412可先為碼字中的每個位元使用預設的多個習知校檢公式(Check Equations)計算出多個校驗子權重(Syndrome Weights),例如,每個位元分別使用4個校檢公式計算出4個校驗子權重。每個校檢公式可參考指定位元的軟位元、指定位元所關聯的指定校驗子、指定校驗子所關聯的其他位元,計算出1個校驗子權重,用於代表此位元的部分出錯情況,越接近“0”代表錯誤程度越低,高於“0”越多代表錯誤程度越高。以上所述的位元可指硬位元或者變化節點。處理單元412可使用塔納圖(Tanner Graph)推導出指定位元所關聯的指定校驗子,和指定校驗子所關聯的其他位元。接著,為每個位元將所有計算出的校驗子權重加總起來,用於代表此位元的整體出錯情況。處理單元412最後在所有位元的校驗子權重加總中獲取最大值,作為初始碼字的臨界值,並且將初始碼字的臨界值儲存至SRAM 140中的指定位址。Step S730: Calculate and store the threshold value (Threshold) of the initial codeword, which is used to indicate the error situation of the initial codeword. The closer to "0", the lower the error level, and the higher the error level, the higher the error level. The processing unit 412 may first calculate a plurality of syndrome weights (Syndrome Weights) using a plurality of preset conventional check equations (Check Equations) for each bit in the codeword. For example, each bit may use The 4 check formulas calculate the 4 check subweights. Each check formula can refer to the soft bit of the specified bit, the specified syndrome associated with the specified bit, and other bits associated with the specified syndrome, and calculate a syndrome weight to represent this Partial error status of bits. The closer to "0", the lower the error level. The higher the error level, the higher the error level. The bits mentioned above may refer to hard bits or change nodes. The processing unit 412 may use a Tanner Graph to derive the specified syndrome associated with the specified bit and other bits associated with the specified syndrome. All calculated syndrome weights are then summed for each bit to represent the overall error condition for that bit. The processing unit 412 finally obtains the maximum value from the sum of the syndrome weights of all bits as the critical value of the initial codeword, and stores the critical value of the initial codeword to a designated address in the SRAM 140 .

步驟S751:針對排程政策的第j個項目所指出的塊執行位元翻轉演算法,以產生翻轉後碼字。例如,假設排程策略設為{#510,#530,#550,#570},並且j=2:處理單元412可輸出塊550的地址訊號給變化節點計算電路416,用於驅動變化節點計算電路416從區域431讀取塊550的硬位元或者變化節點,並且根據校驗子、硬位元或者變化節點、相應於硬位元或者變化節點的軟位元,執行習知的位元翻轉演算法,用於將塊550中可能出錯的一個或者多個硬位元或者變化節點進行狀態改變。Step S751: Execute a bit flipping algorithm for the block indicated by the j-th item of the scheduling policy to generate a flipped codeword. For example, assuming that the scheduling strategy is set to {#510, #530, #550, #570}, and j=2: the processing unit 412 can output the address signal of the block 550 to the change node calculation circuit 416 for driving the change node calculation. Circuitry 416 reads the hard bits or change nodes of block 550 from area 431 and performs a conventional bit flip based on the syndrome, the hard bits or change nodes, and the soft bits corresponding to the hard bits or change nodes. Algorithm used to change the state of one or more hard bits or change nodes that may be in error in block 550.

步驟S753:計算並儲存翻轉後碼字的臨界值,用於表示翻轉後碼字的出錯情況,越接近“0”代表錯誤程度越低,高於“0” 越多代表錯誤程度越高。計算的細節可從步驟S751推導而得,為求簡明不再贅述。Step S753: Calculate and store the critical value of the flipped codeword, which is used to indicate the error situation of the flipped codeword. The closer to "0", the lower the error level. The higher the critical value, the higher the error level. The details of the calculation can be derived from step S751, and will not be described again for the sake of simplicity.

步驟S755:計算位元翻轉前的和位元翻轉後的碼字的臨界值之間的差值,用以表示翻轉後碼字的錯誤改善情況,並且儲存計算出的差值至SRAM 140中的指定位址。差值為“0”代表沒有改善,差值為正值代表變糟,差值為負值代表變好。處理單元412可在SRAM 140的指定位址中使用資料表來儲存碼字的臨界值的歷史變化。假設前三次迭代的排程策略都是{#510,#530,#550,#570}:表1顯示範例的資料表: 表1 迭代編號 第一次翻轉 第二次翻轉 第三次翻轉 第四次翻轉 Tr0 Tr1 Dif1 Tr2 Dif2 Tr3 Dif3 Tr4 Dif4 1 2 3 +1 2 -1 2 0 2 0 2 2 3 +1 2 -1 2 0 2 0 3 2 3 +1 2 -1 2 0 2 0 欄位Tr0儲存初始的碼字的臨界值,欄位Tr1儲存翻轉塊510後的碼字的臨界值,欄位Dif1儲存Tr1減去Tr0的結果。欄位Tr2儲存翻轉塊520後的碼字的臨界值,欄位Dif2儲存Tr2減去Tr1的結果。欄位Tr3儲存翻轉塊530後的碼字的臨界值,欄位Dif3儲存Tr3減去Tr2的結果。欄位Tr4儲存翻轉塊540後的碼字的臨界值,欄位Dif4儲存Tr4減去Tr3的結果。 Step S755: Calculate the difference between the critical values of the codeword before bit flipping and after bit flipping to represent the error improvement of the codeword after bit flipping, and store the calculated difference into the SRAM 140 Specify the address. A difference of "0" means no improvement, a positive difference means it is getting worse, and a negative difference means it is getting better. The processing unit 412 may use a data table in a specified address of the SRAM 140 to store historical changes of the threshold value of the codeword. Assume that the scheduling strategies of the first three iterations are {#510, #530, #550, #570}: Table 1 shows the data table of the example: Table 1 Iteration number first flip second flip third flip fourth flip Tr0 Tr1 Dif1 Tr2 Dif2 Tr3 Dif3 Tr4 Dif4 1 2 3 +1 2 -1 2 0 2 0 2 2 3 +1 2 -1 2 0 2 0 3 2 3 +1 2 -1 2 0 2 0 The field Tr0 stores the critical value of the initial codeword, the field Tr1 stores the critical value of the codeword after flipping block 510, and the field Dif1 stores the result of Tr1 minus Tr0. Field Tr2 stores the critical value of the codeword after flipping block 520, and field Dif2 stores the result of Tr2 minus Tr1. Field Tr3 stores the critical value of the codeword after flipping block 530, and field Dif3 stores the result of Tr3 minus Tr2. Field Tr4 stores the critical value of the codeword after flipping block 540, and field Dif4 stores the result of Tr4 minus Tr3.

步驟S757:判斷翻轉後的碼字是否通過校檢。變化節點計算電路416傳送翻轉後的碼字給校驗節點計算電路418,通過從校驗節點計算電路418接收到的校驗子判斷翻轉後的碼字是否通過校檢,並且依據判斷結果傳送解碼成功或者解碼失敗的訊息給處理單元412。如果處理單元412從變化節點計算電路416接收到解碼成功的訊息,代表解碼成功。如果處理單元412從變化節點計算電路416接收到解碼失敗的訊息,代表解碼失敗,流程繼續進行步驟S758的處理。Step S757: Determine whether the flipped codeword passes the check. The change node calculation circuit 416 transmits the flipped codeword to the check node calculation circuit 418, determines whether the flipped codeword passes the check based on the syndrome received from the check node calculation circuit 418, and transmits decoding based on the judgment result. A message of success or decoding failure is sent to the processing unit 412. If the processing unit 412 receives a decoding success message from the changed node calculation circuit 416, it means that the decoding is successful. If the processing unit 412 receives a decoding failure message from the changed node calculation circuit 416, it means that the decoding has failed, and the process continues to the processing of step S758.

步驟S758:將變數j加一,代表已經完成這個塊的位元翻轉。Step S758: Add one to the variable j, indicating that the bit flip of this block has been completed.

步驟S759:判斷變數j是否大於需要執行的塊總數MAX chk。如果是,代表此迭代的位元翻轉完成,離開這個流程,並且繼續進行圖6的步驟S625的處理。否則,流程繼續進行步驟S751的處理。 Step S759: Determine whether variable j is greater than the total number of blocks to be executed MAX chk . If yes, it means that the bit flip of this iteration is completed, this process is left, and the process of step S625 of FIG. 6 is continued. Otherwise, the flow continues with the processing of step S751.

步驟S625:判斷通過這次迭代的位元翻轉所產生的變化節點是否通過校檢。如果處理單元412在步驟S623中從變化節點計算電路416接收到解碼成功的訊息,代表解碼成功,結束整個錯誤修正程序。如果處理單元412在步驟S623中從變化節點計算電路416接收不到解碼成功的訊息,代表解碼失敗,流程繼續進行步驟S627的處理。Step S625: Determine whether the changed node generated by the bit flipping of this iteration passes the check. If the processing unit 412 receives a successful decoding message from the changed node calculation circuit 416 in step S623, it means that the decoding is successful, and the entire error correction process ends. If the processing unit 412 does not receive a successful decoding message from the changed node calculation circuit 416 in step S623, it means that the decoding has failed, and the process continues with the processing of step S627.

步驟S627:將變數i加一,代表已經完成這次迭代的位元翻轉。Step S627: Add one to the variable i, indicating that the bit flip of this iteration has been completed.

步驟S629:判斷變數i是否大於觀察期間的預設迭代次數MAX obv,MAX obv為正整數。如果是,代表使用順序性選擇策略的觀察期間結束,流程繼續進行步驟S630的處理。否則,代表使用順序性選擇策略的觀察期間尚未結束,流程繼續進行步驟S621的處理。在一些實施例中,MAX obv設為3或者更大的值。 Step S629: Determine whether the variable i is greater than the preset iteration number MAX obv during the observation period, and MAX obv is a positive integer. If yes, it means that the observation period using the sequential selection strategy is over, and the process continues to the process of step S630. Otherwise, it means that the observation period using the sequential selection strategy has not ended, and the process continues to step S621. In some embodiments, MAX obv is set to a value of 3 or greater.

步驟S630:判斷變數i是否大於預先設定的最大允許次數MAX itr。如果是,代表此碼字的解碼失敗,整個流程結束。否則,流程繼續進行步驟S640的處理。 Step S630: Determine whether variable i is greater than the preset maximum allowed number of times MAX itr . If so, it means that the decoding of this codeword failed and the entire process ends. Otherwise, the flow continues with the processing of step S640.

步驟S640:根據之前迭代中碼字的臨界值的歷史變化來判斷位元翻轉演算法是否進入陷阱狀態。如果是,則流程繼續進行步驟S650的處理。否則,流程繼續進行步驟S621的處理。參考圖8所示的相應於表1的臨界值差異的變化示意圖。舉例來說,處理單元412從表1的記錄發現位元翻轉演算法很可能進入陷阱狀態,因為在順序性選擇策略的觀察期間的三次迭代都出現了相同的變化模式(Variation Pattern)。Step S640: Determine whether the bit flipping algorithm enters a trap state based on historical changes in the critical value of the codeword in previous iterations. If yes, the flow continues to the process of step S650. Otherwise, the flow continues with the processing of step S621. Refer to Figure 8 for a schematic diagram of changes corresponding to the critical value difference in Table 1. For example, the processing unit 412 finds from the records in Table 1 that the bit flipping algorithm is likely to enter a trap state because the same variation pattern (Variation Pattern) appears in the three iterations during the observation period of the sequential selection strategy.

步驟S650:根據之前迭代中碼字的臨界值的歷史變化來改變排程策略,改變後的排程策略可稱為非順序性選擇策略。非順序性選擇策略指不同於順序性選擇策略的碼字中多個塊的任意順序組合。在一些實施例中,處理單元412可將前一個迭代中的第一個差值大於0的相應塊從碼字中移除而不處理。接續表1的範例,改變後的排程策略為{#530,#550,#570}。在另一些實施例中,處理單元412可依據前一個迭代中的差值由低至高安排碼字中的相應塊的順序。接續表1的範例,改變後的排程策略為{#530,#550,#570,#510}。Step S650: Change the scheduling strategy according to the historical changes in the critical values of codewords in previous iterations. The changed scheduling strategy can be called a non-sequential selection strategy. The non-sequential selection strategy refers to any sequential combination of multiple blocks in the codeword that is different from the sequential selection strategy. In some embodiments, processing unit 412 may remove the first corresponding block with a difference greater than 0 in the previous iteration from the codeword without processing. Continuing the example in Table 1, the changed scheduling strategy is {#530, #550, #570}. In other embodiments, the processing unit 412 may arrange the order of the corresponding blocks in the codeword from low to high according to the difference value in the previous iteration. Continuing the example in Table 1, the changed scheduling strategy is {#530, #550, #570, #510}.

本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如特定硬體的驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。All or part of the steps in the method described in the present invention can be implemented by computer instructions, such as drivers for specific hardware, etc. In addition, it can also be implemented in other types of programs. Those with ordinary skill in the art can write the methods of the embodiments of the present invention as computer instructions, which will not be described again for the sake of simplicity. Computer instructions implemented according to the methods of the embodiments of the present invention can be stored in appropriate computer-readable media, such as DVD, CD-ROM, USB disk, hard disk, or can also be placed in a computer that can be accessed through a network (for example, the Internet, or A web server accessible by other appropriate vehicles).

雖然圖1、圖2、圖4中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。此外,雖然圖6、圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。Although Figures 1, 2, and 4 include the above-described elements, it does not rule out the use of more other additional elements to achieve better technical effects without violating the spirit of the invention. In addition, although the flow charts of Figures 6 and 7 are executed in a specified order, those skilled in the art can modify the order of these steps while achieving the same effect without violating the spirit of the invention. Therefore, The present invention is not limited to the use of only the sequence described above. In addition, those skilled in the art can also integrate several steps into one step, or in addition to these steps, perform more steps sequentially or in parallel, and the invention is not limited thereby.

雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。Although the present invention is described using the above embodiments, it should be noted that these descriptions are not intended to limit the present invention. On the contrary, this invention covers modifications and similar arrangements which will be obvious to one skilled in the art. Therefore, the scope of the claims of the application must be interpreted in the broadest manner to include all obvious modifications and similar arrangements.

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:方法步驟 10: Electronic devices 110: Host side 130:Flash controller 131:Host interface 134: Processing unit 136: Random access memory 137:NAND flash memory controller 138:LDPC decoder 139:Flash memory interface 140: Static random access memory 150:Flash memory module 151:Interface 153#0~153#15: NAND flash memory unit CH#0~CH#3: Channel CE#0~CE#3: enable signal 31#0~31#2: Verification node 33#0~33#5: Change nodes 412: Processing unit 416: Change node calculation circuit 418: Check node calculation circuit 431,433: Area in static random access memory 50: code word 510,530,550,570: blocks 575:LDPC code S610~S650: Method steps S711~S759: Method steps

圖1為依據本發明實施例的電子裝置的系統架構圖。FIG. 1 is a system architecture diagram of an electronic device according to an embodiment of the present invention.

圖2為依據本發明實施例的閃存模組的示意圖。FIG. 2 is a schematic diagram of a flash memory module according to an embodiment of the present invention.

圖3為依據本發明實施例的範例LDPC碼的示意圖。FIG. 3 is a schematic diagram of an example LDPC code according to an embodiment of the present invention.

圖4為依據本發明實施例的NAND閃存控制器的方塊圖。FIG. 4 is a block diagram of a NAND flash memory controller according to an embodiment of the present invention.

圖5為依據本發明實施例的碼字的分塊示意圖。Figure 5 is a schematic block diagram of a codeword according to an embodiment of the present invention.

圖6為依據本發明實施例的錯誤修正方法的流程圖。FIG. 6 is a flow chart of an error correction method according to an embodiment of the present invention.

圖7為依據本發明實施例的位元翻轉程序的流程圖。FIG. 7 is a flow chart of a bit flipping procedure according to an embodiment of the present invention.

圖8為依據本發明實施例的臨界值差異的變化示意圖。FIG. 8 is a schematic diagram of changes in threshold differences according to an embodiment of the present invention.

S610~S650:方法步驟 S610~S650: Method steps

Claims (15)

一種低密度奇偶校檢碼的解碼方法,由低密度奇偶校檢解碼器中的處理單元執行,所述方法包含: 在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態,其中,所述碼字分為相同長度的多個塊,所述順序性選擇策略指順序性選擇所述碼字中的多個所述塊,並且每次只針對所述碼字中選擇的塊執行所述位元翻轉演算法;以及 當所述位元翻轉演算法進入所述陷阱狀態時,改為非順序性選擇策略,並且在所述非順序性選擇策略下對所述碼字執行所述位元翻轉演算法,其中,所述非順序性選擇策略指不同於所述順序性選擇策略的所述碼字中多個所述塊的任何順序組合。 A decoding method of low-density parity check codes, executed by a processing unit in a low-density parity check decoder, the method includes: After an observation period using a sequential selection strategy, it is determined whether the bit flipping algorithm enters a trap state when decoding a codeword divided into blocks of the same length. The sequential selection strategy refers to the sequential selection strategy. selectively selecting a plurality of the blocks in the codeword, and executing the bit flip algorithm only for the selected blocks in the codeword at a time; and When the bit flipping algorithm enters the trap state, it is changed to a non-sequential selection strategy, and the bit flipping algorithm is executed on the codeword under the non-sequential selection strategy, where The non-sequential selection strategy refers to any sequential combination of multiple blocks in the codeword that is different from the sequential selection strategy. 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,所述觀察期間包含至少三次使用所述順序性選擇策略來針對所述碼字執行所述位元翻轉演算法的迭代。The decoding method of low-density parity check codes according to claim 1, wherein the observation period includes at least three iterations of using the sequential selection strategy to execute the bit flipping algorithm for the codeword. 如請求項1所述的低密度奇偶校檢碼的解碼方法,其中,在所述觀察期間的每個迭代中包含多次位元翻轉程序,每次所述位元翻轉程序包含: 獲取翻轉前碼字的第一臨界值,用以表示所述翻轉前碼字的出錯情況; 針對所述選擇的塊執行所述位元翻轉演算法,以產生翻轉後碼字; 計算所述翻轉後碼字的第二臨界值,用以表示所述翻轉後碼字的出錯情況;以及 計算所述第二臨界值減去所述第一臨界值的差值,用以表示所述翻轉後碼字的錯誤改善情況, 其中,根據之前迭代中所述碼字的臨界值的歷史變化來判斷所述位元翻轉演算法是否在解碼碼字時進入所述陷阱狀態。 The decoding method of low-density parity check code as described in claim 1, wherein each iteration during the observation period includes multiple bit flipping procedures, and each time the bit flipping procedure includes: Obtain the first critical value of the code word before flipping to indicate the error situation of the code word before flipping; Execute the bit flipping algorithm on the selected block to generate a flipped codeword; Calculate a second critical value of the flipped codeword to indicate an error condition of the flipped codeword; and Calculate the difference between the second critical value minus the first critical value to represent the error improvement of the flipped codeword, Wherein, whether the bit flip algorithm enters the trap state when decoding a codeword is determined based on historical changes in the critical value of the codeword in previous iterations. 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,每次所述位元翻轉程序中的所述第二臨界值的計算步驟,包含: 為所述翻轉後碼字的每個位元使用多個校檢公式計算多個校驗子權重; 為所述翻轉後碼字的每個所述位元加總多個所述校驗子權重;以及 獲取所述翻轉後碼字的所有所述位元的多個校驗子權重加總中的最大值,作為所述翻轉後碼字的所述第二臨界值。 The decoding method of low-density parity check code as described in claim 3, wherein the calculation step of the second critical value in the bit flipping procedure each time includes: Using multiple check formulas to calculate multiple syndrome weights for each bit of the flipped codeword; summing a plurality of the syndrome weights for each bit of the flipped codeword; and The maximum value of the sum of multiple syndrome weights of all the bits of the flipped codeword is obtained as the second critical value of the flipped codeword. 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,當在所述觀察期間的多個所述迭代之間發現多個所述差值的相同變化模式時,判定所述位元翻轉演算法在解碼碼字時進入所述陷阱狀態。The decoding method of low-density parity check code as described in claim 3, wherein when the same change pattern of a plurality of the difference values is found between a plurality of the iterations during the observation period, it is determined that the bit The meta-flip algorithm enters the trap state when decoding a codeword. 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,所述非順序性選擇策略將前一個迭代中的第一個所述差值大於0的相應塊從所述碼字中移除而不處理。The decoding method of low-density parity check code as described in claim 3, wherein the non-sequential selection strategy removes the first corresponding block with a difference greater than 0 in the previous iteration from the codeword. Remove without processing. 如請求項3所述的低密度奇偶校檢碼的解碼方法,其中,所述非順序性選擇策略依據前一個迭代中的所述差值由低至高安排所述碼字中的相應塊的順序。The decoding method of low-density parity check code as described in claim 3, wherein the non-sequential selection strategy arranges the order of the corresponding blocks in the codeword from low to high according to the difference value in the previous iteration. . 一種電腦程式產品,包含程式碼,其中,當處理單元執行所述程式碼時,實施如請求項1至7中任一項所述的低密度奇偶校檢碼的解碼方法。A computer program product comprising a program code, wherein when a processing unit executes the program code, the decoding method of a low-density parity check code as described in any one of claims 1 to 7 is implemented. 一種低密度奇偶校檢碼的解碼裝置,包含: 變化節點計算電路;以及 處理單元,耦接於所述變化節點計算電路,用於在使用順序性選擇策略的觀察期間後,判斷位元翻轉演算法是否在解碼碼字時進入陷阱狀態,其中,所述碼字分為相同長度的多個塊,所述順序性選擇策略指順序性選擇所述碼字中的多個所述塊,並且驅動所述變化節點計算電路每次只針對所述碼字中選擇的塊執行所述位元翻轉演算法;以及當所述位元翻轉演算法進入所述陷阱狀態時,改為非順序性選擇策略,並且驅動所述變化節點計算電路在所述非順序性選擇策略下對所述碼字執行所述位元翻轉演算法,其中,所述非順序性選擇策略指不同於所述順序性選擇策略的所述碼字中多個所述塊的任何順序組合。 A decoding device for low-density parity check codes, including: Change node calculation circuit; and A processing unit coupled to the change node calculation circuit, configured to determine whether the bit flip algorithm enters a trap state when decoding a codeword after an observation period using a sequential selection strategy, wherein the codeword is divided into Multiple blocks of the same length, the sequential selection strategy refers to sequentially selecting multiple blocks in the codeword, and driving the change node calculation circuit to only execute the selected blocks in the codeword each time The bit flip algorithm; and when the bit flip algorithm enters the trap state, it changes to a non-sequential selection strategy, and drives the change node calculation circuit to perform the selection under the non-sequential selection strategy. The codeword performs the bit flipping algorithm, wherein the non-sequential selection strategy refers to any sequential combination of a plurality of blocks in the codeword that is different from the sequential selection strategy. 如請求項9所述的低密度奇偶校檢碼的解碼裝置,其中,所述觀察期間包含至少三次使用所述順序性選擇策略來針對所述碼字執行所述位元翻轉演算法的迭代。The decoding device of low-density parity check code according to claim 9, wherein the observation period includes at least three iterations of using the sequential selection strategy to execute the bit flipping algorithm for the codeword. 如請求項9所述的低密度奇偶校檢碼的解碼裝置,其中,在所述觀察期間的每個迭代中包含多次位元翻轉程序,每次所述位元翻轉程序包含: 獲取翻轉前碼字的第一臨界值,用以表示所述翻轉前碼字的出錯情況; 驅動所述變化節點計算電路針對所述選擇的塊執行所述位元翻轉演算法,以產生翻轉後碼字; 計算所述翻轉後碼字的第二臨界值,用以表示所述翻轉後碼字的出錯情況;以及 計算所述第二臨界值減去所述第一臨界值的差值,用以表示所述翻轉後碼字的錯誤改善情況, 其中,根據之前迭代中所述碼字的臨界值的歷史變化來判斷所述位元翻轉演算法是否在解碼碼字時進入所述陷阱狀態。 The low-density parity check code decoding device as claimed in claim 9, wherein each iteration of the observation period includes multiple bit flipping procedures, and each bit flipping procedure includes: Obtain the first critical value of the code word before flipping to indicate the error situation of the code word before flipping; Driving the changed node calculation circuit to execute the bit flipping algorithm for the selected block to generate a flipped codeword; Calculate a second critical value of the flipped codeword to indicate an error condition of the flipped codeword; and Calculate the difference between the second critical value minus the first critical value to represent the error improvement of the flipped codeword, Wherein, whether the bit flip algorithm enters the trap state when decoding a codeword is determined based on historical changes in the critical value of the codeword in previous iterations. 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,每次所述位元翻轉程序中的所述第二臨界值的計算操作,包含: 為所述翻轉後碼字的每個位元使用多個校檢公式計算多個校驗子權重; 為所述翻轉後碼字的每個所述位元加總多個所述校驗子權重;以及 獲取所述翻轉後碼字的所有所述位元的多個校驗子權重加總中的最大值,作為所述翻轉後碼字的所述第二臨界值。 The low-density parity check code decoding device as claimed in claim 11, wherein each calculation operation of the second critical value in the bit flipping procedure includes: Using multiple check formulas to calculate multiple syndrome weights for each bit of the flipped codeword; summing a plurality of the syndrome weights for each bit of the flipped codeword; and The maximum value of the sum of multiple syndrome weights of all the bits of the flipped codeword is obtained as the second critical value of the flipped codeword. 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,當所述處理單元在所述觀察期間的多個所述迭代之間發現多個所述差值的相同變化模式時,判定所述位元翻轉演算法在解碼碼字時進入所述陷阱狀態。The decoding device for low-density parity check codes as claimed in claim 11, wherein when the processing unit finds the same change pattern of multiple difference values between multiple iterations during the observation period, It is determined that the bit flip algorithm enters the trap state when decoding the codeword. 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,所述非順序性選擇策略將前一個迭代中的第一個所述差值大於0的相應塊從所述碼字中移除而不處理。The decoding device of low-density parity check code as described in claim 11, wherein the non-sequential selection strategy removes the first corresponding block with the difference greater than 0 in the previous iteration from the codeword. Remove without processing. 如請求項11所述的低密度奇偶校檢碼的解碼裝置,其中,所述非順序性選擇策略依據前一個迭代中的所述差值由低至高安排所述碼字中的相應塊的順序。The decoding device of low-density parity check code as described in claim 11, wherein the non-sequential selection strategy arranges the order of the corresponding blocks in the codeword from low to high according to the difference value in the previous iteration. .
TW111127099A 2022-07-20 2022-07-20 Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code TWI829252B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW111127099A TWI829252B (en) 2022-07-20 2022-07-20 Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW111127099A TWI829252B (en) 2022-07-20 2022-07-20 Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code

Publications (2)

Publication Number Publication Date
TWI829252B TWI829252B (en) 2024-01-11
TW202405653A true TW202405653A (en) 2024-02-01

Family

ID=90458896

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111127099A TWI829252B (en) 2022-07-20 2022-07-20 Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code

Country Status (1)

Country Link
TW (1) TWI829252B (en)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI646783B (en) * 2018-04-10 2019-01-01 大陸商深圳大心電子科技有限公司 Decoding method and storage controller
TWI664528B (en) * 2018-06-06 2019-07-01 群聯電子股份有限公司 Memory management method, memory control circuit unit and memory storage apparatus
KR102643457B1 (en) * 2018-11-19 2024-03-06 에스케이하이닉스 주식회사 Ldpc decoder, semiconductor memory system and operating method thereof
TWI686804B (en) * 2019-04-26 2020-03-01 大陸商深圳大心電子科技有限公司 Data reading method, storage controller and storage device
TWI697000B (en) * 2019-12-09 2020-06-21 慧榮科技股份有限公司 Memory controller and method of accessing flash memory

Similar Documents

Publication Publication Date Title
US10628256B2 (en) Updating reliability data
US10998923B2 (en) Stopping criteria for layered iterative error correction
US9319073B2 (en) Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
TWI594256B (en) Method for performing memory access management, and associated memory device and controller thereof
KR20180052329A (en) Semiconductor memory device performing randomize operation
US10326479B2 (en) Apparatuses and methods for layer-by-layer error correction
JP5464528B2 (en) Method and apparatus for performing simultaneous read and write memory operations
US10879930B2 (en) Apparatus and method for decoding LDPC codes
TW201546815A (en) Decoding method, memory storage device and memory controlling circuit unit
US10691538B2 (en) Methods and apparatuses for error correction
TW201921281A (en) Storage system with data reliability mechanism and method of operation thereof
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
TWI829252B (en) Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code
US11515898B2 (en) Error correction decoder, error correction circuit having the same, and method of operating the same
WO2018119900A1 (en) Method for reading data, and flash memory device
TW202405653A (en) Method and computer program product and apparatus for decoding low-density parity-check (ldpc) code
TWI804359B (en) Method and apparatus for decoding low-density parity-check (ldpc) code
CN117472643A (en) Decoding method, storage medium and device for low density parity check code
US20230421175A1 (en) Method and apparatus for decoding low-density parity-check (ldpc) code
US20230195358A1 (en) Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism