通用高和低随机位纠错逻辑的制作方法

文档序号:23068212发布日期:2020-11-25 17:55阅读:120来源:国知局
通用高和低随机位纠错逻辑的制作方法



背景技术:

本发明的实施例总体上涉及计算机存储器,并且更具体地涉及提供通用(common)的高和低随机位(bit)纠错逻辑。

计算机系统通常需要相当大量的高速随机存取存储器(ram)和非易失性存储器(诸如硬盘驱动器(hdd)和固态盘(ssd))以在计算机通电和操作时保持诸如操作系统软件、程序和其他数据的信息。该信息通常是由也被称为数据位的1(1′s)的和0的(0′s)模式组成的二进制数据。数据位经常在较高级别处被分组和组织。位例如由8位构成。该二进制信息通常在计算机系统的通电和初始程序加载(ipl)期间从诸如hdd的非易失性存储器加载到ram中。在正常计算机操作期间,数据也从非易失性存储器分页到ram中,并且从ram分页到非易失性存储器中。通常,计算机系统使用的所有程序和信息不能同时适合更小、更快和更昂贵的ram存储器。即使其确实适合,当关闭计算机系统电源时,该数据也会丢失,因为ram是易失性存储。目前,使用大量hdd和ssd来构建非易失性存储系统是常见的。



技术实现要素:

本发明的实施例包括用于提供通用的高和低随机位纠错逻辑的方法、系统和计算机程序产品。非限制性示例系统包括存储器系统,所述存储器系统包括存储器模块,所述存储器模块包括多个存储器设备和存储器缓冲器设备。所述多个存储器设备中的每一者被表征为高随机位错误率(rber)存储器设备和低rber存储器设备中的一者。该存储器缓冲器设备包括读取数据接口,其被配置为接收从对应于该多个存储器设备中的一个上的位置的存储器地址读取的数据。存储器缓冲器装置还包含通用纠错逻辑,其经配置以检测和校正从高rber存储器设备和低rber存储器设备两者读取的数据中的错误条件。通用纠错逻辑包括多个纠错单元,其提供不同的纠错复杂度等级并且具有不同的时延。多个纠错单元包括第一快速路径纠错单元,用于隔离和校正随机符号错误。所述第一快速路径纠错单元的等待时间小于所述多个纠错单元中的其他纠错单元的时延。优点可以包括针对高rber存储器设备和低rber存储器设备两者使用相同的纠错逻辑(例如,电路)的能力。组合电路可通过提供快速路径纠错单元来最小化针对展现高rber的存储器设备以及展现低rber的存储器设备的错误检查和校正的性能影响。

除了以上或以下描述的特征中的一个或多个特征之外,或作为替代方案,进一步的实施例可以包括通用纠错逻辑,该通用纠错逻辑进一步包括用于将在读数据接口处接收的数据直接传输到数据的请求者的旁路路径,所述旁路路径的旁路时延小于所述第一快速路径纠错单元的时延。优点可以包括提供路径的能力,所述路径不向读取循环添加任何等待时间,除非读取数据表现出错误。

除了以上或以下描述的特征中的一个或多个特征之外,或作为替代方案,进一步的实施例可以包括所述多个纠错单元,所述多个纠错单元进一步包括第二快速路径纠错单元,所述第二快速路径纠错单元被配置成用于隔离和校正所述多个存储器设备中的出故障的存储器设备以及随机符号错误,所述第二快速路径纠错单元的延迟时间比所述第一快速路径纠错单元的延迟时间长。优点可以包括通过提供与随机符号错误一起处理出故障的存储器设备的快速路径纠错单元来最小化出故障的存储器设备的错误检查和校正的性能影响的能力。除了以上或以下描述的特征中的一个或多个之外,或者作为替代,进一步的实施例可以包括改变备用存储器设备以替换出故障的存储器设备。优点可以包括通过提供备用存储器设备代替出故障的存储器设备来增强可用性。优点还可以包括通过移除出故障的存储器设备所需的校正来最小化未来读取的性能影响的能力。

除了以上或以下描述的特征中的一个或多个特征之外,或作为替代,进一步的实施例可以包括第二快速路径纠错单元被配置为隔离和校正两个出故障的存储器设备。优点可以包括通过提供处理两个出故障的存储器设备的快速路径纠错单元来最小化针对两个出故障的存储器设备的错误检查和校正的性能影响的能力。

除了以上或以下描述的特征中的一个或多个之外,或者作为替代,进一步的实施例可以包括通用纠错逻辑,所述通用纠错逻辑还包括读重试逻辑,所述读重试逻辑被配置为通过消除至少一个随机符号错误来从其他存储器地址请求读数据以隔离出故障的存储器设备。优点可以包括由于滤除随机符号错误的能力而改进的纠错能力。

除了以上或以下描述的特征中的一个或多个特征之外,或作为替代方案,进一步的实施例可以包括所接收的数据包括128个数据符号和22个纠错码(ecc)符号,所述第一快速通道纠错单元对所述128个数据符号中的至多2个数据符号中的随机符号错误进行隔离和纠错。优点可以包括最小化错误检查和校正的性能影响的能力。

除了以上或以下描述的特征中的一个或多个特征之外,或作为替代方案,进一步的实施例可以包括多个校正单元,该多个校正单元进一步包括第二快速路径纠错单元,该第二快速路径纠错单元被配置成用于隔离和校正出故障的存储器设备以及多达四个数据符号中的随机符号错误,以及第三纠错单元,被配置为隔离并校正出故障的存储器设备和多达九个数据符号中的随机位错误。所述第二快速路径纠错单元的延迟比所述第一快速路径纠错单元的延迟长并且小于所述第三纠错单元的延迟。优点可以包括通过提供处理不同错误条件的不同快速路径纠错单元来最小化对出故障的存储器设备的错误检查和校正的性能影响的能力。

通过本发明的技术实现了额外的特征和优点。本发明的其他实施例和方面在此详细描述并且被认为是所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,参考说明书和附图。

附图说明

在说明书结论的权利要求书中特别指出并清楚地要求保护本文描述的独占权利的细节。从以下结合附图的详细描述中,本发明的实施例的前述和其他特征和优点是显而易见的,

其中:

图1a描绘了包括双列直插式存储器模块(dimm)的现代存储器系统;

图1b描绘了包括双列直插式存储器模块(dimm)的现代存储器系统;

图2描绘了在当代存储器系统中的纠错动作的表;

图3a描绘了根据本发明的一个或多个实施例的包括dimm的存储器系统;

图3b描绘了根据本发明的一个或多个实施例的包括dimm的存储器系统;

图4描述了根据本发明的一个或多个实施例的由纠错逻辑执行的纠错动作的表;

图5描绘了包括根据本发明的一个或多个实施例的纠错电路的存储器系统的框图;

图6描绘了根据本发明的一个或多个实施例的用于从存储器读取数据的过程的流程图;

图7描绘了根据本发明的一个或多个实施例的数据符号和纠错码(ecc)符号的不同组合;

图8是根据本发明的一个或多个实施例的用于执行读取重试的过程的流程图;

图9描绘了根据本发明的一个或多个实施例的包括纠错逻辑的存储器系统的框图;并且

图10是根据本发明的一个或多个实施例的用于实现提供通用高和低随机位纠错逻辑的一些或所有方面的计算机系统的框图。

本文所描绘的图是说明性的。在不脱离本发明的精神的情况下,这里描述的图或操作可以有许多变化。例如,这些动作可按不同次序执行,或动作可被添加、删除或修改。同样,术语“耦合”及其变体描述了在两个元件之间具有通信路径并且不暗示这些元件之间的直接连接,而在它们之间没有中间元件/连接。所有这些变化被视为说明书的一部分。在附图和所披露实施例的以下详细说明中,附图中展示的这些不同元件配备有两个或三个数字参考号。在次要例外的情况下,每个参考号的最左边的数字对应于首先展示其元件的图。

具体实施方式

动态随机存取存储器(dram)装置设计和制造以及其他类型的创新存储装置的最新进步已导致一些技术具有比传统dram装置遇到的那些技术高得多的随机比特错误率(rber)。例如,传统的低rberdram器件可以具有大约1e-20的范围内的rber,并且较新的技术可以表现出更频繁的随机位错误并且具有大约1e-5的范围内的rber。当使用具有高rber的dram或其他存储技术时,高速缓存线中的符号错误的发生不再是极其罕见的现象,因为可能定期遇到比特和符号错误。对于具有大于三千兆赫(ghz)的时钟频率的系统,可能经常(就像每微秒操作或甚至每亚微秒)遇到错误。这将导致频繁如每七十五个周期的一个符号错误。预期在一些情况下,将使用具有高rber的存储器设备,并且在其他情况下,将继续使用具有低rber的存储器设备。

本发明的实施例提供了用于表现出高rber的存储器器件以及表现出低rber的存储器器件两者的使错误检查和校正的性能影响最小化的通用随机位错误或随机符号纠错方案。本文所述的可由通用纠错逻辑(硬件和/或软件)实现的通用纠错设计可用于高rber存储器设备和低rber存储器设备两者,同时使对动态随机存取存储器(dram)操作的性能影响最小化。任何高rber存储器器件可以由本文描述的实施例实现,诸如但不限于:来自skhynix的管理dram解决方案(mds)dram和nand闪存器件(一旦达到写入耐久性极限,其位错误率迅速增加)。类似地,任何低rber存储器设备可以由在此描述的实施例实现,诸如但不限于:双倍数据速率(ddr)存储器设备(诸如ddr3、ddr4和ddr5)以及与hdd相关联的磁性盘片。针对高rber存储设备和低rber存储设备两者使用相同的纠错逻辑的能力通过允许任何rber的存储设备被安装在存储模块上并且与通用存储器控制/缓冲器芯片互操作来提供灵活性。什么构成高rber存储器设备和低rber存储器设备可以取决于技术而变化。在示范性实施例中,低rberdram器件具有在每位大约1e-20错误的范围内的rber,而高rberdram器件具有在每位大约1e-5错误的范围内的rber。

本文描述的一个或多个实施例针对通常在powersystemstm服务器上使用的128字节高速缓存行,然而,实施例可以在任何大小的高速缓存行上和存储在除了高速缓存存储器之外的位置中的数据上实现。一个或多个实施例还可以通过并入附加dram芯片以保持更多ecc符号来扩展与x8和x16dram中的芯片杀死相关联的附加符号错误的纠错而利用除了x4之外的dram芯片(诸如x8或x16)来实现。ibmpowersystems已经通过将第十x8的dram芯片添加到九个dram芯片的列来利用传统的ecc做到这一点。

根据本文描述的本发明的一个或多个实施例,提供了一种平衡方法,其可以通过利用备用存储器设备或存储器芯片来有效地校正传统dram硬件错误以及随机符号错误的显著增加,以最小化芯片杀死或其他灾难性的芯片硬件故障符号错误的影响,以及附加的纠错码(ecc)符号(当与现代设计相比时)。该方法包括通用解码器,用于当遇到第一芯片杀死(即,整个存储器设备被标记为有故障)时,通过使备用dram芯片与附加ecc符号一起,来读取数据和增强的性能,其中附加ecc符号用于通过用备用替换出故障的芯片并重新创建与出故障的芯片相关联的丢失数据来消除与第一芯片杀死事件相关联的校正的恒定堰坝。根据本发明的一个或多个实施例,解码器被设计为具有快速出口路径,使得低rber设备等待时间不受影响。例如,新的快速出口路径中的一个校正随机的一个和两个符号错误很少用于低rber设备,但是非常频繁地用于高rber设备。根据本发明的一个或多个实施例,与传统ecc相比,ecc包括另外的逻辑。本文中描述的集成的或共同的ecc可以与被设计为处理小数量的单个软错误和硬的单个单元故障以及更显著的dram硬件故障(例如,芯片杀死)的传统ecc一起处理高数量的随机符号错误,利用可以有效地处理多个随机符号错误的差量而对低rber设备等待时间具有最小影响的ecc。

根据本发明的一个或多个实施例,实现opencapi存储器接口(omi)dimms。每个dimm可以包括一个或多个dram芯片列以及缓冲器芯片,该缓冲器芯片包括硬件和/或软件以控制和访问dram以读取和写入数据并执行纠错。根据本发明的一个或多个实施例,本文中所描述的纠错逻辑位于缓冲器芯片上,并且可以用硬件和/或软件来实现。根据本发明的一个或多个实施例,缓冲器芯片不位于dimm上,并且其经由一个或多个总线与dimm和/或dimm上的存储器设备进行通信。

当代低ber速率存储器设备(诸如ddr4dram芯片的当前生成)的主要故障模式包括单个单元错误,该单个单元错误可以将其自身表现为较小的硬件缺陷,以及表现为由于宇宙射线和α粒子命中而引起的位翻转。出现的频率取决于安装在服务器中的存储器的大小,但是通常,这些是相对罕见的事件,可能最多每天每系统以小数量正常出现。后台清理机制可用于通过读取寻找软错误的所有地址位置来检测和纠正系统中的软错误,并且如果它检测到错误,则清理尝试纠正它。诸如ibmpowersystem服务器之类的服务器上的完全存储器清理通常可以一天发生几次,但是可以被安排为或多或少频繁地发生。

更显著的硬件故障包括位线故障,其中来自dram芯片的映射到单个高速缓存线中的多个位出错。“芯片杀死”是更灾难性的故障,其中dram装置或芯片的显著部分故障,导致从芯片读取的所有位出错。芯片杀死失败通常是罕见的,但它们的确尤其跨大量服务器而发生,并且当遇到时,引起附加循环以便校正数据。由于芯片杀死导致与其所驻留的列相关联的所有dram地址的错误,所以即使启用存储器交错,用于校正的额外循环惩罚将经常发生,且因此可归因于校正所招致的额外循环而导致性能降级。

ram通常被设计并封装为可插拔模块,使得可以基于每个系统和应用的特定存储器要求向计算机添加增量的存储量。dimm可能是当前使用的最普遍的存储器模块结构。

dimm是具有安装在卡上的若干存储器芯片的薄矩形卡,并且通常被设计成具有动态存储器设备或芯片,这些动态存储器设备或芯片需要被定期刷新以防止它们保持的数据丢失。最初,dram芯片是异步设备,但是后来的一代同步dram(sdram)芯片具有同步接口以改善性能。最终,使用预获取连同其他速度增强来改进存储器带宽和减少等待时间的ddr设备变得可用。突发长度是在任何存取期间读取或写入到dram芯片的每一数据线(dq)的位的数目。ddr3和ddr4存储器设备通常具有8的标准突发长度,并且ddr5存储器设备通常具有16的标准突发长度。

随着计算机系统变得更强大,包括ram、hdd和ssd的数据存储的大小持续增长。目前具有由数百万亿字节组成的单个计算机ram并不少见。在没有某种类型的减轻(例如纠错)的情况下,仅单个ram位的失败可致使整个计算机系统失败。未初始化的硬错误(无论是单个单元、多位、全芯片还是全dimm故障)可以使系统不可操作,直到其被修复。停机时间可在备用部件到达之前持续数小时或可能甚至数天,使得故障可被修复。该停机时间可能对业务(尤其是高度依赖于其计算机系统的业务)具有重大影响。

数据存储在物理和电气设备上,并且最严重的故障与完全设备故障相关联。如果所有数据被存储在单个设备上并且该单个设备失败,则所有数据将被丢失并且恢复是不可能的。跨多个物理器件扩展所存储的数据是一种策略,该策略被采用来允许通过利用存储在仍旧(still)的功能器件上的剩余数据和ecc符号来恢复丢失的数据。出故障的设备可以是dimm上的dram存储器芯片(即,“芯片杀死”)、完全dimm故障、或hdd故障,其中的每一个将包含大量数据和ecc符号。在故障期间丢失的数据和ecc符号越多,校正和恢复丢失的数据所需的总ecc符号就越多。仔细考虑存储系统的物理结构对于设计最有效的纠错方案是重要的。

在正常操作期间遇到hdd、ssd或ram故障的概率至少部分地由于存储密度增加而继续增加,所述存储密度增加是由于计算机存储器的大小继续增长,而同时存储器设备(例如,dram芯片和nand闪存芯片)的大小继续变得更小。新的故障模式(诸如可变保留时间错误)已经显现,因为较小的电路尺寸接近物理限制的边界,因此使得对稳健的纠错的需求更加重要。

在过去的几十年中,检测和校正位错误的技术已经发展成精密的科学。最基本的检测技术之一是使用奇数或偶数奇偶校验,其中数据字中的位被异或(xor)在一起以产生奇偶校验位。例如,具有偶数为1的数据字将具有为零的奇偶校验位,并且具有奇数为1的数据字将具有为1的奇偶校验位。如果在数据字中出现单个位错误,则可以通过从数据重新生成奇偶校验并且然后进行检查以查看它匹配与该字一起存储的原始生成的奇偶校验来检测它。

richardhamming认识到,奇偶校验技术可以扩展到不仅检测错误,而且通过将更复杂的xor字段、纠错码(ecc)字段附加到每个码字来校正错误。ecc字段是异或(xor)在一起的字中的不同位的组合,使得错误(对数据字的小改变)可以容易地被检测、精确和校正。可以检测和校正的错误的数量与附加到数据字的ecc字段的长度直接相关。一个目标是确保有效数据字和码字组合之间的最小分隔距离。被检测和校正的错误的数量越大,确保有效码字之间的最小间隔距离所需的ecc字段越长。有效码字之间的这个距离被称为汉明(hamming)距离。

错误检测和纠错技术还常用于恢复噪声通信传输介质中或存储介质中的数据,其中存在由于设备的物理特性导致的数据错误的有限概率。由于高能宇宙射线和α粒子,用于将数据存储为代表ram中的一(one)或零的电压电平的电路会同时遭受设备故障和状态变化的影响。将一和零存储为磁性表面上的磁场的hdd还遭受磁性介质中的缺陷和可引起数据模式从最初存储的数据模式改变的其他机制。

在1980年代中,ram存储器器件大小首先收缩到软错误的出现频率开始对整体系统可靠性具有显著影响的点。保持每个位的锁存电路变得对α粒子冲击和宇宙射线足够敏感,α粒子冲击和宇宙射线与存储器位翻转开始相当规律地发生的正常背景辐射相关联。这些颗粒不损坏器件,而是造成瞬态存储器错误。这些被称为软错误,并且通常仅影响单个位。可以通过简单地用正确的数据或新数据重写存储器位置来校正这种类型的单个位故障。

与汉明提出的存储器ecc一样,存储器ecc在数据字的各种位位置中使用奇偶校验码的组合以允许检测和校正错误。每次将数据字写入存储器时,生成新的ecc码字并与该数据一起存储,从而允许在从存储器读出数据时检测和校正该数据。应用于ram设备的第一ecc允许双位错误检测(ded)和单位纠错(sec)。除了瞬态错误的校正之外,sec/dececc还允许ram设备中的单位永久硬错误的透明恢复。

此外,还开发了清理例程以通过使用补充/重新补充过程来校正软错误来帮助减少存储器错误对准来改进ecc有效性。

hdd通常具有嵌入式检查器,诸如用于检测坏扇区的ecc。循环冗余校验(crc)和经度冗余校验(lrc)也可被用作hdd电子设备中的嵌入式检查器或结合盘适配器来检测和纠正故障。这些检验器还可由较高级别的代码和应用程序用来检测和校正hdd错误。crc和lrc被生成并与数据一致地写入,以帮助检测数据错误。crc和lrc通常经由散列函数来创建,所述散列函数产生从数据生成的相对小且基本上唯一的位模式。当从hdd读取数据时,校验和被重新生成并与存储在盘(platter)或盘(disk)上的校验和进行比较。为了确保从编码在盘上的磁性模式检索的数据是无错误的,这些校验和签名必须与最初生成并保存在盘上的具有该数据的那些校验和签名准确匹配或相同。

已经开发了独立磁盘冗余阵列(raid)系统来改进性能和/或增加磁盘存储系统的可用性。raid系统跨若干独立的hdd分发数据。存在已经开发的许多不同的raid方案,每个方案具有不同特性和与其相关联的不同利弊。性能、可用性和利用/效率(实际保持客户数据的磁盘的百分比)是raid方案的特性或属性的示例。必须仔细考虑与不同raid方案相关联的权衡,因为一个属性的改进常常会导致另一个的恶化。

raid-0是跨多个hdd的数据的条带化以改善性能。raid-1是数据的镜像,在两个不同的hdd上保持数据的两个精确副本以改善可用性并防止数据丢失。一些raid方案可以一起使用以获得组合的益处。例如,raid-10是跨阵列中的若干hdd的数据分条和镜像两者,以改善性能和可用性两者。raid-3、raid-4和raid-5非常相似,因为它们使用单个xor校验和来校正单个数据元素错误。raid-3是具有专用奇偶校验hdd的字节级条带,raid-4使用具有专用奇偶校验hdd的块级条带,并且raid-5是类似于raid-4的块级条带,但是具有分布式奇偶校验。不存在具有raid-5的专用奇偶校验hdd,因为奇偶校验基本上均匀地分布在所有hdd上,因此消除了作为性能瓶颈的专用奇偶校验hdd。raid-3、raid-4和raid-5的关键属性是当故障的位置可通过一些独立手段被准确指出时,每个raid-3、raid-4和raid-5能够校正单个数据元素故障。这种能力允许raid-3、raid-4和raid-5校正完整的hdd故障。

在整个行业中使用的raid相关术语中存在一些不一致和模糊性。以下定义是通过在本公开中使用这些术语暗示的定义,除非另有说明。“阵列”是保持符号的硬盘驱动器的集合,在所述符号上实现raid擦除码的一个或多个实例。“符号”或“元素”是数据或奇偶校验的基本单位。这些是擦除码的构造块。对于hdd,符号通常保持在顺序扇区(sector)的集合中。元素由固定数量的字节组成。将元素定义为固定数量的块也是常见的。因此,“块”也表示固定数量的字节。“条带”(stripe)是数据元素和奇偶校验元素的完整且相互连接的集合,这些数据元素和奇偶校验元素与在此依赖的数据元素集合上计算的奇偶校验计算关系相关。在编码理论中,条带是代码字或代码实例。“条带段”(strip)是驻留在一个物理hdd上的条带的片段,并且它包括单个硬盘驱动器上的连续元素的集合。条带段包含来自相同磁盘和条带的数据元素或奇偶校验元素或两者。术语条带段和列(column)可互换使用。在编码理论中,条带段与码字相关联,有时被称为条带单元。码字中的条带段集合形成条带。最常见的是条带段包含相同数量的元件。在一些情况下,条带可以被分组在一起以形成被称为“步幅”(stride)的较高层级构造。

对于raid-6不存在单个普遍接受的行业范围定义。通常,raid-6涉及具有双校验和的块或字节级条带化,并且当可以通过一些独立手段来精确定位故障时,raid-6允许校正多达两个数据元素故障。当故障的位置未知时,它还具有精确定位和校正单个故障的能力。raid-6是更一般的里德-所罗门(reed-solomon)纠错码的具体实例。这些强大的代码在数字视频光盘(dvd)播放器中的范围从深空间探测到致密盘错误的应用中发现了广泛的用途纠正错误。

rs码是应用于数据元素或符号的非二进制循环码。rs(n,k)码可被定义为具有:k=数据码元的数目;m=以位为单位的符号长度;并且n=符号的总数,其中,0<k<n<2(m+1)。当误差的位置不是由独立装置确定时,进一步定义c=符号纠错能力导致n-k=2c。换句话说,符号的总数和数据符号的数量的差与rs码的数据校正能力成正比。

最小距离是有效码字之间的位差的数目。如本文中所使用的,术语码字指的是跟随有一个或多个ecc符号的一组数据符号,该一个或多个ecc符号作为单位被读取和校正。rs码实现任何线性码的最大可能最小距离。对于非二进制码,类似于汉明距离的最小距离由dmin=n-k-1给出。定义e=擦除纠正能力(即,当独立地确定故障位置时纠正故障的能力),导致e=dmin-1=n-k=2c。换句话说,当错误的位置不是通过一些独立的装置确定并且因此rs码在确定位置并且然后校正错误时是有用的,可以仅校正一半数量的错误。

rs码可被认为是可用于求解未知数的一系列联立方程。这些未知数是数据符号或具有故障的符号的位置。例如,raid-6使用两个等式来生成应用于每行中的每个数据元素的两个独立的校验和。定义q(x)=rs校验和,其中x=a;p(x)=rs校验和,其中x=1;并且d0,d1,…,dn=多项式系数导致具有多项式形式的rs校验和方程:q(x)=d0+d1*x+d2*x2+…d(n-1)*x(n-1)。方程可用于求解系数、校正数据元素,或者如果故障的位置未知,则可用于求解x的幂以精确定位该位置。

可以看出,raid-3、raid-4和raid-5简单xor是其中x=1段特别例子,使得等式然后变为:

p(x)=d0+d1+d2+…d(n-1)。可以使用的通式有许多变化。主要要求是该方程是一个本原多项式,这意味着它类似于一个素数,其中它没有共同的根。这确保该解总是映射到有限域,伽罗瓦(galois)域中的唯一值。

一般来说,针对高rber存储器设备或针对低rber存储器设备优化现代纠错逻辑,这可防止含有纠错逻辑的同一电路用于两种类型的存储器设备。

现在转到图1a,一般地示出了包括dimm102的现代存储器系统100。图1a所示的存储器系统100包括包含缓冲器设备104的dimm102,以及用于存储数据的两个等级的十六个数据dram列或总共三十二个数据dram106,四个eccdram108,每个排两个eccdram108用于存储ecc和元数据符号,以及两个备用dram110,每个排一个。传统的ecc设计,诸如对字节大小符号的reed-solomon(rs)类符号校正,可以与记录诸如芯片杀死的硬件故障的位置的故障标记技术一起使用。记录或标记出故障的存储器设备的位置允许有限和有限数量的ecc符号被保存并且更有效地用于改善纠错能力。ecc符号在此也被称为“校正信息。”

如图1a的存储器系统100中所示,针对利用19乘4个dram芯片的两排(rank)的128字节高速缓存行设计纠错逻辑。ddr4x4dram芯片通常具有8的突发长度,使得每个访问产生8个半字节或4个8字节的符号。该设计使得单个单元故障将自身表现为单个符号错误,然而,为校正错误而引发的附加周期的数量将仅在访问该特定dram地址时引发,并且因此将不会对性能具有显著影响。芯片杀死将至多影响8个半字节(四个符号),然而,对排中的每个dram地址的数据校正将是必要的,因此性能损失更普遍且显著。

每个排中的保持元数据的两个eccdram108提供七个ecc符号(在该示例中为字节)和用于其他目的的一个字节(例如,作为描述数据的属性的标签)。如图1a所示,ecc一次对64字节的数据进行操作,因此利用7个ecc符号,可以定位和校正3个随机符号错误。错误标记使得能够校正更多错误,因为错误的位置是预先确定或通过一些其他方式确定的。当代omi缓冲器芯片(诸如图1a中所示的缓冲器设备104)实现针对低rberdram设备并且执行纠错(诸如以下参见图2描述的那些)的传统方法。

现在转到图1b,总体上示出了包括dimm132的现代存储器系统130。在图1b的存储器系统130中,通过访问对单个排的两个连续读取来读取高速缓存行,这产生与从如图1a中所示的两个排提取高速缓存行(line)完全相同的数据量。当与图1a的存储器系统100中的两排方法相比时,一个显著的差异是芯片杀死失败使高速缓存行中丢失的符号的数量加倍。图1b中所示的存储器系统130还可以与ddr5dram芯片一起使用,该ddr5dram芯片具有突发长度为16的单个读取。

现在转到图2,总体上示出了当代存储器系统中的纠错动作的表200。在图1a所示的示例中,其中即使利用128字节的高速缓存行,ecc也对64字节的数据进行操作,花费四个周期(利用一个端口)来将数据或码字送达缓冲器设备104。如在此所使用的,术语“周期”指处理器(如位于缓冲器设备104上或请求读取数据的处理器上的处理器)的时钟周期。图2中所示的表格200描述了针对三个快速路径退出点208的多个周期210和估计出现频率212:退出0路径202,退出1路径204和退出2路径206,它们被设计成最小化用于校正低rber存储器设备的任何检测到的错误所消耗的周期的数量。这三个出口点208可以例如通过位于缓冲器设备(如图1a的dimm102上的缓冲器设备104)上的纠错逻辑来实现。

第一主路径退出点(退出0路径202)是不消耗任何附加循环并且假定大多数数据不需要被校正的纠错逻辑旁路路径。对于推测性加载,旁路数据被请求者(例如,核处理器)消耗。对于非推测性加载,请求者不立即消费数据以确保数据不需要被校正。由此,通过处理核心的一些路径允许继续处理该数据,所以如果稍后ecc未检测到数据错误(这通常是这种情况),则由于在处理中不招致延迟,因此性能得到改善。如果稍后检测到错误,那么冲洗管线且将良好校正的替换数据馈送到管线中。

参见图2的表200,纠错逻辑中的次最快路径是退出1路径204,该退出1路径可以校正单个标记芯片以及多达一个附加随机符号错误。这需要四个ecc符号用于芯片杀死校正,另外两个符号用于定位和校正伴随的随机符号错误。此路径(退出1路径204)通过纠错逻辑花费额外的八个周期、四个周期来使数据到达缓冲器设备104并且四个周期来进行校正。如表200中所示,对于低ber的dram芯片,具有可能由于任何各种原因而发生的标记的单个随机符号错误的发生频率相对较小。其包括软错误或卡住单元或甚至位行(line)错误,其通常每天不超过非常小次数地发生,并且可能远小于该错误。

芯片杀死失败通常相对罕见。对于大量服务器,经常期望不必用芯片杀死失败替换dimm,并且因此,使用备用dram芯片来快速消除第一芯片杀死失败。当存在芯片杀死时,退出1路径204将变成通过纠错逻辑的主路径,并且仅消耗八个附加循环,直到备用dram改变。与增加的八个周期相关联的性能影响不会不利地影响长期性能,因为它是临时的,并且因此不需要针对单芯片杀死故障的修复。为了最小化芯片杀死的性能影响,备用芯片被改变为要用作故障存储器器件的替换的配置。一旦替换过程完成并且重新创建和恢复数据到替换芯片,不再遍历通过纠错逻辑的退出1路径204,并且使用退出0路径202恢复读取。

对于所有其他错误事件,纠错逻辑之外的最终路径是采用完整ecc功能的退出2路径206。退出2路径206可以校正一个未标记的芯片杀死以及多达一个额外的符号错误。花费额外的12个循环来通过纠错逻辑遍历该路径。该路径花费更长时间,因为不知道哪个存储器设备或芯片是有缺陷的导致纠错逻辑必须在搜索有效解决方案时求解所有芯片杀死组合。退出2路径206消耗十二个周期,四个周期以便将数据送到缓冲器芯片并且八个周期以便进行校正。当存在芯片杀死时并且在其被标记之前,使用退出2路径206。纠错逻辑将求解所有可能的芯片杀死场景,并且如果匹配,该逻辑可以校正错误并且然后标记出故障的芯片,从而使得可以从那里开始使用退出1路径204(消耗八个周期而不是十二个)并且可以针对排中的第一个芯片杀死改变备用芯片。如果纠错逻辑不能校正错误,则执行读取重试以希望可以产生具有较少错误的高速缓存行。

作为获得“t”个错误和“e”个擦除的错误定位多项式的一般经验规则,通常花费e+2t个周期。通常,为更确定已识别正确数量的错误,应处理另外两个校正子。然而,基于sarwate和shanbhag的ribm解码器的一些解码器一起处理所有校正子,并且通过检查连续的偏差全部为零,可以完成检查解码在较少的周期中完成。如在此所使用的,术语“校正子”(syndrome)是指对所接收的数据进行的计算,如果没有发生错误,该计算被保证为零,并且另外用于确定错误的位置和值。在常规的reed-solomon解码器中,校正子用于计算多项式,其根确定接收到的数据中有错误的位置。该多项式被称为错误定位多项式。其与称为误差评估多项式的第二多项式结合使用以计算在该符号位置中需要校正的位。在一些ecc中,用于计算定位多项式的循环数的e+2t公式不适用,因为纠错电路由专用解码器实现,该专用解码器不计算通用定位多项式。

根据本发明的一个或多个实施例,备用芯片直到执行背景擦洗才改变。这导致引起额外的周期损失更长,但是可以通过使固件执行在备用存储器设备中改变和重新创建与出故障的存储器设备相关联的数据的功能来简化硬件逻辑。

现在转到图3a,根据本发明的一个或多个实施例,总体上示出了包括dimm302的存储器系统300。图3a所示的存储器系统300包括dimm302,该dimm302包含缓冲器设备304、以及用于存储数据的32个数据dram306(每排16个)、用于存储ecc(或校正信息)和元数据符号的六个eccdram308(每排三个)、以及两个备用dram310(每排一个)。传统的ecc设计,诸如对字节大小符号的reed-solomon(rs)类符号校正,可以与记录诸如芯片杀死的硬件故障的位置的故障标记技术一起使用。记录或标记出故障的存储器设备的位置允许有限和有限数量的ecc符号被保存并且更有效地用于改善纠错能力。

如图3a的存储器系统300中所示,纠错逻辑被设计用于128字节高速缓存行,该高速缓存行利用两排20乘4个dram芯片。ddr4x4dram芯片通常具有8的突发长度,因此每个访问产生8个半字节或4字节符号。该设计使得单个单元故障将自身表现为单个符号错误,然而,为校正错误而引发的附加周期的数量将仅在访问该特定dram地址时引发,并且因此将不会对性能具有显著影响。芯片杀死将至多影响8个半字节(4字节符号),然而,对排中的每个dram地址的数据校正将是必要的,因此性能损失更普遍且显著。

每个排中的保持元数据的三个eccdram308提供11个ecc符号(在该示例中为字节)和用于其他目的(例如,作为标签)的1个字节。如图3a中所示,与传统ecc不同,该ecc一次对128字节的数据进行操作,以通过允许更多ecc符号在整个高速缓存行上操作来增强校正的鲁棒性,因此利用22个ecc符号,可以容易地定位和校正7个随机符号错误。理论上,如果随机符号错误是唯一感兴趣的,则可以定位11个符号错误,并且用22个ecc符号来校正11个符号错误。错误标记使得能够校正更多错误,因为错误的位置是预先确定或通过一些其他方式确定的。根据一个或多个实施例,缓冲器设备304实现纠错逻辑,所述纠错逻辑针对具有低rber的存储器设备和具有高rber的存储器设备两者进行优化以执行纠错,如以下参见图4描述的那些纠错。根据本发明的一个或多个实施例,支持高rber存储器设备的能力以对低rber存储器设备的最小影响(例如,对逝去的周期)来实现。

根据本发明的一个或多个实施例,对于图3a中所示的dimm302,可以如下估计ecc解码器或纠错逻辑、具有错误和擦除的延迟。对于双端口缓冲器芯片,所有数据从dram设备到达缓冲器芯片将花费八个周期(每排四个周期)。对于单端口缓冲器芯片,所有数据到达缓冲器芯片将花费十六个周期。当数据在至多一个额外周期中获得时,计算综合征(syndromes),因此在八个或九个周期后,计算综合征。如可以看到的,在一些实施例中,可能要求十六个周期用于所有数据到达,在这种情况下,用于解码的周期的总数增加八。

根据一个或多个实施例,数据在八个周期上到达,标记了“e”个符号,并且希望校正“t”个附加错误。为了获得用于“t”个错误和“e”次擦除的错误定位多项式,通常花费e+2t个周期。为了获得错误已被正确识别和校正的置信度,处理了两个附加综合征,因此,假设标记的芯片将存在四个符号用于芯片杀死,且存在八个符号错误用于dram驱动器点掉故障(例如,由在两个dram之间具有共享数据总线引起)的双芯片标记,其可影响两个芯片。为了验证与下两个校正子、周期成本或周期数量的一致性,是8+e+2t+2,其中8是从dram芯片检索数据的周期数,e是擦除的次数,2t是t个错误的定位多项式,并且+2是在计算校正数据(计算并应用校正到每个数据位置)所花费的错误定位多项式之后的循环数。由此,周期的数目等于10+e+2t,且假定对于带标记的双芯片e=8,则周期的数目等于18+2t。在没有标记芯片的情况下,其为10+2t,其为不仅仅是在给定校正子的情况下找到定位多项式的成本的总成本循环成本。

因此,为了校正t个错误,额外周期的合理保守估计是具有标记芯片的18+2t和无标记芯片的10+2t。对于在若干周期上返回校正数据的解码器,这是从开始获得数据到返回校正数据时的延迟。如果发生新的芯片故障,并且在新的故障芯片之外最多存在三个错误,则可以执行8(故障芯片符号)+3(其他随机符号错误)=11个符号纠错。以这种方式,使用10+e+2t导致10+2(8+3),以处理将花费10+22=32个周期的错误。这仅是可以使用的策略的一个示例,并且其他实施例可以采用策略来校正出故障的存储器设备之外的附加错误。

根据本发明的一个或多个实施例,实现通用低rberdram和高rberdram纠错逻辑设计策略/方法。根据实施例,纠错逻辑校正128字节高速缓存行的错误。从二十个存储器设备的两个排拉取数据符号、ecc符号和其他元数据,其中十六个存储器设备保持数据,三个存储器设备保持ecc符号和元数据,并且一个存储器设备是备用存储器设备。每排的ecc符号的另外的存储器设备用于减轻高rber存储器设备中的较高数量的位错误。该结构导致元数据的22个ecc符号和2个符号,以使得高rberdram能够可靠地工作,但是对于诸如omi缓冲器的缓冲器器件,不会不利地影响典型的低rberdram性能。

此外,根据本发明的一个或多个实施例,可以在整个生产线(例如,低端、中等范围和高端)上使用具有相同缓冲器芯片的单个dimm。为了实现这一点,不同类型的存储器设备可以具有到单个dimm的相同连接器。举例来说对于低rberdram,示范性实施例还可通过在缓冲器芯片上提供单独的纠错逻辑来支持不同高速缓存行大小。当前的omi缓冲器设备具有单个端口,这可能导致可以用两个端口设计来解决的一些低效率,然而,两个端口将需要更大的缓冲器芯片并且更大的缓冲器芯片将不适合更小的dimm形状因子。所述一个端口设计可能需要较大数量的周期来检索本发明的示范性实施例利用的完整的128字节高速缓存行,但不需要其规定较大缓冲器芯片的额外周期。

本发明的示范性实施例可支持低rberdram,且甚至在利用128字节高速缓冲存储器线时也可对64字节数据进行操作。本发明的一个或多个实施例还可以点缀来自两个排的dram芯片的输出,如果芯片驱动器电路受到故障的影响,这可能导致芯片杀死影响两个dram芯片,这可导致八字节符号芯片杀死错误,而不是四字节符号芯片杀死错误。

本发明的示范性实施例包括用于低rberdram器件和高rberdram器件两者的通用结构(例如,通用纠错逻辑)。当在硬件中实现时,新的通用纠错逻辑将需要更多的硅有效面积,并且被估计为占用针对低rberdram器件优化的传统纠错逻辑的硅有效面积的约四至八倍。

现在转到图3b,根据本发明的一个或多个实施例,总体上示出了包括dimm332的存储器系统330。在图3b的存储器系统330中,通过访问对单个排的两个连续读取来读取高速缓存行,这产生与从如图3a中所示的两个排提取高速缓存行完全相同的数据量。当与图3a的存储器系统300中的两排方法相比时,一个显著的差异是芯片杀死失败使高速缓存行中丢失的符号的数量加倍。图3b中所示的存储器系统330还可以与ddr5dram芯片一起使用,该ddr5dram芯片具有突发长度为16的单个读取。

现在转到图4,根据本发明的一个或多个实施例,一般地示出了由通用纠错逻辑执行的纠错动作的表400。在图1a和图2中所示的示例中,在ecc对64字节的数据进行操作的情况下,花费四个周期(具有一个端口)来将数据或码字获得至缓冲器设备304。图4中所示的表格400描述了多个周期410,高rberdram411的估计出现频率,以及针对四个路径出口点408的低rberdram412的估计出现频率:出口0路径402,退出1路径404、退出2路径405以及退出3路径406,它们被设计成最小化用于校正高rberdram和低rberdram两者中的任何检测到的错误所消耗的周期的数量。根据本发明的一个或多个实施例,四个退出点408由位于缓冲器设备(诸如图3a的dimm302上的缓冲器设备304)上的纠错逻辑实现。

主要出口0路径402与以上关于图2所描述的出口0路径202相同。它是不消耗任何额外循环的旁通路径。这里同样,假设从高rberdram设备访问的大多数数据没有错误,并且不需要校正,尽管实际上将遇到比低rberdram频繁得多的随机符号错误。

图4中所示的下一个快速路径退出点408是退出1路径404,其目标是校正高rberdram中最普遍的随机符号错误(一个或两个符号中的随机错误)。纠错逻辑在没有标记的存储器设备的情况下校正单符号和双符号错误。该校正将十五个周期加到读取的数据上,包括八个周期以得到数据到缓冲器芯片,六个周期以计算校正子,以及一个周期以执行校正。根据本发明的一个或多个实施例,对于所计算的每个另外的综合征,添加一个另外的周期。与高rberdram相关联的单和双符号错误将出现在160符号高速缓存行中的随机位置处,并且因此当它们作为校正的一部分出现时必须被定位。假设1e-5字节错误率,可以预测平均每微秒将出现约21单符号错误,平均每毫秒将出现约130双符号错误。在这些假设的速率下,预计每75-80个周期发生两次或单次符号错误,与低rberdram相比,这大约是18-20%的性能下降。这可通过使用具有两个端口的较大缓冲器芯片来将将数据或码字到达缓冲器所花费的时间从八个循环减少到四个循环而减少到约14%。

如前所述,由于软错误或卡住单元或甚至位行错误引起的低rberdram的单个符号错误通常发生少于几次。高速缓存行中的双符号错误甚至更罕见,所以通过纠错逻辑的此退出1路径404将对低rberdram操作没有影响。甚至可以争论,对于低rberdram,退出1路径404改进性能,然而,出现单和双错误的频率通常足够罕见,因此该改进是可忽略的。

根据本发明的一个或多个实施例的校正单个符号错误的影响可以如下计算。假设每微秒发生40个单符号错误,并且时钟速度为三千兆赫(ghz)(因此每个周期为3333纳秒)。每微秒21个单符号误差相当于大约每100纳秒2个单符号误差,或者每50纳秒1个单符号误差,或者平均每150个循环1个单符号误差。如果在每次校正单个符号错误时添加15个循环,那么将花费大约165个循环来进行150个无错误操作循环,或者比无错误操作降级大约百分之十。

以类似的方式,根据本发明的一个或多个实施例的校正双符号错误的影响可以如下计算。假设每毫秒和三个千兆赫(ghz)的时钟速度出现132个符号的错误(因此每个周期是.3333纳秒)。每毫秒132个符号误差相当于每10微秒1.3个二个符号(two-symbol)错误,或每7.7微秒一个二个符号错误,或平均每两万个周期一个二个符号错误。如果在每次校正二个符号错误时添加15个循环,那么将花费约10,015个循环来进行10,000个无错误操作循环,或相对于无错误操作的约0.15%降级是可忽略的。

返回参考图4,下一个退出点408是退出2路径405。如表400所示,估计出口2路径405花费二十二至二十五次循环来进行校正。它被设计为处理一个被标记的芯片杀死以及最多四个附加的随机符号错误。对于高rber芯片,预测大约每秒五百次出现三个符号错误,并且预测大约每秒九十次出现四个符号错误。这表示每43百万次循环约一个误差,并且以可忽略不计的方式每4.3百万次循环添加二十二至二十五次循环。然而,退出2路径405还包括对单个标记的芯片杀死的校正。芯片杀死很少发生,但是当它确实发生时,纠错逻辑ecc结构的一个或多个示范性实施例将在每次访问排时添加22到25个循环。如以上参见图2中的退出1路径204所描述的,二十二至二十五个周期是单个芯片杀死所需的八个周期的二至三倍以上,并且当与芯片杀死发生时的低rberdram的现代方法相比时,一个符号错误增加了等待时间。然而,由于一旦检测到有缺陷的芯片有缺陷,备用dram芯片将自动改变以替换有缺陷的芯片,因此增加的等待时间对于第一芯片杀死是短暂的。在排中引起第二dram故障是非常罕见的,但是如果确实发生了,则所添加的二十二至二十五周期将产生不可忽略的性能影响,所述性能影响只能通过dimm或存储器设备替换来解决。

根据本发明的一个或多个实施例,校正三至四个符号错误的影响(当存在芯片杀死时)可计算如下。假设每秒七百个三个或四个符号错误以及三ghz的时钟速度(因此每个周期是.3333纳秒)。每秒七百个三个或四个符号错误相当于每10毫秒七个三或四个符号错误,或每1.428毫秒一个三或四个符号错误,或平均每43百万个循环一个三或四个符号错误。如果在每次校正三个或四个符号错误时增加十个周期,那么用于校正的额外时间是可忽略的。然而,每次访问排时,将通过纠错逻辑来实现此路径中的芯片杀死,并且实现芯片杀死路径所需的十个周期比图2的退出1路径204所需的多两个周期。

返回参考图4,下一个退出点408是退出3路径406,它处理单个标记的芯片杀死以及高达九个额外的随机符号错误。通过纠错逻辑的该路径将花费三十二至三十五个周期。对于高rberdram芯片,高速缓存线中的五个符号错误可以被估计为每四到五分钟发生一次,并且六个、七个或八个符号错误被估计为不太频繁,因此所添加的循环是可忽略的。对于芯片杀死场景,附加循环将不是可忽略的,但是与第一芯片杀死相关联的重复校正将通过在备用dram芯片中变化来快速解决。在dram驱动器引起两个dram芯片的问题并且我们八个符号需要校正(例如,看起来像双芯片杀死)的罕见情况下,则可以通过纠错逻辑的一个或多个示范性实施例连同多达七个附加随机符号错误来校正所有八个符号,这将允许服务器继续操作,然而具有一些不可忽略的性能影响,因此将需要dimm替换。在一个替代实施例中,其中,从单个ddr4排进行双八次突发读取以提取全高速缓存行或从单个ddr5排进行单个十六次突发读取,由于芯片删除导致的错误的码元数目将总是8,将四个符号出错的两排ddr4实施例加倍。像之前在这种情况下一样,或者当发生双芯片杀死而不标记时,纠错电路可以解决所有可能的双芯片杀死错误场景以确定哪个耦合对已经失败。

现在转到图5,根据本发明的一个或多个实施例总体上示出了包括纠错电路的存储器系统500的框图。图5包括存储器502、纠错逻辑516和请求数据的处理器560(“请求者”)。纠错逻辑516可以由缓冲器设备(诸如图3a的缓冲器设备304)来实现。纠错逻辑516可以由用于系统存储器的存储器控制器实现,或者由用于存储器设备的高速缓存控制器或其他控制器实现。纠错逻辑516包括ecc检测和校正逻辑512(例如,电路),其可以校正具有不同复杂度等级的错误:一个或两个随机符号错误;一个标记芯片杀死以及最多3至4个随机符号错误;一个标记芯片杀死和最多9个随机符号错误。存储器缓冲器芯片580包括存储器控制逻辑550、表示为“退出1”506的一个或两个随机符号纠错逻辑;一个标记的芯片杀死和3至4个随机符号纠错逻辑(表示为“退出2”508),以及一个标记的芯片杀死和9个随机符号纠错逻辑(表示为“退出3”510)。

当处理器560发出加载指令且从存储器502接收对应存储器块(或高速缓存行)时,其经由所述输出中的一个传输到处理器560。纠错逻辑516的默认操作是旁路模式,其中,原始(未校正的)存储器读数据经由图5中表示为“退出0旁路”504的路径被传递至处理器560。取决于系统架构,数据可行进通过纠错逻辑516与处理器560之间的一个或一个以上总线或互连。

本领域技术人员将认识到,可以提供多于三个的校正电路,并且可以与本发明一起使用任何纠错码。

校正一个或两个符号错误所需的计算需要比校正一个标记的芯片杀死以及最多四个随机符号错误所需的计算更少的逻辑和时间。如果旁路操作的相对延迟时间是0,则一个或两个符号纠错的延迟时间将是x,一个标记的芯片和最多四个随机符号错误的延迟时间将是y,并且所述一个标记的芯片和5-9个随机符号错误的延迟时间将是z,其中x<y<z。尽管重试读取的执行增加了该单个操作的延迟时间,但是通过提供多个校正输出并选择在该复杂度水平完成校正所需的一个输出,但是提供最小增加的延迟时间,存储器控制器的总吞吐量显著增加。

现在转到图6,根据本发明的一个或多个实施例总体上示出了用于从存储器读取数据的过程的流程图600。图6所示的过程可以由误差校正逻辑执行,例如图5的误差校正逻辑516。过程在框602处开始,并且在框604处执行用于读取数据的正常存储器操作。在块606,确定在读取的数据中是否存在符号错误。如果没有符号错误,则过程在块616处以退出0旁路模式(诸如图5的退出0旁路504)继续。

接着,执行块612以查找校正子中的单和双芯片杀死签名,并且如果检测到任一签名,则标记具有芯片杀死的存储器设备。由此,块612标记找到的新的硬件错误。过程在框614处继续,其中如果在框614中检测到第一芯片杀死,则备用存储器设备改变(用于代替标记的存储器设备)。正常存储器操作在框604处继续。

如果在块606确定存在符号错误,则过程在块608继续以确定是否检测到一个或两个符号错误。如果校正子指示一个或两个符号错误,则过程在块610以退出1快速路径校正模式继续,例如图5的退出1506。然后,过程在框612处继续。

如果在块608处确定不存在一个或两个符号错误,则过程在块618处继续以确定一个存储器设备是否被标记为芯片杀死并且检测到三个或四个符号错误。如果校正子指示标记的dram器件和三个或四个符号错误,则过程在块620以退出2快速路径校正模式继续,例如图5的退出2508。然后,过程在框612处继续。

如果在方框618处确定不存在标记的芯片杀死和三个或四个符号错误,则过程在方框622处继续以确定是否将一个存储器设备标记为芯片杀死且检测到五到九个符号错误。如果校正子指示标记的dram器件和5至9个符号错误,则过程在块624以退出3校正模式继续,例如图5的退出3510。然后,过程在框612处继续。

如果在方框622处确定不存在标记的芯片杀死以及高达九个符号错误,则过程在方框626处继续,在方框626处确定校正是否成功。如果校正成功,则过程在块612处继续。如果在框626处确定校正不成功,则过程在框628处继续以确定先前是否执行重试。如果尚未执行重试,则过程在框634处继续以重试读取并尝试校正。如果校正不成功,则框628和634中的过程执行读取重试。利用高速缓存行在其重新读取的情况下可能包含较少错误(例如,瞬态错误)的想法来执行读取重试和校正尝试。如果不是这种情况,则系统还将尝试读取与相同排相关联的不同高速缓存行,以尝试解决与正被读取的高速缓存行相关联的具有较少随机符号错误的芯片杀死。如果系统能够标记错误,然后读取并校正感兴趣的高速缓存行,则情况可能是这样。

如果在框628处确定已经执行重试,则过程在框630处继续,以确定是否存在双芯片标记(例如,两个dram装置之间的点总线错误)。如果检测到双芯片标记,那么将其标记为经标记硬件的特殊情况(即,代替芯片标记,其将为dram对的双芯片标记)。然后,处理在框632处继续,其中,校正失败为不可校正的错误。这可以在处理器上引起检查停止或机器检查。如果在框630处确定不存在双芯片标记,然后在块636处继续处理,在块636处,逻辑尝试求解所有双芯片杀死对,并且如果它发现纠正错误的双芯片杀死对,则假设,在框638处,其为校正解,且在框612处使用其来标记芯片杀死对(此情形极不可能为其工作的事故)。

如果在块636处没有找到解,则过程在块632处继续以处理失败的校正。

现在转到图7,根据本发明的一个或多个实施例,总体上示出了数据符号和纠错码(ecc)符号700的不同组合。图7中所示的符号错误的预期数量的估计基于以下假设:使用x4个dram;用于高rberdram的随机均匀分布的单位错误率是1e-5错误/位;低rberdram的随机均匀分布的单位错误率为1e-20错误/位;3,680gb/s的存储器带宽(即,230gb/sx16插槽)或2.944e13位/秒;并且需要4个ecc符号来校正即使具有标记的x4芯片杀死。

如在图7中可见,对于高rber设备,不仅频繁的随机单个符号错误是一个挑战,而且单个码字中的多符号错误更普遍并且更常见,这使得全新的ecc结构比传统上使用的ecc结构必须减轻它们。由本文描述的本发明的一个或多个实施例提供的技术改进包括将可以处理高数量的随机符号错误的ecc与被设计为处理小数量的单个软错误和硬单个单元故障以及更显著的dram硬件故障(例如,芯片杀死)的传统ecc集成。这种常见的集成ecc处理多个随机符号错误的差量,同时对低rber设备等待时间的影响最小。

如标记为702的行中所示,当160字节的码字与高rberdram一起使用时,预计每微秒将遇到1个符号错误,每毫秒将遇到130个两个符号错误,每秒511个三个符号错误,每分钟91个四个符号错误,每小时308个五个符号错误,每年219个六个符号错误,每年36个七个符号错误,以及每1,000年0.52个八个符号错误。

图7中所示的数据在本质上是示例性的,因为用于各种操作的周期的数量可以取决于硬件如何实现以及如何基于rber在技术与技术之间的变化来最佳地调谐ecc而改变。

现在转向图8,根据本发明的一个或多个实施例总体上示出了用于执行读取重试(诸如图6的读取重试块634)的过程800的流程图。图8中所示的过程可以由纠错逻辑(如图5的纠错逻辑516)执行。在一个实施例中,过程在块802处开始,其中读取高速缓存行的校正的先前尝试已经失败。在块804处,重新读取高速缓存行,并且在块806处确定重新读取的高速缓存行是否具有比其先前被读取并且未成功校正时的错误更少的错误。如果存在较少的错误,则过程在块808处继续,其中纠错逻辑尝试找到用于校正所有单芯片杀死场景和双芯片杀死场景的解决方案。如果发现解决方案,如在框810处确定的,则过程在框812处结束(例如,返回到图6的框612)。如果未找到解,则过程在框820处继续。

如果如在块806处确定的,重新读取的高速缓存行不具有比当它先前被读取并且未成功校正时更少的错误,则过程在块814处继续,在块814处从相同排中的不同地址读取高速缓存行。过程在块818处继续,其中确定在块814处读取的高速缓存行是否具有比先前读取且未成功校正的高速缓存行少的错误。如果存在较少的错误,则过程在块808处继续,其中纠错逻辑尝试找到用于校正所有单芯片杀死场景和双芯片杀死场景的解决方案。如果发现解决方案,如在框810处确定的,则过程在框812处结束(例如,返回到图6的框612)。如果未找到解决方案,则过程在框820处继续。

