CN114765056A - 存储系统 - Google Patents
存储系统 Download PDFInfo
- Publication number
- CN114765056A CN114765056A CN202110050737.4A CN202110050737A CN114765056A CN 114765056 A CN114765056 A CN 114765056A CN 202110050737 A CN202110050737 A CN 202110050737A CN 114765056 A CN114765056 A CN 114765056A
- Authority
- CN
- China
- Prior art keywords
- data
- signal
- bytes
- exclusive
- codes
- 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.)
- Granted
Links
- 238000012937 correction Methods 0.000 claims abstract description 16
- 238000001514 detection method Methods 0.000 claims abstract description 15
- 230000011664 signaling Effects 0.000 claims 1
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 17
- 230000014509 gene expression Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000000034 method Methods 0.000 description 1
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/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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明实施例提供一种存储系统,包括:存储器,被配置为,在读写操作期间写入或读取多个数据,所述多个数据分为M个字节,且每一所述字节具有N个数据;编码模块,被配置为,在编码阶段,基于每一个所述字节中的若干数据产生X个第一校验码,同一所述第一校验码对应的所述若干数据在不同所述字节中的比特位相同,且在所述编码阶段,基于若干所述字节中的所有数据产生Y个第二校验码,其中,所述X个第一校验码用于对每一所述字节中的所述N个数据进行检错和/或纠错,所述Y个第二校验码用于对所述M个字节进行检错和/或纠错。本发明实施例有利于提升存储系统的性能。
Description
技术领域
本发明实施例涉及半导体技术领域,特别涉及一种存储系统。
背景技术
半导体存储可以分为非易失性存储和易失性存储。动态随机存取存储器(DynamicRandom Access Memory,DRAM)作为易失性存储,具备存储密度高、读写速度快等优点,广泛用于各种电子系统中。
随着DRAM的制程工艺越来越先进、存储密度越来越高,DRAM中存储数据可能会发生错误,严重影响DRAM性能。因此,DRAM中通常采用纠错码(ECC,Error Checking andCorrection or Error correction Coding)技术来对存储数据的错误进行检测或修正。
发明内容
本发明实施例解决的技术问题为提供一种存储系统,在提高编码速度的同时降低功耗。
为解决上述问题,本发明实施例提供一种存储系统,包括:存储器,被配置为,在读写操作期间写入或读取多个数据,所述多个数据分为M个字节,且每一所述字节具有N个数据;编码模块,被配置为,在编码阶段,基于每一个所述字节中的若干数据产生X个第一校验码,同一所述第一校验码对应的所述若干数据在不同所述字节中的比特位相同,且在所述编码阶段,基于若干所述字节中的所有数据产生Y个第二校验码,其中,所述X个第一校验码用于对每一所述字节中的所述N个数据进行检错和/或纠错,所述Y个第二校验码用于对所述M个字节进行检错和/或纠错,其中所述M、N、X、Y均为正自然数。
另外,所述编码模块包括:第一编码单元,用于产生所述X个第一校验码,且所述X个第一校验码构成X位第一二进制数;其中,2X≥N,且每一所述第一校验码由所有所述字节中的所述若干数据进行第一编码运算得到,且每一所述第一校验码所对应的若干数据对应所述字节中不同的比特位组合。
另外,所述N个数据具有从第0按照自然数递增至第N-1的比特位且每一比特位被选中进行所述第一编码运算所得到的所述第一校验码不完全相同。
另外,所述N为8,所述X为3;所述第一编码运算包括同或或异或,所述第一编码单元别配置为,在所述X位二进制数中,处于最低比特的所述第一校验码为所有所述字节中第1、第3、第5以及第7比特位的所述数据的异或或者同或,处于最高比特的所述第一校验码为所有所述字节中第4、第5、第6以及第7比特位的所述数据的异或或者同或,处于中间比特的所述第一校验码为所有所述字节中第2、第3、第6以及第7比特位的所述数据的异或或者同或。
另外,所述编码模块还包括:第二编码单元,用于产生所述Y个第二校验码,且所述Y个第二校验码构成Y位第二二进制数;其中,2Y≥M,且每一所述第二校验码由若干所述字节进行第二编码运算得到。
另外,所述第二编码运算包括同或或者异或;所述第二编码单元包括:第一级运算单元,用于对选中的两个所述字节的所有数据进行异或或者同或,并存储若干第一运算结果,每一所述第一运算结果为选中的两个所述字节的异或结果或者同或结果;第二级运算单元,用于对至少两个所述第一运算结果进行异或或者同或,并产生所述第二校验码,并基于不同的编码需求产生Y个所述第二校验码。
另外,所述第一级运算单元包括:第一运算子单元,用于对同一所述字节的所有数据进行异或或者同或,并存储第二运算结果;第二运算子单元,用于对两个所述第二运算结果进行异或或者同或,并获取所述第一运算结果。
另外,所述第二编码单元被配置为,对于每一所述字节,参与所述第二编码运算的次数为a,a满足:(Y-1)/2≤a≤(Y+1)/2,且a为正整数。
另外,所述M为16,所述Y为5;所述M个字节按照自然数递增分为第0至第15个字节;所述Y个第二校验码按照自然数递增分为第3至第7个第二校验码;所述第3个第二校验码为:第0、第2、第3、第4、第5、第6以及第8个字节的所有数据的异或或者同或;所述第4个第二校验码为:第0、第1、第4、第5、第7、第9、第10以及第12个字节的所有数据的异或或同或;所述第5个第二校验码为:第1、第2、第4、第6、第9、第11、第13以及第14个字节的所有数据的异或或同或;所述第6个第二校验码为:第3、第5、第6、第7、第10、第11、第14以及第15个字节的所有数据的异或或同或;所述第7个第二校验码为:第8、第9、第10、第11、第12、第13以及第15个字节的所有数据的异或或同或。
另外,所述编码模块包括:比较电路,用于对任两个所述字节的所有数据进行异或或同或,或者,对所述若干数据进行异或或同或。
另外,所述比较电路包括:第一共用单元,连接电源信号,并基于第一信号以及第二信号控制输出电源信号,且所述第一信号与所述第二信号反相;第二共用单元,连接接地信号,并基于所述第一信号以及所述第二信号控制输出接地信号;第一逻辑单元,连接在所述第一共用单元与所述第二共用单元之间,用于接收第三信号和第四信号,所述第三信号与所述第四信号反相,并输出第一运算信号,所述第一运算信号为所述第一信号与所述第三信号的异或;第二逻辑单元,连接在所述第一共用单元与所述第二共用单元之间,用于接收所述第三信号和所述第四信号并输出第二运算信号,所述第二运算信号为所述第一信号与所述第三信号的同或。
另外,所述第一共用单元包括:第零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个第一校验码进行第三编码运算产生X个第一运算码,并基于若干所述字节中的所有数据以及所述Y个第二校验码进行第四编码运算产生Y个第二运算码。
另外,所述存储系统还包括:译码模块,被配置为,接收所述X个第一运算码以及所述Y个第二运算码,并对出错的数据位置进行定位。
另外,所述译码模块包括:M个译码单元,每一所述译码单元与一所述字节对应,用于对X个所述第一运算码以及Y个所述第二运算码进行译码处理,以获取所述字节中是否具有出错的数据并对出错的数据的比特位进行定位。
另外,所述译码单元包括:译码器,用于接收所述X个第一运算码并输出N个第一译码信号,每一所述第一译码信号与所述N个数据的一比特位对应;第一与门单元,用于接收至少两个选中运算码,并进行逻辑与运算,所述选中运算码为,所述Y个第二校验码中与相应的所述字节对应的所述第二校验码经由所述第四编码运算后得到的所述第二运算码;或非门单元,用于接收至少两个未选运算码,并进行逻辑或非运算,所述未选运算码为,相应的所述字节对应的所述选中运算码除外的所述第二运算码;N个第二与门单元,每一所述第二与门单元的输入端连接所述第一与门单元的输出端、所述或非门单元的输出端以及一所述第一译码信号,基于所述N个第二与门单元的输出,获取出错的数据位置。
另外,所述第一与门单元具有三个输入端;所述第一与门单元还被配置为,若所述选中运算码的数量为2,则所述第一与门单元的一输入端连接电源。
另外,所述或非门单元具有三个输入端;所述或非门单元还被配置为,若所述未选运算码的数量为2,则所述或非门单元的一输入端接地。
另外,所述存储系统包括存储芯片。
另外,所述存储器包括存储芯片;所述存储系统还包括:控制器,用于控制所述存储器,且所述编码模块以及所述译码模块集成在所述控制器内。
与现有技术相比,本发明实施例提供的技术方案具有以下优点:
本发明实施例提供的存储系统中,编码模块被配置为,基于字节中的若干数据产生X个第一校验码,且不同字节的若干数据在不同字节中的比特位相同,通过X个第一校验码可以对出错的比特位进行定位;且基于若干字节的所有数据产生Y个第二校验码,通过Y个第二校验码可以对出错的字节进行定位;通过对字节以及字节中的比特位进行定位,可以获取出错的数据的位置,以便于完成检错和/或纠错的目的。本发明实施例通过设计一种特殊的编码实现的编码模块,可以使用较少的硬件电路以实现ECC技术,从而在减少功耗的同时提升编码的速度,且有利于降低编码难度。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本发明一实施例提供的存储系统的一种功能框图;
图2为本发明实施例提供的多个数据的分类示意图以及与第一校验码以及第二校验码之间的关系;
图3示意出了字节0对应的第一校验码的放大示意图;
图4为本发明实施例提供的存储器的另一种功能框图;
图5示意出了对所有字节进行第二编码运算的原理示意图;
图6为本发明实施例提供的存储系统中的比较电路的功能框图;
图7为比较电路的电路结构示意图;
图8为本发明实施例提供的存储系统中译码模块的具体结构示意图;
图9为本发明实施例提供的译码模块中字节5对应的译码单元的放大结构示意图。
具体实施方式
本发明实施例提供一种存储系统,编码模块在编码阶段分别获取用于对字节进行检错和/或纠错的校验码以及用于对字节中不同比特位进行检错和/或纠错的校验码,在实现ECC技术的同时,有利于简化硬件电路,降低存储系统的功耗且提高编码速度。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
图1为本发明一实施例提供的存储系统的功能框图。
参考图1,本实施例中,存储系统包括:存储器101,被配置为,在读写操作期间写入或读取多个数据,多个数据分为M个字节,且每一字节具有N个数据;编码模块102,被配置为,在编码阶段,基于每一字节中的若干数据产生X个第一校验码,同一第一校验码对应的若干数据在不同字节中的比特位相同,且在编码阶段,基于若干字节中的所有数据产生Y个第二校验码,其中,X个第一校验码用于对每一字节中的N个数据进行检错和/或纠错,Y个第二校验码用于对M个字节进行检错和/或纠错;其中,M、N、X、Y均为正自然数。
本实施例提供一种全新的存储系统,将数据划分为不同的字节,且第一校验码用于对每一字节中的N个数据进行检错和/或纠错,第二校验码用于对M个字节进行检错和/或纠错,这种检错纠错的编码方式不仅能够实现ECC,且还能够使用更少的硬件电路来实现ECC,有利于降低存储系统的功耗且优化ECC的速度以及结果。需要注意的是,本实施例中所称的第一校验码用于对每一字节中的N个数据进行检错和/或纠错,第二校验码用于对M个字节进行检错和/或纠错,应当理解为,所有的第一校验码和第二校验码共同用于对M个字节的所有数据进行检错和/或纠错,第二校验码将用于定位发生错误的数据位于M个字节中哪个字节,第一校验码将用于定位发生错误的数据位于该字节中的哪个比特位。
以下将结合附图对本实施例提供的存储系统进行详细说明。
本实施例中,存储器101为DRAM,例如可以为DDR4、LPDDR4、DDR5或者LPDDR5。在其他实施例中,存储器也可以为其他类型存储器,例如NAND、NOR、FeRAM、PcRAM等非易失性存储器。
通常的,字节是数据处理的基本单位。以字节为单位存储和解释信息,规定1个字节由8个二进制位构成,即1个字节等于8个比特,8比特中每个比特具有相应的比特位,即1Byte=8bit。基于此,本实施例中,N为8,以使每个字节中的比特位最大化,因而有利于提高编码解码电路所需电路的利用率。可以理解的是,在其他实施例中,N也可以为其他合适的正整数。
以存储器101在单次读写操作期间传输的数据为128位(即128比特)作为示例,则M为16,N为8。需要说明的是,在其他实施例中,根据存储器在读写操作期间传输的数据位数的不同,M也可以其他合适的正整数,满足M*N与读写操作期间传输的数据的位数相等即可。
图2为本发明实施例提供的多个数据的分类示意图以及与第一校验码以及第二校验码之间的关系。N个数据中每一数据的比特位不同。具体地,如图2所示,对于每一字节,N个数据具有按照自然数递增的从第0至第7的比特位;对于所有字节,M个字节划分为从第0按照自然数递增至第15的16个字节。另外,对于不同的字节而言,字节内具有的N个数据均具有从第0递增至第7的8个比特位。
需要说明的是,由于位置的限制,图2中实际应该为同一个行的表格拆分成了三个表格,实际为一个完整的表格。为便于图示,图3示意出了字节0对应的第一校验码的放大示意图。
本实施例中,编码模块102利用奇偶校验(Parity Check)原理产生第一校验码和第二校验码,相应的,第一校验码和第二校验码均为奇偶校验码。本实施例中,存储系统为存储芯片,相应的存储器101以及编码模块102集成在同一存储芯片中。可以理解的是,在其他实施例中,存储器可以为存储芯片,存储系统还包括控制器,用于控制存储器,且编码模块还集成在控制器内。需要说明的是,本发明实施例并不对存储器以及编码模块集成在同一芯片或是设置在不同的芯片上做限定。
图4为本发明实施例提供的存储器的另一种功能框图。
参考图4,编码模块102包括:第一编码单元112,用于产生X个第一校验码,且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比特位的数据的同或。
以下将结合图2和图3对第一校验码的生成原理进行说明。
如图2和图3所示,“×”表示当前参与这一行的编码运算,即进行同或或者异或;且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需要参与运算,因此图2的表格中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、pc3以及pc3这三个运算式,则第一校验码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均受到影响。
需要注意的是,此处所说特定数据发生错误后特定第一校验码受到影响的意思是,在特定数据发生错误后,若重新进行第一编码运算得到的该特定第一校验码,会与数据发生错误前形成的该第一校验码不同。
可以理解的是,对于每一算式而言,由于不同字节中的参与第一编码运算的比特位是相同的,因此通过第一校验码可以获取是哪一个比特位的数据发生了错误,但是并不能检测是哪一个字节中相应比特位的数据发生错误。因此,还需要通过第二校验码以获取是哪一个字节中的相应比特位的数据发生错误。
相应的,本实施例中,编码模块102还包括:第二编码单元122,用于产生Y个第二校验码,且Y个第二校验码构成Y位第二二进制数,其中,2Y≥M,且每一第二校验码由若干字节进行第二编码运算得到。
由于2Y≥M,以保证每一字节参与第二编码运算所得到的第二校验码不完全相同。具体地,不同的第二校验码基于不同的若干字节进行第二编码运算得到,以使得对于不同的第二校验码而言,影响第二校验码的结果的字节不同,以便于综合分析以获取是哪一个字节中的数据发生了错误。再结合是字节中哪一个比特位发生了错误,以最终判断出是哪一个字节中的哪一个比特位的数据发生错误。需要注意的是,此处所说的影响第二校验码的结果中的“影响”意思与前面所述的“影响”含义相同。
本实施例中,Y为5,既能够满足不同字节的数据的错误均能够被指示出来,且还能够减小第二编码单元122的硬件电路的复杂性。
具体地,本实施例中,第二编码运算为异或;第二编码单元122包括:第一级运算单元,用于对选中的两个字节的所有数据进行异或,并存储若干第一运算结果,每一第一运算结果为选中的两个字节的异或结果;第二级运算单元,用于对至少两个第一运算结果进行异或,并产生第二校验码,并基于不同的编码需求产生Y个第二校验码。
在其他实施例中,第二编码运算也可以为同或,相应的,第二编码单元包括:第一级运算单元,用于对选中的两个字节的所有数据进行同或,并存储若干第一运算结果,每一第一运算结果为选中的两个字节的同或结果;第二级运算单元,用于对至少两个第一运算结果进行同或,并产生所述第二校验码,并基于不同的编码需求产生Y个第二校验码。
本实施例中,通过对第二编码单元122的特殊设计,第二级运算单元可以重复使用第一级运算单元的第一运算结果,使得第二编码单元122可以通过更少的硬件电路来实现,从而降低存储系统的功耗。
相应的,第一级运算单元包括:第一运算子单元,用于对同一字节的所有数据进行异或或者同或,并存储第二运算结果;第二运算子单元,用于对两个第二运算结果进行异或或者同或,并获取第一运算结果。
具体地,如图5所示,在编码阶段,对于每一个字节,将这个字节中的所有8个比特位的数据进行异或,得到这个字节的异或结果;然后将总共16个字节的16个异或结果,根据pc3至pc7这5个运算式进行第二编码运算,即每一行的表格中标示“×”的数据均参与运算,相应得到第二校验码pc13至pc17。可以理解的是,在编码阶段第二校验码pc13至pc17不参与编码运算,在后续的解码阶段(或称为译码阶段)第二校验码pc13至pc17也需要参与运算,因此在图2中第二校验码pc13至pc17相应也标示有“×”,关于这一点后续会说明,在此不做赘述。
本实施例中,M个字节按照自然数递增分为第0至第15个字节;Y个第二校验码按照自然数递增分为第3至第7个第二校验码;5个第二校验码的获取方式分别如下:
第3个第二校验码(对应图2中的p13)为:第0、第2、第3、第4、第5、第6以及第8个字节的所有数据的异或或者同或;第4个第二校验码(对应图2中的p14)为:第0、第1、第4、第5、第7、第9、第10以及第12个字节的所有数据的异或或同或;第5个第二校验码(对应图2中的p15)为:第1、第2、第4、第6、第9、第11、第13以及第14个字节的所有数据的异或或同或;第6个第二校验码(对应图2中的p16)为:第3、第5、第6、第7、第10、第11、第14以及第15个字节的所有数据的异或或同或;第7个第二校验码(对应图2中的p17)为:第8、第9、第10、第11、第12、第13以及第15个字节的所有数据的异或或同或。
需要说明的是,每一第二校验码均是异或运算获得的;或者,每一第二校验码均是同或运算获得的。
第二编码单元122对应的电路被设计为:
将字节0和字节4的异或结果进行异或,得到结果0_4;将字节2和字节6的结果进行异或,得到结果2_6;将字节3和字节5的结果进行异或,得到结果3_5;将字节1和字节5的结果进行异或,得到结果1_5;将字节1和字节4的结果进行异或,得到结果1_4。
不难发现,如图5所示,图5示意出了对所有字节进行第二编码运算的原理示意图,相较于字节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等都可以重复使用,以节省电路资源。
此外,本实施例中,第二编码单元122还可以被配置为,对于每一字节,参与第二编码运算的次数为a,a满足:(Y-1)/2≤a≤(Y+1)/2,且a为正整数。通过这样的设置,在进行后续的译码阶段所需的译码电路中,电路的线路和面积能够得到减少,且还有利于提升译码速度。
由前述说明发现,不论是第一校验码的获取还是第二校验码的获取,均用到异或或者同或,因此存储系统还包括用于实现同或或异或的比较电路。
图6为本发明实施例提供的存储系统中的比较电路的功能框图,本实施例中,编码模块102还包括:比较电路(未标示),用于对任两个字节的所有数据进行异或或同或,或者,对若干数据进行异或或同或。
参考图6,比较电路包括:第一共用单元21,连接电源信号Vcc,并基于第一信号B以及第二信号BN控制输出电源信号Vcc,且第一信号B与第二信号BN反相;第二共用单元22,连接接地信号Vss,并基于第一信号B以及第二信号BN控制输出接地信号Vss;第一逻辑单元23,连接在第一共用单元21与第二共用单元22之间,用于接收第三信号A和第四信号AN,第三信号A与第四信号AN反相,并输出第一运算信号Y,第一运算信号Y为第一信号B与第三信号A的异或;第二逻辑单元24,连接在第一共用单元21与第二共用单元22之间,用于接收第三信号A和第四信号AN并输出第二运算信号YN,第二运算信号YN为第一信号B与第三信号A的同或。
图7为比较电路的电路结构示意图。
具体地,参考图7,第一共用单元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。
本实施例提供的比较电路中,异或逻辑与同或逻辑共用了四个MOS管,共用MOS管可以节省面积,且可以将共用的MOS管尺寸做大一些,从而提高驱动能力。
结合图1以及图2,本实施例中,编码模块102还被配置为,在译码阶段,接收传输的多个数据、X个第一校验码以及Y个第二校验码,并基于每一个字节中的若干数据以及X个第一校验码进行第三编码运算产生X个第一运算码,并基于若干字节中的所有数据以及Y个第二校验码进行第四编码运算产生Y个第二运算码。
具体地,第三编码运算与第一编码运算参与运算的数据的比特位相同,区别在于第三编码运算中第一校验码也参与运算;第四编码运算与第二编码运算参与运算的字节相同,区别在于第四编码运算中第二校验码也参与运算。
需要说明的是,编码阶段和译码阶段的编码运算功能可以集成在同一功能单元实现,在另一例子中,编码阶段和译码阶段的编码运算功能可以利用不同的功能单元实现。
一般的,译码阶段出现在读取操作时读取数据过程。更具体地,结合参考图2以及前述对第一校验码和第二校验码的产生原理的说明,在译码阶段的编码运算,需要在前述的编码阶段的编码运算基础上,分别再异或第一校验码p10、p11或者p12,相应的获得第一运算码p20、p21或者p22。即,对于第一运算码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比特位的数据发生错误。
本实施例中,存储系统还可以包括:译码模块103,被配置为,接收X个第一运算码以及Y个第二运算码,并对出错的数据位置进行定位。具体地,X个第一运算码用于定位发生错误的比特位,Y个第二运算码用于定位发生错误的字节。有关第一运算码和第二运算码用于定位发生错误的数据的具体原理和说明,可参考前述关于第一校验码和第二校验码的相关说明,在此不再赘述。
需要说明的是,译码模块103可以与存储器101集成在同一存储芯片中;或者,存储系统还包括用于控制存储器的控制器,且译码模块继承在控制器内。此外,还需要说明的是,译码模块103和编码模块102也可以集成在同一功能模块内。
图8为本发明实施例提供的存储系统中译码模块的具体结构示意图。参考图8,译码模块103包括:M个译码单元31,每一译码单元31与一字节对应,用于对X个第一运算码及Y个第二运算码进行译码处理,以获取字节中是否具有出错的数据并对出错的数据的比特位进行定位。图8中以p20、p21以及p22标示第一运算码,以p23、p24、p25、p26以及p27标示第二运算码。具体地,每一译码单元31对于该字节对应的X个第一运算码和Y个第二运算码进行译码处理。
也就是说,译码单元31的数量与字节的数量相同。
图9为本发明实施例提供的译码模块中字节5对应的译码单元的放大结构示意图。
参考图9,本实施例中,译码单元31包括:译码器301,用于接收所述X个第一运算码并输出N个第一译码信号,每一第一译码信号与N个数据的一比特位对应;第一与门单元302,用于接收至少两个选中运算码,并进行逻辑与运算,选中运算码为,Y个第二校验码中与相应的所述字节对应的所述第二校验码经由所述第四编码运算后得到的第二运算码;或非门单元303,用于接收至少两个未选运算码,并进行逻辑或非运算,未选运算码为,Y个第二运算码中选中运算码除外的第二运算码;N个第二与门单元304,每一第二与门单元304的输入端连接第一与门单元302的输出端、或非门单元303的输出端以及一第一译码信号,基于N个第二与门单元304的输出,获取出错的数据位置。需要说明的是,此处所称的与相应的所述字节对应的所述第二校验码意思是所述字节被选中参与第二编码运算形成的第二校验码,例如,在图2中可以看出,与第0字节对应的第二校验码为p13和p14。
需要说明的是,图9中仅示意出了一个第一译码信号与一个第二与门单元304的连接关系。
本实施例中,译码器301为三八译码器,三个输入端分别接收三个第一运算码,八个输出端输出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还被配置为,若未选运算码的数量为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的输入端的接线由图2中的pc3至pc7这5个算式决定,对于每一个字节,将与之对应的所述第二校验码经由所述第四编码运算后得到的第二运算码连接到第一与门单元302的输入端,将除与之对应的第二校验码外的其余第二校验码经由第四编码运算所得到的第二运算码连接到或非门单元303的输入端;此外,没有用到的第一与门单元302的输入端连接电源,没有用到的或非门单元303的输入端接地,且第一运算码连接译码器301的输入端。因此,译码单元301只用到了8根走线连接输入端,每根走线传输一第一运算码或一第二运算码,从而节省了线道和面积,同时有利于提升译码速度。
为了便于理解译码电路,以字节5对应的译码单元作为示例,以下将结合译码电路的工作原理对译码电路进行更详细的说明。
若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的0输出端为1,但是由于其余Y-1个第二校验码均未发生错误,则与之对应的Y-1个第二运算码为0,则第一与门单元302的输出为0,进而第二与门单元304的输出也均为0,表示M个字节中所有数据均未出错。
可以理解的是,本发明实施例中,基于第一校验码生成第一运算码,利用基于第一校验码生成的第一运算码来对字节中出错的数据的位置进行定位,因此,第一校验码是用于对每一字节中的N个数据进行检错和/或纠错。基于第二校验码生成第二运算码,利用基于第二校验码生成的第二运算码对出错的字节进行定位,因此,第二校验码是用于对M个字节进行检错和/或纠错。
本实施例提供一种结构性能优越的存储系统,通过对编码模块102的特殊设计实现ECC,能够对1位错误进行检测并纠正,且还能够减少硬件电路,从而降低存储系统的功耗且提升编码速度以及译码速度。此外,通过对第一校验码和第二校验码的特殊设计,使得对于所有数据组合的编码时间的差异小,且对于所有数据组合的译码时间的差异也很小,从而降低了对控制电路的要求。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各自更动与修改,因此本发明的保护范围应当以权利要求限定的范围为准。
Claims (22)
1.一种存储系统,其特征在于,包括:
存储器,被配置为,在读写操作期间写入或读取多个数据,所述多个数据分为M个字节,且每一所述字节具有N个数据;
编码模块,被配置为,在编码阶段,基于每一个所述字节中的若干数据产生X个第一校验码,同一所述第一校验码对应的所述若干数据在不同所述字节中的比特位相同,且在所述编码阶段,基于若干所述字节中的所有数据产生Y个第二校验码,其中,所述X个第一校验码用于对每一所述字节中的所述N个数据进行检错和/或纠错,所述Y个第二校验码用于对所述M个字节进行检错和/或纠错;
其中所述M、N、X、Y均为正自然数。
2.根据权利要求1所述的存储系统,其特征在于,所述编码模块包括:第一编码单元,用于产生所述X个第一校验码,且所述X个第一校验码构成X位第一二进制数;其中,2X≥N,每一所述第一校验码由所有所述字节中的所述若干数据进行第一编码运算得到,且每一所述第一校验码所对应的若干数据对应所述字节中不同的比特位组合。
3.根据权利要求2所述的存储系统,其特征在于,所述N个数据具有从第0按照自然数递增至第N-1的比特位,且每一比特位被选中进行所述第一编码运算所得到的所述第一校验码不完全相同。
4.根据权利要求2或3所述的存储系统,其特征在于,所述N为8,所述X为3;所述第一编码运算包括同或或异或,所述第一编码单元被配置为,在所述X位第一二进制数中,处于最低比特的所述第一校验码为所有所述字节中第1、第3、第5以及第7比特位的所述数据的异或或者同或,处于最高比特的所述第一校验码为所有所述字节中第4、第5、第6以及第7比特位的所述数据的异或或者同或,处于中间比特的所述第一校验码为所有所述字节中第2、第3、第6以及第7比特位的所述数据的异或或者同或。
5.根据权利要求2所述的存储系统,其特征在于,所述编码模块还包括:第二编码单元,用于产生所述Y个第二校验码,且所述Y个第二校验码构成Y位第二二进制数;其中,2Y≥M,且每一所述第二校验码由若干所述字节进行第二编码运算得到。
6.根据权利要求5所述的存储系统,其特征在于,所述第二编码运算包括同或或者异或;所述第二编码单元包括:
第一级运算单元,用于对选中的两个所述字节的所有数据进行异或或者同或,并存储若干第一运算结果,每一所述第一运算结果为选中的两个所述字节的异或结果或者同或结果;
第二级运算单元,用于对至少两个所述第一运算结果进行异或或者同或,并产生所述第二校验码,并基于不同的编码需求产生Y个所述第二校验码。
7.根据权利要求6所述的存储系统,其特征在于,所述第一级运算单元包括:
第一运算子单元,用于对同一所述字节的所有数据进行异或或者同或,并存储第二运算结果;
第二运算子单元,用于对两个所述第二运算结果进行异或或者同或,并获取所述第一运算结果。
8.根据权利要求5所述的存储系统,其特征在于,所述第二编码单元被配置为,对于每一所述字节,参与所述第二编码运算的次数为a,a满足:(Y-1)/2≤a≤(Y+1)/2,且a为正整数。
9.根据权利要求8所述的存储系统,其特征在于,所述M为16,所述Y为5;所述M个字节按照自然数递增分为第0至第15个字节;所述Y个第二校验码按照自然数递增分为第3至第7个第二校验码;
第3个所述第二校验码为:第0、第2、第3、第4、第5、第6以及第8个字节的所有数据的异或或者同或;
第4个所述第二校验码为:第0、第1、第4、第5、第7、第9、第10以及第12个字节的所有数据的异或或同或;
第5个所述第二校验码为:第1、第2、第4、第6、第9、第11、第13以及第14个字节的所有数据的异或或同或;
第6个所述第二校验码为:第3、第5、第6、第7、第10、第11、第14以及第15个字节的所有数据的异或或同或;
第7个所述第二校验码为:第8、第9、第10、第11、第12、第13以及第15个字节的所有数据的异或或同或。
10.根据权利要求2或5所述的存储系统,其特征在于,所述编码模块包括:比较电路,用于对任两个所述字节的所有数据进行异或或同或,或者,对所述若干数据进行异或或同或。
11.根据权利要求10所述的存储系统,其特征在于,所述比较电路包括:
第一共用单元,连接电源信号,并基于第一信号以及第二信号控制输出电源信号,且所述第一信号与所述第二信号反相;
第二共用单元,连接接地信号,并基于所述第一信号以及所述第二信号控制输出接地信号;
第一逻辑单元,连接在所述第一共用单元与所述第二共用单元之间,用于接收第三信号和第四信号,所述第三信号与所述第四信号反相,并输出第一运算信号,所述第一运算信号为所述第一信号与所述第三信号的异或;
第二逻辑单元,连接在所述第一共用单元与所述第二共用单元之间,用于接收所述第三信号和所述第四信号并输出第二运算信号,所述第二运算信号为所述第一信号与所述第三信号的同或。
12.根据权利要求11所述的存储系统,其特征在于,所述第一共用单元包括:
第零PMOS管,栅极接收所述第一信号,源极连接所述电源信号;
第七PMOS管,栅极接收所述第二信号,源极连接所述电源信号;所述第二共用单元包括:
第零NMOS管,栅极接收所述第一信号,源极连接所述接地信号;
第七NMOS管,栅极接收所述第二信号,源极连接所述接地信号。
13.根据权利要求12所述的存储系统,其特征在于,所述第一逻辑单元包括:
第一PMOS管,栅极接收所述第四信号,源极连接所述第零PMOS管的漏极;
第一NMOS管,栅极接收所述第三信号,漏极连接所述第一PMOS管的漏极,源极连接所述第零NMOS管的漏极;
第四PMOS管,栅极接收所述第三信号,源极连接所述第七PMOS管的漏极;第四NMOS管,栅极接收所述第四信号,漏极连接所述第四PMOS管的漏极,源极连接所述第七NMOS管的漏极。
14.根据权利要求12所述的存储系统,其特征在于,所述第二逻辑单元包括:
第二PMOS管,栅极接收所述第三信号,源极连接所述第零PMOS管的漏极;
第二NMOS管,栅极接收所述第四信号,漏极连接所述第二PMOS管的漏极,源极连接所述第零NMOS管的漏极;
第五PMOS管,栅极接收所述第四信号,源极连接所述第七PMOS管的漏极;第五NMOS管,栅极接收所述第三信号,漏极连接所述第五PMOS管的漏极,源极连接所述第七NMOS管的漏极。
15.根据权利要求1所述的存储系统,其特征在于,所述编码模块还被配置为,在译码阶段,接收传输的多个数据、所述X个第一校验码以及所述Y个第二校验码,并基于每一个所述字节中的若干数据以及所述X个第一校验码进行第三编码运算产生X个第一运算码,并基于若干所述字节中的所有数据以及所述Y个第二校验码进行第四编码运算产生Y个第二运算码。
16.根据权利要求15所述的存储系统,其特征在于,所述存储系统还包括:译码模块,被配置为,接收所述X个第一运算码以及所述Y个第二运算码,并对出错的数据位置进行定位。
17.根据权利要求16所述的存储系统,其特征在于,所述译码模块包括:M个译码单元,每一所述译码单元与一所述字节对应,用于对X个所述第一运算码以及Y个所述第二运算码进行译码处理,以获取所述字节中是否具有出错的数据并对出错的数据的比特位进行定位。
18.根据权利要求17所述的存储系统,其特征在于,所述译码单元包括:
译码器,用于接收所述X个第一运算码并输出N个第一译码信号,每一所述第一译码信号与所述N个数据的一比特位对应;
第一与门单元,用于接收至少两个选中运算码,并进行逻辑与运算,所述选中运算码为,所述Y个第二校验码中与相应的所述字节对应的所述第二校验码经由所述第四编码运算后得到的所述第二运算码;
或非门单元,用于接收至少两个未选运算码,并进行逻辑或非运算,所述未选运算码为,相应的所述字节对应的所述选中运算码除外的所述第二运算码;N个第二与门单元,每一所述第二与门单元的输入端连接所述第一与门单元的输出端、所述或非门单元的输出端以及一所述第一译码信号,基于所述N个第二与门单元的输出,获取出错的数据位置。
19.根据权利要求18所述的存储系统,其特征在于,所述第一与门单元具有三个输入端;所述第一与门单元还被配置为,若所述选中运算码的数量为2,则所述第一与门单元的一输入端连接电源。
20.根据权利要求18所述的存储系统,其特征在于,所述或非门单元具有三个输入端;所述或非门单元还被配置为,若所述未选运算码的数量为2,则所述或非门单元的一输入端接地。
21.根据权利要求1所述的存储系统,其特征在于,所述存储系统包括存储芯片。
22.根据权利要求16所述的存储系统,其特征在于,所述存储器包括存储芯片;所述存储系统还包括:控制器,用于控制所述存储器,且所述编码模块以及所述译码模块集成在所述控制器内。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110050737.4A CN114765056B (zh) | 2021-01-14 | 2021-01-14 | 存储系统 |
US17/627,013 US11886292B2 (en) | 2021-01-14 | 2021-08-16 | Memory system |
KR1020227021307A KR20220104030A (ko) | 2021-01-14 | 2021-08-16 | 저장 시스템 |
PCT/CN2021/112699 WO2022151730A1 (zh) | 2021-01-14 | 2021-08-16 | 存储系统 |
JP2022538785A JP7454676B2 (ja) | 2021-01-14 | 2021-08-16 | 記憶システム |
EP21863077.0A EP4053701A4 (en) | 2021-01-14 | 2021-08-16 | MEMORY SYSTEM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110050737.4A CN114765056B (zh) | 2021-01-14 | 2021-01-14 | 存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114765056A true CN114765056A (zh) | 2022-07-19 |
CN114765056B CN114765056B (zh) | 2024-07-12 |
Family
ID=82363622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110050737.4A Active CN114765056B (zh) | 2021-01-14 | 2021-01-14 | 存储系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11886292B2 (zh) |
EP (1) | EP4053701A4 (zh) |
JP (1) | JP7454676B2 (zh) |
KR (1) | KR20220104030A (zh) |
CN (1) | CN114765056B (zh) |
WO (1) | WO2022151730A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023512892A (ja) | 2021-01-14 | 2023-03-30 | チャンシン メモリー テクノロジーズ インコーポレイテッド | 比較システム |
US11599417B2 (en) * | 2021-01-14 | 2023-03-07 | Changxin Memory Technologies, Inc. | Error correction system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4330860A (en) * | 1979-03-30 | 1982-05-18 | Matsushita Electric Industrial Co., Ltd. | Error correcting device |
JPS61277230A (ja) * | 1985-05-31 | 1986-12-08 | Canon Inc | 誤り検出訂正符号発生方式 |
US4736376A (en) * | 1985-10-25 | 1988-04-05 | Sequoia Systems, Inc. | Self-checking error correcting encoder/decoder |
CN109408275A (zh) * | 2018-10-12 | 2019-03-01 | 盛科网络(苏州)有限公司 | 用于检测纠错模块的验证方法和装置 |
CN110968450A (zh) * | 2018-09-30 | 2020-04-07 | 长鑫存储技术有限公司 | 数据存储方法及装置、存储介质、电子设备 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4749886A (en) | 1986-10-09 | 1988-06-07 | Intersil, Inc. | Reduced parallel EXCLUSIVE or and EXCLUSIVE NOR gate |
FR2714550B1 (fr) | 1993-12-24 | 1996-02-02 | Bull Sa | Arbre de portes logiques OU-Exclusif et multiplieur de fréquence l'incorporant. |
KR19980014906A (ko) | 1996-08-17 | 1998-05-25 | 구자홍 | 누산기 |
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 |
DE102004020030A1 (de) | 2004-04-23 | 2005-11-24 | Infineon Technologies Ag | Testvorrichtung zum Testen einer integrierten Schaltung |
JP4036338B2 (ja) | 2005-03-04 | 2008-01-23 | 国立大学法人東京工業大学 | 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置 |
US7653862B2 (en) | 2005-06-15 | 2010-01-26 | Hitachi Global Storage Technologies Netherlands B.V. | Error detection and correction for encoded data |
US7242219B1 (en) | 2005-09-08 | 2007-07-10 | Advanced Micro Devices, Inc. | Circuit for parity tree structure |
CN101183565B (zh) | 2007-12-12 | 2011-02-16 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
JP2010079485A (ja) | 2008-09-25 | 2010-04-08 | Panasonic Corp | 半導体記録装置 |
US8051337B2 (en) | 2009-01-22 | 2011-11-01 | Taiwan Semiconductor Manufacturing Company, Ltd. | System and method for fast cache-hit detection |
TWI381392B (zh) | 2010-02-04 | 2013-01-01 | Transcend Information Inc | 雙層面記憶體錯誤修正方法以及相關的記憶體裝置 |
TWI456579B (zh) | 2010-03-26 | 2014-10-11 | Silicon Motion Inc | 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器 |
JP2012022422A (ja) | 2010-07-13 | 2012-02-02 | Panasonic Corp | 半導体記録再生装置 |
CN102339641B (zh) * | 2010-07-23 | 2014-12-17 | 北京兆易创新科技股份有限公司 | 检错/纠错校验模块及该模块读写数据的方法 |
CN101980339A (zh) | 2010-11-04 | 2011-02-23 | 浙江大学 | 一种用于dram缓存的纠错编码方法 |
CN102543209B (zh) * | 2010-12-31 | 2015-09-30 | 深圳市朗科科技股份有限公司 | 多通道闪存控制器的纠错装置、方法及多通道闪存控制器 |
JP2012252558A (ja) | 2011-06-03 | 2012-12-20 | Sony Corp | 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム |
JP2013074560A (ja) | 2011-09-29 | 2013-04-22 | Elpida Memory Inc | 論理回路及びデータ処理システム |
CN102857217B (zh) | 2012-09-11 | 2015-06-17 | 宁波大学 | 一种低功耗异或/同或门电路 |
CN103078629A (zh) | 2012-12-27 | 2013-05-01 | 广州中大微电子有限公司 | 一种基于7管异或同或单元的全加器电路 |
CN108447516B (zh) | 2013-08-23 | 2020-04-24 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
US9189327B2 (en) | 2013-11-19 | 2015-11-17 | International Business Machines Corporation | Error-correcting code distribution for memory systems |
JP6212396B2 (ja) | 2014-01-08 | 2017-10-11 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US9754684B2 (en) | 2014-11-06 | 2017-09-05 | Samsung Electronics Co., Ltd. | Completely utilizing hamming distance for SECDED based ECC DIMMs |
US9985655B2 (en) | 2015-09-01 | 2018-05-29 | International Business Machines Corporation | Generating ECC values for byte-write capable registers |
CN105471425B (zh) | 2015-12-08 | 2018-05-01 | 无锡芯响电子科技有限公司 | 一种可实现异或门或者同或门复用的电路 |
US9917675B2 (en) | 2016-06-01 | 2018-03-13 | Qualcomm Incorporated | Enhanced polar code constructions by strategic placement of CRC bits |
KR20190012566A (ko) | 2017-07-27 | 2019-02-11 | 삼성전자주식회사 | 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 |
CN108038023B (zh) | 2017-12-26 | 2021-01-29 | 广东工业大学 | 一种多级闪存的信号处理方法、装置、设备及存储介质 |
CN109036493A (zh) | 2018-06-11 | 2018-12-18 | 西北工业大学 | 一种具有检错纠错机制的NAND Flash控制器 |
CN111443887A (zh) | 2020-03-26 | 2020-07-24 | 京东方科技集团股份有限公司 | 显示驱动芯片及其数据处理方法 |
US11239944B1 (en) | 2020-08-14 | 2022-02-01 | Huawei Technologies Co., Ltd. | Methods and devices for rate adaptive forward error correction using a flexible irregular error correcting code |
US11599417B2 (en) * | 2021-01-14 | 2023-03-07 | Changxin Memory Technologies, Inc. | Error correction system |
US11990201B2 (en) * | 2021-01-14 | 2024-05-21 | Changxin Memory Technologies, Inc. | Storage system |
EP4071762B1 (en) * | 2021-01-14 | 2023-07-05 | Changxin Memory Technologies, Inc. | Error correction system |
JP2023512892A (ja) * | 2021-01-14 | 2023-03-30 | チャンシン メモリー テクノロジーズ インコーポレイテッド | 比較システム |
-
2021
- 2021-01-14 CN CN202110050737.4A patent/CN114765056B/zh active Active
- 2021-08-16 KR KR1020227021307A patent/KR20220104030A/ko active Search and Examination
- 2021-08-16 JP JP2022538785A patent/JP7454676B2/ja active Active
- 2021-08-16 EP EP21863077.0A patent/EP4053701A4/en active Pending
- 2021-08-16 WO PCT/CN2021/112699 patent/WO2022151730A1/zh unknown
- 2021-08-16 US US17/627,013 patent/US11886292B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4330860A (en) * | 1979-03-30 | 1982-05-18 | Matsushita Electric Industrial Co., Ltd. | Error correcting device |
JPS61277230A (ja) * | 1985-05-31 | 1986-12-08 | Canon Inc | 誤り検出訂正符号発生方式 |
US4736376A (en) * | 1985-10-25 | 1988-04-05 | Sequoia Systems, Inc. | Self-checking error correcting encoder/decoder |
CN110968450A (zh) * | 2018-09-30 | 2020-04-07 | 长鑫存储技术有限公司 | 数据存储方法及装置、存储介质、电子设备 |
CN109408275A (zh) * | 2018-10-12 | 2019-03-01 | 盛科网络(苏州)有限公司 | 用于检测纠错模块的验证方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022151730A1 (zh) | 2022-07-21 |
EP4053701A1 (en) | 2022-09-07 |
EP4053701A4 (en) | 2023-08-02 |
CN114765056B (zh) | 2024-07-12 |
US11886292B2 (en) | 2024-01-30 |
KR20220104030A (ko) | 2022-07-25 |
JP7454676B2 (ja) | 2024-03-22 |
US20220365844A1 (en) | 2022-11-17 |
JP2023512893A (ja) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11791009B2 (en) | Error correction system | |
EP4050608B1 (en) | Comparator with xor and xnor logic circuits | |
US11990201B2 (en) | Storage system | |
US11599417B2 (en) | Error correction system | |
US8773165B2 (en) | Logic circuit performing exclusive or operation and data processing system including the same | |
CN114765056B (zh) | 存储系统 | |
CN114765054B (zh) | 纠错系统 | |
US11681458B2 (en) | Memory device and method reading data | |
WO2022151722A1 (zh) | 存储系统 | |
CN114765055B (zh) | 纠错系统 | |
WO2022151723A1 (zh) | 比较系统 | |
JP2024096874A (ja) | 記憶システム | |
US11698835B2 (en) | Memory and operation method of memory | |
JP4397699B2 (ja) | 半導体集積回路 | |
SU982098A1 (ru) | Запоминающее устройство с исправлением ошибок | |
JPH0534703B2 (zh) | ||
KR20080108869A (ko) | 데이터 전송 시스템 |
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 |