首页> 中国专利> 一种CC-NUMA系统中节点的错误目录的处理方法和节点

一种CC-NUMA系统中节点的错误目录的处理方法和节点

摘要

本发明提供一种缓存一致性-非对称存储器访问CC-NUMA系统中节点的错误目录的处理方法和节点,涉及计算机技术领域,能够在不进行CC-NUMA系统复位的情况下,清除目录存储器存在的错误比特,有效地降低CC-NUMA系统中目录存储器的错误比特累积导致该系统宕机的可能性。该错误目录的处理方法为:在节点的目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除,而后,控制CC-NUMA系统进入静默状态,对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态。

著录项

  • 公开/公告号CN104077375A

    专利类型发明专利

  • 公开/公告日2014-10-01

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201410289296.3

  • 发明设计人 程永波;

    申请日2014-06-24

  • 分类号G06F17/30(20060101);G06F12/08(20060101);

  • 代理机构11274 北京中博世达专利商标代理有限公司;

  • 代理人申健

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 01:54:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-12

    授权

    授权

  • 2014-10-29

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140624

    实质审查的生效

  • 2014-10-01

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种CC-NUMA系统中节点的错误目录的处理方法和节点。

背景技术

在高性能处理器组建的缓存一致性-非对称存储器访问(CacheCoherence Non-Uniform Memory Access,缩写:CC-NUMA)系统中,由于处理器本身的扩展能力有限,需要将处理器分成多个节点(Node),通过节点控制器(Node Controller,缩写:NC)进行多处理器扩展,以增加并行处理的处理器个数,提升CC-NUMA系统性能。

目前CC-NUMA系统中采用的高性能处理器通常具有大容量内存扩展和较大容量的缓存(Cache),并且可以进行内存扩展,各节点上所有的处理器可以对CC-NUMA系统中其他的处理器的内存进行一致性的访问,因而在每个节点上设计目录(Directory)用于记录该节点中的数据被CC-NUMA系统中除该节点以外其他节点中处理器缓存的情况,包括该数据的状态和访问该数据的处理器的位置,其中该数据的状态包括共享或独占。

一般NC设计中目录都是采用较大容量的存储器实现,而存储器存在由于干扰因素导致的随机错误,包括读错误、或写错误等,所以需要对目录存储器进行错误校验,常见的是采用纠1检2的纠错码(Error Correction Code,缩写:ECC)进行错误处理,即可以纠正1比特错误,检测到2比特错误,但是这种错误处理方法对多比特错误存在不可纠正或不可检测的问题,而目录数据的错误不可恢复将会导致缓存一致性处理错误,即访存时出现错误,从而使整个CC-NUMA系统数据处理错误,导致CC-NUMA系统宕机。另外,单比特错误也可能由于时间的累积,而变成多比特错误,同样可以使得CC-NUMA系统不可用。

发明内容

本发明的实施例提供一种CC-NUMA系统中节点的错误目录的处理方法和节点,能够在不进行CC-NUMA系统复位的情况下,清除目录存储器可能存在的错误比特,有效地降低CC-NUMA系统中目录存储器错误比特的累积导致CC-NUMA系统宕机的可能性。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供一种CC-NUMA系统中节点的错误目录的处理方法,包括:

在所述节点的目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制所述CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除;

控制所述CC-NUMA系统进入静默状态,所述静默状态用于指示所述CC-NUMA系统中所有处理器不向所述目录存储器发出请求且接收到全部已发出请求的响应;

对所述目录存储器中存储的记录进行清零,并且在清零完成后,控制所述CC-NUMA系统退出所述静默状态。

结合第一方面,在第一方面的第一种可能实现的方式中,还包括:

从所述节点的可纠正错误计算器中获取所述可纠正错误的比特的数量;

将获取的所述可纠正错误的比特的数量与所述预设阈值进行比较。

结合第一方面或第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,所述控制所述CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除包括:

通过操作系统向所述CC-NUMA系统发送中断指令,所述中断指令用于指示所述CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除。

结合第一方面的第二种可能实现的方式,在第一方面的第三种可能实现的方式中,所述控制所述CC-NUMA系统进入静默状态,包括:

通过所述操作系统向所述CC-NUMA系统发送暂停指令,所述暂停指令用于指示所述CC-NUMA系统进入所述静默状态。

结合第一方面至第一方面的第三种可能实现的方式中的任一种可能的方式,在第一方面的第四种可能实现的方式中,所述预设阈值与所述目录存储器的失效率成反比,所述目录存储器的失效率是指在预设时间范围内所述目录存储器存储的目录中错误比特的占比。

第二方面,提供一种缓存一致性-非对称存储器访问CC-NUMA系统中的节点,包括:

目录存储器,用于存储所述节点中的数据被所述CC-NUMA系统中除所述节点以外的节点中处理器缓存的记录;

节点控制器,用于在所述目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制所述CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除和将对应的缓存中的清洁数据直接进行清除;

所述节点控制器,还用于控制所述CC-NUMA系统进入静默状态,所述静默状态用于指示所述CC-NUMA系统中所有处理器不向所述目录存储器发出请求且接收到全部已发出请求的响应;

所述节点控制器,用于对所述目录存储器中存储的记录进行清零,并且在清零完成后,控制所述CC-NUMA系统退出所述静默状态。

结合第二方面,在第二方面的第一种可能实现的方式中,还包括:

可纠正错误计算器,用于计算所述目录存储器中存储的目录的可纠正错误的比特的数量;

所述节点控制器,还用于从所述可纠正错误计算器中获取所述可纠正错误的比特的数量,将获取的所述可纠正错误的比特的数量与所述预设阈值进行比较。

结合第二方面或第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中,所述节点控制器具体用于:

在所述目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,通过操作系统向所述CC-NUMA系统发送中断指令,所述中断指令用于指示所述CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除。

结合第二方面的第二种可能实现的方式,在第二方面的第三种可能实现的方式中,所述节点控制器具体用于:

在通过所述操作系统向所述CC-NUMA系统发送中断指令后,通过所述操作系统向所述CC-NUMA系统发送暂停指令,所述暂停指令用于指示所述CC-NUMA系统进入所述静默状态。

结合第二方面至第二方面的第三种可能实现的方式中的任一种,在第二方面的第四种可能实现的方式中,所述预设阈值与所述目录存储器的失效率成反比,所述目录存储器的失效率是指在预设时间范围内所述目录存储器存储的目录中错误比特的占比。

本发明实施例提供一种CC-NUMA系统中节点的错误目录的处理方法和节点,在节点的目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除,而后,控制CC-NUMA系统进入静默状态,对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态,该清理方法可以在不进行CC-NUMA系统复位的情况下,清除目录存储器存在的错误比特,有效地降低CC-NUMA系统中目录存储器的错误比特累积导致CC-NUMA系统宕机的可能性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种CC-NUMA结构示意图;

图2为本发明实施例提供的一种CC-NUMA系统中节点的错误目录的处理方法流程示意图;

图3为本发明实施例提供的一种节点结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

高性能处理器组建的CC-NUMA系统,能够解决并行处理系统的可扩展性及可编程性问题。由于处理器本身的扩展能力有限,所以将处理器分成了多个节点,通过NC节点控制器进行多处理器扩展,以增加并行处理的处理器个数,提升CC-NUMA系统性能。一个简单的CC-NUMA系统可以如图1所示。如节点Node0所示,每个节点内有两个或多个处理器,组成一个小的节点,各节点之间通过NC节点控制器进行扩展。

其中,每个处理器都有自己的Cache,并且可以进行内存扩展,各节点上所有的处理器可以对CC-NUMA系统中所有的处理器的内存进行一致性的访问,所以NC上设计有目录,对于跨节点的数据访问,用于记录数据的状态和位置,维护数据的一致性。比如,节点0中的处理器缓存了节点2中的处理器内存上的数据,那么节点2中的NC需要通过目录记录指示出这个数据被节点0缓存,并标示其状态为共享或独占。NC中的目录都是采用较大容量的存储器实现,存储器存在可纠正错误比特或不可纠正错误比特的问题,可能由于时间累积导致CC-NUMA系统宕机。

本发明实施例提供一种CC-NUMA系统中节点的错误目录的处理方法,如图2所示,该实施例具体包括:

101、节点控制器在节点的目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除。

102、节点控制器控制CC-NUMA系统进入静默状态,静默状态用于指示CC-NUMA系统中所有处理器不向目录存储器发出请求且接收到全部已发出请求的响应。

103、节点控制器对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态。

其中,目录存储器可以在NC节点控制器的片上或片外,记录节点中的数据被CC-NUMA系统中除本节点以外的其它远端节点缓存的状态和向量。当通过错误检测检测出目录存储器出现错误时,目录存储器中设置的可纠正错误计算器可以统计出可纠正错误比特的数量。

示例性的,采用ECC校验错误时,可以在数据位上额外的位存储一个用数据加密的ECC代码。当数据被写入目录存储器时,相应的ECC代码于此同时也被保存下来,当重新读回刚才存储的数据时,保存下来的ECC代码就会和读数据时产生的ECC代码作比较,如果两个代码不相同,两者会被解码,以确定该数据位是错误的。再确认该位比特的错误是否可纠正,如果是可纠正的错误比特会被标识以可纠正标识,不可纠正的错误比特会被标识以不可纠正标识,这样,目录存储器当中的可纠正错误计算器就会对预设时间段内的可纠正标识进行统计,以获得可纠正错误比特的数量。这里的预设时间段可以为1小时,也可以为其它值,此处不做限定。

这样,在步骤101之前,节点控制器NC从节点的可纠正错误计算器中获取可纠正错误的比特的数量后,节点控制器NC将获取的可纠正错误的比特的数量与预设阈值进行比较,在判断出目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,通过操作系统向CC-NUMA系统发送中断指令,中断指令用于指示CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除;或者,可纠正错误计算器获取到可纠正错误的比特的数量后,可纠正错误计算器将获取的可纠正错误的比特的数量与预设阈值进行比较,当可纠正错误计算器判断可纠正错误的比特的数量大于预设阈值的时候,向节点控制器发送通知消息,以通知节点控制器通过操作系统向CC-NUMA系统发送中断指令。

步骤101具体的实现方式可以为:节点控制器NC向本节点的操作系统上报中断请求,启动目录错误清除处理流程,而后通过本节点的操作系统向CC-NUMA系统中所有的处理器发送中断指令,使所有的处理器将处理器缓存中的数据清除(Flush)。由于处理器缓存中的数据包括脏(dirty)数据和清洁(clean)数据,该脏数据是指该处理器对应的主存中的数据的可读可写副本,由于该可读可写副本比主存中原本要新,因此清除该脏数据之前需要将该可读可写副本回写到主存中;清洁数据是指该处理器对应的主存中的数据的只读副本,清除该清洁数据不必回写到主存中,直接清除即可。

这里将所有处理器缓存中的数据进行清除,是为了保证CC-NUMA系统缓存一致性。举例来说,假设节点0处理器要访问节点2中的最新修改数据1’,节点2中目录存储器存有修改数据1’的目录,以便根据节点2目录得到所需修改数据1’,如果节点2目录存储器中的可纠正错误的比特超过预设阈值,步骤103将节点2目录存储器进行了清零操作,且没有将节点2处理器缓存中修改数据1’回写到主存,节点0处理器认为节点2处理器缓存中要获取的新修改数据1’不存在,其节点2对应主存中也没有存储,那么节点0就会维持之前所获得数据1,不能读到最新修改数据1’,对于访问节点0来说,不能得到最新修改数据,数据一致性就会出错。例如应用在铁道部购票系统中时,当1个窗口的处理器不能及时获取其它售票窗口的最新售票情况,售票数据就会不一致,将导致售票数据紊乱。

数据一致性通常指关联数据之间的逻辑关系是否正确和完整。由于CC-NUMA系统中,各节点的处理器都可以对CC-NUMA系统中其它节点处理器进行一致性访问,以保证各处理器随时都可以得到其他节点处理器的最新修改数据,保持数据一致性。因此,当其中一个节点的目录存储器出现问题,需要将整个CC-NUMA系统的处理器缓存都进行了数据清除,以保证CC-NUMA系统的数据一致性。

这样一来,假如节点2中目录存储器的可纠正错误超过预设阈值,由于节点2中的目录存储器的目录存储的是节点2的数据被CC-NUMA系统中除节点2以外的节点中的处理器缓存的记录,当将所有处理器缓存中的数据清除后,节点2的目录存储器中目录项中的信息全部冗余,成为无效信息。

其中,预设阈值与目录存储器的失效率成反比,目录存储器的失效率是指在预设时间范围内目录存储器存储的目录中错误比特的占比。

当通过步骤101使得操作系统将所有处理器缓存中的数据全部清除后,在步骤102中,操作系统向所有的处理器发送暂停指令,使得节点内所有的处理器不向本节点的目录存储器发出请求且接收到全部已发出请求的响应,使CC-NUMA系统进入静默状态。

这里将处理器暂停使得CC-NUMA系统处于静默状态,是由于在执行步骤103对目录存储器进行清零操作之前,使得处理器不向目录存储器发送用于修改目录存储器目录的指令,保证目录存储器的目录不再发生变化。

而后,执行步骤103,对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态。

具体的,当CC-NUMA系统进入静默状态后,将NC中的目录存储器中存储的记录进行清零操作,以使目录存储器中的全部信息被清除。而后,发生目录清除的节点的通过操作系统向CC-NUMA系统所有处理器发送恢复指令,以控制所有处理器继续运行,CC-NUMA系统退出静默状态。

此外,在上述方法流程中,为了避免未识别到的错误比特由于时间累积导致严重错误,可以预先将目录存储器中的信息进行清零,且该过程不需要进行系统重启。另外,处理器缓存一般只有30MB左右,其数据回写以及目录存储器清0所需要的时间都在ms级,这样就可以利用一个较短的时间来避免错误累积导致CC-NUMA系统宕机的可能。

本发明实施例提供一种CC-NUMA系统中节点的错误目录的处理方法,在节点的目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除,而后,控制CC-NUMA系统进入静默状态,对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态,该清理方法可以在不进行CC-NUMA系统复位的情况下,清除目录存储器存在的错误比特,有效地降低CC-NUMA系统中目录存储器的错误比特累积导致CC-NUMA系统宕机的可能性。

本发明实施例提供一种CC-NUMA系统中的节点01,包括主存储器014,如图3所示,还包括节点控制器011、目录存储器012、处理器013、目录存储器012包括可纠正错误计算器0121,

目录存储器012,用于存储节点中的数据被CC-NUMA系统中除节点以外的节点中处理器缓存的记录;

节点控制器011,用于在目录存储器012中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除和将对应的缓存中的清洁数据直接进行清除;其中,该预设阈值与目录存储器012的失效率成反比,目录存储器012的失效率是指在预设时间范围内目录存储器012存储的目录中错误比特的占比。

节点控制器011,还用于控制CC-NUMA系统进入静默状态,静默状态用于指示CC-NUMA系统中所有处理器不向目录存储器012发出请求且接收到全部已发出请求的响应;

节点控制器011,还用于对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态。

可选的,该节点01还包括可纠正错误计算器0121,该可纠正错误计算器0121可以用于计算目录存储器012中存储的目录的可纠正错误的比特的数量;

对应地,该节点控制器011,还可以用于从可纠正错误计算器0121中获取可纠正错误的比特的数量,将获取的可纠正错误的比特的数量与预设阈值进行比较。

需要说明的是,示例性地,该可纠正错误计算器0121可以位于目录存储器012中,如图2所示,本发明对于可纠正错误计算器0121是否位于目录存储器012不做限定。

可选的,节点控制器011可以具体用于:

在目录存储器012中存储的目录的可纠正错误的比特的数量大于预设阈值时,通过操作系统向CC-NUMA系统发送中断指令,中断指令用于指示CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除,和将对应的缓存中的清洁数据直接进行清除。

可选的,节点控制器011可以具体用于:在通过操作系统向CC-NUMA系统发送中断指令后,通过操作系统向CC-NUMA系统发送暂停指令,暂停指令用于指示CC-NUMA系统进入静默状态。

本发明实施例提供一种节点,包括目录存储器和节点控制器,目录存储器,用于存储节点中的数据被CC-NUMA系统中除节点以外的节点中处理器缓存的记录,节点控制器,用于在目录存储器中存储的目录的可纠正错误的比特的数量大于预设阈值时,控制CC-NUMA系统中所有处理器将对应的缓存中的脏数据回写至相应的主存后再清除和将对应的缓存中的清洁数据直接进行清除,而后,控制CC-NUMA系统进入静默状态,对目录存储器中存储的记录进行清零,并且在清零完成后,控制CC-NUMA系统退出静默状态,该清理方法可以在不进行CC-NUMA系统复位的情况下,清除目录存储器存在的错误比特,有效地降低CC-NUMA系统中目录存储器的错误比特累积导致CC-NUMA系统宕机的可能性。

在本申请所提供的几个实施例中,应该理解到,所揭露的节点和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本发明各个实施例中的设备和系统中,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号