CN114765055B - 纠错系统 - Google Patents
纠错系统 Download PDFInfo
- Publication number
- CN114765055B CN114765055B CN202110050726.6A CN202110050726A CN114765055B CN 114765055 B CN114765055 B CN 114765055B CN 202110050726 A CN202110050726 A CN 202110050726A CN 114765055 B CN114765055 B CN 114765055B
- Authority
- CN
- China
- Prior art keywords
- signal
- codes
- data
- error
- check
- 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.)
- Active
Links
- 238000012937 correction Methods 0.000 title claims abstract description 97
- 238000001514 detection method Methods 0.000 claims description 22
- 238000000034 method Methods 0.000 claims description 10
- 230000011664 signaling Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 22
- 238000013461 design Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供一种纠错系统,应用于存储系统,且纠错系统基于存储系统产生X个第一运算码、Y个第二运算码以及第三运算码;纠错系统包括错误状态判断单元以及M个译码单元;错误状态判断单元用于判断当前的错误状态,且当所述多个数据具有1位错误时,M个译码单元用于对X个第一运算码以及Y个第二运算码进行译码处理,以获取该译码单元对应的字节中是否具有出错的数据并对出错的数据的比特位进行定位。本发明实施例能够检测出1位错误并进行纠错,且还能够检测出2位错误。
Description
技术领域
本发明实施例涉及半导体技术领域,特别涉及一种纠错系统。
背景技术
半导体存储可以分为非易失性存储和易失性存储。动态随机存取存储器(DynamicRandom Access Memory,DRAM)作为易失性存储,具备存储密度高、读写速度快等优点,广泛用于各种电子系统中。
随着DRAM的制程工艺越来越先进、存储密度越来越高,DRAM中存储数据可能会发生错误,严重影响DRAM性能。因此,DRAM中通常采用纠错码(ECC,Error Checking andCorrection or Error correction Coding)技术来对存储数据的错误进行检测或修正。
发明内容
本发明实施例解决的技术问题为提供一种纠错系统,解决对存储数据进行检错和/或纠错速率慢的问题。
为解决上述问题,本发明实施例提供一种纠错系统,应用于存储系统,所述存储系统在读写操作期间写入或读取多个数据,所述多个数据分为M个字节,且每一所述字节具有N个不同比特位的数据;所述存储系统具有编码阶段以及译码阶段,且在所述译码阶段所述纠错系统基于所述存储系统产生X个第一运算码以及、Y个第二运算码以及第三运算码,所述X个第一运算码、所述Y个第二运算码以及第三运算码用于判断所述多个数据的错误状态,且当所述多个数据具有1位错误时,所述Y个第二运算码用于定位所述1位错误所属的具体字节,所述X个第一运算码用于定位该1位错误所属的具体比特位所述第一运算码用于对N个数据进行检测和/或纠错,所述第二运算码用于对M个字节进行检错和/或纠错;其中,所述纠错系统包括:错误状态判断单元,用于对所述X个第一运算码、所述Y个第二运算码以及所述第三运算码进行译码处理,以识别当前的错误状态;M个译码单元,每一所述译码单元与一所述字节对应,用于对X个所述第一运算码以及Y个所述第二运算码进行译码处理,以获取所述字节中是否具有出错的数据并对出错的数据的比特位进行定位。
另外,所述译码单元包括:译码器,用于接收所述X个第一运算码并输出N个第一译码信号,每一所述第一译码信号与N个数据的一比特位对应,N大于X;第一与门单元,用于接收Z个选中运算码,并进行逻辑与运算,所述选中运算码为,所述Y个第二运算码中与所述字节对应的所述第二运算码;或非门单元,用于接收(Y-Z)个未选运算码,并进行逻辑或非运算,所述未选运算码为所述选中运算码除外的所述第二运算码;N个第二与门单元,每一所述第二与门单元的输入端连接所述第一与门单元的输出端、所述或非门单元的输出端以及一所述第一译码信号,基于所述N个第二与门单元的输出对所述存储系统进行检错和/或纠错;其中,所述X、Y以及N均为正自然数,Z为大于等于(Y-1)/2且小于等于(Y+1)/2的整数。
另外,所述X为3,N为8,所述译码器具有3个输入端以及8个输出端;所述第二与门单元的数量为8。
另外,所述Y为5,所述第一与门单元具有3个输入端;所述第一与门单元还被配置为,若所述选中运算码的数量为2,则所述第一与门单元的一输入端连接电源。
另外,所述Y为5,所述或非门单元具有三个输入端;所述或非门单元还被配置为,若所述未选运算码的数量为2,则所述或非门单元的一输入端接地。
另外,所述纠错系统还包括:第一编码模块,被配置为,在读取操作期间以及写入操作期间的所述编码阶段,均基于每一个所述字节中的若干数据产生X个第一校验码,同一所述第一校验码对应的所述若干数据在不同所述字节中的比特位相同,且均基于若干所述字节中的所有数据产生Y个第二校验码,其中,所述X个第一校验码用于对每一所述字节中的所述N个数据进行检错和/或纠错,所述Y个第二校验码用于对所述M个字节进行检错和/或纠错,所述X和Y均为正自然数。
另外,所述第一编码模块包括:第一编码单元,被配置为,在写入操作期间,基于写入的多个数据获取X个所述第一校验码和Y个所述第二校验码;第二编码单元,被配置为,在读取操作期间,基于待读取的多个数据获取X个第一更新校验码和Y个第二更新校验码,所述第一更新校验码的获取方法与所述第一校验码的获取方法相同,所述第二更新校验码的获取方法与所述第二校验码的获取方法相同;其中,所述第一运算码基于所述第一校验码和所述第一更新校验码获取,所述第二运算码基于所述第二校验码和所述第二更新校验码获取。
另外,所述第一编码单元和所述第二编码单元为同一编码单元。
另外,所述纠错系统还包括:比较模块,所述比较模块被配置为,对所述第一校验码以及所述第一更新校验码进行异或或者同或,以获取X个所述第一运算码,且对所述第二校验码以及所述第二更新校验码进行异或或者同或,以获取Y个所述第二运算码。
另外,所述比较模块包括:X个第一比较电路,每一所述第一比较电路用于接收一所述第一校验码以及相应的所述第一更新校验码,并进行异或或者同或,以获取一所述第一运算码;Y个第二比较电路,每一所述第二比较电路用于接收一所述第二校验码以及相应的所述第二更新校验码,并进行异或或者同或,以获取一所述第二运算码。
另外,所述第一比较电路或者所述第二比较电路包括:共用模块,连接电源信号以及接地信号,并基于第一信号以及第二信号控制输出所述电源信号或者所述接地信号,所述第一信号与所述第二信号反相;第一逻辑单元,连接所述共用模块,用于接收第三信号和第四信号,所述第三信号与所述第四信号反相,并输出第一运算信号,所述第一运算信号为所述第一信号与所述第三信号的异或;第二逻辑单元,连接所述共用模块,用于接收所述第三信号和所述第四信号并输出第二运算信号,所述第二运算信号为所述第一信号与所述第三信号的同或;其中,对于所述第一比较电路,所述第一校验码作为所述第一信号,所述第一更新校验码作为所述第三信号;对于所述第二比较电路,所述第二校验码作为所述第一信号,所述第二更新校验码作为所述第三信号。
另外,所述共用模块包括:第一共用单元,连接所述电源信号,并基于所述第一信号以及所述第二信号控制输出所述电源信号;第二共用单元,连接所述接地信号,并基于所述第一信号以及所述第二信号控制输出所述接地信号;其中,所述第一逻辑单元连接在所述第一共用单元与所述第二共用单元之间,所述第二逻辑单元连接在所述第一共用单元与所述第二共用单元之间。
另外,所述第一共用单元包括:第零PMOS管,栅极接收所述第一信号,源极连接所述电源信号;第七PMOS管,栅极接收所述第二信号,源极连接所述电源信号;所述第二共用单元包括:第零NMOS管,栅极接收所述第一信号,源极连接所述接地信号;第七NMOS管,栅极接收所述第二信号,源极连接所述接地信号。
另外,所述第一逻辑单元包括:第一PMOS管,栅极接收所述第四信号,源极连接所述第零PMOS管的漏极;第一NMOS管,栅极接收所述第三信号,漏极连接所述第一PMOS管的漏极,源极连接所述第零NMOS管的漏极;第四PMOS管,栅极接收所述第三信号,源极连接所述第七PMOS管的漏极;第四NMOS管,栅极接收所述第四信号,漏极连接所述第四PMOS管的漏极,源极连接所述第七NMOS管的漏极。
另外,所述第二逻辑单元包括:第二PMOS管,栅极接收所述第三信号,源极连接所述第零PMOS管的漏极;第二NMOS管,栅极接收所述第四信号,漏极连接所述第二PMOS管的漏极,源极连接所述第零NMOS管的漏极;第五PMOS管,栅极接收所述第四信号,源极连接所述第七PMOS管的漏极;第五NMOS管,栅极接收所述第三信号,漏极连接所述第五PMOS管的漏极,源极连接所述第七NMOS管的漏极。
另外,所述纠错系统还包括:第二编码模块,被配置为,在写入操作期间,基于所述多个数据、所述X个第一校验码以及所述Y个第二校验码,获取第三校验码;还被配置为,在读取操作期间,基于待读取的多个数据、所述X个第一校验码、所述Y个第二校验码以及所述第三校验码,获取所述第三运算码。
另外,所述存储系统包括存储芯片,所述错误状态判断单元和M个所述译码单元集成在所述存储芯片内。
与现有技术相比,本发明实施例提供的技术方案具有以下优点:
本发明实施例提供一种纠错系统,应用于存储系统,且存储系统在读写操作期间写入或读取多个数据,该多个数据分为M个字节且每一字节具有N个不同比特位数据,且在译码阶段存储系统产生X个第一运算码、Y个第二运算码以及第三运算码,结合第一运算码、第二运算码以及第三运算码可判断多个数据的错误状态,第一运算码用于对N个数据进行检错和/或纠错,第二运算码用于对M个字节进行检错和/或纠错;纠错系统包括错误状态判断单元以及M个译码单元,错误状态判断单元用于对X个第一运算码、Y个第二运算码以及第三运算码进行译码处理,以识别当前的错误状态,M个译码单元中每一译码单元与一字节对应,以判断并识别该字节中是否有数据出错以及出错的数据所属的具体比特位。本发明实施例提供的纠错系统,可以检测存储系统的1位错误并纠错,并且可以检测存储系统的两位错误。
另外,本发明实施例中,每个字节对应的译码单元的电路可以设置为相同的电路,只是不同译码单元中各输入端连接的第一运算码和第二运算码不同,有利于节省纠错系统中所有译码单元的线道和面积,且可以同时对所有字节进行译码处理以进行检错和/或纠错,因此能够提高纠错系统的检错纠错速度。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本发明一实施例提供的纠错系统与存储系统的功能框图;
图2为本发明一实施例提供的纠错系统的一种结构示意图;
图3为图2中每个字节对应的译码单元的放大结构示意图;
图4为本发明实施例提供的多个数据的分类示意图以及与第一校验码、第二校验码以及第三校验码之间的关系示意图;
图5示意出了字节0对应的第一校验码的放大示意图;
图6为本发明一实施例提供的纠错系统的一种结构示意图;
图7示意出了对所有字节进行第二编码运算的原理示意图;
图8为本发明实施例提供的纠错系统中第一比较电路或者第二比较电路的功能框图;
图9为本发明实施例提供的纠错系统中第一比较电路或者第二比较电路的电路结构示意图;
图10为本发明一实施例提供的译码单元与字节对应的另一种结构示意图;
图11为图10中字节5对应的译码单元的放大结构示意图。
具体实施方式
本发明实施例提供一种纠错系统,应用于存储系统,且存储系统在读写操作期间写入或读取多个数据,该多个数据分为M个字节且每一字节具有N个不同比特位数据,且在译码阶段存储系统产生X个第一运算码、Y个第二运算码以及第三运算码,第一运算码、第二运算码以及第三运算码用于判断多个数据的错误状态,且第一运算码用于对N个数据进行检错和/或纠错,第二运算码用于对M个字节进行检错和/或纠错;纠错系统包括用于识别当前的错误状态的错误状态判断单元以及用于定位出错的数据所属的具体字节以及具体比特位的译码单元。采用本发明实施例提供的纠错系统,既能够检测出1位错误并纠正,还能够检测出2位错误。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
图1为本发明一实施例提供的纠错系统与存储系统的功能框图,图2为本发明一实施例提供的纠错系统的一种结构示意图,图3为图2中每个字节对应的译码单元的放大结构示意图。
参考图1至图3,本实施例中,纠错系统1应用于存储系统101,该存储系统101在读写操作期间写入或读取多个数据,该多个数据分为M个字节,且每一字节具有N个不同比特位的数据;存储系统101具有编码阶段以及译码阶段,且在译码阶段该纠错系统1基于存储系统101产生X个第一运算码、Y为第二运算码以及第三运算码,X个第一运算码、Y个第二运算码以及第三运算码用于判断多个数据的错误状态,且当多个数据具有1位错误时,Y个第二运算码用于定位1位错误所属的具体字节,X个第一运算码用于定位该1位错误所属的具体比特位;纠错系统1包括:错误状态判断单元30,用于对X个第一运算码、Y个第二运算码以及第三运算码进行译码处理,以识别当前的错误状态;M个译码单元31,每一译码单元31与一字节对应,用于对X个第一运算码以及Y个第二运算码进行译码处理,以获取字节中是否具有出错的数据并对出错的数据的比特位进行定位。
具体地,当前的错误状态包括:0位错误、1位错误、2位错误。可以认为,第一运算码用于对每一字节中的N个数据进行检错和/或纠错,第二运算码用于对M个字节进行检错和/或纠错。需要注意的是,本实施例中所称的第一运算码用于对每一字节中的N个数据进行检错和/或纠错,第二运算码用于对M个字节进行检错和/或纠错,应当理解为,所有的第一运算码和第二运算码共同用于对M个字节的所有数据进行检错和/或纠错,第二运算码将用于定位发生错误的数据位于M个字节中哪个字节,第一运算码将用于定位发生错误的数据位于该字节中的哪个比特位。
错误状态判断单元30用于根据第一运算码、第二运算码、第三运算码判断数据出错的位数,错误状态包括0位错误、1位错误、2位错误。具体地,在一个例子中,判断原理如下:
若第三运算码为1,且第一运算码以及第二运算码不全为0,则代表出错的数据是1位,该1位错误可能出现在数据中,也可能出现在第一校验码或者第二校验码中。此时通过译码单元31进行检错/纠错。有关译码单元31检测出出错的数据的位置的原理后续会进行详细说明,在此暂不做赘述。
若第三运算码为1,且第一运算码以及第二运算码全为0,则代表存储系统读取的数据未出错,第三校验码出错,此时可纠正也可不纠正,本领域技术人员可根据需要自行选择。
若第三运算码为0,且第一运算码和第二运算码全为0,则代表读取的数据未出错,且第一校验码、第二校验码和第三校验码均未出错。
若第三运算码为0,且第一运算码和第二运算码不全为0,则代表出错的位数为2位,此时无法进行纠正,根据需要,本领域技术人员可设计将出错信息发送给控制设备。
需要注意的是,以上描述的前提是假设最多只有2位错误的情况。
错误状态判断单元30与M个译码单元31连接,若存在1位错误(即第三运算码为1,且第一运算码以及第二运算码不全为0的情况),则可采用M个译码单元31对出错的数据进行定位。
图2中示意了2个字节对应的译码单元的结构示意图,以下将结合附图对本实施例提供的纠错系统进行详细说明。
参考图2及图3,译码单元31包括:译码器301,用于接收X个第一运算码并输出N个第一译码信号,每一第一译码信号与N个数据的一比特位对应,N大于X;第一与门单元302,用于接收Z个选中运算码,并进行逻辑与运算,选中运算码为,Y个第二运算码中与该字节对应的第二运算码;或非门单元303,用于接收(Y-Z)未选运算码,并进行逻辑或非运算,未选运算码为选中运算码外的第二运算码;N个第二与门单元304,每一第二与门单元304的输入端连接第一与门302的输出端、或非门单元303的输出端以及一第一译码信号,基于N个第二与门单元304的输出对存储系统101进行检错和/或纠错;其中,X、Y以及N均为正自然数,Z为大于等于(Y-1)/2且小于等于(Y+1)/2的整数。
本实施例中,X为3且N为8,相应的译码器301为三八译码器,该译码器301具有3个输入端以及8个输出端,且第二与门单元304的数量为8,即N为8。
由于Z为大于等于(Y-1)/2且小于等于(Y+1)/2的整数,使得第一与门单元302的输入端的数量以及或非门单元303的输入端的数量之和最小,且第一与门单元302的输入端以及或非门单元303的输入端均能得到有效利用。
在一个例子中,Y为5,则2≤Z≤3,若第一与门单元门302接收2个选中运算码,即第一与门单元302需要2个输入端,则或非门单元303接收3个未选运算码,即或非门单元303需要3个输入端;若第一与门单元302接收3个选中运算码,即第一与门单元302需要3个输入端,则或非门单元303接收2个未选运算码,即或非门单元303需要2个输入端。
在一个具体例子中,第一与门单元302具有3个输入端;第一与门单元302还被配置为,若选中运算码的数量为2,则第一与门单元302的一输入端连接电源VDD。相应的,或非门单元303具有三个输入端;或非门单元303还被配置为,若未选运算码的数量为2,则或非门单元303的一输入端接地Vss。
由于第一运算码是用于对N个数据进行检错和/或纠错,因此,若存储系统具有1位出错的数据,则通过译码器301输出的N个第一译码信号能够获知是N个不同比特位数据中哪一比特位的数据出错,但是通过N个第一译码信号无法获知是哪一个字节中的这一比特位的数据出错。
选中运算码为Y个第二运算码中与字节对应的第二运算码,此处所称的对应指的是,该字节的数据参与过该第二运算码的编码运算。具体地,Y个第二运算码中,每一第二运算码是对不同的字节中的所有数据进行编码运算得到的,可以理解的是,对于一字节而言,若该字节中的所有数据参与编码运算得到的第二运算码,定义为与该字节对应的第二运算码。不难发现,由于不同字节参与编码运算所获得第二运算码不完全相同,Y个第二运算码可用于对M个字节进行检错和/或纠错。
由于第二运算码用于对M个字节进行检错和/或纠错,对于第一与门单元302而言,与该字节对应的第二运算码即选中运算码作为第一与门单元302的输入。若存储系统具有1位出错的数据且该字节中的数据出错,则会影响到选中运算码,使得第一与门单元302的输出结果受到影响。对于或非门单元303而言,所有第二运算码中选中运算码以外的第二运算码即为未选运算码,该未选运算码作为或非门单元303的输入。若存储系统具有1位出错的数据且该字节中的数据出错,则不会影响到未选运算码,或非门单元303的输出结果不受影响;同样的,若存储系统具有1位出错的数据且该字节中的数据未出错,则会影响到未选运算码,或非门单元303的输出结果受到影响。
每个第二与门单元304连接一第一译码信号以及第一与门单元302的输出端以及或非门单元303的输出端,使得每个第二与门单元304的输出端受到该该字节中的每一比特位的数据的影响,即通过第二与门单元304的输出端能够获知该字节的对应的各比特位的数据是否出错。
举例来说,若该字节中具有1位出错的数据,且出错的数据位于第1比特位,定义与第1比特位对应的第一译码信号作为标记译码信号,那么,接收该标记译码信号的第二与门单元304的输出结果不符合预期且与其他第二与门单元304的输出结果不同,从而逆向推导出第1比特位的数据为出错的数据。若该字节中的数据均为正确的数据,则所有第二与门单元304的输出结果均相同且均符合预期,从而逆向推导出出错的数据不在该字节内。
可以理解的是,在一个例子中,存储系统101包括存储芯片,错误状态判断单元30以及M个译码单元31均可以集成在存储芯片内。
本实施例提供的纠错系统1,每个字节对应的译码单元31的电路可以设置为相同的电路,只是不同译码单元31中各输入端连接的第一运算码和第二运算码不同,有利于节省纠错系统中所有译码单元的线道和面积,且可以同时对所有字节进行译码处理以进行检错和/或纠错,因此能够提高纠错系统的检错纠错速度。
以下将结合存储系统的工作原理对纠错系统进行进一步的说明。
具体地,存储系统101可以为DRAM,例如可以为DDR4、LPDDR4、DDR5或者LPDDR5;存储系统101可以为其他类型的存储系统,例如为例如NAND、NOR、FeRAM、PcRAM等非易失性存储器。
对于该存储系统101而言,将数据划分为不同的字节,通常的,字节是数据处理的基本单位。以字节为单位存储和解释信息,规定1个字节由8个二进制位构成,即1个字节等于8个比特,8比特中每个比特具有相应的比特位,即1Byte=8bit。基于此,本实施例中,N为8,以使每个字节中的比特位最大化,因而有利于提高比较系统20所需电路的利用率。可以理解的是,在其他实施例中,N也可以为其他合适的正整数。
以存储系统101在单次读写操作期间传输的数据为128位(即128比特位)作为示例,则M为16,N为8。需要说明的是,在其他实施例中,根据存储系统在读写操作期间传输的数据位数的不同,M也可以其他合适的正整数,满足M*N与读写操作期间传输的数据的位数相等即可。
图4为本实施例提供的多个数据的分类示意图以及与第一校验码、第二校验码以及第三校验码之间的关系示意图,N个数据中每一数据的比特位不同。具体地,如图4所示,对于每一字节,N个数据具有按照自然数递增的从第0至第7的比特位;对于所有字节,M个字节划分为从第0按照自然数递增至第15的16个字节。另外,对于不同的字节而言,字节内具有的N个数据均具有从第0递增至第7的8个比特位。需要说明的是,由于位置的限制,图4中实际应该为同一个行的表格拆分成了三个表格,实际为一个完整的表格。为便于图示,图5示意出了字节0对应的第一校验码的放大示意图。
图6为本发明一实施例提供的纠错系统的一种结构示意图。
参考图6,纠错系统1还包括:第一编码模块102,被配置为,在读取操作期间以及写入操作期间的编码阶段,均基于每一个字节中的若干数据产生X个第一校验码,同一第一校验码对应的若干数据在不同字节中的比特位相同,且均基于若干字节中的所有数据产生Y个第二校验码,其中,X个第一校验码用于对每一字节中的N个数据进行检错和/或纠错,Y个第二校验码用于对M个字节进行检错和/或纠错,X和Y均为正自然数。
第一校验码用于对每一字节中的N个数据进行检错和/或纠错,第二校验码用于对M个字节进行检错和/或纠错,这种检错纠错的编码方式不仅能够实现ECC,且还能够使用更少的硬件电路来实现ECC,有利于降低存储系统的功耗且优化ECC的速度以及结果。
需要注意的是,本实施例中所称的第一校验码用于对每一字节中的N个数据进行检错和/或纠错,第二校验码用于对M个字节进行检错和/或纠错,应当理解为,所有的第一校验码和第二校验码共同用于对M个字节的所有数据进行检错和/或纠错,第二校验码将用于定位发生错误的数据位于M个字节中哪个字节,第一校验码将用于定位发生错误的数据位于该字节中的哪个比特位。
本实施例中,第一编码模块102利用奇偶校验(Parity Check)原理产生第一校验码和第二校验码,相应的,第一校验码和第二校验码均为奇偶校验码。具体地,第一编码模块102包括:第一编码单元112,被配置为,在写入操作期间,基于写入的多个数据获取X个第一校验码和Y个第二校验码;第二编码单元122,被配置为,在读取操作期间,基于待读取的多个数据获取X个第一更新校验码和Y个第二更新校验码,第一更新校验码的获取方法与第一校验码的获取方法相同,第二更新校验码的获取方法与第二校验码的获取方法相同;其中,第一运算码基于第一校验码和第一更新校验码获取,第二运算码基于第二校验码和第二更新校验码获取。
X个第一校验码构成X位第一二进制数;其中,2X≥N,且每一第一校验码由所有字节中的若干数据进行第一编码运算得到,且每一第一校验码所对应的若干数据对应字节中不同的比特位组合。也就是说,每一第一校验码选取每一字节中的多个比特位的数据进行第一编码运算得到,且对于同一第一校验码而言所有字节中被选中的比特位组合相同,对于不同的第一校验码而言N个数据中被选中的比特位组合不同。
其中,N个数据具有从第0按照自然数递增至第N-1的比特位,且每一比特位被选中进行第一编码运算所得到的第一校验码不完全相同。具体地,不同的第一校验码基于所有字节中不同的数据进行第一编码运算得到,以使得对于不同的第一校验码而言,影响第一校验码的结果的比特位不同。同时,由于2X≥N,可以使得每一比特位被选中进行第一编码运算得到的第一校验码不完全相同,以便通过分析,可以获取是哪一个比特位对应的数据发生了错误。
本实施例中,X为3,既能够满足不同比特位的数据的错误均能够被指示出来,且还能够减小第一编码单元112的硬件电路的复杂性。
在一个具体例子中,3个第一校验码按照比特位从低位到高位的排序包括第0位第一校验码、第1位第一校验码以及第2位第一校验码,N个数据具有从第0按照自然数递增至第N-1的比特位,举例来说:对于第0比特位,其未参与任何一个第一校验码对应的第一编码运算;对于第1比特位,其参与了第0位第一校验码对应的第一编码运算;对于第2比特位,其参与了第1位第一校验码对应的第一编码运算;对于第3比特位,其参与了第0位以及第1位第一校验码对应的第一编码运算;对于第4比特位,其参与了第2位第一校验码对应的第一编码运算;对于第5比特位,其参与了第0位以及第2位第一校验码对应的第一编码运算;对于第6比特位,其参与了第1以及第2位第一校验码对应的第一编码运算;对于第7比特位,其参与了第0、第1以及第2位第一校验码对应的第一编码运算。应当理解的是,本领域内的技术人员可以根据需要,设置第一校验码的数目,以及其他的编码运算关系,只要满足每一比特位被选中进行第一编码运算得到的第一校验码不完全相同即可。
本实施例中,第一编码运算为异或;相应的,第一编码单元112被配置为,在X位第一二进制数中,处于最低比特的第一校验码为所有字节中第1、第3、第5以及第7比特位的数据的异或,处于最高比特的第一校验码为所有字节中第4、第5、第6以及第7比特位的数据的异或,处于中间比特的第一校验码为所有字节中第2、第3、第6以及第7比特位的数据的异或。
需要说明的是,在其他实施例中,第一编码运算还可以为同或;相应的,第一编码单元被配置为,在X位二进制数中,处于最低比特的第一校验码为所有字节中第1、第3、第5以及第7比特位的数据的同或,处于最高比特的第一校验码为所有字节中第4、第5、第6以及第7比特位的数据的同或,处于中间比特的第一校验码为所有字节中第2、第3、第6以及第7比特位的数据的同或。
以下将结合图4和图5对第一校验码的生成原理进行说明。
如图4和图5所示,“×”表示当前参与这一行的编码运算,即进行同或或者异或;且128位数据分到了第0至第15共16个字节,每个字节有8个比特位。p10、p11以及p12代表了三个第一校验码;p13、p14、p15、p16以及p17代表了5个第二校验码;pc0至pc7代表了进行编码运算时p10至p17对应采用的8个运算式。在每一行中,所有标“×”的位置表示这一列对应的数据需要在这个运算式里参与异或或者同或。第一校验码和第二校验码与pb对应。
在写入操作期间的编码阶段的第一编码运算或第二编码运算时,利用pc0至pc7这8个运算式进行第一编码运算或第二编码运算,运算的结果分别存至p10至p17中,且p10至p17不参与第一编码运算或第二编码运算;在译码阶段时,各行对应的运算式不变,且存储的p10至p17需要参与运算,因此图4的表格中p10至p17对应标记有“×”,关于这一点,后续会进行详细说明。
具体地,在写入操作期间的编码阶段:对于每一个字节,将这个字节中的第1、3、5、7位的数据进行异或或者同或,再将16个字节的所有异或结果或者同或结果进行异或或者同或,即为pc0运算式,运算的结果给到p10。对于每一个字节,将这个字节中的第2、3、6、7位的数据进行异或或者同或,再将16个字节的所有异或结果或者同或结果进行异或或者同或,即为pc1运算式,运算的结果给到p11。对于每一个字节,将这个字节中的第4、5、6、7位的数据进行异或或者同或,再将16个字节的所有异或结果或者同或结果进行异或或者同或,即为pc2运算式,运算的结果给到p12。
p10、p11以及p12构成第一二进制数,且p10为最低位且p12为最高位。在存储器的多个数据中只有一位数据发生错误的前提下,不难发现:
如果第0比特位的数据发生错误,由于第0比特位未参与pc0、pc1以及pc2这三个运算式,则第一校验码p10、p11以及p12均未受到影响;
如果第1比特位的数据发生错误,由于第1比特位参与pc0这个算式而未参与pc1以及pc2两个运算式,第一校验码p10受到影响,而第一校验码p11以及p12未受到影响;
如果第2比特位的数据发生错误,由于第2比特位参与pc1这个运算式,则第一校验码p10和p12未受到影响,第一校验码p11受到影响;
如果第3比特位的数据发生错误,由于第3比特位参与pc0以及pc1两个运算式,则第一校验码p10以及p11均受到影响,第一校验码p12未受到影响;
依次类推,如果第7比特位的数据发生错误,由于第7比特位参与pc0、pc1以及pc2三个运算式,则第一校验码p10、p11以及p12均受到影响。
需要注意的是,此处所说特定数据发生错误后特定第一校验码受到影响的意思是,在特定数据发生错误后,若重新进行第一编码运算得到的该特定第一校验码,会与数据发生错误前形成的该第一校验码不同。
可以理解的是,对于每一运算式而言,由于不同字节中的参与第一编码运算的比特位是相同的,因此通过第一校验码可以获取是哪一个比特位的数据发生了错误,但是并不能检测是哪一个字节中相应比特位的数据发生错误。因此,还需要通过第二校验码以获取是哪一个字节中的相应比特位的数据发生错误。
Y个第二校验码构成Y位第二二进制数,其中,2Y≥M,且每一第二校验码由若干字节进行第二编码运算得到。
2Y≥M,以保证每一字节参与第二编码运算所得到的第二校验码不完全相同。具体地,不同的第二校验码基于不同的若干字节进行第二编码运算得到,以使得对于不同的第二校验码而言,影响第二校验码的结果的字节不同,以便于综合分析以获取是哪一个字节中的数据发生了错误。再结合是字节中哪一个比特位发生了错误,以最终判断出是哪一个字节中的哪一个比特位的数据发生错误。需要注意的是,此处所说的影响第二校验码的结果中的“影响”意思与前面所述的“影响”含义相同。
本实施例中,Y为5,既能够满足不同字节的数据的错误均能够被指示出来,且还能够减小第一编码单元112的硬件电路的复杂性。第二编码运算可以为异或,相应的,第一编码单元112可以被配置为,包括:第一级运算单元,用于对选中的两个字节的所有数据进行异或,并存储若干第一运算结果,每一第一运算结果为选中的两个字节的异或结果;第二级运算单元,用于对至少两个第一运算结果进行异或,并产生第二校验码,并基于不同的编码需求产生Y个第二校验码。通过对第一编码单元112的特殊设计,第二级运算单元可以重复使用第一级运算单元的第一运算结果,使得第一编码单元112可以通过更少的硬件电路来实现,从而降低存储系统的功耗。
在其他实施例中,第一编码运算也可以为同或,相应的,第一编码单元可以被配置为,包括:第一级运算单元,用于对选中的两个字节的所有数据进行同或,并存储若干第一运算结果,每一第一运算结果为选中的两个字节的同或结果;第二级运算单元,用于对至少两个第一运算结果进行同或,并产生所述第二校验码,并基于不同的编码需求产生Y个第二校验码。
具体地,如图4所示,在写入操作期间的编码阶段,对于每一个字节,将这个字节中的所有8个比特位的数据进行异或,得到这个字节的异或结果;然后将总共16个字节的16个异或结果,根据pc3至pc7这5个运算式进行第二编码运算,即每一行的表格中标示“×”的数据均参与运算,相应得到第二校验码pc13至pc17。可以理解的是,在编码阶段第二校验码pc13至pc17不参与编码运算,在后续的解码阶段(或称为译码阶段)第二校验码pc13至pc17也需要参与运算,因此在图4中第二校验码pc13至pc17相应也标示有“×”,关于这一点后续会说明,在此不做赘述。
本实施例中,M个字节按照自然数递增分为第0至第15个字节;Y个第二校验码按照自然数递增分为第3至第7个第二校验码;5个第二校验码的获取方式分别如下:
第3个第二校验码(对应图4中的p13)为:第0、第2、第3、第4、第5、第6以及第8个字节的所有数据的异或或者同或;第4个第二校验码(对应图4中的p14)为:第0、第1、第4、第5、第7、第9、第10以及第12个字节的所有数据的异或或同或;第5个第二校验码(对应图4中的p15)为:第1、第2、第4、第6、第9、第11、第13以及第14个字节的所有数据的异或或同或;第6个第二校验码(对应图4中的p16)为:第3、第5、第6、第7、第10、第11、第14以及第15个字节的所有数据的异或或同或;第7个第二校验码(对应图4中的p17)为:第8、第9、第10、第11、第12、第13以及第15个字节的所有数据的异或或同或。
需要说明的是,每一第二校验码均是异或运算获得的;或者,每一第二校验码均是同或运算获得的。
第一编码单元112中用于获取第二校验码对应的电路被设计为:将字节0和字节4的异或结果进行异或,得到结果0_4;将字节2和字节6的结果进行异或,得到结果2_6;将字节3和字节5的结果进行异或,得到结果3_5;将字节1和字节5的结果进行异或,得到结果1_5;将字节1和字节4的结果进行异或,得到结果1_4。
不难发现,如图7所示,图7示意出了对所有字节进行第二编码运算的原理示意图,相较于字节0至7而言,可以使用同样的一套电路完成对字节8到字节15的运算,即只是改变输入,可以对字节8到字节15进行同样的运算,得到结果9_13、结果10_12、结果11_15、结果10_14、结果11_14。此外,除了这些可以使用同样的电路的运算,还需要将字节6和字节7进行异或,得到结果6_7,将字节7和字节9的结果进行异或,得到结果7_9。
按照pc3至pc7的运算式要求进行异或:例如根据运算式pc3,将结果0_4、结果2_6、结果3_5以及字节8的异或结果进行异或,得到第二校验码p13;根据运算式pc4,将结果0_4、结果1_5、结果7_9以及结果10_12进行异或,得到第二校验码p14;关于第二校验码p15、p16以及p17的获取方式不再一一具体说明。可以理解的是,结果0_4、结果2_6等都可以重复使用,以节省电路资源。
此外,本实施例中,第一编码单元112还可以被配置为,对于每一字节,参与第二编码运算的次数为a,a满足:(Y-1)/2≤a≤(Y+1)/2,且a为正整数。通过这样的设置,在进行后续的译码阶段所需的译码电路中,电路的线路和面积能够得到减少,且还有利于提升译码速度。
由前述分析可知,在写入操作期间,利用第一编码单元112进行第一编码运算获取第一校验码,利用第一编码单元112进行第二编码运算获取第二校验码。由于第一更新校验码的获取方法与第一校验码的获取方法相同,第二更新校验码的获取方法与第二校验码的获取方法相同,本实施例不再对第二编码单元122进行赘述。
本实施例中,在读取操作期间,利用第二编码单元122进行第一编码运算获取第一更新校验码,利用第二编码单元122进行第二编码运算获取第二更新校验码。相应的,第一编码单元112和第二编码单元122可以为同一编码单元。
第一运算码基于第一校验码和第一更新校验码获取,第二运算码基于第二校验码和第二更新校验码获取。具体地,基于第一校验码和第一更新校验码进行比较产生第一运算码,基于第二校验码和第二更新校验码进行比较产生第二运算码。相应的,参考图6,纠错系统还包括:比较模块103,比较模块103被配置为,对第一校验码以及第一更新校验码进行异或或者同或,以获取X个第一运算码,且对第二校验码以及第二更新校验码进行异或或者同或,以获取Y个第二运算码。
更具体地,结合参考图4以及前述对第一校验码和第二校验码的产生原理的说明。对于第一运算码p20而言,利用pc0运算式,将接收到的每个字节中的不同比特位的数据、以及第一校验码p10进行异或或者同或,得到第一运算码p20;利用pc1运算式,将接收到的每个字节中的不同比特位的数据、以及第一校验码p11进行异或或者同或,得到第一运算码p21;利用pc2运算式,将接收到的每个字节中的不同比特位的数据、以及第一校验码p12进行异或或者同或,得到第一运算码p22。第一运算码和第二运算码在图2中与PB对应。
同样的,对于第二校验码和第二运算码而言,在译码阶段的编码运算,需要在前述的编码阶段的编码运算基础上,分别再异或第二校验码p13、p14、p15、p16或者p17,相应的获得第二运算码p23、p24、p25、p26或者p27。
p20、p21以及p22构成第三二进制数,且p20为最低位且p22为最高位。在多个数据中只有一位数据发生错误的前提下,若第三编码运算为异或的话(在其他实施例中也可以为同或),不难发现:
如果第0比特位的数据发生错误,由于第0比特位未参与pc0、pc3以及pc3这三个算式,则第一运算码p20、p21以及p22均未受到影响,三个第一运算码均为0,则第三二进制数000对应的十进制数为0,以检测出第0比特位的数据发生错误。
如果第1比特位的数据发生错误,由于第一比特位参与pc0这个运算式而未参与pc1以及pc2两个运算式,第一运算码p20受到影响为1,而第一运算码p21以及p22未受到影响为0,则第三二进制数为001对应的十进制数为1,以检测出第1比特位的数据发生错误;
如果第2比特位的数据发生错误,由于第2比特位参与pc1这个运算式,则第一运算码p20为0,第一运算码p21为1,p12为0,则第三二进制数为010对应的十进制数为2,以检测出第2比特位的数据发生错误;
如果第3比特位的数据发生错误,由于第3比特位参与pc0以及pc1两个运算式,则第一运算码p20以及p21均为1,p12为0;则第三二进制数为011对应的十进制数为3,以检测出第3比特位的数据发生错误;
依次类推,如果第7比特位的数据发生错误,由于第7比特位参与pc0、pc1以及pc2三个运算式,则第一运算码p20、p21以及p22均为1;则第三二进制数111对应的十进制数为7,以检测出第7比特位的数据发生错误。
此外,纠错系统1还包括:第二编码模块202,被配置为,在写入操作期间,基于多个数据、X个第一校验码以及Y个第二校验码,获取第三校验码。
具体地,第三校验码由多个数据、X个第一校验码以及Y个第二校验码进行第五编码运算得到。本实施例中,第五编码运算为异或;相应的,第二编码模块202被配置为,对多个数据、X个第一校验码以及Y个第二校验码进行异或运算,以生成第三校验码。在写入操作期间,纠错系统1既存储多个数据、X个第一校验码以及Y个第二校验码,且还存储第三校验码。
后续第一校验码、第二校验码以及第三校验码共同用于判断出错的数据的位数。具体地,后续在读取数据期间会基于多个数据、第一校验码、第二校验码以及第三校验码生成第三运算码,由于所有数据、第一校验码、第二校验码以及第三校验码均参与了生成第三运算码的运算,若第三运算码为0则代表没有错误或者有2位错误(假设最多只有2位出错的情况),但是仅根据第三运算码难以判断数据是否出错;若第三运算码为1,则代表有1位错误,但是仅根据第三运算码难以判断是数据出错还是第一校验码、第二校验码或者第三校验码出错。可以理解的是,在其他实施例中,若0表示出错且1表示未出错,则第三运算码为1则代表没有错误或者有2位错误,若第三运算码为0,则代表有1位错误。
以下将结合图4对第三校验码的生成原理进行说明。
如图4所示,p18代表了第三校验码且pc8代表了进行第五编码运算时采用的运算式。具体地,先进行第一编码运算和第二编码运算以生成第一校验码p10-p12以及第二校验码p13-p17,然后对所有数据、第一校验码p10-p12以及第二校验码p13-p17进行第五编码运算,得到第三校验码。
更具体地,在编码阶段,对每一字节中的所有数据进行异或或者同或,再将异或结果或者同或结果与第一校验码p10-p12以及第二校验码p13-p17进行异或或者同或,即为pc8运算式,运算的结果给到p18以生成第三校验码。
另外,第二编码模块202还被配置为,在读取操作期间,基于待读取的数据、X个第一校验码、Y个第二校验码以及第三校验码,获取第三运算码。具体地,在译码阶段,接收传输的多个数据、X个第一校验码、Y个第二校验码以及第三校验码,并基于多个数据、X个第一校验码、Y个第二校验码进行第六编码运算产生第三运算码。
结合参考图4以及前述对第三校验码的产生原理的说明,具体地,利用pc8运算式,将接收到的所有数据、X个第一校验码、Y个第二校验码以及第三校验码p18进行第六编码运算,得到第三运算码p28。
结合第一运算码、第二运算码以及第三运算码能够判断出错的数据的位数是0为、1位还是2位。
具体地,比较模块103包括:X个第一比较电路(未图示),每一第一比较电路用于接收一第一校验码以及相应的第一更新校验码,并进行异或或者同或,以获取一第一运算码;Y个第二比较电路(未图示),每一第二比较电路用于接收一第二校验码以及相应的第二更新校验码,并进行异或或者同或,以获取一第二运算码。
此外,比较模块103还可以包括:第三比较电路(未图示),用于接收多个数据、X个第一运算码、Y个第二运算码以及第三校验码,并进行异或或者同或,以获取第三运算码。
图8为本实施例提供的纠错系统中第一比较电路或者第二比较电路的功能框图,图9为本实施例提供的纠错系统中第一比较电路或者第二比较电路的电路结构示意图。
本实施例中,参考图8,第一比较电路或者第二比较电路包括:共用模块(未标示),连接电源信号Vcc以及接地信号Vss,并基于第一信号B以及第二信号BN控制输出电源信号Vcc或者接地信号Vss,第一信号B与第二信号BN反相;第一逻辑单元23,连接共用模块,用于接收第三信号A和第四信号AN,第三信号A和第四信号AN反相,并输出第一运算信号Y,第一运算信号Y为第一信号B与第三信号A的异或;第二逻辑单元24,连接共用模块,用于接收第三信号A和第四信号AN并输出第二运算信号YN,第二运算信号YN为第一信号B与第三信号A的同或。其中,对于第一比较电路,第一校验码作为第一信号,第一更新校验码作为第三信号;对于第二比较电路,第二校验码作为第一信号,第二更新校验码作为第三信号。
本实施例中,参考图8,共用模块包括:第一共用单元21,连接电源信号Vcc,并基于第一信号B以及第二信号BN控制输出电源信号Vcc;第二共用单元22,连接接地信号Vss,并基于第一信号B以及第二信号BN控制输出接地信号Vss;其中,第一逻辑单元23连接在第一共用单元21以及第二共用单元22之间,第二逻辑单元24连接在第一共用单元21以及第二共用单元22之间。
具体地,参考图9,第一共用单元21包括:第零PMOS管MP0,栅极接收第一信号B,源极连接电源信号Vcc;第七PMOS管MP7,栅极接收第二信号BN,源极连接电源信号Vcc。第一信号B为高电平、第二信号BN为低电平时,第零PMOS管MP0截止且第七PMOS管MP7导通;第一信号B为低电平、第二信号BN为高电平时,第零PMOS管MP0导通且第七PMOS管MP7截止。
第二共用单元22包括:第零NMOS管MN0,栅极接收第一信号B,源极连接接地信号Vss;第七NMOS管MN7,栅极接收第二信号BN,源极连接接地信号Vss。第一信号B高电平、第二信号BN为低电平时,第零NMOS管MN0导通且第七NMOS管MN7截止;第一信号B低电平、第二信号BN为高电平时,第零NMOS管MN0截止且第七NMOS管MN7导通。
本实施例中,第一逻辑单元23包括:第一PMOS管MP1,栅极接收第四信号AN,源极连接第零PMOS管MP0的漏极;第一NMOS管MN1,栅极接收第三信号A,漏极连接第一PMOS管MP1的漏极,源极连接第零NMOS管MN0的漏极;第四PMOS管MP4,栅极接收第三信号A,源极连接第七PMOS管MP7的漏极;第四NMOS管MN4,栅极接收第四信号AN,漏极连接第四PMOS管MP4的漏极,源极连接第七NMOS管MN7的漏极。
第二逻辑单元24包括:第二PMOS管MP2,栅极接收第三信号A,源极连接第零PMOS管MP0的漏极;第二NMOS管MN2,栅极接收第四信号AN,漏极连接第二PMOS管MP2的漏极,源极连接第零NMOS管MN0的漏极;第五PMOS管MP5,栅极接收第四信号AN,源极连接第七PMOS管MP7的漏极;第五NMOS管MN5,栅极接收第三信号A,漏极连接第五PMOS管MP5的漏极,源极连接第七NMOS管MN7的漏极。
此外,第一PMOS管MP1的漏极与第四PMOS管MP4的漏极连接,输出第一运算信号Y;第二PMOS管MP2的漏极与第五PMOS管MP5的漏极连接,输出第二运算信号YN。
用于实现异或逻辑的第一逻辑单元23以及用于实现同或逻辑的第二逻辑单元24连接同一共用模块,因而可以减小共用模块的电路结构占用的面积,以便于能够将第一逻辑单元23和第二逻辑单元24对应的电路面积设置的更大一些,从而提高第一逻辑单元23以及第二逻辑单元24具有的驱动能力,进而提高比较电路进行同或运算以及异或运算的运算速率,进而有利于提高纠错系统的检错和/或纠错速率。
以下将结合上述提及的纠错系统产生第一校验码、第二校验码、第一运算码以及第二运算码对译码单元31进行更进一步的说明。图10为本发明一实施例提供的译码单元与字节对应的另一种结构示意图,图11为图10中字节5对应的译码单元的放大结构示意图。
参考图10以及图11,本实施例中,X为3,且N为8;相应的,译码器301具有3个输入端以及8个输出端,且第二与门单元304的数量为8。具体地,译码器301为三八译码器,三个输入端分别接收三个第一运算码,八个输出端输出的8个第一译码信号,且每一第一译码信号分别表征同一字节中8个比特位的数据的情况。
图10中以p20、p21以及p22标示第一运算码,以p23、p24、p25、p26以及p27标示第二运算码。具体地,每一译码单元31对X个第一运算码和Y个第二运算码进行译码处理。也就是说,译码单元31的数量与字节的数量相同。
需要说明的是,图11中仅示意出了一个第一译码信号与一个第二与门单元304的连接关系。
本实施例中,X为3且N为8,译码器301为三八译码器;该译码器301具有3个输入端以及8个输出端;三个输入端分别接收三个第一运算码,八个输出端输出的8个第一译码信号,且每一第一译码信号分别表征同一字节中8个比特位的数据的情况。
具体地,第一运算码p20、p21以及p22为0或者1,且输出端以0至7进行标示。若第0比特位发生错误,第0比特位未参与第一运算码的编码运算,则p20、p21以及p22均为0,相应的“0”输出端为1且其余输出端均为0;若第1比特位发生错误,则p20为1且p21以及p22为0,相应的“1”输出端为1且其余输出端均为0;依次类推,若第7比特位发生错误,则p20、p21以及p22均为1,相应的“7”输出端为1且其余输出端均为0。
需要说明的是,在其他实施例中,根据第一校验码和每个字节中比特位的数量的不同,也可以合理设置译码器的输入端的数量以及输出端的数量。
第一与门单元302具有的特性为,若输入端均为1则输出端为1,若输入端中具有一个或多个0则输出端为0。本实施例中,第一与门单元302具有三个输入端;第一与门单元302还被配置为,若选中运算码的数量为2,则第一与门单元302的一输入端连接电源VDD。
或非门单元303具有的特性为,若输入端均为0则输出为1,若输入端具有一个或者多个1则输出端为0。本实施例中,或非门单元303具有三个输入端;或非门单元303还被配置为,若未选运算码的数量为2,则或非门单元303的一输入端接地Vss。
具体地,选中运算码对应为,对于这一字节而言,与之对应的所述第二校验码经由比较后得到的第二运算码;未选运算码对应为,对于这一字节而言,除与之对应的第二校验码外的其余第二校验码经由比较得到的第二运算码。
例如,对于字节0而言,第二运算码p23和p24为与字节0对应的第二检验码p13和p14进行过比较获得的第二运算码,则第二运算码p23和p24输入至第一与门单元302的输入端,其余第二运算码p25、p26以及p27输入至或非门单元303的输入端;对于字节1而言,第二运算码p24以及p25为与字节1对应的第二校验码p14和p15进行过比较获得的第二运算码,则第二运算码p24和p25输入至第一与门单元302的输入端,其余第二运算码p23、p26以及p27输入至或非门单元303的输入端;对于字节4而言,则第二运算码p23、p24和p25输入至第一与门单元302的输入端,其余第二运算码p26以及p27输入至或非门单元303的输入端。关于其他字节的情况,不再一一列举。
第二与门单元304的数量与同一字节中的比特位的数量相同。本实施例中,N为8,则相应具有8个第二与门单元304,且根据8个第二与门单元304的输出判断该字节中是否具有出错的数据以及是哪个比特位发生错误。
不难发现,本实施例中,对于每个字节而言译码单元31的电路都是一样的,只是输入端的接线不同,且每个字节对应的第一与门单元302和或非门单元303的输入端的接线由图4中的pc3至pc7这5个运算算式决定,对于每一个字节,将与之对应的所述第二校验码经由比较后得到的第二运算码连接到第一与门单元302的输入端,将除与之对应的第二校验码外的其余第二校验码经由比较所得到的第二运算码连接到或非门单元303的输入端;此外,没有用到的第一与门单元302的输入端连接电源VDD,没有用到的或非门单元303的输入端接地Vss;且第一运算码连接译码器301的输入端。因此,译码单元301只用到了8根走线连接输入端,每根走线传输一第一运算码或一第二运算码,从而节省了线道和面积,同时有利于提升译码速度。
为了便于理解译码单元31,以字节5对应的译码单元作为示例,以下将结合译码单元31的工作原理对译码单元31进行更详细的说明。
若8个第二与门单元304的输出均为0,则表示该字节中所有的数据均未出错。
若8个第二与门单元304的输出具有1个1,则表示该字节中一比特位的数据发生了错误。具体地,该字节的数据出错,第二运算码p23、p24以及p26均为1且第一与门单元302的输出为1,未选运算码p25以及p27均为0且或非门单元303的输出为1;此时,看N个第二与门单元304中哪一个第一译码信号对应的第二与门单元304的输出为1,则这一第一译码信号对应的比特位的数据发生错误。
可以理解的是,本实施例中,以第一译码信号为1则对应的比特位的数据发生错误作为示例,且第一译码信号为0则对应的比特位的数据未发生错误。在其他实施例中,也可以设置为,第一译码信号为0则对应的比特位的数据发生错误,且第一译码信号为1则对应的比特位的数据未发生错误,相应的,其他部分本领域技术人员可根据需要自行设计,比如第一译码信号连接到或非门电路并输出等。
需要注意的是,若M个字节中所有的数据均未出错,仅X个第一校验码中的1位发生错误,则第一运算码中会有一个为1,进而译码器301的其中一个输出为1,但是由于Y个第二校验码未发生错误,则所有的第二运算码均为0,进而第一与门单元302的输出为0,第二与门单元304的输出也均为0,表示M个字节中所有数据均未出错。若M个字节中所有的数据均未出错,仅Y个第二校验码中的1位发生错误,第一运算码均为0,进而译码器301的输出端为1,但是由于其余Y-1个第二校验码均未发生错误,则与之对应的Y-1个第二运算码为0,则第一与门单元302的输出为0,进而第二与门单元304的输出也均为0,表示M个字节中所有数据均未出错。
本实施例提供一种结构性能优越的纠错系统,通过对纠错系统的特殊设计实现ECC,既能够对1位错误进行检测并纠正(若该1位错误位于数据中而非校验码中),还能够对2位错误进行检测,且还能够减少硬件电路,从而降低纠错系统的功耗且提升编码速度以及译码速度。此外,通过对第一校验码和第二校验码的特殊设计,使得对于所有数据组合的编码时间的差异小,且对于所有数据组合的译码时间的差异也很小,从而降低了对控制电路的要求。
此外,本发明实施例中,每个字节对应的译码单元的电路可以设置为相同的电路,只是不同译码单元中各输入端连接的第一运算码和第二运算码不同,有利于节省纠错系统中所有译码单元的线道和面积,且可以同时对所有字节进行译码处理以进行检错和/或纠错,因此能够提高纠错系统的检错纠错速度。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各自更动与修改,因此本发明的保护范围应当以权利要求限定的范围为准。
Claims (17)
1. 一种纠错系统,其特征在于,应用于存储系统,所述存储系统在读写操作期间写入或读取多个数据,所述多个数据分为M个字节,且每一所述字节具有N个不同比特位的数据;所述存储系统具有编码阶段以及译码阶段,且在所述译码阶段所述纠错系统基于所述存储系统产生X个第一运算码、Y个第二运算码以及第三运算码,所述X个第一运算码、所述Y个第二运算码以及第三运算码用于判断所述多个数据的错误状态;当所述第三运算码为第一逻辑值时,所述第三运算码用于表征所述多个数据具有0位错误或者具有2位错误;当所述第三运算码为第二逻辑值时,所述第三运算码用于结合所述X个第一运算码以及所述Y个第二运算码的逻辑值, 判断出所述多个数据是否具有1位错误,其中,第一逻辑值和第二逻辑值不同;且当所述多个数据具有1位错误时,所述Y个第二运算码用于定位所述1位错误所属的具体字节,所述X个第一运算码用于定位该1位错误所属的具体比特位;其中,所述纠错系统包括:
错误状态判断单元,用于对所述X个第一运算码、所述Y个第二运算码以及所述第三运算码进行译码处理,以识别当前的错误状态;
M个译码单元,每一所述译码单元与一所述字节对应,用于对X个所述第一运算码以及Y个所述第二运算码进行译码处理,以获取所述字节中是否具有出错的数据并对出错的数据的比特位进行定位。
2.根据权利要求1所述的纠错系统,其特征在于,所述译码单元包括:
译码器,用于接收所述X个第一运算码并输出N个第一译码信号,每一所述第一译码信号与N个数据的一比特位对应,N大于X;
第一与门单元,用于接收Z个选中运算码,并进行逻辑与运算,所述选中运算码为,所述Y个第二运算码中与所述字节对应的所述第二运算码;
或非门单元,用于接收(Y-Z)个未选运算码,并进行逻辑或非运算,所述未选运算码为所述选中运算码除外的所述第二运算码;
N个第二与门单元,每一所述第二与门单元的输入端连接所述第一与门单元的输出端、所述或非门单元的输出端以及一所述第一译码信号,基于所述N个第二与门单元的输出对所述存储系统进行检错和/或纠错;
其中,所述X、Y以及N均为正自然数,Z为大于等于(Y-1)/2且小于等于(Y+1)/2的整数。
3.根据权利要求2所述的纠错系统,其特征在于,所述X为3,N为8,所述译码器具有3个输入端以及8个输出端;所述第二与门单元的数量为8。
4.根据权利要求2所述的纠错系统,其特征在于,所述Y为5,所述第一与门单元具有3个输入端;所述第一与门单元还被配置为,若所述选中运算码的数量为2,则所述第一与门单元的一输入端连接电源。
5.根据权利要求2或4所述的纠错系统,其特征在于,所述Y为5,所述或非门单元具有三个输入端;所述或非门单元还被配置为,若所述未选运算码的数量为2,则所述或非门单元的一输入端接地。
6.根据权利要求2所述的纠错系统,其特征在于,所述纠错系统还包括:第一编码模块,被配置为,在读取操作期间以及写入操作期间的所述编码阶段,均基于每一个所述字节中的若干数据产生X个第一校验码,同一所述第一校验码对应的所述若干数据在不同所述字节中的比特位相同,且均基于若干所述字节中的所有数据产生Y个第二校验码,其中,所述X个第一校验码用于对每一所述字节中的所述N个数据进行检错和/或纠错,所述Y个第二校验码用于对所述M个字节进行检错和/或纠错,所述X和Y均为正自然数。
7.根据权利要求6所述的纠错系统,其特征在于,所述第一编码模块包括:
第一编码单元,被配置为,在写入操作期间,基于写入的多个数据获取X个所述第一校验码和Y个所述第二校验码;
第二编码单元,被配置为,在读取操作期间,基于待读取的多个数据获取X个第一更新校验码和Y个第二更新校验码,所述第一更新校验码的获取方法与所述第一校验码的获取方法相同,所述第二更新校验码的获取方法与所述第二校验码的获取方法相同;
其中,所述第一运算码基于所述第一校验码和所述第一更新校验码获取,所述第二运算码基于所述第二校验码和所述第二更新校验码获取。
8.根据权利要求7所述的纠错系统,其特征在于,所述第一编码单元和所述第二编码单元为同一编码单元。
9.根据权利要求7所述的纠错系统,其特征在于,所述纠错系统还包括:比较模块,所述比较模块被配置为,对所述第一校验码以及所述第一更新校验码进行异或或者同或,以获取X个所述第一运算码,且对所述第二校验码以及所述第二更新校验码进行异或或者同或,以获取Y个所述第二运算码。
10.根据权利要求9所述的纠错系统,其特征在于,所述比较模块包括:
X个第一比较电路,每一所述第一比较电路用于接收一所述第一校验码以及相应的所述第一更新校验码,并进行异或或者同或,以获取一所述第一运算码;
Y个第二比较电路,每一所述第二比较电路用于接收一所述第二校验码以及相应的所述第二更新校验码,并进行异或或者同或,以获取一所述第二运算码。
11.根据权利要求10所述的纠错系统,其特征在于,所述第一比较电路或者所述第二比较电路包括:
共用模块,连接电源信号以及接地信号,并基于第一信号以及第二信号控制输出所述电源信号或者所述接地信号,所述第一信号与所述第二信号反相;第一逻辑单元,连接所述共用模块,用于接收第三信号和第四信号,所述第三信号与所述第四信号反相,并输出第一运算信号,所述第一运算信号为所述第一信号与所述第三信号的异或;
第二逻辑单元,连接所述共用模块,用于接收所述第三信号和所述第四信号并输出第二运算信号,所述第二运算信号为所述第一信号与所述第三信号的同或;
其中,对于所述第一比较电路,所述第一校验码作为所述第一信号,所述第一更新校验码作为所述第三信号;对于所述第二比较电路,所述第二校验码作为所述第一信号,所述第二更新校验码作为所述第三信号。
12.根据权利要求11所述的纠错系统,其特征在于,所述共用模块包括:
第一共用单元,连接所述电源信号,并基于所述第一信号以及所述第二信号控制输出所述电源信号;
第二共用单元,连接所述接地信号,并基于所述第一信号以及所述第二信号控制输出所述接地信号;
其中,所述第一逻辑单元连接在所述第一共用单元与所述第二共用单元之间,所述第二逻辑单元连接在所述第一共用单元与所述第二共用单元之间。
13.根据权利要求12所述的纠错系统,其特征在于,所述第一共用单元包括:
第零PMOS管,栅极接收所述第一信号,源极连接所述电源信号;第七PMOS管,栅极接收所述第二信号,源极连接所述电源信号;
所述第二共用单元包括:第零NMOS管,栅极接收所述第一信号,源极连接所述接地信号;第七NMOS管,栅极接收所述第二信号,源极连接所述接地信号。
14.根据权利要求13所述的纠错系统,其特征在于,所述第一逻辑单元包括:
第一PMOS管,栅极接收所述第四信号,源极连接所述第零PMOS管的漏极;
第一NMOS管,栅极接收所述第三信号,漏极连接所述第一PMOS管的漏极,源极连接所述第零NMOS管的漏极;
第四PMOS管,栅极接收所述第三信号,源极连接所述第七PMOS管的漏极;
第四NMOS管,栅极接收所述第四信号,漏极连接所述第四PMOS管的漏极,源极连接所述第七NMOS管的漏极。
15.根据权利要求13所述的纠错系统,其特征在于,所述第二逻辑单元包括:
第二PMOS管,栅极接收所述第三信号,源极连接所述第零PMOS管的漏极;
第二NMOS管,栅极接收所述第四信号,漏极连接所述第二PMOS管的漏极,源极连接所述第零NMOS管的漏极;
第五PMOS管,栅极接收所述第四信号,源极连接所述第七PMOS管的漏极;
第五NMOS管,栅极接收所述第三信号,漏极连接所述第五PMOS管的漏极,源极连接所述第七NMOS管的漏极。
16.根据权利要求7所述的纠错系统,其特征在于,所述纠错系统还包括:第二编码模块,被配置为,在写入操作期间,基于所述多个数据、所述X个第一校验码以及所述Y个第二校验码,获取第三校验码;还被配置为,在读取操作期间,基于待读取的多个数据、所述X个第一校验码、所述Y个第二校验码以及所述第三校验码,获取所述第三运算码。
17.根据权利要求1所述的纠错系统,其特征在于,所述存储系统包括存储芯片,所述错误状态判断单元和M个所述译码单元集成在所述存储芯片内。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110050726.6A CN114765055B (zh) | 2021-01-14 | 2021-01-14 | 纠错系统 |
PCT/CN2021/111414 WO2022151721A1 (zh) | 2021-01-14 | 2021-08-09 | 纠错系统 |
US17/582,185 US11599417B2 (en) | 2021-01-14 | 2022-01-24 | Error correction system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110050726.6A CN114765055B (zh) | 2021-01-14 | 2021-01-14 | 纠错系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114765055A CN114765055A (zh) | 2022-07-19 |
CN114765055B true CN114765055B (zh) | 2024-05-03 |
Family
ID=82363338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110050726.6A Active CN114765055B (zh) | 2021-01-14 | 2021-01-14 | 纠错系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114765055B (zh) |
WO (1) | WO2022151721A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729077A (zh) * | 2008-10-16 | 2010-06-09 | 汤姆森特许公司 | 用于二进制数据的错误纠正和错误检测的方法 |
CN102339647A (zh) * | 2010-07-23 | 2012-02-01 | 北京兆易创新科技有限公司 | 一种检错/纠错校验模块的检测方法及装置 |
US8327242B1 (en) * | 2008-04-10 | 2012-12-04 | Apple Inc. | High-performance ECC decoder |
CN104750569A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种实现数据纠错的方法及装置 |
CN106708655A (zh) * | 2017-02-16 | 2017-05-24 | 深圳前海生生科技有限公司 | 基于二维纠错码的内存加固方法及电路 |
CN108733504A (zh) * | 2018-05-04 | 2018-11-02 | 西安电子科技大学 | 一种四维奇偶校验码与汉明码相结合的存储器校验编码及检错纠错方法 |
CN109979521A (zh) * | 2017-12-28 | 2019-07-05 | 长鑫存储技术有限公司 | 检测电路及应用其的存储器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5859858A (en) * | 1996-10-25 | 1999-01-12 | Intel Corporation | Method and apparatus for correcting a multilevel cell memory by using error locating codes |
US6891690B2 (en) * | 2002-11-20 | 2005-05-10 | International Business Machines Corporation | On-drive integrated sector format raid error correction code system and method |
US7653862B2 (en) * | 2005-06-15 | 2010-01-26 | Hitachi Global Storage Technologies Netherlands B.V. | Error detection and correction for encoded data |
TWI332611B (en) * | 2007-05-24 | 2010-11-01 | Realtek Semiconductor Corp | Method for writing data in flash memory and error correction coding/decoding method thereof |
KR20190012566A (ko) * | 2017-07-27 | 2019-02-11 | 삼성전자주식회사 | 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 |
CN109036493A (zh) * | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
-
2021
- 2021-01-14 CN CN202110050726.6A patent/CN114765055B/zh active Active
- 2021-08-09 WO PCT/CN2021/111414 patent/WO2022151721A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327242B1 (en) * | 2008-04-10 | 2012-12-04 | Apple Inc. | High-performance ECC decoder |
CN101729077A (zh) * | 2008-10-16 | 2010-06-09 | 汤姆森特许公司 | 用于二进制数据的错误纠正和错误检测的方法 |
CN102339647A (zh) * | 2010-07-23 | 2012-02-01 | 北京兆易创新科技有限公司 | 一种检错/纠错校验模块的检测方法及装置 |
CN104750569A (zh) * | 2013-12-30 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种实现数据纠错的方法及装置 |
CN106708655A (zh) * | 2017-02-16 | 2017-05-24 | 深圳前海生生科技有限公司 | 基于二维纠错码的内存加固方法及电路 |
CN109979521A (zh) * | 2017-12-28 | 2019-07-05 | 长鑫存储技术有限公司 | 检测电路及应用其的存储器 |
CN108733504A (zh) * | 2018-05-04 | 2018-11-02 | 西安电子科技大学 | 一种四维奇偶校验码与汉明码相结合的存储器校验编码及检错纠错方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022151721A1 (zh) | 2022-07-21 |
CN114765055A (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11990201B2 (en) | Storage system | |
US11791009B2 (en) | Error correction system | |
EP1160987B1 (en) | Method and apparatus for verifying error correcting codes | |
US11935616B2 (en) | Comparison system | |
US11599417B2 (en) | Error correction system | |
US7984358B1 (en) | Error-correction memory architecture for testing production errors | |
JPS6061837A (ja) | エラ−訂正装置 | |
EP1069503A2 (en) | Semiconductor memory device with an ECC circuit and method of testing the memory | |
CN114765056B (zh) | 存储系统 | |
CN114765054B (zh) | 纠错系统 | |
US20210334033A1 (en) | Memory device and method reading data | |
CN114765055B (zh) | 纠错系统 | |
CN114765052B (zh) | 存储系统 | |
CN114765053B (zh) | 比较系统 | |
RU2297035C2 (ru) | Отказоустойчивое запоминающее устройство | |
CN116798503A (zh) | 一种数据ecc编解码计算电路 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |