根据目录信息维护Cache数据一致性的方法及装置与流程

文档序号:11133475阅读:633来源:国知局
根据目录信息维护Cache数据一致性的方法及装置与制造工艺

本发明涉及数据块处理领域,尤其涉及根据目录信息维护Cache数据一致性的方法及装置。



背景技术:

分布共享存储多处理器系统指由一个公共存储器和多个处理器所构成的数据块处理系统。在众多类型的分布共享存储多处理器系统中,非一致性内存架构(Non Uniform Memory Access Architecture,简称NUMA)系统以其方便的编程环境和较好的可扩展性,成为最常用的分布共享存储多处理器系统。

NUMA系统通常由多个多处理器系统构成,其中每一个子系统中可以由主存储器(Main Memory)和若干处理器(Processer)构成,各个子处理系统之间可以共享主存储器的空间。由于NUMA系统中各个处理器共享主存储器,各个处理器都可以改写主存储器中的任意数据块,而各个处理器高速缓冲存储器(Cache)也可以缓存主存储器中的任意数据块,从而可能会出现第一处理器Cache缓存了主存储器中某个数据块后,该数据块又被第二处理器改写的情况,导致第一处理器Cache所缓存的数据与主存储器中的数据不一致。由于在NUMA系统中处理器的数量越多,出现处理器Cache所缓存的数据与主存储器中的数据不一致的可能性越大,因此处理器高速缓冲存储器(Cache)数据的一致性问题,成为限制NUMA系统规模及可扩展性的关键问题。

现有技术中,NUMA系统通常会利用保存在互连芯片上的目录信息来保证Cache数据的一致性。具体来说,现有NUMA系统中通常会设有一个互连芯片,该互连芯片中开辟有目录存储空间,该目录存储空间用于保存目录信息,所述目录信息用于记录主存储器中各个数据块是否被处理器Cache所缓存,以及被哪个处理器Cache所缓存等。当某个指定处理器需要修改主存储器中某个数据块时,首先根据目录信息确定是否有处理器Cache中已经缓存了该数据块;当发现目标处理器Cache中缓存有该数据块时,该指定处理器可以向该目标处理器发送点对点的消息,以使其目标处理器Cache中已缓存的该数据块失效,在发送完所述点对点消息之后,所述指定处理器才能修改该数据块。采用此方式,可以确保系统中各个处理器Cache中已缓存的数据块与主存储器中数据块一致,从而解决处理器Cache数据的一致性问题。

在利用目录信息来保证处理器Cache数据的一致性时,NUMA系统的扩展和处理器个数的增加会导致目录信息的数据量随之增加,目录存储器的存储空间也需要随着目录信 息的数据量的增加而加大。因此,采用现有方法解决处理器Cache数据的一致性问题,在NUMA系统规模较大时,因此需要使用较的目录存储空间来存储目录信息互联芯片具有较大存储,而目录存储空间加大伴随的代价是互连芯片结构复杂化及芯片面积大幅增加。而互连芯片结构复杂化及芯片面积大幅增加,则会增加NUMA系统设计和实现的难度。



技术实现要素:

本发明实施例提供了根据目录信息维护Cache数据一致性的方法及装置,可以降低NUMA系统设计和实现的难度。

第一方面,本发明实施例提供了一种根据目录信息维护Cache数据一致性的方法,目录信息保存在主存储器中,所述目录信息用于记录主存储器系统区域中数据块被各个处理器高速缓冲存储器所缓存的状况,所述方法包括:接收数据块状态变更请求;根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器;向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。

结合第一方面,在第一方面第一种可能的实现方式中,所述根据保存在所述主存储器中的目录信息确定目标处理器包括:检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息,所述主存储器的目录区域用于保存所述目录信息;当所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第一方面,在第一方面第二种可能的实现方式中,所述根据保存在所述主存储器中的目录信息确定目标处理器包括:检测互连芯片的目录缓存中是否存在与所述指定数据块对应的指定目录信息;当互连芯片的目录缓存中不存在所述指定目录信息时,检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息;当所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第一方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述方法还包括:当互连芯片的目录缓存中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第一方面第二种可能的实现方式,在第二方面第四种可能的实现方式中,所述方法还包括:当互连芯片的目录缓存中不存在所述指定目录信息时,更新所述目录缓存 中的目录信息。

结合第一方面第二至四种可能的实现方式中任意一种,在第二方面第五种可能的实现方式中,所述目录缓存中保存的目录信息由所述主存储器目录区域中的目录信息以多路组相联方式映射生成。

结合第一方面或第一方面第一至五种可能的实现方式中任意一种,在第一方面第六种可能的实现方式中,其特征在于,所述向目标处理器发送状态变更指示包括:当所述数据块状态变更请求为数据块改写请求时,向所述目标处理器发送失效指示,所述失效指示用于指示所述目标处理器失效目标处理器Cache中已缓存的所述指定数据块;或者,当所述数据块状态变更请求为数据块共享请求时,向所述目标处理器发送共享指示,所述共享指示用于指示所述目标处理器将目标处理器Cache中已缓存的所述指定数据块修改为共享模式。

结合第一方面或第一方面第一至六种可能的实现方式中任意一种,在第一方面第七种可能的实现方式中,所述目录信息包括访问状态字段、信息状态字段及缓存指示字段,其中所述访问状态字段用于指示所述目录信息是否正在被访问,所述信息状态字段用于指示所述目录信息的状态,所述缓存指示字段用于指示所述目录信息所对应数据块被处理器Cache所缓存的状况。

第二方面,本发明实施例提供了一种根据目录信息维护Cache数据一致性的装置,目录信息保存在主存储器中,所述目录信息用于记录主存储器系统区域中数据块被各个处理器高速缓冲存储器所缓存的状况,所述装置包括:接收单元,用于接收数据块状态变更请求;指定数据块确定单元,用于根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;目标处理器确定单元,用于根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器;发送单元,用于向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。

结合第二方面,在第二方面第一种可能的实现方式中,所述目标处理器确定单元,包括:第一检测子单元,用于检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息,所述主存储器的目录区域用于保存所述目录信息;第一确定子单元,用于在所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第二方面,在第二方面第二种可能的实现方式中,所述目标处理器确定单元,包括:第二检测子单元,用于检测互连芯片的目录缓存中是否存在与所述指定数据块对 应的指定目录信息;第三检测子单元,用于在互连芯片的目录缓存中不存在所述指定目录信息时,检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息;第二确定子单元,用于在所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述第二确定子单元,还用于在互连芯片的目录缓存中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

结合第二方面第二种可能的实现方式,在第二方面第四种可能的实现方式中,所述目标处理器确定单元,还包括:更新子单元,用于在互连芯片的目录缓存中不存在所述指定目录信息时,更新所述目录缓存中的目录信息

结合第二方面第二至四种可能的实现方式中任意一种,在第二方面第五种可能的实现方式中,所述目录缓存中保存的目录信息由所述主存储器目录区域中的目录信息以多路组相联方式映射生成。

结合第二方面或第二方面第一至五种可能的实现方式中任意一种,在第二方面第六种可能的实现方式中,所述发送单元,用于当所述数据块状态变更请求为数据块改写请求时,向所述目标处理器发送失效指示,所述失效指示用于指示所述目标处理器失效目标处理器Cache中已缓存的所述指定数据块;或者,用于当所述数据块状态变更请求为数据块共享请求时,向所述目标处理器发送共享指示,所述共享指示用于指示所述目标处理器将目标处理器Cache中已缓存的所述指定数据块修改为共享模式。

结合第二方面或第二方面第一至六种可能的实现方式中任意一种,在第二方面第七种可能的实现方式中,所述目录信息包括访问状态字段、信息状态字段及缓存指示字段,其中所述访问状态字段用于指示所述目录信息是否正在被访问,所述信息状态字段用于指示所述目录信息的状态,所述缓存指示字段用于指示所述目录信息所对应数据块被处理器Cache所缓存的状况。

在本发明实施例中,接收数据块状态变更请求;根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目录信息用于记录主存储器系统区域中数据块被各个处理器Cache所缓存的状况,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器;向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。采用本发明实施例,目录信息存储在主存储器中,从而可以避免使用互联芯片的目录存储空间来存储目录信息,降低 NUMA系统设计和实现的难度。

附图说明

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

图1为本发明根据目录信息维护Cache数据一致性的方法一个实施例的流程图;

图2为本发明目录信息的结构示意图;

图3为本发明根据目录信息维护Cache数据一致性的装置一个实施例的示意图。

具体实施方式

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

在此需要说明的是,其本发明的该非一致内存访问架构系统,可以由至少一个多处理器系统(Multiprocessor Systems)构成,其中每一个多处理器系统可以包含主存储器(Main Memory)和至少两个处理器,目录信息可以保存在主存储器中。其中,主存储器包含目录区域及系统区域,所述目录区域中用于保存目录信息,而系统区域用于保存主存储器所需保存的数据块,每一个目录区域既可以用于存储其所属主存储器系统区域中数据块的目录信息,也可以用于存储其他主存储器系统区域中数据块的目录信息。

