用于错误监视与校正的动态随机存取存储器设备与方法
【专利摘要】本公开的实施例提供了一种用于监视嵌入了错误校正码(ECC)的动态随机存取存储器(DRAM)设备的完好性及预测其故障的方法。把附加的寄存器嵌入在DRAM设备上,以存储有关DRAM的信息,例如,所述设备所检测的软错误的数目与位置。当DRAM设备检测到软错误时,其将更新存储在附加寄存器中的信息。控制器把存储在附加寄存器中的信息与相关阈值进行比较。在某些实施例中,在把所述信息与相关阈值进行比较之后,控制器可以判断是否调度修复动作。在其它一些实施例中,控制器可以判断是否警告存储器控制器:DRAM可能发生故障。
【专利说明】
用于错误监视与校正的动态随机存取存储器设备与方法
技术领域
[0001 ]总体上讲,本公开涉及计算硬件领域,更具体地讲,本公开涉及把嵌入了错误校正码(ECC)的动态随机存取存储器(DRAM)设备与记录和校正存储器错误的寄存器相耦合,以及针对低温攻击监视DRAM设备。
【背景技术】
[0002]动态存储器单元把电荷存储在电容器中。这些电容器的尺寸不断缩小,以适应不断增加的存储器需求。随着电容器变得越来越小,动态存储器单元变得越来越容易收到因减少的单元保持时间、电或者磁的干扰、以及本底辐射所导致的单一单元软错误的影响。为了扼制软错误的增加,某些DRAM制造商正直接在DRAM设备上嵌入错误校正码(ECC),而非依赖于中央处理器(CPU)或者系统存储器控制器。
[0003]随着时间的流逝,DRAM电容器会丢失它们的电荷,因此必须对它们进行刷新,以避免丢失信息。许多DRAM设备具有毫秒级的最大刷新时间间隔。DRAM电容器丢失其电荷的速率可能取决于温度。如果DRAM电容器被骤然冷却,则电荷可能存留长于它们处于正常操作温度时的时间,可能持续数分钟到数小时,而不是通常的几秒钟。
【发明内容】
[0004]本发明的实施例公开了一种用于监视嵌入了错误校正码(ECC)的动态随机存取存储器(DRAM)设备的完好性及预测其故障的装置与方法。在一个实施例中,本公开包括一种嵌入了ECC的DRAM设备。所述DRAM设备还包括一个存储所检测的错误的数目的连续计数的寄存器、以及一个存储所检测的错误的存储器地址的寄存器组。DRAM设备还包括一个ECC控制器,其中,将所述控制器配置为使用ECC执行错误检测与校正(EDAC)。
[0005]在另一个实施例中,本公开包括一种用于记录与校正嵌入了ECC的DRAM设备中软错误的方法。所述DRAM设备对一个字进行ECC检查,以判断该字中是否存在任何软错误。当检测到错误时,递增存储在DRAM设备上的寄存器中的错误计数,并且把相应于所述错误的位置的存储器地址保留在DRAM设备上的寄存器组中。
[0006]在另一些实施例中,本公开包括一种用于预测DRAM中故障的方法。DRAM设备接收一组有关DRAM的存储器信息。DRAM设备处理所述一组存储器信息,以确定一组错误指示符。然后DRAM设备把所述一组错误指示符与相关的阈值进行比较,如果所述一组错误指示符中的至少之一超过其相关的阈值,则向存储器控制器发送警告。
[0007]在另一些实施例中,本公开包括一种用于检测动态随机存取存储器(DRAM)设备上的低温攻击,并且对所述低温攻击做出响应的方法。通过使用一组决策参数处理一组存储器信息,确定一组错误指示符。然后把错误指示符与攻击特征群进行比较。如果错误指示符与攻击特征群相匹配,则禁止对DRAM设备的访问。
[0008]本公开的更多的实施例主要涉及针对指示低温攻击的状态监视DRAM设备,并且对所述低温攻击做出响应的系统和计算机程序产品。
[0009]以上
【发明内容】
不旨在描述每一个所说明的实施例,或本公开的每个实现。
【附图说明】
[0010]将包括在本申请中的图并入本说明书,并且形成本说明书的一部分。它们图示了本发明的实施例,并且与本描述一起用于解释本发明的原理。这些图仅示出了本发明的典型的实施例,并不构成对本发明的限制。
[0011]图1图示了根据本公开实施例的一个实例计算机系统的高级结构图,所述实例计算机系统可用于实现此处所描述的一或多种方法、工具、模块、以及任何相关的功能。
[0012]图2为流程图,图示了根据本公开实施例的用于记录嵌入了ECC功能的动态随机存取存储器(DRAM)设备中的错误的方法。
[0013]图3为流程图,图示了根据本公开实施例的用于标识在嵌入了ECC功能的DRAM设备中采取修复动作的需求的方法。
[0014]图4为根据本公开实施例的嵌入了ECC功能、错误记录单元、以及故障检测单元的实例DRAM设备的结构图。
[0015]图5为根据本公开实施例的用于预测嵌入了ECC功能的DRAM设备中故障的方法的流程图。
[0016]图6为根据本公开实施例的嵌入了ECC功能、错误记录单元、以及低温攻击检测单元的实例DRAM设备的结构图。
[0017]图7为图示了根据本公开实施例的用于检测嵌入了ECC功能的DRAM设备中低温攻击的方法的流程图。
【具体实施方式】
[0018]总体上讲,本公开涉及计算硬件领域,更具体地讲,本公开涉及把嵌入了错误校正码(ECC)的动态随机存取存储器(DRAM)设备与记录和标识修复存储器的需求的寄存器相耦合,以及针对低温攻击监视DRAM设备。然而本公开并非局限于这样的应用,可以根据本说明书所述,通过对不同实例的讨论理解本公开的各个方面。
[0019]DRAM是一种把数据的每一个比特存储在集成电路中的存储器单元中一个独立电容器中的随机存取存储器。可以对电容器进行充电,也可以令其放电,表示数据比特的二进制数值(I或者O)。有时,一个比特可以自发地从一个二进制值翻转到相反的二进制值,从而引发了软错误。电或者磁干扰、击中一个单元的阿尔法粒子、以及本底辐射可能导致软错误。
[0020]存储器中软错误的后果可取决于系统。在不具有ECC的系统中,软错误可能导致不可觉察的后果,也可能导致系统崩溃或者数据破坏。例如,假设把按ASCII格式存储数字的电子数据表加载到应用的存储器中,然后把数字“8”输入一个数据单元,接着保存电子数据表。可以由二进制比特序列00111000表示所述“8”,其中,序列中的每一个比特存储在独立的存储器单元中。如果在保存电子数据表之前阿尔法粒子击中存储二进制比特序列的最低有效比特(最右),导致比特从O翻转为1,则当接下来把电子数据表重新加载于存储器中时,先前包括数字“8”的数据单元现在可能包括数字“9”。尽管这样的变化不总是导致系统不稳定,但对于运行科学和金融计算的应用的系统、以及对于文件服务器,其影响是不可接受的。
[0021]那些不能容忍数据破坏的系统可以使用ECC存储器校正所出现的错误。ECC存储器可以使用附加的存储器芯片,以允许添加校验比特。当在读、写、或者刷新操作期间访问存储器单元时,存储器控制器,或,新近,中央处理器(CPU)可以与校验比特一起使用ECC,以检查错误。如果发现错误,则存储器控制器或者CPU,能够校正错误,取决于所翻转的比特的数目和所使用的ECC。用于校正软错误的ECC的实例包括Hamming码和Reed-Solomon码。
[0022]冷启动攻击是一种侧通道攻击,其中,在使用冷重启来重新启动机器之后,具有对计算机进行物理访问的攻击者能够从正在运行的操作系统检索加密密钥。在断电之后,所述攻击依赖于DRAM的数据剩磁特性检索继续存在的可读的存储器内容。在冷启动攻击中,在不让操作系统执行其关闭操作,并且把存储器内容转储于文件的情况下关闭电源。低温攻击是一种冷启动攻击,其中,首先冷却DRAM,以减慢各DRAM单元中的电容器泄漏。通过减慢DRAM设备中的存储器泄漏,攻击者能够向文件转储更多的DRAM信息,从而提高了成功盗取加密密钥的可能性。
[0023]如这里所使用的,“存储器信息”为可用于预测DRAM中故障的,或者可用于检测存储器上低温攻击的任何有关DRAM的信息。例如,存储器信息可以包括错误计数、DRAM的温度、或者在无写操作的情况下顺序读操作的次数的计数。“字”为具体处理器设计所使用的数据的一个自然单位,其与总线传送的大小有关。某些现代计算机和服务器使用64个比特的字,但其它字大小也存在,本公开不应局限于任何特定的字大小。
[0024]“错误率”指的是DRAM中新错误出现的速率。例如,如果在一个3秒的时间间隔上出现15个新错误,则错误率为每秒5个新错误。“错误加速度”为一段时间错误率的变化。例如,如果在I秒的时间间隔上错误率从5个新错误/秒变为10个新错误/秒,则错误加速度为每秒平方5个新错误。“错误指示符”为可以与已建立的阈值进行比较,以判断是否出现DRAM故障,或者是否出现DRAM上的低温攻击的有关DRAM的任何信息。例如,错误指示符可以为错误计数、错误率、错误加速度、或者DRAM温度。“相关阈值”为相应于某一给定错误指示符的阈值。例如,错误计数的相关阈值可以为DRAM能够容忍的错误的最大数目,而错误率的相关阈值可以为DRAM中新错误的最大可容忍率。
[0025]“修复动作”包括任何在DRAM上执行的、修复或者防止软错误的动作。例如,在某些实施例中,修复动作可以为运行存储器擦除操作。在其它一些实施例中,特别是当存储器单元或者行已经具有许多错误时,修复动作可以备份或者标记所述硬件,以致计算机系统将不再在受到影响的存储器单元或者行中存储信息,或者最终更换DRAM。
[0026]现在返回至附图,图1为其中可以实现此处所描述的诸如方法、工具、模块、以及任何相关功能的说明性实施例(例如,使用一或多个处理器电路或者计算机的计算机处理器)的实例计算机系统(例如,服务器)101的高级结构图。在某些实施例中,计算机系统101的主要部件可以包括一或多个CPU 102、存储器控制器105、存储器104、终端接口 113、储存器接口 114、输入/输出(1/0)设备接口 116、以及网络接口 118,可以经由存储器总线103、1/0总线112、以及I/O总线接口单元111将它们全部直接或者间接地可通信地加以耦合,以进行部件间的通?目O
[0027]计算机系统101可以包括一或多个通用可编程中央处理器(0?1])102六、1028、102(:、以及102D,此处,一般地将它们称为CPU 102。在某些实施例中,计算机系统101可以包括多个处理器,是一种典型的相当大的系统。在其它一些实施例中,计算机系统101可以为一个单CPU系统。每个CPU 102可以执行存储在存储器104中的指令,并且可以包括一或多层单板高速缓冲存储器(未示出)。
[0028]存储器104可以包括呈易失存储器形式的计算机系统可读介质,例如,动态随机存取存储器(DRAM)106。计算机系统101还可以包括可拆卸/不可拆卸、易失/非易失计算机系统存储介质。仅为举例,可以提供存储器系统,以从不可拆卸、非易失磁介质(例如,“硬驱动器”)读取以及向它们写入。尽管未示出,也可以提供磁盘驱动器,以从可拆卸、非易失磁盘(例如,软盘)读取以及向它们写入;或者光盘驱动器,以从可拆卸、非易失光盘(例如,CD-R0M、DVD-R0M或者其它光介质)读取或者向它们写入。另外,存储器104还可以包括诸如闪存棒或者闪存驱动器的闪速存储器。可以通过一或多个数据介质接口把存储器设备连接于存储器总线103。存储器104可以包括至少一个具有一组(至少一个)其配置旨在执行各实施例的功能的程序模块的程序产品。
[0029 ] 存储器104还可以包括ECC校验比特107、ECC控制器108、以及错误记录单元110。错误记录单元可以包括错误地址寄存器(EAR)组IlOA和错误计数寄存器(ECR) IlOB AAR组IlOA可以为一组寄存器,其中,每个寄存器存储ECC控制器108所检测的错误的位置。例如,EAR组IlOA可以存储其中ECC控制器108检测到错误的存储器单元的行地址、列地址、或者行与列地址。ECR IlOB可以为其中存储错误计数的寄存器。错误计数为ECC控制器108所发现的多个错误的连续计算。ECR IlOB和EAR组IlOA均可以被周期性地重新设置。作为选择,在某些实施例中,也可以通过存储器控制器105、ECC控制器108、或者用户把ECR IlOB和EAR组IlOA作为修复动作的一部分重新加以设置。
[0030]可以把ECC控制器108配置为使用校验比特107和错误校正码(例如,Hamming码和Reed-Solomon码)执行DRAM 106上的前向纠错(FEC)。存储在存储器中的ECC校验比特107的数目会依赖于DRAM 106的大小和所使用的错误校正码。还可以把ECC控制器108配置为当其检测到软错误时递增ECR 110B,并且把有关错误的信息(例如,错误的行与列地址)保存在EAR组 11OA 中。
[0031]在某些实施例中,错误记录单元110可以包括更多的存储有关DRAM更多信息的寄存器和寄存器组。例如,在某些实施例中,错误记录单元110可以存储一个多比特错误计数,凡当ECC控制器108检测到一个多比特错误时其递增。在某些实施例中,错误记录单元110可以存储计算DRAM 106中特定存储器组中所发现的错误的数目的专门针对具体组的错误计数。另外,凡当在DRAM 106中发现不可校正的错误时,错误记录单元110还可以存储向存储器控制器105发送警告的不可校正错误标志。
[0032]在某些实施例中,如以上所描述的,ECC控制器108可以与错误记录单元110直接进行通信,例如,为了递增ECR 11OB中的错误计数。然而,在其它一些实施例中,ECC控制器108可以间接地与错误记录单元110进行通信。例如,当检测到错误时,ECC控制器108可以向存储器控制器105警告错误的位置。于是,存储器控制器105可以与错误记录单元进行通信,以递增ECR I1B,并且把错误地址存储在EAR组I1A中。
[0033]在某些实施例中,可以存在多个存储器控制器。例如,CPU可以具有集成的存储器控制器,将其设计为与外部存储设备进行交互。在某些实施例中,外部存储控制器可以包括ECC控制器。
[0034]存储器104可以包括未示出的附加的芯片、传感器、或者控制器。例如,存储器104可以包括温度传感器、故障检测单元、或者低温攻击检测单元。故障检测单元可以预测存储器104中灾难性故障的开始,并且向控制器发送警告。低温攻击检测单元可以监视DRAM 106是否具有存储器104正经历低温攻击,即一种冷启动攻击的迹象。温度传感器可以监视DRAM的操作温度,并且辅助低温攻击检测单元。将参照图4和图5更全面地讨论故障检测单元,以及参照图6和图7更全面地讨论低温攻击检测单元。
[0035]尽管图1中把存储器总线103描述为在CPU102、存储器104、以及I/O总线接口 111之间提供了直接通信路径的单总线结构,但在某些实施例中存储器总线103也可以包括多条不同的总线或者通信路径,可以按任何不同的形式(例如,层次结构中的点到点链接、星型或者网型配置、多层次结构总线、并行或者冗余路径、或者任何其它适当类型的配置)设置这些不同的总线或者通信路径。而且,尽管把I/O总线接口 111和I/O总线112示出为单个的各自独立的单元,但在某些实施例中计算机系统101可以包括多个I/0总线接口单元111、多条I/O总线112、或者既包括多个I/O总线接口单元111也包括多条I/O总线112。另外,尽管示出了多个I/o接口单元(它们把I/O总线112与延伸至各I/O设备的各通信路径相分隔),但在其它一些实施例中,可以把某些或者全部I/O设备直接连接于一或多条系统I/O总线。
[0036]在某些实施例中,计算机系统101可以是多用户大型机计算机系统、单用户系统、或者服务器计算机或者具有很少或者无直接用户接口,而从其它计算机系统(客户机)接收请求的类似设备。另外,在某些实施例中,还可以把计算机系统101实现为一个台式计算机、便携式计算机、膝上机或者笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、网络交换器或者路由器、或者其它任何适当类型的电子设备。
[0037]注意,图1旨在描述一个示范性计算机系统101的一些具有代表性的主要部件。然而,在某些实施例中,各部件可能比图1中所示部件复杂或者简单,可能存在着不同于图1中所示部件或者除图1中所示部件之外的部件,这样的部件的数目、类型、以及配置可以不同。
[0038]现在参照图2,图2示出了根据本公开一个实施例的用于记录有关DRAM设备的存储器信息的一种实例方法200的流程图。在某些实施例中,可以通过嵌入在存储器104中的ECC控制器108(图1中所示)执行方法200。在其它一些实施例中,可以通过计算机系统101的存储器控制器105执行方法200。所述方法可以开始于操作202,其中,在DRAM设备中执行读、写、或者刷新操作。
[0039]作为存储器地址处的字的读、写、或者刷新操作的一部分或者接续,在操作204处,ECC控制器可以检查字的错误。ECC控制器可以使用现存的错误校正码或者算法(例如,Hamming码和Reed-So 1mon码)检查字的错误。
[0040]在操作206处,ECC控制器可以判断在操作204期间是否在字中检测到任何错误。如果没有检测到错误,则所述方法结束。然而,如果在操作204处检测到错误,则在每次操作208时ECC控制器可以递增保存在ECR中的错误计数,并且把错误位置的行地址保存在RAR组中的可用的寄存器中。
[0041]在操作210处,ECC控制器可以把错误计数与错误阈值进行比较。例如,错误阈值可以为DRAM中可容忍的错误的最大数目。如果错误计数低于所述阈值,则所述方法结束。然而,如果ECC控制器确定错误计数超过错误阈值,则ECC控制器将设置错误标志,如在操作212中所描述的。错误标志可以为一条消息,存储在存储器中或者将其直接发送给存储器控制器,其表示错误计数已经超过所述阈值。在一些可选的实施例中,可以通过把DRAM设备中的一个引脚驱动为高或者低,设置错误标志。
[0042]现在参照图3,图3示出了根据本公开一个实施例的用于监视DRAM设备完好性的一种实例方法300的流程图。在某些实施例中,可以通过嵌入在存储器104中的ECC控制器108(图1中所示)执行方法300。在其它一些实施例中,可以通过集成于计算机系统101的存储器控制器105执行方法300。在又一些其它实施例中,可以通过嵌入在DRAM设备中的专用控制器或者芯片执行方法300。所述方法可以开始于操作302,其中,存储器控制器判断是否设置了错误标志。例如,存储器控制器可以通过读取存储在具体存储器地址中的消息判断是否设置了错误标志。如果在所述存储器地址处发现表示错误阈值已被超过的预先确定的消息,则存储器控制器可以确定设置了错误标志。
[0043]如果存储器控制器确定设置了错误标志,则存储器控制器可以在每次操作304时执行一个修复动作。如果存储器控制器在操作302处确定没有设置错误标志,则存储器控制器可以在每次操作306时从错误记录单元检索存储器信息。所检索的存储器信息可以包括存储在ECR I1B中的错误计数和存储在EAR组I1A中的错误地址列表。存储器控制器可以在操作308处判断是否存在大数目的新错误。为了判断是否存在大数目的新错误,存储器控制器可以把新错误的总数目与一个阈值加以比较。
[0044]在某些实施例中,存储器控制器可以把某一具体寄存器组中新错误的数目与专门针对具体组的阈值进行比较。在其它一些实施例中,存储器控制器可以把某一具体地址处(包括在具体的行或者列处)的新错误的数目与相应的地址阈值进行比较。在任何情况下,可以由用户配置所述阈值,也可以由存储器制造商加以设置,并且将它们存储在DRAM设备上或者非易失存储器中的模块上。如果存储器控制器确定不存在大数目的新错误,则所述方法将结束。
[0045]当存储器控制器确定存在大数目的新错误时,存储器控制器可以在每次操作310时调度一个修复动作。在某些实施例中,存储器控制器可以在确定存在大数目的新错误和可用的修复资源之后,立即执行修复动作。
[0046]现在参照图4,图4示出了根据本公开一个实施例的嵌入了用于预测DRAM的故障的ECC的DRAM设备的结构图。所述DRAM设备包括DRAM阵列402、ECC控制器406、错误记录单元408、以及故障检测单元410,通过连接于外部I/O 412的I/O 404直接或者间接地将它们可通信地与计算机系统(未示出)相耦合。I/O 404是DRAM驱动器,嵌入在DRAM设备上,其向外部I/O 412提供电压或者电流。外部I/O 412可以是DRAM设备上的新的附加的引脚,其也可以是现存引脚的新的多路传输的定义。
[0047]ECC控制器406可以使用错误校正码(例如,Hamming码和Reed-So 1mon码)检测DRAM阵列402中的单比特和多比特错误。依据所使用的错误校正码,ECC控制器406还可以校正所检测的错误,特别是在单比特错误的情况下。当ECC控制器406检测到错误时,其把存储器信息存储在错误记录单元408中。
[0048]存储器信息可以包括:错误地址408A,其是其中ECC控制器406检测到错误的单元的存储器地址;以及错误计数408B,其对自错误记录单元408被最后一次重置以来ECC控制器406所发现的错误的数目连续地进行计算。在某些实施例中,错误记录单元408可以存储更多的存储器信息。例如,错误记录单元408可以存储相应于ECC控制器所检测的多比特错误的数目的第二错误计数。在其它一些实施例中,ECC控制器406可以存储对ECC控制器406在DRAM阵列402中的每一个唯一组中所检测到的错误进行计算的专门针对具体组的错误计数。在又一些其它实施例中,存储在错误记录单元408中的存储器信息可以包括不可校正的错误计数(ECC控制器406所检测到的不可校正的错误的数目)、DRAM的温度、以及错误标志。
[0049]故障检测单元410可以存储决策参数411。决策参数411是故障检测单元410用于确定诸如DRAM的错误率和错误加速度的错误指示符、以及与错误指示符进行比较以预测DRAM中故障的阈值的参数。例如,决策参数可以包括阈值41IA、411B与411C、以及时间周期41ID和411E。第一阈值411A可以为最大可容忍错误计数,第二阈值411B可以为最大可容忍错误率,以及第三阈值411C可以为最大可容忍错误加速度。第一时间周期411D可用于计算错误率,而第二时间周期41IE可用于计算错误加速度。
[0050]故障检测单元410可以在第一时间周期41ID上监视错误计数408A,以确定错误率。于是,故障检测单元可以在第二时间周期411E上监视错误率,以确定错误加速度。一旦故障检测单元已经确定了错误计数、错误率、以及错误加速度,其可以把它们与它们相关阈值411A、411B、以及411C分别进行比较。如果错误计数、错误率、以及错误加速度超过它们相关阈值,则故障检测单元可以警告存储器控制器= DRAM可能要出现故障,或者存储器可能变得不稳定。
[0051 ]在某些实施例中,故障检测单元可以包括把存储在错误记录单元408中的存储器信息与决策参数411进行比较的控制器。在其它一些实施例中,可以把ECC控制器406或者外部存储器控制器(例如,图1中所示的存储器控制器105)配置为把存储器信息与决策参数411进行比较。在这些实施例中,故障检测单元410仅可以存储决策参数411。
[0052]图4描述了一个实例DRAM设备401的具有代表性的主要部件。然而,在某些实施例中,各部件可能比图4中所示部件复杂或者简单,可能存在着不同于图4中所示部件或者除图4中所示部件之外的部件,这样的部件的数目、类型、以及配置可以不同。例如,在某些实施例中,可以把一个单存储器控制器配置为执行ECC控制器406和故障检测单元410的功能。
[0053]在某些实施例中,可以由用户配置决策参数411。在其它一些实施例中,可以由DRAM制造商把决策参数411预先加载到非易失存储器中。在某些实施例中,可以在DRAM执行了某一给定的操作(例如,存储器擦除操作)之后重置存储在错误记录单元408中的信息,例如,错误地址408A和错误计数408B。在其它一些实施例中,可以由故障检测单元410或者存储器控制器105重置错误记录单元408。
[0054]现在参照图5,图5是示出了根据本公开一个实施例的用于预测DRAM设备的故障的一个实例方法500的流程图。在某些实施例中,可以通过嵌入在DRAM中的故障检测单元410执行方法500。在其它一些实施例中,可以由集成于计算机系统101的存储器控制器105执行方法500。所述方法可以开始于操作502,其中,故障检测单元从错误记录单元接收存储器信息。
[0055]在操作504处,故障检测单元可以通过处理在操作502处所接收的存储器信息确定错误指示符。错误指示符可以为错误计数、错误率(新错误出现在DRAM中的速率)和错误加速度(一段时间新错误速率的变化)。在某些实施例中,错误指示符也可以包括不可校正的错误率(不可校正的错误出现在DRAM中的速率)和不可校正的错误加速度(一段时间不可校正的错误速率的变化)。如果所翻转的比特的数目超过嵌入在DRAM设备上的错误校正码可校正的最大数目,则把错误视为不可校正的。在确定了错误指示符(在这一实例中,为错误计数、错误率、以及错误加速度)之后,故障检测单元可以判断任何错误指示符是否超过其相关阈值。
[0056]首先,每次操作506时,故障检测单元可以判断错误计数是否超过其相关阈值。如果错误计数超过其相关阈值,则故障检测单元在操作512处可以向存储器控制器105(图1中所示)发送警告,然后所述过程可以结束。如果在操作506处错误计数没有超过其相关阈值,则每次操作508时故障检测单元可以判断错误率是否超过其相关阈值。如果错误率超过其相关阈值,则故障检测单元在操作512处可以向存储器控制器105发送警告,然后所述过程可以结束。如果在错误率没有超过其相关阈值,则每次操作510时故障检测单元可以判断错误加速度是否超过其相关阈值。如果错误加速度超过其相关阈值,则故障检测单元在操作512处可以向存储器控制器105发送警告,然后所述过程可以结束。如果在错误加速度没有超过相关阈值,则所述方法可以在操作502处重新开始,其中故障检测单元可以从错误记录单元接收存储器信息。
[0057]可以按多种方式实现在操作512处对存储器控制器105的警告。在某些实施例中,向存储器控制器105发送警告可以包括提升或者降低DRAM设备上的专用引脚,例如,把DRAM设备中的奇偶错引脚驱动为高或者低。在又一些其它实施例中,向存储器控制器105发送警告可以包括故意破坏所读出的数据,以触发循环冗余校验(CRC)错误。在又一些其它实施例中,向存储器控制器105发送警告可以包括向控制器发送预定义的数据模式,控制器将把其识别为错误信号。本公开不要求,也不应局限于用于当错误指示符超过其相关阈值时警告存储器控制器的任何具体的方法。
[0058]现在参照图6,图6示出了根据本公开一个实施例的嵌入了能够检测和响应低温攻击的ECC的DRAM设备的结构图。所述DRAM设备包括DRAM阵列402、ECC控制器406、温度传感器618、错误记录单元408、低温攻击检测单元610、以及熔断器612,通过连接于数据引脚620的I/O 404和连接于命令(CMD)引脚616的命令(CMD)译码器614把DRAM设备可通信地耦合于计算机系统(未示出)。
[0059]数据引脚620为DRAM设备的数据I/O引脚。数据引脚620为双向引脚,具有允许数据写的输入能力和允许数据读的输出能力。依据设备,可以存在4、8、16、或者32个数据引脚620。其它配置也是可以的,本公开不应局限于具有任何特定数目数据引脚620的设备。
[0060]CMD引脚616为DRAM设备上的一组输入引脚,它们提供了与将要访问的单元地址多路复用的命令(例如,读、写、刷新)XMD译码器614为DRAM设备上的译码器,其解释提供在CMD引脚616上的所编码的命令输入,并且使DRAM能够执行适当的操作(例如,读、写、刷新)。[0061 ] DRAM阵列402、ECC控制器406、以及错误记录单元408按以上参照图4描述的操作。ECC控制器406使用错误校正码检测DRAM阵列402中的错误,并且将存储器信息存储在错误记录单元408中。另外,错误记录单元408还存储其从温度传感器618所接收的DRAM的温度608Co
[0062]与此处所描述的故障检测单元非常相像,低温攻击检测单元610存储多个决策参数611。可以由用户配置决策参数611、或者由制造商设置决策参数611,以辅助低温攻击检测单元610判断DRAM是否正在经历低温攻击。
[0063]例如,低温攻击检测单元610可以使用第一时间周期61IC计算不可校正的错误率,并且使用第二时间周期611D计算不可校正的错误加速度。低温攻击检测单元610可以判断不可校正的错误率和不可校正的错误加速度是否分别超过第一阈值611A和第二阈值611B。作为选择,在某些实施例中,低温攻击检测单元610也可以把DRAM温度608C与温度阈值611E进行比较,以判断DRAM是否正在指示低温攻击的温度上操作。
[0064]如果低温攻击检测单元610确定DRAM正经历低温攻击,则其可以禁止对DRAM上的信息的访问。在某些实施例中,可以通过切断熔断器612实现这一点。例如,熔断器612可以为一个电子熔断器(e-熔断器)、可编程电阻器、或者相变电阻器。
[0065]现在参照图7,图7示出了根据本公开一个实施例的用于检测和响应DRAM设备的低温攻击的一个实例方法700的流程图。在某些实施例中,可以由嵌入了存储器104的低温攻击检测单元610执行方法700。在其它一些实施例中,可以由集成于计算机系统101的存储器控制器105执行方法700。在又一些其它实施例中,可以把所述方法包括在DRAM控制逻辑中。
[0066]首先,方法700可以包括通过使用一组决策参数处理一组存储器信息来确定一组错误指示符。然后,低温攻击检测单元可以把该组错误指示符与一个预先确定的攻击特征群进行比较。所述攻击特征群可以是一组DRAM设备经历低温攻击时或者DRAM设备已经被电探测时可能出现的状态。例如,在某些实施例中,攻击特征群可以为极高的错误率,特别是当错误不可校正时。在其它一些实施例中,攻击特征群可以为极高的错误加速度,同样,特别是当错误不可校正时。在又一些其它实施例中,攻击特征群可以为极低的温度。
[0067]在本公开的某些实施例中,可以由DRAM制造商把攻击特征群存储在DRAM设备上的非易失存储器中。例如,攻击特征群也可以是作为决策参数存储在低温攻击检测单元中的阈值。在其它一些实施例中,可以由用户配置攻击特征群。在又一些其它实施例中,可以由DRAM制造商把第一攻击特征群存储在DRAM设备上的非易失存储器中,而且用户可也建立更多的攻击特征群,以满足其具体的需求。
[0068]在某些实施例中,攻击特征群可以为高错误率、高错误加速度与/或低温度的一个组合。例如,在实例方法700中,把攻击特征群特征化为具有高的不可校正错误率(在第一阈值之上)和提高的不可校正错误加速度(在第二阈值之上),其中,如果计算机系统正经历正常的停机操作,则提高的不可校正错误加速度低于所期望的提高的不可校正错误加速度(即,低于第三阈值)。方法700可以开始于操作702,其中,低温攻击检测单元从错误记录单元接收存储器信息。
[0069]在操作704处,低温攻击检测单元可以确定不可校正的错误(UE)率和加速度。可以通过计算一个指定时间周期(例如,存储在低温攻击检测单元610中的第一时间周期611C)上所发现的不可校正的错误的数目,确定UE率。例如,如果第一时间周期611C为2秒,并且在2秒期间检测到4个新的不可校正的错误,则确定UE率为每秒2个不可校正的错误。可以通过计算一段时间(例如,第二时间周期61ID)上UE率的变化,确定UE加速度。例如,在I秒时间周期上,UE率从每秒I个不可校正的错误改变为每秒3个不可校正的错误,则可以把UE加速度确定为每秒平方2个不可校正的错误。
[0070]在操作706处,低温攻击检测单元可以判断UE率是否超过第一阈值。例如,可以通过把所计算的UE率与存储在低温攻击检测单元611中的第一阈值61IA相比较实现这一点。如果UE率没有超过第一阈值,则所述方法可以在操作702处重新开始。如果UE率超过第一阈值,则每次操作708,低温攻击检测单元可以判断UE加速度是否超过第二阈值。
[0071]如果UE加速度没有超过第二阈值,则所述方法可以在操作702处重新开始。如果UE加速度超过第二阈值,则在操作710处低温攻击检测单元可以判断UE加速度是否超过第三阈值。把UE加速度与第三阈值进行比较,例如,可以是把存储器上的低温攻击的影响与系统重新启动或者关闭对存储器的影响加以区别。如果UE加速度超过第三阈值(表示系统正在关闭或者正在重新启动),则可以在操作702处重新开始此方法。如果UE加速度没有超过第三阈值,则低温攻击检测单元可以在操作712处禁止对DRAN上信息的访问,并且可以结束所述过程。
[0072]在操作712处,存在许多禁止对DRAN上的信息进行访问的方法。例如,在某些实施例中,可以使用诸如熔断熔断器612(切断电源或者电压调节器输出)的永久性自毁装置阻止对信息的访问。在其它一些实施例中,当检测到低温攻击时,DRAM将熔断熔断器612,从而使CMD译码器614无法工作。当使CMD译码器614无法工作时,将忽略所有输入的命令,而且DRAM将不允许读取其数据。
[0073]在又一些其它实施例中,DRAM可以把整个阵列写成已知状态。可以使用提供行地址的刷新地址计数器、循环通过所有行地址、执行一个特定的写循环(其强行使所有读出放大器呈预定的状态)实现对所有单元的覆盖写。
[0074]如此处更详细地加以讨论的,应该意识到,能够按可选的次序执行此处所描述的方法的某些实施例的某些或者全部操作,也可以根本不执行;另外,多个操作可以同时发生或者作为一个较大过程的一个内部部分发生。
[0075]本发明可以是一种系统、方法与/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0076]计算机可读存储介质可以是能够保存和存储由指令执行设备使用的指令的有形设备。例如,计算机可读存储介质可以是,但不局限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述设备的任何合适的组合。计算机可读存储介质的更具体实例的一个非穷举的列表包括:便携式计算机塑料磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备(例如,其上具有所记录的指令的打孔卡或凹槽内凸起的结构的)、以及上述存储介质的任何合适的组合。这里所使用的计算机可读存储介质不应被视为瞬时信号本身,例如,无线电波或者其它自由传播的电磁波、通过波导或者其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0077]这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过诸如因特网、局域网、广域网与/或无线网的网络下载到外部计算机或外部存储设备。所述网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机与/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发所述计算机可读程序指令,以存储在各个计算/处理设备中的计算机可读存储介质中。
[0078]用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、依赖于机器的指令、微代码、固件指令、状态设置数据、或者以一或多种编程语言的任何组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk、C++等的面向对象的编程语言、以及诸如“C”编程语言或者类似的编程语言的传统过程式编程语言。计算机可读程序指令可以完全地在用户的计算机上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情况下,可以通过包括局域网(LAN)或者广域网(WAN)的任何种类的网络把远程计算机连接于用户的计算机,或者,可以连接于外部计算机(例如利用因特网服务提供商,通过因特网)。在某些实施例中,例如,包括可编程逻辑电路、现场可编程门阵列(FPGA)、或者可编程逻辑阵列(PLA)的电子电路可以利用计算机可读程序指令的状态信息执行计算机可读程序指令,以个性化电子电路,从而可实现本发明的各个方面。
[0079]此处参照根据本发明的实施例的方法、装置(系统)以及计算机程序产品的流程图说明与/或结构图描述了本发明的各个方面。应当意识到,所述流程图说明与/或结构图的每个方框以及流程图说明与/或结构图中各方框的组合,均可由计算机可读程序指令加以实现。
[0080]可以把这些计算机程序指令提供于通用计算机、专用计算机、或者其它可编程数据处理装置的处理器,从而生产出一种机器,以致通过计算机或者其它可编程数据处理装置的处理器执行的指令能够创建用于实现流程图与/或结构图各方框中所指出的功能/动作的机制。也可以把这些计算机程序指令存储在计算机可读介质中,这些指令可以指挥计算机、其它可编程数据处理装置或者其它设备以特定方式运作,从而使存储在计算机可读介质中的指令能够产生一个包括实现流程图与/或结构图各方框中所指出的功能/动作的指令的制造广品。
[0081]也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或者其它设备上,从而能够在计算机、其它可编程装置或者其它设备上执行一系列操作步骤,以产生一个计算机实现的过程,于是运行在计算机、其它可编程数据处理装置、或者其它设备上的指令能够实现流程图与/或结构图各方框中所指出的功能/动作。
[0082]附图中的流程图和结构图说明了根据本发明的不同实施例的系统、方法、以及计算机程序产品的可能实现的体系架构、功能、以及操作。就此而言,流程图或者结构图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包括一或多条用于实现所指定逻辑功能的可执行的指令。在某些可选的实现中,方框中所标注的功能也可以以不同于附图中所标注的次序出现。例如,两个连续描述的方框实际上可以基本上并行地执行,它们有时也可以按相反的顺序执行,取决于所涉及的功能。也要注意的是,结构图与/或流程图说明中的每个方框、以及结构图与/或流程图说明中的方框的组合,可以由执行所指定功能或动作的基于专用硬件的系统加以实现,也可以由专用硬件与计算机指令的组合加以实现。
[0083]此处所使用的术语仅旨在描述具体的实施例,并不旨在对各实施例加以限制。如此处所使用的,单数形式“一个(英文的a或者an)”以及“该或者所述(英文的(the)”也旨在包括复数形式,除非上下文明确加以表示。还应该意识到,当用于本说明书时,术语“包括(英文的includes与/或including)”指出所陈述的特性、整体、步骤、操作、元件、与/或部件的存在,但不排除一或多个其它特性、整体、步骤、操作、元件、部件、与/或它们的组合的存在或者添加。在各实施例示范性实施例的上述详细描述中,参照了附图(其中,以相同的数字表示相同的图元),所述附图形成了详细描述的一部分,而且其中,说明性地示出了其中可以实践各实施例的具体的示范性实施例。足够详细地描述了这些实施例,从而能够使本领域技术人员实践这些实施例,然而,在不脱离各实施例的范围的情况下也可以使用其它实施例,并且可以进行逻辑、机械、电、以及其它改变。在以上的描述中,阐述了许多具体的细节,旨在提供对各实施例的一个全面的了解。然而,也可以在不使用这些具体细节的情况下实践各实施例。在其它一些取例中,为了使实施例清晰,没有详细描述已知的电路、结构、以及技术。
[0084]本说明书中所使用的词“实施例”的不同取例不必指同一实施例,但可以指同一实施例。此处所说明的或者所描述的数据与数据结构仅为实例,在其它一些实施例中,可以使用不同的数据量、数据类型、字段、字段的数目与类型、字段名、行的数目与类型、记录、条目、或者数据的组织。另外,也可以把任何数据与逻辑相组合,从而可以不需要独立的数据结构。因此,以上的详细描述是非限制性的。
[0085]尽管以上已经就具体的实施例描述了本发明,预计本领域技术人员将会明显意识至IJ,可以对本发明进行改变与修改。因此,旨在把以下权利要求解释为覆盖落入本发明宗旨与范围的所有这样的改变与修改。
【主权项】
1.一种嵌入了错误校正码(ECC)的动态随机存取存储器(DRAM)设备,所述DRAM设备包括: DRAM阵列; 存储错误计数的第一寄存器; 存储一组错误地址的第一寄存器组;以及ECC控制器,其中,把ECC控制器配置为使用DRAM阵列上的ECC执行错误检测与校正(EDAC),凡当检测到错误时递增错误计数,并且把错误地址写入第一寄存器组中的可用寄存器。2.根据权利要求1所述的DRAM设备,还包括存储多比特错误计数的第二寄存器。3.根据权利要求1所述的DRAM设备,还包括存储不可校正的错误标志的第二寄存器。4.根据权利要求1所述的DRAM设备,还包括监视DRAM设备温度的温度传感器、以及存储温度阈值的值的非易失存储器。5.根据权利要求1所述的DRAM设备,还包括存储一组专门针对具体寄存器组的错误计数的第二寄存器组,其中,所述一组专门针对具体寄存器组的错误计数中的每一个对应于DRAM阵列中的唯一的存储器组。6.根据权利要求1所述的DRAM设备,还包括: 第二寄存器组,其存储多个决策参数;以及 故障检测单元,其预测DRAM设备的故障,并且检测DRAM设备的故障行或者列。7.—种用于记录和校正动态随机存取存储器(DRAM)错误的方法,所述方法包括: 使用错误校正码检测DRAM设备中字中的错误; 响应对错误的检测,递增存储在第一寄存器中的错误计数;以及响应对错误的检测,把相应于错误位置的错误地址保存在第一寄存器组中的可用的寄存器中。8.根据权利要求7所述的方法,还包括: 判断错误是否为多比特错误;以及 对错误为多比特错误加以响应,递增存储在第二寄存器中的多比特错误计数。9.根据权利要求7所述的方法,还包括: 判断错误是否位于第一存储器组中;以及 对在第一存储器组中检测到错误加以响应,递增针对第一具体组的错误计数,其中针对第一具体组的错误计数把多个错误存储在第一存储器组中,并且将针对第一具体组的错误计数存储在第二寄存器组中。10.根据权利要求7所述的方法,还包括: 判断错误是否为不可校正的;以及 对错误为不可校正的加以响应,设置不可校正的错误标志。11.根据权利要求7所述的方法,还包括: 判断错误计数是否超过阈值;以及 对错误计数超过所述阈值加以响应,设置错误标志。12.根据权利要求11所述的方法,还包括对所设置的错误标志加以响应,执行修复动作。13.根据权利要求7所述的方法,还包括: 确定在第一时间的第一错误计数; 确定在第二时间的第二错误计数,第二时间在第一时间之后; 通过把第二错误计数与第一错误计数进行比较,确定多个新错误的数目; 判断新错误的数目是否大于新错误阈值;以及 对确定新错误的数目超过新错误阈值加以响应,调度修复动作。14.一种用于预测DRAM设备中故障的方法,所述方法包括: 接收有关DRAM设备的存储器信息; 使用一组决策参数处理存储器信息,以确定错误指示符; 判断错误指示符是否超过相关错误阈值;以及 对错误指示符超过相关错误阈值加以响应,向控制器发出警告。15.根据权利要求14所述的方法,其中错误指示符为错误计数。16.根据权利要求14所述的方法,其中错误指示符为错误率。17.根据权利要求14所述的方法,其中错误指示符为错误加速度。18.根据权利要求14所述的方法,其中: 错误指示符包括错误率和错误加速度;以及 判断错误指示符是否超过相关错误阈值包括把错误率与第一阈值进行比较,以及把错误加速度与第二阈值进行比较。19.根据权利要求14所述的方法,其中向控制器发出警告包括提升专用引脚。20.根据权利要求14所述的方法,其中向控制器发出警告包括向控制器发送预先确定的读取数据模式。21.—种用于检测和响应动态随机存取存储器(DRAM)设备上低温攻击的方法,所述方法包括: 接收有关DRAM设备的一组存储器信息; 使用一组决策参数处理所述一组存储器信息,以确定一组错误指示符; 判断所述一组错误指示符是否与攻击特征群相匹配;以及 对所述一组错误指示符与攻击特征群相匹配加以响应,禁止对DRAM设备的访问。22.根据权利要求21所述的方法,其中所述一组错误指示符包括错误计数。23.根据权利要求21所述的方法,其中所述一组错误指示符包括错误率。24.根据权利要求21所述的方法,其中所述一组错误指示符包括错误加速度。25.根据权利要求21所述的方法,其中所述一组错误指示符包括多个顺序读操作,无写操作。26.根据权利要求21所述的方法,其中所述一组错误指示符包括DRAM设备的温度。27.根据权利要求21所述的方法,其中: 所述一组错误指示符包括错误率和错误加速度;以及 判断所述一组错误指示符是否与攻击特征群相匹配包括把错误率与第一阈值进行比较,以及把错误加速度与第二阈值进行比较。28.根据权利要求21所述的方法,其中禁止对DRAM设备的访问包括切断DRAM设备上的熔断器。29.根据权利要求21所述的方法,其中禁止对DRAM设备的访问包括把DRAM阵列写为已知状态。30.根据权利要求21所述的方法,其中可以由用户配置攻击特征群。31.一种系统,包括: 存储器;以及 动态随机存取存储器(DRAM)控制逻辑,其中,DRAM控制逻辑使存储器: 接收有关DRAM设备的一组存储器信息; 使用一组决策参数处理所述一组存储器信息,以确定一组错误指示符; 判断所述一组错误指示符是否与攻击特征群相匹配;以及 对所述一组错误指示符与攻击特征群相匹配加以响应,禁止对DRAM设备的访问。32.—种用于检测和响应动态随机存取存储器(DRAM)设备上低温攻击的计算机程序产品,所述计算机程序产品包括一或多个计算机可读存储介质和存储在一或多个计算机可读存储介质中至少之一上的程序指令,当执行这些指令时,执行权利要求21?30任何之一的步骤。
【文档编号】G06F11/10GK105843699SQ201610064309
【公开日】2016年8月10日
【申请日】2016年1月29日
【发明人】M.B.希利, H.C.亨特, C.A.基尔默, 金圭贤, W.E.莫尔
【申请人】国际商业机器公司