首页> 中国专利> 高速缓存非对称一致性内存访问系统的访问方法和装置

高速缓存非对称一致性内存访问系统的访问方法和装置

摘要

本发明实施例提供了一种CC-NUMA系统的访问方法和装置。方法包括:NC记录IO历史记录,IO历史记录是指针对至少一个指定地址,从IOH经NC到至少一个CPU的缓存CA的推送IO数据的历史统计记录;当NC确定IO历史记录符合预设条件时,则向远端CPU的CA发送预提取提示报文,预提取提示报文用于使远端CPU的CA针对预提取提示报文中的地址发起IO数据的预取访问。通过上述技术方案,通过分析该历史记录符合预定条件,从而主动发送针对该指定地址的IO数据提示报文给该远端的CPU的CA,并且由该远端CPU提前发起针对该指定地址的IO数据预取操作,由此缩短了远端IO数据访问延时,提升了系统的性能。

著录项

  • 公开/公告号CN103020004A

    专利类型发明专利

  • 公开/公告日2013-04-03

    原文格式PDF

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

    申请/专利号CN201210546286.4

  • 发明设计人 陈昊;徐建荣;王工艺;

    申请日2012-12-14

  • 分类号G06F15/17(20060101);

  • 代理机构11329 北京龙双利达知识产权代理有限公司;

  • 代理人王君;肖鹂

  • 地址 310052 浙江省杭州市滨江区滨兴路301号3幢A楼301室

  • 入库时间 2024-02-19 18:48:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-08

    专利权的转移 IPC(主分类):G06F15/17 登记生效日:20200420 变更前: 变更后: 申请日:20121214

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

  • 2015-09-09

    授权

    授权

  • 2013-05-01

    实质审查的生效 IPC(主分类):G06F15/17 申请日:20121214

    实质审查的生效

  • 2013-04-03

    公开

    公开

说明书

技术领域

本发明实施例涉及计算机领域,更具体地,涉及高速缓存非对称一致性内存访问(CC-NUMA,Cache Coherent-Non Uniform Memory Access)系统的访问方法和装置。

背景技术

在基于节点(Node)控制的CC-NUMA系统中,随着系统规模的增长,跨节点访问的延时越来越成为系统性能提升的瓶颈。因此,如何动态地探测全系统的热点,并且尽早的将热点的缓存推送给最有可能使用该内容的远端CPU(Central Processing Unit,中央处理器)将显著的提升现有系统被动存取的劣势。基于节点控制器(Node Controller,NC)的CC-NUMA系统中,IO(Input/Output,输入或输出)数据的访问延时过长,往往导致整个计算机系统的性能低下。

发明内容

有鉴于此,本发明实施例提供一种CC-NUMA系统的访问方法和装置,以解决IO数据的访问延时过长的问题。

第一方面,提供了一种CC-NUMA系统的访问方法,包括:节点控制器(NC)记录输入输出(IO)历史记录,IO历史记录是指针对至少一个指定地址,从输入输出集线器(IOH)经NC到至少一个远端中央处理器(CPU)的缓存(CA)的推送IO数据的历史统计记录;当NC确定IO历史记录符合预设条件时,则向远端CPU的CA发送预提取提示报文,预提取提示报文用于使远端CPU的CA针对预提取提示报文中的地址发起IO数据的预取访问。

在第一种可能的实现方式中,NC确定IOH对指定地址的IO数据主动进行了更新操作,则向远端CPU的CA发送预提取提示报文

结合第一方面的实现方式,在第二种可能的实现方式中,NC将IO历史记录中指定地址的统计指标与预设的门限值进行比较,分析比较结果后确定符合预设条件,则向远端CPU的CA发送预提取提示报文。

结合第一方面或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,IO历史记录中有关指定地址的统计次数大于预设的门限值,则向远端CPU的CA发送关于指定地址的预提取提示报文;或IO历史记录中有关指定地址的两次记录的计时间隔小于预设的门限值,则向远端CPU的CA发送关于指定地址的预提取提示报文;或IO历史记录中单位时间内有关指定地址的统计次数大于预设的门限值,则向远端CPU的CA发送关于指定地址的预提取提示报文;或确定轮询调度算法或加权的轮询调度算法的输入为远端CPU的CA,则向远端CPU的CA发送关于指定地址的预提取提示报文。

结合第一方面或第一方面的上述可能的实现方式,在第四种可能的实现方式中,NC记录IO历史记录,包括:NC管理IO历史记录的插入、更新、替换和删除。

结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,根据以下条件之一,优先进行IO历史记录的更新或替换:IO历史记录中有关指定地址的统计次数最低;或IO历史记录中有关指定地址的两次记录的计时间隔最长;或IO历史记录中单位时间内有关指定地址的统计次数最低;或根据轮询调度算法或加权的轮询调度算法的输入。

结合第一方面或第一方面的上述可能的实现方式,在第六种可能的实现方式中,IO历史记录中的每一条至少包括以下内容:有效性(Valid)、指定地址(Address)、目的地(Destination)和统计参数(Statistical Parameters),其中目的地和统计参数一一对应。

第二方面,提供了一种CC-NUMA系统中的装置,包括记录模块、确定模块和发送模块:记录模块,用于记录输入输出(IO)历史记录,IO历史记录是指针对至少一个指定地址,从输入输出集线器(IOH)经该装置到至少一个远端中央处理器(CPU)的缓存CA的推送IO数据的历史统计记录;确定模块,用于确定IO历史记录是否符合预设条件;发送模块,用于当确定模块确定IO历史记录符合预设条件时,则向远端CPU的CA发送预提取提示报文,预提取提示报文用于使远端CPU的CA针对预提取提示报文中的地址发起IO数据的预取访问。

在第一种可能的实现方式中,确定模块确定IOH对指定地址的IO数据主动进行了更新操作,则发送模块向远端CPU的CA发送预提取提示报文。

结合第二方面的实现方式,在第二种可能的实现方式中,确定模块将IO历史记录中指定地址的统计指标与预设的门限值进行比较,分析比较结果后确定符合预设条件,则发送模块向远端CPU的CA发送预提取提示报文。

结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,当确定模块确定IO历史记录中有关指定地址的统计次数大于预设的门限值时,则发送模块向远端CPU的CA发送关于指定地址的预提取提示报文;或当确定模块确定IO历史记录中有关指定地址的两次记录的计时间隔小于预设的门限值时,则发送模块向远端CPU的CA发送关于指定地址的预提取提示报文;或当确定模块确定IO历史记录中单位时间内有关指定地址的统计次数大于预设的门限值时,则发送模块向远端CPU的CA发送关于指定地址的预提取提示报文;或确定模块确定轮询调度算法或加权的轮询调度算法的输入为远端CPU的CA,则发送模块向远端CPU的CA发送关于指定地址的预提取提示报文。

结合第二方面或第二方面的上述可能的实现方式,在第四种可能的实现方式中,记录模块管理IO历史记录的插入、更新、替换和删除。

结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,记录模块根据以下条件之一,优先进行IO历史记录的更新或替换:IO历史记录中有关指定地址的统计次数最低;或IO历史记录中有关指定地址的两次记录的计时间隔最长;或IO历史记录中单位时间内有关指定地址的统计次数最低;或根据轮询调度算法或加权的轮询调度算法的输入。

结合第二方面或第二方面的上述可能的实现方式,在第六种可能的实现方式中,记录模块记录的IO历史记录中的每一条至少包括以下内容:有效性(Valid)、指定地址(Address)、目的地(Destination)和统计参数(StatisticalParameters),其中目的地和统计参数一一对应。

通过上述技术方案,可以记录针对一个或多个指定地址的推送IO数据的历史记录,通过分析该历史记录符合预定条件,从而推测远端CPU可能在将来的时间点使用该指定地址的IO数据,主动发送针对该指定地址的IO数据提示报文给该远端的CPU的CA,并且由该远端CPU提前发起针对该指定地址的IO数据预取操作,由此缩短了远端IO数据访问延时,提升了系统的性能。

附图说明

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

图1是相关技术中CC-NUMA系统的示意框图。

图2是相关技术中CC-NUMA系统IO访问的方法的示意交互图。

图3是本发明实施例的CC-NUMA系统的访问方法的示意流程图。

图4是本发明实施例的CC-NUMA系统的示意框图。

图5是本发明实施例的CC-NUMA系统的访问方法的示意交互图。

图6A和图6B分别是一种动态事物监控器的结构示意图。

图7是本发明实施例的CC-NUMA系统中的一种装置的示意框图。

图8是本发明实施例的CC-NUMA系统中的另一种装置的示意框图。

具体实施方式

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

图1是相关技术中CC-NUMA系统10的示意框图。如图1所示,系统10包括多个CPU,例如CPU0-CPU7和多个NC,例如NC0-NC3。CPU本身具备与其他外部CPU互联的接口,可选的,多个CPU的CC-NUMA系统中可以通过NC进行互联扩展。CPU包括缓存代理(CA,Cache Agent)。此外CPU与本地代理(HA,Home Agent)连接,HA即管理内存的代理,可以是物理模块,HA和内存(Memory,简写为Mem)连接。IO设备通过输入输出集线器(IOH,IO hub)由所连接的CPU进行输入或输出的数据访问。该CPU通过NC与其他节点进行网络互联,可以访问系统中其他CPU的HA中代理的数据。出于简洁,系统10中仅示出了实施例中需要使用到的HA、CA、IO设备等,但实际系统中的上述节点可以不只一个。

CPU的HA是跟踪远端CA访问本HA管理的内存的状态的模块。以图1为例,HA记录所连接的Mem中所有地址在远端CA中的状态。

举例来说,一个远端CA(CA1)访问HA,并且想独占地址Addr1数据,HA中之前没有接收到地址Addr1的访问,因此HA中地址Addr1的状态的为“未被占有”。HA直接将Mem中的地址Addr1的数据发送给CA1,同时在HA中记录下地址Addr1的状态为“被CA1独占”。

当另一个CA(CA2)来独占访问HA的地址Addr1数据时,HA中Addr1的状态为“被CA1独占”,表明CA1占有该数据之后,可能会在CA1中先修改Addr1的数据,而并没有马上写回到HA代理的Mem,因此HA代理的Mem中Addr1的数据可能不是最新的数据了。这时HA发送侦听报文到独占Addr1数据的CA1。CA1如果修改过Addr1的数据,CA1会将修改过的数据写回Mem。之后HA将CA1更新的数据从Mem中读取,发送给CA2,同时在HA中记录下地址Addr1的状态为“被CA2独占”。CA1如果没有修改过Addr1的数据,Mem中的数据还是最新的,CA1可以直接失效该数据或者写回该数据到Mem。HA知道CA1中已经没有Addr1的数据拷贝之后,就从Mem中把数据送给CA2,同时在HA中记录下地址Addr1的状态为“被CA2独占”。正是因为HA记录了代理Mem时的所有状态,因此在任何一个时刻,全系统所有地址的数据缓存可以保持数据的一致性,不存在同一个地址数据缓存冲突的情况。同一个地址数据缓存冲突是指同一个地址的数据在多个CA中有不同的值。

为了方便说明,CPU访问IO数据的流程,简单包括以下两个步骤。

S11,IO设备更新内存中的IO数据。

S12,远端CPU发起对于该地址IO数据的访问。

基于系统10的系统架构,举例来说,S11中,CPU0上的IO设备通过IOH->CPU0->NC0->NC2->CPU5->HA的物理链路将IO数据更新到CPU5的Mem中;在S12中,CPU2中的CA通过CPU2->NC1->NC2->CPU5->HA的物理链路将IO数据访问请求发送给CPU5的Mem中。HA可以根据所记录的Mem中所有地址在远端CA中的状态,经IO数据更新到Mem,或者,将IO数据访问请求所请求的IO数据反馈给远端CA。IOH用于将所有的不同类型的IO操作,翻译成统一的数据包格式发送给CPU。其中,IOH可以是一个物理的单元,在一种实现方式中,可以是主板上的一块芯片或者是芯片中的一个模块。

接下来,参考图2来说明CPU访问IO数据的流程。图2是相关技术中CC-NUMA系统IO访问的方法200的示意交互图,包括以下内容。

