CN113922825A - 用于误差校正代码的低延迟解码器 - Google Patents
用于误差校正代码的低延迟解码器 Download PDFInfo
- Publication number
- CN113922825A CN113922825A CN202110749932.6A CN202110749932A CN113922825A CN 113922825 A CN113922825 A CN 113922825A CN 202110749932 A CN202110749932 A CN 202110749932A CN 113922825 A CN113922825 A CN 113922825A
- Authority
- CN
- China
- Prior art keywords
- error
- data
- circuitry
- error correction
- magnitude
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1585—Determination of error values
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
- G11C2029/3602—Pattern generator
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开的实施例涉及用于误差校正代码的低延迟解码器。一种用于误差校正的方法包括:在第一设备处接收数据,以及通过第一设备的解码器电路***对数据进行解码。解码数据包括:确定数据内的第一误差位置,以及与确定第一误差位置并行地确定数据内的第一误差幅度。解码数据还包括:执行误差校正以基于第一误差位置和第一误差幅度来生成解码数据。该方法还包括:将解码的数据传输到第二设备。
Description
技术领域
本公开涉及数据解码,并且更具体地,涉及一种用于校正数据中的误差的低延迟解码器。
背景技术
当在设备之间通信时,数据损坏可能会发生。例如,当在存储器设备与集成电路(IC)管芯之间或IC管芯之间进行通信时,数据损坏可能会发生。在一个特定示例中,在动态随机存取存储器(DRAM)应用中,如果误差未被校正和/或由于数据校正而增加等待时间,则数据损坏可能会发生并且可能导致***故障。数据损坏可能由于随机误差或芯片故障而导致。
在各个实施例中,为了检测并校正由于随机误差或芯片故障引起的误差,使用前向误差校正(FEC)机构。FEC机构在设备之间的通信中添加附加校验位/奇偶校验位以校正数据内的误差。在一些实例中,FEC方案利用备用(误差校正码(ECC))位作为奇偶校验位并且在解码过程期间校正数据内的误差。
在许多实例中,随着可以校正的误差的数目的增加,解码器的延迟也会增加。所增加的延迟可能会超过***参数,从而限制了可以被校正的误差的数目。
发明内容
在一个示例中,一种用于误差校正的方法包括:在第一设备处接收数据,以及通过第一设备的解码器电路***对数据进行解码。解码数据包括:确定数据内的第一误差位置,以及与确定第一误差位置并行地确定数据内的第一误差幅度。解码数据还包括:执行误差校正以基于第一误差位置和第一误差幅度来生成经解码的数据。该方法还包括:将经解码的数据传输到第二设备。
在另一示例中,一种第一设备的通信接口***包括解码器电路***。解码器电路***被配置为接收数据并且从数据生成经解码的数据。通过在第一时段期间确定数据内的第一误差位置并且在第二时段期间确定数据内的第一误差幅度,从数据生成经解码的数据。第二时段和第一时段至少部分重叠。还通过执行误差校正以基于第一误差位置和第一误差幅度来生成经解码的数据,来生成经解码的数据。解码器电路***还被配置为将经解码的数据传输到主机设备。
在另一示例中,一种***包括第一设备。第一设备被配置为接收数据,以及从数据生成经解码的数据。通过确定数据内的第一误差位置并且与确定第一误差位置并行地确定数据内的第一误差幅度,生成经解码的数据。还通过执行误差校正以基于第一误差位置和第一误差幅度来生成经解码的数据,来生成经解码的数据。第一设备还被配置为经由接口将经解码的数据传输到第二设备。
附图说明
根据下文给出的具体实施方式并且根据本公开的实施例的附图,对本公开进行更全面的理解。附图用于提供对本公开的实施例的知识和理解,并不将本公开的范围局限于这些特定实施例。更进一步地,附图不一定按比例绘制。
图1图示了根据一个或多个实施例的计算***的示意框图。
图2图示了根据一个或多个实施例的计算***的示意框图。
图3图示了根据一个或多个实施例的解码器的示意框图。
图4图示了根据一个或多个实施例的码字。
图5图示了根据一个或多个实施例的解码器的示意框图。
图6图示了根据一个或多个实施例的用于解码数据的方法的流程图。
图7描绘了本公开的实施例可以在其中操作的示例计算机***的抽象图。
具体实施方式
本公开的各方面涉及一种用于误差校正码的低延迟解码器。在集成电路(IC)管芯到IC管芯的通信链路和IC管芯到存储器设备的通信链路中,数据校正可能会发生。数据损坏可能由于随机误差或由于设备故障而导致。前向误差校正(FEC)机构用于检测并校正由于随机误差或芯片故障而引起的误差。FEC机构利用备用(误差校正码(ECC))位作为奇偶校验,并且在解码过程期间从误差中恢复。
一个示例FEC方案基于里德-所罗门(Reed-Solomon)(RS)码。RS码是使用固定数目的连续位的非二进制码,这些连续位被解释为符号。在一个示例中,RS码利用奇偶校验符号来校正数据内的误差。RS码可以表示为由q位符号组成的RS(n,k,q)、以及由带有“k”个消息符号的“n”个符号组成的码字。进一步地,奇偶校验符号的数目为(n-k),并且可以被校正的符号的数目为((n-k)/2)。在各种实例中,基于可用冗余位的数量,可以使用两个或四个奇偶校验符号来分别校正数据中的一个或两个误差。
校正数据中的误差会增加解码处理的延迟。进一步地,随着要被校正的误差的数目的增加,解码过程的延迟也增加。增加解码过程的延迟会增加数据传输过程的延迟。因而,增加的解码器延迟会对整个***过程产生负面影响,并且可能导致对应***内的故障。
某些方面涉及一种低延迟解码器。该低延迟解码器每个时钟周期校正两个或更多个符号,而不会在解码过程中引入基于延迟的误差。在一个示例中,低延迟解码器采用RS解码方案来在各种存储器设备到IC管芯和IC管芯到IC管芯通信***中每个时钟周期校正两个或更多个符号。与其他RS解码方案相比,本公开的低延迟解码器并行确定误差位置和误差幅度。误差位置是指给定代码字中数据符号被破坏的位置。误差幅度是指已经被破坏的误差值。进一步地,误差幅度可以是指由误差位置指定的位置处的数据。因而,本公开的低延迟解码器能够在比其他方法更少的时钟周期内检测并校正码字(例如,数据)中的误差。进一步地,某些方面提供了一种低延迟解码器,该低延迟解码器与不使用并行处理来确定误差位置和误差幅度的解码器相比,减轻了解码器延迟,避免了(或至少减少了)数据重传和/或***故障。
图1图示了包括设备110和设备120的计算***100。进一步地,计算***100包括主机设备130。设备110和/或设备120通过一个或多个接口连接到主机设备130。
设备110是集成电路(IC)管芯。设备110包括与主机设备130和设备120通信的一个或多个处理器(例如,控制器)和/或电路元件。例如,设备110包括处理器112、主机接口114和通信接口***116。处理器112可通信地连接到主机接口114和通信接口***116。处理器112处理经由主机接口114从主机设备130接收的请求、响应和其他类型的通信。处理器112经由通信接口***116将经处理的请求、响应和/或其他通信传达到设备120。通信接口***116向设备120或从设备120传达经处理的请求或响应。
通信接口***116包括解码器140和编码器150。解码器140对从设备120接收的通信进行解码。进一步地,编码器150对传输到设备120的通信进行编码。在一个示例中,编码器150和解码器140采用RS编码方案。解码器140包括一个或多个控制器和/或电路***,该一个或多个控制器和/或电路***被配置为对从设备120接收的数据进行解码和校正。在这种示例中,解码器140可以被称为解码器电路***。在一个示例中,解码器140的至少一部分被实现为由处理设备(例如,图7的处理设备702)执行的指令(例如,图7的主存储器704的指令726)集合。解码器140可以是RS解码器。在其他实施例中,解码器140可以包括其他编码方案。附加地或可替代地,编码器150包括一个或多个控制器和/或电路***,该一个或多个控制器和/或电路***被配置为对要发送到设备120的数据进行编码。在这种示例中,编码器150可以被称为编码器电路***。在一个示例中,编码器150的至少一部分被实现为由处理设备(例如,图7的处理设备702)执行的指令(例如,图7的主存储器704的指令726)集合。
设备120是与设备110的IC管芯相似的IC管芯。在这种示例中,设备120包括一个或多个处理器、通信接口和/或其他电路元件。在一个示例中,设备120是存储器设备。在这种示例中,设备120包括一个或多个存储器块和控制器。
设备110和120被安装到一个或多个衬底上。在设备110和设备120是IC管芯的示例中,一个或多个衬底包括一个或多个通信路径,该一个或多个通信路径可通信地连接设备110和设备120。这些通信路径可以称为管芯到管芯通信链路。进一步地,在设备110是IC管芯并且设备120是存储器设备的示例中,一个或多个衬底包括一个或多个通信路径,该一个或多个通信路径连接设备110和设备120。在这样的示例中,通信路径可以称为管芯到存储器通信链路。
主机设备130是包括一个或多个处理器和/或其他电路元件的处理***。主机设备130包括一个或多个集成电路管芯。主机设备130可以安装到与设备110和设备120相同的衬底上,或可以安装在与设备110和设备120不同的衬底上。
主机设备130包括一个或多个接口和/或处理器,该一个或多个接口和/或处理器与设备110通信。在一个示例中,主机设备130经由设备110向设备120传达请求。进一步地,主机设备130经由设备110从设备120接收响应。进一步地,一个或多个应用可以由主机设备130执行。在一个示例中,主机设备130是图7的计算机***700的一部分。
图2图示了根据一个或多个示例的计算***200。计算***200包括主机设备130、IC管芯210和存储器设备220。IC管芯210的配置与图1的设备110的配置相似,而存储器设备220的配置与图1的设备120的配置相似。例如,IC管芯210可通信地连接到主机设备130和存储器设备220。进一步地,IC管芯210经由路径202从主机设备130接收请求。路径202可以是总线。例如,路径202是32个位线、64个位线、128个位线、256个位线的总线。在另一示例中,路径202是多于256个位线的总线。IC管芯210经由路径204向主机设备130传送响应。路径204可以是总线。例如,路径204是32个位线、64个位线、128个位线、256个位线的总线。在另一示例中,路径204是多于256个位线的总线。
IC管芯210经由路径206(例如,通信信道)和路径208(例如,另一通信信道)可通信地连接到存储器设备220。IC管芯210经由路径206将请求(例如,写入请求)传达到存储器设备220。进一步地,IC管芯210经由路径208从存储器设备220接收响应(例如,响应数据)。响应可以呈一个或多个码字的形式。
在一些方面中,IC管芯210包括通信接口212。通信接口212包括编码器230、解码器232和控制器234。编码器230和解码器232可通信地连接到控制器234并且配置分别与图1的解码器140和编码器150的配置相似。编码器230经由路径236可通信地连接到控制器234,并且解码器232经由路径238可通信地连接到控制器234。路径236和238是总线。例如,路径236和238是36个位线、72个位线、144个位线或288个位线或更多个位线的总线。在一个示例中,路径236和238是位尺寸大于路径202和204的位尺寸的总线。进一步地,路径236和238可以是尺寸相同的总线。
控制器234可以被称为存储器控制器。控制器234控制编码器230和解码器232与存储器设备220之间的数据流。控制器234可以是随机存取存储器(RAM)控制器。在一个示例中,控制器234是动态随机存取存储器(DRAM)控制器。在其他示例中,控制器234是用于任何其他合适类型的存储器的控制器。
存储器设备220包括一个或多个存储器组2221至222N(统称为存储器组222)和一个/或多个控制器,其中N为二或更大的整数。存储器组222的尺寸可能相同(例如,能够存储相同数目的位)。例如,存储器组222中的每个存储器组可以存储2个位、4个位或8个位。在另一示例中,存储器组222中的每个存储器组可以存储多于8个位。存储器设备220是易失性存储器或非易失性存储器。在一个示例中,存储器设备220是RAM。例如,存储器设备220是双倍数据速率(DDR)DRAM。在一个示例中,存储器设备220是DDR4DRAM或DDR5 DRAM。在其他示例中,存储器设备220可以是任何其他合适类型的RAM。
当与通信接口212通信时,存储器组222中的每个存储器组在时钟信号的正沿上提供M位数据并且在时钟信号的负沿上提供M位数据。M是大于零的整数。在一个示例中,M为八。时钟信号由IC管芯210或存储器设备220提供。
在一个示例中,当与通信接口212通信时,存储器组222中的一个或多个存储器组可能经历一个或多个故障(例如,误差)。因而,由存储器组222中的对应存储器组提供的数据(例如,码字)出现故障(例如,包括一个或多个误差)。当对数据进行编码并将数据从编码器230传达到存储器组222时,误差可能会发生。附加地或可替代地,当访问数据并将数据从存储器组222传达到解码器232以进行解码时,误差可能会发生。
在一个示例中,编码器230和解码器232采用FEC方案,该FEC方案使用奇偶校验数据(例如,奇偶校验符号)来校正由存储器组222提供的数据中的误差。例如,编码器230向从主机设备130接收的数据添加一个或多个奇偶校验符号。编码器230生成一个或多个奇偶校验符号并且将奇偶校验符号与所接收的数据一起传达到存储器设备220。奇偶校验符号的数目为两个或更多个。例如,奇偶校验符号的数目可以为2个、4个、6个、8个或更多个。奇偶校验符号存储在存储器设备220内。例如,奇偶校验符号存储在存储器设备220内的存储器组222中的一个或多个存储器组中。
编码器230生成可以被校正的每个数据段(例如,存储器组222)的多个预先确定的奇偶校验符号。在一个示例中,对于可以被校正的存储器组222中的每个存储器组222,编码器230生成两个奇偶校验符号。编码器230基于从主机设备130接收的数据来生成奇偶校验符号。例如,编码器230基于从主机设备130接收的数据来生成奇偶校验符号并且将奇偶校验符号与数据一起传达到存储器设备220。奇偶校验符号存储在存储器组222中的一个或多个存储器组222中。在一个示例中,编码器230接收256位数据并且生成288位数据(例如,包括所接收的256位数据和32位奇偶校验位)。
在各个方面中,与编码器230和解码器232相关联的时序(例如,频率)可以取决于用于制造编码器230的电路元件的制造特性和/或处理技术。例如,对于具有慢转角(例如,125摄氏度))目标节点的7nm鳍式场效应晶体管(FinFET)处理技术,编码器230实现接近1.4GHz的时序,其中延迟为一个时钟周期。进一步地,解码器232实现接近1.4GHz的时序,其中延迟为两个时钟周期。使用延迟为一个时钟周期的编码器和延迟为两个时钟周期的解码器减少了数据的重传和/或计算***200内的故障。
在一个示例中,RS码用于校正数据中的误差。RS码是非二进制码,用于校正数据内的误差。在其他示例中,可以使用其他编码方法来校正数据内的误差。例如,二进制编码方法或非二进制编码方法可以用于校正数据内的误差。
在一些方面,奇偶校验符号通过存储器设备220与对应数据一起传达。解码器232使用奇偶校验符号来校正数据内的误差。所接收的数据包括总共x个符号、n个数据符号和t个奇偶校验符号(例如,(x,n,t))。在数据解码过程器件,解码器232确定误差的数目、误差的幅度以及误差在数据内的位置。进一步地,解码器232校正在数据内标识的误差。在一个示例中,解码器232并行且彼此独立地确定一个或多个误差的幅度以及该一个或多个误差在数据内的位置。进一步地,在一个示例中,解码器232在IC管芯210的时钟信号的两个时钟周期内检测并校正数据内的误差。解码器232进一步将解码器状态传达到控制器234。解码器状态可以指示在数据内检测到的误差的数目。进一步地,解码器状态可以包括关于解码器232是否能够校正数据内的经标识的误差的指示。
虽然图2图示了IC管芯210和存储器设备220以及对从存储器设备220传达到IC管芯210的数据内的误差的校正,但是本文中所描述的各方面适用于对在多个IC管芯之间传达的数据内的误差的校正。例如,代替从存储器设备220接收要校正的数据,可以从与设备120相似的另一设备接收数据。进一步地,在这样的示例中,可以使用用于校正从另一设备接收的数据的类似方法。进一步地,多个IC管芯或存储器设备可以连接到IC管芯210。相似方法可以用于校正从一个或多个存储器设备220和/或一个或多个IC管芯接收的数据。
图3是根据一个或多个示例的解码器232的示意框图。解码器232包括校验子计算电路***310、误差***电路***312、误差校正电路***314、误差校正电路***316、选择电路***318(例如,多路复用器)、以及组合器电路***320。
校验子计算电路***310从存储器设备(例如,存储器设备220)接收数据。在一个示例中,校验子计算电路***310从控制器234接收数据。校验子计算电路***310从控制器234接收数据302(例如,码字),对数据302进行处理,并且向误差***电路***312、误差校正电路***314和误差校正电路***316提供校验子值。
校验子计算电路***310包括乘法器电路***、加法器电路***和/或减法电路***等,以处理从控制器234接收的数据302。在另一示例中,校验子计算电路***310可以使用校验子计算块替换,该校验子计算块包括存储在存储器设备(例如,图7的主存储器704)中并由处理器(例如,图7的处理设备702)执行的指令(例如,图7的指令726)。进一步地,校验子计算块可以包括要由处理设备和电路***执行的指令的组合。
在一个示例中,解码器232使用采用RS编码方案的FEC方案。进一步地,在图3的示例中,使用256位数据(例如,在主机设备130与IC管芯210之间传达)。在其他示例中,由主机设备130传达到IC管芯210的位数可以多于或少于256个位。进一步地,在图2的示例中,解码器232从存储器设备220接收32位奇偶校验数据。可以在设计解码器232期间确定奇偶校验数据的位数。在其他示例中,可以使用多于或少于32位的奇偶校验。进一步地,在图3的示例中,32位的奇偶校验用于校正一个符号误差(8位)或两个符号误差(16位)。
在RS编码方案中,参数“n”限定块符号长度(例如,消息中的符号总数),参数“k”限定消息符号长度(例如,消息中的符号数),并且参数“q”限定以位为单位的每个符号的尺寸。参数n、k和q均为大于零的整数。进一步地,参数n大于参数q。RS码可以写为RS(n,k,q)。图4图示了示例码字400。码字400包括总共n个符号。在码字400的总共n个符号中,存在与原始消息相对应的k个符号,以及(n-k)个奇偶校验符号或t个奇偶校验符号。在一个示例中,当参数n为36(例如,总共36个符号),并且参数k为32(例如,原始消息中的32个符号)时,奇偶校验符号的数目为(36-32)或4(例如,参数t为4)。可以被校正的符号数为t/2,或在上述示例中为2。
与码字或消息相关联的RS编码方案的每个参数与Galois域(GF)的元素相对应。GF与包含有限数目的元件的有限域相对应。
GF表示为GF(m),其中m为域中元素的数目。在一个示例中,对于每符号8个位,m等于28。进一步地,原始消息k有32个符号而奇偶校验信息有4个符号。对应RS码可以写为RS(36,32,8)。在这样的示例RS码中,可以校正原始消息中任何地方出现的高达(36-32)/2或2个符号误差。
在GF中,域中的每个元素都可以表示为多项式。进一步地,对于GF(28),域多项式被定义为P(x)=x8+x4+x3+x2+1。在另一示例中,可以使用其他域多项式。对于GF(28),基于方程G(x)=(x-a)(x-a2)...(x-an-k)=g0+g1x+...+gn-k-1xn-k-1+xn-k来生成多项式(G(x))。参数a是GF的原始元素。对于GF(28),a=2。进一步地,对于GF(28)且a=2,G(x)=64+120x+54x2+15x3+x4。进一步地,如上文所指出的,所接收的码字(例如,数据302)表示为rx[],长度为36。
还参考图2,在一个示例中,编码器230为RS(36,32)编码器,该RS(36,32)编码器为每256位数据生成4个奇偶校验符号。例如,由36个符号(256个消息数据位和32个奇偶校验数据位)组成的RS码字经由控制器234写入到存储器设备220。
进一步地,还参考图2,解码器232为RS(36,32)编码器。解码器232经由控制器234接收从存储器设备220读回的数据(例如,码字)。解码器232检测数据中可能的误差并且在数据被发送到主机设备130之前校正误差。
校验子计算电路***310计算校验子值。例如,校验子计算电路***310基于解码器232的RS码来计算校验子值(例如,校验子)。计算校正子评估数据的多项式以标识数据内的一个或多个可能误差。对于(36,32,8)的RS码,四个校验子值被确定为S[0]、S[1]、S[2]和S[3]。每个校验子为8位值。对于i=(0到2t-1),校验子计算由以下方程给出:
在一个示例中,rx[]是指具有36个符号且符号为8位宽的所接收的码字(例如,数据)。在其他示例中,码字可以具有多于或少于36个符号和/或每个符号多于或小于8位宽。校验子计算电路***310将校验子值传达到误差***电路***312、误差校正电路***314和误差校正电路***316。
误差***电路***312包括乘法器电路***、加法器电路***和/或减法电路***等,以对从校验子计算电路***310接收的校验子值进行处理。在另一示例中,误差***电路***312可以使用误差***块替换,该误差***块包括存储在存储器设备(例如,图7的主存储器704)中并由处理器(例如,图7的处理设备702)执行的指令(例如,图7的指令726)。进一步地,误差***块可以包括要由处理设备和电路***执行的指令的组合。
误差***电路***312确定从存储器设备220接收的数据内的每个误差的位置。误差***电路***312使用由校验子计算电路***310提供的校验子值来确定用于数据内的误差的误差***方程。例如,如果存在单个误差,则误差***电路***312生成线性方程。进一步地,如果存在不止一个误差,则误差***电路***312生成多项式。进一步地,如果数据中没有误差,则误差***电路***312生成零次多项式。在一个示例中,单个误差***电路***312用于对校验子值进行处理并且将对应方程输出到误差校正电路***314和误差校正电路***316。在另一示例中,不是针对误差校正电路***314和误差校正电路***316实现误差***电路***312,而是可以针对误差校正电路***314和误差校正电路***316中的每个误差定位电路***实现单独误差定位电路***。
由误差***电路***312生成的方程呈L2x2+L1x+C的形式。参数L1、L2和C由以下方程给出:
L2=(S[2]2+S[1]S[3])/(S[0]S[2]+S[1]2) 方程2
L1=(S[1]S[2]+S[0]S[3])/(S[0]S[2]+S[1]2),以及 方程3
C=1。 方程4
误差***电路***312通过将L2x2+L1x+C设置为0并且始终乘以S[0]S[2]+S[1]2来标识一个或多个误差的位置。在整个L2x2+L1x+C中,乘以S[0]S[2]+S[1]2从误差***电路***312执行的过程中移除除法运算。因而,鉴于方程2至5,L2x2+L1x+C表示为:
(S[2]2+S[1]S[3])*x2+(S[1]S[2]+S[0]S[3])*x+(S[0]S[2]+S[1]2)=0方程6。
方程5也可以表示为:
(S[2]2+S[1]S[3])*x2+(S[1]S[2]+S[0]S[3])*x=(S[0]S[2]+S[1]2)方程7。
误差***电路***312基于方程5来确定每个误差的位置,求解从x=a0到x=a(n-1)的每个‘x’。利用应用于上述方程的根求解给出p和q的误差位置。参数ap和aq与位置p处的误差和位置q处的误差相对应。对于每对误差符号位置,求解位置p处的误差和位置q处的误差。进一步地,参数ap和aq表示对应GF的常数。误差***电路***312确定每个误差的可能位置而非确定每个误差的幅度。
误差***电路***312将方程(例如,线性方程或多项式)传达到误差校正电路***314和误差校正电路***316。误差校正电路***314、316中的每个误差校正电路***确定一个或多个误差幅度并且关联由方程确定的误差幅度和误差位置。误差校正电路***314、316中的每个误差校正电路***向选择电路***318输出一个或多个误差校正模式(例如,也称为校正符号)、一个或多个误差幅度和/或一个或多个误差位置。误差校正电路***314、316中的每个误差校正电路***所输出的误差校正模式可以包括可以用于误差校正的(多个)经校正符号。换言之,包括误差位置和幅度的经标识误差可以用于生成可以用于校正从存储器设备接收的数据的校正模式。
在一个示例中,误差校正电路***314确定单个误差幅度及相关误差位置。进一步地,误差校正电路***316确定两个误差幅度及相关误差位置。误差校正电路***316确定比误差校正电路***314更多的误差幅度及相关误差位置。在一个示例中,误差校正电路***314和误差校正电路***316并行确定对应误差幅度及相关误差位置。进一步地,确定误差幅度与处理误差***电路***312并行发生。例如,误差校正电路***314和误差校正电路***316在与确定并选择误差位置的时间重叠的时间段期间确定对应误差幅度。
在误差的数目为1的示例中,误差校正电路***314确定单个误差的误差幅度及相关误差位置。进一步地,在误差的数目为二的示例中,误差校正电路***316确定每个误差的幅度及相关误差位置。在这样的示例中,因为误差的数目大于1,所以误差校正电路***314无效,并且误差校正电路***314被配置为确定单个误差的幅度及相关误差位置。
误差校正电路***314和误差校正电路***316的输出输出到选择电路***318。进一步地,误差校正电路***314向选择电路***318输出控制信号322。在另一实施例中,控制信号322由校验子计算电路***310、误差***电路***312、误差校正电路***316或解码器232外部的元件提供。选择电路***318基于控制信号322来选择误差校正电路***314的输出或误差校正电路***316的输出。
在一个示例中,控制信号322指示误差的数目为1。因此,基于指示误差的数目为一的控制信号322,选择电路***318选择由误差校正电路***314提供的输出。在另一示例中,控制信号322指示误差的数目大于一(例如,两个或更多个)。因此,基于指示误差的数目大于一(例如,两个或更多个)的控制信号322,选择电路***318选择由误差校正电路***316提供的输出。
选择电路***318向组合器电路***320输出经校正的一个或多个符号。组合器电路***320接收数据302并且将经校正的一个或多个符号与数据302组合以生成经校正的数据304。例如,误差符号数据302内的一个或多个误差符号使用选择电路***318所提供的一个或多个对应经校正的符号替换。在一个示例中,经校正的数据304传达到主机设备130。例如,参考图1,经校正的数据304经由主机接口114传达到主机设备130。
图5是根据一个或多个实施例的解码器232的一部分的示意框图。例如,图5图示了校验子计算电路***310、误差***电路***312、误差校正电路***314和误差校正电路***316。误差校正电路***314包括误差幅度电路***512、误差位置选择电路***514和校正电路***516。进一步地,误差校正电路***316包括误差幅度电路***522、误差位置选择电路***524和校正电路***526。
误差幅度电路***512连接到校验子计算电路***310并且接收校验子计算电路***310的输出。例如,误差幅度电路***512从校验子计算电路***310接收一个或多个校验子值。
误差幅度电路***522连接到校验子计算电路***310并且接收校验子计算电路***310的输出。例如,误差幅度电路***522从校验子计算电路***310接收一个或多个校验子值。
误差幅度电路***512和误差幅度电路***522根据由校验子计算电路***310提供的校验子值确定数据302内的一个或多个误差的幅度。误差幅度电路***512和误差幅度电路***522中的每个误差幅度电路***确定每个误差的幅度,而非确定每个误差的位置(例如,与其无关)。误差幅度电路***512确定数据302内任何一个位置的误差幅度并且误差幅度电路***522确定数据302内任何两个位置的误差幅度。
在一个示例中,误差幅度电路***512使用以下方程来确定误差的可能误差幅度。
e1=S[0],以及 方程7
e1*aP=S[1]。 方程8
对于单个误差场景,误差幅度电路***512基于S[1]/S[0]或S[1]*S[0]-1来确定误差幅度。然而,为了避免除法运算(或逆乘法),可以使用具有每个位置的逆的条目的查找表(LUT)。当确定误差幅度时,该位置用作LUT的索引值以获得对应值。
误差幅度电路***522利用方程9和10来确定数据内每两个符号位置的可能误差幅度。例如,如果e1和e2是码字中任意两个符号位置的误差,则:
e1+e2=S[0],以及 方程9
e1*ap+e2*aq=S[1]。 方程10
其中‘p’和‘q’是数据302中的两个误差位置,使得0<=(p,q)<=(n-1)。方程11和12用于求解e1和e2:
e1[p][q]=(S[0]*aq+S[1])/(ap+aq),以及 方程11
e2[p][q]=(S[0]*ap+S[1])/(ap+aq)。 方程12
方程11和12中的每个方程都包括除法运算。然而,为了避免执行除法运算,解码器232使用存储常数值1/(ap+aq)的查找表(LUT)。生成数据内的每个符号位置的LUT的常数值。在一个示例中,误差幅度电路***522使用该对位置作为索引来访问LUT以标识对应值。该值由LUT提供给误差幅度电路***522并且乘以(S[0]*aq+S[1])和(S[0]*ap+S[1])以确定幅度值e1和e2。在一个示例中,对于RS(36,32)(例如,利用36个符号的RS编码方案),使用具有36×36个或1296个条目的LUT。使用LUT内的值,方程10和11可以分别写为方程11和12。在方程13和14中,LUT(a,p,q)是基于数据内符号位置对的索引。
e1[p][q]=(S[0]*aq+S[1])*LUT(a,p,q),以及 方程13
e2[p][q]=(S[0]*ap+S[1])*LUT(a,p,q)。 方程14
与方程10和11相比较,方程14和15涉及加法运算(或异或运算)和常数值的乘法运算,而不包括除法运算。
误差位置选择电路***514和误差位置选择电路***524选择误差在数据内的位置。例如,误差位置选择电路***514基于由误差***电路***312生成的方程来生成误差在数据内的位置。例如,误差位置选择电路***514基于误差***电路***312所提供的输出来选择数据内具有误差的符号的位置。
在一个示例中,误差幅度电路***512的输出、误差位置选择电路***514的输出和数据302提供给校正电路***516。校正电路***516基于由误差幅度电路***512所提供的误差幅度、误差位置选择电路***514所提供的误差位置和数据302来将误差幅度与误差位置相关联以确定误差校正模式(例如,经校正的符号)。例如,校正电路***516基于误差幅度、误差位置和数据302来生成误差校正模式。误差校正模式通过确定码字内的误差位置并且***对应误差幅度与误差位置(例如,使它们相关联)来生成。基于误差位置和对应误差幅度来产生对应误差校正模式。校正模式输出到选择电路***318。
在另一示例中,误差幅度电路***522的输出、误差位置选择电路***524的输出和数据302提供给校正电路***526。校正电路***526基于误差幅度电路***522所提供的误差幅度、误差位置选择电路***524所提供的误差的位置和数据302来将误差幅度与误差位置相关联以确定误差校正模式(例如,经校正的符号)。例如,校正电路***526基于误差幅度、误差位置和数据302来生成误差校正模式。误差校正模式通过以下各项来生成:确定数据302内的第一误差位置(例如,代码字),***码字内的对应误差幅度与第一误差位置和第二误差位置(例如,使它们相关联),并且***对应误差幅度与第二误差位置(例如,使它们相关联)。基于第一误差位置和第二误差位置以及对应误差幅度来产生对应误差校正模式。误差校正模式输出到选择电路***318。
如上文所指出的,还参考图3,选择电路***318基于控制信号322来选择由误差校正电路***314或误差校正电路***316输出的误差校正模式。在一个示例中,控制信号322指示单个符号误差,并且选择电路***318选择由误差校正电路***314输出的误差校正模式。进一步地,在另一示例中,控制信号322指示两个符号误差,并且选择电路***318选择由误差校正电路***316输出的误差校正模式。
选择电路***318的输出连接到组合器电路***320。组合器电路***320从误差校正电路***314和数据302接收所选择的误差校正模式以生成经校正的数据304。组合器电路***320通过将误差值定位在数据302中所标识的误差位置处来对数据302进行校正。例如,组合器电路***320包括异或逻辑,该异或逻辑将所选择的误差校正模式与数据302的符号进行异或。在一个示例中,每个符号位置的两级MUX用于校正数据302。
误差幅度电路***512、误差位置选择电路***514、校正电路***516、误差幅度电路***522、误差位置选择电路***524和/或校正电路***526包括对应乘法器电路***、加法器电路***和/或减法电路***等。在另一示例中,误差幅度电路***512和/或误差幅度电路***522可以使用相应误差幅度块替换,该相应误差幅度块包括存储在存储器设备(例如,图7的主存储器704)中并由处理器(例如,图7的处理设备702)执行的指令(例如,图7的指令726)。进一步地,误差幅度块可以包括要由处理设备和电路***执行的指令的组合。附加地或可替代地,误差位置选择电路***514和/或误差位置选择电路***524可以使用相应误差位置选择块替换,该相应误差位置选择块包括存储在存储器设备(图7的主存储器704)中并由处理器(例如,图7的处理设备702)执行的指令(例如,图7的指令726)。进一步地,误差位置选择块可以包括由处理设备和电路***执行的指令的组合。附加地或可替代地,校正电路***516和/或校正电路***526可以使用校正块替换,该校正块包括存储在存储器设备(例如,图7的主存储器704)中并由处理器(例如,图7的处理设备702)执行的指令(例如,图7的指令726)。进一步地,校正块可以包括要由处理设备和电路***执行的指令的组合。
图6图示了用于校正码字(例如,数据)内的误差的方法600的流程图。在一个示例中,参考图7,处理设备702使用存储在主存储器704或机器可读存储介质724中的指令726来执行方法600。
在方法600的610处,第一设备从第二设备接收码字(例如,数据)。例如,参考图1,设备110从设备120接收(例如,获取)码字。参考图3,IC管芯210的通信接口212从存储器设备220接收码字。在620处,对码字进行解码。例如,解码器232对码字进行解码。解码码字包括:在622处,确定码字内的一个或多个符号误差位置。例如,如上文所描述的并且参考图3,解码器232确定码字内的一个或多个误差位置。在一个示例中,参考图5,校验子计算电路***310、误差***电路***312和误差位置选择电路***514和/或误差位置选择电路***524确定码字内的一个或多个符号误差位置。进一步地,解码码字包括:在方法600的624处,确定码字内的一个或多个误差幅度。例如,参考图3,解码器232确定码字内的一个或多个误差幅度。在另一示例中,参考图5,校验子计算电路***310和误差幅度电路***512和/或误差幅度电路***522确定码字内的一个或多个误差幅度。一个或多个符号误差位置和一个或多个符号误差幅度彼此并行且彼此独立地确定。例如,在彼此至少部分重叠的时段期间确定一个或多个符号误差位置和一个或多个符号误差幅度。在一个示例中,在第一时段期间确定一个或多个符号误差位置而在第二时段期间确定一个或多个符号误差幅度。在这样的示例中,第一时段和第二时段同时开始和/或同时结束。进一步地,第一时段的长度可以与第二时段的长度相同或不同。
与利用使用迭代算法或类似迭代算法的Berlekamp-Massey算法来确定误差位置和误差幅度的解码方法相比较,解码器232彼此平行且彼此独立确定一个或多个符号误差幅度和误差位置。因而,与利用其他解码技术的解码器相比较,解码器232的延迟减小。
解码码字还包括方法600的626,执行误差校正。执行误差校正包括:将误差位置与误差幅度相关联。例如,参考图2,解码器232执行误差校正包括:将一个或多个误差位置与一个或多个误差幅度相关联。在一个示例中,参考图5,校正电路***516和/或校正电路***526将一个或多个误差幅度内的一个或多个误差位置相关联。进一步地,执行误差校正包括:生成一个或多个误差校正模式。误差校正模式根据相关的误差位置和误差幅度生成。例如,参考图2,解码器232根据相关误差位置和误差幅度生成一个或多个误差校正模式,并且基于一个或多个误差校正模式来校正码字。在一个示例中,参考图3,误差校正电路***314和误差校正电路***316中的一个或多个误差校正电路***根据相关联的一个或多个误差位置和一个或多个误差幅度生成误差校正模式。进一步地,参考图3,选择电路***318基于码字内标识的误差的数目来选择对应校正模式。进一步地,组合器电路***320将校正模式与数据302组合以生成经校正的数据304。在一个示例中,如果在码字内没有检测到误差,则跳过对码字的校正。例如,如果在码字内没有检测到误差,则可以跳过方法600的622、624和626中的一个或多个。
在方法600的630处,经解码的数据被传输到主机设备。例如,参考图2,通过解码器232解码的经解码的数据被传达到主机设备130。在一个示例中,经解码的数据被传达到在主机设备130上运行的应用。
图7图示了其中可以执行指令集合的计算机***700的示例机器,该指令集合用于使得机器执行本文中所讨论的方法中的任一个或多个方法(例如,编码数据和/或解码数据)。在备选实现方式中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。该机器可以在客户端-服务器网络环境中作为服务器或客户端机器操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
该机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、交换机或网桥、或能够(按顺序或以其他方式)执行指令集合的任何机器,该指令集合指定该机器要采取的动作。进一步地,虽然图示了单个机器,但术语“机器”也应当被认为包括单独或联合执行一个或多个指令集合以执行本文中所讨论的方法中的任一个或多个方法的任何机器集合。
示例计算机***700包括处理设备702、主存储器704(例如,只读存储器(ROM))、闪存、动态随机存取存储器(DROM)(诸如同步DRAM(SDRAM))、静态存储器706(例如,闪存、静态随机存取存储器(SRAM)等)、以及数据存储器设备718,它们经由总线730相互通信。
处理设备702表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实现其他指令集合的处理器、或实现指令集合的处理器。处理设备702还可以是一个或多个专用处理设备,诸如专用集成电路***(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备702可以被配置为执行指令726用于执行本文中所描述的操作和步骤。
计算机***700还可以包括网络接口设备708以通过网络720进行通信。计算机***700还可以包括视频显示单元710(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字式输入设备712(例如,键盘)、光标控制设备714(例如,鼠标)、图形处理单元722、信号生成设备716(例如,扬声器)、图形处理单元722、视频处理单元728、以及音频处理单元732。
数据存储器设备718可以包括机器可读存储介质724(也称为非暂态计算机可读介质),该机器可读存储介质724上存储有一个或多个指令集合726或体现本文中所描述的方法或功能中的任一个或多个方法或特征。指令726还可以在其由计算机***700执行期间完全地或至少部分地驻留在主存储器704和/或处理设备702内,主存储器704和处理设备702也构成机器可读存储介质。
在一些实现方式中,指令726包括用于实现与本公开相对应的功能的指令。虽然机器可读存储介质724在一个示例实现方式中被示为单个介质,但术语“机器可读存储介质”应当被视为包括存储一个或多个指令集合的单个介质或多个介质(例如,集中式或分布式数据库,以及/或相关高速缓存和服务器)。术语“机器可读存储介质”还应当被认为包括能够存储或编码指令集合以供机器执行并且使得机器和处理设备702执行本公开的方法中的任一个或多个方法。因此,术语“机器可读存储介质”应当被理解为包括但不限于固态存储器、光学介质和磁性介质。
前面具体实施方式的一些部分已经根据对计算机存储器内的数据位进行操作的算法和符号的表示来呈现。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他技术人员传达他们工作的实质的方式。算法可以是产生期望结果的操作序列。这些操作是需要对物理量进行物理操作的操作。这些量可以采用能够被存储、组合、比较和以其他方式操纵的电性信号或磁性信号的形式。这样的信号可以被称为位、值、元素、符号、字符、项、数字等。
然而,应当记住,所有这些和类似的术语都与适当的物理量相关联,并且只是适用于这些量的方便标签。除非根据本公开清楚地另有说明,否则应当领会,在整个描述中,某些项是指计算机***或相似电子计算设备的操作表示为计算机***的寄存器和存储器内的物理(电子)量的数据并且将其变换为同样表示为计算机***存储器或寄存器或其他此类信息存储器设备内的物理量的其他数据的动作和过程。
本公开还涉及一种用于执行本文中的操作的装置。该装置可以针对预期目的而专门构造,或它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适合存储电子指令的任何类型的介质,每个磁盘都耦合到计算机***总线。
本文中所提出的算法和显示器与任何特定计算机或其他设备都没有本质联系。各种其他***可以与根据本文中的教导的程序一起使用,或构造更专门的装置来执行该方法可以证明是方便的。进一步地,本公开没有参考任何特定编程语言进行描述。应当领会,可以使用多种编程语言来实现如本文中所描述的本公开的教导。
本公开可以作为计算机程序产品或软件提供,该计算机程序产品或软件可以包括其上存储有指令的机器可读介质,该机器可读介质可以用于对计算机***(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。
在上述公开中,已经参考本公开的具体示例实现方式对本公开的实现方式进行了描述。很明显,在没有背离如以下权利要求中所阐述的本公开的实现方式的更广泛精神和范围的情况下,可以对其做出各种修改。在本公开以单数时态是指一些元件的情况下,可以在附图中描绘多于一个元件并且相似元件使用相似数字标记。因此,本公开和附图被认为是说明性的而非限制性的。
Claims (20)
1.一种用于误差校正的方法,包括:
在第一设备处接收数据;
通过所述第一设备的解码器电路***对所述数据进行解码,其中所述解码包括:
确定所述数据内的第一误差位置;
与确定所述第一误差位置并行地确定所述数据内的第一误差幅度;以及
执行误差校正,以基于所述第一误差位置和所述第一误差幅度来生成经解码的数据;以及
将所述经解码的数据传输到第二设备。
2.根据权利要求1所述的方法,其中解码所述数据还包括:将所述第一误差位置与所述第一误差幅度相关联,并且其中所述误差校正基于所述第一误差位置与所述第一误差幅度之间的所述关联来执行。
3.根据权利要求1所述的方法,其中执行所述误差校正包括:基于所述第一误差位置和所述第一误差幅度来生成误差校正模式。
4.根据权利要求3所述的方法,还包括:基于指示与所述数据相关联的误差的数目为1的控制信号,来选择所生成的误差校正模式。
5.根据权利要求1所述的方法,其中:
解码所述数据还包括:
确定所述数据内的第二误差位置;
与确定所述第二误差位置并行地确定所述数据内的第二误差幅度;以及
执行所述误差校正包括:基于所述第一误差幅度和所述第二误差幅度、以及所述第一误差位置和所述第二误差位置,来生成误差校正模式。
6.根据权利要求5所述的方法,还包括:基于指示与所述数据相关联的误差的数目大于1的控制信号,来选择所生成的误差校正模式。
7.根据权利要求1所述的方法,其中解码所述数据还包括:确定所述数据内每个符号位置的误差幅度。
8.根据权利要求1所述的方法,其中所述解码器电路***包括里德-所罗门解码器。
9.根据权利要求1所述的方法,其中所述第二设备包括存储器设备。
10.一种第一设备的通信接口***,所述通信接口***包括:
解码器电路***,被配置为:
接收数据;
通过以下方式从所述数据生成经解码的数据:
在第一时段期间确定所述数据内的第一误差位置;
在第二时段期间确定所述数据内的第一误差幅度,所述第二时段和所述第一时段至少部分重叠;以及
执行误差校正,以基于所述第一误差位置和所述第一误差幅度来生成所述经解码的数据;以及
将所述经解码的数据传输到主机设备。
11.根据权利要求10所述的通信接口***,其中生成所述经解码的数据还包括:将所述第一误差位置与所述第一误差幅度相关联,并且其中执行所述误差校正包括:基于所述第一误差位置和所述第一误差幅度的所述关联,来生成误差校正模式。
12.根据权利要求11所述的通信接口***,其中所述解码器电路***还被配置为基于指示与所述数据相关联的误差的数目为1的控制信号,来选择所生成的误差校正模式。
13.根据权利要求10所述的通信接口***,其中:
生成所述经解码的数据还包括:
确定所述数据内的第二误差位置;以及
与确定所述第二误差位置并行地确定所述数据内的第二误差幅度;以及
执行所述误差校正包括:基于所述第一误差幅度和所述第二误差幅度、以及所述第一误差位置和所述第二误差位置,来生成误差校正模式。
14.根据权利要求13所述的通信接口***,其中所述解码器电路***还被配置为基于指示相关联的误差的数目大于1的控制信号,来选择所生成的误差校正模式。
15.一种***,包括:
第一设备,被配置为:
接收数据;
通过以下方式从所述数据生成经解码的数据:
确定所述数据内的第一误差位置;
与确定所述第一误差位置并行地确定所述数据内的第一误差幅度;
执行误差校正,以基于所述第一误差位置和所述第一误差幅度来生成所述经解码的数据;以及
经由接口将所述经解码的数据传输到第二设备。
16.根据权利要求15所述的***,其中生成所述经解码的数据还包括:将所述第一误差位置与所述第一误差幅度相关联,并且其中执行所述误差校正包括:基于所述第一误差位置与所述第一误差幅度之间的所述关联,来生成误差校正模式。
17.根据权利要求16所述的***,其中生成所述经解码数据还包括:基于指示与所述数据相关联的误差的数目为1的控制信号,来选择所生成的误差校正模式。
18.根据权利要求15所述的***,其中生成所述经解码的数据还包括:
确定所述数据内的第二误差位置;以及
与确定所述第二误差位置并行地确定所述数据内的第二误差幅度;以及
执行所述误差校正包括:基于所述第一误差幅度和所述第二误差幅度、以及所述第一误差位置和所述第二误差位置,来生成误差校正模式。
19.根据权利要求18所述的***,其中生成所述经解码的数据还包括:基于指示与所述数据相关联的误差的数目大于1的控制信号,来选择所生成的误差校正模式。
20.根据权利要求15所述的***,还包括存储器设备,并且其中所述第一设备被配置为从所述存储器设备接收所述数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063049814P | 2020-07-09 | 2020-07-09 | |
US63/049,814 | 2020-07-09 | ||
US17/337,979 | 2021-06-03 | ||
US17/337,979 US11651830B2 (en) | 2020-07-09 | 2021-06-03 | Low latency decoder for error correcting codes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113922825A true CN113922825A (zh) | 2022-01-11 |
Family
ID=79172947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110749932.6A Pending CN113922825A (zh) | 2020-07-09 | 2021-07-02 | 用于误差校正代码的低延迟解码器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11651830B2 (zh) |
CN (1) | CN113922825A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11750222B1 (en) | 2022-06-29 | 2023-09-05 | Synopsys, Inc. | Throughput efficient Reed-Solomon forward error correction decoding |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3352659B2 (ja) * | 2000-03-27 | 2002-12-03 | 松下電器産業株式会社 | 復号装置及び復号方法 |
US7206993B2 (en) * | 2003-03-12 | 2007-04-17 | Matsushita Electric Industrial Co., Ltd. | Method and device for decoding Reed-Solomon code or extended Reed-Solomon code |
US8386894B2 (en) * | 2009-03-23 | 2013-02-26 | Applied Micro Circuits Corporation | Parallel forward error correction with syndrome recalculation |
-
2021
- 2021-06-03 US US17/337,979 patent/US11651830B2/en active Active
- 2021-07-02 CN CN202110749932.6A patent/CN113922825A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220013187A1 (en) | 2022-01-13 |
US11651830B2 (en) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10243589B2 (en) | Multi-bit error correction method and apparatus based on a BCH code and memory system | |
US20110004812A1 (en) | Coder-decoder and method for encoding and decoding an error correction code | |
US8694872B2 (en) | Extended bidirectional hamming code for double-error correction and triple-error detection | |
US20040078411A1 (en) | Galois field arithmetic unit for use within a processor | |
US20090110109A1 (en) | Apparatus and method for generating a transmit signal and apparatus and method for extracting an original message from a received signal | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
US8671325B1 (en) | Forward error correcting code decoder method and apparatus | |
US20200081778A1 (en) | Distributed storage system, method and apparatus | |
US8612842B2 (en) | Apparatus for generating a checksum | |
KR20180085651A (ko) | 리스트 디코딩 생성을 통한 이진 bch 코드들의 bm-기반 빠른 체이스 디코딩에서 빠른 다항식 업데이트를 위한 방법을 수행하기 위한 asic | |
US8694850B1 (en) | Fast erasure decoding for product code columns | |
KR101314232B1 (ko) | 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱 | |
WO2018218125A1 (en) | Non-binary error correcting code for correcting single symbol errors and detecting double bit errors | |
CN113922825A (zh) | 用于误差校正代码的低延迟解码器 | |
US11101925B2 (en) | Decomposable forward error correction | |
US8972829B2 (en) | Method and apparatus for umbrella coding | |
US8239737B2 (en) | Data line storage and transmission utilizing both error correcting code and synchronization information | |
CN115632662B (zh) | 一种rs译码中的伴随式计算方法、装置、设备及介质 | |
CN108886369B (zh) | 用于执行里德-所罗门编码的方法和装置 | |
TW201901691A (zh) | 錯誤檢查和糾正解碼器 | |
KR102532623B1 (ko) | Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치 | |
KR20180059149A (ko) | 에러 정정 코드 디코더, 이를 포함하는 메모리 컨트롤러, 및 에러 정정 코드 디코팅 방법 | |
CN111277830A (zh) | 一种编码方法、解码方法及装置 | |
KR101636406B1 (ko) | 저지연 신드롬 계산을 위한 bch 디코더의 전처리 장치 및 방법 | |
CN103716058A (zh) | 一种基于补码的循环码译码方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |