基于目录的缓存一致性的实现方法及装置与流程

文档序号:12597272阅读:416来源:国知局
基于目录的缓存一致性的实现方法及装置与流程

本发明涉及缓存一致性技术领域,尤其涉及一种基于目录的缓存一致性的实现方法及装置。



背景技术:

在多核处理器中,多个处理器核会共享访问同一数据块。由于不同的处理器核都有可能修改该数据,而且对于某个处理器核来说,并不能直接获知共享的数据块被其他处理器核修改,因此引入了缓存一致性的概念。目前多核处理器大多使用基于目录的缓存一致性协议来保证多核处理器共享访问的正确性。其中,目录通常以一块片内RAM作为载体,目录中的每个目录项使用若干比特来存储共享者的共享行为。任何共享者对该数据块的读取、修改、写行为都会通知目录并进行相应状态位的修改。

随着处理器核数量以及处理器核私有缓存容量的增加,目录的容量呈平方量级规模增加。为了降低目录容量,增加多处理器系统的可伸缩性,引入了双粒度目录(Dual-grain Directory,DGD)的概念。双粒度目录在目录中同时维护两种类型的目录项:块目录项和区域目录项。块目录项通常记录数据块被哪些共享者共享的信息;区域目录项记录一个缓存区域中哪些缓存块被某一个共享者共享了的信息,其中,一个缓存区域可以为16个连续缓存块的大小。

当处理器核第一次访问一个内存区域时,首先创建一个区域目录项,并且设置该区域目录项的区域拥有者为该处理器核。当后续该处理器核的内存访问命中了该内存区域,则为其在区域目录项中设置相应的存在位,表示该区域中 的这个缓存块被区域拥有者所共享,此时位向量的某一位表示区域中的某一个缓存块被区域拥有者所访问。

当有其他处理器核对同一区域进行共享访问时,额外创建一个单独的块目录项,记录新的请求者与区域拥有者为该缓存块的共享者,并将原区域目录项中相应的存在位清除。该目录项的位向量此时表示具体的共享者,即原拥有者和新的共享者。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:

随着处理器核数目的增加以及互联网络复杂度的提升,多个处理器核同时访问某块内存区域的几率增加。虽然大多数访存的内存区域通常仅被1个共享者共享,但是仍然需要为多个共享者访问的内存区域在区域目录项的基础上额外创建大量的块目录项,进而导致目录大小增加,产生了较大的目录容量开销,目录的可伸缩性较差。



技术实现要素:

本发明提供的基于目录的缓存一致性的实现方法及装置,能够减少所需创建的目录项,进而减小目录大小,降低了目录容量开销,增加了目录的可伸缩性。

第一方面,本发明提供一种基于目录的缓存一致性的实现方法,包括:

在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,其中,所述区域共享目录项记录所述第一访问者和第二访问者的标识、以及所述第一访问者和第二访问者分别访问的所述缓存区域内缓存块的个数;

后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,其 中,更新后的区域共享目录项记录所述后续的访问者的标识、以及所述后续的访问者访问的所述缓存区域内缓存块的个数。

第二方面,本发明提供一种基于目录的缓存一致性的实现装置,包括:

转换单元,用于在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,其中,所述区域共享目录项记录所述第一访问者和第二访问者的标识、以及所述第一访问者和第二访问者分别访问的所述缓存区域内缓存块的个数;

第一更新单元,用于当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项记录所述后续的访问者的标识、以及所述后续的访问者访问的所述缓存区域内缓存块的个数。

本发明实施例提供的基于目录的缓存一致性的实现方法及装置,在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,记录第一访问者和第二访问者的标识以及分别访问的所述缓存区域内缓存块的个数,当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,记录后续的访问者的标识以及访问的所述缓存区域内缓存块的个数。与现有技术相比,本发明使用区域共享目录项来记录多个访问者对同一缓存区域的共享访问,而不需要创建额外的块目录项,从而能够减少所需创建的目录项,进而减小目录大小,降低了目录容量开销,增加了目录的可伸缩性。

附图说明

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

图1为本发明基于目录的缓存一致性的实现方法实施例一的流程图;

图2为本发明基于目录的缓存一致性的实现方法实施例二中块目录项的字段定义示意图;

图3为本发明基于目录的缓存一致性的实现方法实施例二中区域目录项的字段定义示意图;

图4为本发明基于目录的缓存一致性的实现方法实施例二中区域共享目录项的字段定义示意图;

图5为本发明基于目录的缓存一致性的实现方法实施例二中区域目录项转换为区域共享目录项的示意图;

图6为本发明基于目录的缓存一致性的实现方法实施例二中区域目录项更新的示意图;

图7为本发明基于目录的缓存一致性的实现方法实施例二中区域目录项溢出后创建块目录项的示意图;

图8为本发明基于目录的缓存一致性的实现方法实施例二中目录历史表的示意图;

图9为本发明基于目录的缓存一致性的实现装置实施例一的结构示意图;

图10为本发明基于目录的缓存一致性的实现装置实施例二的结构示意图。

具体实施方式

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

本发明提供一种基于目录的缓存一致性的实现方法,图1为本发明基于目录的缓存一致性的实现方法实施例一的流程图,如图1所示,本实施例的方法包括:

S11、在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,其中,所述区域共享目录项记录所述第一访问者和第二访问者的标识、以及所述第一访问者和第二访问者分别访问的所述缓存区域内缓存块的个数。

其中,第一访问者首次访问一缓存区域时创建的区域目录项记录所述第一访问者的标识作为所述缓存区域的区域拥有者、以及记录所述第一访问者所访问的所述缓存区域内的缓存块的位置。

S12、当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项记录所述后续的访问者的标识、以及所述后续的访问者访问的所述缓存区域内缓存块的个数。

本发明实施例提供的基于目录的缓存一致性的实现方法,在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,记录第一访问者和第二访问者的标识以及分别访问的所述缓存区域内缓存块的个数,当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,记录后续的访问者的标识以及访问的所述缓存区域内缓存块的个数。与现有技术相比,本发明使用区域共享目录项来记录多个访问者对同一缓存区域的共享访问,而不需要创建额外的块目 录项,从而能够减少所需创建的目录项,进而减小目录大小,降低了目录容量开销,增加了目录的可伸缩性。

进一步地,所述方法还可以包括:

当所述第一访问者、第二访问者或者后续的访问者再次访问所述缓存区域时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项中所述第一访问者、第二访问者或者后续的访问者所访问的所述缓存区域内缓存块的个数加上了再次访问的次数。

具体地,可以采用以下两种方式实现:

第一访问者、第二访问者或者后续的访问者每访问所述缓存区域一次,所述第一访问者、第二访问者或者后续的访问者所访问的所述缓存区域内缓存块的个数加1。

或者,第一访问者、第二访问者或者后续的访问者累计访问所述缓存区域多次之后,所述第一访问者、第二访问者或者后续的访问者所访问的所述缓存区域内缓存块的个数加上累计访问的次数。

进一步地,所述方法还可以包括:

当访问所述缓存区域的访问者的数量超过所述区域共享目录项的预设共享数量阈值时,创建块目录项,其中,所述块目录项记录当前访问者的标识作为所述当前访问者所访问的缓存块的拥有者、以及记录所述当前访问者之前的所有访问者作为所述缓存块的共享者。

其中,所述预设共享数量阈值大于等于3,优选为3。

进一步地,所述方法还可以包括:

若所述当前访问者所访问的缓存块为所述当前访问者之前的一个访问者的 私有缓存,则对所述区域共享目录项进行更新,其中,更新后的区域共享目录项中所述当前访问者之前的一个访问者所访问的所述缓存区域内缓存块的个数减去了所述当前访问者所访问的缓存块的个数;

具体地,可以采用以下两种方式实现:

当前访问者每访问缓存块一次,当前访问者之前的一个访问者所访问的所述缓存区域内缓存块的个数减1;

或者,当前访问者累计访问缓存块多次之后,当前访问者之前的一个访问者所访问的所述缓存区域内缓存块的个数减去累计访问的次数。

当所述当前访问者之前的一个访问者所访问的所述缓存区域内缓存块的个数减为0时,将所述区域共享目录项中所述当前访问者之前的一个访问者的信息清空。此时,可以在所述区域共享目录项中增加新的区域共享者。

本发明实施例还提供一种基于目录的缓存一致性的实现方法,在本发明基于目录的缓存一致性的实现方法实施例二中,图2、图3、图4所示分别为块目录项、区域目录项、区域共享目录项的字段定义,其中,R(Region)位用来区分该目录项是块目录项、区域目录项还是区域共享目录项,可以采用两个比特位来表示,例如:R为00、01、10分别表示该目录项是块目录项、区域目录项、区域共享目录项。

如图2所示,其中,Tag字段表示该块目录项所对应的缓存块的物理地址;owner字段表示该缓存块的拥有者的ID,例如:owner字段为1、2、3分别表示该缓存块的拥有者的ID为1、2、3;sharer字段表示共享该缓存块的共享者的ID,可以用16比特位来表示,例如:sharer字段为0101001010000000表示共享该缓存块的共享者的ID分别为1、3、6、8。

如图3所示,其中,Tag字段表示该区域目录项所对应的缓存区域的物理地址;owner字段表示该缓存区域的拥有者的ID,例如:owner字段为1、2、3分别表示该缓存区域的拥有者的ID为1、2、3;present bit字段表示该缓存区域中被该拥有者所缓存的缓存块的位置,可以用16比特位来表示,例如:present bit字段为0110010000000000表示该缓存区域的第1、2、5个比特的缓存块被该拥有者所缓存。

如图4所示,其中,Tag字段表示该区域共享目录项所对应的缓存区域的物理地址;sharer1、sharer2、sharer3分别表示该缓存区域的三个区域共享者的ID,例如:sharer1、sharer2、sharer3字段为2、4、5分别表示该缓存区域的三个区域共享者的ID为2、4、5;cnt1、cnt2、cnt3分别表示三个共享者sharer1、sharer2、sharer3缓存了该缓存区域中的缓存块的数量,可以采用计数器来实现,当cnt1、cnt2或cnt3为0时,表示对应的sharer字段为空,可以设置新的共享者。

需要说明的是,图4所示的区域共享目录项以最多有三个区域共享者为例,当然,区域共享目录项的字段也可以设置为大于三个区域共享者。本实施例仅以区域共享目录项最多有三个区域共享者为例进行说明。

本发明基于目录的缓存一致性的实现方法实施例二具体流程如下:

首先,当ID为2的访问者首次访问一缓存区域时,创建一区域目录项,如图5所示,该区域目录项的owner字段为2,表示该缓存区域的拥有者的ID为2;该区域目录项的present bit字段为1110000000000000,有三个被置为1,表示该拥有者所缓存的三个缓存块的位置分别为0、1、2。

然后,当非区域拥有者、ID为5的访问者访问所述缓存区域且命中所述区域目录项时,将该区域目录项转换为区域共享目录项,如图5所示,sharer1字段为 2,cnt1字段为3,表示ID为2的共享者缓存了该缓存区域中的3个缓存块;sharer2字段为5,cnt1字段为1,表示ID为5的共享者缓存了该缓存区域中的一个缓存块;sharer3字段和cnt3字段均为0,表示所述区域共享目录项可以设置新的共享者。

接着,当非区域拥有者、ID为8的访问者访问所述缓存区域且命中所述区域目录项时,对该区域目录项进行更新,增加新的共享者,如图6所示,sharer3字段为8,cnt3字段为5,表示ID为8的共享者缓存了该缓存区域中的5个缓存块。

其中,当ID为2、5或8的共享者再次访问该缓存区域时,对该区域共享目录项进行更新,ID为2、5或8的共享者每多访问该缓存区域一次,将cnt1、cnt2、cnt3的值加1。

最后,当非区域拥有者、ID为1的访问者访问所述缓存区域且命中所述区域目录项时,由于该区域共享目录项最多只能有三个共享者,此时区域共享目录项溢出,因此需要创建块目录项,如图7所示,该块目录项的owner字段为1,表示该缓存块的拥有者的ID为1,sharer字段为0110010010000000表示共享该缓存块的共享者的ID分别为1、2、5、8。