图2的虚线用来表证不同的NC域。图2的左侧,IO/IOH/NC属于图1的NC0的域。图2的中间,CA属于图1的NC1的域。图2的右侧,HA属于图1的NC2的域。各节点经过多个NC之间的交叉网络连接,不同NC域的CPU互为远端。

S210,IO设备发起更新IO数据的请求(MemWr)到IOH。

S215,IOH通过NC0转发数据更新的QPI(QuickPath Interconnection,快速通路互联)请求(InvItoE)到CPU5的HA。需要注意的是,这个时候CPU5的HA只需要记录下IOH上拥有更新的数据而本身并不需要拥有最新的数据。当别的请求访问CPU5的HA上该IO数据的时候,CPU5的HA可以把IOH的最新数据通过一定的方式发送给请求者。

S220,CPU5的HA向IOH发送关于数据更新的QPI请求的应答(Gnt_Cmp)。

S225,IOH向IO设备发送数据请求响应(Cmp)。

S230,经过了一段时间。

这个时间不定,最小的可以是纳秒级别,最大的可以到秒,甚至是天或年。主要根据应用的实际运行情况,当图1中的CPU2的CA某个线程运行到需要访问该地址时,就会发起接下来对应的请求。

接下来的步骤中,获取指定地址的IO数据通常需要较长的时间,制约了全系统的性能。

S240,CPU2的CA向CPU5的HA发起对于该地址IO数据的访问(RdData)。

S245,HA根据记录的该IO数据的状态,此时最新的数据是存在放IOH上,发起向IOH的数据侦听(SnpData)。

发起该数据侦听用于确定IOH中是否有最新的数据拷贝。

S250如图2所示,包括三个子步骤S250-1至S250-3。

S250-1,IOH收到该侦听之后将数据直接转发(Forward)给CPU2的CA,即数据请求者。

IOH同时把状态更新到HA上。也就是在S250-2和S250-3,IOH分别向HA发送响应(RspFwdWb和WbIData),此时HA上记录的最新的数据在CPU2的CA上而不是IOH上。

S255,HA向CA发送数据请求响应(Cmp)。

图2中使用到的QPI协议包的具体释义可以参考下表1。

表1

如图1和图2所示,基于NC的CC-NUMA系统中IO访问的最大缺点在于只有当CPU需要远端的IO数据的时候才会通过HA去进行数据访问,而远端的IO数据访问延时又是非常大,该延时恰恰是整个系统性能提升的最大瓶颈。本发明实施例提供了一种上述CC-NUMA系统中IO数据访问加速的方法,能够显著的减少远端IO数据访问延时,提升全系统的性能。

图3是本发明实施例的CC-NUMA系统的访问方法30的示意流程图,方法30包括以下内容。

S31,NC记录IO历史记录,所述IO历史记录是指针对至少一个指定地址,从IOH经所述NC到至少一个远端CPU的CA的推送IO数据的历史统计记录。

S32,当所述NC确定所述IO历史记录符合预设条件时,则向所述远端CPU的CA发送预提取提示报文,所述预提取提示报文用于使所述远端CPU的CA针对所述预提取提示报文中的地址发起IO数据的预取访问。

本发明实施例通过NC记录针对一个或多个指定地址的推送IO数据的历史记录,通过分析该历史记录符合预定条件,从而推测远端CPU可能在将来的时间点使用该指定地址的IO数据,NC主动发送针对该指定地址的IO数据提示报文给该远端的CPU的CA,并且由该远端CPU提前发起针对该指定地址的IO数据预取操作,由此缩短了远端IO数据访问延时,提升了系统的性能。

可选的,作为不同的实施例,所述NC确定所述IOH对所述指定地址的IO数据主动进行了更新操作,则向所述远端CPU的CA发送预提取提示报文。

可选的,作为不同的实施例,NC将所述IO历史记录中所述指定地址的统计指标与预设的门限值进行比较,分析比较结果后确定符合预设条件,则向所述远端CPU的CA发送预提取提示报文。

可选的,作为不同的实施例,所述IO历史记录中有关所述指定地址的统计次数大于预设的门限值,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或所述IO历史记录中有关所述指定地址的两次记录的计时间隔小于预设的门限值,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或所述IO历史记录中单位时间内有关所述指定地址的统计次数大于预设的门限值,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或确定轮询调度算法或加权的轮询调度算法的输入为所述远端CPU的CA,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文。

