US20160028419A1 - Systems and Methods for Rank Independent Cyclic Data Encoding - Google Patents

Systems and Methods for Rank Independent Cyclic Data Encoding Download PDF

Info

Publication number
US20160028419A1
US20160028419A1 US14/338,343 US201414338343A US2016028419A1 US 20160028419 A1 US20160028419 A1 US 20160028419A1 US 201414338343 A US201414338343 A US 201414338343A US 2016028419 A1 US2016028419 A1 US 2016028419A1
Authority
US
United States
Prior art keywords
interim
data set
matrix
yield
interim data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/338,343
Inventor
Shu Li
Shaohua Yang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Priority to US14/338,343 priority Critical patent/US20160028419A1/en
Assigned to LSI CORPORATION reassignment LSI CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LI, SHU, YANG, SHAOHUA
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LSI CORPORATION
Publication of US20160028419A1 publication Critical patent/US20160028419A1/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • G11B20/1252Formatting, e.g. arrangement of data block or words on the record carriers on discs for discontinuous data, e.g. digital information signals, computer programme data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B2020/1264Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting concerns a specific kind of data
    • G11B2020/1289Formatting of user data

Definitions

  • the present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • Various data transfer systems have been developed including storage systems, cellular telephone systems, and radio transmission systems.
  • data is transferred from a sender to a receiver via some medium.
  • a sender i.e., a write function
  • a receiver i.e., a read function
  • Encoding may involve vector multiplication by a quasi-cyclic matrices.
  • not all scenarios allow for use of quasi-cyclic matrices, but rather involve rank deficient matrices.
  • Typical implementations apply specific circuits for rank deficient matrices as opposed to full ran matrices. Such an approach can lead to complex, highly tailored circuitry that may not be either efficient or to handle both rank deficient and full rank encoding.
  • the present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • Various embodiments of the present invention provide data processing systems that include a rank independent data encoding circuit.
  • the rank independent encoding circuit is operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield an encoded output.
  • the rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix.
  • FIG. 1 shows a storage system including rank independent encoder circuitry in accordance with various embodiments of the present invention
  • FIG. 2 shows a data transmission device including a transmitter having rank independent encoder circuitry in accordance with various embodiments of the present invention
  • FIG. 3 shows a solid state memory circuit including a data processing circuit having rank independent encoder circuitry in accordance with some embodiments of the present invention
  • FIG. 4 a shows a method for generating a quasi-pseudo inverse matrix that may be used for rank independent encoding in accordance with various embodiments of the present invention
  • FIGS. 4 b - 4 g show steps in the method of FIG. 4 a;
  • FIG. 5 a shows a processing system including a rank independent encoder circuit in accordance with some embodiments of the present invention
  • FIG. 5 b shows one implementation of the rank independent encoder circuit in accordance with one or more embodiments of the present invention
  • FIG. 5 c shows one implementation of a shift based parity calculation circuit in accordance with one or more embodiments of the present invention.
  • FIG. 5 d shows an example encode matrix that may be used in relation to various embodiments of the present invention.
  • the present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • Various embodiments of the present invention provide data processing systems that include a rank independent data encoding circuit.
  • the rank independent encoding circuit is operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield an encoded output.
  • the rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix.
  • the system is implemented as part of an integrated circuit.
  • the system is implemented as part of a storage drive.
  • the system is implemented as part of a communication device.
  • the quasi-pseudo inverse matrix represents a rank deficient matrix.
  • the quasi-pseudo inverse matrix represents a full rank matrix.
  • the quasi-pseudo inverse matrix is part of an encoding matrix, and the encoding matrix further includes a first user matrix, a second user matrix, a first interim matrix, a second interim matrix.
  • the interim data set is a first interim data set
  • the rank independent data encoding circuit includes: a first vector multiplier circuit operable to multiply the user data input by an inverse of the first user matrix to yield a second interim data set; a second vector multiplier circuit operable to multiply the second interim data set by the first interim matrix to yield a third interim data set; a third vector multiplier circuit operable to multiply the third interim data set by the second interim matrix to yield a fourth interim data set; a fourth vector multiplier circuit operable to multiply the user data input by the second user matrix to yield a fifth interim data set; and a fifth vector multiplier circuit operable to multiply a combination of the fourth interim data set and the fifth interim data set by the quasi-pseudo inverse matrix to yield the first interim data set.
  • each of the first vector multiplier circuit, the second vector multiplier circuit, the third vector multiplier circuit, the fourth vector multiplier circuit, and the fifth vector multiplier circuit is a sparse circulant vector multiplier circuit.
  • the rank independent data encoding circuit further includes an adder array circuit operable to add the fourth interim data set to the fifth interim data set to yield the combination of the fourth interim data set and the fifth interim data set.
  • the encoding matrix further includes a third interim matrix
  • the rank independent data encoding circuit further includes: a sixth vector multiplier circuit operable to multiply the first interim data set by the third interim matrix to yield a sixth interim data set; and a seventh vector multiplier circuit operable to multiply a combination of the fifth interim data set and the sixth interim data set by the first user matrix to yield a seventh interim data set.
  • each of the sixth vector multiplier circuit and the seventh vector multiplier circuit is a sparse circulant vector multiplier circuit.
  • the adder array circuit is a first adder array circuit
  • the rank independent data encoding circuit further includes a second adder array circuit operable to add the fifth interim data set to the sixth interim data set to yield the combination of the fifth interim data set and the sixth interim data set.
  • the first interim data set is a first parity set
  • the rank independent data encoding circuit further includes a shift based parity calculation circuit operable to calculate a second parity set based at least in part on the seventh interim data set.
  • the encoded output includes the user data input, the first parity set, and the second parity set.
  • hard disk storage devices that include: a storage medium; a read/write head assembly disposed in relation to the storage medium and operable to write an encoded output to the storage medium; and a rank independent data encoding circuit operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield the encoded output.
  • the rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix
  • Yet other embodiments of the present invention provide methods for data encoding that include: receiving a user data set; and applying a rank independent encoding algorithm by an encoding circuit to the user data input to yield an encoded output.
  • the rank independent encoding algorithm includes multiplying an interim data set by a quasi-pseudo inverse matrix. In some instances of the aforementioned embodiments, multiplying the interim data set by the quasi-pseudo inverse matrix is done by a sparse circulant vector multiplier circuit.
  • a storage system 100 that includes a read channel 110 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention.
  • Storage system 100 may be, for example, a hard disk drive.
  • Storage system 100 also includes a preamplifier 170 , an interface controller 120 , a hard disk controller 166 , a motor controller 168 , a spindle motor 172 , a disk platter 178 , and a read/write head 176 .
  • Interface controller 120 controls addressing and timing of data to/from disk platter 178 , and interacts with a host controller (not shown).
  • the data on disk platter 178 consists of groups of magnetic signals that may be detected by read/write head assembly 176 when the assembly is properly positioned over disk platter 178 .
  • disk platter 178 includes magnetic signals recorded in accordance with either a longitudinal or a perpendicular recording scheme.
  • read/write head 176 is accurately positioned by motor controller 168 over a desired data track on disk platter 178 .
  • Motor controller 168 both positions read/write head 176 in relation to disk platter 178 and drives spindle motor 172 by moving read/write head assembly 176 to the proper data track on disk platter 178 under the direction of hard disk controller 166 .
  • Spindle motor 172 spins disk platter 178 at a determined spin rate (RPMs).
  • the sensed magnetic signals are provided as a continuous, minute analog signal representative of the magnetic data on disk platter 178 .
  • This minute analog signal is transferred from read/write head 176 to read channel circuit 110 via preamplifier 170 .
  • Preamplifier 170 is operable to amplify the minute analog signals accessed from disk platter 178 .
  • read channel circuit 110 decodes and digitizes the received analog signal to recreate the information originally written to disk platter 178 .
  • This data is provided as read data 103 to a receiving circuit.
  • a write operation is substantially the opposite of the preceding read operation with write data 101 being provided to read channel circuit 110 . This data is then encoded and written to disk platter 178 .
  • rank independent encoder circuit In operation, data stored to disk platter 178 is encoded using a rank independent encoder circuit to yield an encoded data set.
  • a rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a - 4 e.
  • One implementation of a rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a - 5 d.
  • storage system 100 may be integrated into a larger storage system such as, for example, a RAID (redundant array of inexpensive disks or redundant array of independent disks) based storage system.
  • RAID redundant array of inexpensive disks or redundant array of independent disks
  • Such a RAID storage system increases stability and reliability through redundancy, combining multiple disks as a logical unit.
  • Data may be spread across a number of disks included in the RAID storage system according to a variety of algorithms and accessed by an operating system as if it were a single disk. For example, data may be mirrored to multiple disks in the RAID storage system, or may be sliced and distributed across multiple disks in a number of techniques.
  • the disks in the RAID storage system may be, but are not limited to, individual storage systems such as storage system 100 , and may be located in close proximity to each other or distributed more widely for increased security.
  • write data is provided to a controller, which stores the write data across the disks, for example by mirroring or by striping the write data.
  • the controller retrieves the data from the disks. The controller then yields the resulting read data as if the RAID storage system were a single disk.
  • a data decoder circuit used in relation to read channel circuit 110 may be, but is not limited to, a low density parity check (LDPC) decoder circuit as are known in the art.
  • LDPC low density parity check
  • Transmission applications include, but are not limited to, optical fiber, radio frequency channels, wired or wireless local area networks, digital subscriber line technologies, wireless cellular, Ethernet over any medium such as copper or optical fiber, cable channels such as cable television, and Earth-satellite communications.
  • Storage applications include, but are not limited to, hard disk drives, compact disks, digital video disks, magnetic tapes and memory devices such as DRAM, NAND flash, NOR flash, other non-volatile memories and solid state drives.
  • storage system 100 may be modified to include solid state memory that is used to store data in addition to the storage offered by disk platter 178 .
  • This solid state memory may be used in parallel to disk platter 178 to provide additional storage.
  • the solid state memory receives and provides information directly to read channel circuit 110 .
  • the solid state memory may be used as a cache where it offers faster access time than that offered by disk platted 178 .
  • the solid state memory may be disposed between interface controller 120 and read channel circuit 110 where it operates as a pass through to disk platter 178 when requested data is not available in the solid state memory or when the solid state memory does not have sufficient storage to hold a newly written data set. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of storage systems including both disk platter 178 and a solid state memory.
  • a data transmission system 200 including a transmitter 210 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention.
  • Transmitter 210 transmits encoded data via a transfer medium 230 .
  • Transfer medium 230 may be a wired or wireless transfer medium. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of transfer mediums that may be used in relation to different embodiments of the present invention.
  • the encoded data is received from transfer medium 230 by receiver 220 .
  • transmitter 210 encodes user data using a rank independent encoder circuit to yield an encoded data set.
  • Such a rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a - 4 e.
  • One implementation of a rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a - 5 d.
  • FIG. 3 another storage system 300 is shown that includes a data processing circuit 310 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention.
  • a host controller circuit 305 receives data to be stored (i.e., write data 301 ).
  • Solid state memory access controller circuit 340 may be any circuit known in the art that is capable of controlling access to and from a solid state memory 350 .
  • Solid state memory access controller circuit 340 encodes a received data set to yield an encoded data set. The encoding is done using a rank deficient LDPC encoder circuit, and results in an encoded data set that is stored to solid state memory 350 .
  • Solid state memory 350 may be any solid state memory known in the art.
  • solid state memory 350 is a flash memory.
  • data processing circuit 310 encodes user data using a rank independent encoder circuit to yield an encoded data set.
  • rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a - 4 e.
  • rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a - 5 c.
  • a flow diagram 400 shows a method for generating a quasi-pseudo inverse matrix that may be used for rank independent encoding in accordance with various embodiments of the present invention.
  • the phrase “quasi-pseudo inverse matrix” is used in its broadest sense to mean any original matrix that is simplified to have quasi-cyclic structure that when multiplied by the original matrix yields a sparse matrix with regular structure.
  • an M ⁇ M code matrix is identified (block 405 ).
  • the M ⁇ M code matrix may be either a full rank matrix or a rank deficient matrix.
  • a rank deficient matrix includes one or more columns or rows that is linearly dependent upon one or more other columns or rows.
  • the M ⁇ M code matrix is a rank deficient matrix.
  • the M ⁇ M code matrix is similarly a rank deficient matrix. In a full rank matrix, all rows and columns are linearly independent of each other.
  • the M ⁇ M code matrix is an Hp22 matrix shown as part of an overall code matrix 480 as is commonly used in the art.
  • FIG. 4 b shows an example of an M ⁇ M code matrix 402 including one row rendering the M ⁇ M code matrix rank deficient (rank deficient row (R)), and one column selected for removal to balance the rank deficient row (balancing column (C)).
  • the diagonal lines indicate locations of non-zero elements, and the white areas indicate the location of zero elements.
  • the M ⁇ M code matrix is queried to determine whether one or more rows in the matrix are linearly dependent upon any other row(s) in the matrix (block 410 ). It should be noted that in alternative embodiments it could be determined whether one or more columns in the matrix are linearly dependent upon any other column(s) in the matrix. The location of the identified linearly dependent rows is maintained, and the number of the identified linearly dependent rows is N.
  • a corresponding number of columns are also removed from the (M-N) ⁇ M depleted matrix to yield an (M-N) ⁇ (M-N) full rank matrix (block 420 ).
  • the removed rows/columns are generally referred to herein as removed rows/columns. As all of the linearly dependent rows have been removed, the remaining matrix is a full rank matrix.
  • FIG. 4 c shows an example of an inverted (M-N) ⁇ (M-N) full rank matrix 404 .
  • the diagonal white lines indicate locations of zero elements, and the black areas indicate the location of non-zero elements.
  • the resulting M ⁇ M quasi-pseudo inverse matrix may be multiplied by the original M ⁇ M code matrix resulting in a product having a regular structure that is easily modulated onto a desired vector.
  • FIG. 4 e shows an example product 412 of the multiplication of the M ⁇ M code matrix by the M ⁇ M quasi-pseudo inverse matrix where the locations of non-zero elements correspond to the diagonal line, and other locations are zero.
  • example product 412 includes two quadrants that are all zeros, an upper left quadrant that is a pseudo identity matrix, and a lower right quadrant that is an identity matrix.
  • an overall encoding matrix 490 is shown with the Hp22 matrix replaced by the quasi-pseudo inverse matrix.
  • processing system 500 provides similar results for both rank deficient and full rank codewords.
  • Encoded output 539 is provided to a transmission circuit 530 that is operable to transmit the encoded data to a recipient via a medium 540 .
  • Transmission circuit 530 may be any circuit known in the art that is capable of transferring encoded output 539 via medium 540 .
  • transmission circuit 530 may include a read/write head assembly that converts an electrical signal into a series of magnetic signals appropriate for writing to a storage medium.
  • transmission circuit 530 may include a wireless transmitter that converts an electrical signal into a radio frequency signal appropriate for transmission via a wireless transmission medium.
  • Transmission circuit 530 provides a transmission output to medium 540 .
  • Medium 540 provides a transmitted input that is the transmission output augmented with one or more errors introduced by the transference across medium 540 .
  • Data processing circuit 500 includes an analog processing circuit 550 that applies one or more analog functions to the transmitted input. Such analog functions may include, but are not limited to, amplification and filtering. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of pre-processing circuitry that may be used in relation to different embodiments of the present invention. In addition, analog processing circuit 550 converts the processed signal into a series of corresponding digital samples. Data processing circuitry 560 applies data detection and/or data decoding algorithms to the series of digital samples to yield a data output 565 . Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of data processing circuitry that may be used to recover original data input from the series of digital samples.
  • Encoding circuit 590 utilizes an encoding matrix 599 as shown in FIG. 5 d.
  • Encoding circuit 590 includes a sparse circulant vector multiplication circuit 505 that multiplies a user data input 502 (u) by a portion of an encoding matrix, Hu 1 matrix 507 (Hu 1 ), to yield a product 509 in accordance with the following equation:
  • encoding circuit 500 includes a sparse circulant vector multiplication circuit 541 that multiplies a user data input 502 (u) by a portion of an encoding matrix, Hu 2 matrix 542 (Hu 2 ), to yield a product 544 in accordance with the following equation:
  • Another sparse circulant vector multiplication circuit 511 multiplies product 509 by an inverse portion of the encoding matrix, Hp 11 matrix 512 (Hp 11 ), to yield a product 514 in accordance with the following equation:
  • Hp 11 matrix 512 (Hp 11 ) may be maintained in a read only memory.
  • Product 517 and Product 544 are provided to a Galois field adder array 521 where a vector addition is performed in accordance with the following equation to yield a sum 524 :
  • Sum 524 is provided to another sparse circulant vector multiplication circuit 526 that multiplies sum 524 by a quasi-pseudo inverse matrix 527 to yield a parity set 529 (p 2 ) in accordance with the following equation:
  • Parity Set 529 Sum 524 ⁇ Quasi ⁇ Pseudo Inverse Matrix 529.
  • Parity set 529 is provided to another sparse circulant vector multiplication circuit 556 that multiplies parity set 529 by an the encoding matrix, Hp 12 matrix 552 (Hp 12 ), to yield a product 559 in accordance with the following equation:
  • Hp 12 matrix 552 (Hp 12 ) may be maintained in a read only memory.
  • Product 559 and Product 509 are provided to a Galois field adder array 561 where a vector addition is performed in accordance with the following equation to yield a sum 564 :
  • Sum 564 is provided to another sparse circulant vector multiplication circuit 566 that multiplies sum 564 by an inverse portion of the encoding matrix, Hp 11 matrix 571 (Hp 11 ), to yield a product 569 in accordance with the following equation:
  • Hp 11 matrix 571 (Hp 11 ) may be maintained in a read only memory.
  • Shift based parity calculation circuit 576 operates to resolve a series of linear equations to yield a parity set 579 (p 1 ).
  • the series of linear equations are as follow:
  • Parity Set 579(1)+Parity Set 579( n ) Product 544(1).
  • parity set 579 ( 1 ) the value for parity set 579 ( 2 ) can be solved using the equation:
  • parity set 579 This process of solving for each of the values of parity set 579 is sequentially performed. Finally, the combination of user data 502 , parity set 529 , and parity set 579 are provided as an encoded data set.
  • Shift based parity calculation circuit 597 may be used in place of shift based parity calculation circuit 576 of FIG. 5 b.
  • Shift based parity calculation circuit 597 includes a prior result register 584 that is initialized to zero at the beginning of solving the aforementioned series of equations as indicated by assertion of an initialize control signal 585 .
  • a summation circuit 583 subtracts a prior result (i.e., parity set 579 ( i -1)) from a corresponding element of product 544 (i.e., product 544 ( i )) as provided by a shift register 582 .
  • parity set 579 i.e., parity set 579 ( i )
  • the recently calculated element of parity set 579 is stored back to prior result register 584 where it is used in relation to the next shifted element of product 544 to yield the next element of parity set 579 .
  • Such integrated circuits may include all of the functions of a given block, system or circuit, or a subset of the block, system or circuit. Further, elements of the blocks, systems or circuits may be implemented across multiple integrated circuits. Such integrated circuits may be any type of integrated circuit known in the art including, but are not limited to, a monolithic integrated circuit, a flip chip integrated circuit, a multichip module integrated circuit, and/or a mixed signal integrated circuit. It should also be noted that various functions of the blocks, systems or circuits discussed herein may be implemented in either software or firmware. In some such cases, the entire system, block or circuit may be implemented using its software or firmware equivalent. In other cases, the one part of a given system, block or circuit may be implemented in software or firmware, while other parts are implemented in hardware.

Abstract

The present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.

Description

    FIELD OF THE INVENTION
  • The present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • BACKGROUND
  • Various data transfer systems have been developed including storage systems, cellular telephone systems, and radio transmission systems. In each of the systems data is transferred from a sender to a receiver via some medium. For example, in a storage system, data is sent from a sender (i.e., a write function) to a receiver (i.e., a read function) via a storage medium. Encoding may involve vector multiplication by a quasi-cyclic matrices. However, not all scenarios allow for use of quasi-cyclic matrices, but rather involve rank deficient matrices. Typical implementations apply specific circuits for rank deficient matrices as opposed to full ran matrices. Such an approach can lead to complex, highly tailored circuitry that may not be either efficient or to handle both rank deficient and full rank encoding.
  • Hence, for at least the aforementioned reasons, there exists a need in the art for advanced systems and methods for data processing.
  • SUMMARY
  • The present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • Various embodiments of the present invention provide data processing systems that include a rank independent data encoding circuit. The rank independent encoding circuit is operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield an encoded output. The rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix.
  • This summary provides only a general outline of some embodiments of the invention. The phrases “in one embodiment,” “according to one embodiment,” “in various embodiments”, “in one or more embodiments”, “in particular embodiments” and the like generally mean the particular feature, structure, or characteristic following the phrase is included in at least one embodiment of the present invention, and may be included in more than one embodiment of the present invention. Importantly, such phases do not necessarily refer to the same embodiment. Many other embodiments of the invention will become more fully apparent from the following detailed description, the appended claims and the accompanying drawings.
  • BRIEF DESCRIPTION OF THE FIGURES
  • A further understanding of the various embodiments of the present invention may be realized by reference to the figures which are described in remaining portions of the specification. In the figures, like reference numerals are used throughout several figures to refer to similar components. In some instances, a sub-label consisting of a lower case letter is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
  • FIG. 1 shows a storage system including rank independent encoder circuitry in accordance with various embodiments of the present invention;
  • FIG. 2 shows a data transmission device including a transmitter having rank independent encoder circuitry in accordance with various embodiments of the present invention;
  • FIG. 3 shows a solid state memory circuit including a data processing circuit having rank independent encoder circuitry in accordance with some embodiments of the present invention;
  • FIG. 4 a shows a method for generating a quasi-pseudo inverse matrix that may be used for rank independent encoding in accordance with various embodiments of the present invention;
  • FIGS. 4 b-4 g show steps in the method of FIG. 4 a;
  • FIG. 5 a shows a processing system including a rank independent encoder circuit in accordance with some embodiments of the present invention;
  • FIG. 5 b shows one implementation of the rank independent encoder circuit in accordance with one or more embodiments of the present invention;
  • FIG. 5 c shows one implementation of a shift based parity calculation circuit in accordance with one or more embodiments of the present invention; and
  • FIG. 5 d shows an example encode matrix that may be used in relation to various embodiments of the present invention.
  • DETAILED DESCRIPTION OF SOME EMBODIMENTS
  • The present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
  • Various embodiments of the present invention provide data processing systems that include a rank independent data encoding circuit. The rank independent encoding circuit is operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield an encoded output. The rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix. In some instances of the aforementioned embodiments, the system is implemented as part of an integrated circuit. In various instances of the aforementioned embodiments, the system is implemented as part of a storage drive. In other instances, the system is implemented as part of a communication device. In some cases, the quasi-pseudo inverse matrix represents a rank deficient matrix. In other cases, the quasi-pseudo inverse matrix represents a full rank matrix.
  • In some instances of the aforementioned embodiments, the quasi-pseudo inverse matrix is part of an encoding matrix, and the encoding matrix further includes a first user matrix, a second user matrix, a first interim matrix, a second interim matrix. In some such instances, the interim data set is a first interim data set, and the rank independent data encoding circuit includes: a first vector multiplier circuit operable to multiply the user data input by an inverse of the first user matrix to yield a second interim data set; a second vector multiplier circuit operable to multiply the second interim data set by the first interim matrix to yield a third interim data set; a third vector multiplier circuit operable to multiply the third interim data set by the second interim matrix to yield a fourth interim data set; a fourth vector multiplier circuit operable to multiply the user data input by the second user matrix to yield a fifth interim data set; and a fifth vector multiplier circuit operable to multiply a combination of the fourth interim data set and the fifth interim data set by the quasi-pseudo inverse matrix to yield the first interim data set. In some cases, each of the first vector multiplier circuit, the second vector multiplier circuit, the third vector multiplier circuit, the fourth vector multiplier circuit, and the fifth vector multiplier circuit is a sparse circulant vector multiplier circuit.
  • In various cases, the rank independent data encoding circuit further includes an adder array circuit operable to add the fourth interim data set to the fifth interim data set to yield the combination of the fourth interim data set and the fifth interim data set. In some cases, the encoding matrix further includes a third interim matrix, and the rank independent data encoding circuit further includes: a sixth vector multiplier circuit operable to multiply the first interim data set by the third interim matrix to yield a sixth interim data set; and a seventh vector multiplier circuit operable to multiply a combination of the fifth interim data set and the sixth interim data set by the first user matrix to yield a seventh interim data set. In various cases, each of the sixth vector multiplier circuit and the seventh vector multiplier circuit is a sparse circulant vector multiplier circuit. In particular cases, the adder array circuit is a first adder array circuit, and the rank independent data encoding circuit further includes a second adder array circuit operable to add the fifth interim data set to the sixth interim data set to yield the combination of the fifth interim data set and the sixth interim data set. In one or more cases, the first interim data set is a first parity set, and the rank independent data encoding circuit further includes a shift based parity calculation circuit operable to calculate a second parity set based at least in part on the seventh interim data set. In such cases, the encoded output includes the user data input, the first parity set, and the second parity set.
  • Other embodiments of the present invention provide hard disk storage devices that include: a storage medium; a read/write head assembly disposed in relation to the storage medium and operable to write an encoded output to the storage medium; and a rank independent data encoding circuit operable to: receive a user data input; and apply a rank independent encoding algorithm to the user data input to yield the encoded output. The rank independent encoding algorithm includes multiplying an interim data set with a quasi-pseudo inverse matrix
  • Yet other embodiments of the present invention provide methods for data encoding that include: receiving a user data set; and applying a rank independent encoding algorithm by an encoding circuit to the user data input to yield an encoded output. The rank independent encoding algorithm includes multiplying an interim data set by a quasi-pseudo inverse matrix. In some instances of the aforementioned embodiments, multiplying the interim data set by the quasi-pseudo inverse matrix is done by a sparse circulant vector multiplier circuit.
  • Turning to FIG. 1, a storage system 100 is shown that includes a read channel 110 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention. Storage system 100 may be, for example, a hard disk drive. Storage system 100 also includes a preamplifier 170, an interface controller 120, a hard disk controller 166, a motor controller 168, a spindle motor 172, a disk platter 178, and a read/write head 176. Interface controller 120 controls addressing and timing of data to/from disk platter 178, and interacts with a host controller (not shown). The data on disk platter 178 consists of groups of magnetic signals that may be detected by read/write head assembly 176 when the assembly is properly positioned over disk platter 178. In one embodiment, disk platter 178 includes magnetic signals recorded in accordance with either a longitudinal or a perpendicular recording scheme.
  • In a typical read operation, read/write head 176 is accurately positioned by motor controller 168 over a desired data track on disk platter 178. Motor controller 168 both positions read/write head 176 in relation to disk platter 178 and drives spindle motor 172 by moving read/write head assembly 176 to the proper data track on disk platter 178 under the direction of hard disk controller 166. Spindle motor 172 spins disk platter 178 at a determined spin rate (RPMs). Once read/write head 176 is positioned adjacent the proper data track, magnetic signals representing data on disk platter 178 are sensed by read/write head 176 as disk platter 178 is rotated by spindle motor 172. The sensed magnetic signals are provided as a continuous, minute analog signal representative of the magnetic data on disk platter 178. This minute analog signal is transferred from read/write head 176 to read channel circuit 110 via preamplifier 170. Preamplifier 170 is operable to amplify the minute analog signals accessed from disk platter 178. In turn, read channel circuit 110 decodes and digitizes the received analog signal to recreate the information originally written to disk platter 178. This data is provided as read data 103 to a receiving circuit. A write operation is substantially the opposite of the preceding read operation with write data 101 being provided to read channel circuit 110. This data is then encoded and written to disk platter 178.
  • In operation, data stored to disk platter 178 is encoded using a rank independent encoder circuit to yield an encoded data set. Such a rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a-4 e. One implementation of a rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a-5 d.
  • It should be noted that storage system 100 may be integrated into a larger storage system such as, for example, a RAID (redundant array of inexpensive disks or redundant array of independent disks) based storage system. Such a RAID storage system increases stability and reliability through redundancy, combining multiple disks as a logical unit. Data may be spread across a number of disks included in the RAID storage system according to a variety of algorithms and accessed by an operating system as if it were a single disk. For example, data may be mirrored to multiple disks in the RAID storage system, or may be sliced and distributed across multiple disks in a number of techniques. If a small number of disks in the RAID storage system fail or become unavailable, error correction techniques may be used to recreate the missing data based on the remaining portions of the data from the other disks in the RAID storage system. The disks in the RAID storage system may be, but are not limited to, individual storage systems such as storage system 100, and may be located in close proximity to each other or distributed more widely for increased security. In a write operation, write data is provided to a controller, which stores the write data across the disks, for example by mirroring or by striping the write data. In a read operation, the controller retrieves the data from the disks. The controller then yields the resulting read data as if the RAID storage system were a single disk.
  • A data decoder circuit used in relation to read channel circuit 110 may be, but is not limited to, a low density parity check (LDPC) decoder circuit as are known in the art. Such low density parity check technology is applicable to transmission of information over virtually any channel or storage of information on virtually any media. Transmission applications include, but are not limited to, optical fiber, radio frequency channels, wired or wireless local area networks, digital subscriber line technologies, wireless cellular, Ethernet over any medium such as copper or optical fiber, cable channels such as cable television, and Earth-satellite communications. Storage applications include, but are not limited to, hard disk drives, compact disks, digital video disks, magnetic tapes and memory devices such as DRAM, NAND flash, NOR flash, other non-volatile memories and solid state drives.
  • In addition, it should be noted that storage system 100 may be modified to include solid state memory that is used to store data in addition to the storage offered by disk platter 178. This solid state memory may be used in parallel to disk platter 178 to provide additional storage. In such a case, the solid state memory receives and provides information directly to read channel circuit 110. Alternatively, the solid state memory may be used as a cache where it offers faster access time than that offered by disk platted 178. In such a case, the solid state memory may be disposed between interface controller 120 and read channel circuit 110 where it operates as a pass through to disk platter 178 when requested data is not available in the solid state memory or when the solid state memory does not have sufficient storage to hold a newly written data set. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of storage systems including both disk platter 178 and a solid state memory.
  • Turning to FIG. 2, a data transmission system 200 including a transmitter 210 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention. Transmitter 210 transmits encoded data via a transfer medium 230. Transfer medium 230 may be a wired or wireless transfer medium. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of transfer mediums that may be used in relation to different embodiments of the present invention. The encoded data is received from transfer medium 230 by receiver 220. In operation, transmitter 210 encodes user data using a rank independent encoder circuit to yield an encoded data set. Such a rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a-4 e. One implementation of a rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a-5 d.
  • Turning to FIG. 3, another storage system 300 is shown that includes a data processing circuit 310 having rank independent encoder circuitry in accordance with one or more embodiments of the present invention. A host controller circuit 305 receives data to be stored (i.e., write data 301). Solid state memory access controller circuit 340 may be any circuit known in the art that is capable of controlling access to and from a solid state memory 350. Solid state memory access controller circuit 340 encodes a received data set to yield an encoded data set. The encoding is done using a rank deficient LDPC encoder circuit, and results in an encoded data set that is stored to solid state memory 350. Solid state memory 350 may be any solid state memory known in the art. In some embodiments of the present invention, solid state memory 350 is a flash memory. In operation, data processing circuit 310 encodes user data using a rank independent encoder circuit to yield an encoded data set. Such a rank independent encoder circuit does not require a dense circulant multiplier circuit as rank deficient elements of the codeword are converted to a quasi-pseudo inverse matrix. This conversion may be done consistent with the approach discussed below in relation to FIGS. 4 a-4 e. One implementation of a rank independent encoder circuit that may be used in accordance with various embodiments of the present invention is discussed below in relation to FIGS. 5 a-5 c.
  • Turning to FIG. 4 a, a flow diagram 400 shows a method for generating a quasi-pseudo inverse matrix that may be used for rank independent encoding in accordance with various embodiments of the present invention. As used herein, the phrase “quasi-pseudo inverse matrix” is used in its broadest sense to mean any original matrix that is simplified to have quasi-cyclic structure that when multiplied by the original matrix yields a sparse matrix with regular structure. Following flow diagram 400, an M×M code matrix is identified (block 405). The M×M code matrix may be either a full rank matrix or a rank deficient matrix. A rank deficient matrix includes one or more columns or rows that is linearly dependent upon one or more other columns or rows. For example, where one or more columns is linearly dependent upon one or more other columns in the M×M code matrix, the M×M code matrix is a rank deficient matrix. As another example, where one or more rows is linearly dependent upon one or more other rows in the M×M code matrix, the M×M code matrix is similarly a rank deficient matrix. In a full rank matrix, all rows and columns are linearly independent of each other. In some embodiments of the present invention, referring to FIG. 4 f, the M×M code matrix is an Hp22 matrix shown as part of an overall code matrix 480 as is commonly used in the art. Of note, in some cases, such an Hp22 matrix is denoted as an Hp22 (similarly, Hp21 matrix may be denoted Hp21, and Hu2 matrix may be denoted Hu2), but for the purposes of this document the notation should imply a matrix either with or without the bar. FIG. 4 b shows an example of an M×M code matrix 402 including one row rendering the M×M code matrix rank deficient (rank deficient row (R)), and one column selected for removal to balance the rank deficient row (balancing column (C)). The diagonal lines indicate locations of non-zero elements, and the white areas indicate the location of zero elements.
  • The M×M code matrix is queried to determine whether one or more rows in the matrix are linearly dependent upon any other row(s) in the matrix (block 410). It should be noted that in alternative embodiments it could be determined whether one or more columns in the matrix are linearly dependent upon any other column(s) in the matrix. The location of the identified linearly dependent rows is maintained, and the number of the identified linearly dependent rows is N.
  • It is determined whether and linear dependencies have been identified (i.e., whether N=0) (block 412). Where no linearly dependent rows are identified (block 412), the M×M code matrix is inverted (block 414), and the inverted matrix is provided as an M×M quasi-pseudo inverse matrix (block 455). Alternatively, where it is determined that there are one or more linearly dependent rows (i.e., N>0) (block 412), the identified rows are removed from the M×M code matrix to yield an (M-N)×M depleted matrix (block 415). A corresponding number of columns are also removed from the (M-N)×M depleted matrix to yield an (M-N)×(M-N) full rank matrix (block 420). The removed rows/columns are generally referred to herein as removed rows/columns. As all of the linearly dependent rows have been removed, the remaining matrix is a full rank matrix.
  • The aforementioned (M-N)×(M-N) full rank matrix is then inverted to yield an inverted matrix (block 425). Inversion includes changing all ones in the matrix to zeros, and all zeros in the matrix to ones. FIG. 4 c shows an example of an inverted (M-N)×(M-N) full rank matrix 404. The diagonal white lines indicate locations of zero elements, and the black areas indicate the location of non-zero elements.
  • The inverted matrix is then extended back to its full size (M×M) by inserting rows of all zeros at locations of the previously removed rows, and columns of all zeros at locations of the previously removed columns (block 430). This process yields a full size inverted matrix. One row or column of the full size inverted matrix is selected (block 430), and the selected row or column is repeatedly shifted to generate a quasi-cyclic inverted matrix (block 435). As an example, the first row of the inverted matrix is selected and repeatedly shifted for each of rows 2 through (M-N) to yield the quasi-cyclic inverted matrix (block 440). The result is provided as an M×M quasi-pseudo inverse matrix (block 455). FIG. 4 d shows an example of an M×M quasi-pseudo inverse matrix where the white lines indicate locations of zeros, and the black indicate locations of ones.
  • The resulting M×M quasi-pseudo inverse matrix may be multiplied by the original M×M code matrix resulting in a product having a regular structure that is easily modulated onto a desired vector. FIG. 4 e shows an example product 412 of the multiplication of the M×M code matrix by the M×M quasi-pseudo inverse matrix where the locations of non-zero elements correspond to the diagonal line, and other locations are zero. As shown, example product 412 includes two quadrants that are all zeros, an upper left quadrant that is a pseudo identity matrix, and a lower right quadrant that is an identity matrix. Following the example of FIG. 4 f and referring to FIG. 4 g, an overall encoding matrix 490 is shown with the Hp22 matrix replaced by the quasi-pseudo inverse matrix.
  • Turning to FIG. 5 a, shows a processing system 500 including a rank independent encoder circuit 520 in accordance with some embodiments of the present invention. Data processing system 500 includes rank independent encoder circuit 520 that applies a rank independent encoding algorithm to an original data input 505 to yield an encoded output 539. Application of the rank independent encoding algorithm includes performing a number of vector multiplications by quasi-cyclic matrices. One of the quasi-cyclic matrices is the quasi-pseudo inverse matrix described above in relation to FIGS. 4 a-4 e. By performing the vector multiplications on quasi-cyclic matrices instead of dense matrices as is generally performed where a rank deficient matrix is involved, increased throughput and reduced circuit area are achievable. Further, by utilizing the quasi-pseudo inverse matrix described above in relation to FIGS. 4 a-4 e in place of either another on quasi-cyclic vector multiplier used for full rank matrices or a dense circulant vector multiplier used for rank deficient matrices, processing system 500 provides similar results for both rank deficient and full rank codewords. By using cyclic codes, the read only memories included to perform the encoding may be size reduced and include only a single row or column of the particular matrix, and the other rows or columns can be regenerated using a cyclic shift of the stored pattern. As the quasi-pseudo inverse matrix is not an identity matrix, a post processing circuit is added to calculate parity data generated based upon the multiplication by the quasi-pseudo inverse matrix.
  • Encoded output 539 is provided to a transmission circuit 530 that is operable to transmit the encoded data to a recipient via a medium 540. Transmission circuit 530 may be any circuit known in the art that is capable of transferring encoded output 539 via medium 540. Thus, for example, where data processing circuit 500 is part of a hard disk drive, transmission circuit 530 may include a read/write head assembly that converts an electrical signal into a series of magnetic signals appropriate for writing to a storage medium. Alternatively, where data processing circuit 500 is part of a wireless communication system, transmission circuit 530 may include a wireless transmitter that converts an electrical signal into a radio frequency signal appropriate for transmission via a wireless transmission medium. Transmission circuit 530 provides a transmission output to medium 540. Medium 540 provides a transmitted input that is the transmission output augmented with one or more errors introduced by the transference across medium 540.
  • Of note, original data input 505 may be any data set that is to be transmitted. For example, where data processing system 500 is a hard disk drive, original data input 505 may be a data set that is destined for storage on a storage medium. In such cases, a medium 540 of data processing system 500 is a storage medium. As another example, where data processing system 500 is a communication system, original data input 505 may be a data set that is destined to be transferred to a receiver via a transfer medium. Such transfer mediums may be, but are not limited to, wired or wireless transfer mediums. In such cases, a medium 540 of data processing system 500 is a transfer medium.
  • Data processing circuit 500 includes an analog processing circuit 550 that applies one or more analog functions to the transmitted input. Such analog functions may include, but are not limited to, amplification and filtering. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of pre-processing circuitry that may be used in relation to different embodiments of the present invention. In addition, analog processing circuit 550 converts the processed signal into a series of corresponding digital samples. Data processing circuitry 560 applies data detection and/or data decoding algorithms to the series of digital samples to yield a data output 565. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of data processing circuitry that may be used to recover original data input from the series of digital samples.
  • Turning to FIG. 5 b, one implementation of rank independent encoder circuit 520 of FIG. 5 a is shown as an encoding circuit 590 in accordance with one or more embodiments of the present invention. Encoding circuit 590 utilizes an encoding matrix 599 as shown in FIG. 5 d. Encoding circuit 590 includes a sparse circulant vector multiplication circuit 505 that multiplies a user data input 502 (u) by a portion of an encoding matrix, Hu1 matrix 507 (Hu1), to yield a product 509 in accordance with the following equation:

  • Product 509=u×Hu 1.
  • Hu1 matrix 507 (Hu1) may be maintained in a read only memory.
  • In addition, encoding circuit 500 includes a sparse circulant vector multiplication circuit 541 that multiplies a user data input 502 (u) by a portion of an encoding matrix, Hu2 matrix 542 (Hu2), to yield a product 544 in accordance with the following equation:

  • Product 544=u×Hu 2.
  • Hu2 matrix 542 (Hu2) may be maintained in a read only memory.
  • Another sparse circulant vector multiplication circuit 511 multiplies product 509 by an inverse portion of the encoding matrix, Hp11 matrix 512 (Hp11), to yield a product 514 in accordance with the following equation:

  • Product 514=[u×Hu 1 ]×Hp 11.
  • Hp11 matrix 512 (Hp11) may be maintained in a read only memory.
  • Another sparse circulant vector multiplication circuit 516 multiplies product 514 by an the encoding matrix, Hp21 matrix 518 (Hp21), to yield a product 517 in accordance with the following equation:

  • Product 517=[[u×Hu 1 ]×Hp 11 −1 ]×Hp 21.
  • Hp21 matrix 518 (Hp21) may be maintained in a read only memory.
  • Product 517 and Product 544 are provided to a Galois field adder array 521 where a vector addition is performed in accordance with the following equation to yield a sum 524:

  • Sum 524=[[[u×Hu 1 ]×Hp 11 −1 ]×Hp 21 ]+[u×Hu 2].
  • Sum 524 is provided to another sparse circulant vector multiplication circuit 526 that multiplies sum 524 by a quasi-pseudo inverse matrix 527 to yield a parity set 529 (p2) in accordance with the following equation:

  • Parity Set 529=Sum 524×Quasi−Pseudo Inverse Matrix 529.
  • Quasi-pseudo inverse matrix 527 is a matrix generated using the process described above in relation to FIGS. 4 a-4 e. As quasi-pseudo inverse matrix 527 exhibits a quasi-cyclic structure, read only memory storing quasi-pseudo inverse matrix 527 is only required to store one row of the structure and the multiplication performed by sparse circulant vector multiplication circuit 526 operates on a repeatedly shifted version of the stored row. Further, due to the regularity of quasi-pseudo inverse matrix 527, sparse circulant vector multiplication circuit 526 may be substantially less complex than a corresponding dense multiplier circuit traditionally used for encoding using rank deficient matrices. Said another way, embodiments of the present invention provide an ability to encode data sets using rank deficient matrices using less complex hardware that requires less die area and power.
  • Parity set 529 is provided to another sparse circulant vector multiplication circuit 556 that multiplies parity set 529 by an the encoding matrix, Hp12 matrix 552 (Hp12), to yield a product 559 in accordance with the following equation:

  • Product 559=Parity Set 529×Hp 12.
  • Hp12 matrix 552 (Hp12) may be maintained in a read only memory. Product 559 and Product 509 are provided to a Galois field adder array 561 where a vector addition is performed in accordance with the following equation to yield a sum 564:

  • Sum 564=Product 559+Product 509.
  • Sum 564 is provided to another sparse circulant vector multiplication circuit 566 that multiplies sum 564 by an inverse portion of the encoding matrix, Hp11 matrix 571 (Hp11), to yield a product 569 in accordance with the following equation:

  • Product 569=Sum 564×Hp 11.
  • Hp11 matrix 571 (Hp11) may be maintained in a read only memory.
  • Product 544 and product 569 are provided to a shift based parity calculation circuit 576. Shift based parity calculation circuit 576 operates to resolve a series of linear equations to yield a parity set 579 (p1). The series of linear equations are as follow:
  • Parity Set 579 ( 1 ) + Parity Set 579 ( n ) = Product 544 ( 1 ) ; Parity Set 579 ( 1 ) + Parity Set 579 ( 2 ) = Product 544 ( 2 ) ; Parity Set 579 ( 2 ) + Parity Set 579 ( 3 ) = Product 544 ( 3 ) ; Parity Set 579 ( 3 ) + Parity Set 579 ( 4 ) = Product 544 ( 4 ) ; ; Parity Set 579 ( n - 1 ) + Parity Set 579 ( n ) = Product 544 ( n ) .
  • The values of Product 544(1 . . . n) are established and therefore known due to their prior calculation by sparse circulant vector multiplication circuit 541. Further the value of parity set 579(n) is set to zero. As such, the value for parity set 579(1) can be solved using the equation:

  • Parity Set 579(1)+Parity Set 579(n)=Product 544(1).
  • Once the value of parity set 579(1) is known, the value for parity set 579(2) can be solved using the equation:

  • Parity Set 579(1)+Parity Set 579(2)=Product 544(2).
  • This process of solving for each of the values of parity set 579 is sequentially performed. Finally, the combination of user data 502, parity set 529, and parity set 579 are provided as an encoded data set.
  • Turning to FIG. 5 c, one implementation of a shift based parity calculation circuit 597 in accordance with one or more embodiments of the present invention. Shift based parity calculation circuit 597 may be used in place of shift based parity calculation circuit 576 of FIG. 5 b. Shift based parity calculation circuit 597 includes a prior result register 584 that is initialized to zero at the beginning of solving the aforementioned series of equations as indicated by assertion of an initialize control signal 585. A summation circuit 583 subtracts a prior result (i.e., parity set 579(i-1)) from a corresponding element of product 544 (i.e., product 544(i)) as provided by a shift register 582. The result from summation circuit 583 is provided as part of parity set 579 (i.e., parity set 579(i)). The recently calculated element of parity set 579 is stored back to prior result register 584 where it is used in relation to the next shifted element of product 544 to yield the next element of parity set 579.
  • It should be noted that the various blocks discussed in the above application may be implemented in integrated circuits along with other functionality. Such integrated circuits may include all of the functions of a given block, system or circuit, or a subset of the block, system or circuit. Further, elements of the blocks, systems or circuits may be implemented across multiple integrated circuits. Such integrated circuits may be any type of integrated circuit known in the art including, but are not limited to, a monolithic integrated circuit, a flip chip integrated circuit, a multichip module integrated circuit, and/or a mixed signal integrated circuit. It should also be noted that various functions of the blocks, systems or circuits discussed herein may be implemented in either software or firmware. In some such cases, the entire system, block or circuit may be implemented using its software or firmware equivalent. In other cases, the one part of a given system, block or circuit may be implemented in software or firmware, while other parts are implemented in hardware.
  • In conclusion, the invention provides novel systems, devices, methods and arrangements for data processing. While detailed descriptions of one or more embodiments of the invention have been given above, various alternatives, modifications, and equivalents will be apparent to those skilled in the art without varying from the spirit of the invention. Therefore, the above description should not be taken as limiting the scope of the invention, which is defined by the appended claims

Claims (20)

What is claimed is:
1. A data processing system, the data processing system comprising:
a rank independent data encoding circuit operable to:
receive a user data input; and
apply a rank independent encoding algorithm to the user data input to yield an encoded output, wherein the rank independent encoding algorithm includes multiplying an interim data set by a quasi-pseudo inverse matrix.
2. The data processing system of claim 1, wherein the quasi-pseudo inverse matrix is part of an encoding matrix, and wherein the encoding matrix further includes a first user matrix, a second user matrix, a first interim matrix, a second interim matrix.
3. The data processing system of claim 2, wherein the interim data set is a first interim data set, and wherein the rank independent data encoding circuit comprises:
a first vector multiplier circuit operable to multiply the user data input by an inverse of the first user matrix to yield a second interim data set;
a second vector multiplier circuit operable to multiply the second interim data set by the first interim matrix to yield a third interim data set;
a third vector multiplier circuit operable to multiply the third interim data set by the second interim matrix to yield a fourth interim data set;
a fourth vector multiplier circuit operable to multiply the user data input by the second user matrix to yield a fifth interim data set; and
a fifth vector multiplier circuit operable to multiply a combination of the fourth interim data set and the fifth interim data set by the quasi-pseudo inverse matrix to yield the first interim data set.
4. The data processing system of claim 3, wherein the rank independent data encoding circuit further comprises:
an adder array circuit operable to add the fourth interim data set to the fifth interim data set to yield the combination of the fourth interim data set and the fifth interim data set.
5. The data processing system of claim 4, wherein the encoding matrix further includes a third interim matrix.
6. The data processing system of claim 5, wherein the rank independent data encoding circuit further comprises:
a sixth vector multiplier circuit operable to multiply the first interim data set by the third interim matrix to yield a sixth interim data set; and
a seventh vector multiplier circuit operable to multiply a combination of the fifth interim data set and the sixth interim data set by the first user matrix to yield a seventh interim data set.
7. The data processing system of claim 6, wherein each of the sixth vector multiplier circuit and the seventh vector multiplier circuit is a sparse circulant vector multiplier circuit.
8. The data processing system of claim 6, wherein the adder array circuit is a first adder array circuit, and wherein the rank independent data encoding circuit further comprises:
a second adder array circuit operable to add the fifth interim data set to the sixth interim data set to yield the combination of the fifth interim data set and the sixth interim data set.
9. The data processing system of claim 6, wherein the first interim data set is a first parity set, and wherein the rank independent data encoding circuit further comprises:
a shift based parity calculation circuit operable to calculate a second parity set based at least in part on the seventh interim data set, and wherein the encoded output includes the user data input, the first parity set, and the second parity set.
10. The data processing system of claim 3, wherein each of the first vector multiplier circuit, the second vector multiplier circuit, the third vector multiplier circuit, the fourth vector multiplier circuit, and the fifth vector multiplier circuit is a sparse circulant vector multiplier circuit.
11. The data processing system of claim 1, wherein the quasi-pseudo inverse matrix represents a rank deficient matrix.
12. The data processing system of claim 1, wherein the quasi-pseudo inverse matrix represents a full rank matrix.
13. The data processing system of claim 1, wherein the system is implemented as part of an integrated circuit.
14. The data processing system of claim 1, wherein the system is implemented as part of an electronic device selected from a group consisting of: a storage drive, and a communication device.
15. A method for data encoding, the method comprising:
receiving a user data set;
applying a rank independent encoding algorithm by an encoding circuit to the user data input to yield an encoded output, wherein the rank independent encoding algorithm includes multiplying an interim data set by a quasi-pseudo inverse matrix.
16. The method of claim 15, multiplying the interim data set by the quasi-psuedo inverse matrix is done by a sparse circulant vector multiplier circuit.
17. The method of claim 15, wherein the interim data set is a first interim data set, wherein the quasi-pseudo inverse matrix is part of an encoding matrix, wherein the encoding matrix further includes a first user matrix, a second user matrix, a first interim matrix, a second interim matrix, and wherein the method further comprises:
multiplying the user data input by an inverse of the first user matrix to yield a second interim data set;
multiplying the second interim data set by the first interim matrix to yield a third interim data set;
multiplying the third interim data set by the second interim matrix to yield a fourth interim data set;
multiplying the user data input by the second user matrix to yield a fifth interim data set;
adding the fourth interim data set to the fifth interim data set to yield a combination of the fourth interim data set and the fifth interim data set; and
multiplying the combination of the fourth interim data set and the fifth interim data set by the quasi-pseudo inverse matrix to yield the first interim data set.
18. The method of claim 17, wherein the encoding matrix further includes a third interim matrix, the method further comprising:
multiplying the first interim data set by the third interim matrix to yield a sixth interim data set; and
adding the fifth interim data set to the sixth interim data set to yield a combination of the fifth interim data set and the sixth interim data set; and
multiplying the combination of the fifth interim data set and the sixth interim data set by the first user matrix to yield a seventh interim data set.
19. The method of claim 18, wherein the first interim data set is a first parity set, the method further comprising:
applying a shift based parity calculation to calculate a second parity set based at least in part on the seventh interim data set, and wherein the encoded output includes the user data input, the first parity set, and the second parity set.
20. A hard disk storage device, the device comprising:
a storage medium;
a read/write head assembly disposed in relation to the storage medium and operable to write an encoded output to the storage medium; and
a rank independent data encoding circuit operable to:
receive a user data input; and
apply a rank independent encoding algorithm to the user data input to yield the encoded output, wherein the rank independent encoding algorithm includes multiplying an interim data set by a quasi-pseudo inverse matrix.
US14/338,343 2014-07-22 2014-07-22 Systems and Methods for Rank Independent Cyclic Data Encoding Abandoned US20160028419A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/338,343 US20160028419A1 (en) 2014-07-22 2014-07-22 Systems and Methods for Rank Independent Cyclic Data Encoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/338,343 US20160028419A1 (en) 2014-07-22 2014-07-22 Systems and Methods for Rank Independent Cyclic Data Encoding

Publications (1)

Publication Number Publication Date
US20160028419A1 true US20160028419A1 (en) 2016-01-28

Family

ID=55167544

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/338,343 Abandoned US20160028419A1 (en) 2014-07-22 2014-07-22 Systems and Methods for Rank Independent Cyclic Data Encoding

Country Status (1)

Country Link
US (1) US20160028419A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170249212A1 (en) * 2016-02-29 2017-08-31 International Business Machines Corporation Maximizing redundant information in a mirrored vault
CN110445495A (en) * 2018-05-04 2019-11-12 爱思开海力士有限公司 For converting the circuit, Error-Correcting Circuit and operating method of parity matrix

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446648A (en) * 1992-02-28 1995-08-29 Abramovitch; Daniel Y. Determination of open loop responses from closed loop measurements
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US7499490B2 (en) * 2005-06-24 2009-03-03 California Institute Of Technology Encoders for block-circulant LDPC codes
US7523375B2 (en) * 2005-09-21 2009-04-21 Distribution Control Systems Set of irregular LDPC codes with random structure and low encoding complexity
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US7996746B2 (en) * 2004-10-12 2011-08-09 Nortel Networks Limited Structured low-density parity-check (LDPC) code
US8291283B1 (en) * 2008-06-06 2012-10-16 Marvell International Ltd. Layered quasi-cyclic LDPC decoder with reduced-complexity circular shifter
US8291284B2 (en) * 2006-12-01 2012-10-16 Commissariat A L'energie Atomique Method and device for decoding LDPC codes and communication apparatus including such device
US8504894B1 (en) * 2010-03-04 2013-08-06 Sk Hynix Memory Solutions Inc. Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
US8817972B2 (en) * 2007-06-22 2014-08-26 Centre National de la Recherche Scientifique—CNRS Method of authentication using a decoding of an error correcting code on the basis of a public matrix
US9122625B1 (en) * 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446648A (en) * 1992-02-28 1995-08-29 Abramovitch; Daniel Y. Determination of open loop responses from closed loop measurements
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US7996746B2 (en) * 2004-10-12 2011-08-09 Nortel Networks Limited Structured low-density parity-check (LDPC) code
US7499490B2 (en) * 2005-06-24 2009-03-03 California Institute Of Technology Encoders for block-circulant LDPC codes
US7523375B2 (en) * 2005-09-21 2009-04-21 Distribution Control Systems Set of irregular LDPC codes with random structure and low encoding complexity
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US8291284B2 (en) * 2006-12-01 2012-10-16 Commissariat A L'energie Atomique Method and device for decoding LDPC codes and communication apparatus including such device
US8817972B2 (en) * 2007-06-22 2014-08-26 Centre National de la Recherche Scientifique—CNRS Method of authentication using a decoding of an error correcting code on the basis of a public matrix
US8291283B1 (en) * 2008-06-06 2012-10-16 Marvell International Ltd. Layered quasi-cyclic LDPC decoder with reduced-complexity circular shifter
US8504894B1 (en) * 2010-03-04 2013-08-06 Sk Hynix Memory Solutions Inc. Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
US9122625B1 (en) * 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170249212A1 (en) * 2016-02-29 2017-08-31 International Business Machines Corporation Maximizing redundant information in a mirrored vault
CN110445495A (en) * 2018-05-04 2019-11-12 爱思开海力士有限公司 For converting the circuit, Error-Correcting Circuit and operating method of parity matrix
US10700707B2 (en) 2018-05-04 2020-06-30 SK Hynix Inc. Circuit for transforming parity-check matrix of QC-LDPC code, error correction circuit having the same, and method of operating the same

Similar Documents

Publication Publication Date Title
US8443249B2 (en) Systems and methods for low density parity check data encoding
US9331716B2 (en) Systems and methods for area efficient data encoding
US8788922B2 (en) Error correction codes for incremental redundancy
US10164657B2 (en) Systems and methods for differential message scaling in a decoding process
US9048873B2 (en) Systems and methods for multi-stage encoding of concatenated low density parity check codes
JP2007087529A (en) Signal decoding device, signal decoding method and storage system
KR20130079134A (en) Mixed domain fft-based non-binary ldpc decoder
US20140325303A1 (en) Systems and Methods for Protected Data Encoding
KR101385380B1 (en) Systems and methods for dual binary and non-binary decoding processing
US8782487B2 (en) Systems and methods for locating and correcting decoder mis-corrections
US20160028419A1 (en) Systems and Methods for Rank Independent Cyclic Data Encoding
US9003263B2 (en) Encoder and decoder generation by state-splitting of directed graph
JP5680696B2 (en) System and method for decoding process by regrouping symbols
US8612826B2 (en) Systems and methods for non-binary LDPC encoding
US20150229333A1 (en) Systems and Methods for Rank Deficient Encoding
US8959414B2 (en) Systems and methods for hybrid layer data decoding
US9058115B1 (en) Systems and methods for multi-dimensional data processor operational marginalization
US8837064B1 (en) Systems and methods for quality based bit error rate prediction
US9281843B2 (en) Systems and methods for reduced constraint code data processing
US8749907B2 (en) Systems and methods for adaptive decoder message scaling
US8775898B2 (en) Systems and methods for hardware flexible low density parity check conversion
US9112539B2 (en) Systems and methods for iterative data processing using feedback iteration
US8867156B2 (en) Systems and methods for P-distance based priority data processing
US20160226526A1 (en) Systems and Methods for Soft Data Based Cross Codeword Error Correction
US20160091951A1 (en) Systems and Methods for Power Reduced Data Decoder Scheduling

Legal Events

Date Code Title Description
AS Assignment

Owner name: LSI CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LI, SHU;YANG, SHAOHUA;REEL/FRAME:033368/0210

Effective date: 20140722

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSI CORPORATION;REEL/FRAME:035390/0388

Effective date: 20140814

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001

Effective date: 20160201

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001

Effective date: 20170119

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001

Effective date: 20170119