由于没有记录ID为2、5、8的共享者是否包含ID为1的访问者所访问的缓存块,新创建的块目录项中将这些共享者假定为共享状态,以避免出现共享信息丢失。同时区域共享目录项中各共享者分别共享的所述缓存区域内缓存块的个数保持不变,因为区域共享目录项中记录的共享者所共享的缓存块可能不包含当前访问者所访问的缓存块,如果将共享者所共享的缓存块的个数减少,可能会导致一致性信息记录错误。

在本实施例中,在建立目录结构时,采用的方式是:先创建区域目录项;当非区域拥有者访问同一缓存区域且命中所述区域目录项时,将该区域目录项 转换为区域共享目录项;当后续有非区域拥有者访问同一缓存区域且命中所述区域目录项并导致区域共享目录项溢出时,创建块目录项。采用该方式所建立的目录结构称为区域共享的双粒度目录(Region Shared Dual-grain Directory,RSDGD)结构。与现有技术中所采用的DGD结构相比,采用RSDGD结构,能够减少所需创建的块目录项数,进而减小目录大小,降低了目录容量开销,增加了目录的可伸缩性。

在所述RSDGD结构中,所述区域共享目录项和所述块目录项为多路组相联结构;所述区域共享目录项的格式按地址由低到高依次包括:用于区分是块目录项、区域目录项还是区域共享目录项的区域位,表示该区域共享目录项所对应的缓存区域物理地址的标签字段,所述第一访问者的标识,所述第一访问者所缓存的该缓存区域中缓存块的数量,所述第二访问者的标识,所述第二访问者所缓存的该缓存区域中缓存块的数量,所述后续访问者的标识,所述后续访问者所缓存的该缓存区域中缓存块的数量。

进一步地,若ID为1的访问者所访问的缓存块为ID为2、5、8的访问者中的其中一个的私有缓存,例如,若ID为1的访问者所访问的缓存块为ID为5的访问者的私有缓存,则对所述区域共享目录项进行更新,将ID为5的访问者所访问的所述缓存区域内缓存块的个数减1,即cnt2的值1减去1,变为0。此时,将该区域共享目录项中ID为5的访问者的信息清空,即将sharer2设置为0,可以在该区域共享目录项中增加新的共享者。

上述情况要求私有缓存能够处理无效请求不命中的情形,即使私有缓存中没有该缓存块,当接收到对该缓存块的无效请求时,告知目录该缓存块不存在,而不是直接丢弃该请求。因为在创建块目录项的过程并不清楚区域共享者是否 共享了该缓存块,因此为了保证缓存一致性,直接假定该缓存块被区域共享者共享。

然而由于区域共享目录项没有记录准确的共享行为信息,而仅记录了共享者的数量,对于目录项的替换时,需要对共享者进行整个区域范围的无效操作,造成了一定的性能损失。然而目录项替换发生的频率较低,而且替换时可以选择替换代价较小的目录项进行替换,如块目录项。如果必须进行替换,可以通过在私有缓存中支持区域无效操作,仅向每个私有缓存发送一条区域无效命令即可完成整个缓存区域的无效操作,从而加速替换过程。

进一步地,对于某些缓存块来说,其共享者数目较多,而且可能被其他共享者修改。通过上述方法实施例二所述的方式虽然能够保证缓存一致性,但是会经历区域目录项-区域共享目录项-块目录项的过程,一定程度上增加了实现缓存一致性的处理延时。因此,为了在一定程度上减少实现缓存一致性的处理延时,有效提升系统性能,在上述方法实施例二的基础上,设置DHT(Directory History Table,目录历史表)。

如图8所示,DHT为一个二路组相联的缓存结构,每一项记录了已经发生的目录访问。Addr表示访问的基地址,offset表示从基地址开始的缓存块偏移,这里只需记录最大偏移。对该目录历史表中地址范围内的所有缓存块的访问,均直接创建块目录项,而不需要经历区域目录项-区域共享目录项-块目录项的过程。对该目录历史表中地址范围之外的所有缓存块的访问,仍然按照上述方法实施例二所述的方式处理。

当DHT需要替换时,随机选取一路替换掉即可。因为该表仅作为创建目录类型的预测信息,并不需要保证绝对准确,因此修改替换其内容并不会影响一 致性协议的正确性,仅会某种程度上影响一致性协议的性能。

通过设置DHT,可以降低拥有较多共享者的缓存块的目录开销,一定程度上减少了额外创建区域目录项,从而降低实现缓存一致性的系统开销。

本发明实施例提供一种基于目录的缓存一致性的实现装置,图9为本发明基于目录的缓存一致性的实现装置实施例一的结构图,如图9所示,本实施例的装置包括:

转换单元11,用于在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,其中,所述区域共享目录项记录所述第一访问者和第二访问者的标识、以及所述第一访问者和第二访问者分别访问的所述缓存区域内缓存块的个数;

其中,第一访问者首次访问一缓存区域时创建的区域目录项记录所述第一访问者的标识作为所述缓存区域的区域拥有者、以及记录所述第一访问者所访问的所述缓存区域内的缓存块的位置。

第一更新单元12,用于当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项记录所述后续的访问者的标识、以及所述后续的访问者访问的所述缓存区域内缓存块的个数。

本发明实施例提供的基于目录的缓存一致性的实现装置,在第一访问者首次访问一缓存区域时创建一区域目录项之后,第二访问者访问所述缓存区域时,将所述区域目录项转换为区域共享目录项,记录第一访问者和第二访问者的标识以及分别访问的所述缓存区域内缓存块的个数,当后续的访问者访问所述缓存区域时,对所述区域共享目录项进行更新,记录后续的访问者的标识以及访问的所述缓存区域内缓存块的个数。与现有技术相比,本发明使用区域共享目 录项来记录多个访问者对同一缓存区域的共享访问,而不需要创建额外的块目录项,从而能够减少所需创建的目录项,进而减小目录大小,降低了目录容量开销,增加了目录的可伸缩性。

图10为本发明基于目录的缓存一致性的实现装置实施例二的结构示意图,如图10所示,本实施例的装置在图9所示装置结构的基础上,进一步地,所述基于目录的缓存一致性的实现装置还可以包括:

第二更新单元13,用于当所述第一访问者、第二访问者或者后续的访问者再次访问所述缓存区域时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项中所述第一访问者、第二访问者或者后续的访问者所访问的所述缓存区域内缓存块的个数加上了再次访问的次数。

进一步地,所述基于目录的缓存一致性的实现装置还可以包括:

创建单元14,用于当访问所述缓存区域的访问者的数量超过所述区域共享目录项的预设共享数量阈值时,创建块目录项,其中,所述块目录项记录当前访问者的标识作为所述当前访问者所访问的缓存块的拥有者、以及记录所述当前访问者之前的所有访问者作为所述缓存块的共享者。

其中,所述预设共享数量阈值大于等于3,优选为3。

进一步地,所述基于目录的缓存一致性的实现装置还可以包括:

第三更新单元15,用于当所述当前访问者所访问的缓存块为所述当前访问者之前的一个访问者的私有缓存时,对所述区域共享目录项进行更新,其中,更新后的区域共享目录项中所述当前访问者之前的一个访问者所访问的所述缓存区域内缓存块的个数减去了所述当前访问者所访问的缓存块的个数;

清空单元16,用于当所述当前访问者之前的一个访问者所访问的所述缓存 区域内缓存块的个数减为0时,将所述区域共享目录项中所述当前访问者之前的一个访问者的信息清空。此时,可以在所述区域共享目录项中增加新的区域共享者。

可选地,所述区域共享目录项和所述块目录项为多路组相联结构;所述区域共享目录项的格式按地址由低到高依次包括:用于区分是块目录项、区域目录项还是区域共享目录项的区域位,表示该区域共享目录项所对应的缓存区域物理地址的标签字段,所述第一访问者的标识,所述第一访问者所缓存的该缓存区域中缓存块的数量,所述第二访问者的标识,所述第二访问者所缓存的该缓存区域中缓存块的数量,所述后续访问者的标识,所述后续访问者所缓存的该缓存区域中缓存块的数量。

本发明实施例基于目录的缓存一致性的实现方法及装置,可以适用于在片上多核处理器中实现基于目录的缓存一致性,但不仅限于此。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

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

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