调用错误处理程序来处理无法纠正的错误转让专利

申请号 : CN201380076235.2

文献号 : CN105408869B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D·H·尹J·常N·穆拉利马诺哈P·兰加纳桑R·施雷伯N·P·朱皮

申请人 : 慧与发展有限责任合伙企业

摘要 :

检测器使用错误码检测存储在存储器中的数据中的错误。该检测器确定该错误是否使用错误码无法纠正。响应于确定错误是无法纠正的,与应用程序相关联的错误处理程序被调用以通过恢复数据到应用范围一致状态来处理数据中的错误。

权利要求 :

1.一种用于调用错误处理程序来处理无法纠正的错误的方法,包括:由存储器控制器中的错误检测器使用错误码检测存储在存储器中的数据中的错误;

由所述错误检测器确定错误是否使用错误码无法纠正;

响应于确定错误是无法纠正的,由所述错误检测器发送无法纠正的错误指示以及与所述错误相关的存储器位置的地址;以及响应于所述无法纠正的错误指示,调用与应用程序相关联的错误处理程序,以由所述错误处理程序基于与所述错误相关的存储器位置的地址通过从数据存储中检索数据的版本并使用事务日志来将数据从检索的数据的版本恢复到应用范围一致状态,来处理数据中的错误。

2.根据权利要求1所述的方法,其中调用错误处理程序包括调用是应用程序的一部分的错误处理程序。

3.根据权利要求1所述的方法,其中应用程序管理存储在存储器和持久储存器中的数据结构中的数据的存储。

4.根据权利要求3所述的方法,其中应用程序是数据库管理应用程序。

5.根据权利要求3所述的方法,其中该应用程序是执行存储器中的数据到数据存储的间断性检查点操作并且维持事务日志的应用程序。

6.根据权利要求1所述的方法,其中检测错误由错误检测器执行,该错误检测器是基于硬件的错误检测器。

7.根据权利要求1所述的方法,其中检索数据的版本包括从检查点操作的数据检索数据的版本。

8.根据权利要求7所述的方法,进一步包括:应用在事务日志中的重做或撤消信息到检索的数据的版本,以恢复数据到应用范围一致状态。

9.根据权利要求1所述的方法,进一步包括:检测存储器区域已经经历了重复的无法纠正的错误;以及停止使用该存储器区域。

10.一种用于调用错误处理程序来处理无法纠正的错误的装置,包括:存储器控制器,所述存储器控制器包括错误检测器,所述错误检测器用以:从存储器接收数据和相关联的错误码;

使用错误码确定数据是否具有无法纠正的错误;以及响应于确定数据具有无法纠正的错误,发送无法纠正的错误指示以及与所述错误相关的存储器位置的地址;

响应于所述无法纠正的错误指示,调用与应用程序相关联的错误处理程序,所述调用的错误处理程序使用由所述错误检测器发送的与错误有关的存储器位置的地址以通过从数据存储检索数据的版本并将由事务日志指示的修改应用到检索的数据的版本来恢复数据到应用范围一致状态。

11.根据权利要求10所述的装置,其中错误码是错误检查和纠正码。

12.一种电子设备,包括:

持久储存器,用以存储包含关于具有修改的数据的事务信息的事务日志;

存储器;

包括错误处理程序的应用程序,其中应用程序将管理在持久储存器和存储器中的数据结构中的数据的存储;

存储器控制器,所述存储器控制器包括错误检测器,所述错误检测器用以:使用从存储器检索的错误码检测从存储器检索的数据中的无法纠正的错误;

响应于无法纠正的错误,发送无法纠正的错误指示以及与所述错误有关的存储器位置的地址,以致使错误处理程序的调用,其中通过使用事务日志以及基于与由存储器控制器发送的错误相关的存储器位置的地址通过从持久储存器检索数据的版本,错误处理程序将存储器的数据恢复到应用范围一致状态。