可选的,作为不同的实施例,NC管理IO历史记录的插入、更新、替换和删除。

可选的,作为不同的实施例,其中根据以下条件之一,优先进行IO历史记录的更新或替换:所述IO历史记录中有关所述指定地址的统计次数最低;或所述IO历史记录中有关所述指定地址的两次记录的计时间隔最长;或所述IO历史记录中单位时间内有关所述指定地址的统计次数最低;或根据轮询调度算法或加权的轮询调度算法的输入。

可选的,作为不同的实施例,所述IO历史记录中的每一条至少包括以下内容:有效性(Valid)、指定地址(Address)、目的地(Destination)和统计参数(Statistical Parameters),其中所述目的地和统计参数一一对应。

图4是本发明实施例的CC-NUMA系统40的示意框图。系统40与系统10的节点组成相同或类似。不同之处在于本发明实施例中NC包括动态事物监控器(DHTM,Dynamic Hot Traffic Monitor)。由此,CPU访问IO数据的流程,简单包括以下三个步骤。

S41,IO设备更新内存中的IO数据。

基于系统40的系统架构,举例来说,S41中,CPU0上的IO设备通过IOH->CPU0->NC0->NC2->CPU5->HA的物理链路将IO数据更新到CPU5的Mem中。

S42,NC根据检测到的IO历史记录符合预设条件,推测远端CPU可能在将来的时间点使用该地址的IO数据,NC主动发送该地址的IO数据提示报文给该远端的CPU的CA。

NC0的DHTM记录IO历史记录,其中IO历史记录是指针对至少一个指定地址,从IOH经NC0到至少一个远端CPU的CA的推送(Forward)IO数据的历史统计记录。

NC0的DHTM通过分析IO历史记录符合预设条件,例如CPU2的CA在一定时间内多次访问该地址的IO数据,推测CPU2中的CA会在将来的时间点使用到该地址的IO数据,因此NC0通过物理链路NC0->NC1->CPU2->CA主动发送预提取提示(PrefetchHint)报文。

S43,远端CPU的CA收到报文后,立即发起对于该地址的IO数据的访问。

CPU2中的CA收到PrefetchHint报文之后,通过CPU2->NC1->NC2->CPU5->HA的物理链路提前将IO数据访问预取请求发送到CPU5的Mem中。

本发明实施例通过NC记录和分析针对至少一个指定地址的IO历史记录,预测未来的时间点最有可能使用该指定地址的IO数据的远端CA,并且主动发起预取提示报文给预测到的远端CA,通知CA提前预取IO数据,极大地并行化了当远端CA需要该IO数据时才发起访问带来的跨节点的访问延时,从而突破了基于NC的CC-NUMA系统的IO访问的最大瓶颈,提升了全系统的性能。

图5是本发明实施例的CC-NUMA系统的访问方法500的示意交互图。方法500与方法200的不同之处在于方法500的S530和S535,具体内容如下。

S510,IO设备发起更新IO数据的请求(MemWr)到IOH。

S515,IOH通过NC0转发数据更新的QPI(QuickPath Interconnection,快速通路互联)请求(InvItoE)到CPU5的HA。需要注意的是,这个时候CPU5的HA只需要记录下IOH上拥有更新的数据而本身并不需要拥有最新的数据。当别的请求访问CPU5的HA上该IO数据的时候,CPU5的HA可以把IOH的最新数据通过一定的方式发送给请求者。

S520,CPU5的HA向IOH发送关于数据更新的QPI请求的应答(Gnt_Cmp)。

S525,IOH向IO设备发送数据请求响应(Cmp)。

S530,NC0的动态事物监控器(DHTM)记录IO历史记录,且通过分析IO历史记录符合预设条件,推测远端CPU2的CA可能在将来的时间点使用该地址的IO数据,NC0主动发送该地址的IO数据预取的提示报文(PrefetchHint)给该远端的CPU2的CA。

接下来的步骤中,根据预取提示报文,触发CPU2的CA预先获取到该地址的IO数据。节省了CPU2的CA在将来的时间点使用该地址的IO数据时的访问延时。

