用于多核处理器的Cache的主动复制方法及系统转让专利

申请号 : CN201010615029.2

文献号 : CN102117262B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王惊雷汪东升

申请人 : 清华大学

摘要 :

本发明公开了一种用于多核处理器的Cache的主动复制方法及系统,包括:S1.宿主节点分析访问共享L2 Cache中数据块的处理器核的位置和访问次数,选取候选副本节点;S2.若数据块被访问的次数达到复制阈值,将数据块复制到副本节点中,并记录副本的位置;S3.若宿主节点接收到对已复制数据块的读请求,将其转发至最近的副本节点,由副本节点回应数据块;S4.请求节点接收到回应后,将副本节点的位置记录在地址映射表中,把后续对该数据块的读请求转发至该副本节点。本发明方法及系统避免了盲目复制带来的副本冗余和分布不合理,访问延迟接近私有L2 Cache的低延迟,容量接近共享L2Cache的大容量。

权利要求 :

1.一种用于多核处理器的Cache的主动复制方法,其特征在于,该方法包括步骤:

S1.宿主节点实时分析访问该节点共享L2 Cache中数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;

S2.若所述数据块被访问的次数达到设定的复制阈值,则宿主节点将所述数据块复制到步骤S1所选取的候选副本节点中,并在迁移表中记录副本的位置;

S3.若宿主节点接收到对已复制数据块的读请求,则将所述读请求转发至离该请求节点最近的副本节点,所述副本节点接收到所述读请求后,向所述请求节点回应所述数据块;

S4.所述请求节点接收到所述副本节点回应的数据块后,将所述副本节点的位置记录在请求节点网络接口的地址映射表中,当请求节点后续对所述数据块进行读请求时,根据所述地址映射表的记录,把读请求转发至所记录的副本节点。

2.如权利要求1所述的用于多核处理器的Cache的主动复制方法,其特征在于,步骤S1进一步包括:宿主节点的模式分析Cache保存访问该节点共享L2 Cache中数据块的处理器核的编号,并按访问先后顺序,确定设定个数的处理器核的优先级;

当有处理器核访问所述数据块时,判断所述处理器核的编号是否已经保存,若是,则将所述处理器核编号的优先级提升至最高,优先级高于所述处理器核编号的原优先级的处理器核的编号的优先级都下降一位;否则将所述处理器核编号的优先级设为最高,其他处理器核的ID的优先级下降一位。

3.如权利要求2所述的用于多核处理器的Cache的主动复制方法,在于,候选副本节点位置的选取方法是:处于最高优先级的处理器核编号为第一候选副本节点位置;根据设定的副本间距,在访问过该数据块的其余处理器核中选择大于或等于该设定的副本间距的次高优先级的处理器核编号作为下一个候选副本节点位置;以此类推,直到选出所有候选副本节点位置。

4.如权利要求1所述的用于多核处理器的Cache的主动复制方法,其特征在于,该方法还包括步骤:

若宿主节点接收到对已复制数据块的写请求,则根据迁移表中所记录的副本位置,向相应的副本节点发送无效信号,并等待副本节点的无效回应信号;

所述副本节点把缓存所述数据块的副本的所有处理器核中的所述数据块无效后,向所述宿主节点发送无效回应信号;

所述宿主节点收到所有副本节点的无效回应信号后,向发送所述写请求的请求节点发送写回应信号,完成写操作。

若宿主节点接收到对未复制数据块的写请求,则将缓存所述数据块的所有处理器核中的所述数据块无效后,向发送所述写请求的请求节点发送写回应信号,完成写操作。

5.如权利要求4所述的用于多核处理器的Cache的主动复制方法,其特征在于,所述数据块被访问的次数计算方法如下:若接收到对所述数据块的读请求,则被访问的次数加1,若接收到对所述数据块的写请求,则被访问的次数清0。

6.如权利要求3所述的用于多核处理器的Cache的主动复制方法,其特征在于,步骤S2中还包括:

所述宿主节点按设定优先级顺序向候选副本节点发送复制请求,并等待候选副本节点的回应信号;

候选副本节点收到迁移请求时,在该副本节点的L2 Cache中为所述数据块分配Cache行,并向所述宿主节点发送回应信号;

所述宿主节点接收到所述副本节点的回应信号时,在该宿主节点的迁移表中记录相应的副本节点的位置,直至该宿主节点收到所有复制请求的回应信号,完成主动复制操作。

7.如权利要求5所述的用于多核处理器的Cache的主动复制方法,其特征在于,若所述宿主节点也为候选副本节点,则在迁移表中记录其该宿主节点的位置,但不向其自身发送复制请求;若所述宿主节点不是候选副本节点,则主动复制操作完成后,将所述数据块从该宿主节点的L2 Cache中删除。

8.如权利要求7所述的用于多核处理器的Cache的主动复制方法,其特征在于,所述宿主节点收到读请求时,如果所述读请求的地址是该宿主节点的本地地址,则同时查找该宿主节点的L2 Cache和迁移表,如果所述迁移表命中,则将所述读请求转发至离所述请求节点最近的副本节点;如果所述读请求的地址不是该宿主节点的本地地址,则查找该宿主节点的L2 Cache,如果命中,则返回请求数据块,否则,把该读请求转发给宿主节点。

9.一种用于多核处理器的Cache的主动复制系统,其特征在于,该系统包括:

模式分析Cache,用于实时分析访问该节点共享L2 Cache中使用数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;以及当所述数据块被访问的次数达到设定的复制阈值时,将所述数据块复制到所选取的候选副本节点中,并在迁移表中记录副本的位置;

转发模块,用于当宿主节点接收到对已复制数据块的读请求时,将所述读请求转发至离该请求节点最近的副本节点,在所述副本节点接收到所述读请求后,向所述请求节点回应所述数据块;

地址映射模块,用于在所述请求节点接收到所述副本节点回应的数据块后,将所述副本节点的位置记录在请求节点网络接口的地址映射表中,当请求节点后续对所述数据块进行读请求时,根据所述地址映射表的记录,把读请求转发至所记录的副本节点。

10.如权利要求9所述的用于多核处理器的Cache的主动复制系统,其特征在于,所述地址映射模块集成在网络接口中,当接收到回应的数据块时,根据数据的地址和回应数据块的源节点位置,判断该回应数据块是来自于宿主节点还是副本节点,如果回应数据块来自于副本节点,则把该副本节点的位置记录在地址映射表中;如果回应数据块来自于宿主节点,则不在地址映射表中保存该位置,如果地址映射表中已经保存有该记录,则删除该记录;当后续对所述数据块进行读请求进入网络接口时,首先查找地址映射表,如果地址映射表命中,则把该读请求发送至该地址映射表中所记录的副本节点,如果地址映射表不命中,则把该读请求发送至宿主节点。

说明书 :

用于多核处理器的Cache的主动复制方法及系统

技术领域

[0001] 本发明涉及Cache(高速缓冲存储器)技术领域,尤其涉及一种用于多核处理器的Cache的主动复制方法及系统。

背景技术

