首页> 中国专利> 调用错误处理程序来处理无法纠正的错误

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

摘要

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

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-25

    授权

    授权

  • 2017-02-15

    专利申请权的转移 IPC(主分类):G06F11/08 登记生效日:20170122 变更前: 变更后: 申请日:20130529

    专利申请权、专利权的转移

  • 2016-04-13

    实质审查的生效 IPC(主分类):G06F11/08 申请日:20130529

    实质审查的生效

  • 2016-03-16

    公开

    公开

说明书

背景技术

电子设备中的存储器容易受到错误损害。例如,电或磁干扰可能致使存储 在存储器内的数据位无意中改变状态。为了减低这样的数据错误,除了数据外, 错误保护位也可以被存储在存储器中。存储器控制器可以使用错误保护位来检 测并纠正数据错误。错误保护位的示例包括错误检查和纠正(ECC)码。

ECC码可以被用于多达指定位数的检测和纠正(例如一位错误、两位错误 等等)。如果数据错误涉及超过指定位数的错误,则ECC码将不可用来纠正数 据错误,并且将指示故障状态。

附图说明

关于以下附图描述了一些实施例:

图1是根据一些实施方式的错误检测和纠正过程的流程图;

图2是根据一些实施方式的示例性电子设备的框图;以及

图3是根据替代实施方式的错误检测和纠正过程的流程图。

具体实施方式

数据中心可以包括相对大量的组件,包括处理器、存储器设备、持久存储 设备、网络组件和其他设备。存储器设备可以是系统故障的重要来源,特别是 如果在数据中心中有相对大量的存储器设备的情况下。存储器设备的示例包括 动态随机存取存储器(DRAM)设备、闪速存储器设备、相变存储器设备、忆 阻器存储器设备、基于磁盘的存储设备或其他类型的存储器设备。

错误检查和纠正(ECC)码可以被存储在存储器设备中,以检测和纠正存 储在存储器设备中的数据中的错误。ECC码的示例是单位错误纠正和双位错误 检测(SECDED)码,其能够检测多达两位的数据错误,并纠正单位错误。为 了更强的保护,其他纠错技术可以采用ECC码来防范诸如存储器设备(也被称 为存储器芯片)之类的整个设备的故障。这样的纠错技术的示例可以包括芯片 删除(chipkill)纠正技术、单芯片备用(SCS)技术或单设备数据纠正(SDDC) 技术。上述纠错技术可以容忍列(rank)内的整个存储器设备的故障,其中列是 指涉及服务存储器请求的一组存储器设备。

在其他示例中,可以提供ECC码以容忍两个存储器设备的故障。这样的纠 错技术的示例包括双芯片删除纠正技术、双芯片备用(DCS)技术或双设备数 据纠正(DDDC)技术。

使用更强的纠错技术所增加的可靠性可能会以增加的功率使用和潜在降低 的系统性能为代价而达到。例如,更强的纠错技术可能涉及某些存储器排列的 使用,某些存储器排列包括每列更大量的存储器设备,这导致增加的功率使用。 此外,更强的纠错技术可以使用存储器排列,该存储器排列采用高速缓存存储 器中更大的高速缓存行,从性能的角度来看这可能是低效的。

使用存储在存储器(其中“存储器”可以指一个或多个存储器设备)中的 ECC码的错误检测和纠正通过使用错误检测和纠正电路来执行,错误检测和纠 正电路可以用硬件实现。在随后的讨论中,错误检测和纠正电路被称为“错误 检测器”。错误检测器可以仅用硬件实现。替代地,错误检测器可以被实现为硬 件和机器可读指令(例如固件或软件)的组合。

在随后的讨论中,假定错误检测器是基于硬件的错误检测器。然而,在替 代实施方式中,可以设想到错误检测器可以是硬件和机器可读指令的组合。