如果在块818处确定在块814处读取的高速缓存行不少于先前读取且未成功校正的高速缓存行的错误,则过程在块820处继续。在框820处,确定是否已经执行阈值数量(在本示例中,为“n”)读取重试。如果尚未执行读取重试的阈值次数,则过程在块816和814处继续,在块816和814处,从相同排中的不同地址读取高速缓存行。如果已经执行了读取重试的阈值次数并且没有找到解决方案,则校正已经失败并且过程在框822(例如,图9的框632)处继续。

以此方式,如果校正失败,则高速缓存行将被重新读取,并且如果这不起作用,则过程尝试从不同地址重新读取,以尝试解决芯片杀死或双芯片杀死。此方法可起作用,因为不同地址可具有伴随芯片杀死符号错误的较少符号错误,所述芯片杀死符号错误随后将潜在地使得能够校正与伴随错误的地址相关联的错误。

现在转向图9,根据本发明的一个或多个实施例总体上示出了包括纠错逻辑的存储器系统900的框图。图9中所示的存储器系统900包括x4dramdimm906,该dimm插入到平面板902上的dimm连接器908中。由存储器系统900执行的过程类似于之前讨论的(例如,关于图3a的存储器系统300),然而,纠错逻辑位于平面板902上的缓冲器设备904中并且与dimm906共享。根据本发明的一个或多个实施例,存储器系统900中的每个dimm906包括用于存储数据的32个数据dram、用于存储ecc校验和和元数据符号的6个eccdram、以及用于校正128字节高速缓存线中的多达十五个符号的两个备用dram。图9中所示的存储器系统900允许通过将纠错逻辑从dimm(如图3a所示)移动到平面板902来利用更简单的dimm。

现在转到图10,根据本发明的一个或多个实施例,总体上示出了用于实现提供通用高和低随机位纠错的一些或所有方面的计算机系统1000的框图。本文描述的处理可在硬件、软件(例如,固件)或其组合中实施。在示范性实施例中,所描述的方法可以至少部分地在硬件中实现,并且可以是专用或通用计算机系统1000(诸如移动设备、个人计算机、工作站、小型计算机或大型计算机)的微处理器的一部分。

在示例性实施例中,如图10所示,计算机系统1000包括处理器1005、耦合到存储器控制器1015的存储器1012、以及一个或多个输入设备1045和/或输出设备1047(诸如经由本地i/o控制器1035通信地耦合的外围设备)。这些设备1047和1045可包括例如打印机、扫描仪、话筒等。常规键盘1050和鼠标1055可以耦合到i/o控制器1035。i/o控制器1035可以是例如一个或多个总线或其他有线或无线连接,如本领域已知的。i/o控制器1035可具有为简单起见而省略的额外元件,例如控制器、缓冲器(高速缓冲存储器)、驱动器、中继器和接收器,以实现通信。

i/o设备1047、1045可以进一步包括传送输入和输出两者的设备,例如磁盘和磁带存储、网络接口卡(nic)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(rf)或其他收发器、电话接口、桥接器、路由器等。

处理器1005是用于执行硬件指令或软件的硬件设备,特别是存储在存储器1012中的那些硬件指令或软件。处理器1005可以是定制的或可商购的处理器、中央处理单元(cpu)、与计算机系统1000相关联的若干处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、微处理器或用于执行指令的其他设备。处理器1005可以包括高速缓存,如但不限于用于加速可执行指令提取的指令高速缓存、用于加速数据提取和存储的数据高速缓存、以及用于加速可执行指令和数据两者的虚拟到物理地址转换的转换后备缓冲器(tlb)。高速缓存可以被组织为更多高速缓存级(l1、l2等)的层级。

存储器1012可包括易失性存储器元件(例如,随机存取存储器、ram,诸如dram、sram、sdram等)和非易失性存储器元件(例如,rom、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁带、致密盘只读存储器(cd-rom)、盘、软盘、盒式磁带、盒式磁带等)中的一个或组合。此外,存储器1012可并入电子、磁性、光学或其他类型的存储媒体。注意,存储器1012可具有分布式架构,其中不同组件位于彼此远程,但可由处理器1005存取。

存储器1012中的指令可包含一个或一个以上单独程序,所述程序中的每一者包括用于实施逻辑功能的可执行指令的有序列表。在图10的示例中,存储器1012中的指令包括合适的操作系统(os)1011。操作系统1011本质上可以控制其他计算机程序的执行并且提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。

包括例如处理器1005的指令或其他可检索信息的附加数据可被存储在存储1027中,存储1027可以是存储设备,诸如硬盘驱动器或固态驱动器。存储器1012或存储装置1027中所存储的指令可包含使处理器能够执行本发明的分派系统和方法的一个或一个以上方面的指令。

计算机系统1000可进一步包含耦合到显示器1030的显示控制器1025。在示范性实施例中,计算机系统1000还可以包括用于耦合到网络1065的网络接口1060。网络1065可以是用于经由宽带连接在计算机系统1000与外部服务器、客户端等之间通信的基于ip的网络。网络1065在计算机系统1000和外部系统之间发送和接收数据。在示范性实施例中,网络1065可以是由服务提供商管理的管理的ip网络。网络1065可以以无线方式实现,例如,使用无线协议和技术,诸如wifi、wimax等。网络1065还可以是分组交换网络,诸如局域网、广域网、城域网、互联网或其他类似类型的网络环境。网络1065可以是固定无线网络、无线局域网(lan)、无线广域网(wan)、个域网(pan)、虚拟专用网(vpn)、内联网或其他合适的网络系统,并且可以包括用于接收和传送信号的设备。

用于提供如本文所述的通用高随机位纠错和低随机位纠错的系统和方法可整体或部分地体现在计算机程序产品或计算机系统1000中,诸如图10中所示。

在此参考相关附图描述本发明的不同实施例。在不脱离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中的元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明在这方面并示意图进行限制。因而,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和工艺步骤可并入到具有本文未详细描述的附加步骤或功能的更全面的程序或工艺中。

以下定义和缩写用于解释权利要求书和说明书。如在此使用的,术语“包括”、“包含”、“包括”、“包括”、“具有”、“含有”或“含有”或其任何其他变体旨在覆盖非排他性的包括。例如,包含一系列元素的组合物、混合物、工艺、方法、制品或设备不一定仅限于那些元素,而是可包括未明确列出的或此类组合物、混合物、工艺、方法、制品或设备固有的其他元素。

此外,术语“示例性”在此用于指“用作实例、实例或说明。”本文中描述为“示例性”的任何实施例或设计不一定被解释为比其他实施例或设计优选或有利。术语“至少一个”和“一个或多个”可以被理解为包括大于或等于一的任何整数,即一个、两个、三个、四个等。术语“多个”可以理解为包括大于或等于2的任何整数,即.两个、三个、四个、五个等。术语“连接”可包括间接“连接”和直接“连接”两者。”

术语“约”、“基本上”、“大约”及其变体旨在包括与基于在提交本申请时可用的设备的具体量的测量相关联的误差程度。例如,“约”可以包括给定值的±8%或5%、或2%的范围。

为了简洁起见,与制作和使用本发明的多个方面相关的常规技术可以或可以不在此详细描述。具体地,用于实现本文描述的不同技术特征的计算系统和特定计算机程序的不同方面是公知的。因而,为了简洁起见,许多常规实现细节在此仅简要地提及,或者完全省略,而不提供公知的系统和/或过程细节。

本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储媒体(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。

计算机可读存储媒质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储媒质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储媒质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram)、便携式致密盘只读存储器(cd-rom),数字通用盘(dvd)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储媒质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输媒质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。

本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括java、smalltalk、c++等面向对象的编程语言,以及常规的过程式编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可完全在用户”的计算机上执行、部分在用户”的计算机上执行、作为独立软件包执行、部分在用户”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。

本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储媒质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储媒质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。

计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。

已经出于说明的目的呈现了本发明的不同实施例的描述,但并不旨在是穷尽性的或局限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择在此使用的术语以最佳地解释实施例的原理、实际应用或在市场上找到的技术上的技术改进,或使得本领域普通技术人员能够理解在此披露的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1