Decoding method, apparatus, device, and computer-readable storage medium

By storing codewords in multiple storage addresses and distributing data groups to decoding nodes in parallel, the compatibility problem of data storage and retrieval in multidimensional algebraic iterative decoding is solved, thus improving decoding efficiency.

CN114826283BActive Publication Date: 2026-05-15HUAWEI TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2021-01-27
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

Existing decoding devices face difficulties in compatibility with data storage and retrieval across various dimensions when iteratively decoding multidimensional algebraic codes, resulting in low decoding efficiency.

Method used

The codewords are stored in multiple storage addresses, with each address storing m rows and n columns of m*n data. The data groups are then sent to the corresponding decoding nodes for parallel decoding via data distribution nodes, supporting row-wise or column-wise decoding and improving the decoding efficiency of the data groups.

Benefits of technology

It achieves efficient parallel decoding of multidimensional codewords, improving the processing power and efficiency of decoding equipment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114826283B_ABST
    Figure CN114826283B_ABST
Patent Text Reader

Abstract

The application discloses a decoding method, device and equipment and a computer readable storage medium, and belongs to the technical field of communication. Since the m-row-n-column data in a code word can form data of multiple dimensions, for example, m-row data or n-column data, the method stores the m-row-n-column data in the code word in a storage address, facilitates reading the m-row-n-column data in the code word from the storage address, is compatible with data storage and reading of each dimension in the code word, and facilitates subsequent multi-dimensional decoding, for example, row decoding or column decoding, of the multiple dimensions of data read from the code word.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of communication technology, and in particular to a decoding method, apparatus, device, and computer-readable storage medium. Background Technology

[0002] Forward error coding (FEC) provides reliable digital transmission with relatively low overhead and is widely used in communication systems. In particular, multidimensional algebraic codes in FEC can provide high performance gains with low complexity and power consumption, such as turbo product codes (TPC), staircase codes, and continuously interleaved Bose Ray Hocquenghem (CIBCH).

[0003] Currently, general decoding devices decode multidimensional algebraic codes through iterative decoding. In each iteration of decoding, the decoding device decodes the data of each dimension of the multidimensional algebraic code in the cache at least once. Taking TPC codewords as an example, each iteration of decoding of TPC codewords includes one row decoding process and one column decoding process. The row decoding process refers to the decoding device decoding each row subcode in the TPC codeword, and the column decoding process refers to the decoding device decoding each column subcode in the TPC codeword.

[0004] Since the decoding device decodes data in a multidimensional algebra from multiple dimensions, during the iterative decoding process, the decoding device needs to read data from each dimension of the multidimensional algebra from the cache. Therefore, how to ensure compatibility between the storage and retrieval of data from each dimension of the multidimensional algebra is a problem that urgently needs to be solved in the decoding process. Summary of the Invention

[0005] This application provides a decoding method, apparatus, device, and computer-readable storage medium, capable of supporting data storage and retrieval across various dimensions of codewords. The technical solution is as follows:

[0006] Firstly, a decoding method is provided, the method comprising:

[0007] The codeword is stored in multiple storage addresses, where one storage address is used to store m*n data in m rows and n columns of the codeword, where m and n are both integers greater than or equal to 1; for any of the multiple storage addresses, the m*n data stored in the any storage address is read; the read m*n data is decoded.

[0008] Since the data in m rows and n columns of a codeword can form data in multiple dimensions, such as m rows or n columns, this method stores the data in m rows and n columns of the codeword in one storage address, making it easy to read the data in m rows and n columns of the codeword from that storage address. This is compatible with the storage and reading of data in various dimensions of the codeword, and also facilitates subsequent multi-dimensional decoding of the read data in multiple dimensions of the codeword, such as row-wise decoding or column-wise decoding.

[0009] In one possible implementation, decoding the read m*n data items includes:

[0010] If the current decoding process is a row-wise decoding process, based on the position of the m*n data read in the codeword, m row data groups are determined; the m row data groups are decoded, wherein a row data group includes n data from the m*n data read, and the n data are located in the same row in the codeword.

[0011] Based on the above possible implementation methods, each row of data in the data group is decoded, thereby realizing the row-wise decoding of the data group, that is, the decoding of the data group in the row-wise dimension.

[0012] In one possible implementation, decoding the m rows of data includes:

[0013] The m rows of data are sent to m first decoding nodes respectively, and each first decoding node decodes the received rows of data.

[0014] Based on the above possible implementation methods, by sending m rows of data to m first decoding nodes respectively, and having each first decoding node decode one row of data received, the m rows of data can be decoded in parallel, thereby improving the decoding efficiency of the data groups.

[0015] In one possible implementation, decoding the read m*n data items includes:

[0016] If the current decoding process is a column-oriented decoding process, based on the positions of the read m*n data in the codeword, n column data groups are determined; the n column data groups are decoded, wherein a column data group includes m data from the read m*n data, and the m data are located in the same column in the codeword.

[0017] Based on the above possible implementation methods, each column of data in the data group is decoded, thereby realizing column-wise decoding of the data group, that is, decoding of the data group in the column dimension.

[0018] In one possible implementation, decoding the n column data groups includes:

[0019] The n column data groups are sent to n second decoding nodes respectively, and each second decoding node decodes the received column data groups.

[0020] Based on the above possible implementation methods, by sending n row data groups to n second decoding nodes respectively, and having each second decoding node decode one column data group received, parallel decoding of n column data groups can be achieved, thereby improving the decoding efficiency of the data groups.

[0021] In one possible implementation, after decoding the read m*n data, the method further includes:

[0022] The m*n data stored in any of the aforementioned storage addresses are modified into m*n decoded data, wherein the m*n decoded data are the data after decoding the read m*n data.

[0023] In one possible implementation, storing the codewords at multiple storage addresses includes:

[0024] The data in the codeword is divided into multiple data groups according to the granularity of m rows and n columns; the multiple data groups are stored in the multiple storage addresses, wherein a data group includes m*n data in m rows and n columns of the codeword, and one data group is stored in one storage address.

[0025] In one possible implementation, the multiple storage addresses belong to the same storage node.

[0026] In one possible implementation, the plurality of storage addresses belong to multiple storage nodes;

[0027] The step of storing the plurality of data groups in the plurality of storage addresses includes:

[0028] The multiple data sets are combined into multiple datasets; the data sets in the multiple datasets are stored in the multiple storage addresses, wherein a dataset includes multiple adjacent data sets, a storage address stores one data set, and multiple data sets in the same dataset are stored in storage addresses within different storage nodes.

[0029] In one possible implementation, after storing the data groups from the plurality of datasets at the plurality of storage addresses, the method further includes:

[0030] For any one of the plurality of datasets, read multiple data groups of that dataset from the plurality of storage nodes.

[0031] Based on the above possible implementation methods, a dataset can be read from multiple storage nodes at once, so that multiple data groups in the read dataset can be decoded in parallel, thereby improving the parallelism and decoding efficiency in the decoding process.

[0032] In one possible implementation, the codeword includes multiple sub-codes, and after storing the codeword at multiple storage addresses, the method further includes:

[0033] For multiple adjacent target subcodes among the multiple subcodes, at least one target dataset related to the multiple target subcodes is determined from the multiple datasets, wherein the at least one target dataset includes at least one target data group related to the multiple target subcodes, and a target data group includes data of a portion of the target subcodes among the multiple target subcodes;

[0034] Read the target data group from the at least one target dataset from the plurality of storage nodes; decode the read target data group.

[0035] In one possible implementation, the read target data group includes at least one odd target data group and at least one even target data group, wherein the odd target data group is the target data group located in the odd row layer of the codeword, and the even target data group is the target data group located in the even row layer of the codeword.

[0036] The decoding of the multiple target data groups read includes:

[0037] The at least one odd target data group is sent to multiple third decoding nodes, which decode the received odd target data group; the at least one even target data group is sent to multiple fourth decoding nodes, which decode the received even data group.

[0038] Secondly, a decoding apparatus is provided for performing the above-described decoding method. Specifically, the decoding apparatus includes a functional module for performing the decoding method provided in the first aspect or any alternative method of the first aspect.

[0039] Thirdly, a decoding device is provided, comprising a processor and a memory, wherein at least one piece of program code is stored in the memory, the program code being loaded and executed by the processor to perform the operations as described above in the decoding method.

[0040] Fourthly, a computer-readable storage medium is provided, which stores at least one piece of program code that is loaded and executed by a processor to perform the operations as described above in the decoding method.

[0041] Fifthly, a computer program product or computer program is provided, the computer program product or computer program including program code stored in a computer-readable storage medium, a processor of a decoding device reading the program code from the computer-readable storage medium, the processor executing the program code, causing the computer device to perform the method provided in the first aspect or various optional implementations of the first aspect. Attached Figure Description

[0042] To more clearly illustrate the technical solutions in the embodiments of this application, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0043] Figure 1 This is a schematic diagram of the structure of a TCP codeword provided in an embodiment of this application;

[0044] Figure 2 This is a schematic diagram of the structure of an OFEC codeword provided in an embodiment of this application;

[0045] Figure 3 This is a schematic diagram of a decoding system provided in an embodiment of this application;

[0046] Figure 4 This is a schematic diagram of the structure of a decoding device provided in an embodiment of this application;

[0047] Figure 5 This is a flowchart of a decoding method provided in an embodiment of this application;

[0048] Figure 6 This is a schematic diagram of codeword storage provided in an embodiment of this application;

[0049] Figure 7 This is a schematic diagram of an iterative decoding method provided in an embodiment of this application;

[0050] Figure 8 This is a flowchart of a decoding method provided in an embodiment of this application;

[0051] Figure 9 This is a schematic diagram of codeword storage provided in an embodiment of this application;

[0052] Figure 10 This is a schematic diagram illustrating the correspondence between data groups and storage nodes in a TPC codeword, provided in an embodiment of this application.

[0053] Figure 11 This is a decoding process for a convolutional code provided in an embodiment of this application;

[0054] Figure 12 This is a schematic diagram of an OFEC codeword decoding process provided in an embodiment of this application;

[0055] Figure 13 This is a schematic diagram of the structure of a decoding device provided in an embodiment of this application. Detailed Implementation

[0056] To make the objectives, technical solutions, and advantages of this application clearer, the embodiments of this application will be described in further detail below with reference to the accompanying drawings.

[0057] To facilitate understanding of the decoding process provided in this application, the codeword structures of the following various codewords will be introduced below.

[0058] 1. TPC codewords

[0059] Figure 1 This is a schematic diagram of the structure of a TCP codeword provided in an embodiment of this application. See also... Figure 1 , Figure 1 The TCP codeword in the TCP codeword consists of R rows and K columns of R*K data, with each data occupies 1 bit, where R and K are both integers greater than 1. In one possible implementation, the TCP codeword includes multiple subcodes, each subcode comprising multiple data items from the TCP codeword. For example, each row of data in the TCP codeword could be a subcode, or each column of data in the TCP codeword could be a subcode.

[0060] 2. Open Forward Error Correction (OFEC) codewords

[0061] Figure 2 This is a schematic diagram of the structure of an OFEC codeword provided in an embodiment of this application. See also... Figure 2 The OFEC codeword is a wirelessly extended convolutional code. It comprises multiple rows and columns of data, each occupying one bit. Based on the order in which the data was generated, the OFEC codeword can be categorized into historical and future data. For example, in a given row of data, the row following it is considered future data, while the row following it is considered historical data.

[0062] In one possible implementation, the OFEC codeword comprises multiple blocks, each block consisting of m rows and n columns of m*n data, with each data occupies one bit, where m and n are both integers greater than 1, for example... Figure 2 In this case, m = n = 16.

[0063] In OFEC codewords, multiple blocks on the same line form a line layer, for example... Figure 2 Each row level shown includes 8 blocks. If m = n = 16, then each row level includes 8 * 6 * 16 data items. Optionally, each row level is identified by a row level number, for example... Figure 2 The OFEC codewords in the OFEC framework consist of [-∞, +∞] row layers, each with a row layer number. For ease of description, row layers with odd row layer numbers are denoted as odd row layers, and row layers with even row layer numbers are denoted as even row layers. A single OFEC frame is formed by two adjacent row layers, one odd and one even. In other words, an OFEC frame comprises two adjacent radix-numbered row layers and one even row layer. Figure 2 One OFEC frame contains 8*16*16*2=128*16*2 data points.

[0064] In OFEC codewords, multiple blocks in the same column constitute a column layer. Optionally, each column layer is identified by a column layer number, for example... Figure 2 The OFEC codewords in the codeword include column levels 0 to 7. In one possible implementation, the location information of a data point in the codeword includes the row level number of the target row level, the column level number of the target column level, the row number of the data within the target row level, and the column number of the data within the target column level. Figure 2 Taking the two data points within the first block of the -2 row layer in the OFEC codeword shown as an example, the position information of the data in the first row and first column of this block is represented as [-2, 0, 0, 0], where -2, 0, 0, 0 are used to indicate the first row in the -2 row layer, the first column in the 0 column layer, the first row in the -2 row layer, and the first column in the 0 column layer, respectively. The position information of the data in the second row and first column of this block can be represented as [-2, 0, 1, 0], where -2, 0, 1, 0 are used to indicate the second row in the -2 row layer, the first column in the 0 column layer, the second row in the -2 row layer, and the first column in the 0 column layer, respectively. It should be noted that... Figure 2 The mark B at the block location represents the side length of the block. This can be understood as, for a block of size m*n, both m and n are equal to B.

[0065] In one possible implementation, the OFEC codeword includes multiple subcodes. The first half of each subcode consists of multiple short columns arranged diagonally and multiple short columns arranged horizontally within the OFEC codeword. Each of the diagonally arranged short columns represents a column of data within a block at a different row level, and each of the horizontally arranged short columns represents a row of data within a block, all within the same row at the same row level. Figure 2 The OFEC codeword shown uses the BCH(256, 239) subcode, with each block containing 16*16 data points as an example. Figure 2 A BCH(256, 239) subcode is formed by multiple short columns of the same line pattern. The multiple short columns of a line pattern include 8 short columns arranged diagonally and 8 short columns located in the same row. The 8 short columns arranged diagonally are the diagonal short columns in the BCH(256, 239) subcode, which are the first 128 bits of data in the BCH(256, 239) subcode. The 8 short columns located in the same row are the horizontal short columns in the BCH(256, 239) subcode, which are the last 128 bits of data in the BCH(256, 239) subcode.

[0066] from Figure 2 It can be seen that the data of the subcodes in the OFEC codeword are interleaved. The interleaving relationship in the OFEC codeword is represented by the following formulas (1)-(2).

[0067] Ift <W:{(H^1)–2G-2W / B+2[t / B],[t / B],(t%B)^p,p} (1)

[0068] Ift≥W:{H,[(t–W) / B],p,(t%B)^p} (2)

[0069] Where t is the position number of a data point within a subcode in the OFEC codeword. For example, if the subcode is BCH(256, 239), the position number of the data in the first bit of the BCH(256, 239) subcode is 1, and the position number of the data in the second bit is 2. W is half the code length of the subcode. For example, if the subcode is BCH(256, 239), then W is 128. (H^1)–2G-2W / B+2[t / B] is the row layer number of the row layer where the data is located when it is the first half of the subcode. Where B is the side length of a block, for example, 16. [t / B] is the column layer number of the column layer where the data is located when it is the first half of the subcode. For example, if t = 1, B = 16, and 0 < 1 / 16 < 1, then 0 is the column number of the data. Similarly, if t = 17, B = 16, and 1 < 17 / 16 < 2, then 1 is the column number of the data. G is an integer greater than or equal to 1, used to represent the guard interval. If there is no encoding relationship between rows of data in 2G+2 consecutive rows, the decoding device can treat 2G+2 consecutive rows as a multiframe and perform encoding and decoding on a multiframe in parallel. (t%B)^p is the row number of the column containing the data when the data is the first half of the subcode. Here, "%" indicates a rounding operation, and "^" indicates a bitwise XOR operation. When the data is the first half of the subcode, p is the column number of the data; when the data is the second half of the subcode, p is the row number of the data. H is the row level number of the data when it is the second half of the subcode. [(t–W) / B] is the column level number of the data when it is the second half of the subcode. As can be seen from the above description of formulas (1)-(2), formulas (1) and (2) are the position information of the first half of the subcode data and the position information of the second half of the subcode data, respectively.

[0070] Figure 3 This is a schematic diagram of a decoding system provided in an embodiment of this application. See also... Figure 3The system 300 includes a data processing node 301, a storage node 302, a data distribution node 303, and a decoding node 304. The data processing node 301 acquires codewords and stores them in the storage node 302. In one possible implementation, the data processing node 301 divides the data in the codeword into multiple data groups, each data group comprising m*n data items in m rows and n columns of the codeword, and stores each data group in a storage address within the storage node 302. During row-by-row iterative decoding of the codeword, the data distribution node 303 reads one data group at a time from a storage address in the storage node 302. If the decoding process is row-by-row decoding, the data distribution node 303 determines that it has read multiple row data groups within the data group and distributes each row data group to a decoding node 304. Multiple decoding nodes 304 decode the received row data groups, thus enabling multiple decoding nodes 304 to perform the data decoding process on one dimension of a data group in parallel. If the current decoding process is a column decoding process, the data distribution node 303 will definitely read multiple column data groups in the data group and distribute each column data group to a decoding node 304. Multiple decoding nodes 304 will decode the received column data groups, thereby enabling multiple decoding nodes 304 to perform the data decoding process of another dimension on a data group in parallel.

[0071] In another possible implementation, the data processing node 301 combines multiple adjacent data in the codeword into a dataset, and stores the multiple data groups in the dataset at storage addresses in multiple storage nodes 302, with the multiple data groups in the dataset located in different storage nodes 302. During the row-by-row decoding of the codeword, the data distribution node 303 reads multiple data groups of the dataset from the multiple storage nodes 302 at one time. If the current decoding process is a row decoding process, the data distribution node 303 determines the multiple row data groups of each data group in the dataset and distributes each row data group to a decoding node 304. At this time, a decoding node 304 is used to receive one row data group from each data group in the dataset, and multiple decoding nodes 304 decode each received row data group, thereby implementing the data decoding process of one dimension of a dataset in parallel by multiple decoding nodes 304. If the current decoding process is a column decoding process, the data distribution node 303 determines multiple column data groups from each data group in the dataset it has read, and distributes each column data group to a decoding node 304. At this time, a decoding node 304 receives one column data group from each data group in the dataset. Multiple decoding nodes 304 decode each received column data group, thus enabling multiple decoding nodes 304 to perform the data decoding process for another dimension of a dataset in parallel. Furthermore, compared to decoding one data group at a time, decoding multiple data groups in a dataset at once has higher parallelism and decoding efficiency.

[0072] In one possible implementation, the decoding node 304 is any decoder with decoding capabilities, such as a soft-in soft-out (SISO) BCH sub-decoder, a hard-in hard-out (HIHO) BCH sub-decoder, etc.

[0073] After each decoding node 304 completes decoding a row or column of data, it writes the decoded data back to the storage address in the storage node 302, overwriting the corresponding data stored at that address. This allows the subsequent data distribution node 303 to read data from that storage address again and perform the next decoding process, thus achieving iterative decoding.

[0074] In one possible implementation, each node in system 300 is an independent device. In another possible implementation, system 300 can be deployed on a decoding device, in which case each node in system 300 is a module within that decoding device. Of course, the functionality of multiple nodes in system 300 can also be implemented by the same module on a decoding device, or by multiple devices.

[0075] For example Figure 4 The schematic diagram shown in this application embodiment illustrates the structure of a decoding device 400. This decoding device 400 can vary significantly due to different configurations or performance characteristics. It includes one or more processors 401 and one or more memories 402. The processors include central processing units (CPUs). The memories 402 store at least one line of program code, which is loaded and executed by the processors 401 to implement the decoding methods provided in the following method embodiments. For example, each memory 401 is a storage node. For instance, when the decoding device 400 includes one processor 401, that processor 401 is used to implement the functions of a data processing node, a data distribution node, and a decoding node. When the decoding device 400 includes multiple processors 401, one processor 401 can be used to implement the functions of one of the following nodes: a data processing node, a data distribution node, and a decoding node.

[0076] Of course, the decoding device 400 may also have wired or wireless network interfaces, keyboards, and input / output interfaces for input and output. The decoding device 400 may also include other components for implementing device functions, which will not be elaborated here.

[0077] In an exemplary embodiment, a computer-readable storage medium is also provided, such as a memory including program code that can be executed by a processor in a terminal to perform the decoding method in the following embodiments. For example, the computer-readable storage medium is a non-transitory computer-readable storage medium, such as read-only memory (ROM), random access memory (RAM), compact disc read-only memory (CD-ROM), magnetic tape, floppy disk, and optical data storage device.

[0078] For example, to further illustrate, the decoding device uses a data group storage and retrieval method to store and retrieve codewords, and decodes the retrieved data groups to achieve the codeword decoding process. See [link to documentation]. Figure 5The flowchart shown is a decoding method provided in an embodiment of this application.

[0079] 501. Decoding device acquires codeword.

[0080] This codeword is the codeword to be decoded. It can be any type of multidimensional code, such as TPC codewords, convolutional codewords, ladder codewords, and CIBCH. The codeword has a dimension greater than or equal to 2. When the codeword is a two-dimensional code, it includes R*K data points arranged in R rows and K columns, with each data point occupying 1 bit. For example... Figure 1 The TPC codeword shown is a three-dimensional codeword. When the codeword is a three-dimensional codeword, it comprises F*R*K data points of height F, arranged in R rows and K columns, with each data point occupying 1 bit, where F is an integer greater than 1. In this embodiment, the type and dimension of the codeword are not limited.

[0081] In one possible implementation, step 501 is performed by a data processing node within the decoding device. The data processing node obtains the codeword from a target node, which can be any node storing the codeword or any node encoding the codeword. Optionally, the target node can be a node outside the decoding device. For example, when the encoding device encoding the codeword and the decoding device are not the same device, the encoding device encoding the codeword becomes the target node. After the encoding device encodes the codeword, it sends the codeword to the data transmission interface of the decoding device, and the data processing node within the decoding device receives the codeword from the data transmission interface. Alternatively, the target node can be a module within the decoding device. For example, if the decoding device also has encoding capabilities, the target node in the decoding device encodes the codeword and then sends it to the data processing node within the decoding device.

[0082] 502. The decoding device stores the codeword in multiple memory addresses. One memory address is used to store m*n data in m rows and n columns of the codeword, where m and n are both integers greater than or equal to 1.

[0083] Optionally, the multiple storage addresses belong to the same storage node, and the storage space provided by the storage node is indicated by the storage address. For example, the storage node is a RAM, and the decoding device can store the codeword in multiple storage addresses in the RAM.

[0084] When the code is Figure 1 In the TCP codeword shown, m is an integer greater than or equal to 1 and less than R, and n is an integer greater than or equal to 1 and less than K. m and n may be equal or unequal, and R and K may be equal or unequal. In some embodiments, R divides m and / or K divides n. In some embodiments, R does not divide m and / or K does not divide n.

[0085] In some embodiments, the decoding device first divides the codeword into multiple data groups, and then stores the multiple data groups in multiple memory addresses. In one possible implementation, step 502 is implemented by the process shown in steps 5021-5022 below.

[0086] Step 5021: The decoding device divides the data in the codeword into multiple data groups according to the granularity of m rows and n columns. Each data group includes m*n data in the codeword in m rows and n columns.

[0087] In one possible implementation, the decoding device sets up a sliding window of m rows and n columns of bits, and the decoding device divides the codeword into multiple data groups by sliding the sliding window over the codeword.

[0088] Optionally, initially, the decoding device slides the window to the upper left corner of the codeword. At this point, the window covers the data in rows 1 to m and columns 1 to n of the codeword. The decoding device then identifies all the data covered by the window at this time as a single data group. The decoding device then slides the window to the right in steps of n bits. After the slide is complete, the window covers the data in rows 1 to m and columns (n+1) to 2n of the codeword. The decoding device then identifies all the data covered by the window at this time as a single data group. Grouping; and so on, the decoding device continues to slide the window to the right until the window can cover the data in rows 1 to m and column K of the codeword, at which point the decoding device ends sliding on rows 1 to m of the codeword; and referring to the above sliding method, the decoding device slides the window on rows m+1 to 2m to divide the data in rows m+1 to 2m of the codeword into multiple data groups; and so on, until the data node slides the window until it can cover the data in row R and column K of the codeword, at which point the sliding ends. For example Figure 6 The diagram shown is a schematic representation of codeword storage provided in an embodiment of this application. Figure 6 Each rectangle on the codeword represents the area covered by the sliding window after each slide, and all the data within each rectangle forms a data group.

[0089] It should be noted that when R is divisible by m and K is divisible by n, the sliding window of the decoding device can cover m*n data in the codeword after each sliding operation. When R is not divisible by m or K is not divisible by n, if the sliding window slides to the Kth column or the Rth row, the sliding window cannot cover the m*n data in the codeword, and in this case, the data group determined by the decoding device does not contain m*n data.

[0090] In some embodiments, after the codeword is divided into multiple data groups, the decoding device treats multiple data groups in the same row as a row layer and multiple data groups in the same column as a column layer. The decoding device assigns a row layer number to each row layer and a column layer number to each column layer. A data group is identified by its position information, which includes the row layer number of the data group and the column layer number of the data group. For example... Figure 6 The position information of the first data group within the codeword is 1-1, indicating that it is a data group located in the first row and the first column.

[0091] It should be noted that the process shown in step 5021 above is a grouping of data in one dimension of the codeword. The decoding device can group the data in another dimension of the codeword according to the process shown in step 5021 above.

[0092] Step 5022: The decoding device stores the multiple data groups in the multiple storage addresses, with one data group stored in each storage address.

[0093] Optionally, the decoding device sends the multiple data groups to a storage node, which stores each data group in a separate storage address within the storage node. For example... Figure 6 As shown, the storage node stores the data groups 1-1, 1-2, and 1-3 in the codeword at storage addresses 1 to 3 within the storage node, respectively.

[0094] For any one of the multiple data groups, the storage node stores the data in that data group row by row sequentially at a storage address within the storage node. For example... Figure 6 As shown, the storage node stores the four data items from the three rows of data group 1-1 sequentially in storage address 1, and the twelve data items in storage address 1 are arranged in one row.

[0095] It should be noted that in some embodiments, the process shown in step 502 is executed by the data processing node in the decoding device. The process shown in steps 501-502 only needs to be executed once and does not need to be executed multiple times.

[0096] After the decoding device finishes storing the codeword in the storage node, it decodes the codeword stored in the storage node. Since the codeword is a multi-dimensional code, the decoding performed by the decoding device is multi-dimensional decoding, or iterative decoding. The iterative decoding process includes row decoding and column decoding. For either row or column decoding, the decoding device first reads each data group belonging to the codeword from the storage node and decodes the data in each data group. To further illustrate either decoding process, please refer to steps 503-504 below.

[0097] It should be noted that step 502 is illustrated using a 2D codeword as an example. In some embodiments, when the codeword has more than 2 dimensions, the decoding device divides the codeword into multiple multi-dimensional data blocks. Each multi-dimensional data block is located across all dimensions of the codeword, and the decoding device stores each multi-dimensional data block in a storage address. Taking a 3D codeword as an example, the decoding device divides the data in a 9*9*9 3D codeword into multiple 3*3*3* 3D data blocks, and stores each 3*3*3* 3D data block in a separate storage address.

[0098] 503. For any one of the multiple storage addresses, the decoding device reads the m*n data stored in that storage address.

[0099] A data group stored in a memory address is the basic unit for the decoding device to read and write data. The decoding device can read m*n data items from any memory address at a time. Optionally, the process shown in step 503 is executed by the data distribution node in the decoding device.

[0100] 504. This decoding device decodes the m*n data read.

[0101] In one possible implementation, if the current decoding process is a row-oriented decoding process, the decoding device determines the arrangement of the m*n data read in the row dimension of the codeword and decodes the data arranged in the row dimension. Optionally, the process shown in step 504 can be implemented by the processes shown in steps 5041-5042 below.

[0102] Step 5041: If the current decoding process is a row-oriented decoding process, the decoding device determines m row data groups based on the position of the read m*n data in the codeword. A row data group includes n data from the read m*n data, and the n data are located in the same row in the codeword.

[0103] The m-row data group represents the arrangement of the m*n data read in this data group along the row dimension. Since the m*n data stored in any memory address constitutes one row of data at that memory address, the m*n data read by the decoding device from that memory address is also one row of data. To facilitate decoding, the decoding device also needs to determine the position of the m*n data read in this data group within the codeword, so as to determine the arrangement of each data in the read data group along the row dimension based on the position of the m*n data within the codeword.

[0104] The decoding device, based on the positions of the read m*n data points within the codeword, groups the (i-1)*n+1th to the i*nth data points into a single row. Here, i is an integer greater than or equal to 1 and less than or equal to m. For example, when i = 1, the decoding device groups the 1st to the nth data points from the m*n data points arranged in a row into a single row. Similarly, when i = 2, the decoding device groups the (n+1th)th to the 2nth data points from the m*n data points arranged in a row into a single row.

[0105] It should be noted that, in some embodiments, the process shown in step 5041 is performed by the data distribution node in the decoding device.

[0106] Step 5042: The decoding device decodes the m rows of data.

[0107] In some embodiments, the decoding device decodes the m row data groups in parallel to improve the decoding efficiency of the data group stored in any memory address. In one possible implementation, step 5042 is completed by the data distribution node and multiple first decoding nodes in the decoding device. After the data distribution node determines the m row data groups, it sends the m row data groups to the m first decoding nodes respectively. Each first decoding node decodes one row data group from the received row data groups, and different first decoding nodes receive different row data groups.

[0108] In one possible implementation, the data distribution node has an m*n bit data distribution queue. Bits (i-1)*n+1 to i*n of this queue are connected to a first decoding node. The data distribution node arranges the read m*n data bits sequentially across the bits in the data distribution queue, so that the n data bits at bits (i-1)*n+1 to i*n form a row of data. For any row of data, the data distribution queue sends the n data bits of that row to the first decoding node via the connection between the bit position of that row and the first decoding node. The first decoding node then decodes the n data bits of that row.

[0109] To further illustrate the process shown in steps 5041-5042, see [link to documentation]. Figure 7 The decoding process of the first dimension data shown in the figure, wherein, Figure 7 This illustration shows an iterative decoding method provided in this application. The first dimension data is the data (m*n data) read and arranged in the row direction of the codeword. When the data distribution node reads m*n data arranged in a row from any memory address, it splits the m*n data into m row data groups, namely row data group 1 to m, and distributes the m row data groups to m first decoding nodes, namely first decoding node 1 to m, thereby realizing the distribution of the first dimension data. Each first decoding node decodes the n data in a row data group.

[0110] In one possible implementation, if the current decoding process is a column-oriented decoding process, the decoding device determines the arrangement of the m*n data read in this decoding process along the column dimension of the codeword, and decodes the data arranged along the column dimension. Optionally, the process shown in step 504 can be implemented by the processes shown in steps 504A-504B below.

[0111] Step 504A: If the current decoding process is a row-oriented decoding process, the decoding device determines n column data groups based on the position of the read m*n data in the codeword. Each column data group includes m data from the read m*n data, and the m data are located in the same column in the codeword.

[0112] The n-column data group represents the arrangement of the m*n data read in this data group along its column dimension. Since the m*n data stored at any memory address constitutes a row of data at that memory address, the m*n data read by the decoding device from that memory address is also a row of data. To facilitate decoding, the decoding device also needs to determine the position of the m*n data read in this data group within the codeword, so as to determine the arrangement of each data in the read data group along its column dimension based on the position of the m*n data within the codeword.

[0113] The decoding device determines m row data groups based on the positions of the read m*n data points within the codeword, and then assigns the j-th data point from each of the m row data groups to the j-th column data group from the n column data groups, where j is an integer greater than or equal to 1 and less than or equal to n. For example, the decoding device assigns the first data point from the m row data groups to the first column data group from the n column data groups. Similarly, the decoding device assigns the second data point from the m row data groups to the second column data group from the n column data groups.

[0114] It should be noted that, in some embodiments, the process shown in step 504A is performed by the data distribution node in the decoding device.

[0115] Step 504B: The decoding device decodes the n column data groups.

[0116] In some embodiments, the decoding device decodes the n column data groups in parallel to improve the decoding efficiency of the decoding device for the data group stored in any memory address. In one possible implementation, step 504B is completed by the data distribution node and multiple second decoding nodes in the decoding device. After the data distribution node determines the n column data groups, it sends the n column data groups to the n second decoding nodes respectively. Each second decoding node decodes one column data group from the received column data groups, and different second decoding nodes receive different column data groups.

[0117] In one possible implementation, for any row of data, the n bits of that row in the data distribution queue of the data distribution node are each connected to a second decoding node, allowing a second decoding node to connect to the bit position of a data item in m data groups. It can be understood that the m data items connected to the m bits by a second decoding node constitute a column data group. The data distribution node arranges the read m*n data items sequentially across the bits in the data distribution queue. For any column data group among the n column data groups, the data distribution queue sends the m data items in that column data group to the second decoding node through the connection between the bit position of that column data group and the second decoding node, whereby the second decoding node decodes the m data items in that column data group.

[0118] To further illustrate the process shown in steps 504A-504B, see [link to documentation]. Figure 7 The decoding process for the second-dimensional data shown is as follows: the second-dimensional data refers to the m*n data read and arranged in the column-wise dimension of the codeword. When the data distribution node reads m*n data arranged in a row from any storage address, it splits the m*n data into n column data groups, designated column data group 1 to n, and distributes these n column data groups to n second decoding nodes, designated second decoding node 1 to n. This achieves the distribution of the second-dimensional data, with each second decoding node decoding the m data items in one column data group.

[0119] It should be noted that in some embodiments, the m first decoding nodes and n second decoding nodes are different decoding nodes. In other embodiments, the first and second decoding nodes can be multiplexed. If m is greater than or equal to n, during column-wise decoding, n of the m first decoding nodes are multiplexed into n second decoding nodes. If m is less than n, during row-wise decoding, m of the n second decoding nodes are multiplexed into m first decoding nodes to reduce the number of decoding nodes in the decoding device. Since the decoding device performs row decoding first and then column decoding, or vice versa, during iterative decoding of a data group in a codeword, the column decoding and row decoding processes for a data group will not occur simultaneously. Therefore, the first and second decoding nodes can be multiplexed.

[0120] It should be noted that step 504 is illustrated using a 2D codeword as an example. In some embodiments, when the dimension of the codeword is greater than 2, the decoding device reads a multi-dimensional data block from any storage address, rather than a two-dimensional data group. In this case, the decoding device can first divide the multi-dimensional data block into multiple two-dimensional data groups, and then perform step 504 on each two-dimensional data group.

[0121] 505. The decoding device modifies the m*n data in any storage address into m*n decoded data, where the m*n decoded data are the data after decoding the read m*n data.

[0122] The m*n data in any given storage address corresponds one-to-one with the m*n decoded data. After the decoding device finishes decoding the m*n data in any given storage address, it obtains m*n decoded data. The decoding device then writes the m*n decoded data back to the given storage address according to the one-to-one correspondence between the m*n data in the given storage address and the m*n decoded data, thereby overwriting the m*n data stored in that given storage address and thus achieving modification.

[0123] In some embodiments, the process shown in step 505 is completed by the data distribution node and the decoding node in the decoding device. In one possible implementation, if the current decoding process is a row-wise decoding process, for any one of the m first decoding nodes, after decoding n data in a row data group, any one of the first decoding nodes obtains n decoded data, which correspond one-to-one with the n data. This one of the first decoding nodes writes the n decoded data back to the data distribution node. After all m first decoding nodes have written their respective n decoded data back to the data distribution node, the data distribution node can obtain m*n decoded data, and the data distribution node writes the m*n decoded data back to the specified storage address.

[0124] In another possible implementation, if the decoding process is a column-oriented decoding process, for any one of the n second decoding nodes, after decoding m data items in a column data group, each second decoding node obtains m decoded data items, which correspond one-to-one with the m data items. This second decoding node writes these m decoded data items back to the data distribution node. After all n second decoding nodes have written their respective m decoded data items back to the data distribution node, the data distribution node can obtain m*n decoded data items, and then writes these m*n decoded data items back to the specified memory address.

[0125] When the decoding device completes the process shown in steps 503-505 for each data group belonging to the codeword, the decoding process for one dimension of the codeword is completed. The decoding device then jumps to the process shown in steps 503-505 to continue the decoding process for another dimension of the codeword, thereby realizing the iterative decoding process for the codeword. For example, after the decoding device completes the row-wise decoding process for each data group in the codeword through steps 503-505, the decoding device continues to perform the column-wise decoding process for each data group in the codeword through steps 503-505.

[0126] Since the m*n data stored in any data group satisfy both row-wise and column-wise distributions, in some embodiments, the decoding device uses the data group as the basic unit for iterative decoding. By executing steps 503-505 above, after completing row-wise decoding of a data group stored in any memory address, the decoding device does not need to wait for data groups stored in other memory addresses to complete row-wise decoding. Instead, it directly performs column-wise decoding on the currently stored data group in any memory address through steps 503-505, thereby achieving iterative decoding of a data group within the codeword.

[0127] Taking the data group [1, 2; 3, 4] stored in any memory address as an example, during the row decoding process, the data distribution node reads the data group [1, 2; 3, 4] from any memory address and, based on the read data group [1, 2; 3, 4], determines two row data groups, namely row data group [1, 2] and row data group [3, 4]. The data distribution node sends row data groups [1, 2] and row data group [3, 4] to decoding nodes 1 and 2, respectively. Decoding node 1 decodes row data group [1, 2] to obtain decoded data 5 and 6, and decoding node 2 decodes row data group [3, 4] to obtain decoded data 7 and 8. Decoding node 1 writes decoded data 5 and 6 back to the data distribution node, and decoding node 2 writes decoded data 7 and 8 back to the data distribution node. The data distribution node writes the decoded data 5, 6, 7, and 8 back to any storage address, overwriting the data 1, 2, 3, and 4 stored in that address. At this point, the data group stored in any storage address is updated to [5, 6; 7, 8]. During column decoding, the data distribution node reads the data group [5, 6; 7, 8] from any storage address and, based on this data group, determines two column data groups: [5, 7] and [6, 8]. The data distribution node sends column data groups [5, 7] and [6, 8] to decoding nodes 3 and 4, respectively. Decoding node 3 decodes column data group [5, 7] to obtain decoded data 9 and 10, and decoding node 4 decodes column data group [6, 8] to obtain decoded data 11 and 12. Decoding node 3 writes decoded data 9 and 10 back to the data distribution node, and decoding node 4 writes decoded data 11 and 12 back to the data distribution node. The data distribution node writes the decoded data 9, 11, 10, and 12 back to any storage address, overwriting 5, 6, 7, and 8 stored at that address. At this point, the data group stored at any storage address is updated to [9, 11; 10, 12]. The data stored at any storage address undergoes one row decoding and one column decoding. When the decoding device performs one row decoding and one column decoding process for each data group in a codeword, it is equivalent to performing one iterative decoding process for that codeword. Decoding nodes 1 and 2 are both first decoding nodes, and decoding nodes 3 and 4 are both second decoding nodes.

[0128] Since the data in m rows and n columns of a codeword can form data in multiple dimensions, such as m rows or n columns, this embodiment stores the data in m rows and n columns of the codeword at a single storage address. This facilitates reading the data from that address, ensuring compatibility with data storage and retrieval across various dimensions within the codeword. It also facilitates subsequent multi-dimensional decoding of the read data in the codeword, such as row-wise or column-wise decoding. Furthermore, it allows for flexible design with arbitrary parallelism, unrestricted by subcode length, supporting high-throughput FEC design requirements.

[0129] Figure 5 The process shown illustrates how a decoding device decodes codewords using one data group as a decoding processing unit. When the codeword contains a large amount of data, the decoding device can also use multiple data groups as a decoding processing unit to decode multiple data groups simultaneously, thereby improving the parallelism and efficiency of the decoding. For further explanation of this process, please refer to [link to documentation]. Figure 8 The flowchart shown is a decoding method provided in an embodiment of this application.

[0130] 801. Decoding device acquires codeword.

[0131] The process shown in step 801 is the same as that shown in step 501 above. Therefore, this embodiment of the application will not elaborate on step 801.

[0132] 802. The decoding device divides the data in the codeword into multiple data groups according to a granularity of m rows and n columns.

[0133] The process shown in step 802 is the same as the process shown in step 5021 above. Therefore, this embodiment of the application will not elaborate on step 802.

[0134] 803. The decoding device combines the multiple data into multiple datasets, and a dataset includes multiple adjacent data groups among the multiple data groups.

[0135] The adjacent data groups can have various adjacency patterns. Optionally, these adjacent data groups can be consecutive data groups within the same row level. Figure 9 Taking the codeword as an example, the decoding device treats the data groups 1-1, 1-2, and 1-3 in the first row layer of the codeword as a dataset, where... Figure 9 This is a schematic diagram of codeword storage provided in an embodiment of this application. Optionally, multiple adjacent data groups are multiple consecutive data groups located in the same column and row layer, so as... Figure 9 Taking a codeword as an example, the decoding device treats data groups 1-1, 2-1, and 3-1 in the first column layer of the codeword as a dataset. Optionally, multiple adjacent data groups can be multiple data groups located in adjacent row layers or adjacent column layers. Figure 9 Taking the codeword in the decoding device as an example, the data groups 1-1, 1-2, 2-1 and 2-2 in the codeword are treated as a dataset. The row and column layers of the data groups 1-1, 1-2, 2-1 and 2-2 are adjacent.

[0136] It should be noted that, Figure 9The illustrated embodiment uses the example of a decoding device combining multiple consecutive data points in the same row layer into a single dataset. In some embodiments, the process shown in step 803 is performed by a data processing node within the decoding device.

[0137] 804. The decoding device stores data groups from multiple datasets in multiple storage addresses across multiple storage nodes, wherein one data group is stored in one storage address, and multiple data groups from the same dataset are stored in storage addresses within different storage nodes.

[0138] For any one of the multiple datasets, the decoding device stores each of the multiple data groups within that dataset at a single storage address within one of the multiple storage nodes, wherein each data group in that dataset corresponds to a different storage node. Figure 9 For example, a dataset includes data groups 1-1, 1-2, and 1-3. The decoding device stores data group 1-1 at storage address 1 of storage node 1, data group 1-2 at storage address 1 of storage node 2, and data group 1-3 at storage address 1 of storage node 3.

[0139] In one possible implementation, the decoding device uses a cyclic shift method to store data groups from the multiple datasets across multiple storage nodes. Optionally, the decoding device uses a cyclic shift method to establish a correspondence between each data group in the multiple datasets and the multiple storage nodes, and stores each data group at a storage address in the corresponding storage node.

[0140] In one possible implementation, the decoding device uses a cyclic shift method to establish the correspondence between each data group in the multiple datasets and multiple storage nodes. This includes: if the number of data groups in each dataset is s and there are s storage nodes, in the s adjacent row layers of the codeword, for the z-th row layer in the s row layers, the decoding device shifts the s data groups in each dataset in the z-th row layer to the right by (z-1) bits and then sequentially associates them with the s storage nodes, where s is an integer greater than 1 and less than n, and z is an integer greater than or equal to 1 and less than or equal to z.

[0141] When z = 1, within the first row layer of the s row layers, the decoding device sequentially assigns the s data groups from each dataset within the first row layer to s storage nodes. For example, the first data group in each dataset within the first row layer corresponds to the first storage node among the s storage nodes, the second data group in each dataset within the first row layer corresponds to the second storage node among the s storage nodes, and so on. For example, if s = 3, z = 1, Figure 9The first dataset in the first row layer of the codeword shown includes data group 1-1, data group 1-2 and data group 1-3. Data group 1-1 corresponds to storage node 1, data group 1-2 corresponds to storage node 2 and data group 1-3 corresponds to storage node 1.

[0142] When z = 2, in the second row layer of the s row layers, the decoding device shifts the s data groups in each dataset within the second row layer one bit to the right, and then assigns them to the s memory nodes sequentially. For example, after shifting the data groups in each dataset one bit to the right, the second data group in each dataset corresponds to the first memory node in the s memory nodes, the third data group in each dataset corresponds to the fourth memory node in the s memory nodes, and so on. The (s-1)th data group in each dataset corresponds to the sth memory node in the s memory nodes, and the sth data group in each dataset corresponds to the first memory node in the s memory nodes. For example, when s = 3, z = 2, Figure 9 The first dataset in the second row layer of the codeword shown includes data group 2-1, data group 2-2 and data group 2-3. Data group 2-2 corresponds to storage node 1, data group 2-3 corresponds to storage node 2, and data group 2-1 corresponds to storage node 3.

[0143] When z = 3, in the 3rd row layer of the s row layers, the decoding device shifts the s data groups in each dataset within the 3rd row layer 2 bits to the right, and then assigns them to the s storage nodes sequentially. For example, after shifting the data groups in each dataset 2 bits to the right, the 3rd data group in each dataset corresponds to the 1st storage node in the s storage nodes, the 4th data group in each dataset corresponds to the 4th storage node in the s storage nodes, and so on. The (s-2)th data group in each dataset corresponds to the sth storage node in the s storage nodes, the (s-1)th data group in each dataset corresponds to the 1st storage node in the s storage nodes, and the sth data group in each dataset corresponds to the 2nd storage node in the s storage nodes. For example, when s = 3, z = 3, Figure 9 The first dataset in the third row layer of the codeword shown includes data group 3-1, data group 3-2 and data group 3-3. Data group 3-3 corresponds to storage node 1, data group 3-1 corresponds to storage node 2 and data group 3-2 corresponds to storage node 3.

[0144] To further illustrate how the decoding device uses a cyclic shift method to establish the correspondence between each data group in the multiple datasets and multiple storage nodes, see [link to documentation]. Figure 10 The diagram shown is a schematic representation of the correspondence between data groups and storage nodes in a TPC codeword provided by an embodiment of this application. Figure 10Taking the codeword TPC(256,239) as an example, TPC(256,239) is a two-dimensional block code. Each row subcode or each column subcode in TPC(256,239) is an extended BCH(256,239) subcode. The total code length of TPC(256,239) is 256*256 = 65536 bits. The decoding device divides the 65536 data in TPC(256,239) into 256 data groups, namely data group 1 to 256, with m=n=16. Each data group includes 16*16 data. If s = 4, the decoding device combines four adjacent data items in the same row layer into a single dataset, resulting in a dataset containing 4 * 16 * 16 = 1024 data items. For the first four row layers in TPC(256,239), the decoding device sequentially assigns each data group in the first row layer to one of the four storage nodes. For example, a dataset in the first row layer includes data groups 1 to 4, which are respectively assigned to storage nodes 1 to 4. After the decoding device shifts each data group in the second row layer one bit to the right, it sequentially corresponds to the four storage nodes. For example, starting from the second data group in the second row layer, data groups 18 to 21 correspond to storage nodes 1 to 4 in sequence, ..., data groups 30 to 32 correspond to storage nodes 1 to 3 in sequence. After data group 32 is mapped, the process loops to the first data group in the second row layer. Starting from the first data group in the second row layer, data group 17 corresponds to storage node 4, thus forming a cyclic shift process of shifting one bit to the right in the second row layer. From the perspective of the datasets, the second row layer includes four datasets: data groups 17 to 20, 21 to 24, 25 to 28, and 29 to 32. After shifting one bit to the right, the second data group (data groups 18, 22, 26, and 30) in these four datasets corresponds to storage node 1, the third data group (data groups 19, 23, 27, and 31) in these four datasets corresponds to storage node 2, the fourth data group (data groups 20, 24, 28, and 32) in these four datasets corresponds to storage node 3, and the first data group (data groups 17, 21, 25, and 29) in these four datasets corresponds to storage node 1. Then, following the shifting method of the second row layer, the decoding device shifts each data group in the third row layer two bits to the right and then assigns it to one of the four storage nodes in sequence. It then shifts each data group in the fourth row layer three bits to the right and then assigns it to one of the four storage nodes in sequence.

[0145] It should be noted that, in one possible implementation, the process shown in step 804 is executed by the data processing node in the decoding device. The processes shown in steps 803-804 above involve the decoding device storing multiple data groups of a codeword at multiple storage addresses, and these multiple storage addresses belong to multiple storage nodes. Furthermore, the decoding device only needs to store the codeword once, without requiring multiple storage operations.

[0146] 805. For any one of the multiple datasets, the decoding device reads multiple data groups of that dataset from the multiple storage nodes.

[0147] The decoding device determines multiple target storage addresses from multiple storage addresses of multiple storage nodes for storing any given dataset. These multiple target storage addresses belong to different storage nodes, and each target storage address stores a data set from the given dataset. The decoding device reads multiple data sets from the multiple target storage addresses. In one possible implementation, within a data reading cycle, the decoding device reads one data set from each of the multiple target storage addresses. (The last sentence, "Using any dataset as...", is a partial translation and doesn't need a direct translation.) Figure 10 Taking the first data set of the first row of the codeword as an example, within one data reading cycle, the decoding device reads data sets 1 to 4 from the four storage addresses of the four storage nodes respectively.

[0148] In one possible implementation, the process shown in step 805 is performed by the data distribution node in the decoding device.

[0149] 806. The decoding device decodes multiple data groups in any given dataset.

[0150] In one possible implementation, the decoding device decodes multiple data groups of any dataset simultaneously. For any data group among the multiple data groups of any dataset, the decoding device decodes m*n data in any data group to obtain m*n decoded data.

[0151] In one possible implementation, the process shown in step 806 is completed by the data distribution node and the decoding node in the decoding device. If the current decoding process is a row decoding process, after the data distribution node reads multiple data groups in any dataset, the decoding device determines m row data groups in each of the multiple data groups and sends the m row data groups of each data group to m first decoding nodes respectively, so that each first decoding node can receive one row data group from the multiple data groups. It can be understood that each first decoding node can receive multiple row data groups, and each received row data group comes from one of the multiple data groups. After each first decoding node receives multiple row data groups, it decodes the n data in each received row data group.

[0152] If the current decoding process is column decoding, after the data distribution node reads multiple data groups from any given dataset, the decoding device determines the n column data groups for each data group and sends these n column data groups to n second decoding nodes. Thus, each second decoding node receives one column data group from the multiple data groups. It can be understood that each second decoding node receives multiple column data groups, and each received column data group comes from one of the multiple data groups. After each second decoding node receives multiple column data groups, it performs column decoding on the m data points in each received column data group.

[0153] by Figure 10 For example, if the decoding process is row-based, after the data distribution node reads data groups 1 to 4 from a dataset, it sends 16 rows of data from each data group to 16 first decoding nodes. Each first decoding node then decodes one row of data (4 * 16 = 64 data points) from data groups 1 to 4. If the decoding process is column-based, after the data distribution node reads data groups 1 to 4, it sends 16 columns of data from each data group to 16 second decoding nodes. Each second decoding node then decodes one column of data (4 * 16 = 64 data points) from data groups 1 to 4.

[0154] It should be noted that when the decoding device completes the process shown in steps 805-806 for each dataset belonging to the codeword, the decoding process for one dimension of the codeword is completed. The decoding device then jumps to the process shown in steps 805-806 to continue the decoding process for another dimension of the codeword, thereby realizing the iterative decoding process for the codeword. For example, after the decoding device has performed the row-wise decoding process for each dataset in the codeword through steps 805-806, the decoding device continues to perform the column-wise decoding process for each dataset in the codeword by executing steps 805-806.

[0155] Since the m*n data stored in any given data set satisfy both row-wise and column-wise distributions, in some embodiments, the decoding device uses the dataset as the basic unit for iterative decoding. After completing row-wise decoding of any dataset by executing steps 805-806, the decoding device does not need to wait for other datasets to complete column-wise decoding. Instead, it directly performs column-wise decoding on the row-decoded dataset through steps 805-806, thereby achieving iterative decoding of a dataset within the codeword.

[0156] 807. For any data group in any dataset, the decoding device modifies the m*n data in the storage address storing the data group into m*n decoded data, which are the data after decoding the read m*n data.

[0157] The process shown in step 807 is the same as the process shown in step 505 above. Therefore, this embodiment of the application will not elaborate on step 807.

[0158] The method provided in this application improves the parallelism and efficiency of decoding by decoding multiple data groups in a dataset in parallel using a decoding device. Furthermore, it supports flexible designs with arbitrary parallelism, unrestricted by subcode length, thus meeting the design requirements of high-throughput FEC (Functional Encoding and Coding).

[0159] For different types of codewords, this decoding device can store different types of codewords in the memory address according to the data group storage method. The decoding device can also decode multiple data groups within a single codeword in parallel. However, due to the different constructions of different codeword types, the decoding device may read multiple data groups differently when decoding multiple data groups in parallel. For TCP codewords, this decoding device can use... Figure 8The process shown is used to decode multiple data groups in a TCP codeword in parallel. However, the construction of convolutional codes differs from that of TCP codewords. Therefore, when decoding multiple data groups of convolutional codes in parallel, the decoding device reads these multiple data groups differently than it does when reading multiple data groups in a TCP codeword. For further explanation of this difference, see [link to documentation]. Figure 11 The embodiment shown in this application provides a decoding process for a convolutional code.

[0160] 1101. Decoding device acquires codeword.

[0161] Optionally, the codeword is an OFEC codeword, for example... Figure 2 The OFEC codeword shown. The process shown in step 1101 is the same as that shown in step 501 above. Therefore, this embodiment of the application will not describe step 1101 in detail.

[0162] 1102. The decoding device divides the data in the codeword into multiple data groups according to a granularity of m rows and n columns.

[0163] If the codeword is an OFEC codeword, and each block in the OFEC codeword includes m*n data in m rows and n columns, then the decoding device determines each block in the OFEC codeword as a data group, thereby enabling the decoding device to divide the data in the codeword into multiple data groups according to the granularity of m rows and n columns.

[0164] by Figure 12 Taking the OFEC codeword shown as an example, where, Figure 12 This is a schematic diagram of an OFEC codeword decoding process provided in an embodiment of this application. Figure 12 The OFEC codeword in the codeword consists of 24 row layers and 8 column layers, which means that the OFEC codeword consists of 24*8 blocks, and each block consists of 16*16 data. The decoding device treats the 24*8 blocks as a data group, which are data groups 1 to 192.

[0165] 1103. The decoding device combines the multiple data into multiple datasets.

[0166] This decoding device combines multiple data sets located in adjacent row layers or adjacent column layers into a single dataset. Figure 12 For example, the decoding device merges data groups 1, 2, 9 and 10 in the OFEC codeword into a single dataset, with data groups 1, 2, 9 and 10 located in two adjacent row layers and two adjacent column layers.

[0167] 1104. The decoding device stores data groups from multiple datasets in multiple storage addresses in multiple storage nodes, wherein multiple data groups from the same dataset are stored in storage addresses in different storage nodes, and data groups from different column layers in two adjacent datasets in an OFEC frame pair are stored in different storage nodes.

[0168] An OFEC frame pair consists of two adjacent OFEC frames, which is equivalent to four consecutive line layers of the OFEC codeword. From Figure 2 As shown in the OFEC codeword, multiple short columns diagonally within a subcode of the OFEC codeword are located in different OFEC frames, and are all in even-numbered or odd-numbered row layers. If multiple short columns diagonally within the subcode need to be decoded simultaneously during the subsequent decoding process, it is necessary to ensure that these multiple short columns are stored in different storage nodes. These multiple short columns may be located in different column layers within an OFEC frame pair. Therefore, in the process of storing multiple data groups in each dataset into multiple storage nodes, the decoding device must also ensure that data groups in different column layers of two adjacent datasets in the same OFEC frame pair are stored in different storage nodes.

[0169] In one possible implementation, for two adjacent datasets in an OFEC frame pair, if both datasets contain s data groups, the decoding device stores the z-th data group from both datasets in the z-th storage node of the s storage nodes. Figure 10 For example, Figure 10 In the OFEC codeword shown, the first four row layers constitute an OFEC frame pair. Within this OFEC frame pair, data groups 7, 8, 15, and 16 constitute dataset 1, and data groups 23, 24, 31, and 32 constitute dataset 2. Data sets 1 and 2 are adjacent within this OFEC frame pair. The decoding device stores the first data group (data group 7 and data group 23) from both datasets 1 and 2 in storage node 1; the second data group (data group 8 and data group 24) from both datasets 1 and 2 in storage node 2; the third data group (data group 15 and data group 31) from both datasets 1 and 2 in storage node 3; and the fourth data group (data group 16 and data group 32) from both datasets 1 and 2 in storage node 4. This storage method not only ensures that each data group in dataset 1 or 2 is stored in different storage nodes, but also ensures that data groups in different column layers of datasets 1 and 2 are stored in different storage nodes.

[0170] 1105. For multiple adjacent target subcodes among multiple subcodes, the decoding device determines at least one target dataset related to the multiple target subcodes from the multiple datasets. The at least one target dataset includes at least one target data group related to the multiple target subcodes. A target data group includes partial data of some target subcodes among the multiple target subcodes.

[0171] The codeword comprises multiple subcodes. The multiple target subcodes are associated with at least one target dataset, which is a dataset containing the data of the multiple target subcodes.

[0172] As can be seen from the above formulas (1)-(2), a subcode in an OFEC codeword is located in multiple row layers and multiple column layers, and the first half of the data of the subcode is located in non-adjacent row layers and column layers, while the second half of the data is located in adjacent row layers and column layers. When storing the OFEC codeword, the decoding device combines multiple data in adjacent row layers or adjacent column layers into a dataset. Therefore, the data group in a dataset may include part of the data in multiple subcodes. In the process of decoding multiple target subcodes, the decoding device can first determine at least one target dataset related to the multiple target subcodes from the multiple datasets, and then decode at least one target data group related to the multiple target subcodes in the at least one target dataset.

[0173] For any target subcode among the multiple target subcodes, the decoding device determines the position information of each data in any target subcode based on the above formulas (1)-(2), and determines the data group in which each data in any target subcode is located based on the position information of each data in any target subcode, and takes any data group in which the data in any target subcode is located as the target data group, and takes the dataset to which the target data group belongs as the target dataset.

[0174] by Figure 10 For example, if at least one target dataset has two elements, namely... Figure 10 Data sets 1 and 2 are provided. In dataset 1, the 16 short columns (columns 1-16) within data set 1 belong to 16 adjacent sub-codes. Similarly, in dataset 2, the 16 short columns (columns 1-16) within data set 23 also belong to sub-codes 1-16. In dataset 1, the 16 short columns (columns 17-32) within data set 16 belong to 16 adjacent sub-codes. Likewise, in dataset 2, the 16 short columns (columns 17-32) within data set 23 also belong to sub-codes 17-32. Figure 10It is known that the data in adjacent subcodes 1 to 32 are all located in datasets 1 and 2. Therefore, the decoding device determines datasets 1 and 2 as target datasets related to subcodes 1 to 32, determines data group 6 in dataset 1 and data group 23 in dataset 2 as target data groups related to subcodes 1 to 16, and determines data group 16 in dataset 1 and data group 31 in dataset 2 as target data groups related to subcodes 17 to 32.

[0175] If at least one target dataset exists, respectively Figure 10 Data set 3, comprising data sets 167, 168, 175, and 176, is defined as follows: In data sets 167 and 168, the 16 short columns horizontally belong to subcodes 1 through 16, and in data sets 175 and 176, the 16 short columns horizontally belong to subcodes 17 through 32. The decoding device identifies data set 3 as a target dataset associated with subcodes 1 through 32, data sets 167 and 168 as target data sets associated with subcodes 1 through 16, and data sets 175 and 176 as target data sets associated with subcodes 17 through 32.

[0176] 1106. The decoding device reads the target data group from the at least one target dataset from the plurality of storage nodes.

[0177] Since the multiple target data groups in the at least one target dataset are stored on different storage nodes, the decoding device reads one target data group from each of the multiple storage nodes in a data reading cycle.

[0178] 1107. The decoding device decodes the target data group that has been read.

[0179] The read target data group includes at least one odd target data group and at least one even target data group, that is, the target data group in the at least one target dataset. Specifically, one odd target data group is the target data group located in the odd-numbered row layer of the codeword, and one even target data group is the target data group located in the even-numbered row layer of the codeword. Taking the at least one target data group as... Figure 10 Taking data groups 8, 16, 23, and 31 as examples, data groups 8 and 23 are located in the first and third row layers of the codeword, respectively, so data groups 8 and 23 are both odd target data groups. On the other hand, data groups 16 and 31 are located in the second and fourth row layers of the codeword, respectively, so data groups 16 and 31 are both even target data groups.

[0180] Since some of the multiple target data groups are located in the odd-numbered row layer and some are located in the even-numbered row layer, and the target subcodes belonging to the target data groups located in the odd-numbered and even-numbered row layers are different, the decoding device can use two sets of odd-even decoding nodes to decode the target data groups located in the odd-numbered row layer and the target data groups located in the even-numbered row layer, respectively, during the decoding process of the multiple target subcodes. In one possible implementation, this step 1107 is implemented by the process shown in steps 11071-11072 below.

[0181] Step 11071: The decoding device sends the at least one odd target data group to multiple third decoding nodes, which then decode the received odd target data group.

[0182] These multiple third-level decoding nodes are a group of decoding nodes used to decode odd data groups in the codeword; they can also be called odd-decoding nodes. Here, odd data groups in the codeword are data groups located in the odd-numbered row levels of the codeword. For example... Figure 10 In the codeword shown, all data groups in the first row layer are odd data groups, and the odd target data group is also an odd data group.

[0183] If the at least one odd target data group is located in the first half of the multiple target subcodes associated with the at least one odd target data group, for any odd target data group, the data distribution node determines n column data groups based on the positions of the m*n data in the codeword. Each column data group belongs to a target subcode and is a short column in the target subcode. The data distribution node sends the n column data groups to n third decoding nodes respectively. Each third decoding node can receive at least one column data group, and the at least one column data group comes from at least one odd target data group. Each third decoding node decodes the received at least one column data group.

[0184] Using the at least one target data set as Figure 10 Taking data groups 8, 16, 23, and 31 as examples, since data groups 8 and 23 are in the first half of target subcodes 1 to 16 and are both odd target data groups, the data distribution node divides the 16*16 data of each data group in data groups 8 and 16 into 16 column data groups, and sends the 16 column data groups of each data group to 16 third decoding points respectively. Thus, each third decoding node can receive 2 column data groups and decode the 16*2 data in the 2 column data groups.

[0185] If the at least one odd target data group is located in the latter half of multiple target subcodes associated with the at least one odd target data group, for any odd target data group, the data distribution node determines m row data groups based on the positions of the m*n data in the codeword. Each row data group belongs to a target subcode and a short column within a target subcode. The data distribution node then sends these m row data groups to m third decoding nodes. Each third decoding node can receive at least one row data group, and each row data group originates from at least one odd target data group. Each third decoding node decodes the received at least one row data group.

[0186] Using the at least one target data set as Figure 10 Taking data groups 167, 168, 175, and 176 as examples, since data groups 167 and 168 are in the first half of target subcodes 17 to 32 and are both odd target data groups, the data distribution node divides the 16*16 data of each data group in data groups 167 and 168 into 16 rows of data groups, and sends the 16 rows of data groups of each data group to 16 third decoding points respectively. Thus, each third decoding node can receive 2 rows of data groups and decode the 16*2 data in the 2 rows of data groups.

[0187] 11072. The decoding device sends the at least one even target data group to multiple fourth decoding nodes, which then decode the received even target data group.

[0188] These multiple fourth decoding nodes are a set of decoding nodes used to decode even data groups in the codeword; they can also be called even decoding nodes. Here, even data groups in the codeword are data groups located in even-numbered rows of the codeword. For example... Figure 10 In the codeword shown, all data groups in the second row layer are even data groups, and the even target data group is also an even data group.

[0189] If the at least one even target data group is located in the first half of the multiple target subcodes associated with the at least one even target data group, for any even target data group in the at least one even target data group, the data distribution node determines n column data groups based on the positions of the m*n data in the codeword. Each column data group belongs to a target subcode and is a short column in a target subcode. The data distribution node sends the n column data groups to n fourth decoding nodes respectively. Each fourth decoding node can receive at least one column data group, and the at least one column data group comes from at least one even target data group. Each fourth decoding node decodes the received at least one column data group.

[0190] Using the at least one target data set as Figure 10 Taking data groups 8, 16, 23, and 31 as examples, since data groups 16 and 31 are in the first half of target subcodes 1 to 16 and are all even target data groups, the data distribution node divides the 16*16 data of each data group in data groups 16 and 31 into 16 column data groups, and sends the 16 column data groups of each data group to 16 fourth decoding points respectively. Thus, each fourth decoding node can receive 2 column data groups and decode 16*2 data in the received 2 column data groups.

[0191] If the at least one even target data group is located in the latter half of the multiple target subcodes associated with the at least one even target data group, for any even target data group in the at least one even target data group, the data distribution node determines m row data groups based on the positions of the m*n data in the codeword, each row data group belonging to a target subcode; the data distribution node sends the m row data groups to m fourth decoding nodes respectively. Each fourth decoding node can receive at least one row data group, and the at least one row data group comes from at least one even target data group, and each fourth decoding node decodes the received at least one row data group.

[0192] Using the at least one target data set as Figure 10 Taking data groups 167, 168, 175, and 176 as examples, since data groups 175 and 176 are in the first half of target subcodes 17 to 32 and are both even target data groups, the data distribution node divides the 16*16 data of each data group in data groups 175 and 176 into 16 row data groups, and sends the 16 row data groups of each data group to 16 fourth decoding points respectively. Thus, each fourth decoding node can receive 2 row data groups and decode the 16*2 data in the received 2 row data groups.

[0193] It should be noted that steps 11071 and 11072 above are parallel steps, and there is no order in which they are executed. Therefore, the decoding device can decode multiple target data groups at the same time, which improves the parallelism and decoding efficiency in the decoding process.

[0194] In one possible implementation, the decoding device first determines at least one odd target data group and at least one even target data group among the multiple target data groups based on the row layer where the multiple target data groups are located, and then performs the above steps 11071-11072. Optionally, the process of the decoding device determining the at least one target data group and the at least one even target data group is performed by the data distribution node in the decoding device.

[0195] 1108. For any data group in the target data group read, the decoding device modifies the m*n data in the storage address where the data group is stored into m*n decoded data, which are the data after decoding the m*n data in the data group.

[0196] The process shown in step 1108 is the same as the process shown in step 505 above. Therefore, this embodiment of the application will not elaborate on step 1108.

[0197] The method provided in this application improves the parallelism and efficiency of decoding by decoding multiple target data groups in parallel using a decoding device. Furthermore, it supports flexible designs with arbitrary parallelism, regardless of subcode length, thus meeting the design requirements of high-throughput FEC (Functional Encoding and Coding).

[0198] Figure 13 This is a schematic diagram of a decoding device provided in an embodiment of this application. The device 1300 includes:

[0199] Storage module 1301 is used to store codewords in multiple storage addresses. One storage address is used to store m*n data in m rows and n columns of the codeword, where m and n are both integers greater than or equal to 1.

[0200] The reading module 1302 is used to read m*n data stored in any one of the plurality of storage addresses;

[0201] The decoding module 1303 is used to decode the m*n data read.

[0202] Optionally, the decoding module 1303 includes:

[0203] The first determining unit is used to determine m row data groups based on the positions of the read m*n data in the codeword if the current decoding process is a row-oriented decoding process. Each row data group includes n data from the read m*n data, and the n data are located in the same row in the codeword.

[0204] The first decoding unit is used to decode the m rows of data.

[0205] Optionally, the first decoding unit is used for:

[0206] The m rows of data are sent to m first decoding nodes respectively, and each first decoding node decodes the received rows of data.

[0207] Optionally, the decoding module 1303 includes:

[0208] The second determining unit is used to determine n column data groups based on the positions of the read m*n data in the codeword if the current decoding process is a column-oriented decoding process. Each column data group includes m data from the read m*n data, and the m data are located in the same column in the codeword.

[0209] The second decoding unit is used to decode the n column data groups.

[0210] Optionally, the second decoding unit is used for:

[0211] The n column data groups are sent to n second decoding nodes respectively, and each second decoding node decodes the received column data groups.

[0212] Optionally, the device 1300 further includes:

[0213] The modification module is used to modify the m*n data stored in any of the storage addresses into m*n decoded data, wherein the m*n decoded data are the data after decoding the read m*n data.

[0214] Optionally, the storage module 1301 is used for:

[0215] The data in the codeword is divided into multiple data groups according to the granularity of m rows and n columns. Each data group includes m*n data in the codeword in m rows and n columns.

[0216] The plurality of data groups are stored in the plurality of storage addresses, with one data group stored in each storage address.

[0217] Optionally, the multiple storage addresses belong to the same storage node.

[0218] Optionally, the plurality of storage addresses belong to multiple storage nodes;

[0219] The storage module 1301 is used for:

[0220] The multiple data sets are combined into multiple datasets, and each dataset includes multiple adjacent data sets from the multiple data sets.

[0221] The data groups in the multiple datasets are stored in the multiple storage addresses, wherein one data group is stored in one storage address, and multiple data groups in the same dataset are stored in storage addresses within different storage nodes.

[0222] The reading module 1302 is also used for:

[0223] For any one of the plurality of datasets, read multiple data groups of that dataset from the plurality of storage nodes.

[0224] Optionally, the device 1300 further includes:

[0225] The determining module is configured to, for multiple adjacent target subcodes among the multiple subcodes, determine at least one target dataset related to the multiple target subcodes from the multiple datasets, wherein the at least one target dataset includes at least one target data group related to the multiple target subcodes, and a target data group includes data of a portion of the target subcodes among the multiple target subcodes;

[0226] The reading module 1302 is further configured to read target data groups from the at least one target dataset from the plurality of storage nodes;

[0227] The decoding module 1303 is also used to decode the read target data group.

[0228] Optionally, the read target data group includes at least one odd target data group and at least one even target data group, wherein an odd target data group is a target data group located in the odd row layer of the codeword, and an even target data group is a target data group located in the even row layer of the codeword.

[0229] The decoding module 1303 is used for:

[0230] The at least one odd target data group is sent to a plurality of third decoding nodes, which then decode the received odd target data group.

[0231] The at least one even target data group is sent to multiple fourth decoding nodes, which then decode the received even data group.

[0232] All of the above-mentioned optional technical solutions can be combined in any way to form optional embodiments of this disclosure, and will not be described in detail here.

[0233] It should be noted that the decoding device provided in the above embodiments is only illustrated by the division of the above functional modules when decoding codewords. In practical applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. In addition, the decoding method embodiments provided in the above embodiments belong to the same concept, and the specific implementation process can be found in the method embodiments, which will not be repeated here.

[0234] This application also provides a computer program product or computer program, which includes computer instructions stored in a computer-readable storage medium. The processor of the decoding device reads the computer instructions from the computer-readable storage medium and executes the computer instructions to perform the above-described decoding method.

[0235] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by hardware related to program instructions. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.

[0236] The above description is merely an optional embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of this application should be included within the protection scope of this application.

Claims

1. A decoding method, characterized in that, The method includes: The codewords are stored in multiple storage addresses. The codewords are multi-dimensional algebraic symbols, and one storage address is used to store the m-th row and n-th column of the codeword. There are n data points, where m and n are both integers greater than or equal to 1; For any one of the plurality of storage addresses, read the m stored in that storage address. n data points; According to the read m The arrangement of n data points along the same dimension of the codeword, for the read m... Decode n data points.

2. The method according to claim 1, characterized in that, The text is incomplete and lacks context. It appears to be a fragment of a larger document. A more accurate translation would require the full text. The arrangement of n data points along the same dimension of the codeword, for the read m... Decoding n data points includes: If this decoding process is a row-oriented decoding process, based on the read m... The positions of n data points in the codeword determine m rows of data groups, where each row of data group includes the read m data points. n data points are n data points in a codeword, and the n data points are located in the same row. Decode the m rows of data.

3. The method according to claim 2, characterized in that, The decoding of the m rows of data includes: The m rows of data are sent to m first decoding nodes respectively, and each first decoding node decodes the received rows of data.

4. The method according to claim 1, characterized in that, The text is incomplete and lacks context. It appears to be a fragment of a larger document. A more accurate translation would require the full text. The arrangement of n data points along the same dimension of the codeword, for the read m... Decoding n data points includes: If this decoding process is a column-oriented decoding process, based on the read m... The positions of n data points in the codeword determine n column data groups, where each column data group includes the read m data points. m data points out of n data points, wherein the m data points are located in the same column in the codeword; Decode the n column data groups.

5. The method according to claim 4, characterized in that, The decoding of the n column data groups includes: The n column data groups are sent to n second decoding nodes respectively, and each second decoding node decodes the received column data groups.

6. The method according to any one of claims 1-5, characterized in that, The read m After decoding n data points, the method further includes: m stored in any of the aforementioned storage addresses n data points are modified to m n decoded data, the m The n decoded data are the m read. The data after decoding n data points.

7. The method according to any one of claims 1-5, characterized in that, The step of storing codewords in multiple storage addresses includes: The data in the codeword is divided into multiple data groups according to a granularity of m rows and n columns. Each data group includes m rows and n columns of the codeword. n data points; The plurality of data groups are stored in the plurality of storage addresses, with one data group stored in each storage address.

8. The method according to claim 7, characterized in that, The multiple storage addresses belong to the same storage node.

9. The method according to claim 7, characterized in that, The multiple storage addresses belong to multiple storage nodes; The step of storing the plurality of data groups in the plurality of storage addresses includes: The multiple data sets are combined into multiple datasets, and each dataset includes multiple adjacent data sets from the multiple data sets. The data groups in the multiple datasets are stored in the multiple storage addresses, wherein one data group is stored in one storage address, and multiple data groups in the same dataset are stored in storage addresses within different storage nodes.

10. The method according to claim 9, characterized in that, After storing the data groups from the multiple datasets in the multiple storage addresses, the method further includes: For any one of the plurality of datasets, read multiple data groups of that dataset from the plurality of storage nodes.

11. The method according to claim 9, characterized in that, The codeword includes multiple sub-codes, and after storing the codeword at multiple storage addresses, the method further includes: For multiple adjacent target subcodes among the multiple subcodes, at least one target dataset related to the multiple target subcodes is determined from the multiple datasets. The at least one target dataset includes at least one target data group related to the multiple target subcodes. A target data group includes data of a portion of the target subcodes among the multiple target subcodes. Read the target data group from the at least one target dataset from the plurality of storage nodes; Decode the target data group that has been read.

12. The method according to claim 11, characterized in that, The read target data group includes at least one odd target data group and at least one even target data group. An odd target data group is a target data group located in the odd row layer of the codeword, and an even target data group is a target data group located in the even row layer of the codeword. The decoding of the multiple target data groups read includes: The at least one odd target data group is sent to a plurality of third decoding nodes, which then decode the received odd target data group. The at least one even target data group is sent to multiple fourth decoding nodes, which then decode the received even data group.

13. A decoding device, characterized in that, The device includes: The storage module is used to store codewords at multiple storage addresses. The codewords are multi-dimensional algebraic symbols, and one storage address is used to store m rows and n columns of the codeword. There are n data points, where m and n are both integers greater than or equal to 1; The read module is configured to, for any one of the plurality of storage addresses, read the m stored in any one of the storage addresses. n data points; The decoding module is used to decode the read m The arrangement of n data points along the same dimension of the codeword, for the read m... Decode n data points.

14. The apparatus according to claim 13, characterized in that, The decoding module includes: The first determining unit is configured to, if the current decoding process is a row-oriented decoding process, determine based on the read m... The positions of n data points in the codeword determine m rows of data groups, where each row of data group includes the read m data points. n data points are n data points in a codeword, and the n data points are located in the same row. The first decoding unit is used to decode the m rows of data.

15. The apparatus according to claim 14, characterized in that, The first decoding unit is used for: The m rows of data are sent to m first decoding nodes respectively, and each first decoding node decodes the received rows of data.

16. The apparatus according to claim 13, characterized in that, The decoding module includes: The second determining unit is configured to, if the current decoding process is a column-oriented decoding process, determine the value based on the read m... The positions of n data points in the codeword determine n column data groups, where each column data group includes the read m data points. m data points out of n data points, wherein the m data points are located in the same column in the codeword; The second decoding unit is used to decode the n column data groups.

17. The apparatus according to claim 16, characterized in that, The second decoding unit is used for: The n column data groups are sent to n second decoding nodes respectively, and each second decoding node decodes the received column data groups.

18. The apparatus according to any one of claims 13-17, characterized in that, The device further includes: The modification module is used to modify the m stored in any of the aforementioned storage addresses. n data points are modified to m n decoded data, the m The n decoded data are the m read. The data after decoding n data points.

19. The apparatus according to any one of claims 13-17, characterized in that, The storage module is used for: The data in the codeword is divided into multiple data groups according to a granularity of m rows and n columns. Each data group includes m rows and n columns of the codeword. n data points; The plurality of data groups are stored in the plurality of storage addresses, with one data group stored in each storage address.

20. The apparatus according to claim 19, characterized in that, The multiple storage addresses belong to the same storage node.

21. The apparatus according to claim 19, characterized in that, The multiple storage addresses belong to multiple storage nodes; The storage module is used for: The multiple data sets are combined into multiple datasets, and each dataset includes multiple adjacent data sets from the multiple data sets. The data groups in the multiple datasets are stored in the multiple storage addresses, wherein one data group is stored in one storage address, and multiple data groups in the same dataset are stored in storage addresses within different storage nodes.

22. The apparatus according to claim 21, characterized in that, The reading module is also used for: For any one of the plurality of datasets, read multiple data groups of that dataset from the plurality of storage nodes.

23. The apparatus according to claim 21, characterized in that, The codeword includes multiple sub-codes, and the device further includes: The determining module is configured to, for multiple adjacent target subcodes among the multiple subcodes, determine at least one target dataset related to the multiple target subcodes from the multiple datasets, wherein the at least one target dataset includes at least one target data group related to the multiple target subcodes, and a target data group includes data of a portion of the target subcodes among the multiple target subcodes; The reading module is also used to read target data groups from the at least one target dataset from the plurality of storage nodes; The decoding module is also used to decode the read target data group.

24. The apparatus according to claim 23, characterized in that, The read target data group includes at least one odd target data group and at least one even target data group. An odd target data group is a target data group located in the odd row layer of the codeword, and an even target data group is a target data group located in the even row layer of the codeword. The decoding module is used for: The at least one odd target data group is sent to a plurality of third decoding nodes, which then decode the received odd target data group. The at least one even target data group is sent to multiple fourth decoding nodes, which then decode the received even data group.

25. A decoding device, characterized in that, The decoding device includes a processor and a memory, the memory storing at least one piece of program code, which is loaded and executed by the processor to perform the operations of the decoding method as described in any one of claims 1 to 12.

26. A computer-readable storage medium, characterized in that, The storage medium stores at least one piece of program code, which is loaded and executed by a processor to perform the operations of the decoding method as described in any one of claims 1 to 12.