13.根据权利要求12所述的电子设备,其中错误处理程序用以:通过从持久储存器检索检查点操作的数据并将事务应用到检查点操作的数据上而恢复数据。

14.根据权利要求12所述的电子设备,其中错误处理程序将具有无法纠正的错误的数据的位置的物理地址转换成虚拟地址。

15.根据权利要求12所述的电子设备,其中错误处理程序将执行存储器的数据的单页恢复。

说明书 :

调用错误处理程序来处理无法纠正的错误

背景技术

[0001] 电子设备中的存储器容易受到错误损害。例如,电或磁干扰可能致使存储在存储器内的数据位无意中改变状态。为了减低这样的数据错误,除了数据外,错误保护位也可以被存储在存储器中。存储器控制器可以使用错误保护位来检测并纠正数据错误。错误保护位的示例包括错误检查和纠正(ECC)码。
[0002] ECC码可以被用于多达指定位数的检测和纠正(例如一位错误、两位错误等等)。如果数据错误涉及超过指定位数的错误,则ECC码将不可用来纠正数据错误,并且将指示故障状态。

附图说明

[0003] 关于以下附图描述了一些实施例:
[0004] 图1是根据一些实施方式的错误检测和纠正过程的流程图;
[0005] 图2是根据一些实施方式的示例性电子设备的框图;以及
[0006] 图3是根据替代实施方式的错误检测和纠正过程的流程图。

具体实施方式