[0002] 多核处理器最后一级Cache(L2 Cache)通常采用分布式设计,呈现一种非一致性访问(Non-Uniform CacheAccess,NUCA)的特点,处理器对L2 Cache的访问延迟取决于处理器核与各个L2 Cache之间的物理距离。L2 Cache有两种组织方式:私有L2 Cache设计和共享L2Cache设计。私有L2 Cache设计是处理器核把本地的L2 Cache作为私有Cache使用,以获得更多的本地访问,降低访问延迟。共享L2 Cache设计则是通过地址交叉的方式,把数据分布到各个L2 Cache中。私有L2 Cache设计中存在大量的重复数据,降低了L2 Cache的有效容量,会导致更多的片外存储器访问。共享L2 Cache设计中没有重复的数据,可以充分利用片上Cache来保存尽可能多的数据,减少片外存储器访问,但数据的随机分布导致了大量对远程L2 Cache的访问。一方面,随着多核处理器规模的增长以及应用程序对大数据集的需求,需要L2 Cache为片上处理器核提供更多的数据;另一方面,多核处理器规模的增长也使处理器核与L2 Cache之间的访问延迟越来越大。单纯的私有L2 Cache设计或单纯的共享L2 Cache设计已无法满足大规模多核处理器的应用需求。
[0003] 混合L2 Cache设计结合了私有L2 Cache设计低延迟与共享L2Cache设计大容量的特点。虽然在L2 Cache中可以混合安排私有L2Cache和共享L2 Cache,以达到混合L2 Cache设计的目的,但是这种方法的适应性和扩展性都比较差。与这种方案相比,以共享L2 Cache设计为基础的复制和迁移机制则具有很好的适应性和扩展性,是混合L2 Cache设计中经常使用的方法。复制是把数据块复制到请求者节点的本地L2 Cache中,宿主节点的L2 Cache中还保留该数据的副本,L2Cache中存在多个副本。迁移则是把数据迁移到请求者节点附近的L2Cache中,宿主节点只保留迁移数据的目的节点信息,不保留该数据的副本,L2 Cache中只有唯一的副本。复制和迁移机制能够根据应用程序的需要把数据放置在距离使用者更近的位置,降低L2 Cache的访问延迟,既使L2 Cache的容量接近共享L2 Cache的容量,又使访问延迟接近私有L2 Cache的访问延迟。
[0004] 目前多核处理器中采用的复制和迁移机制大都是被动的。例如当数据从私有Cache替换时,把它复制到本地的L2 Cache中,或者把远程数据逐步迁移到请求者节点附近的L2 Cache中。这些复制和迁移机制大都是基于对Cache访问的分类,对不同类型的Cache访问采用不同的策略,如对只读数据采用复制策略,对读写数据采用迁移策略。这些被动复制和迁移机制存在以下问题:
[0005] 1、基于本地的决策,没有考虑数据的共享模式,具有一定的盲目性,副本的冗余度大,分布不合理;
[0006] 2、复制的副本只能被本地使用,利用率低;
[0007] 3、多方向迁移造成数据聚集和性能下降;
[0008] 4、不精确的分类方法带来的额外的一致性问题和额外的开销;
[0009] 5、回避对读写数据的复制和迁移;
[0010] 6、对复制和迁移数据的查找复杂、耗时。

发明内容