S535,NC0接收CPU2的CA针对提示报文(PrefetchHint)的响应(Cmp)

S540,接收到数据预取的提示报文后,CPU2的CA立即向CPU5的HA发起对于该地址IO数据的预取访问(RdData)。

S545,HA根据记录的该IO数据的状态,此时最新的数据是存在放IOH上,发起向IOH的数据侦听(SnpData)。

S550如图5所示,包括三个子步骤S550-1至S550-3。

S550-1,IOH收到该侦听之后将数据直接推送(Forward)给CPU2的CA,即数据请求者。

IOH同时把状态更新到HA上。也就是在S550-2和S550-3,IOH分别向HA发送响应(RspFwdWb和WbIData),此时HA上记录的最新的数据在CPU2的CA上而不是IOH上。

S555,HA向CA发送数据请求响应(Cmp)。

方法500的S530和S535使用到的QPI协议包参见下表2,其他使用到的QPI协议包的具体释义可以参考表1。

表2

本发明实施例通过NC记录和分析IO历史记录,预测未来的时间点最有可能使用该地址的IO数据的远端CA,并且主动发起预取提示报文给对应的远端CA,通知CA提前预取IO数据,极大地并行化了当远端CA需要该IO数据时才发起访问带来的跨节点的访问延时,从而突破了基于NC的CC-NUMA系统的IO访问的最大瓶颈,提升了全系统的性能。

通常NC由专用芯片制得,本发明实施例的NC可以包括一个动态事物监控器,用于记录IO历史记录且确定IO历史记录符合预设条件。可选地,可以通过软件、硬件或两者的结合实现满足上述要求的NC。优选地,以硬件结构实现本发明实施例中的NC的动态事物监控器(DHTM),由此作为提高计算机系统性能的优选手段,。

图6A是一种动态事物监控器的结构示意图。该结构具有N条记录,其中N为非负整数。根据系统的跨节点的数目可以调整记录的条数。

每条记录的内容是对于指定地址,从IOH经该NC到远端CPU的CA的推送IO数据的历史记录,包括若干个字段,其中至少包括以下核心字段{Valid,Address,Destination,Statistical Parameters}。

各个字段的具体含义如下:

有效位(Valid):表示该条记录是否有效。

举例来说,一个表中有64条记录,一旦使用了该条记录,则该记录以有效位为1来标识该条记录是有效的,其余空余的表项记录的有效位为0,标识这条记录可以被占用。

地址(Address):标识历史请求的地址。其中具体的一个地址,上下文中也称为指定地址。

目的地(Destination,A个):标识访问指定地址(Address)的请求者,可以是一个也可以是多个请求者,也就是具体的CPU的CA。可以以CPU的CA的全局域ID表示。A为正整数。CA既是IOH推送数据的目的地,也是NC发送预取提示报文的目的地。

统计参数(Statistical Parameters,B个):用于统计的参数,B为正整数。统计参数可以包含对该地址历史请求的次数,即命中计数参数(Hit count);或记录第一次记录该地址请求到目前为止的时间(Time)等等。一个目的地只能对应一种统计参数,可以成对表示(Destination/Statistical Parameters)。如果推送的目的地不同,命中次数以及所有相关的统计数据不会进行累加而是重新标记。

图6B是一种动态事物监控器的扩展结构示意图。如图6B所示,可以包括多个目的地,例如目的地1(Destination1)至目的地A(DestinationA),每个Destination对应的统计参数的具体内容可以相同,也可以不同,例如标识为统计参数1(Statistical Parameters1)至统计参数B(StatisticalParametersB)中的一个。DestinationX/Statistical ParametersX表示在拥有多个Destination/Statistical Parameters字段的动态事务监控器的扩展结构中的某一对(Destination/Statistical Parameters)字段。具体地如何选择其中的一对字段,则根据相应的统计算法。

如果用于预取提示报文的推送的目的地在2个或者更多个目的地之间交替推送,那么动态事务监控器的硬件结构效率就会很低。因此图6B所示意的动态事务监控器的扩展结构可以规避以上问题。

图6A的结构也称为只有一对(Destination/Statistical Parameters)字段的普通结构,简称普通结构;图6B的结构简称为多对(Destination/StatisticalParameters)的扩展结构,简称扩展结构。