参见图1,为本发明根据目录信息维护Cache数据一致性的方法一个实施例的流程示意图。该方法包括如下步骤:

步骤101,接收数据块状态变更请求。

NUMA系统中的处理器首先接收数据块状态变更请求,其中所述数据块状态变更请求可以由系统中的应用发送。其中,所述数据块状态变更请求可以是数据块改写请求、数据块共享请求等,其中,数据块改写请求用于请求改写主存储器中的某数据块,而数据块共享请求用于请求共享主存储器中某数据块。

步骤102,根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块。

处理器在接收到数据块状态变更请求后,首先根据该数据块状态变更请求确定需要改写主存储器系统区域中的哪一个数据块。

例如,在所述数据块状态变更请求中携带有指定数据块的地址范围时,可以认为该地址范围内的数据块即为指定数据块。在所述数据块状态变更请求中携带有指定数据块的起始地址,并能够根据数据块状态变更请求确定指定数据块的大小时,可以根据所述指定数据块的起始地址及指定数据块的大小确定指定数据块。

步骤103,根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目录信息用于记录主存储器系统区域中数据块被各个处理器Cache所缓存的状况,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器。

在指定数据块被确定之后,处理器可以检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息;当所述主存储器目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

所述主存储器目录区域中每一条目录信息可以与主存储器中一个固定大小的数据块相对应,该数据块的大小可以根据需要预先设置,例如,可以与处理器Cache中每一个缓存行(Cacheline)的大小相同。

目录区域中的目录信息可以采用局部性原理以多路组相联方式映射生成。采用局部性原理,并以多路组相联的方式映射生成目录信息,可以仅生成主存储器中可能被处理器Cache缓存的数据块对应的目录信息,而不必生成主存储器中所有数据块对应的目录信息,从而可以大大减小目录信息的数据量,减小目录区域所占用的空间;并且系统区域中固定地址的数据块对应的信息会被保存在目录区域的固定地址,根据数据块的地址可以很容忍确定该数据块对应目录信息的保存地址,从而可以加快目录信息的查找速度。

其中,所述目录信息的结构可以如图2所示,所述目录信息包括访问状态字段、信息状态字段、缓存指示字段,其中所述访问状态字段用于指示所述目录信息是否正在被访问,所述信息状态字段用于指示所述目录信息的状态,所述缓存指示字段用于指示所述目录信息所对应数据块被处理器Cache所缓存的状况。通常情况下,所述访问状态字段的长度可以为1bit,所述信息状态字段的长度可以为3bit,而缓存指示字段的长度可以为4bit。其中,所述目录信息所对应数据块被处理器Cache所缓存的状况是指,所述目录信息对应的数据块是否被处理器Cache所缓存以及被哪一个处理器Cache所缓存等。

为加快数据块改写的处理速度,所述NUMA系统也可以包括一个互连芯片,该互连芯片上设置有目录缓存,该目录缓存用于以缓存方式存储主存储器目录区域中目录信息。 为减少目录缓存的空间,所述目录缓存中保存的目录信息由所述主存储器目录区域中的目录信息以多路组相联方式映射生成。

因此在指定数据块确定之后,处理器也可以先检测互连芯片的目录缓存中是否存在与所述指定数据块对应的指定目录信息;当互连芯片的目录缓存中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。当互连芯片的目录缓存中不存在所述指定目录信息时,处理器再检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息;当所述主存储器目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

如果所述目录信息包括访问状态字段、信息状态字段、缓存指示字段,在根据指定目录信息确定目标处理器时,可以分析所述指定目录信息的缓存指示字段的内容,根据缓存指示字段的内容确定目标处理器。例如,在根据缓存指示字段确定第一处理器Cache中缓存有该指定数据块时,可以确定第一处理器为目标处理器。在根据缓存指示字段确定第二处理器Cache及第三处理器Cache中均缓存有该指定数据块时,可以确定第二处理器及第三处理器均为目标处理器。

如果互连芯片的目录缓存及所述主存储器目录区域中均不存在指定目录信息,则可以认为指定数据块未被任何一个处理器Cache所缓存,处理器可以根据所述数据块状态变更请求直接变更所述指定数据块的状态。

步骤104,向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。

如果根据所述目录信息确定存在目标处理器,那么处理器可以向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。目标处理器可以根据所述数据块状态变更请求修改所述指定数据块的状态,从而可以保证各个处理器Cache中数据的一致性。

根据数据块状态变更请求类型的不同,所述状态变更指示的可以不相同。例如,当所述数据块状态变更请求为数据块改写请求时,向所述目标处理器发送失效指示,所述失效指示用于指示所述目标处理器失效目标处理器Cache中已缓存的所述指定数据块;或者,当所述数据块状态变更请求为数据块共享请求时,向所述目标处理器发送共享指示,所述共享指示用于指示所述目标处理器将目标处理器Cache中已缓存的所述指定数据块修改为共享模式。

目标处理器在接收到所述状态变更指示之后,可以根据状态变更指示改变指定数据 块的状态。例如,当目标处理器接收到失效指示时,可以使目标处理器Cache中该失效指示对应的指定数据块失效;而当目标处理器接收到共享指示时,则可以共享目标处理器Cache中该共享指示对应的指定数据块。

在本实施例中,接收数据块状态变更请求;根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目录信息用于记录主存储器系统区域中数据块被各个处理器Cache所缓存的状况,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器;向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。采用本实施例,目录信息存储在主存储器中,从而可以避免使用互联芯片的目录存储空间来存储目录信息,降低NUMA系统设计和实现的难度。

与根据目录信息维护Cache数据一致性的方法的实施例相对应,本发明实施例还提供了根据目录信息维护Cache数据一致性的装置的实施例。

参见图3,为本发明根据目录信息维护Cache数据一致性的装置一个实施例的结构示意图,其中,目录信息保存在主存储器中,所述目录缓存中保存的目录信息由所述主存储器目录区域中的目录信息以多路组相联方式映射生成。该装置可以用于执行前述实施例中根据目录信息维护Cache数据一致性的方法。

如图3所示,所述装置可以包括:接收单元301,指定数据块确定单元302,目标处理器确定单元303及发送单元304。

其中,接收单元301,用于接收数据块状态变更请求;指定数据块确定单元302,用于根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;目标处理器确定单元303,用于根据保存在所述主存储器中的目录信息确定目标处理器,其中,所述目标处理器是指已将指定数据块存储至处理器Cache中的处理器;发送单元304,用于向所述目标处理器发送状态变更指示,所述数据块状态变更请求用于请求所述目标处理器变更目标处理器Cache中已缓存所述指定数据块的状态。

可选的,所述目标处理器确定单元303,包括:第一检测子单元,用于检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息,所述主存储器的目录区域用于保存所述目录信息;第一确定子单元,用于在所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。

可选的,所述目标处理器确定单元303,包括:第二检测子单元,用于检测互连芯 片的目录缓存中是否存在与所述指定数据块对应的指定目录信息;第三检测子单元,用于在互连芯片的目录缓存中不存在所述指定目录信息时,检测所述主存储器的目录区域中是否存在与所述指定数据块对应的指定目录信息;第二确定子单元,用于在所述主存储器的目录区域中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。其中,所述第二确定子单元,还可以用于在互连芯片的目录缓存中存在所述指定目录信息时,根据所述指定目录信息确定所述目标处理器。所述目标处理器确定单元303,还可以包括:更新子单元,用于在互连芯片的目录缓存中不存在所述指定目录信息时,更新所述目录缓存中的目录信息。

可选的,所述发送单元304,用于当所述数据块状态变更请求为数据块改写请求时,向所述目标处理器发送失效指示,所述失效指示用于指示所述目标处理器失效目标处理器Cache中已缓存的所述指定数据块;或者,用于当所述数据块状态变更请求为数据块共享请求时,向所述目标处理器发送共享指示,所述共享指示用于指示所述目标处理器将目标处理器Cache中已缓存的所述指定数据块修改为共享模式。其中,所述目录信息可以包括访问状态字段、信息状态字段及缓存指示字段,其中所述访问状态字段用于指示所述目录信息是否正在被访问,所述信息状态字段用于指示所述目录信息的状态,所述缓存指示字段用于指示所述目录信息所对应数据块被处理器Cache所缓存的状况。

在本实施例中,根据目录信息维护Cache数据一致性的装置包括:接收单元,用于接收数据块状态变更请求;指定数据块确定单元,用于根据所述数据块状态变更请求确定主存储器系统区域中的指定数据块;目标处理器确定单元,用于根据保存在所述主存储器中的目录信息确定目标处理器,发送单元,用于向所述目标处理器发送状态变更指示。采用本实施例,目录信息存储在主存储器中,从而可以避免使用互联芯片的目录存储空间来存储目录信息,降低NUMA系统设计和实现的难度。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1