错误检测和校正装置及方法

申请号 CN201380061532.X 申请日 2013-06-24 公开(公告)号 CN104798047B 公开(公告)日 2017-08-11
申请人 英特尔公司; 发明人 W.吴; S-L.L.卢; R.阿加瓦尔; H.斯特拉科夫斯基;
摘要 描述了用于错误检测和校正的装置及方法的 实施例 。码字可以具有数据部分和相关联的校验位。在实施例中,一个或多个错误检测模 块 可以被配置成检测码字中的多个错误类型。与一个或多个错误检测模块耦合的一个或多个错误校正模块可以还被配置成:一旦多个错误类型的错误由一个或多个错误检测模块检测到,就校正它们。可以描述和/或要求保护其它实施例。
权利要求

1.一种用于错误检测和校正的装置,包括:
一个或多个错误检测模,其包括一个或多​​个错误校正码,被配置成通过使用一个或多个错误校正码而检测在具有数据部分和相关联的校验位的码字中的多个错误类型的错误的存在,其中一个或多个错误检测模块包括:第一校正子计算模块,其具有一个或多个错误校正码中的至少一个,被配置成至少部分地基于码字并使用至少一个错误校正码而计算第一校正子;以及第二校正子计算模块,其与第一校正子计算模块耦合,并且被配置成至少部分地基于第一校正子而计算被归一化的第二校正子;以及
一个或多个错误校正模块,其与一个或多个错误检测模块耦合,并且被配置成在由一个或多个错误检测模块检测时校正多个错误类型的错误。
2.根据权利要求1所述的装置,其中第一校正子使得能够检测多个错误类型的第一错误类型的错误,并且第二校正子使得能够检测多个错误类型的第二错误类型的错误。
3.根据权利要求2所述的装置,其中一个或多个错误检测模块还包括:
错误类型分类模块,其与第二校正子计算模块耦合,并且被配置成:至少部分地基于第一校正子而分类第一错误类型的一个或多个错误子类型,并且至少部分地基于第二校正子而分类第二错误类型的一个或多个错误子类型。
4.根据权利要求2-3中任一项所述的装置,其中一个或多个错误校正模块包括:
多路复用模块,其与一个或多个错误检测模块中的至少一个耦合,并且被配置成选择性地输出第一校正子或第二校正子;
错误掩码计算模块,其与多路复用模块耦合,并且被配置成计算第一错误掩码;以及错误校正器模块,其与错误掩码计算模块耦合,并且被配置成通过将第一错误掩码应用到码字而校正码字中的多个错误类型的错误。
5.根据权利要求4所述的装置,其中一个或多个错误校正模块还包括:
突发错误中继器模块,其与错误掩码计算模块耦合,并且被配置成向第一错误掩码补充多个缺失的错误位以形成第二错误掩码;
其中错误校正器模块被配置成通过将第二错误掩码应用到码字而校正码字中的多个错误类型的错误。
6.根据权利要求4所述的装置,其中多路复用模块被配置成:至少部分地基于从错误类型分类模块接收的信息而选择第一校正子或第二校正子。
7.根据权利要求1所述的装置,其中一个或多个错误校正码被配置成针对具有至少一个错误的码字产生非零值。
8.根据权利要求7所述的装置,其中一个或多个错误校正码被配置成使能在突发错误校正子和随机错误校正子之间的区别。
9.根据权利要求8所述的装置,其中一个或多个错误校正码被配置成使能多个突发错误校正子的区别。
10.根据权利要求7-9中任一项所述的装置,其中一个或多个错误校正码被配置成使能在奇数突发校正子和单位错误校正子之间的区别。
11.根据权利要求7-9中任一项所述的装置,其中一个或多个错误校正码被配置成使能在偶数突发校正子和双位错误校正子之间的区别。
12.根据权利要求1-3或7-9中任一项所述的装置,其中所述装置是存储器控制器
13.根据权利要求1-3或7-9中任一项所述的装置,其中所述装置是微处理器,所述微处理器包括:
缓存存储器,其具有多个动态随机存储器(DRAM)单元;
存储器控​​制器,其具有一个或多个错误检测模块和一个或多个错误校正模块,与缓存存储器耦合;以及
一个或多个处理器核,其与缓存存储器控制器耦合。
14.根据权利要求13所述的装置,其中多个DRAM单元被堆叠。
15.根据权利要求14所述的装置,其中多个DRAM单元被用作存储器侧缓存。
16.根据权利要求1-3或7-9中任一项所述的装置,其中所述装置是计算设备,包括:
系统存储器;以及
微处理器,其与系统存储器耦合,具有一个或多个错误检测模块和一个或多个错误校正模块。
17.一种用于错误检测和校正的装置,包括:
用于通过使用一个或多个错误校正码而检测在具有数据部分和相关联的校验位的码字中的多个错误类型的错误的存在的构件;
用于通过使用一个或多个错误校正码而计算用于码字的第一校正子的构件;
用于至少部分地基于第一校正子而计算第二校正子的构件;以及
用于在错误的检测时校正多个错误类型的错误的构件。
18.根据权利要求17所述的装置,其中第一校正子使得能够检测码字的至少第一错误类型的一个或多个错误的存在,并且第二校正子使得能够检测码字的至少第二错误类型的一个或多个错误的存在。
19.根据权利要求18所述的装置,还包括:
用于至少部分地基于第一校正子而计算第一错误掩码以校正第一错误类型的一个或多个错误的构件;以及
用于至少部分地基于第二校正子而计算第二错误掩码以校正第二错误类型的一个或多个错误的构件。
20.根据权利要求17-19中任一项所述的装置,其中多个错误类型包括随机错误类型和突发错误类型。

说明书全文

错误检测和校正装置及方法

技术领域

[0001] 本公开一般涉及微处理器存储器装置及方法,并且更具体地涉及用于检测和校正多个错误类型的错误的装置和方法。

背景技术

[0002] 最近,管芯堆叠技术使得多层的动态随机存取存储器(DRAM)和/或逻辑管芯能够被集成到纵向堆叠中。连同快速互连,堆叠的存储器可以提供高带宽和低等待时间的存储器子系统。
[0003] 堆叠的DRAM的有前景的使用是作为存储器侧缓存(cache)。使用DRAM作为缓存一般还需要标签阵列的实现。然而,整个标签开销可能太大以致于不能被存储在芯片上。例如,具有64字节的1GB DRAM缓存可能需要多达96MB的标签存储。一种方法是将标签条目与数据一起存储在DRAM中。该方法可能负面地影响可靠性。因为标签和数据二者被存储在一起,标签中的位翻转可能引起整个缓存行中的所有数据被误用。附图说明
[0004] 通过结合附图的以下详细描述将容易地理解实施例。为了促进该描述,同样的参考标号指明同样的结构元件。在附图的图中通过示例的方式而不是通过限制的方式图示实施例。
[0005] 图1是图示根据各种实施例的合并本公开的各方面的示例装置的框图
[0006] 图2图示根据各种实施例的可以将本公开的各方面应用到其中的多个错误类型。
[0007] 图3图示根据各种实施例的可以将本公开的各方面应用到其中的多个突发错误。
[0008] 图4是图示合并本公开的各方面的示例错误检测模块和示例错误校正模块的框图。
[0009] 图5图示根据各种实施例的合并本公开的各方面的示例错误检测和校正过程。
[0010] 图6图示根据各种实施例的合并本公开的各方面的示例错误检测过程。
[0011] 图7图示根据各种实施例的合并本公开的各方面的示例错误校正过程。
[0012] 图8图示根据各种实施例的可以将本公开的各方面合并到其中的示例计算系统/设备。
[0013] 图9图示根据各种实施例的具有编程指令、合并本公开的各方面的制品。

具体实施方式