为了提高性能和降低功耗,根据一些实施方式的错误检测器可以采用不太 健壮的纠错技术,其中错误检测器能够调用单独的错误处理程序来处理不可以 由错误检测器纠正的数据错误。不太健壮的纠错技术是指这样的一种纠错技术, 其能够纠正比另一个纠错技术数量少的数据错误位。例如,可以采用不太健壮 的纠错技术,诸如SECDED纠错技术,来代替使用可以承受整个存储器设备或 多个存储器设备的错误的纠错技术。然而,在替代示例中,错误检测器能够实 现可以纠正与列中的一个或多个存储器设备的故障相关联的错误的纠错技术。

图1是根据一些实施方式的过程的流程图,该过程可以由错误检测器执行。 错误检测器使用错误码检测(在102处)存储在存储器中的数据中的错误。错 误码可以是ECC码或可用于检测存储在存储器中的数据中的错误的任何其他信 息。错误码可以与数据一起被存储在存储器中。

检测器接下来确定(在104处)检测的错误是否是由错误检测器使用错误 码可以纠正或无法纠正。如果可以纠正,则错误检测器使用错误码纠正(在106 处)检测的错误。然而,如果检测的错误是无法纠正的,则错误检测器调用(在 108处)专用错误处理程序,该专用错误处理程序可用机器可读指令实现(其与 错误检测器分离)。调用的错误处理程序通过从数据存储中检索数据的之前版本 并使用事务日志将数据从数据的之前版本恢复到一致状态而将数据恢复到一致 状态来处理数据中检测的错误。

例如,存储器中的数据可能已被拷贝到持久储存器中的数据存储。在专用 错误处理程序的恢复程序期间,可以从持久储存器中检索该数据拷贝,以将存 储器的数据复原到一致状态。

调用的错误处理程序可以包括管理存储器中以及持久储存器中的数据结构 中数据的存储的应用程序的机器可读指令。例如,应用程序可以是数据库管理 应用程序,该数据库管理应用程序将数据存储在具有关系表的数据库中。在其 他示例中,应用程序可以是不同类型的应用程序,诸如将数据存储在键值 (key-value)存储中的应用程序,或执行存储器中的数据的间断性存储到持久存 储并维持事务日志的任何其他类型的应用程序。

任务108中的专用错误处理程序将存储器的数据恢复到应用范围一致状态。 数据的应用范围一致状态是指由相应的应用程序认为是有效的数据的状态。

事务日志被持久存储并且保持对存储器中已经修改的数据的事务的跟踪, 其中数据的修改可以包括插入新数据、删除数据或更新数据。事务日志可以包 括重做信息和撤销信息两者。重做信息允许将事务重新应用到数据的之前版本。 例如,专用错误处理程序可以从持久储存器中检索数据的之前版本(在由错误 检测器检测的错误之前的数据的状态)到存储器中,并且可以在写入存储器的 检索的数据上应用事务日志中的重做信息,以重新执行关于数据已经执行的修 改操作。

事务日志中的撤销信息可以被用来撤消在存储器中进行的数据的修改。例 如,在提交事务之前,可能已经将修改的数据从存储器写入持久储存器。提交 事务是指使事务的结果持久化。如果在事务被提交之前故障(诸如由错误检测 器检测的无法纠正的数据错误)发生,可以使用撤销信息执行回滚操作来撤销 已由事务进行的数据修改。回滚致使数据在无法纠正的数据错误发生之前将重 新回到数据的之前的一致状态。

图2图示了示例性电子设备200,该示例性电子设备200包括存储器202(其 可用一个或多个存储器设备实现)、基于硬件的错误检测器204、处理器206和 可在处理器206上执行的应用程序208。存储器202存储数据210和相关联的 ECC码212。

在一些示例中,错误检测器204可以是存储器控制器的一部分,该存储器 控制器管理存储器202中的数据的访问(读访问和写访问)。在其他示例中,错 误检测器204可以是其他电路的一部分。错误检测器204包括处理电路205,该 处理电路205可以包括执行指定任务的硬件电路。

在写入数据到存储器202期间,存储器控制器可以基于写入数据生成ECC 码,并且ECC码和写入数据可以被存储在存储器202中。

在存储器202的读取期间,存储器控制器检索数据210和相应的ECC码 212,并且错误检测器204使用ECC码212来检测在读取数据210中的错误。 如果在读取数据210中检测到错误,则错误检测器204试图使用ECC码212来 纠正该数据错误。

如果错误检测器204确定数据错误是无法纠正的,则错误检测器204可以 发送无法纠正的错误指示214到处理器206。虽然无法纠正的错误提示214被描 绘为被直接从错误检测器204发送到处理器206,要注意的是,在替代示例中, 错误检测器204可以发送无法纠正的错误提示214到中间控制器,该中间控制 器进而可以发送对应的指示(例如中断)到处理器206。由处理器206接收对应 于无法纠正的错误提示214的指示致使处理器调用应用程序208。在一些示例 中,中断可以致使处理器206在操作系统(OS)处启动中断程序,这进而可以 调用应用程序208来处理无法纠正的错误状态。

应用程序208可以是数据库管理应用程序或管理存储器202中以及持久储 存器220中的数据的存储的任何其他应用程序。持久储存器220可以包括储存 器(诸如基于磁盘的储存器或其他非易失性储存器),即使从电子设备200中移 除电源,该储存器也可以维持存储在持久储存器220中的数据。

应用程序208与错误处理程序209(“专用错误处理程序”)相关联,该错误 处理程序209用于处理由错误检测器204读取的数据中的无法纠正的错误。虽 然图2将错误处理程序209描绘为应用程序208的一部分,要注意的是,在其 他示例中错误处理程序209可以与应用程序208分离。由错误处理程序209处 理数据错误包括执行恢复程序来恢复数据到应用范围一致状态。

在应用程序208是数据库管理应用程序的示例中,该应用程序可以执行存 储在存储器202中的数据的间断性(例如周期或非周期的)检查点操作 (checkpointing)。对存储器202中数据进行检查点操作涉及在给定的时间点从存 储器202拷贝数据到持久储存器220。如图2中所示,检查点操作致使检查点操 作的数据222将被存储在持久储存器220中。

此外,应用程序208可以在持久储存器220中维持事务日志224以保持对 存储器202中的已修改数据的事务的跟踪。虽然在图2中只描绘一个事务日志 224,但是在其他示例中,应用程序208可以维持多个事务日志。

事务日志224可以包括重做信息和撤销信息两者(如上所讨论的)。重做信 息允许将事务重新应用到数据的之前版本,诸如检查点操作的数据222。例如, 应用程序208可以将数据的之前的一致状态(在由错误检测器204检测的错误 之前的数据状态)从检查点操作的数据222恢复到存储器202,并且可以在写入 存储器202的恢复数据上应用事务日志中的重做信息,以重新执行关于数据已 经执行的修改操作。

事务日志224中的撤销信息可以被用来撤消在存储器202中进行的数据的 修改。例如,修改的数据可能在提交事务之前已经从存储器202检查点操作到 持久储存器220。提交事务是指使事务的结果持久化。如果故障(诸如由错误检 测器204检测的无法纠正的数据错误)在事务被提交之前发生,则可以使用撤 销信息执行回滚操作来撤销已由事务进行的数据修改。回滚致使数据在无法纠 正的数据错误出现之前将重新回到数据的之前一致状态。

在一些示例中,可以采用单页恢复技术。应用程序208的数据可以被存储 在页中,其中一页是指具有预定义的大小来存储数据的某一指定的数据结构。 单页恢复允许将恢复单页的数据,而其他页保持不变。

执行单页恢复的好处可以是单页可以比整个数据库的页恢复得更快。在单 页恢复操作中,错误处理程序209可以为该页从持久储存器220获取之前的检 查点操作的数据,并且如果页中的数据是脏的(已被修改),则错误处理程序209 可以应用来自与该页相关联的事务日志224的重做或撤销信息来重建该页的之 前一致状态。单页恢复技术是相对低延迟的恢复技术。结果,由于通过应用程 序208恢复无法纠正的错误,最终用户甚至可能没有注意到任何质量下降。

图3是根据替代实施方式的纠错的过程的流程图。存储器控制器从存储器 202读取(在302处)数据和相关联的ECC码。错误检测器204使用ECC码执 行读取数据的ECC解码(在304处)。错误检测器204确定(在306处)读取 数据中是否有错误。如果没有,则读取数据可以由存储器控制器输出(在310 处),诸如输出到高速缓存控制器(其可以是处理器206的一部分或者在处理器 206外部)。

如果检测到数据错误,则错误检测器使用ECC码确定(在308处)数据错 误是否可以纠正。如果可以纠正,则纠正读取数据,并且纠正的读取数据由存 储器控制器输出(在310处)。

如果错误检测器204确定(在308处)数据错误是无法纠正的,则错误检 测器204调用(在312处)应用程序208的专用错误处理程序209来处理无法 纠正的数据错误。

由错误检测器204提供给与数据错误相关的错误处理程序209的存储器位 置的地址是物理地址。错误处理程序209可以将物理地址转换(在314处)成 虚拟地址,诸如通过使用反向映射(RMAP)技术。错误处理程序209通过恢 复数据到应用范围一致状态来恢复(在316处)虚拟地址空间中的数据。恢复 的数据被写入存储器202。

错误处理程序209也能够保持对特定物理地址已经发生的无法纠正的错误 的次数的跟踪。如果对特定物理地址的无法纠正的错误重复超过指定的阈值次 数,则错误处理程序209可以停止使用(在318处)对应于特定物理地址的存 储器区域。停止使用可以通过发送消息给电子设备200的操作系统或系统固件 (例如基本输入/输出系统或BIOS代码)来完成,其可以将存储器区域标记为不 可用,以便使得未来不发生对标记的存储器区域的写入。标记的故障存储器区 域可以包括一页、一列或者整个存储器设备。

在替代实施方式中,代替错误处理程序209停止使用与重复的无法纠正的 错误相关联的存储器区域,错误检测器204可以基于重复的无法纠正的错误的 检测来确定是否应该停止使用存储器区域。

根据一些实施方式,提供协作的硬件/软件纠错技术或机制来提高包括存储 器的电子设备的可靠性、可用性和可服务性,同时降低功耗。

以上讨论的各种模块(例如应用程序208、错误处理程序209、错误检测器 204等等)可以被实现为在处理电路上可执行的机器可读指令。处理电路可以包 括控制器(例如存储器控制器)、或者诸如微处理器之类的处理器、微控制器、 处理器模块或子系统、可编程集成电路、可编程门阵列或另一个控制或计算设 备。

数据和指令被存储在相应的存储设备中,该相应的存储设备被实现为一个 或多个计算机可读或机器可读的存储介质。存储介质包括不同形式的存储器, 所述存储器包括半导体存储器设备,诸如动态或静态随机存取存储器(DRAM 或SRAM)、可擦除和可编程只读存储器(EPROM)、电可擦除和可编程只读存 储器(EEPROM)和闪速存储器;磁盘,诸如硬盘、软盘和可移动磁盘;其他 磁介质,包括磁带;光学介质,诸如光盘(CD)或数字视频光盘(DVD);或 其他类型的存储设备。注意,上面讨论的指令可以被提供在一个计算机可读或 机器可读的存储介质上,或者替代地,可以被提供在分布在可能具有复数节点 的大系统中的多个计算机可读或机器可读的存储介质上。这样的一个或多个计 算机可读或机器可读的存储介质被(全被)认为是物品(或制品)的一部分。 物品或制品可以指任何制造的单个组件或多个组件。一个或多个存储介质可以 位于运行机器可读指令的机器上,或者位于可以通过网络从其中下载机器可读 指令以用于执行的远程站点。

在前面的描述中,许多细节被阐明以提供对本文公开的主题的理解。然而, 可以在没有这些细节中的一些或全部的情况下实行实施方式。其他实施方式可 以包括来自上面讨论的细节的修改和变化。目的是所附权利要求覆盖这样的修 改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号