[0011] (一)要解决的技术问题
[0012] 本发明所要解决的技术问题是:如何提高副本利用率,减少副本的冗余,合理分布副本,以及避免多方向迁移引起的数据聚集,从而降低系统访问延迟,扩大系统容量。
[0013] (二)技术方案
[0014] 未解决上述问题,本发明提供了一种用于多核处理器的Cache的主动复制方法,该方法包括步骤:
[0015] S1.宿主节点实时分析访问该节点共享L2 Cache中使用数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;
[0016] S2.若所述数据块被访问的次数达到设定的复制阈值,则宿主节点将所述数据块复制到步骤S1所选取的候选副本节点中,并在迁移表中记录副本的位置;
[0017] S3.若宿主节点接收到对已复制数据块的读请求,则将所述读请求转发至离该请求节点最近的副本节点,所述副本节点接收到所述读请求后,向所述请求节点回应所述数据块;
[0018] S4.所述请求节点接收到所述副本节点回应的数据块后,将所述副本节点的位置记录在请求节点网络接口的地址映射表中,当请求节点后续对所述数据块进行读请求时,根据所述地址映射表的记录,把读请求转发至所记录的副本节点。
[0019] 其中,步骤S1进一步包括:
[0020] 宿主节点的模式分析Cache保存访问该节点共享L2 Cache中数据块的处理器核的编号,并按访问先后顺序,确定所述设定个数的处理器核的优先级;
[0021] 当有处理器核访问所述数据块时,判断所述处理器核的编号是否已经保存,若是,则将所述处理器核编号的优先级提升至最高,优先级高于所述处理器核编号的原优先级的处理器核的编号的优先级都下降一位;否则将所述处理器核编号的优先级设为最高,其他处理器核的ID的优先级下降一位。
[0022] 其中,候选副本节点位置的选取方法是:处于最高优先级的处理器核编号为第一候选副本节点位置;根据设定的副本距离,在访问过该数据块的其余处理器核中选择大于或等于该设定副本距离的次高优先级的处理器核编号作为下一个候选副本节点位置;以此类推,直到选出所有候选副本节点位置。
[0023] 其中,该方法还包括步骤:
[0024] 若宿主节点接收到对已复制数据块的写请求,则根据迁移表中所记录的副本位置,向相应的副本节点发送无效信号,并等待副本节点的无效回应信号;
[0025] 所述副本节点把缓存所述数据块的副本的所有处理器核中的所述数据块无效后,向所述宿主节点发送无效回应信号;
[0026] 所述宿主节点收到所有副本节点的无效回应信号后,向发送所述写请求的请求节点发送写回应信号,完成写操作。
[0027] 若宿主节点接收到对未复制数据块的写请求,则将缓存所述数据块的所有处理器核中的所述数据块无效后,向发送所述写请求的请求节点发送写回应信号,完成写操作。
[0028] 其中,所述数据块被访问的次数计算方法如下:若接收到对所述数据块的读请求,则被访问的次数加1,若接收到对所述数据块的写请求,则被访问的次数清0。
[0029] 其中,步骤S2中还包括:
[0030] 所述宿主节点按设定优先级顺序向候选副本节点发送复制请求,并等待候选副本节点的回应信号;
[0031] 候选副本节点收到所述迁移请求时,在该副本节点的L2 Cache中为所述数据块分配Cache行,并向所述宿主节点发送回应信号;
[0032] 所述宿主节点接收到所述副本节点的回应信号时,在该宿主节点的迁移表中记录相应的副本节点的位置,直至该宿主节点收到所有复制请求的回应信号,完成主动复制操作。
[0033] 其中,若所述宿主节点也为候选副本节点,则在迁移表中记录其该宿主节点的位置,但不向其自身发送复制请求;若所述宿主节点不是候选副本节点,则主动复制操作完成后,将所述数据块从该宿主节点的L2 Cache中删除。
[0034] 其中,所述宿主节点收到读请求时,如果所述读请求的地址是该宿主节点的本地地址,则同时查找该宿主节点的L2 Cache和迁移表,如果所述迁移表命中,则将所述读请求转发至离所述请求节点最近的副本节点;如果所述读请求的地址不是该宿主节点的本地地址,则查找该宿主节点的L2 Cache,如果命中,则返回请求数据块,否则,把该读请求转发给宿主节点。
[0035] 本发明还提供了一种用于多核处理器的Cache的主动复制系统,该系统包括:模式分析Cache,用于实时分析访问该节点共享L2 Cache中使用数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;以及当所述数据块被访问的次数达到设定的复制阈值时,将所述数据块复制到所选取的候选副本节点中,并在迁移表中记录副本的位置;转发模块,用于当宿主节点接收到对已复制数据块的读请求时,将所述读请求转发至离该请求节点最近的副本节点,在所述副本节点接收到所述读请求后,向所述请求节点回应所述数据块;地址映射模块,用于在所述请求节点接收到所述副本节点回应的数据块后,将所述副本节点的位置记录在请求节点网络接口的地址映射表中,当请求节点后续对所述数据块进行读请求时,根据所述地址映射表的记录,把读请求转发至所记录的副本节点。
[0036] 其中,所述地址映射模块集成在网络接口中,当接收到回应的数据块时,根据数据的地址和回应数据块的源节点位置,判断该回应数据块是来自于宿主节点还是副本节点,如果回应数据块来自于副本节点,则把该副本节点的位置记录在地址映射表中;如果回应数据块来自于宿主节点,则不在地址映射表中保存该位置,如果地址映射表中已经保存有该记录,则删除该记录;当后续对所述数据块进行读请求进入网络接口时,首先查找地址映射表,如果地址映射表命中,则把该读请求发送至该地址映射表中所记录的副本节点,如果地址映射表不命中,则把该读请求发送至宿主节点。
[0037] (三)有益效果
[0038] 本发明提出的Cache的主动复制方法及系统,结合复制和迁移的特点,利用局部性原理,对数据访问模式的实时分析,把频繁访问的数据主动迁移到最近频繁访问该数据的一个或多个节点的L2 Cache中,宿主节点跟踪这些副本的位置,维护副本的一致性。为了提高副本的利用效率,减少L2 Cache中副本的冗余,本发明方法对副本的分布进行有效的控制,并通过网络地址映射和快速查找机制,使副本可以被邻近的节点使用。避免了盲目复制所带来的副本冗余以及副本分布不合理,以及多方向迁移所带来的数据聚集等问题,使系统的访问延迟接近私有L2 Cache的低延迟,而容量接近共享L2 Cache的大容量。对数据不进行明确的分类,通过写长度(两次写操作之间读操作的次数)的判断对读写数据进行迁移,可以适用于所有的访问类型,具有很强的适应性。