[0014] 在以下详细描述中,对形成本文一部分的附图做出参考,其中同样的标号遍及全文指明同样的部件,并且其中通过可以被实践的说明实施例的方式示出。要理解的是:可以利用其它实施例,并且可以做出结构或逻辑改变而不脱离本公开的范围。因此,以下详细描述不要以限制性意义来理解,并且实施例的范围由所附权利要求及其等同物限定。
[0015] 可以依次以最有助于理解所要求保护的主题的方式将各种操作描述为多个离散的行动或操作。然而,描述的次序不应被解释为暗示这些操作必定是依赖次序的。特别地,可以不以呈现的次序执行这些操作。可以以不同于所述实施例的次序执行所述操作。在附加的实施例中可以执行各种附加的操作和/或可以省略所述操作。
[0016] 为了本公开的目的,短语“A和/或B”是指(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”是指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
[0017] 其中,本公开叙述“一个”或“第一”元件或其等同物,这样的公开包括一个或多​​个这样的元件,既不要求也不排除两个或更多这样的元件。此外,用于标识的元件的序数指示符(例如第一、第二或第三)用于在元件之间进行区分,并且不指示或暗示所需或有限数量的这样的元件,它们也不指示这样的元件的特定位置或次序,除非另行具体陈述。
[0018] 描述可以使用短语“在一个实施例中”、“在实施例中”、“在另一个实施例中”、“在多个实施例中”、“在各种实施例中”等,其可以各自指代一个或多个相同或不同的实施例。此外,如关于本公开的实施例所使用的术语“包含”、“包括”、“具有”等是同义的。
[0019] 如本文所使用,术语“模块”可以指代以下各项、是以下各项的部分或包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件固件程序的处理器(共享的、专用的或群组)和/或存储器(共享的、专用的或群组)、组合逻辑电路和/或提供所述功能性的其它合适的组件。
[0020] 现在参考图1,根据各种实施例,示出了图示合并本公开的各方面的示例装置的框图。在实施例中,诸如信息处理系统或计算机之类的装置100可以包括存储器110、存储器控制器120以及一个或多个处理器核130。
[0021] 在实施例中,还被称为存储装置或计算机数据存储装置的存储器110可以包括计算机组件和用于保持数字数据的记录介质。在一个实施例中,存储器110可以是处理器寄存器和缓存。在另一个实施例中,存储器110可以以在线大容量存储设备的形式,诸如作为二级存储的硬驱动装置。在线大容量存储设备可以包括可以以各种形式出现的非易失性存储器,包括但不限于NAND(闪速)存储器、电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、合并了忆阻器技术的存储器、MRAM、STT-MRAM、三维(3D)交叉点电阻式存储器,诸如相变存储器(PCM)或PCM和开​​关(PCMS),等等。然而在另一个实施例中,存储器110可以以离线海量存储设备的形式,诸如作为三级存储的DVD-ROM。
[0022] 然而在另一个实施例中,存储器110可以包括控制器卡和系统随机存取存储器(RAM),诸如DRAM 112。RAM使得能够以任何随机次序、用类似量的时间访问所存储的数据而不管数据存储位置。现代RAM的主要形式包括但不限于静态RAM(SRAM)和动态RAM(DRAM)。SRAM可以表现出数据残留,而必须周期性地刷新DRAM中的电容器电荷以保持信息。SRAM和DRAM二者都是易失性的,因为当不为存储器供电时,最终丢失数据。DRAM 112中的电路可以与传统的平或平面方法或调制解调器管芯堆叠技术集成。也已知为芯片堆叠或纵向集成的管芯堆叠是纵向装配多个芯片的过程,以增加单个半导体封装内的芯片的量,并且实现具有电路之间互连的较短路由的较佳电性能。管芯堆叠可以应用于易失性和非易失性存储器二者。
[0023] 存储器控制器120可以被配置成提供到存储器110的接口,并管理去往和来自存储器110的数据流。在实施例中,存储器控制器120可以以分离的芯片的形式,或者与存储器110集成。在实施例中,存储器控制器120可以被实现在母板上或在微处理器上形成集成的存储器控制器(IMC)以潜在地减少存储器等待时间。
[0024] 在实施例中,存储器控制器120可以具有错误检测模块122和错误校正模块124。在一些情况下,在有噪声的信道中的传输期间可能引入错误,因为许多通信信道遭受信道噪声。在其它情况下,可能在存储装置中引入错误。例如,在芯片的材料中的放射性原子可能衰变。衰变可以产生撞击存储器单元以改变其状态并引起单位翻转(SBU)或多位翻转(MBU)的粒子。利用管芯堆叠技术,相同的粒子就受影响的位而言可以具有大的影响。在实施例中,错误检测模块122可以被配置成检测在传输或存储期间由噪声或其它损害引起的错误;错误校正模块124可以被配置成以最佳努重构原始的无错误数据。
[0025] 通过向数据添加一些冗余,诸如稍后可以用于验证数据完整性并恢复确定恶化的数据的一个或多个校验位,一般可以实现错误检测和校正。作为示例,前向错误校正(FEC)或信道编码可以使用错误校正码来编码数据,并且稍后利用恢复诸如随机错误之类的错误类型的能力来解码数据。在实施例中,错误检测模块122可以被配置成检测多个错误类型的错误的存在,诸如突发错误以及随机错误。随后,错误校正模块124可以被配置成:一旦多个错误类型的错误由错误检测模块122检测到,则校正它们。
[0026] 在实施例中,处理器核130可以具有一个或多个中央处理单元(CPU)或核,其中每个核可以读取并执行CPU指令,诸如添加、移动、分支、读、写等等。随着多个核被集成到单个集成电路管芯或单个芯片封装中的多个管芯上,多核处理器顺从于并行计算,从而增加整体计算速度。
[0027] 现在参考图2,根据各种实施例,示出可以将本公开的各方面应用到其中的多个错误类型200。错误可以随机发生,但是具有某一概率分布图(profile)。错误还可以主要在突发中发生。因此错误可以一般被宽泛地分组为随机错误和突发错误。在图2中,四个数据传递Data_0 210、Data_1 220、Data_2 230和Data_3 240,例如来自缓存行的一半,被示为以交错的方式250传递。正如所示,错误类型200可以包括随机错误和突发错误。随机错误可以由随机位故障280引起,而突发错误可以由近邻位故障260和/或单线故障270引起。在下文中,错误类型还可以被称为错误的类型,为了本公开的目的,其可以被认为是同义的,除非上下文另行清楚指示;并且因而可以可互换地使用所述术语。
[0028] 存储器芯片的故障可以引起甚至在重新引导系统后都不能被纠正的硬错误。需要替换存储器芯片以纠正硬错误。相反,在芯片级或系统级中的软错误只改变程序中的数据或指令。可以通过重写正确的数据或通过真时(on the fly)的错误检测和校正技术来校正软错误。除了随机软和硬错误外,作为处理器核130和存储器110之间链接的存储器控制器120可以变成另一个错误源。例如,由于在DRAM信道上的突发传递,在数据总线上的单线故障270可以表现为跨针对一半缓存行(32B)的Data_0 210、Data_1 220、Data_2 230和Data_
3 240的4位错误。作为另一个示例,在一个存储器芯片中的多位故障可以引起多个近邻位在Data_1 220中出故障。
[0029] 在实施例中,可以通过错误检测模块122和错误校正模块124检测和校正这些上述的故障。在DRAM缓存的情况下,数据完整性需要被广泛和高效地保护。然而,因为缺乏足够的位,一般不能将常规的DRAM错误校正码(ECC)方案应用到DRAM缓存。DIMM结构可以是固定的,即每8个数据芯片一个ECC芯片。与数据一起存储标签和元数据将直接减少为ECC预留的位数。此外,常规的ECC技术,诸如双错误校正和三错误检测(DEC-TED),不能校正多个类型的错误。错误检测模块122和错误校正模块124,尤其是由特殊设计的奇偶校验矩阵表征的实施例,可以用类似于DEC-TED的低开销校正随机和突发错误二者。
[0030] 现在参考图3,根据各种实施例,示出可以将本公开的各方面应用到其中的多个突发错误300。正如所示,多个突发错误300可以由模式(pattern)编号310编号,具有位交错之后的可区分的错误位模式320,其中“1”是指位故障,“0”是指有效,并且“-”是指有效位但来自不同的传递。正如所示,模式编号1-4由单线故障引起,而模式编号5-8由错误源330下的近邻位故障引起。码字的权重340表示非零条目的数量,因而数字上是奇数或者偶数。
[0031] 错误检测模块122和错误校正模块124,尤其是具有由特殊设计的奇偶校验矩阵表征的ECC的实施例,可以保持随机双错误校正能力,但是还校正如图2中所示的单线和近邻位故障。在消除单位和双位的情况之后,在图3中列举基于图2中的多位错误模式。回想到对于图2中图示的例如半缓存行数据的实施例,在传输期间对四个传递进行位交错。单线故障因而可以表现为在四个近邻位中的错误,并且在相同传递中的近邻位故障可以在传输中由4的距离分离。在任一情况下,位翻转的确切数量可以取决于存储的位值。
[0032] 现在参考图4,根据各种实施例,图示了合并本公开的各方面的示例错误检测模块402和示例错误校正模块404。如上所述,错误可以随机地发生,但是具有某一概率分布图,或者在突发中动态地发生。错误检测模块402可以被配置成检测随机错误和突发错误的混合,而错误校正模块404可以被配置成校正随机错误和突发错误的混合。因此错误检测模块
402和错误校正模块404可以被配置成共同地实现错误控制。
[0033] 在实施例中,错误检测模块402可以配置有各种组件,诸如第一校正子(syndrome)计算器410、有效码字过滤器420、第二校正子计算器430以及错误类型分类器440,其可操作地彼此耦合,如图4中所示。为了易于理解,第二校正子计算器430还可以被称为归一化的校正子计算器430。在实施例中,错误校正模块404可以配置有各种组件,诸如多路复用器(mux)450、错误掩码计算器460、突发错误中继器(repeater)470以及错误校正器480,其可操作地彼此耦合,如图4中所示。
[0034] 在实施例中,第一校正子计算器410可以被配置成基于特殊配置的奇偶校验矩阵来计算校正子。每个ECC可以由其也被称为H矩阵的奇偶校验矩阵唯一地定义。H矩阵一般可以确定错误校正子组成、错误校正和检测能力。可以配置第一校正子计算器410中的H矩阵,使得可以排他地标识和校正所选择的突发错误模式,诸如,如图3中所述的单线故障和近邻位故障。
[0035] 一般地,突发错误的错误校正子与其第一错误位的校正子成比例,并且对于每个特定的突发模式而言比例恒定。在实施例中,可以重新布置奇偶校验矩阵中的列,以确保需被校正的所有突发错误是既可检测的又可校正的。如本文使用的可检测的指代突发错误的校正子是非零的并且不同于所有可校正的随机错误这一事实。如本文使用的可校正的指代突发错误的校正子是非零的并且相互不同这一事实。此外,在实施例中,在第一校正子计算器410中使用的新ECC可以基于:基于BCH的DEC-TED码,因此保持随机双错误校正能力。
[0036] 用于保护芯片上缓存的常见类型的ECC是BCH码。BCH码形成通过使用有限域而构造的循环错误校正码的类。BCH码是在1959年或约在1959年由Hocquenghem、Bose和Ray-Chaudhuri首先开发的,其中这些码的名称由发明者的姓名首字母组成。下面的等式(1)示出用于常规DEC-TED BCH码的标准H矩阵。本领域技术人员可以领会:全1的第一行本质上是整体奇偶性。在校正子中具有整体奇偶位,可以自动区分奇数错误和偶数错误。
[0037]
[0038] 等式(1)中的每一列可以被视为元素,并且等式(1)中的H矩阵可以被重写成下面的等式(2)。
[0039] 其中
[0040] 以上等式中的H矩阵可以用于计算码字的校正子。任何有效的码字必须具有零校正子。非零校正子是指码字是无效的,并且校正子的值与错误位有关。更具体地,在线性码中,错误校正子等于对应于错误位的H矩阵列的总和。例如,如果在i、j和k的位的位置处有 3个错误,则校正子将等于hi+hj+hk。
[0041] 基于等式(1)和等式(2),可以观察到:hi+1 = hi * A,其中A等于[1,α,α3],并且hi = h0 * Ai。因而等式(2)中的H矩阵可以重写成下面的等式(3),其中以几何序列表示H矩阵列。
[0042]
[0043] 基于等式(3),可以观察到:突发错误的校正子可以由乘以固定比例的其第一错误位的校正子表示。使用图3中的突发错误300作为示例,让Kn被称为突发系数来表示用于图3中第n个模式的固定值。那里,如果错误位于(i,i+1,i+2)的位的位置中,则错误校正子将是hi+hi+1+hi+2 =hi * (1 + A + A2),其中K1 = (1 + A + A2)是固定值,无论第一位从何处开始。作为另一个示例,类似地,可以为图3中的模式6(1---1---0---1)找到K6 = (1 + A4 + A12)。同理,可以为图3中的每个突发模式找到突发系数。
[0044] 可以有在错误检测模块402和错误校正模块404中使用突发系数Kn的许多优点。一个优点可以是使用此单个参数Kn来表示一组错误,因而有助于交叉比较所有校正子值并极大地减少所有比较数量。否则设计空间变得如此大,以致于盲目搜索是不实际的。另一个优点可以是使用此单个参数Kn来有助于标识突发类型。可以用每个突发系数来归一化校正子。当结果等于单位校正子时,可以发现突发模式。又一个优点可以是使用此单个参数Kn来简化错误校正。一旦发现来自随后计算的归一化的校正子的第一错误位(下面将更全面地描述),可以根据其突发模式而补充其余的位以形成完整的错误掩码。
[0045] 在错误检测模块402中使用的H矩阵可以还被配置成确保图3中的所有突发模式是可检测的和可校正的。在实施例中,H矩阵可以被配置成针对具有至少一个错误的码字产生非零值。那碰巧是这种情况,因为DECTED具有6的汉明(Hamming)距离,因而具有到有效字的错误混叠(alias)需要至少6位的差异。然而,图3中的突发模式可以具有4的最大位权重。因此得自图3的校正子中没有一个将是零。此外,在实施例中,H矩阵可以被配置成使能突发错误校正子和随机错误校正子的区别。此外,在实施例中,H矩阵可以被配置成使能多个突发错误校正子的区别,其将确保所有突发错误校正子彼此不同。另外,H矩阵可以被配置成使能奇数突发校正子和单位错误校正子之间、偶数突发校正子和双位错误校正子之间的区别。
[0046] 在实施例中,可以重新布置H矩阵的列,以确保图3中的所有突发模式是可检测的和可校正的。根据BCH码定义,可以以任何次序重新布置H矩阵列,并且结果仍然是有效的H矩阵。然而,如果列将被任意搅乱,则几何序列的属性因而突发系数将丢失。在实施例中,可以基于数论中的费小定理的重新布置属性来重新布置H矩阵的列。具体地,可以通过每L列拾取一列来重新布置H矩阵列,其中L和(N-1)是互质的,并且N是BCH码所基于其中的有限域GF(2m)的次数(degree)。L可以被称为重新布置的H矩阵的步长。下面在等式(4)中示出具有重新布置的H矩阵的步长(L)的H矩阵(H2)。当L=1时,等式(2)中的H矩阵(H1)将是特例。
[0047]
[0048] 其中对于任何i,  (4)。
[0049] 作为示例,如果DECTED码基于GF(29),则在此情况下的(N-1)等于29-1=511,并且对于N的互质的总数是432。因此,有432个种类的可以被测试的H矩阵。通过尝试所有不同的L值,可以找到步长以及因而找到H矩阵,以确保图3中的所有突发模式是可检测的和可校正的。
[0050] 在实施例中,由第一校正子计算器410计算的第一校正子可以被发送到有效码字过滤器420,以确定码字的有效性。回想到有效的码字具有零校正子。非零校正子是指码字是无效的。有效的码字可以不需要任何进一步的校正。无效的码字可以被进一步处理,用于确定其错误类型和/或错误子类型。
[0051] 在实施例中,第一计算的校正子可以还被发送到第二校正子计算器430,第二校正子计算器430可以被配置成针对潜在的突发错误而计算归一化的校正子或第一位校正子。使用图3中的突发错误作为示例,有8种类型的突发错误,并且因此从校正子K1至校正子K8的8个归一化的校正子,其中归一化的校正子等于第一计算的校正子除以突发系数K。
[0052] 在实施例中,由归一化的校正子计算器430计算的归一化的校正子以及由第一校正子计算器410计算的第一计算的校正子可以被发送到错误类型分类器440。错误类型分类器440可以被配置成对错误的错误类型进行分类。在实施例中,错误类型分类器440可以被配置成确定错误是可校正的错误还是不可校正的错误,在可校正的错误的情况下是随机错误还是突发错误。此外,错误类型分类器440可以被配置成确定错误的子类型。例如,随机错误可以被分类为单位错误、双位错误和不可校正的错误;可以用其突发错误模式来分类突发错误。在实施例中,如果归一化的校正子中的任何一个是有效的单位校正子,则可以检测突发错误模式。否则,错误可以是随机错误。
[0053] 在实施例中,错误校正模块404可以从错误检测模块402接收码字,所述码字具有第一计算的校正子和/或归一化的校正子以及错误分类信息,例如包括错误类型和错误子类型。一般地,可以通过定位第一错误位并根据其突发模式而补充其余位来校正突发错误。在实施例中,多路复用器450可以被配置成选择哪个输入(第一计算的校正子或归一化的校正子)应被提供给其余的错误校正逻辑。选择可以基于从错误类型分类器440接收的信号和/或信息。
[0054] 在实施例中,错误掩码计算器460可以被配置成基于由多路复用器450发送的第一计算的校正子或者归一化的校正子来计算错误掩码。如果错误被分类为随机错误,则错误掩码可以由错误校正器480直接应用在具有随机错误的码字上。如果错误被分类为突发错误,则从错误掩码计算器460中产生的错误掩码可以仅包括第一错误位。突发错误中继器470可以被配置成将其余的错误位补充到第一错误位以形成整个错误掩码。例如,对于图3中的突发模式#3(1011),错误掩码可以具有被设置到1的第200位。突发错误中继器470之后的完整错误掩码将不仅包括第200位而且还包括第202和第203位。然后,错误校正器480可以被配置成将错误掩码添加到码字。具体地,对应于掩码中的“1”的那些位可以被翻转,并且因而被校正。
[0055] 图5图示根据各种实施例的合并本公开的各方面的示例错误检测和校正过程500。如所示,过程500可以由错误检测模块402和错误校正模块404执行,以实现本公开的一个或多个实施例。在实施例中,该过程可以在块510处开始,其中错误检测模块402可以结合图4中公开的各种实施例来检测在具有数据部分和相关联的校验位的码字中的多个错误类型的错误。接下来,在块520处,错误校正模块404可以在块510中的错误检测时校正多个错误类型的错误。在一些实施例中,然后可以在块510处开始重复过程500以用于附加的操作循环。在一些实施例中,过程500可以代替地结束。
[0056] 图6图示根据各种实施例的合并本公开的各方面的示例错误检测过程600。在如所示的实施例中,错误检测过程600可以由错误检测模块402执行,作为示例,用以实现过程500的块510的操作的一个或多个实施例。过程可以在块610处开始,其中第一校正子计算器
410作为示例可以计算用于码字的第一校正子。接下来,在块620处,有效码字过滤器420作为示例可以确定码字的有效性。如果确定了没有任何可检测的错误存在,则过程600可以结束,例如,如果第一校正子等于零的话。如果确定了存在一个或多个可检测的错误,则过程
600可以继续进行到块630。
[0057] 在块630处,归一化的校正子计算器430作为示例可以部分地基于第一计算的校正子而计算归一化的校正子。在实施例中,可以用每个突发系数归一化第一计算的校正子。利用第一计算的校正子和/或归一化的校正子,过程600可以继续进行以用于错误类型确定。
[0058] 可以在判定块640处做出关于可校正的突发错误是否可以存在于码字中的判定。在判定块640处,如果确定了存在至少一个可校正的突发错误,则过程600可以继续进行到块650,其中突发错误将被分类到它们的错误子类型中,诸如图3中的不同突发错误模式。如果确定了没有任何可校正的突发错误存在,则过程600可以继续进行到块660,以用于进一步的错误类型确定。
[0059] 类似地,可以在判定块660处做出关于可校正的随机​​错误是否可以存在于码字中的另一个判定。在判定块660处,如果确定了存在一个或多个可校正的随机错误,则过程600可以继续进行到块670,其中随机错误将被分类到它们的错误子类型中,诸如单位错误、双位错误等。如果确定了没有任何可校正的随机错误存在,其导致一些类型的可检测的但不可校正的错误。如果存在可检测的但不可校正的错误,过程600可以结束,并且在一些实施例中它还可以导致系统停止或机器校验。
[0060] 现在参考图7,该图图示了根据各种实施例的合并本公开的各方面的示例错误校正过程700。如所示,过程700可以在块710处开始,其中错误校正模块404作为示例可以从错误检测模块402接收具有第一校正子和/或归一化的校正子以及错误分类信息的码字。接下来,可以在判定块720处做出关于可校正的错误是否可以存在于码字中的判定。在判定块720处,如果确定了没有任何可校正的错误存在,则过程700可以结束。如果确定了存在一个或多个可校正的错误,包括突发错误或随机错误,则过程700可以继续进行到判定块730,以用于进一步的行动。在块730处,可以做出关于突发错误是否可以存在于码字中的判定。在各种实施例中,多路复用器450作为示例可以被配置成在块720和块730中做出这样的判定。
[0061] 在判定块730处,如果确定了没有任何突发错误存在,其是指可校正的错误一般是随机错误类型。因而过程700可以继续到块770,其中例如通过错误掩码计算器460用第一校正子计算错误掩码。然而,如果在块730处确定了存在一个或多个突发错误,则过程700可以继续进行到块740,其中例如通过错误掩码计算器460用归一化的校正子计算错误掩码。如果错误被分类为突发错误,则错误掩码将只包括第一错误位。随后,在块750处,然后可以例如通过突发错误中继器470补充其余的错误位,以形成完整的错误掩码。最后,在块760处,从块750或者770发送的错误掩码可以应用到码字,以例如通过错误校正器480而纠正错误。
[0062] 图8图示根据各种实施例的可以将本公开的各方面合并到其中的示例计算系统/设备800。如所图示,示例计算系统/设备800可以包括:耦合到(一个或多个)处理器810中的至少一个的控制逻辑820,耦合到控制逻辑820的存储器830,耦合到控制逻辑820的非易失性存储器(NVM)/存储装置840,以及耦合到控制逻辑820的一个或多个通信接口850。在实施例中,(一个或多个)处理器810中的每一个可以是包括一个或多个处理器核。存储器830可以包括图1中的存储器110,如较早先所述。
[0063] 在一个实施例中,控制逻辑820可以包括任何合适的接口控制器,以提供到(一个或多个)处理器810中的至少一个和/或到与控制逻辑820通信的任何合适的设备或组件的任何合适的接口。在另一个实施例中,控制逻辑820可以包括一个或多个输入/输出(I/O)控制器,以提供到NVM/存储装置840和通信接口850的接口。然而在另一个实施例中,控制逻辑820可以包括一个或多个存储器控制器,以提供到存储器830的接口。存储器830可以用于加载和存储数据和/或指令,例如用于系统/设备800。在一个实施例中,例如,存储器830可以包括任何合适的易失性存储器,诸如合适的动态随机存取存储器(DRAM)。在实施例中,可以使用管芯堆叠技术来堆叠DRAM。此外,堆叠的DRAM可以被用作存储器侧的缓存。
[0064] NVM/存储装置840可以用于存储数据和/或指令。在实施例中,NVM/存储装置840可以包括任何合适的非易失性存储器,包括但不限于NAND(闪速)存储器、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、合并了忆阻器技术的存储器、MRAM、STT-MRAM、三维(3D)交叉点电阻式存储器、诸如相变存储器(PCM)或PCM和开关(PCMS)、等等。在实施例中,例如,NVM/存储装置840可以包括任何合适的(一个或多个)非易失性存储设备,诸如一个或多个硬盘驱动装置((一个或多个)HDD)、一个或多个固态驱动装置、一个或多个光盘(CD)驱动装置和/或一个或多个数字通用盘(DVD)驱动装置。
[0065] NVM/存储装置840可以包括存储资源,所述存储资源是在其上安装系统/设备800的设备的物理部分,或者它可以由所述设备可访问但不一定是所述设备的一部分。例如,可以通过网络、经由(一个或多个)通信接口850访问NVM/存储装置840。
[0066] 存储器830和NVM/存储装置840尤其可以包括错误检测和校正逻辑812的硬件和/或软件实现方式。错误检测和校正逻辑812的软件部分可以包括指令,所述指令在由(一个或多个)处理器810(或嵌入式控制器(未示出)中的至少一个执行时导致系统/设备800实践上述错误检测和校正过程中的一个或多个。在其它实施例中,错误检测和校正逻辑812的硬件和/或软件实现方式可以位于控制逻辑820和/或(一个或多个)处理器810中。
[0067] (一个或多个)通信接口850可以为系统/设备800提供接口,以通过一个或多个网络和/或与任何其它合适的设备通信。(一个或多个)通信接口可以包括任何合适的硬件和/或固件,诸如网络适配器、一个或多个天线、无线接口等等。在实施例中,(一个或多个)通信接口850可以包括将耦合到有线或无线的、公共和/或专用的、局域和/或广域网的用于系统/设备800的接口。在实施例中,(一个或多个)通信接口850可以包括用于系统/设备800的接口,以使用NFC、光学通信(例如条形码)、蓝牙或其它类似的技术来与另一个设备直接通信(例如没有媒介物)。
[0068] 对于一个实施例,(一个或多个)处理器810中的至少一个可以与控制逻辑820和/或错误检测和校正逻辑812一起被封装。对于一个实施例,(一个或多个)处理器810中的至少一个可以与控制逻辑820和/或错误检测和校正逻辑812一起被封装,以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器810中的至少一个可以与控制逻辑820和/或错误检测和校正逻辑812被集成在相同管芯上。对于一个实施例,(一个或多个)处理器810中的至少一个可以与控制逻辑820和/或错误检测和校正逻辑812被集成在相同管芯上,以形成芯片上系统(SoC)。
[0069] 在各种实现方式中,系统/设备800可以是膝上型电脑、上网本、笔记本电脑、次笔记本电脑、超级本®、智能电话、平板、个人数字助理、超移动PC、移动电话、台式计算机、服务器打印机扫描仪、监视器、机顶盒、娱乐控制单元(例如游戏控制台)、数字相机、数字音乐播放器或数字录像机。另外,在上述交互中的其它设备可以被配置成执行各种公开的技术。
[0070] 图9图示根据各种实施例的具有编程指令、合并本公开的各方面的制品910。在各种实施例中,制品可以用于实现本公开的各种实施例。如所示,制品910可以包括计算机可读非暂时性存储介质920,被配置成实现错误检测和校正930的指令驻留在其中。存储介质920可以表示宽范围的本领域中已知的持久存储介质,包括但不限于闪速存储器、动态随机存取存储器、静态随机存取存储器、光盘、磁盘等。指令930响应于通过装置对它们的执行可以使得所述装置能够执行本文所述的各种操作。例如,根据本公开的实施例,存储介质920可以包括指令930,所述指令被配置成使装置或系统实践图5的过程500的错误检测和校正的一些或所有方面。
[0071] 因而,已经描述了与错误检测和/或校正相关联的装置、方法和存储介质。在实施例中,装置可以包括一个或多个错误检测模块,其具有一个或多个错误校正码,被配置成检测在具有数据部分和相关联的校验位的码字中的多个错误类型的错误的存在,这通过使用一个或多个错误校正码。所述装置可以还包括一个或多个错误校正模块,所述错误校正模块与一个或多个错误检测模块耦合,并且被配置成在由一个或多个错误检测模块检测时校正多个错误类型的错误。
[0072] 在实施例中,一个或多个错误检测模块可以包括:第一校正子计算模块,其具有一个或多个错误校正码中的至少一个,被配置成至少部分地基于码字并使用至少一个错误校正码而计算第一校正子;以及第二校正子计算模块,其与第一校正子计算模块耦合,并且被配置成至少部分地基于第一校正子而计算被归一化的第二校正子。第一校正子可以使能多个错误类型的第一错误类型的错误的检测,并且第二校正子可以使能多个错误类型的第二错误类型的错误的检测。
[0073] 在实施例中,一个或多个错误检测模块可以包括:错误类型分类模块,其与第二校正子计算模块耦合,并且被配置成:至少部分地基于第一校正子而分类第一错误类型的一个或多个错误子类型,并且至少部分地基于第二校正子而分类第二错误类型的一个或多个错误子类型。
[0074] 在实施例中,一个或多个错误校正模块可以包括:多路复用模块,其与一个或多个错误检测模块中的至少一个耦合,并且被配置成选择性地输出第一校正子或第二校正子;错误掩码计算模块,其与多路复用模块耦合,并且被配置成计算第一错误掩码;以及错误校正器模块,其与错误掩码计算模块耦合,并且被配置成通过将第一错误掩码应用到码字而校正码字中的多个错误类型的错误。
[0075] 在实施例中,一个或多个错误校正模块可以包括:突发错误中继器模块,其与错误掩码计算模块耦合,并且被配置成向第一错误掩码补充多个缺失的错误位以形成第二错误掩码。错误校正器模块可以被配置成通过将第二错误掩码应用到码字而校正码字中多个错误类型的错误。
[0076] 在实施例中,多路复用模块可以被配置成:至少部分地基于从错误类型分类模块接收的信息而选择第一校正子或第二校正子。
[0077] 在实施例中,一个或多个错误校正码可以被配置成针对具有至少一个错误的码字而产生非零值。一个或多个错误校正码可以被配置成使能在突发错误校正子和随机错误校正子之间的区别。一个或多个错误校正码可以被配置成使能多个突发错误校正子的区别。一个或多个错误校正码可以被配置成使能在奇数突发校正子和单位错误校正子之间的区别。一个或多个错误校正码可以被配置成使能在偶数突发校正子和双位错误校正子之间的区别。
[0078] 在实施例中,装置可以是存储器控制器。
[0079] 在实施例中,装置可以是微处理器,所述微处理器具有:具有多个动态随机存储器(DRAM)单元的缓存存储器;具有一个或多个错误检测模块和一个或多个错误校正模块的、与缓存存储器耦合的存储器控​​制器;以及与缓存存储器控制器耦合的一个或多个处理器核。
[0080] 在实施例中,多个DRAM单元可以被堆叠。多个DRAM单元可以被用作存储器侧缓存。
[0081] 在实施例中,装置可以是计算设备,所述计算设备具有系统存储器和微处理器,所述微处理器与系统存储器耦合、具有一个或多个错误检测模块和一个或多个错误校正模块。装置可以是从膝上型电脑、上网本、笔记本电脑、超级本®、智能电话、平板、个人数字助理、超移动PC、移动电话、台式计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制单元、数字相机、数字音乐播放器或数字录像机中选择的计算设备。
[0082] 在实施例中,具有多个指令的一个或多个非暂时性机器可读存储介质可以被配置成响应于由控制器执行多个指令而使得控制器能够:检测在具有数据部分和相关联的校验位的码字中的多个错误类型的错误的存在,这通过使用一个或多个错误校正码;并在错误的检测时校正多个错误类型的错误。
[0083] 在实施例中,多个指令可以被配置成响应于由控制器执行多个指令而使得控制器能够:计算用于码字的第一校正子,通过使用一个或多个错误校正码;并至少部分地基于第一校正子,计算第二校正子。第一校正子可以使能码字的至少第一错误类型的一个或多个错误的存在的检测,并且第二校正子可以使能码字的至少第二错误类型的一个或多个错误的存在的检测。
[0084] 在实施例中,多个指令可以被配置成响应于由控制器执行多个指令而使得控制器能够:至少部分地基于第一校正子而计算第一错误掩码,以校正第一错误类型的一个或多个错误;并至少部分地基于第二校正子而计算第二错误掩码,以校正第二错误类型的一个或多个错误。
[0085] 虽然为了描述的目的而已经在本文中图示和描述了某些实施例,但是打算实现相同目的的各种各样的可替换和/或等效实施例或实现方式可以代替所示和所述的实施例而不脱离本公开的范围。本申请旨在覆盖本文所讨论的实施例的任何适配或变型。因此,显然意图的是本文所述的实施例仅由权利要求限定。
QQ群二维码
意见反馈