CN104899160B - 一种缓存数据控制方法、节点控制器和*** - Google Patents
一种缓存数据控制方法、节点控制器和*** Download PDFInfo
- Publication number
- CN104899160B CN104899160B CN201510292332.6A CN201510292332A CN104899160B CN 104899160 B CN104899160 B CN 104899160B CN 201510292332 A CN201510292332 A CN 201510292332A CN 104899160 B CN104899160 B CN 104899160B
- Authority
- CN
- China
- Prior art keywords
- node
- data cached
- directory entry
- access
- catalogue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种缓存数据控制方法,节点控制器接收源节点发送的数据访问请求;其中,数据访问请求携带访问地址和访问类型;若访问类型为共享请求,节点控制器查询第一目录中是否存在访问地址的第一目录项,若为是,确定访问地址对应的缓存数据为独占态;根据第一目录项中的存储位置确定缓存数据所在的目标节点;节点控制器向目标节点发送第一侦听消息,第一侦听消息用于指示目标节点将缓存数据返回给节点控制器;节点控制器将缓存数据返回至源节点,并删除第一目录中第一目录项。本发明实施例还公开了一种节点控制器。采用本发明,能较少目录对存储空间的需求。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种缓存数据控制方法、节点控制器和***。
背景技术
在高性能处理器组建的CC-NUMA***中,由于处理器本身的扩展能力有限,需要将处理器分成多个节点,利用节点内的NC(Node Controller,节点控制器,简称NC)进行多处理器扩展,以增加并行处理的处理器个数,提升***性能。CC-NUMA***中,处理器通常具有大容量的扩展内存和较大容量的高速缓存(例如,L3缓存)。例如,常见的CC-NUMA***中,单个处理器的扩展内存达到1T以上,L3缓存的容量达到30MB左右,一个节点的扩展内存的容量通常在几个TB,以一个16个处理器的CC-NUMA***为例,节点的处理器的L3缓存的总容量达到30*16=480MB左右,缓存的容量远远小于内存容量。在NC中为每一个Cache Line都设置一个目录项记录是没有,NC一般会采用压缩目录的方式,以减少目录的容量。但是随着节点内扩展内存的急剧增加,目录的容量也急剧增加,现有的压缩目录的方式无法很好的减少目录存储空间的需求。
发明内容
本发明实施例所要解决的技术问题在于,提供一种一种缓存数据控制方法、节点控制器和***。可减少目录对存储空间的需求。
为了解决上述技术问题,本发明实施例第一方面提供了一种多处理器***的缓存数据控制方法,包括:
节点控制器接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型;
若所述访问类型为共享请求,所述节点控制器查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态;
根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
所述节点控制器向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
所述节点控制器将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项。
结合第一方面,在第一种可能的实现方式中,还包括:
若所述访问类型为独占请求且所述第一目录中存在所述访问地址的第一目录项,确定所述访问地址对应的缓存数据为独占态;
根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
所述节点控制器向所述目标节点节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述数据缓存返回给所述节点控制器;
所述节点控制器将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项。
结合第一方面,在第二种可能的实现方式中,还包括:
若所述访问类型为共享请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
所述节点控制器向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据;
所述节点控制器所述缓存数据返回至所述源节点。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,还包括:
若所述访问类型为独占请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
所述节点控制器向所述目标处理器发送所述独占请求,所述独占请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,在所述第二目录项中确定所述缓存数据的存储状态和存储位置,若所述数据缓存为共享态,所述目标处理器向所述目标处理器所在的节点内的其他处理器和所述存储位置对应的节点发送第三侦听消息,所述第三侦听消息用于指示所述其他处理器或所述存储位置对应的其他节点返回所述数据缓存;
所述节点控制器将所述数据缓存返回至所述源节点,并在所述第一目录中创建所述访问地址的第三目录项。
结合第一方面至第三种可能的实现方式中的任意一种,在第四种可能的实现方式中,所述数据访问请求可以由本地节点中的任意一个处理器发出或所述至少一个远端节点中任意一个远端节点发出。
本发明实施例第二方面提供了一种节点控制器,包括:
接收模块,用于接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型,所述节点控制器位于本地节点;
第一查询模块,用于若所述访问类型为共享请求,查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态;
第一确定模块,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的第一远端目标节点;
第一发送模块,用于向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
删除模块,用于将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项。
结合第二方面,在第一种可能的实现方式中,还包括:
第二查询模块,用于若所述访问类型为独占请求且所述第一目录中存在所述访问地址的第一目录项,确定所述访问地址对应的缓存数据为独占态;
第二确定模块,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
第二发送模块,用于向所述目标节点节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述数据缓存返回给所述节点控制器;
更新模块,用于将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项。
结合第二方面,在第二种可能的实现方式中,还包括:
第三查询模块,用于若所述访问类型为共享请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
第三发送模块,用于向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据;
返回模块,用于所述缓存数据返回至所述源节点。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
第四查询模块,用于若所述访问类型为独占请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
第四发送模块,用于向所述目标处理器发送所述独占请求,所述独占请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,在所述第二目录项中确定所述缓存数据的存储状态和存储位置,若所述数据缓存为共享态,所述目标处理器向所述目标处理器所在的节点内的其他处理器和所述存储位置对应的节点发送第三侦听消息,所述第三侦听消息用于指示所述其他处理器或所述存储位置对应的其他节点返回所述数据缓存;
创建模块,用于将所述数据缓存返回至所述源节点,并在所述第一目录中创建所述访问地址的第三目录项。
本发明实施例第三方面提供了一种多处理器***,其特征在于,包括至少两个节点,其中,每个节点中有两个上述任意一项所述的节点控制器。
实施本发明实施例,具有如下有益效果:
节点控制器的目录中只记录独占态的缓存数据的目录项,不再记录共享态的缓存数据的目录项,这样减少目录对存储空间的需求,提高节点内存储器的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种多处理器***的网络架构图;
图2是本发明实施例提供的一种多处理器***的缓存数据控制方法的流程示意图;
图3a和图3b是本发明实施例提供的一种处理器***的缓存数据控制方法的另一流程示意图;
图4是本发明实施例提供的一种多处理器***的第一交互示意图;
图5是本发明实施例提供的一种多处理器***的第二交互示意图;
图6是本发明实施例提供的一种多处理器***的第三交互示意图;
图7是本发明实施例提供的一种多处理器***的第四交互示意图;
图8是本发明实施例提供的一种节点控制器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明实施例提供的多处理器***的网络架构图,在本发明实施例中,多处理器***包括N+1节点,N≥2,节点和节点之间通过互联网络连接,每个节点的结构相同,节点包括n+1(n≥0)个CPU,每个CPU设置有对应的内存和缓存,每个CPU与节点内的节点控制器连接,节点控制器设置有一个目录,目录由多个目录项组成,每个目录项以内存地址为索引,用于记录内存地址对应的内存数据的存储状态和存储位置。其中,每个节点内的内存可以是图1中的每个CPU设置为一个单独的内存,也可以是一个共享内存,节点内的每个CPU负责管理指定的地址范围,本发明不作限制。
目录项中的存储状态分为独占态、共享态和无效态,独占态表示只有一个节点的缓存拥有缓存数据,且缓存数据与内存中的内存数据不一致;共享态表示一个或多个节点的缓存拥有缓存数据,且缓存数据域内存中的内存数据一致;独占态表示没有任何一个节点的缓存拥有缓存数据。
参见图2,为本发明实施例提供的一种多处理器***的缓存数据控制方法的流程示意图,在本发明实施例中,所述方法包括:
S201、节点控制器接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型,所述节点控制器位于本地节点。
具体的,节点控制器所在的节点为本地节点,本地节点中的处理器的数量可以为一个或多个,数据访问请求可以是其他节点发出的,也可以是本地节点中的处理器发出的。多处理器的内存进行统一编址,每个节点分配有不同的内存地址范围,数据访问请求中的访问地址为内存地址,数据访问请求用于请求内存中访问地址指向的内存数据,由于多处理器采用多节点的缓存机制,该内存数据的副本缓存数据可能存在于某个节点的处理器的缓存中。访问类型包括独占请求和共享请求,其中独占请求表示独占请求的节点唯一拥有缓存数据,且缓存数据和内存中的内存数据不一致;共享请求表示共享请求的节点不是唯一拥有缓存数据,且缓存数据和内存中的内存数据一致。
S202、若所述访问类型为共享请求,所述节点控制器查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态。
具体的,节点控制器识别数据访问请求中携带的访问类型,如果识别出访问类型为共享请求,节点控制器查询第一目录中是否存在访问地址对应的第一目录项,第一目录可以设置为节点控制器内,也可以设置为节点控制器之外。节点控制器的第一目录包括多个目录项,目录项以内存地址为索引,表示内存地址指向的内存数据对应的缓存数据的存储状态和存储位置,存储状态分为共享态、无效态和独占态,如果第一目录中没有内存地址对应的目录,表示节点中可能没有对应的缓存数据。本发明实施例中,节点控制器上的目录中只存储独占态的缓存数据的存储位置,即如果节点控制器的目录中存储存在内存地址对应的目录项,则表明该内存地址对应的内存数据在节点中存在缓存数据,且该缓存数据为独占态,这样可以减少节点控制器的目录的大小,节省存储空间。
S203、根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点。
具体的,查询第一目录项中缓存数据的存储位置,获知缓存数据位于目标节点上。
S204、所述节点控制器向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器。
具体的,节点控制器向目标节点发出第一侦听消息,目标节点接收到第一侦听消息后将缓存数据返回给节点控制器。
S205、所述节点控制器将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项。
具体的,由于节点控制器将缓存数据返回至源节点,这样目标节点和源节点上均存在缓存数据,缓存数据的实际状态变为共享态,由于节点控制器的第一目录只存储共享态的目录项,因此节点控制器删除访问地址对应的目录项。需要说明的是,节点控制器上的第一目录上不再存储共享态的目录项,但是本地节点内的多个处理器仍然会维护缓存数据的目录,利用缓存一致性协议记录缓存数据的存储状态和存储位置,此处不再赘述。
实施本发明的实施例,节点控制器的目录中只记录独占态的缓存数据的目录项,不再记录共享态的缓存数据的目录项,这样减少目录对存储空间的需求,提高节点内存储器的利用率。
参见图3a和图3b,为本发明实施例提供的一种多处理器***的缓存数据控制方法的另一流程示意图,在本发明实施例中,所述方法包括:
S301、节点控制器接收源节点发送的携带访问地址和访问类型的数据访问请求。
具体的,节点控制器所在的节点为本地节点,本地节点中的处理器的数量可以为一个或多个,数据访问请求可以是其他节点发出的,也可以是本地节点中的处理器发出的。多处理器的内存进行统一编址,每个节点分配有不同的内存地址范围,数据访问请求中的访问地址为内存地址,数据访问请求用于请求内存中访问地址指向的内存数据,由于多处理器采用多节点的缓存机制,该内存数据的副本缓存数据可能存在于某个节点的处理器的缓存中。访问类型包括独占请求和共享请求,其中独占请求表示独占请求的节点唯一拥有缓存数据,且缓存数据和内存中的内存数据不一致;共享请求表示共享请求的节点不是唯一拥有缓存数据,且缓存数据和内存中的内存数据一致。
S302、节点控制器识别访问类型。
具体的,节点控制器可以根据数据访问请求中携带的访问类型标识确定访问类型,例如:Exclusive表示独占请求,Shared表示共享请求。如果访问类型为独占请求,执行S311,如果访问请求为共享请求,执行S303。
S303、查询第一目录中是否存在所述访问地址的第一目录项。
具体的,以访问地址为索引搜索节点控制器的目录中是否存在对应的第一目录项,节点控制器的目录可以位于节点控制器内部,也可以位于节点控制器外部,本发明不作限制。若第一目录中存在访问地址的第一目录项,指向S304,否则,执行S308。
S304、确定所述访问地址对应的缓存数据为独占态。
具体的,第一目录中只存储独占态的缓存数据的目录,如果第一目录中存在访问地址对应的第一目录项,表明访问地址对应的缓存数据位独占态。
S305、根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点。
具体的,第一目录项的存储位置标示缓存数据位于哪个节点,或更具体的位于哪个节点中的哪个处理器的缓存中,节点控制器根据第一目录项的存储位置表项确定缓存数据所在的目标节点。其中,此时缓存数据为独占态,缓存数据只可能位于一个节点上。
S306、所述节点控制器向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器。
S307、所述节点控制器将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项。
具体的,缓存数据由独占态变为共享态,节点控制器的目录只记载独占态的缓存数据的目录项,此时节点控制器将访问地址对应的目录项删除,但是访问地址对应的处理器仍然会记录缓存数据的存储状态为共享态。
S308、查询所述访问地址对应的目标处理器。
具体的,多处理器中的每个处理器划分有不同范围的内存地址,每个内存地址互相重叠,根据访问地址属于的内存地址区间确定对应的目标处理器。
S309、所述节点控制器向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据。
S310、所述节点控制器所述缓存数据返回至所述源节点。
S311、查询第一目录中是否存在所述访问地址的第一目录项。
S312、确定所述访问地址对应的缓存数据为独占态。
S313、根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点。
S314、所述节点控制器向所述目标节点节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述数据缓存返回给所述节点控制器。
S315、所述节点控制器将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项。
S316、查询所述访问地址对应的目标处理器。
S317、所述节点控制器向所述目标处理器发送所述独占请求,所述独占请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,在所述第二目录项中确定所述缓存数据的存储状态和存储位置,若所述数据缓存为共享态,所述目标处理器向所述目标处理器所在的节点内的其他处理器和所述存储位置对应的节点发送第三侦听消息,所述第三侦听消息用于指示所述其他处理器或所述存储位置对应的其他节点返回所述数据缓存。
S318、所述节点控制器将所述数据缓存返回至所述源节点,并在所述第一目录中创建所述访问地址的第三目录项。
实施本发明的实施例,节点控制器的目录中只记录独占态的缓存数据的目录项,不再记录共享态的缓存数据的目录项,这样减少目录对存储空间的需求,提高节点内存储器的利用率。
下面结合图4-图7对本发明实施例的多处理器***的缓存数据控制方法进行详细说明,实施例以两个节点进行说明,每个节点设有两个节点控制器和n+1个处理器,每个处理器配置有一个内存,节点内的内存统一进行编址,节点0包括节点控制器NC00和节点控制器NC01,节点1包括节点控制器10和节点控制器11,同一节点内的节点控制器根据预先划分的地址访问管理内存,例如,节点0内有100个处理器,节点控制器00管理处理器0-49,节点控制器01管理处理器50-99,同时节点控制器00和处理器01分别管理处理器对应的内存。假设节点0中的处理器n向节点1中的地址A的缓存数据发起独占请求,地址A的缓存数据变成独占态,通过独占响应节点控制器11在目录上创建地址A的目录项。
节点0中的处理器0向节点1中的地址B的缓存数据发起共享请求,地址B对应的缓存数据变为共享态,节点控制器NC10的目录上不会创建地址B的目录项,但是地址B对应的节点1中的处理器0会记录地址B的缓存数据的状态。
参见图4,为地址A的缓存数据由独占态变为独占态的转换流程,该转换流程包括:
S401、节点0的NC01接收节点0的处理器0发起的数据访问请求,其中,数据访问请求的访问地址为地址A,访问类型为独占请求。
S402、NC01将数据访问请求发送至节点1的NC11。
S403、NC11查寻目录发现存在地址A的目录项,确定地址A的缓存数据位独占态,存储位置为节点0,NC11向NC01发起侦听消息。
S404、NC01侦听节点0内处理器0至处理器n,处理器0的缓存上存在地址A的独占态的缓存数据。
S405、节点0内处理器n的缓存上的地址A的缓存数据由独占态转换为无效态,并处理器n向NC11返回携带独占态的缓存数据的侦听响应;
S406、NC01将侦听响应返回NC11。
S407、NC11将侦听响应发送给NC01。
S408、NC01将侦听响应返回给请求者处理器0。
参见图5,为地址A的缓存数据由独占态变为共享态的转换流程,该转换流程包括:
S501、节点0中的处理器0向NC01发送数据访问请求,其中数据访问请求的访问类型为共享请求,访问地址为地址A;
S502、NC01将数据访问请求发送至NC11,NC11第一目录上存在第一地址对应的缓存数据,确定第一地址对应的缓存数据为独占态,同时查询到缓存数据的存储位置为节点0上,发现节点0;
S503、NC11向节点0中的NC01发起侦听请求。
S504、NC01收到请求后侦听节点0内的处理器0至处理器n,侦听到处理器n的缓存上拥有独占态的缓存数据。
S505、处理器n向NC01返回携带独占态的缓存数据的侦听响应。
S506、NC01将侦听响应返回NC11后,此时,地址A对应的缓存数据转为共享态,NC11第一目录中地址A的第一目录项进行删除。
S507、NC11将共享态的缓存数据返回给请求者处理器0。
参见图6,为缓存数据由共享态转换为共享态的转换流程,该转换流程包括:
S601、节点0中的处理器n向NC00发送数据访问请求,数据访问请求的访问地址为地址B,访问类型为共享请求。
S602、NC00将共享请求发送NC10,NC10查询目录中不存在地址B对应的目录项,则NC00向地址B对应的处理器0发起共享请求;
S603、NC10转发共享请求到地址B对应的处理器0,处理器0查寻自己的目录发现地址B的缓存数据为共享态,且地址B的缓存数据位于处理器0的缓存中,不需要发起侦听请求,处理器0直接向NC10返回携带缓存数据的数据响应。
S604、处理器0向NC10返回数据响应。
S605、NC10将数据响应返回至NC00。
S606、NC00将数据响应返回至请求者处理器n。
参见图7,为缓存数据由共享态变为无效态的转换流程,该转换流程包括:
S701、节点0中的处理器n向NC00发起数据访问请求,其中,数据访问请求的访问地址为地址B,访问类型为独占请求。
S702、NC00将独占请求发送至NC10,NC10查寻目录中不存在地址B对应的目录项,则NC10向地址B对应的处理器0发起独占请求。
S703、NC10向处理器0发起独占请求。
S704、处理器0查寻自己的目录发现地址B对应的缓存数据为共享态,需要发起侦听,处理器0采用广播侦听的方式,处理器0会向节点1内其他处理器(处理器1至处理器n)和NC11发起独占侦听请求,当NC11接收到独占侦听请求,地址B的目录不由NC11管理,在现有的技术方案中是直接返回无效侦听响应,而本发明中由NC11向远端节点(节点0)发起广播侦听。
S705、节点1内拥有地址B对应的共享态的缓存数据的处理器返回侦听响应;
S706、NC11向节点0的NC01发起独占侦听请求。
S707、独占侦听请求到达NC01后,NC01向节点0内做广播侦听。
S708、远端节点(节点0)内的处理器返回侦听响应,NC01节点到侦听响应后返回无效响应,将节点0外地址B对应的数据缓存全部置为无效态。
S709、远端节点(节点0)的NC01向节点1的NC11返回无效响应;
S710、NC11向地址B对应的处理器0返回无效响应。
S711、处理器完成无效响应收集后向请求者NC10返回数据响应,其中携带无效态的数据缓存。
S712、NC10向NC00返回数据响应,并在目录上创建地址B对应的目录项,存储地址设为节点0。
S713、NC00将数据响应返回至请求者处理器0。
由上面的描述可以看出,本发明不为共享态的缓存数据创建目录项,目录上可以记录更多的独占态的缓存数据的目录项,共享态的缓存数据不会占用目录的存储空间,从而有效减少了由于目录的溢出导致对处理器的无效侦听。另外利用节点内处理器做广播侦听的特性,解决了节点外有共享态数据,但是又遇到独占请求的问题,保证了Cache一致性协议的正确性。
参见图8,为本发明实施例提供的一种节点控制器的结构示意图,在本发明实施例中,所述节点控制器包括:接收模块81、第一查询模块82、第一确定模块83、第一发送模块84和删除模块85。
接收模块81,用于接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型,所述节点控制器位于本地节点。
第一查询模块82,用于若所述访问类型为共享请求,查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态。
第一确定模块83,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的第一远端目标节点。
第一发送模块84,用于向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器。
删除模块85,用于将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项。
本发明实施例和方法项实施例一基于同一构思,其带来的技术效果也相同,具体原理请参照方法实施例一的描述,此处不再赘述。
进一步可选的,本发明实施例的节点控制器还包括:
第二查询模块,用于若所述访问类型为独占请求且所述第一目录中存在所述访问地址的第一目录项,确定所述访问地址对应的缓存数据为独占态;
第二确定模块,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
第二发送模块,用于向所述目标节点节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述数据缓存返回给所述节点控制器;
更新模块,用于将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项。
进一步的,本发明实施例的节点控制器还包括:
第三查询模块,用于若所述访问类型为共享请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
第三发送模块,用于向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据;
返回模块,用于所述缓存数据返回至所述源节点。
进一步可选的,本发明实施例的节点控制器还包括:
第四查询模块,用于若所述访问类型为独占请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
第四发送模块,用于向所述目标处理器发送所述独占请求,所述独占请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,在所述第二目录项中确定所述缓存数据的存储状态和存储位置,若所述数据缓存为共享态,所述目标处理器向所述目标处理器所在的节点内的其他处理器和所述存储位置对应的节点发送第三侦听消息,所述第三侦听消息用于指示所述其他处理器或所述存储位置对应的其他节点返回所述数据缓存;
创建模块,用于将所述数据缓存返回至所述源节点,并在所述第一目录中创建所述访问地址的第三目录项。
本发明实施例和方法项实施例二基于同一构思,其带来的技术效果也相同,具体原理请参照方法实施例二的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (6)
1.一种多处理器***的缓存数据控制方法,其特征在于,包括:
节点控制器接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型,所述节点控制器的第一目录中只记录独占态的缓存数据的目录项;
若所述访问类型为共享请求,所述节点控制器查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态;
根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
所述节点控制器向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
所述节点控制器将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项;
若所述访问类型为共享请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
所述节点控制器向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据;
所述节点控制器将所述缓存数据返回至所述源节点。
2.如权利要求1所述的方法,其特征在于,还包括:
若所述访问类型为独占请求且所述第一目录中存在所述访问地址的第一目录项,确定所述访问地址对应的缓存数据为独占态;
根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
所述节点控制器向所述目标节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
所述节点控制器将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项。
3.如权利要求2所述的方法,其特征在于,还包括:
若所述访问类型为独占请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
所述节点控制器向所述目标处理器发送所述独占请求,所述独占请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,在所述第二目录项中确定所述缓存数据的存储状态和存储位置,若所述缓存数据为共享态,所述目标处理器向所述目标处理器所在的节点内的其他处理器和所述存储位置对应的节点发送第三侦听消息,所述第三侦听消息用于指示所述其他处理器返回所述缓存数据;
所述节点控制器将所述缓存数据返回至所述源节点,并在所述第一目录中创建所述访问地址的第三目录项。
4.如权利要求1-3任意一项所述的方法,其特征在于,所述数据访问请求可以由本地节点中的任意一个处理器发出或至少一个远端节点中任意一个远端节点发出。
5.一种节点控制器,其特征在于,包括:
接收模块,用于接收源节点发送的数据访问请求;其中,所述数据访问请求携带访问地址和访问类型,所述节点控制器位于本地节点,所述节点控制器的第一目录中只记录独占态的缓存数据的目录项;
第一查询模块,用于若所述访问类型为共享请求,查询第一目录中是否存在所述访问地址的第一目录项,若为是,确定所述访问地址对应的缓存数据为独占态;
第一确定模块,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的第一远端目标节点;
第一发送模块,用于向所述目标节点发送第一侦听消息,所述第一侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
删除模块,用于将所述缓存数据返回至所述源节点,并删除所述第一目录中所述第一目录项;
第二查询模块,用于若所述访问类型为独占请求且所述第一目录中存在所述访问地址的第一目录项,确定所述访问地址对应的缓存数据为独占态;
第二确定模块,用于根据所述第一目录项中的存储位置确定所述缓存数据所在的目标节点;
第二发送模块,用于向所述目标节点发起第二侦听消息,所述第二侦听消息用于指示所述目标节点将所述缓存数据返回给所述节点控制器;
更新模块,用于将所述访问地址对应的缓存数据返回至所述源节点,并更新所述第一目录中所述访问地址的目录项;
第三查询模块,用于若所述访问类型为共享请求且所述第一目录中不存在所述访问地址的第一目录项,查询所述访问地址对应的目标处理器;
第三发送模块,用于向所述目标处理器发送所述共享请求,所述共享请求用于指示所述目标处理器在第二目录中查询所述访问地址的第二目录项,若根据所述第二目录项确定所述缓存数据为共享态且所述目标处理器关联的缓存中存在所述缓存数据,所述目标处理器向所述节点控制器返回所述缓存数据;
返回模块,用于将所述缓存数据返回至所述源节点。
6.一种多处理器***,其特征在于,包括至少两个节点,其中,每个节点中有两个如权利要求5所述的节点控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510292332.6A CN104899160B (zh) | 2015-05-30 | 2015-05-30 | 一种缓存数据控制方法、节点控制器和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510292332.6A CN104899160B (zh) | 2015-05-30 | 2015-05-30 | 一种缓存数据控制方法、节点控制器和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104899160A CN104899160A (zh) | 2015-09-09 |
CN104899160B true CN104899160B (zh) | 2019-02-19 |
Family
ID=54031834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510292332.6A Active CN104899160B (zh) | 2015-05-30 | 2015-05-30 | 一种缓存数据控制方法、节点控制器和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104899160B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912477B (zh) * | 2016-04-05 | 2019-01-01 | 浪潮电子信息产业股份有限公司 | 一种目录读取的方法、装置及*** |
CN107315694B (zh) * | 2016-04-22 | 2020-12-15 | 华为技术有限公司 | 一种缓存一致性管理方法及节点控制器 |
CN107341114B (zh) * | 2016-04-29 | 2021-06-01 | 华为技术有限公司 | 一种目录管理的方法、节点控制器和*** |
CN107992357A (zh) * | 2016-10-26 | 2018-05-04 | 华为技术有限公司 | 内存访问方法及多处理器*** |
CN108804020B (zh) * | 2017-05-05 | 2020-10-09 | 华为技术有限公司 | 一种存储处理方法及装置 |
CN109597776B (zh) * | 2017-09-30 | 2020-12-08 | 华为技术有限公司 | 一种数据操作方法、内存控制器以及多处理器*** |
CN110059026B (zh) * | 2018-01-19 | 2021-06-29 | 华为技术有限公司 | 一种目录处理方法、装置及存储*** |
CN110083548B (zh) * | 2018-01-26 | 2023-01-13 | 华为技术有限公司 | 数据处理方法及相关网元、设备、*** |
CN110098945B (zh) * | 2018-01-30 | 2021-10-19 | 华为技术有限公司 | 应用于节点***的数据处理方法及装置 |
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
CN112416259B (zh) * | 2020-12-04 | 2022-09-13 | 海光信息技术股份有限公司 | 数据访存方法和数据访存装置 |
CN114153754B (zh) * | 2022-02-08 | 2022-04-29 | 维塔科技(北京)有限公司 | 用于计算集群的数据传输方法、装置及存储介质 |
CN116089116B (zh) * | 2022-12-16 | 2024-05-31 | 成都海光集成电路设计有限公司 | 数据处理方法及装置 |
CN118260304A (zh) * | 2024-05-29 | 2024-06-28 | 山东云海国创云计算装备产业创新中心有限公司 | 基于缓存一致性目录的请求处理方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5806086A (en) * | 1996-06-11 | 1998-09-08 | Data General Corporation | Multiprocessor memory controlling system associating a write history bit (WHB) with one or more memory locations in controlling and reducing invalidation cycles over the system bus |
US6226718B1 (en) * | 1999-02-26 | 2001-05-01 | International Business Machines Corporation | Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system |
US6275907B1 (en) * | 1998-11-02 | 2001-08-14 | International Business Machines Corporation | Reservation management in a non-uniform memory access (NUMA) data processing system |
CN102318275A (zh) * | 2011-08-02 | 2012-01-11 | 华为技术有限公司 | 基于cc-numa的报文处理方法、装置和*** |
CN103500108A (zh) * | 2013-09-27 | 2014-01-08 | 杭州华为数字技术有限公司 | ***内存访问方法、节点控制器和多处理器*** |
CN103544269A (zh) * | 2013-10-17 | 2014-01-29 | 华为技术有限公司 | 目录的存储方法、查询方法及节点控制器 |
CN104508637A (zh) * | 2012-07-30 | 2015-04-08 | 华为技术有限公司 | 用于对等缓存转发的方法 |
-
2015
- 2015-05-30 CN CN201510292332.6A patent/CN104899160B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5806086A (en) * | 1996-06-11 | 1998-09-08 | Data General Corporation | Multiprocessor memory controlling system associating a write history bit (WHB) with one or more memory locations in controlling and reducing invalidation cycles over the system bus |
US6275907B1 (en) * | 1998-11-02 | 2001-08-14 | International Business Machines Corporation | Reservation management in a non-uniform memory access (NUMA) data processing system |
US6226718B1 (en) * | 1999-02-26 | 2001-05-01 | International Business Machines Corporation | Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system |
CN102318275A (zh) * | 2011-08-02 | 2012-01-11 | 华为技术有限公司 | 基于cc-numa的报文处理方法、装置和*** |
CN104508637A (zh) * | 2012-07-30 | 2015-04-08 | 华为技术有限公司 | 用于对等缓存转发的方法 |
CN103500108A (zh) * | 2013-09-27 | 2014-01-08 | 杭州华为数字技术有限公司 | ***内存访问方法、节点控制器和多处理器*** |
CN103544269A (zh) * | 2013-10-17 | 2014-01-29 | 华为技术有限公司 | 目录的存储方法、查询方法及节点控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN104899160A (zh) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104899160B (zh) | 一种缓存数据控制方法、节点控制器和*** | |
CN110998557B (zh) | 通过分布式存储器的高可用性数据库***及方法 | |
US6105113A (en) | System and method for maintaining translation look-aside buffer (TLB) consistency | |
KR101786871B1 (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
KR101814577B1 (ko) | 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치 | |
US6275900B1 (en) | Hybrid NUMA/S-COMA system and method | |
US7814279B2 (en) | Low-cost cache coherency for accelerators | |
JP3924206B2 (ja) | 不均一メモリ・アクセス(numa)データ処理システム | |
US10402327B2 (en) | Network-aware cache coherence protocol enhancement | |
US7613885B2 (en) | Cache coherency control method, chipset, and multi-processor system | |
US10055349B2 (en) | Cache coherence protocol | |
CN108701092A (zh) | 自愈粗粒探听过滤器 | |
US20140089572A1 (en) | Distributed page-table lookups in a shared-memory system | |
CN103870435B (zh) | 服务器及数据访问方法 | |
JPH04227552A (ja) | ストアスルーキャッシュ管理システム | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和*** | |
CN103744799A (zh) | 一种内存数据访问方法、装置和*** | |
US20200334168A1 (en) | Virtual memory pool within a network which is accessible from multiple platforms | |
CN107391600A (zh) | 用于在内存中存取时序数据的方法和装置 | |
TW201248418A (en) | Distributed caching and cache analysis | |
CN103297490B (zh) | 信息处理装置、分布式处理***和分布式处理方法 | |
CN107992270B (zh) | 一种多控存储***全局共享缓存的方法及装置 | |
CN104239270A (zh) | 一种高速缓存同步的方法及装置 | |
CN108170544B (zh) | 面向数据无冲突程序的共享数据动态更新方法 | |
US6298419B1 (en) | Protocol for software distributed shared memory with memory scaling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |