Controller, system, and method for decoding codewords based on history information

By considering historical decoding information during the bit flip decoding process of LDPC code, calculating and comparing the flip energy of variable nodes, the problems of low decoding performance and many iterations in the prior art are solved, and more efficient decoding performance and faster convergence speed are achieved.

CN120165699APending Publication Date: 2025-06-17INNOGRIT TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411294748.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-01-26
Filing Date
2024-09-14
Publication Date
2025-06-17

AI Technical Summary

Technical Problem

The existing bit flip (BF) decoding methods are more complex in the decoding process of low-density parity check (LDPC) code, have insufficient performance, and have a large number of iterations, resulting in slow decoding speed.

Method used

During the decoding iteration process, consider historical decoding information, calculate the flip energy of the variable node, and compare it with the flip energy threshold, and flip the variable node in response to the satisfactory comparison result.

Benefits of technology

By introducing historical decoding information, the decoding performance is improved, the average number of iterations is reduced, and the convergence of the BF decoding algorithm is accelerated.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120165699A_ABST
    Figure CN120165699A_ABST
Patent Text Reader

Abstract

A controller, system, and method for decoding LDPC codewords based on historical decoding information are disclosed. In a decoding iteration, a value of flipping energy of a variable node in a codeword is calculated based on information representing decoding of the codeword prior to the decoding iteration. A comparison result is obtained by comparing the value of the flipping energy with a flipping energy threshold. And flipping the variable node in response to the comparison result satisfying the criteria. A controller having a flow configured to implement a BF decoding process, and a system having the controller.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to low density parity check (LDPC) codes, and more particularly, to a bit flip (BF) decoding method for LDPC codes, and a controller and a system for decoding LDPC codewords by using the bit flip decoding method. Background Art

[0002] LDPC codes are a class of linear error correction codes (ECC), and due to their error correction ability close to the channel capacity, they are suitable for transmission in a very noisy channel when the code length is very long (large block size). Currently, LDPC codes are commonly used in modern solid state drive (SSD) controllers.

[0003] Hard decision bit flip (BF) decoders are applied to LDPC code decoding due to their simplicity and efficiency. Compared with the traditional belief propagation (BP) decoding algorithm, the BF decoding algorithm has lower complexity and lower performance. Summary of the Invention

[0004] The present disclosure provides a bit flip (BF) decoding process that takes into account historical decoding information.

[0005] In one exemplary embodiment, a method is provided that may include, in a decoding iteration (or iteratively interchangeably), calculating a value of the flip energy of a variable node in a codeword based on information representing the decoding of the codeword before the decoding iteration; obtaining a comparison result by comparing the value of the flip energy with a flip energy threshold; and flipping the variable node in response to the comparison result satisfying a criterion.

[0006] In another exemplary embodiment, a controller is provided. The controller may include a processor configured to implement the BF decoding method described in the present disclosure.

[0007] In yet another exemplary embodiment, a system is provided. The system may include the controller described in the present disclosure. The system may be a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.

[0008] In yet another exemplary embodiment, a non-transitory machine-readable medium having information is provided. When the information is read by a hardware processor system, the information may cause the hardware processor system to execute the BF decoding method of the present disclosure.

[0009] According to the BF decoding process of the present disclosure, the decoding performance can be improved, and the average number of iterations can be reduced, thereby further accelerating the convergence of the BF decoding algorithm. Brief Description of the Drawings

[0010] Figure 1 It is a schematic diagram of a data transmission system.

[0011] Figure 2 It shows a Tanner graph.

[0012] Figure 3 It is a flowchart of the decoding process of LDPC codes.

[0013] Figure 4 It is a flowchart of the process of calculating the flip energy of each variable node during each iteration of BF decoding.

[0014] Figure 5 It is a flowchart of the LDPC codeword decoding process.

[0015] Figure 6 It schematically shows a data transmission system.

[0016] Figure 7 It shows the simulation results of the decoding performance of the BF decoding process.

[0017] Figure 8 It shows the simulation results of the average number of iterations of the BF decoding process. Detailed implementation manners

[0018] Now, specific embodiments according to the present disclosure will be described in detail with reference to the accompanying drawings. For consistency, the same elements in the various figures are denoted by the same reference numerals.

[0019] It should be noted that the decoding method described in the present disclosure is provided in combination with the bit - flipping method of LDPC codes used in an SSD controller. However, it should not be restrictive. A person of ordinary skill in the art can make modifications or variations under the teachings of the present disclosure and use the decoding method in other decoders or controllers, or decode other types of codes. Such modifications or variations are within the scope of protection of the present disclosure.

[0020] The present disclosure provides a bit - flipping decoding method for low - density parity - check (LDPC) codes, as well as a controller and a system for decoding LDPC codewords by using the bit - flipping decoding method.

[0021] Figure 1 It is a schematic diagram of a data transmission system, which can also be interchangeably referred to as a decoding system. As Figure 1 shown, the data transmission system 100 may include an encoder 110, a channel 120, and a decoder 130.

[0022] The encoder 110 may be on the transmitter, and the decoder 130 may be on the receiver. The encoder 110 may encode the input data using an encoding method (such as LDPC encoding) to generate a codeword.

[0023] The encoded codewords can be sent through channel 120 to decoder 130. Channel 120 can include but is not limited to a satellite communication channel using a satellite antenna, a wireless communication channel using a base station and / or a local antenna, a wired communication channel, an optical fiber communication channel utilizing an electro-optical (E / O) interface, or any other suitable channel.

[0024] The encoded codewords can be decoded by decoder 130 such that the input data can be recovered. In some embodiments, encoder 110 and decoder 130 can correspond to similar types of codes. For example, both encoder 110 and decoder 130 can correspond to LDPC codes. In some embodiments, encoder 110, channel 120, and / or decoder 130 can be components of a solid-state drive (SSD) controller, but this should not be limiting.

[0025] LDPC codewords can be decoded using a two-dimensional matrix called a parity-check matrix. The parity-check matrix can define multiple variable nodes and check nodes.

[0026] An exemplary parity-check matrix H can be as follows:

[0027] The parity-check matrix H can be pre-stored in the decoder, or can be received before, after, or simultaneously with the LDPC codewords. The parity-check matrix H can be received through the same or a different channel as the codewords.

[0028] The parity-check matrix H can include multiple rows (M rows) and multiple columns (N columns). Each column of the parity-check matrix H can correspond to a variable node, and each row of the parity-check matrix can correspond to a check node. The count N of the columns can be equal to the count of the bits in the received codeword (e.g., N = 6). The count M of the rows can be equal to the count of the parity-check bits in the received codeword (e.g., M = 4). The count k of the information bits in the received codeword is k = N - M (e.g., k = 2).

[0029] For the sake of brevity, "bit", "bit node", "variable node" can be used interchangeably in this disclosure to refer to a binary digit in a codeword or a variable node corresponding to the binary digits defined by the parity-check matrix.

[0030] In some embodiments, the parity-check matrix H can be a regular LDPC check matrix, e.g., the sum of the values in each row is a fixed value, and the sum of the values in each column is also a fixed value.

[0031] Alternatively, the parity-check matrix H can be an irregular LDPC check matrix, e.g., the sum of the values in each row is not a fixed value, or the sum of the values in each column is not a fixed value.

[0032] In some embodiments, the relationship between variable nodes and check nodes defined by the parity-check matrix H can be shown in a Tanner graph (also known as a bipartite graph).

[0033] Figure 2 An exemplary Tanner graph corresponding to the above-exemplary parity-check matrix H is shown.

[0034] As shown in the Tanner graph, six circles can represent six variable nodes 210 corresponding to six columns of the parity-check matrix, and four squares can respectively represent four check nodes 220 corresponding to four rows of the parity-check matrix.

[0035] The connections between variable nodes 210 and check nodes 220 can correspond to the "1"s in the corresponding positions of the parity-check matrix. For example, the "1" in the third row and fifth column of the parity-check matrix can be shown in the Tanner graph as a connection between the fifth variable node 210 and the third check node 220. If a variable node is connected to a check node, the variable node can be considered adjacent to the check node. As Figure 2 shown, a variable node is adjacent to several check nodes.

[0036] The LDPC codeword to be decoded (or "codeword" for brevity) can be represented as a row vector c = (x, p), where x represents k information bits and p represents N check bits. The parity-check equation can be represented as follows: Hc T = 0.

[0037] Here, in the matrix multiplication calculation of Hc T the addition operation is performed using modulo-2 addition equal to the XOR operation.

[0038] When the codeword satisfies the parity-check equation, the codeword is considered correct.

[0039] To check whether the codeword c is correct, i.e., the same as the target codeword generated by encoding the input data in the encoder 110, the syndrome s can be calculated as follows T = (s1, s2,..., s M ) T : s T = Hc T .

[0040] If all the calculated syndromes s T = (s1, s2,..., s M ) TAll are 0. In other words, the syndrome weight sw (sw = s1 + s2 + … + s M ) being 0 means the codeword is considered correct, i.e., the same as the target codeword, and the decoding process is successful.

[0041] If any of the calculated syndromes s T =(s1, s2, …, s M ) T is not 0, in other words, the syndrome weight is not 0, then the codeword is considered incorrect, i.e., different from the target codeword, and the decoding process is not successful. One or more bits (corresponding to variable nodes) in the codeword should be flipped.

[0042] In the case where the received codeword is different from the target codeword. The iterative decoding process can be performed by iteratively updating the values of the variable nodes 210 (i.e., hard decisions) until the syndrome weight becomes zero or the maximum count of iterations is reached.

[0043] To determine whether a variable node will be flipped, or which variable node will be flipped, a threshold is set to be compared with the flip energy calculated for the variable node. The flip energy is an intermediate parameter calculated for the variable node to determine whether the variable node should be flipped.

[0044] In other words, in the bit - flip decoding process, it can be determined whether to flip a variable node based on the flip energy. For example, if the flip energy is greater than the threshold, the hard decision for the variable node is to flip; otherwise, the hard decision for the variable node is not to flip.

[0045] The flip energy for each variable node can be calculated using the information provided by adjacent check nodes (i.e., check nodes connected to the variable node).

[0046] The calculation of the flip energy will be described in more detail later.

[0047] After flipping, the hard decision of the variable node can be updated accordingly, and the syndrome weight associated with the updated hard decision can be checked again.

[0048] The process of updating the hard decision can be iteratively performed until the syndrome weight associated with a specific updated hard - decision vector is zero or a preset number of iterations is reached.

[0049] Generally, the process of decoding the received codeword can be illustrated with reference to a Tanner graph.

[0050] For example, as Figure 2 shown, the codeword can include six bits corresponding to six variable nodes 210 and four check bits corresponding to four check nodes 220.

[0051] Initially, each variable node 210 can be assigned an initial value (e.g., the value in the received codeword) regarding the corresponding bit of the codeword. Each variable node 210 can send the corresponding initial value to the check node 220 connected thereto.

[0052] The value of the check node 220 can be calculated by modulo-2 addition (XOR) of the values of the variable nodes 210 connected to the check node 220, which is equivalent to calculating a row of the above syndrome formula s T =Hc T and obtaining the corresponding syndrome s j , j = 1, 2, …, M.

[0053] Then, each variable node 210 can be evaluated according to the values of the check nodes connected thereto. According to the evaluation result, one or more variable nodes 210 can be flipped to update their values. In the next iteration, each variable node 210 can be further evaluated based on these updated values. The decoder can continuously perform iterations until the syndrome weight indicates that the most recently updated variable nodes are consistent with the target codeword or a preset number of iterations is satisfied.

[0054] Reference will be made to Figure 3 describe the bit-flipping decoding method of low-density parity-check (LDPC) codes.

[0055] Figure 3 is a flowchart of the decoding process of the LDPC code.

[0056] As described above, the decoding process can be performed in multiple iterations.

[0057] As Figure 3 shown, in the decoding iteration, in step S310, the value of the flipping energy of the variable nodes in the codeword is calculated based on the information representing the decoding of the codeword before the decoding iteration.

[0058] In some embodiments, the codeword can be received from a non-volatile memory.

[0059] In the present disclosure, the information representing the decoding of the codeword before the decoding iteration can be referred to as “historical decoding information”, or “historical information” or “information”. In other words, for example, the historical decoding information in the previous iteration is used to calculate the value of the flipping energy of the variable nodes in the current iteration.

[0060] In step S320, a comparison result is obtained by comparing the value of the flipping energy with a flipping energy threshold.

[0061] In some embodiments, the flip energy threshold can be updated based on the check nodes of the codeword. For example, the flip energy threshold can be updated based on the check nodes of the codeword at the start of each iteration.

[0062] In step S330, in response to a comparison result that meets the criteria, flip the variable node.

[0063] Flipping a variable node means changing the value (0 or 1) of the variable node. If the original value of the variable node is 0, it will be flipped to 1; if the original value of the variable node is 1, it will be flipped to 0.

[0064] In some embodiments, the criterion used in step S330 is that the value of the flip energy is greater than the flip energy threshold. In other words, if the value of the flip energy of a variable node is greater than the flip energy threshold, then that variable node is flipped.

[0065] In some embodiments, the syndrome weight of the codeword is calculated. For example, the syndrome weight can be calculated in each decoding iteration. In response to the syndrome weight being zero, the codeword can be sent to the host system, which means the decoding process is successful.

[0066] In some embodiments, in response to the syndrome weight not being zero, the flip energy threshold can be updated, and steps S320 and S330 in that decoding iteration can be performed accordingly.

[0067] Introducing historical decoding information in the current iteration can result in better decoding performance and a lower average number of iterations, thereby increasing the throughput of the BF decoding algorithm.

[0068] Historical decoding information can include, but is not limited to: the time interval starting from the previous flip of the variable node (also referred to as the "flip distance"), the previous value of the flip energy of the variable node, and the previously flipped variable node, which will be described in more detail below.

[0069] Case 1: Time interval (also referred to as the "flip distance").

[0070] In some embodiments, this information can include the time interval between the current decoding iteration and the previous decoding iteration in which the variable node was flipped.

[0071] This time interval can also be referred to as the flip distance. The time interval can be represented by the number of iterations from the previous decoding iteration to the current decoding iteration.

[0072] For example, in the current iteration at index l (iteration l), the flip distance or time interval can be determined for the i-th variable node n as follows, where i = 1, 2, …, N. i Determine the flip distance or time interval.

[0073] Assume variable node ni The previous flip occurred in the iteration with index l' (iteration l'), where l' < l, and the time interval (flip distance) of n at iteration l is (l - l'). i The time interval (flip distance) of n is (l - l').

[0074] The index of an iteration (e.g., the current iteration) is related to how many iterations have passed since decoding the codeword before that iteration. The first iteration can have an index of 0, 1, or any suitable value.

[0075] Case 2: The previous value of the variable node flip energy.

[0076] In some embodiments, the information can include the previous value of the flip energy of the variable node in a previous decoding iteration. In other words, the information can include the value of the flip energy of the variable node in the previous decoding iteration. In some embodiments, the previous decoding iteration can be the decoding iteration immediately before the current decoding iteration.

[0077] For example, in the current iteration with index l (iteration l), for the i-th variable node n i , where i = 1, 2,..., N, the previous decoding iteration is decoding iteration l - 1, and the information can include the value of the flip energy of variable node n i calculated in decoding iteration l - 1.

[0078] In some embodiments, the previous decoding iteration can be several previous decoding iterations before the current iteration. The information can include the values of the flip energy of the variable node in the last several decoding iterations.

[0079] For example, in the current iteration with index l (iteration l), for the i-th variable node n i , where i = 1, 2,..., N, several previous decoding iterations can be iterations l - 1 to iteration l - q, where q is in the range (1, l - 1), and the information can include the values of the flip energy of n i calculated in the iterations from iteration l - 1 to iteration l - q respectively.

[0080] In some embodiments, the variable node was flipped in a previous decoding iteration. That is, the previous decoding iteration is the previous decoding iteration in which the variable node was flipped. In other words, the information can include the previous value of the flip energy of the variable node in the previous decoding iteration in which the variable node was flipped.

[0081] For example, in the current iteration with index l (iteration l), for the i-th variable node n i , where i = 1, 2,..., N, assuming the variable node n i was flipped at iteration l', where l' < l, the information can include the value of the flip energy of variable node n calculated at decoding iteration l'i The value of the flipping energy.

[0082] Case 3: Previously flipped variable node.

[0083] For example, given the parity-check matrix H of an LDPC code, the flipping energy of a variable node can be calculated based on the flipping information of other variable nodes that are adjacent (or connected in the corresponding Tanner graph) to the same check node as that variable node.

[0084] As described above with reference to the parity-check matrix H and the Tanner graph, as Figure 2 shown, an LDPC codeword can include a check node whose value is the parity check of a subset of the variable nodes of the codeword. In the corresponding Tanner graph, the variable nodes in the same subset are connected (or adjacent) to the same check node.

[0085] In some embodiments, the information can include the time interval between the decoding iteration and a previous decoding iteration in which another variable node of the codeword was flipped. Here, as described above, both the variable node and the other variable node are in the same subset. In other words, both the variable node and the other variable node are connected (adjacent) to the same check node in the corresponding Tanner graph.

[0086] In some embodiments, the information can include the previous value of the flipping energy of another variable node of the codeword in a previous decoding iteration. Similarly, as described above, both the variable node and the other variable node are in the same subset. In other words, both the variable node and the other variable node are connected (adjacent) to the same check node in the corresponding Tanner graph.

[0087] Hereinafter, the process of calculating the flipping energy of each variable node during each iteration of BF decoding will be described in detail with reference to Figure 4 The process of calculating the flipping energy of each variable node during each iteration of BF decoding according to an embodiment of the present disclosure is a schematic flowchart.

[0088] Figure 4 FIG.

[0089] In some embodiments, the flipping energy of a variable node is adjusted by combining channel information and historical decoding information (e.g., flipping distance).

[0090] For each variable node, the inputs to the process for calculating the flipping energy can include the index of the current iteration, channel information, and historical decoding information (e.g., flipping distance), and the output is the flipping energy.

[0091] In addition, two integer parameters can be preset for use in this process, namely the iteration index threshold m and the normalization constant z.

[0092] In step 410, the values of the first parameter a and the second parameter b can be set based on the index l of the current decoding iteration.

[0093] The first parameter a and the second parameter b can also be referred to as "coefficients a and b".

[0094] As described above, the index l of an iteration (e.g., the current iteration) is related to how many iterations have passed during the decoding of the codeword before that iteration. The first iteration can have an index of 0, 1, or any suitable value.

[0095] In some embodiments, the values of the first parameter a and the second parameter b can be set by comparing the index l of the decoding iteration with an iteration index threshold m that can be preset in advance.

[0096] For example, if the index l of the current iteration is greater than the iteration index threshold m, i.e., l > m, then the first parameter a can be set to be greater than the second parameter b, i.e., a > b. Here, a and b can be any values that satisfy the condition a > b.

[0097] Otherwise, if the index l of the current iteration is not greater than the iteration index threshold m, i.e., l ≤ m, then the first parameter a can be set to be less than the second parameter b, i.e., a < b. Here, a and b can be any values that satisfy the condition a < b.

[0098] In step 420, the values of the third parameter v1 and the fourth parameter v2 can be set based on historical information.

[0099] The third parameter v1 and the fourth parameter v2 can also be referred to as "offsets v1 and v2".

[0100] The two offsets v1 and v2 can be derived from historical information, such as the flipping distance: v1 = f1(historical information), and v2 = f2(historical information).

[0101] Here, f1 and f2 indicate that v1 and v2 are functions of historical information and are derived from historical information.

[0102] In step 430, the value of the fifth parameter d can be determined based on the values of the first parameter a, the second parameter b, the third parameter v1, the fourth parameter v2, and the channel information of the variable nodes in the decoding iteration.

[0103] In some embodiments, when determining the value of the fifth parameter d, it is also determined whether there is a channel mismatch based on the channel information.

[0104] The channel information of a variable node is the received value of the variable node after channel transmission. When the current value of a variable node is not equal to its received value, channel mismatch occurs. Therefore, the channel information can be applied to determine whether channel mismatch occurs.

[0105] In some embodiments, the fifth parameter d may be determined in different ways according to whether there is channel mismatch.

[0106] For example, if channel mismatch occurs, the fifth parameter d may be determined based on the first parameter a, the second parameter b, the third parameter v1, and the number g of unsatisfied check nodes connected to the variable node at the current iteration: d = a + b×g – v1.

[0107] Otherwise, if no channel mismatch occurs, the fifth parameter d may be determined based on the second parameter b, the fourth parameter v2, and the number g of unsatisfied check nodes connected to the variable node at the current iteration: d = b×g - v2.

[0108] In step 440, the value of the fifth parameter d may be normalized to the value of the flip energy.

[0109] For example, the fifth parameter d may be divided by the normalization constant z to produce the flip energy d / z.

[0110] Then, the flip energy d / z may be output for each variable node as the calculation result of the process, as Figure 4 shown.

[0111] In the process of calculating the flip energy d / z, the following parameters may be adjusted: the first parameter a and the second parameter b; the iteration index threshold m; the historical information; the third parameter v1 and the fourth parameter v2; and the normalization constant z.

[0112] The goal is to improve the decoding performance of the BF decoding algorithm and reduce the average number of iterations for decoding the codeword.

[0113] The above parameters may be optimized for the above goal.

[0114] In Figure 4 the process shown, the first and second parameters a and b, channel mismatch, historical information (e.g., flip distance) for determining the third and fourth parameters (offsets) v1 and v2, and the normalization constant z are introduced.

[0115] For example, in the above step S410, the first parameter a and the second parameter b may be adjusted according to the iteration index threshold m.

[0116] During the process of calculating the flipping energy, for example, when determining the fifth parameter d in the above step S430, channel mismatch is adopted. Additionally, for example, in the above step S420, channel mismatch information can also be adopted when setting the third parameter v1 and the fourth parameter v2. In some embodiments, when channel mismatch occurs, the third parameter v1 decreases as the flipping distance increases, while the fourth parameter v2 increases as the flipping distance increases.

[0117] In the above step S440, the fifth parameter d is divided by the normalization constant z. In some embodiments, the value of the normalization constant z can be determined by the first parameter a and the second parameter b.

[0118] The following is an example of the set of the above parameters, where the flipping distance (or time interval) as described above is applied as historical decoding information.

[0119] In this example, it is assumed that the number of unsatisfied check nodes g = 2, the iteration index threshold m = 2, and the normalization constant z = 3.

[0120] If the current iteration index l > m, the first parameter a = 4 and the second parameter b = 3. Otherwise, if the current iteration index l ≤ m, the first parameter a = 3 and the second parameter b = 4.

[0121] The third parameter v1 and the fourth parameter v2 can be set as follows: and

[0122] Here, taking the calculation of the flipping energy in iteration 1 as an example, 1 < m.

[0123] If channel mismatch occurs, the flipping energy is calculated by d / z = (a + b×g – v1) / z. It can be found that: If the flipping distance < 5, the flipping energy is 3; If 5 ≤ flipping distance ≤ 25, the flipping energy is 2.67; and If the flipping distance > 25, the flipping energy is 2.33.

[0124] If no channel mismatch occurs, the flipping energy is calculated by d / z = (b×g – v2) / z. It can be found that: If the flipping distance < 5, the flipping energy is 1.33; If 5 ≤ flipping distance ≤ 25, the flipping energy is 1.67; and If the flipping distance > 25, the flipping energy is 2.33.

[0125] In some embodiments, the flipping energy can be represented by the integer part of d / z or by rounding d / z.

[0126] In some embodiments, to further reduce the hardware cost, the flip distance is divided by n, where n can be determined by the bit width of the maximum number of iterations. In this case, n can be 2 or 4. By dividing the flip distance, the flip distance can be represented with fewer bits.

[0127] For example, if the maximum number of iterations is equal to 40, the maximum flip distance can be 39, which requires 6 bits to store. If the flip distance is divided by 2, the maximum flip distance will only require 5 bits to store. If the flip distance is divided by 4, the maximum flip distance will only require 4 bits, and so on.

[0128] Hereinafter, an example of the LDPC codeword decoding process will be described with reference to Figure 5 Describe an example of the LDPC codeword decoding process.

[0129] Figure 5 is a schematic flowchart of an exemplary process of LDPC codeword decoding according to an embodiment of the present disclosure.

[0130] As Figure 5 shown, in step S510, a codeword can be received from a non-volatile memory.

[0131] Figure 5 shows an embodiment in which a codeword received from a non-volatile memory is decoded and then transmitted to a host system. It should be understood that the present disclosure is not limited thereto. The codeword to be decoded can be received from any suitable data source, and the decoded codeword can be sent to any suitable destination.

[0132] In step S520, as described above, the syndrome weight sw of the codeword can be calculated.

[0133] In step S530, it is determined whether the calculated syndrome weight sw is equal to 0.

[0134] If the calculated syndrome weight sw is equal to 0, the decoding process is successful, and the process proceeds to step S540.

[0135] In step S540, the codeword can be sent to the host system. As described above, in other embodiments, the codeword can be sent to any suitable destination.

[0136] If the calculated syndrome weight sw is not 0, the process proceeds to step S550.

[0137] In step S550, the flip energy threshold can be updated, for example, based on the check nodes of the codeword.

[0138] And in step S560, a decoding iteration with index l is performed. The index l can start from 0, 1, or any other suitable value.

[0139] The decoding iteration can include Figure 3 the steps shown and described above. Calculate the value of the flipping energy of each variable node in the codeword based on historical decoding information and compare it with the flipping energy threshold. A variable node can be flipped in response to a comparison result that meets the criteria, for example, the calculated value of the flipping energy is greater than the flipping energy threshold.

[0140] In step S560, variable nodes can be processed one by one or in groups.

[0141] If variable nodes are processed one by one, the syndrome weight of the codeword is calculated when flipping a variable node and then compared with 0 to determine whether the decoding process is successful.

[0142] If variable nodes are processed in groups, the flipping energy values of a group of variable nodes are calculated separately and compared with the flipping energy threshold. If any one of the variable nodes in the group is flipped, the syndrome weight of the codeword is calculated and then compared with 0 to determine whether the decoding process is successful.

[0143] A new syndrome weight sw can be calculated for the codeword with the flipped variable node. If the new syndrome weight sw is 0, it is determined in step S570 that the decoding process is successful and the process proceeds to step S540.

[0144] If it is determined in step S570 that it is not successful, the process enters step S580 and determines whether the current decoding iteration is the last iteration. For example, an iteration index threshold m can be preset in advance. If the index l of the current decoding iteration is equal to m, i.e., l = m, which means the current decoding iteration is the last iteration, the process enters step S590 and the decoding process fails.

[0145] If l < m, which means the current decoding iteration is not the last iteration, the process proceeds to step S585, increments l by 1, i.e., l = l + 1. The process enters step S550 and starts a new decoding iteration, for example, by updating the flipping energy threshold.

[0146] Figure 6 Schematically shows a system according to an embodiment of the present disclosure.

[0147] For example, the system can be a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.

[0148] Such as Figure 6As shown, system 100 may include a controller 102.

[0149] The controller 102 may include a processor 106. The processor 106 may be configured to implement the methods described in this disclosure.

[0150] In addition, in some embodiments, system 100 may further include a non-volatile memory (NVM) 104. LDPC codewords received from the NVM 104 may be decoded by the processor 106 by implementing the decoding methods described in this disclosure and then sent to the host.

[0151] In one embodiment, a controller is provided. The controller includes a processor configured to implement the methods described in this disclosure.

[0152] In another embodiment, a system is provided. The system includes the controller of this disclosure. And the system may be a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.

[0153] In yet another embodiment, a non-transitory machine-readable medium having information is provided, wherein when the information is read by a hardware processor system, the information causes the hardware processor system to execute the methods described in this disclosure.

[0154] The BF decoding process according to this disclosure and the original BF decoding are simulated. It can be seen from the simulation results that the BF decoding process described in this disclosure has superior performance. In addition, it requires fewer decoding iterations, indicating higher error correction efficiency and decoding accuracy.

[0155] Figure 7 The simulation results showing the decoding performance of the BF decoding process are presented.

[0156] Curve C1 shows the relationship between the decoding performance and the number of error bits in the original BF decoding process. Curve C2 shows the relationship between the decoding performance and the number of error bits in the decoding process of this disclosure, where the flipping distance is divided by 2 (n = 2). Curve C3 shows the relationship between the decoding performance and the number of error bits in the decoding process of this disclosure, where the flipping distance is divided by 4 (n = 4).

[0157] From Figure 7 it can be seen that curves C2 and C3 show better decoding performance than curve C1, and curve C2 is better than curve C3 at the cost of one more bit to store the flipping distance.

[0158] Figure 8 The simulation results showing the average number of iterations of the BF decoding process are presented.

[0159] Curve C4 shows the relationship between the average number of iterations and the number of error bits during the original BF decoding process. Curve C5 shows the relationship between the average number of iterations and the number of error bits during the decoding process of the present disclosure, where the flipping distance is divided by 2 (n = 2). Curve C6 shows the relationship between the average number of iterations and the number of error bits during the decoding process of the present disclosure, where the flipping distance is divided by 4 (n = 4).

[0160] It can be seen from Figure 8 that the process of the present disclosure (Curves C5 and C6) requires fewer average iterations than the original BF decoding process, and Curve C5 requires a smaller average number of iterations than Curve C6, at the cost of one more bit to store the flipping distance.

[0161] Although various aspects and embodiments have been disclosed herein, other aspects and implementations will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for illustrative purposes and are not intended to be limiting, and the true scope and spirit are indicated by the following claims.

Claims

1. A method, characterized in that include: In a decoding iteration, based on information representing the decoding of the codeword before the decoding iteration, a value of a flip energy of a variable node in the codeword is calculated; Obtaining a comparison result by comparing the value of the flip energy with a flip energy threshold; as well as In response to the comparison result satisfying a criterion, the variable node is flipped.

2. The method according to claim 1, characterized in that The information includes a time interval between the decoding iteration and a previous decoding iteration of the variable node flipping.

3. The method according to claim 1, characterized in that The information includes previous values ​​of toggle energies of the variable nodes in previous decoding iterations.

4. The method according to claim 3, characterized in that The variable node was flipped in the previous decoding iteration.

5. The method according to claim 1, characterized in that The information includes a time interval between the decoding iteration and a previous decoding iteration in which another variable node of the codeword is flipped; wherein the codeword includes a check node, a value of the check node is a parity check of a subset of the variable nodes of the codeword, and the variable node and the another variable node are both in the subset.

6. The method according to claim 1, characterized in that The information comprises a previous value of a flip energy of another variable node of the codeword in a previous decoding iteration; wherein the codeword comprises a check node, a value of the check node is a parity check of a subset of the variable nodes of the codeword, and the variable node and the another variable node are both in the subset.

7. The method according to claim 1, characterized in that Calculating the value of the flip energy includes: Setting values ​​of a first parameter and a second parameter based on an index of the decoding iteration; setting values ​​of a third parameter and a fourth parameter based on the information; Determining a value of a fifth parameter based on the values ​​of the first parameter, the second parameter, the third parameter, the fourth parameter and the channel information of the variable node in the decoding iteration; The value of the fifth parameter is normalized to the value of the inversion energy.

8. The method according to claim 7, characterized in that Setting the values ​​of the first parameter and the second parameter based on an index of a decoding iteration includes comparing the index to an iteration index threshold.

9. The method according to claim 7, characterized in that: Determining a value of the fifth parameter includes determining whether a channel mismatch exists based on the channel information.

10. The method according to claim 1, characterized in that The criterion is that the value of the flip energy is greater than the flip energy threshold.

11. The method according to claim 1, characterized in that: The method also includes updating the flip energy threshold based on the check nodes of the codeword.

12. The method according to claim 1, characterized in that The method further includes calculating a syndrome weight of the codeword; and in response to the syndrome weight being zero, sending the codeword to a host system.

13. The method according to claim 1, characterized in that Also included is receiving the codeword from a non-volatile memory.

14. A controller, characterized in that: Comprising a processor configured to implement the method of any one of claims 1-13.

15. A system, characterized in that: The controller of claim 14, wherein the system is a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.

16. A non-transitory machine-readable medium having information, characterized in that: When the information is read by a hardware processor system, the hardware processor system is caused to execute the method according to any one of claims 1 to 13.