附图说明

[0039] 图1为依照本发明一种实施方式的用于多核处理器的Cache的主动复制方法流程图;
[0040] 图2为依照本发明一种实施方式的用于多核处理器的Cache的主动复制系统中模式分析Cache(PAC)结构示意图。

具体实施方式

[0041] 对于本发明所提出的用于多核处理器的Cache的主动复制方法及系统,结合附图和实施例详细说明。
[0042] 本发明提出的用于多核处理器的Cache主动迁移(Cache Active Migration,CAM)方法、系统及其硬件实现方法,结合复制和迁移的特点,利用局部性原理,对数据访问模式进行实时分析,把L2 Cache中频繁访问的数据块主动迁移到最近频繁访问该数据的一个或多个节点的L2 Cache中,宿主节点跟踪这些副本的位置,对副本的数量和分布情况进行有效控制,维护副本的一致性。为了提高副本的利用率,减少副本的冗余,CAM对副本的数量和分布了进行有效的控制,并通过网络地址映射和快速查找机制,使副本可以被邻近的节点访问,实现请求节点对邻近副本的快速访问。
[0043] Cache主动迁移方法的主要思想是:对L2 Cache中数据块的访问模式进行实时分析,动态确定副本的位置和分布以及启动数据块迁移的时机。当达到数据块迁移的阈值时,主动把数据块迁移到前面确定的一个或多个副本位置,宿主节点跟踪这些副本的位置。当宿主节点接收到后续对这个数据块的读请求时,把读请求转发给离请求处理器核最近的副本节点。副本节点接收到宿主节点转发的读请求时,向请求节点回应数据块。返回的数据块到达请求节点的网络接口时,网络接口捕获提供该数据快的副本节点的位置并记录在地址映射表中。请求节点后续对该地址的读请求经过网络接口时,根据地址映射表中记录的副本位置,把读请求转发给副本节点,而不是宿主节点,实现了处理器核对邻近副本的快速访问。副本节点跟踪缓存该副本的处理器核的位置,维护它们的一致性,副本的一致性由宿主节点维护。处理器核的写请求都直接发送给宿主节点,宿主节点根据记录的副本位置,把副本节点无效,副本节点也把缓存该副本的相应的处理器核中的数据块无效,以维护一致性。
[0044] 如图1所示,依照本发明一种实施方式的用于多核处理器的Cache的主动复制方法,包括步骤:
[0045] S1.宿主节点的模式分析Cache实时分析访问该节点的共享L2Cache中最近频繁使用数据块的处理器核的位置以及访问次数等信息,动态地确定复制副本的位置及其分布,根据设定的副本间距从最近频繁访问该数据块的处理器核中选取一个或多个候选副本节点;
[0046] S2.若该数据块被访问的次数达到设定的复制阈值,则宿主节点将所述数据块复制到候选副本节点中,并在迁移表中记录副本的位置;
[0047] 其中,数据块被访问的次数计算方法如下:若接收到对该数据块的读请求,则被访问的次数加1,若接收到对该数据块的写请求,则被访问的次数清0。
[0048] S3.若宿主节点接收到对已复制数据块的读请求,则将该读请求转发至离该请求节点最近的副本节点,该副本节点接收到该读请求后,向该请求节点回应该数据块;
[0049] S4.请求节点接收到所述副本节点回应的该数据块后,并将该副本节点的位置记录在请求节点网络接口的地址映射表(Address Mapping Table,AMT)中,当请求节点后续对该数据块进行读请求时,根据地址映射表的记录,把读请求转发至所记录的该副本节点。
[0050] 当L1 Cache读缺失访问请求经过处理器核的网络接口时,首先查找AMT,如果请求地址在AMT中,则把访问请求发给AMT中所记录的副本节点。从而避免了3跳访问,实现了副本的快速查找。如果请求地址不在AMT中,则把请求直接发给宿主节点。如果网络接口捕获到与AMT中不同的节点发来的数据回应信号时,如果该节点是宿主节点,则把AMT项删除;如果是非宿主节点,则把映射地址更新为新的回应节点地址。
[0051] 其中,步骤S1进一步包括:
[0052] 宿主节点的模式分析Cache保存访问该节点共享L2 Cache中数据块的N个处理器核的编号,并按访问先后顺序,确定该N个处理器核的优先级从低到高,即最近访问的处理器核的优先级最高;
[0053] 采用类似最近最少使用(Least Recently Used,LRU)的替换算法,当有处理器核访问该数据块时,判断访问该数据块的处理器核的编号是否已经保存,若是,则将该处理器核的编号的优先级提升至最高,优先级高于该处理器核的编号的原优先级的处理器核的编号的优先级都下降一位;否则将该处理器核的编号的优先级设为最高,其他处理器核的编号的优先级下降一位。
[0054] 候选副本节点位置的选取方法是:处于最高优先级的处理器核编号为第一候选副本节点位置;根据设定的副本距离,在访问过该数据块的其余处理器核中选择大于或等于该设定副本距离的次高优先级的处理器核编号作为下一个候选副本节点位置;以此类推,直到选出所有候选副本节点位置。
[0055] 处理器核的所有写请求都直接发送给宿主节点,若宿主节点接收到对已复制数据块的写请求,则根据迁移表中所记录的副本位置,向相应的副本节点发送无效信号,并等待副本节点的无效回应信号;
[0056] 所述副本节点把缓存所述数据块的副本的所有处理器核中的所述数据块无效后,向所述宿主节点发送无效回应信号;
[0057] 宿主节点收到所有副本节点的无效回应信号后,向发送所述写请求的请求节点发送写回应信号,完成写操作。
[0058] 若宿主节点接收到对未复制数据块的写请求,则将缓存所述数据块的所有处理器核中的所述数据块无效后,向发送所述写请求的请求节点发送写回应信号,完成写操作。
[0059] 其中,步骤S2中还包括:
[0060] 宿主节点按设定的优先级顺序向候选副本节点发送复制请求,并等待候选副本节点的回应信号;
[0061] 候选副本节点收到迁移请求时,在该副本节点的本地L2 Cache中为该数据块分配Cache行,并向宿主节点发送回应信号;
[0062] 宿主节点接收到该副本节点的回应信号时,在该宿主节点的迁移表(Migration Table,MT)中记录相应的副本节点的位置,直至该宿主节点收到所有复制请求的回应信号,完成主动复制操作。
[0063] 若宿主节点也为候选副本节点,则在MT中记录该宿主节点的位置,但不向其自身发送复制请求;若宿主节点不是候选副本节点,则主动复制操作完成后,将该数据块从该宿主节点的L2 Cache中删除。
[0064] 当宿主节点收到读请求时,如果读请求地址是该宿主节点的本地地址,则同时查找该宿主节点的L2 Cache和MT,如果MT命中,则将所述读请求转发至离该请求节点最近的副本节点;如果读请求的地址不是该宿主节点的本地地址,则查找该宿主节点的L2 Cache,如果命中,则返回请求数据块,否则,把该读请求转发给宿主节点。
[0065] 另外,L1 Cache的写缺失请求在经过网络接口时,不管AMT是否命中,都直接发给宿主节点,以维护Cache的一致性。通过AMT,L1Cache的缺失访问请求可以在最近的副本节点得到满足。各个副本维护共享该副本的L1 Cache的一致性。副本之间的一致性由宿主节点维护。读请求不会影响Cache的一致性。
[0066] 若宿主节点接收到对数据块的写请求,则根据记录的该数据块的副本的位置,向相应的副本节点发送无效信号,并等待副本节点的无效回应信号;副本节点把缓存该数据块的副本的所有处理器核中的该数据块无效后,向宿主节点发送无效回应信号;宿主节点收到所有副本节点的无效回应信号后,向发送该写请求的请求节点发送写回应信号,并把该地址从迁移表(MT)中删除,完成写操作。
[0067] 本发明还提供了一种用于多核处理器的Cache的主动复制系统,该系统包括:模式分析Cache,用于实时分析访问该节点共享L2 Cache中使用数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;以及当所述数据块被访问的次数达到设定的复制阈值时,将所述数据块复制到所选取的候选副本节点中,并在迁移表中记录副本的位置;
[0068] 转发模块,用于当宿主节点接收到对已复制数据块的读请求时,将所述读请求转发至离该请求节点最近的副本节点,在所述副本节点接收到所述读请求后,向所述请求节点回应所述数据块;
[0069] 地址映射模块,用于在所述请求节点接收到所述副本节点回应的数据块后,将所述副本节点的位置记录在请求节点网络接口的地址映射表中,当请求节点后续对所述数据块进行读请求时,根据所述地址映射表的记录,把读请求转发至所记录的副本节点。
[0070] 其中,地址映射模块集成在网络接口中,当接收到回应的数据块时,根据数据的地址和回应数据块的源节点位置,判断该回应数据块是来自于宿主节点还是副本节点,如果回应数据块来自于副本节点,则把该副本节点的位置记录在地址映射表中;如果回应数据块来自于宿主节点,则不在地址映射表中保存该位置,如果地址映射表中已经保存有该记录,则删除该记录;当后续对所述数据块进行读请求进入网络接口时,首先查找地址映射表,如果地址映射表命中,则把该读请求发送至该地址映射表中所记录的副本节点,如果地址映射表不命中,则把该读请求发送至宿主节点。
[0071] 模式分析Cache进一步包括:
[0072] 副本节点选取模块,用于实时分析访问该节点共享L2 Cache中使用数据块的处理器核的位置和访问次数,动态地确定复制副本的位置及其分布,根据设定的副本间距从访问该数据块的处理器核中选取一个或多个候选副本节点;
[0073] 主动复制模块,用于当所述数据块被访问的次数达到设定的复制阈值时,将所述数据块复制到所述副本节点选取模块所选取的候选副本节点中,并在迁移表中记录副本的位置;
[0074] 如图2所示,每一个模式分析Cache(PAC)行包含一个地址标签、一个有效位、一个访问模式单元(Access Pattern Unit,APU)和一个计数器。APU用于保存访问所述数据块的设定个数的处理器核的ID,并按访问先后顺序,确定所述设定个数的处理器核的优先级从低到高。PAC中还包含有一个距离阈值和一个启动阈值,及上述的设定的副本间距以及设定的迁移阈值。
[0075] 迁移表,采用与L2 Cache相似的组织方式,每一行包含一个地址标签(Tag)、一个有效位和一个目录向量。迁移表中的目录向量用于指示副本节点的位置。地址映射表在网络接口模块中实现,记录离该节点最近的副本节点的位置。每一行包含地址标签、有效位和节点地址三个域。采用与L1 Cache相似的组织方式。
[0076] 本发明的CAM避免了盲目复制所带来的副本冗余和分布不合理,以及多方向迁移所带来的数据聚集等问题,使系统的访问延迟接近私有L2 Cache的低延迟,而容量接近共享L2 Cache的大容量。CAM对数据不进行明确的分类,通过写长度(两次写操作之间读操作的次数)的判断对读写数据进行迁移,可以适用于所有的类型的访问,具有很强的适应性。
[0077] 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。