[0007] 数据中心可以包括相对大量的组件,包括处理器、存储器设备、持久存储设备、网络组件和其他设备。存储器设备可以是系统故障的重要来源,特别是如果在数据中心中有相对大量的存储器设备的情况下。存储器设备的示例包括动态随机存取存储器(DRAM)设备、闪速存储器设备、相变存储器设备、忆阻器存储器设备、基于磁盘的存储设备或其他类型的存储器设备。
[0008] 错误检查和纠正(ECC)码可以被存储在存储器设备中,以检测和纠正存储在存储器设备中的数据中的错误。ECC码的示例是单位错误纠正和双位错误检测(SECDED)码,其能够检测多达两位的数据错误,并纠正单位错误。为了更强的保护,其他纠错技术可以采用ECC码来防范诸如存储器设备(也被称为存储器芯片)之类的整个设备的故障。这样的纠错技术的示例可以包括芯片删除(chipkill)纠正技术、单芯片备用(SCS)技术或单设备数据纠正(SDDC)技术。上述纠错技术可以容忍列(rank)内的整个存储器设备的故障,其中列是指涉及服务存储器请求的一组存储器设备。
[0009] 在其他示例中,可以提供ECC码以容忍两个存储器设备的故障。这样的纠错技术的示例包括双芯片删除纠正技术、双芯片备用(DCS)技术或双设备数据纠正(DDDC)技术。
[0010] 使用更强的纠错技术所增加的可靠性可能会以增加的功率使用和潜在降低的系统性能为代价而达到。例如,更强的纠错技术可能涉及某些存储器排列的使用,某些存储器排列包括每列更大量的存储器设备,这导致增加的功率使用。此外,更强的纠错技术可以使用存储器排列,该存储器排列采用高速缓存存储器中更大的高速缓存行,从性能的角度来看这可能是低效的。
[0011] 使用存储在存储器(其中“存储器”可以指一个或多个存储器设备)中的ECC码的错误检测和纠正通过使用错误检测和纠正电路来执行,错误检测和纠正电路可以用硬件实现。在随后的讨论中,错误检测和纠正电路被称为“错误检测器”。错误检测器可以仅用硬件实现。替代地,错误检测器可以被实现为硬件和机器可读指令(例如固件或软件)的组合。
[0012] 在随后的讨论中,假定错误检测器是基于硬件的错误检测器。然而,在替代实施方式中,可以设想到错误检测器可以是硬件和机器可读指令的组合。
[0013] 为了提高性能和降低功耗,根据一些实施方式的错误检测器可以采用不太健壮的纠错技术,其中错误检测器能够调用单独的错误处理程序来处理不可以由错误检测器纠正的数据错误。不太健壮的纠错技术是指这样的一种纠错技术,其能够纠正比另一个纠错技术数量少的数据错误位。例如,可以采用不太健壮的纠错技术,诸如SECDED纠错技术,来代替使用可以承受整个存储器设备或多个存储器设备的错误的纠错技术。然而,在替代示例中,错误检测器能够实现可以纠正与列中的一个或多个存储器设备的故障相关联的错误的纠错技术。
[0014] 图1是根据一些实施方式的过程的流程图,该过程可以由错误检测器执行。错误检测器使用错误码检测(在102处)存储在存储器中的数据中的错误。错误码可以是ECC码或可用于检测存储在存储器中的数据中的错误的任何其他信息。错误码可以与数据一起被存储在存储器中。
[0015] 检测器接下来确定(在104处)检测的错误是否是由错误检测器使用错误码可以纠正或无法纠正。如果可以纠正,则错误检测器使用错误码纠正(在106处)检测的错误。然而,如果检测的错误是无法纠正的,则错误检测器调用(在108处)专用错误处理程序,该专用错误处理程序可用机器可读指令实现(其与错误检测器分离)。调用的错误处理程序通过从数据存储中检索数据的之前版本并使用事务日志将数据从数据的之前版本恢复到一致状态而将数据恢复到一致状态来处理数据中检测的错误。
[0016] 例如,存储器中的数据可能已被拷贝到持久储存器中的数据存储。在专用错误处理程序的恢复程序期间,可以从持久储存器中检索该数据拷贝,以将存储器的数据复原到一致状态。
[0017] 调用的错误处理程序可以包括管理存储器中以及持久储存器中的数据结构中数据的存储的应用程序的机器可读指令。例如,应用程序可以是数据库管理应用程序,该数据库管理应用程序将数据存储在具有关系表的数据库中。在其他示例中,应用程序可以是不同类型的应用程序,诸如将数据存储在键值(key-value)存储中的应用程序,或执行存储器中的数据的间断性存储到持久存储并维持事务日志的任何其他类型的应用程序。
[0018] 任务108中的专用错误处理程序将存储器的数据恢复到应用范围一致状态。数据的应用范围一致状态是指由相应的应用程序认为是有效的数据的状态。
[0019] 事务日志被持久存储并且保持对存储器中已经修改的数据的事务的跟踪,其中数据的修改可以包括插入新数据、删除数据或更新数据。事务日志可以包括重做信息和撤销信息两者。重做信息允许将事务重新应用到数据的之前版本。例如,专用错误处理程序可以从持久储存器中检索数据的之前版本(在由错误检测器检测的错误之前的数据的状态)到存储器中,并且可以在写入存储器的检索的数据上应用事务日志中的重做信息,以重新执行关于数据已经执行的修改操作。
[0020] 事务日志中的撤销信息可以被用来撤消在存储器中进行的数据的修改。例如,在提交事务之前,可能已经将修改的数据从存储器写入持久储存器。提交事务是指使事务的结果持久化。如果在事务被提交之前故障(诸如由错误检测器检测的无法纠正的数据错误)发生,可以使用撤销信息执行回滚操作来撤销已由事务进行的数据修改。回滚致使数据在无法纠正的数据错误发生之前将重新回到数据的之前的一致状态。
[0021] 图2图示了示例性电子设备200,该示例性电子设备200包括存储器202(其可用一个或多个存储器设备实现)、基于硬件的错误检测器204、处理器206和可在处理器206上执行的应用程序208。存储器202存储数据210和相关联的ECC码212。
[0022] 在一些示例中,错误检测器204可以是存储器控制器的一部分,该存储器控制器管理存储器202中的数据的访问(读访问和写访问)。在其他示例中,错误检测器204可以是其他电路的一部分。错误检测器204包括处理电路205,该处理电路205可以包括执行指定任务的硬件电路。
[0023] 在写入数据到存储器202期间,存储器控制器可以基于写入数据生成ECC码,并且ECC码和写入数据可以被存储在存储器202中。
[0024] 在存储器202的读取期间,存储器控制器检索数据210和相应的ECC码212,并且错误检测器204使用ECC码212来检测在读取数据210中的错误。如果在读取数据210中检测到错误,则错误检测器204试图使用ECC码212来纠正该数据错误。
[0025] 如果错误检测器204确定数据错误是无法纠正的,则错误检测器204可以发送无法纠正的错误指示214到处理器206。虽然无法纠正的错误提示214被描绘为被直接从错误检测器204发送到处理器206,要注意的是,在替代示例中,错误检测器204可以发送无法纠正的错误提示214到中间控制器,该中间控制器进而可以发送对应的指示(例如中断)到处理器206。由处理器206接收对应于无法纠正的错误提示214的指示致使处理器调用应用程序208。在一些示例中,中断可以致使处理器206在操作系统(OS)处启动中断程序,这进而可以调用应用程序208来处理无法纠正的错误状态。
[0026] 应用程序208可以是数据库管理应用程序或管理存储器202中以及持久储存器220中的数据的存储的任何其他应用程序。持久储存器220可以包括储存器(诸如基于磁盘的储存器或其他非易失性储存器),即使从电子设备200中移除电源,该储存器也可以维持存储在持久储存器220中的数据。
[0027] 应用程序208与错误处理程序209(“专用错误处理程序”)相关联,该错误处理程序209用于处理由错误检测器204读取的数据中的无法纠正的错误。虽然图2将错误处理程序
209描绘为应用程序208的一部分,要注意的是,在其他示例中错误处理程序209可以与应用程序208分离。由错误处理程序209处理数据错误包括执行恢复程序来恢复数据到应用范围一致状态。
[0028] 在应用程序208是数据库管理应用程序的示例中,该应用程序可以执行存储在存储器202中的数据的间断性(例如周期或非周期的)检查点操作(checkpointing)。对存储器202中数据进行检查点操作涉及在给定的时间点从存储器202拷贝数据到持久储存器220。
如图2中所示,检查点操作致使检查点操作的数据222将被存储在持久储存器220中。
[0029] 此外,应用程序208可以在持久储存器220中维持事务日志224以保持对存储器202中的已修改数据的事务的跟踪。虽然在图2中只描绘一个事务日志224,但是在其他示例中,应用程序208可以维持多个事务日志。
[0030] 事务日志224可以包括重做信息和撤销信息两者(如上所讨论的)。重做信息允许将事务重新应用到数据的之前版本,诸如检查点操作的数据222。例如,应用程序208可以将数据的之前的一致状态(在由错误检测器204检测的错误之前的数据状态)从检查点操作的数据222恢复到存储器202,并且可以在写入存储器202的恢复数据上应用事务日志中的重做信息,以重新执行关于数据已经执行的修改操作。
[0031] 事务日志224中的撤销信息可以被用来撤消在存储器202中进行的数据的修改。例如,修改的数据可能在提交事务之前已经从存储器202检查点操作到持久储存器220。提交事务是指使事务的结果持久化。如果故障(诸如由错误检测器204检测的无法纠正的数据错误)在事务被提交之前发生,则可以使用撤销信息执行回滚操作来撤销已由事务进行的数据修改。回滚致使数据在无法纠正的数据错误出现之前将重新回到数据的之前一致状态。
[0032] 在一些示例中,可以采用单页恢复技术。应用程序208的数据可以被存储在页中,其中一页是指具有预定义的大小来存储数据的某一指定的数据结构。单页恢复允许将恢复单页的数据,而其他页保持不变。
[0033] 执行单页恢复的好处可以是单页可以比整个数据库的页恢复得更快。在单页恢复操作中,错误处理程序209可以为该页从持久储存器220获取之前的检查点操作的数据,并且如果页中的数据是脏的(已被修改),则错误处理程序209可以应用来自与该页相关联的事务日志224的重做或撤销信息来重建该页的之前一致状态。单页恢复技术是相对低延迟的恢复技术。结果,由于通过应用程序208恢复无法纠正的错误,最终用户甚至可能没有注意到任何质量下降。
[0034] 图3是根据替代实施方式的纠错的过程的流程图。存储器控制器从存储器202读取(在302处)数据和相关联的ECC码。错误检测器204使用ECC码执行读取数据的ECC解码(在304处)。错误检测器204确定(在306处)读取数据中是否有错误。如果没有,则读取数据可以由存储器控制器输出(在310处),诸如输出到高速缓存控制器(其可以是处理器206的一部分或者在处理器206外部)。
[0035] 如果检测到数据错误,则错误检测器使用ECC码确定(在308处)数据错误是否可以纠正。如果可以纠正,则纠正读取数据,并且纠正的读取数据由存储器控制器输出(在310处)。
[0036] 如果错误检测器204确定(在308处)数据错误是无法纠正的,则错误检测器204调用(在312处)应用程序208的专用错误处理程序209来处理无法纠正的数据错误。
[0037] 由错误检测器204提供给与数据错误相关的错误处理程序209的存储器位置的地址是物理地址。错误处理程序209可以将物理地址转换(在314处)成虚拟地址,诸如通过使用反向映射(RMAP)技术。错误处理程序209通过恢复数据到应用范围一致状态来恢复(在316处)虚拟地址空间中的数据。恢复的数据被写入存储器202。
[0038] 错误处理程序209也能够保持对特定物理地址已经发生的无法纠正的错误的次数的跟踪。如果对特定物理地址的无法纠正的错误重复超过指定的阈值次数,则错误处理程序209可以停止使用(在318处)对应于特定物理地址的存储器区域。停止使用可以通过发送消息给电子设备200的操作系统或系统固件(例如基本输入/输出系统或BIOS代码)来完成,其可以将存储器区域标记为不可用,以便使得未来不发生对标记的存储器区域的写入。标记的故障存储器区域可以包括一页、一列或者整个存储器设备。
[0039] 在替代实施方式中,代替错误处理程序209停止使用与重复的无法纠正的错误相关联的存储器区域,错误检测器204可以基于重复的无法纠正的错误的检测来确定是否应该停止使用存储器区域。
[0040] 根据一些实施方式,提供协作的硬件/软件纠错技术或机制来提高包括存储器的电子设备的可靠性、可用性和可服务性,同时降低功耗。
[0041] 以上讨论的各种模块(例如应用程序208、错误处理程序209、错误检测器204等等)可以被实现为在处理电路上可执行的机器可读指令。处理电路可以包括控制器(例如存储器控制器)、或者诸如微处理器之类的处理器、微控制器、处理器模块或子系统、可编程集成电路、可编程门阵列或另一个控制或计算设备。
[0042] 数据和指令被存储在相应的存储设备中,该相应的存储设备被实现为一个或多个计算机可读或机器可读的存储介质。存储介质包括不同形式的存储器,所述存储器包括半导体存储器设备,诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除和可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)和闪速存储器;磁盘,诸如硬盘、软盘和可移动磁盘;其他磁介质,包括磁带;光学介质,诸如光盘(CD)或数字视频光盘(DVD);或其他类型的存储设备。注意,上面讨论的指令可以被提供在一个计算机可读或机器可读的存储介质上,或者替代地,可以被提供在分布在可能具有复数节点的大系统中的多个计算机可读或机器可读的存储介质上。这样的一个或多个计算机可读或机器可读的存储介质被(全被)认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器上,或者位于可以通过网络从其中下载机器可读指令以用于执行的远程站点。
[0043] 在前面的描述中,许多细节被阐明以提供对本文公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实行实施方式。其他实施方式可以包括来自上面讨论的细节的修改和变化。目的是所附权利要求覆盖这样的修改和变化。