[发明专利]用于处理不可纠正的内存错误的方法及非瞬态处理器可读介质有效
| 申请号: | 201280076003.2 | 申请日: | 2012-09-25 |
| 公开(公告)号: | CN104685474B | 公开(公告)日: | 2018-04-20 |
| 发明(设计)人: | 安德鲁·克里斯托弗·沃尔顿 | 申请(专利权)人: | 慧与发展有限责任合伙企业 |
| 主分类号: | G06F11/08 | 分类号: | G06F11/08;G06F12/16 |
| 代理公司: | 北京德琦知识产权代理有限公司11018 | 代理人: | 柴德海,康泉 |
| 地址: | 美国德*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 包括 不可 纠正 错误 地址 范围 通知 | ||
背景技术
机器校验架构是一种可以在现代计算系统中用于检测故障(如内存中的故障)的技术。在许多计算系统中,通过纠错码(ECC)保护内存。通常使用的纠错码能够检测和纠正单比特错误。在多比特错误的情况下,ECC能够检测该错误,但不能纠正该错误。在使用机器校验架构的系统中,当发现包括不可纠正的错误的内存位置时,在该内存位置中设置被称为毒药签名(poison signature)或简称毒药(poison)的特殊值。该毒药签名一般通过操纵ECC比特来产生。数据中不可纠正的错误可以由内存控制器、CPU缓存、IO设备或在任意多个其它元件中被识别,并且那些元件中的任意元件能够在该数据中生成毒药签名。
系统能够长期运行,即使存在毒药。但是,当中央处理单元(CPU)尝试使用包括毒药的内存位置时,处理器可能产生机器校验异常。该机器校验异常可以由计算设备的固件或操作系统截获。在一些情况下,不能够采取纠正措施,并且整个系统可能崩溃。但是,在其它情况下,操作系统能够采取恢复措施。例如,操作系统可以杀掉正在使用被确定包括毒药的内存位置的特定进程。
附图说明
图1是根据本文描述的技术的系统的示例。
图2是用于处理不可纠正的内存错误的概要流程图的示例。
图3是用于基于不可纠正的错误的检测来初始化内存的概要流程图的示例。
图4是操作系统清理内存地址范围的概要流程图的示例。
图5是用于处理由不可纠正的内存错误导致的可恢复错误和不可恢复错误的概要流程图的示例。
图6是用于检测毒药消耗的概要流程图的示例。
图7是用于检测毒药和从该毒药恢复的概要流程图的示例。
具体实施方式
毒药(poison)在机器校验架构系统中的使用对检测包括不可纠正的错误的内存及防止CPU使用包括错误的内存是非常有用的。在一些情况下,内存可以包括由软件使用的数据值。损坏的数据值的使用可以导致获得不正确的结果。在其它情况下,内存位置可以包括待由CPU执行的指令。在这种情况下,该内存位置中包括的指令基本上是随机指令,因为不能确定错误如何修改该指令。利用ECC,损坏的指令可以被识别出,但不一定被纠正。
如上面提到的,当接收到机器校验异常时,由操作系统采取的典型动作是清除正在使用受影响的内存位置的进程。通常,清除该进程意味着停止该进程的操作并且释放已分配给该进程的所有资源,如内存。但是,当仅清除进程时,由于毒药的存在,产生数个问题。产生的一个问题是,一旦操作系统清除该进程,由该进程使用的内存便处于未知状态。内存可能包括更多错误,在这种情况下,由不同进程尝试使用该内存会导致附加机器校验异常。另一问题是由该进程使用的内存可能具有毒药并且如果OS将该内存区域分配给另一进程,则该进程可能进入该有毒药的内存。当前系统中的操作系统通常不充分了解内存控制器清理被清除的进程的具有毒药的内存。
操作系统有两个选择。第一,可以声明由被清除的进程使用的内存不可用。在这种情况下,操作系统不再尝试使用该内存。在重启之间长时间运行的系统中,随着越来越多进程被清除以及它们的内存资源被标记为不可用,这可以导致在内存映射中出现大量间断。在第二选择中,操作系统可以清除该进程,但是允许继续使用该内存,尽管最初可能存在与导致该毒药的内存硬件相关的实际问题。如果不采取措施来确保该内存没有毒药以及没有会导致未纠正错误的故障,则盲目地重新使用内存可以导致产生附加机器校验。
上面的讨论假定最初可以清除正在使用包括错误的内存的进程。如果在敏感进程(如操作系统内核)中检测到毒药,则清除进程通常导致系统崩溃。在许多情况中,操作系统的设计者提供在清除关键进程(如内核)时由该关键进程使用的内存的内存转储(dump)。该转储允许专家分析在故障时该关键进程正在做什么以及更好地调试该故障。但是,如果由关键进程使用的内存包括附加错误,则访问该内存以转储内容的仅有动作可以导致附加的机器校验异常。
进一步加重由毒药导致的机器校验异常的问题是纯粹的毒药产生不是清除进程的自身原因。例如,当尝试预获取CPU缓存的缓存行时,内存控制器可以检测内存中的错误。然后,内存控制器可以用毒药签名替代包含该错误的内存并加载带有该毒药签名的缓存。此时,系统知道已经产生毒药,但是无法确定该毒药是否以及何时将被消耗(consume)。例如,进程可以从不尝试访问所预获取的缓存行,因此从不产生机器校验异常。此外,系统没有明确方法来确定通过清除消耗该毒药的进程,操作系统是否能够从该毒药的消耗中恢复。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于慧与发展有限责任合伙企业,未经慧与发展有限责任合伙企业许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201280076003.2/2.html,转载请声明来源钻瓜专利网。