接下来,参考表3,具体说明NC如何记录IO历史记录,且确定该IO历史记录符合预设条件的方法。NC管理IO历史记录时具体包括以下事件:记录的插入、更新、替换和删除等。表3的表项中可以包括事件、事件发生的前提条件、动作,以及策略等。

表3

记录更新或记录替换中的策略可以根据统计算法的不同而不同,包括但不限于表3中的示例,出于简洁,此处不再详细举例。其中,轮询调度或加权的轮询调度(Round-Robin/Weighted Round-Robin)算法的基本原理是,根据输入(Entry)轮流确定调用的对象。加权轮询调度是指,每个调度对象给予不同的权重,有些对象的权重较高,有些对象的权重较低。在本发明实施例中,所调用的对象即为目的地(Destination)。

由于推送预取提示报文的操作是基于分析历史记录,且这些记录符合预设条件而确定的,因此并不是每次的推送的目的地都是成功的。表3策略中的命中率是指将预取提示报文成功推送给目的地的次数占总的推送次数的百分比,可以通过统计获得。接下来,NC确定IO历史记录符合预设条件时,可以向远端CPU的CA发送预提取提示报文。其中NC发送预提取提示报文的推送策略可以有多种,下面简单介绍其中的两种。

NC确定IOH有主动性的对于某个指定地址的IO数据的更新操作,其中该指定地址记录在动态事务监控器的硬件中。

动态事务监控器的硬件对于某个指定地址的统计指标大于预设的门限值。该统计指标为统计参数的具体数值。

统计算法中涉及如何计算统计指标大于预设的门限值,可以有多种选择。例如:根据Round-Robin/Weighted Round-Robin算法选择推送;历史命中最多的优先推送;历史命中计时间隔最短的优先推送;历史单位时间命中率最高的优先推送;以及其他根据不同的统计算法得出的优先推送等等。上面列出的推送策略只是基于NC的CC-NUMA系统IO加速方法的一种、多种或者是多种组合具体的实现,本发明实施例对此不做限定。但凡NC通过记录和分析IO历史记录,向远端CA发送了预提取提示报文,即落入本发明实施例保护范围。

本发明实施例通过NC记录和分析IO历史记录,预测未来的时间点最有可能使用该地址的IO数据的远端CA,并且主动发起预取提示报文给对应的远端CA,通知CA提前预取IO数据,极大地并行化了当远端CA需要该IO数据时才发起访问带来的跨节点的访问延时,从而突破了基于NC的CC-NUMA系统的IO访问的最大瓶颈,提升了全系统的性能。

图7是本发明实施例的CC-NUMA系统中的一种装置70的示意框图。装置70包括记录模块71、确定模块72和发送模块73。

记录模块71记录输入输出IO历史记录,所述IO历史记录是指针对至少一个指定地址,从输入输出集线器IOH经所述装置到至少一个远端中央处理器CPU的缓存CA的推送IO数据的历史统计记录。

确定模块72确定所述IO历史记录是否符合预设条件。

发送模块73当确定模块72确定所述IO历史记录符合预设条件时,则向所述远端CPU的CA发送预提取提示报文,所述预提取提示报文用于使所述远端CPU的CA针对所述预提取提示报文中的地址发起IO数据的预取访问。

本发明实施例通过CC-NUMA系统中的装置记录针对一个或多个指定地址的推送IO数据的历史记录,通过分析该历史记录符合预定条件,从而推测远端CPU可能在将来的时间点使用该指定地址的IO数据,该装置主动发送针对该指定地址的IO数据提示报文给该远端的CPU的CA,并且由该远端CPU提前发起针对该指定地址的IO数据预取操作,由此缩短了远端IO数据访问延时,提升了系统的性能。

装置70可以执行方法30或40,结构例如图6A或图6B中所示的动态事物监控器,作为不同的实现方式可以是NC,也可以包括在CC-NUMA的NC中,还可以独立存在。其中,NC可以是一块专用的芯片或者现场可编程门阵列(FPGA,Field Programmable Gate Array)设备等。

可选的,作为不同的实施例,当所述确定模块确定所述IO历史记录中有关所述指定地址的统计次数大于预设的门限值时,则所述发送模块向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或当所述确定模块确定所述IO历史记录中有关所述指定地址的两次记录的计时间隔小于预设的门限值时,则所述发送模块向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或当所述确定模块确定所述IO历史记录中单位时间内有关所述指定地址的统计次数大于预设的门限值时,则所述发送模块向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或所述确定模块确定轮询调度算法或加权的轮询调度算法的输入为所述远端CPU的CA,则所述发送模块向所述远端CPU的CA发送关于所述指定地址的预提取提示报文。

可选的,作为不同的实施例,所述记录模块管理IO历史记录的插入、更新、替换和删除。

可选的,作为不同的实施例,所述记录模块根据以下条件之一,优先进行IO历史记录的更新或替换:所述IO历史记录中有关所述指定地址的统计次数最低;或所述IO历史记录中有关所述指定地址的两次记录的计时间隔最长;或所述IO历史记录中单位时间内有关所述指定地址的统计次数最低;或根据轮询调度算法或加权的轮询调度算法的输入。

可选的,作为不同的实施例,所述记录模块记录的所述IO历史记录中的每一条至少包括以下内容:有效性(Valid)、指定地址(Address)、目的地(Destination)和统计参数(Statistical Parameters),其中所述目的地和统计参数一一对应。记录的具体内容参考表3。

图8是本发明实施例的CC-NUMA系统中的另一种装置80的示意框图。装置80包括处理器81、存储器82。

存储器82用于存储处理器81执行本发明实施例的方法的可执行程序。此外,存储器82记录输入输出IO历史记录,所述IO历史记录是指针对至少一个指定地址,从输入输出集线器IOH经所述装置到至少一个远端中央处理器CPU的缓存CA的推送IO数据的历史统计记录。

处理器81确定所述IO历史记录是否符合预设条件;当确定所述IO历史记录符合预设条件时,则向所述远端CPU的CA发送预提取提示报文,所述预提取提示报文用于使所述远端CPU的CA针对所述预提取提示报文中的地址发起IO数据的预取访问。

本发明实施例通过CC-NUMA系统中的装置记录针对一个或多个指定地址的推送IO数据的历史记录,通过分析该历史记录符合预定条件,从而推测远端CPU可能在将来的时间点使用该指定地址的IO数据,该装置主动发送针对该指定地址的IO数据提示报文给该远端的CPU的CA,并且由该远端CPU提前发起针对该指定地址的IO数据预取操作,由此缩短了远端IO数据访问延时,提升了系统的性能。

装置80可以执行方法30或40,结构例如图6A或图6B中所示的动态事物监控器,作为不同的实现方式可以是NC,也可以包括在CC-NUMA的NC中,还可以独立存在。其中,NC可以是一块专用的芯片或者现场可编程门阵列(FPGA,Field Programmable Gate Array)设备等。

可选的,作为不同的实施例,当所述处理器确定所述IO历史记录中有关所述指定地址的统计次数大于预设的门限值时,则所述处理器向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或当所述处理器确定所述IO历史记录中有关所述指定地址的两次记录的计时间隔小于预设的门限值时,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或当所述处理器确定所述IO历史记录中单位时间内有关所述指定地址的统计次数大于预设的门限值时,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文;或所述处理器确定轮询调度算法或加权的轮询调度算法的输入为所述远端CPU的CA,则向所述远端CPU的CA发送关于所述指定地址的预提取提示报文。

可选的,作为不同的实施例,所述处理器管理IO历史记录的插入、更新、替换和删除。

可选的,作为不同的实施例,所述处理器根据以下条件之一,优先进行IO历史记录的更新或替换:所述IO历史记录中有关所述指定地址的统计次数最低;或所述IO历史记录中有关所述指定地址的两次记录的计时间隔最长;或所述IO历史记录中单位时间内有关所述指定地址的统计次数最低;或根据轮询调度算法或加权的轮询调度算法的输入。

可选的,作为不同的实施例,所述处理器记录的所述IO历史记录中的每一条至少包括以下内容:有效性(Valid)、指定地址(Address)、目的地(Destination)和统计参数(Statistical Parameters),其中所述目的地和统计参数一一对应。记录的具体内容参考表3。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号