CN107341114A - 一种目录管理的方法、节点控制器和系统 - Google Patents
一种目录管理的方法、节点控制器和系统 Download PDFInfo
- Publication number
- CN107341114A CN107341114A CN201610283694.3A CN201610283694A CN107341114A CN 107341114 A CN107341114 A CN 107341114A CN 201610283694 A CN201610283694 A CN 201610283694A CN 107341114 A CN107341114 A CN 107341114A
- Authority
- CN
- China
- Prior art keywords
- data access
- data
- node
- catalogue
- request
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种目录管理的方法、节点控制器和系统,涉及计算机技术领域,用以在目录存储器容量不变的情况下,有效增加目录存储器的利用率,减少目录溢出对处理器性能的影响,包括:第一NC接收所述本地节点内第一处理器发送的第一数据访问请求;所述第一NC若确定在所述第一目录中不存在所述第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,则所述第一NC从所述第一目录中清空一个目录项的目录内容;第一NC将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;所述第一NC若确定接收到第一侦听请求,则向所述本地节点中的处理器发送第一侦听消息,本发明实施例应用于对处理器系统的目录管理中。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种目录管理的方法、节点控制器和系统。
背景技术
在高性能的中央处理器(Central Processing Unit,CPU,后文也简称处理器)组建的缓存一致性非对称存储器访问(CacheCoherence Non-Uniform Memory Access,CC-NUMA)系统中,由于CPU本身的扩展能力有限,所以需要将CC-NUMA系统中的多个CPU划分到不同节点(Node)中,再由NC(Node Controller,NC)进行多CPU扩展,以增加可并行运行的CPU个数,从而提升CC-NUMA系统的性能。
一个简单的CC-NUMA系统的结构示意图如图1所示。图1所示的CC-NUMA系统共包含N+1个节点(Node),分别为Node0~NodeN。每个节点包含一个NC以及由该NC控制的n个CPU,例如图1中的节点0包含一个NC和n个处理器,即处理器0~处理器n。各个节点之间通过NC进行扩展,每个CPU都有自己的高速缓冲存储器(Cache),例如,图1中所示的L3Cache(三级缓存),此外,每个CPU还可以进行内存扩展,例如,可以在CPU原有的内存的基础上,通过如图1所示的双列直插内存模组(Dual in-line memory module,DIMM)来实现对CPU的内存扩展。
在图1所示的CC-NUMA系统中,由于每个CPU都具有L3Cache,并且每个CPU都可以进行内存扩展,所以,在CC-NUMA系统中任意一个节点中的CPU都可以对CC-NUMA系统中其他节点CPU的内存进行一致性访问。
因此,在每个NC上设计有目录存储器,在目录存储器中存储有设计如图1所示的DIR(目录,Directory)来实现该NC所在节点内的CPU内存中的数据被其他节点(即不同于该NC所在节点的其他节点,也称远端节点)的CPU缓存的情况,以维护不同节点间的数据一致性。一般在NC上设计两级目录共同维护数据一致性,分别是LD目录(Local Directory)和RD目录(Remote Directory),其中,LD用于记录远端节点对本地节点中CPU的内存数据的缓存情况,RD用于记录本地节点内处理器缓存其他远端节点内存数据的情况。比如,Node1中的CPU缓存了Node0中CPU内存中的X数据,则Node0的NC查询其管理的LD目录是否存在空闲的目录项,若存在空闲的目录项,则在LD目录的一个空闲的目录项上记录该X数据在Node1中缓存,Node0的NC并在该LD目录中对Node1中的CPU对该X数据的占用状态(可能为共享或独占)进行标示。同时,Node1的NC查询其管理的RD目录是否存在空闲的目录项,若存在空闲的目录项,则Node1的NC在其管理的RD目录中的一个空闲的目录项上记录上述X数据被Node1中的哪个或哪些CPU缓存,并标识该X数据的占用状态。
但是,如图2所示,在节点0中,处理器CA1向NC发送针对远端节点(例如,节点0)的目标数据的访问请求,所述访问请求中携带所述目标数据的地址A;节点0的NC0将该数据访问请求转发给节点2的NC1,并且,节点0的NC0查询其管理的RD目录中是否存在空闲的目录项,如果所述NC0确定其管理的RD目录的目录项均被占用,则NC0从其管理的RD目录中选择一个已被占用的目录项,当所述NC0从所述节点2处获取到所述目标数据之后,所述NC0将选择出的目录项的内容清空。节点2的NC1根据地址A向缓存地址A的处理器发送请求,同时节点2的NC1在其管理的LD目录中的一个空闲的目录项上记载该地址A对应的目标数据在节点0中缓存,然后节点2的NC1将获取的目标数据传递给节点0的NC0;节点0的NC0将该目标数据发送给处理器CA1,处理器CA1将该目标数据缓存在处理器CA1的内存中,同时,节点0的NC0将该目标数据在处理器CA1中缓存的信息记录在上述被清空内容的目录项上。在上文中,由于节点0的RD中没有空闲的目录项,为了读取和缓存所述目标数据,NC0不得不清空了其管理的RD目录中已被占用的一个目录项。由于RD目录中保存的是远端节点的数据在本地节点的缓存信息,也就是说,RD目录中的目录项在远端节点的LD目录中存在一个对应的目录项。如果节点0的RD目录中的一个目录项上的内容被清空,就会造成NC1的LD目录中对应的目录项上的内容表项错误。故当节点0的RD目录中的一个目录项上的内容被清空(例如,该内容记载的是处理器2缓存了NC1中的内存数据B)时,节点0的NC0需要根据被清空的目录项上原来记载的内容向处理器2发起无效侦听,用于将该处理器2缓存的内存数据B清除掉,待节点0的NC0确定处理器2中已不再缓存内存数据B之后,则向节点2的NC1发送溢出报文,该溢出报文用于指示节点0的NC0不再缓存内存数据B;节点2的NC1收到该溢出报文之后,清空其管理的LD目录中记载的该内存数据B在节点0中缓存的内容。
由于,处理器缓存和目录缓存的Cache结构不同,处理器需要的内存数据和在RD目录的所有目录项均被占用时,管理RD目录的NC发送侦听消息清除的内存数据可能存在冲突。例如,RD目录一般是采用组相联的Cache设计的目录,在一个组相联的RD设计中,存储在处理器的内存中的数据可能被多次应用,NC选择清空一个已被占用的目录项上内容时,由于当该目录项上的内容被清除时,该内容指示的内存数据也需要通过无效侦听的方式在NC中被强制替换掉,由于NC并不能获知处理器访问处理器内存中内存数据的频度以及此内存数据在处理器中是否仍然需要,所以NC从其管理的目录中选择清除目录项上内容的对处理器来说是随机的,但是若该被清除的内存数据为处理器正在应用或需要多次应用的内存数据时,被强制清除后,处理器则需要重新Reload此内存数据,在处理器重新Reload此内存数据期间,程序运行将被迫中断,将严重响应系统性能。
发明内容
本发明实施例提供一种目录管理的方法、节点控制器和系统,用以在目录存储器容量不变时,有效增加目录存储器的利用率,同时减少由于目录存储器中目录项上的内容被清除而导致的处理器内存数据失效的概率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种目录管理的方法,应用于一种多处理器系统中,该多处理器系统包括本地节点和至少一个远端节点,其中,本地节点和远端节点之间通过数据通路构成处理器缓存共享网络,该本地节点包括第一节点控制器NC、至少一个处理器以及用于记录本地节点内处理器缓存其他远端节点内存数据的目录内容的第一目录,其特征在于,本发明实施例提供一种目录管理的方法包括:该第一NC接收本地节点内第一处理器发送的用于指示缓存远端节点中第一访问地址对应的内存数据的第一数据访问请求;其中,该第一处理器为所述本地节点中任意一个处理器;第一NC若确定在第一目录中不存在第一访问地址对应的目录项,且第一目录中不存在空闲目录项,则第一NC从第一目录中清空一个目录项的目录内容;该第一NC将第一数据访问请求对应的目录内容写入上述被清空的目录项中;该第一NC若确定接收到用于指示该第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据的第一侦听请求,则向本地节点中的处理器发送用于清除第二数据访问地址对应的内存数据的第一侦听消息;其中,第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
结合第一方面,在第一方面的第一种可能的实现方式中,第一侦听请求为第一远端节点发送的,该第一远端节点为第二数据访问地址对应的内存数据所在的远端节点且第二数据访问地址在第一远端节点的目录中存在对应的目录内容,该目录内容指示所述第二数据访问地址对应的内存数据在本地节点中缓存;相应的,第一NC向所述本地节点中的处理器发送第一侦听消息,包括:第一NC若确定该第一侦听请求为第一NC向第一远端节点发送第二数据访问请求之后接收的,则第一NC向所述本地节点中除第二处理器之外的每个处理器发送第一侦听消息,该第二处理器为所述本地节点中向所述第一NC发送所述第二数据访问请求的处理器;第一NC若确定该第一侦听请求不是第一NC向第一远端节点发送第二数据访问请求之后接收的,则第一NC向本地节点中每个处理器发送所述第一侦听消息。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在确定接收到第一远端节点发送的第一侦听请求之前,所述方法还包括:第一NC接收第二处理器发送的携带第二数据访问地址和访问类型的第二数据访问请求;若确定该第二数据访问请求为独占请求且第一目录中不存在该第二数据访问地址对应的目录项,则第一NC在第一目录中选择一个空闲目录项用于记录该第二数据访问请求对应的目录内容,并向第一远端节点发送独占请求;该独占请求用于指示若第一远端节点的第二NC在确定第二目录中存在第二数据访问地址对应的目录项且该目录项上的目录内容指示该第二数据访问地址对应的内存数据在该本地节点中缓存时,向所述本地节点发送第一侦听请求;其中,所述第二目录为所述第一远端节点的第二NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
结合第一方面,在第一方面的第三种可能的实现方式中,确定接收到第一侦听请求,包括:第一NC接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;第一NC若确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态,则确定接收到第一侦听请求。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,第一NC向所述本地节点中的处理器发送第一侦听消息,包括:第一NC根据第一目录中所述第二数据访问地址对应的目录内容确定所述本地节点中缓存所述第二数据访问地址对应的内存数据的处理器;第一NC向所述本地节点中缓存所述第二数据访问地址对应的内存数据的每个所述处理器发送所述第一侦听消息。
结合第一方面,在第一方面的第五种可能的实现方式中,所述方法还包括:
第一NC接收第二处理器发送的用于回写第二数据访问地址对应的内存数据的第三数据访问请求;第一NC向第一远端节点发送该第三数据访问请求,以使得第一远端节点根据该第三数据访问请求将第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除该第二数据访问地址在第二目录中对应的目录内容。
第二方面,本发明实施例提供一种目录管理的方法,应用于一种多处理器系统中,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点和所述远端节点之间通过数据通路构成处理器缓存共享网络,所述远端节点包括第二节点控制器NC以及第二目录,其中,所述第二目录用于记录所述远端节点内的内存数据在本地节点中的缓存情况,所述方法包括:第二NC接收携带有第二数据访问地址和访问类型的第二数据访问请求;第二NC若确定第二数据访问请求为独占请求且在所述第二目录中存在该第二数据访问地址对应的目录内容,第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则第二NC向缓存所述第二数据访问地址对应的内存数据的本地节点发送用于指示所述第一NC清除掉所述本地节点中第一访问地址对应的内存数据的第一侦听请求。
结合第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:第二NC接收本地节点发送的用于回写第二数据访问地址对应的内存数据的第三数据访问请求;第二NC若确定第二目录中存在第二数据访问地址对应的目录内容,则清除掉第二数据访问地址在第二目录中对应的目录内容,并将该第二数据访问地址对应的内存数据回写至第一处理器中,该第一处理器为所述第二数据访问地址对应的内存数据所在的处理器。
第三方面,本发明实施例还提供一种节点控制器,包括:
第一接收单元,用于接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;第一判断单元,用于在确定所述第一目录中不存在所述第一访问地址对应的目录项时,判断所述第一目录中是否存在空闲目录项;清空单元,用于在所述第一判断单元确定在所述第一目录中不存在空闲目录项,则从所述第一目录中清空一个目录项的目录内容;写入单元,用于将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;第二判断单元,用于判断是否接收到第一侦听请求;发送单元,用于在所述第二判断单元确定接收到所述第一侦听请求时,向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
结合第三方面,在第三方面的第一种可能的实现方式中,该第一侦听请求为第一远端节点发送的,所述第一远端节点为所述第二数据访问地址对应的内存数据所在的远端节点且所述第二数据访问地址在所述第一远端节点的目录中存在对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存;该发送单元,包括:第一判断模块,用于判断所述第一侦听请求是否为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的;第一发送模块,用于在所述第一判断模块确定所述第一侦听请求为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则向所述本地节点中除第二处理器之外的每个处理器发送所述第一侦听消息,所述第二处理器为所述本地节点中向所述第一NC发送所述第二数据访问请求的处理器;第二发送模块,用于在所述第一判断模块确定所述第一侦听请求不是所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则所述第一NC向所述本地节点中每个处理器发送所述第一侦听消息。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述节点控制器还包括:第二接收单元,用于所述第二处理器发送的第二数据访问请求,所述第二数据访问请求携带第二数据访问地址和访问类型;第三判断单元,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项;执行单元,用于在所述第三判断单元确定所述第二数据访问请求为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项时,则在所述第一目录中选择一个空闲目录项用于记录所述第二数据访问请求对应的目录内容,并向所述第一远端节点发送所述独占请求;所述独占请求用于指示若所述第一远端节点的NC在确定第二目录中存在所述第二数据访问地址对应的目录项且所述目录项上的目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存时,向所述本地节点发送第一侦听请求;其中,所述第二目录为所述第一远端节点的NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
结合第三方面,在第三方面的第三种可能的实现方式中,第二判断单元,包括:接收模块,用于接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;第二判断模块,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中是否存在所述第二数据访问地址对应的目录内容;确定模块,用于在所述第二判断模块确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态时,则确定接收到第一侦听请求。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述发送单元,包括:确定模块,用于根据所述第一目录中所述第二数据访问地址对应的目录内容确定所述本地节点中缓存所述第二数据访问地址对应的内存数据的处理器;第三发送模块,用于向所述本地节点中缓存所述第二数据访问地址对应的内存数据的每个所述处理器发送所述第一侦听消息。
结合第三方面,在第三方面的第五种可能的实现方式中,所述节点控制器还包括:第三接收单元,用于接收第二处理器发送的用于回写第二数据访问地址对应的内存数据的第三数据访问请求;发送单元还用于,向第一远端节点发送所述第三数据访问请求,以使得所述第一远端节点根据所述第三数据访问请求将所述第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容。
第四方面,本发明实施例还提供一种节点控制器,所述节点控制器包括:第一接收单元,用于接收第二数据访问请求,所述第一数据访问请求携带有第一访问地址和访问类型;判断单元,用于判断所述第二数据访问请求是否为独占请求且在所述第一目录中是否存在所述第一访问地址对应的目录内容以及所述第一访问地址对应的目录内容指示所述第一访问地址对应的内存数据是否为共享态;发送单元,用于若所述判断单元确定所述第二数据访问请求为独占请求且在所述第一目录中存在所述第一访问地址对应的目录内容,所述第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则向缓存所述第二数据访问地址对应的内存数据的本地节点发送第一侦听请求,所述第一侦听请求用于指示第一NC清除掉本地节点中第二数据访问地址对应的内存数据。
结合第四方面,在第四方面的第一种可能的实现方式中,该节点控制器还包括:第二接收单元,用于接收所述本地节点发送的用于回写第二数据访问地址对应的内存数据的第三数据访问请求;该判断单元还用于,判断第二目录中是否存在第二数据访问地址对应的目录内容;清除单元,用于在判断单元确定第二目录中存在该第二数据访问地址对应的目录内容时,清除掉第二数据访问地址在第二目录中对应的目录内容,并将该第二数据访问地址对应的内存数据回写至第一处理器中,该第一处理器为所述第二数据访问地址对应的内存数据所在的处理器。
第五方面,本发明实施例还提供一种多处理器系统,该多处理器系统包括本地节点和至少一个远端节点,所述本地节点中的节点控制器采用本发明实施例提供的第三方面到第三方面的第五种可能的实现方式中任意一种实现方式中提供的节点控制器,该远端节点中的节点控制器采用第四方面或第四方面的第一种可能的实现方式中提供节点控制器。
本发明实施例提供的一种目录管理方法,通过接收本地节点内第一处理器发送的第一数据访问请求,在确定第一目录中不存在第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,第一NC从所述第一目录中清空一个目录项的目录内容,并将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被选定的目录项的目录内容被清空之后,该本地节点的第一NC并不对所述被选定的目录项上的目录内容指示的访问地址指向的内存数据进行直接删除,而是在第一NC接收到第一侦听请求之后才对被选定的目录项的目录内容中指示的内存数据进行删除,故当被选定的目录项的目录内容被删除时,第一NC并不立刻删掉该被选定的目录项的目录内容中指示的内存数据,因此,缓存被选定的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了当该处理器使用内存数据时,由于内存数据被强制删除而引起的程序被迫中断,减少第一目录溢出时对处理器性能的影响。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的一种目录管理的方法的系统结构示意图;
图2为现有技术提供的一种目录管理的方法的流程示意图;
图3为本发明实施例提供的一种目录管理的方法的流程示意图一;
图4为本发明实施例提供的一种目录管理的方法的流程示意图二;
图5为本发明实施例提供的一种目录管理的方法的流程示意图三;
图6为本发明实施例提供的一种目录管理的方法的流程示意图四;
图7为本发明实施例提供的一种目录管理的方法的流程示意图五;
图8为本发明实施例提供的一种节点控制器的结构示意图一;
图9为本发明实施例提供的一种节点控制器的结构示意图二;
图10为本发明实施例提供的另一种节点控制器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明实施例的原理:
如图2所示,在现有技术中,Inclusive策略是指本地节点内CPU访问远端节点内CPU的内存数据时,对应内存数据的目录内容会记录在本地节点的RD目录上,并且,只要本地节点内任何CPU上缓存了远端节点内存数据副本,则本地节点的RD目录上一定有对应的目录项,该目录项上的目录内容用于指示本地节点中的哪个或哪些处理器缓存了远端节点上的内存数据。而远端节点的LD目录上一定会有一个对应的目录项,该目录项上的目录内容指示该内存数据在本地节点中缓存。例如,本地节点中处理器CA1访问地址A对应的内存数据,则在本地节点的RD目录中的一个目录项中记载的目录内容为处理器CA1访问了地址A对应的内存数据,则该地址A的内存数据所在的节点,也即远端节点,该远端节点的节点控制器在其管理的LD目录中的一个目录项上记载目录内容为该地址A对应的内存数据在本地节点(例如,节点0)中缓存。
当然,地址A对应的内存数据在RD目录中的状态为共享态时,该地址A对应的内存数据可以被本地节点中至少一个处理器缓存,当然,此时该RD目录中明确记载该内存数据被哪些或者哪几个处理器缓存。
现有技术中RD目录一般采用组相联的目录Cache,例如,8路组相联的目录Cache,如图2所示,8路组相联的目录Cache中的8路分别为Way0、Way1、Way2、Way3、Way4、Way5、Way6、Way7;当节点Node0内的节点控制器接收到Node0内的处理器CA0发送的数据访问请求,该数据访问请求携带地址A,且该访问请求的访问类型为共享请求,由于节点0内的RD中不存在所述数据访问请求对应的目录项,且RD目录Cache的8个Way全部有效,则根据预设目录替换策略,例如,可以采用伪LRU(最近最少使用,Least Recent Used)算法,用7位LRU位标识,即R0、R1、R2、R3、R4、R5、R6,确定需要替换哪一路的目录项,具体的替换算法为:
若R0=0,R1=0,R3=0,则替换Way0;
若R0=0,R1=0,R3=1,则替换Way1;
若R0=0,R1=1,R4=0,则替换Way2;
若R0=0,R1=1,R3=1,则替换Way3;
若R0=1,R2=0,R5=0,则替换Way4;
若R0=1,R2=0,R5=1,则替换Way5;
若R0=1,R2=1,R6=0,则替换Way6;
若R0=1,R2=1,R6=1,则替换Way7。
假如替换时,本地节点的节点控制器根据预先设置的替换策略选择Way6被替换掉,其中,Way6指向存储有地址B的目录内容的目录项。节点控制器需要从RD目录中获取一个目录项,将该目录项上的目录内容删掉,用于存储地址A对应的目录内容,示例性的,当目录替换策略选择将用于存储地址B的目录内容的目录项替换掉,则此时,Node0内的节点控制器需要根据地址B记录的目录内容向CA1发起的无效侦听,将CA1中缓存的地址B的内存数据清除掉。
但是Node0并不能获知CA1访问CA1内存中内存数据的频度以及此内存数据在CA1中是否仍然需要,所以Node0采用预设目录替换策略获取的需要被替换的目录项对Node0内任意一个处理器来说是随机的,故当缓存在CA1内的内存数据被强制替换掉后,当CA1需要该内存数据时,则需要重新Reload此内存数据,在CA1重新Reload此内存数据期间,程序运行将被迫中断,将严重响应系统性能。故本发明实施例提供的目录管理方法应用于一种多处理器系统中,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点和所述远端节点之间通过数据通路构成处理器缓存共享网络,所述本地节点包括第一节点控制器NC、至少一个处理器以及第一目录,其中,所述第一目录用于记录所述本地节点内处理器缓存其他远端节点内存数据的目录内容,该目录管理方法中通过第一NC接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;第一NC若确定在所述第一目录中不存在所述第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,则所述第一NC从所述第一目录中清空一个目录项的目录内容;第一NC将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;第一NC若确定接收到第一侦听请求,则向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被清空的目录项的目录内容被清空之后,并不对所述第一地址指向的内存数据进行直接删除,而是在第一NC接收到第一侦听请求之后才对被清空的目录项的目录内容中指示的内存数据进行删除,故缓存被清空的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了程序被迫中断,减少第一目录溢出时对处理器性能的影响。
参见图1,为本发明实施例提供的目录管理的方法应用的网络架构图,在本发明实施例中,所述多处理器系统包括N+1个节点,N≥1,节点和节点之间通过数据通路构成处理器缓存共享网络,每个节点的结构相同,节点包括n+1(n≥0)个CPU,每个CPU设置有对应的内存和缓存,每个CPU与节点内的节点控制器连接,节点控制器设置有一个目录存储器,该目录存储器包含多个目录项,该多个目录项存储在所述目录存储器的至少一个区域中,每个目录项以内存地址为索引,用于记录内存地址对应的内存数据的存储状态和存储位置。其中,每个节点内的内存可以是图1中的每个CPU设置为一个单独的内存,也可以是一个共享内存,节点内的每个CPU负责管理指定的地址范围,本发明实施例不作限制。
目录项中的存储状态分为独占态、共享态和无效态,独占态表示只有一个节点的缓存拥有缓存数据,且缓存数据与内存中的内存数据不一致;共享态表示一个或多个节点的缓存拥有缓存数据,且缓存数据域内存中的内存数据一致;独占态表示没有任何一个节点的缓存拥有缓存数据。
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”、“第三”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”、“第三”等字样并不对数量和执行次序进行限定。
如图3所示,本发明实施例提供一种目录管理的方法,应用于一种多处理器系统中,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点和所述远端节点之间通过数据通路构成处理器缓存共享网络,所述本地节点包括第一节点控制器NC、至少一个处理器以及第一目录,其中,所述第一目录用于记录所述本地节点内处理器缓存其他远端节点内存数据的目录内容,如图1所示,所述方法,包括:
S301、所述第一NC接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
S302、所述第一NC判断所述第一目录中是否存在所述第一访问地址对应的目录项;
S303、所述第一NC若确定所述第一目录中不存在所述第一访问地址对应的目录项,则判断所述第一目录中是否存在空闲目录项;
S304、所述第一NC在确定所述第一目录中不存在空闲目录项时,则所述第一NC从所述第一目录中清空一个目录项的目录内容;
S305、所述第一NC将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;
S306、所述第一NC判断是否接收到第一侦听请求,所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;
S307、所述第一NC若确定接收到第一侦听请求,则向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
本发明实施例提供的一种目录管理方法,通过接收本地节点内第一处理器发送的第一数据访问请求,在确定第一目录中不存在第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,第一NC从所述第一目录中清空一个目录项的目录内容,并将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被选定的目录项的目录内容被清空之后,该本地节点的第一NC并不对所述被选定的目录项上的目录内容指示的访问地址指向的内存数据进行直接删除,而是在第一NC接收到第一侦听请求之后才对被选定的目录项的目录内容中指示的内存数据进行删除,故当被选定的目录项的目录内容被删除时,第一NC并不立刻删掉该被选定的目录项的目录内容中指示的内存数据,因此,缓存被选定的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了当该处理器使用内存数据时,由于内存数据被强制删除而引起的程序被迫中断,减少第一目录溢出时对处理器性能的影响。
具体的,第一节点控制器所在的节点为本地节点,本发明实施例对本地节点中处理器的数量不进行限制,本发明实施例本地节点中处理器的数量为至少一个。
其中,第一数据访问请求为本地节点中的任意一个处理器发出的。由于对于每个处理器发出数据访问请求的处理方式和原理均相同,故本发明实施例仅以第一处理器为例进行说明,并不具有任何指示性含义。
其中,所述第一目录可以设置在所述第一节点控制器内,也可以设置在所述第一节点控制器之外,优选的,可以将所述第一目录设置在所述第一节点控制器内部,这样可以提升系统运行速率。
本发明实施例中第一NC选择被清空的目录项时可以采用预设目录替换策略选择需要被清空的目录项,本发明实施例对此不进行限定,可以根据需要进行选择设置,当然,也可用采用其他方式从第一目录中选择一个需要被清空的目录项,只要能保证当第一目录中不存在空闲目录项时可以采用该方法清空一个第一目录中目录项上的内容用于记录第一数据访问请求的目录内容即可,其中,本发明实施例对所述预设目录替换策略不进行限定,可以根据需要从现有技术中选择相应的预设目录替换策略。例如,可以采用上述描述的目录替换策略。
其中,本发明实施例中的空闲目录项是指该目录项没有记载目录内容,或者说该目录项未被占用。
其中,本发明实施例对所述步骤S103中判断所述第一目录中是否存在空闲目录项的方式不进行限定,示例性的,可以通过以下方式实现:
S1031、获取所述第一目录的总目录项数目以及已经使用的目录项数目;
S1032、若已经使用的目录项数目与第一目录的总目录项数目相等,则确定所述第一目录中不存在空闲目录项。
其中,在所述第一目录项上创建所述第一数据访问请求对应的目录内容的方式与现有技术中的方式相同,本发明实施例在此不再赘述。
其中,第一数据访问请求对应的目录内容包括所述第一数据访问请求的访问类型以及所述目标访问地址对应的内存数据被所述第一处理器缓存。
其中,第一数据访问请求中携带第一访问地址和访问类型,本发明实施例对所述访问类型不进行限定,例如,可以是共享请求,也可以是独占请求。
其中,本发明实施例对所述步骤S104中第一NC从所述第一目录中清空一个目录项的目录内容的方式不进行限定,具体该第一NC可以采用现有技术中的替换策略从所述第一目录中选取一个被清空的目录项。
需要说明的是,若确定所述第一目录中存在空闲目录项,在所述空闲目录项上创建所述第一数据访问请求对应的目录内容的方式可以参考现有技术,本发明实施例在此不再赘述。
由于在所述多处理器系统中存在多种向第一NC发送第一侦听请求的请求者,第一NC接收的第一侦听请求的请求者不同,对应不同的第一NC向本地节点中处理器发送第一侦听消息的对象,本发明实施例对此不进行限定。示例性的,本发明实施例中的向第一NC发送第一侦听请求的请求者可以是本地节点中的任意一个处理器,也可以是任意一个远端节点,下面分别进行说明:
一种可能的实现方式,当向第一NC发送所述第一侦听请求的请求者为第一远端节点时,由于对于每个远端节点向第一NC发送第一侦听请求的方式和原理均与该第一远端节点相同,故本发明实施例仅以第一远端节点为例进行说明,并不具有任何指示性含义:
如图4所示,图4为本发明实施例提供的一种目录管理的方法:
S401、所述第一NC接收本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
其中,所述第一数据访问请求携带第一访问地址和访问类型。示例性的,该第一访问地址为地址A,访问类型为共享请求。当一个数据访问请求的访问类型为共享请求时,当在该处理器中缓存地址A对应的内存数据时,该处理器所在节点的NC在RD目录中记载该内存数据的状态为共享态,由此可知,当数据访问请求的类型为独占请求,该内存数据在目录项上的目录内容应该为独占态。
S402、所述第一NC判断所述第一目录中是否存在所述第一访问地址对应的目录项;
具体的,第一NC可以以访问地址为索引搜索节点控制器的第一目录中是否存在第一访问地址对应的目录项,节点控制器的目录可以位于节点控制器内部,也可以位于节点控制器外部,本发明不作限制。
本发明实施例对该第一目录中目录项的存储方式不进行限定,可以是表格形式存储,如表1所示,也可以是其他形式存储,只要可以使得第一NC根据第一访问地址在第一目录中进行索引即可。示例性的,如表1所示,表1给出了以表格形式存储目录项的方式。
表1第一目录中目录项
S403、所述第一NC若确定所述第一目录中不存在所述第一访问地址对应的目录项,则判断所述第一目录中是否存在空闲目录项;
其中,判断是否存在空闲目录项的方式如前所述,本发明实施例在此不再赘述。
S404、所述第一NC在确定所述第一目录中不存在空闲目录项时,则所述第一NC从所述第一目录中清空一个目录项的目录内容;
S405、所述第一NC将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,其中,该第一数据访问请求对应的目录内容用于指示本地节点中第一处理器缓存该第一访问地址对应的内存数据;并执行步骤S406;
S406、所述第一NC向所述第二NC发送所述第一数据访问请求;
S407、所述第二NC根据所述第一数据访问请求,在确定所述第二目录中不存在该第一访问地址对应的目录内容且该第二目录中存在空闲目录时,在第二目录中创建所述第一访问地址对应的目录内容,该第一访问地址对应的目录内容用于指示该第一访问地址对应的内存数据在本地节点中缓存;
S408、第二NC根据所述第一访问地址向该第一访问地址对应的内存数据所在的处理器发送第一请求消息,该第一请求消息用于指示该第一访问地址对应的内存数据所在的处理器返回该第一访问地址对应的内存数据;
S409、第二NC接收所述第一访问地址对应的内存数据所在的处理器返回该第一访问地址对应的内存数据;
S410、第二NC向所述第一NC返回该第一访问地址对应的内存数据;
S411、该第一NC接收第二NC发送的第一访问地址对应的内存数据;
S412、该第一NC向第一处理器发送第一访问地址对应的内存数据;
S413、第二NC接收到第二远端节点发送的第二数据访问请求,该第二数据访问请求中携带第二数据访问地址以及访问类型;
S414、第二NC判断所述第二数据访问请求的访问类型是否为独占请求,且所述第二数据访问地址在所述第二目录中是否存在目录项;
S415、第二NC若确定所述第二数据访问请求的访问类型为独占请求,且所述第二数据访问地址在所述第二目录中存在目录项,该目录项中指示该第二数据访问地址对应的内存数据为共享态,则向第二NC向所述第一NC发送第一侦听请求,所述第一侦听请求用于指示第一NC清除所述第二数据访问地址对应的内存数据;同时,第二NC向第二数据访问地址对应的内存数据所在的处理器发送第一请求消息,用于指示该处理器返回该第二数据访问地址对应的内存数据;
S416、所述第一NC接收第一侦听请求;
S417、所述第一NC向本地节点中每个处理器发送第一侦听消息,所述第一侦听消息用于指示清除所述第二数据访问地址对应的内存数据;
S418、所述第一NC接收所述本地节点中每个处理器发送的第一侦听响应;
S419、所述第一NC判断是否接收到所述本地节点中每个处理器发送的第一侦听响应;
S420、所述第一NC若确定接收到所述本地节点中每个处理器发送的第一侦听响应,则向所述第二NC发送第一侦听响应;
S421、所述第二NC接收到第一侦听响应之后,将该第二数据访问地址对应的内存数据返回给第二远端节点,并在第二目录中创建第二数据访问地址对应的目录内容,该目录内容指示该第二数据访问地址对应的内存数据在第二远端节点中缓存。
采用上述目录管理方法之后,可以有效地在目录存储器容量不变时,有效地增加目录利用率,且避免了内存数据强制被替换掉所引起的对处理器性能的影响。
本发明实施例提供的一种目录管理方法,通过接收本地节点内第一处理器发送的第一数据访问请求,在确定第一目录中不存在第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,第一NC从所述第一目录中清空一个目录项的目录内容,并将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被选定的目录项的目录内容被清空之后,该本地节点的第一NC并不对所述被选定的目录项上的目录内容指示的访问地址指向的内存数据进行直接删除,而是根据第二NC在接收到第二数据访问请求时,判断是否需要向第一NC发送第一帧听请求,在第二NC确认要向第一NC发送第一帧听请求之后,第一NC接收到第一侦听请求之后才对被选定的目录项的目录内容中指示的内存数据进行删除,故当被选定的目录项的目录内容被删除时,第一NC并不立刻删掉该被选定的目录项的目录内容中指示的内存数据,因此,缓存被选定的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了当该处理器使用内存数据时,由于内存数据被强制删除而引起的程序被迫中断,减少第一目录溢出时对处理器性能的影响。
另一可能的实现方式,如图5所示,图5为本发明实施例提供的另一种目录管理方法的另一个应用场景,与图4所示的方法的区别在于,本发明实施例中第一NC是根据所述本地节点内第二处理器发送的第二数据访问请求决定是否向所述第二NC发送第一侦听消息,图5所示的实施例中在图4所示的实施例的步骤S412之后还包括步骤:S513-S523,示例性的:
S513、所述第一NC接收所述本地节点内第二处理器发送的第二数据访问请求,所述第二数据访问请求携带有第二数据访问地址和访问类型;
S514、所述第一NC若确定所述第二数据访问请求的访问类型为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项,则所述第一NC在所述第一目录中选择一个空闲目录项用于记录所述第二数据访问请求对应的目录内容,并向所述第一远端节点发送所述独占请求,同时执行步骤S515;
其中,该第一远端节点为第一NC根据第二数据访问地址对应的内存数据确定,即该内存数据具体位于哪个远端节点中。其中,独占请求用于指示该内存数据只能被一个处理器缓存。
S515、向所述第一远端节点发送所述独占请求;所述独占请求用于指示若所述第一远端节点的第二NC在确定第二目录中存在所述第二数据访问地址对应的目录项且所述目录项上的目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存时,向所述本地节点发送第一侦听请求;
其中,所述第一远端节点为所述第二数据访问地址对应的内存数据所在的远端节点。
其中,所述第二目录为所述第一远端节点的第二NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
S516、第二NC在接收到所述独占请求之后,判断所述第二目录中是否存在所述第二数据访问地址对应的目录项;
S517、第二NC在确定该第二目录中存在第二数据访问地址对应的目录项,且该目录项上的目录内容指示该第二数据访问地址对应的内存数据的状态为共享态,则向第一NC发送第一侦听请求;所述第一侦听请求用于指示第一NC清除所述第二数据访问地址对应的内存数据;同时,第二NC向第二数据访问地址对应的内存数据所在的处理器发送第一请求消息,用于指示该处理器返回该第二数据访问地址对应的内存数据;
S518、所述第一NC接收第一侦听请求;
S519、所述第一NC向本地节点中除所述第二处理器之外的每个处理器发送第一侦听消息,所述第一侦听消息用于指示清除所述第二数据访问地址对应的内存数据;
由于,此种方案下,对第一NC发送第一帧听请求的请求者为第二处理器,故第一NC向本地节点内的处理器发送第一帧听消息时,则只给除第二处理器之外的其余处理器发送。
需要说明的是,本发明实施例中的第一处理器和第二处理器可以为同一个处理器,也可以为不同的处理器,本发明实施例对此不进行限定。
S520、所述第一NC接收本地节点中除所述第二处理器之外的每个处理器发送的第一侦听响应;所述第一侦听响应用于指示已清除该第二数据访问地址对应的内存数据;
S521、所述第一NC判断是否接收到所述本地节点中除所述第二处理器之外每个处理器发送的第一侦听响应;
S522、所述第一NC若确定接收到所述本地节点中除所述第二处理器之外每个处理器发送的第一侦听响应,则向所述第二NC发送第一侦听响应;
S523、所述第二NC接收到第一侦听响应之后,将该第二数据访问地址对应的内存数据返回给第一远端节点,并在第二目录中更新所述第二数据访问地址对应的目录内容,该目录内容指示该第二数据访问地址对应的内存数据在第一远端节点中缓存,且状态为独占态。
采用上述实施例提供的方式之后,在步骤S514之后,第一目录中该第二数据访问地址对应的目录内容指示该第二数据访问地址对应的内存数据在第二处理器中缓存。且第二目录中与第一目录对应的第二数据访问地址的目录内容也随之更新。
本发明实施例提供的一种目录管理方法,通过接收本地节点内第一处理器发送的第一数据访问请求,在确定第一目录中不存在第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,第一NC从所述第一目录中清空一个目录项的目录内容,并将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被选定的目录项的目录内容被清空之后,该本地节点的第一NC并不对所述被选定的目录项上的目录内容指示的访问地址指向的内存数据进行直接删除,而是根据第一NC接收到第二处理器发送的第二数据访问请求的访问类型以及第二数据访问地址,然后第一NC将该第二数据访问请求发送给第二NC,第二NC根据该第二数据访问请求的访问类型判断是否需要向第一NC发送第一帧听请求,在第二NC确认要向第一NC发送第一帧听请求之后,第一NC接收到第一侦听请求之后才对被选定的目录项的目录内容中指示的内存数据进行删除,故当被选定的目录项的目录内容被删除时,第一NC并不立刻删掉该被选定的目录项的目录内容中指示的内存数据,因此,缓存被选定的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了当该处理器使用内存数据时,由于内存数据被强制删除而引起的程序被迫中断,减少第一目录溢出时对处理器性能的影响。
第三种可能的实现方式,如图6所示,图6与图4的区别在于,该第一侦听请求的请求者为本地节点中的任意一个处理器,由于对于本地节点中每个处理器触发第一NC发送第一侦听消息的方式和原理均相同,故本发明实施例仅以第三处理器为例进行说明,并不具有任何指示性含义,与图4所示的方法的区别在于,在图4所示的步骤S412之后还包括步骤S613-S617:
S613、所述第一NC接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;
S614、所述第一NC判断所述第二数据访问请求是否为独占请求,且所述第一目录中是否存在所述第二数据访问地址对应的目录内容,且该目录内容中该第二数据访问地址的内存数据是否为共享态;
其中,判断第一目录中是否存在第二数据访问地址对应的目录内容可以通过第二数据访问地址在第一目录中进行索引。若无法索引到则确定不存在,若可以索引到则确定存在。
S615、若确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态,则所述第一NC向所述本地节点中除所述第三处理器之外的每个处理器发送所述第一侦听消息;
S616、所述第一NC接收所述本地节点中除所述第三处理器之外的每个处理器发送第一侦听响应;
S617、所述第一NC在第一目录的空闲目录项上创建所述第二数据访问请求对应的目录内容,该目录内容指示该第二数据访问地址在第三处理器中缓存,且为独占态。
当然,在步骤S617之后,还可能包括步骤S618第一NC向第二NC发送第一请求消息,该第一请求消息用于指示第二NC将第二数据访问地址对应的目录内容中第二数据访问地址的状态更新为独占态。
第四种可能的实现方式,如图7所示,图7与图4的区别在于,在步骤S412之后,本发明实施例中的方法还包括:
S713、所述第一NC接收第二处理器发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
S714、所述第一NC判断所述第一目录中是否存在所述第二数据访问地址对应的目录项;
S715、所述第一NC若确定所述第一目录中不存在所述第二数据访问地址对应的目录项,则根据所述第二数据访问地址确定第二数据访问地址对应的内存数据所在的远端节点,即第一远端节点;
S716、所述第一NC向第一远端节点发送所述第三数据访问请求,以使得所述第一远端节点的第二NC根据所述第三数据访问请求将所述第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容;
S717、所述第二NC接收到所述第三数据访问请求,将所述内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容;
S718、所述第二NC向所述第一NC发送第一响应消息,该第一响应消息用于指示第二NC管理的第二目录中不存在所述第二数据访问地址对应的内存数据。
采用上述可能的实现方式之后,在第一目录和第二目录中均不存在第二数据访问地址对应的目录内容。
本发明实施例还提供一种节点控制器,如图8所示,该节点控制器包括:
第一接收单元801,用于接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
第一判断单元802,用于在确定所述第一目录中不存在所述第一访问地址对应的目录项时,判断所述第一目录中是否存在空闲目录项;
清空单元803,用于在所述第一判断单元确定在所述第一目录中不存在空闲目录项,则从所述第一目录中清空一个目录项的目录内容;
写入单元804,用于将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;
第二判断单元805,用于判断是否接收到第一侦听请求;
发送单元806,用于在所述第二判断单元确定接收到所述第一侦听请求时,向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
本发明实施例提供的一种节点控制器,通过接收本地节点内第一处理器发送的第一数据访问请求,在确定第一目录中不存在第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,第一NC从所述第一目录中清空一个目录项的目录内容,并将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中,本发明实施例提供的方法在第一目录容量不变的情况下,不仅有效增加第一目录的利用率;同时,由于被选定的目录项的目录内容被清空之后,该本地节点的第一NC并不对所述被选定的目录项上的目录内容指示的访问地址指向的内存数据进行直接删除,而是在第一NC接收到第一侦听请求之后才对被选定的目录项的目录内容中指示的内存数据进行删除,故当被选定的目录项的目录内容被删除时,第一NC并不立刻删掉该被选定的目录项的目录内容中指示的内存数据,因此,缓存被选定的目录项的目录内容中指示的内存数据的处理器当该内存数据的目录内容在第一NC中被清空时,仍然可以继续使用该内存数据,直至第一NC接收到第一侦听请求,从而避免了当该处理器使用内存数据时,由于内存数据被强制删除而引起的程序被迫中断,减少第一目录溢出时对处理器性能的影响。
进一步可选的,所述第一侦听请求为第一远端节点发送的,所述第一远端节点为所述第二数据访问地址对应的内存数据所在的远端节点且所述第二数据访问地址在所述第一远端节点的目录中存在对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存;
如图9所示,所述发送单元806,包括:
第一判断模块8061,用于判断所述第一侦听请求是否为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的;
第一发送模块8062,用于在所述第一判断模块确定所述第一侦听请求为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则向所述本地节点中除第二处理器之外的每个处理器发送所述第一侦听消息,所述第二处理器为所述本地节点中向所述第一NC发送所述第二数据访问请求的处理器;
第二发送模块8063,用于在所述第一判断模块确定所述第一侦听请求不是所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则所述第一NC向所述本地节点中每个处理器发送所述第一侦听消息。
进一步可选的,所述节点控制器还包括:
第二接收单元,用于所述第二处理器发送的第二数据访问请求,所述第二数据访问请求携带第二数据访问地址和访问类型;
第三判断单元,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项;
执行单元,用于在所述第三判断单元确定所述第二数据访问请求为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项时,则在所述第一目录中选择一个空闲目录项用于记录所述第二数据访问请求对应的目录内容,并向所述第一远端节点发送所述独占请求;所述独占请求用于指示若所述第一远端节点的NC在确定第二目录中存在所述第二数据访问地址对应的目录项且所述目录项上的目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存时,向所述本地节点发送第一侦听请求;其中,所述第二目录为所述第一远端节点的NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
进一步可选的,所述第二判断单元805,包括:
接收模块,用于接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;
第二判断模块,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中是否存在所述第二数据访问地址对应的目录内容;
确定模块,用于在所述第二判断模块确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态时,则确定接收到第一侦听请求。
进一步可选的,如图9所示,所述发送单元806,包括:
确定模块8064,用于根据所述第一目录中所述第二数据访问地址对应的目录内容确定所述本地节点中缓存所述第二数据访问地址对应的内存数据的处理器;
第三发送模块8065,用于向所述本地节点中缓存所述第二数据访问地址对应的内存数据的每个所述处理器发送所述第一侦听消息。
进一步可选的,所述节点控制器还包括:
第三接收单元,用于接收第二处理器发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述发送单元还用于,向第一远端节点发送所述第三数据访问请求,以使得所述第一远端节点根据所述第三数据访问请求将所述第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容。
本发明实施例还提供一种节点控制器,如图10所示,所述节点控制器包括:
第一接收单元1011,用于接收第二数据访问请求,所述第一数据访问请求携带有第一访问地址和访问类型;
判断单元1012,用于判断所述第二数据访问请求是否为独占请求且在所述第一目录中是否存在所述第一访问地址对应的目录内容以及所述第一访问地址对应的目录内容指示所述第一访问地址对应的内存数据是否为共享态;
发送单元1013,用于若所述判断单元确定所述第二数据访问请求为独占请求且在所述第一目录中存在所述第一访问地址对应的目录内容,所述第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则向缓存所述第二数据访问地址对应的内存数据的本地节点发送第一侦听请求,所述第一侦听请求用于指示第一NC清除掉本地节点中第二数据访问地址对应的内存数据。
进一步可选的,所述节点控制器还包括:
第二接收单元,用于接收所述本地节点发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述判断单元还用于,判断所述第二目录中是否存在所述第二数据访问地址对应的目录内容;
清除单元,用于在所述判断单元确定所述第二目录中存在所述第二数据访问地址对应的目录内容时,清除掉第二数据访问地址在第二目录中对应的目录内容,并将所述第二数据访问地址对应的内存数据回写至第一处理器中,所述第一处理器为所述第二数据访问地址对应的内存数据所在的处理器。
本发明实施例还提供一种多处理器系统,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点中的节点控制器采用本发明实施例如图8和图9所示的节点控制器,所述远端节点中的节点控制器采用如图10所示的节点控制器。
其中,本地节点中的节点控制器用于:
接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
若确定在所述第一目录中不存在所述第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,则从所述第一目录中清空一个目录项的目录内容;
将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;
若确定接收到第一侦听请求,则向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示、清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
所述远端节点中的节点控制器用于:
接收第二数据访问请求,所述第二数据访问请求携带有第二数据访问地址和访问类型;
若确定所述第二数据访问请求为独占请求且在所述第二目录中存在所述第二数据访问地址对应的目录内容,所述第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则向缓存所述第二数据访问地址对应的内存数据的本地节点发送第一侦听请求,所述第一侦听请求用于指示本地节点的节点控制器清除掉所述本地节点中第一访问地址对应的内存数据。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。所述存储介质是非短暂性(英文:non-transitory)介质,包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。所述存储介质是非短暂性(英文:non-transitory)介质,包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (17)
1.一种目录管理的方法,应用于一种多处理器系统中,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点和所述远端节点之间通过数据通路构成处理器缓存共享网络,所述本地节点包括第一节点控制器NC、至少一个处理器以及第一目录,其中,所述第一目录用于记录所述本地节点内处理器缓存其他远端节点内存数据的目录内容,其特征在于,所述方法包括:
所述第一NC接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
所述第一NC若确定在所述第一目录中不存在所述第一访问地址对应的目录项,且所述第一目录中不存在空闲目录项,则所述第一NC从所述第一目录中清空一个目录项的目录内容;
所述第一NC将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;
所述第一NC若确定接收到第一侦听请求,则向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
2.根据权利要求1所述的方法,其特征在于,所述第一侦听请求为第一远端节点发送的,所述第一远端节点为所述第二数据访问地址对应的内存数据所在的远端节点且所述第二数据访问地址在所述第一远端节点的目录中存在对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存;
相应的,第一NC向所述本地节点中的处理器发送第一侦听消息,包括:
所述第一NC若确定所述第一侦听请求为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则所述第一NC向所述本地节点中除第二处理器之外的每个处理器发送所述第一侦听消息,所述第二处理器为所述本地节点中向所述第一NC发送所述第二数据访问请求的处理器;
所述第一NC若确定所述第一侦听请求不是所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则所述第一NC向所述本地节点中每个处理器发送所述第一侦听消息。
3.根据权利要求2所述的方法,其特征在于,在所述确定接收到第一远端节点发送的第一侦听请求之前,所述方法还包括:
所述第一NC接收所述第二处理器发送的第二数据访问请求,所述第二数据访问请求携带第二数据访问地址和访问类型;
若确定所述第二数据访问请求为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项,则所述第一NC在所述第一目录中选择一个空闲目录项用于记录所述第二数据访问请求对应的目录内容,并向所述第一远端节点发送所述独占请求;所述独占请求用于指示若所述第一远端节点的第二NC在确定第二目录中存在所述第二数据访问地址对应的目录项且所述目录项上的目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存时,向所述本地节点发送第一侦听请求;其中,所述第二目录为所述第一远端节点的第二NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
4.根据权利要求1所述的方法,其特征在于,所述确定接收到第一侦听请求,包括:
所述第一NC接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;
所述第一NC若确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态,则确定接收到第一侦听请求。
5.根据权利要求4所述的方法,其特征在于,所述第一NC向所述本地节点中的处理器发送第一侦听消息,包括:
所述第一NC根据所述第一目录中所述第二数据访问地址对应的目录内容确定所述本地节点中缓存所述第二数据访问地址对应的内存数据的处理器;
所述第一NC向所述本地节点中缓存所述第二数据访问地址对应的内存数据的每个所述处理器发送所述第一侦听消息。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一NC接收第二处理器发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述第一NC向第一远端节点发送所述第三数据访问请求,以使得所述第一远端节点根据所述第三数据访问请求将所述第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容。
7.一种目录管理的方法,应用于一种多处理器系统中,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点和所述远端节点之间通过数据通路构成处理器缓存共享网络,所述远端节点包括第二节点控制器NC以及第二目录,其中,所述第二目录用于记录所述远端节点内的内存数据在本地节点中的缓存情况,其特征在于,所述方法包括:
所述第二NC接收第二数据访问请求,所述第二数据访问请求携带有第二数据访问地址和访问类型;
所述第二NC若确定所述第二数据访问请求为独占请求且在所述第二目录中存在所述第二数据访问地址对应的目录内容,所述第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则所述第二NC向缓存所述第二数据访问地址对应的内存数据的本地节点发送第一侦听请求,所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第一访问地址对应的内存数据。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述第二NC接收所述本地节点发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述第二NC若确定所述第二目录中存在所述第二数据访问地址对应的目录内容,则清除掉第二数据访问地址在第二目录中对应的目录内容,并将所述第二数据访问地址对应的内存数据回写至第一处理器中,所述第一处理器为所述第二数据访问地址对应的内存数据所在的处理器。
9.一种节点控制器,其特征在于,包括:
第一接收单元,用于接收所述本地节点内第一处理器发送的第一数据访问请求;其中,所述第一数据访问请求用于指示缓存所述远端节点中第一访问地址对应的内存数据;所述第一处理器为所述本地节点中任意一个处理器;
第一判断单元,用于在确定所述第一目录中不存在所述第一访问地址对应的目录项时,判断所述第一目录中是否存在空闲目录项;
清空单元,用于在所述第一判断单元确定在所述第一目录中不存在空闲目录项,则从所述第一目录中清空一个目录项的目录内容;
写入单元,用于将所述第一数据访问请求对应的目录内容写入所述被清空的目录项中;
第二判断单元,用于判断是否接收到第一侦听请求;
发送单元,用于在所述第二判断单元确定接收到所述第一侦听请求时,向所述本地节点中的处理器发送第一侦听消息,所述第一侦听消息用于清除所述第二数据访问地址对应的内存数据;所述第一侦听请求用于指示所述第一NC清除掉所述本地节点中第二数据访问地址对应的内存数据;其中,所述第二数据访问地址对应的内存数据缓存在本地节点的处理器中。
10.根据权利要求9所述的节点控制器,其特征在于,所述第一侦听请求为第一远端节点发送的,所述第一远端节点为所述第二数据访问地址对应的内存数据所在的远端节点且所述第二数据访问地址在所述第一远端节点的目录中存在对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存;
所述发送单元,包括:
第一判断模块,用于判断所述第一侦听请求是否为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的;
第一发送模块,用于在所述第一判断模块确定所述第一侦听请求为所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则向所述本地节点中除第二处理器之外的每个处理器发送所述第一侦听消息,所述第二处理器为所述本地节点中向所述第一NC发送所述第二数据访问请求的处理器;
第二发送模块,用于在所述第一判断模块确定所述第一侦听请求不是所述第一NC向所述第一远端节点发送第二数据访问请求之后接收的,则所述第一NC向所述本地节点中每个处理器发送所述第一侦听消息。
11.根据权利要求10所述的节点控制器,其特征在于,所述节点控制器还包括:
第二接收单元,用于所述第二处理器发送的第二数据访问请求,所述第二数据访问请求携带第二数据访问地址和访问类型;
第三判断单元,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项;
执行单元,用于在所述第三判断单元确定所述第二数据访问请求为独占请求且所述第一目录中不存在所述第二数据访问地址对应的目录项时,则在所述第一目录中选择一个空闲目录项用于记录所述第二数据访问请求对应的目录内容,并向所述第一远端节点发送所述独占请求;所述独占请求用于指示若所述第一远端节点的NC在确定第二目录中存在所述第二数据访问地址对应的目录项且所述目录项上的目录内容指示所述第二数据访问地址对应的内存数据在所述本地节点中缓存时,向所述本地节点发送第一侦听请求;其中,所述第二目录为所述第一远端节点的NC管理的目录,所述第二目录用于记录远端节点的内存数据在本地节点中的缓存情况。
12.根据权利要求9所述的节点控制器,其特征在于,所述第二判断单元,包括:
接收模块,用于接收所述本地节点中第三处理器发送的第二数据访问请求,所述第二数据访问请求包含第二数据访问地址以及访问类型;
第二判断模块,用于判断所述第二数据访问请求是否为独占请求且所述第一目录中是否存在所述第二数据访问地址对应的目录内容;
确定模块,用于在所述第二判断模块确定所述第二数据访问请求为独占请求,且所述第一目录中存在所述第二数据访问地址对应的目录内容,所述目录内容指示所述第二数据访问地址对应的内存数据为共享态时,则确定接收到第一侦听请求。
13.根据权利要求12所述的节点控制器,其特征在于,所述发送单元,包括:
确定模块,用于根据所述第一目录中所述第二数据访问地址对应的目录内容确定所述本地节点中缓存所述第二数据访问地址对应的内存数据的处理器;
第三发送模块,用于向所述本地节点中缓存所述第二数据访问地址对应的内存数据的每个所述处理器发送所述第一侦听消息。
14.根据权利要求9所述的节点控制器,其特征在于,所述节点控制器还包括:
第三接收单元,用于接收第二处理器发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述发送单元还用于,向第一远端节点发送所述第三数据访问请求,以使得所述第一远端节点根据所述第三数据访问请求将所述第二数据访问地址对应的内存数据回写至所述第二数据访问地址对应的内存数据所在的处理器,并清除所述第二数据访问地址在第二目录中对应的目录内容。
15.一种节点控制器,其特征在于,所述节点控制器包括:
第一接收单元,用于接收第二数据访问请求,所述第一数据访问请求携带有第一访问地址和访问类型;
判断单元,用于判断所述第二数据访问请求是否为独占请求且在所述第一目录中是否存在所述第一访问地址对应的目录内容以及所述第一访问地址对应的目录内容指示所述第一访问地址对应的内存数据是否为共享态;
发送单元,用于若所述判断单元确定所述第二数据访问请求为独占请求且在所述第一目录中存在所述第一访问地址对应的目录内容,所述第二数据访问地址对应的目录内容指示所述第二数据访问地址对应的内存数据为共享态,则向缓存所述第二数据访问地址对应的内存数据的本地节点发送第一侦听请求,所述第一侦听请求用于指示第一NC清除掉本地节点中第二数据访问地址对应的内存数据。
16.根据权利要求15所述的节点控制器,其特征在于,所述节点控制器还包括:
第二接收单元,用于接收所述本地节点发送的第三数据访问请求,所述第三数据访问请求用于回写第二数据访问地址对应的内存数据;
所述判断单元还用于,判断所述第二目录中是否存在所述第二数据访问地址对应的目录内容;
清除单元,用于在所述判断单元确定所述第二目录中存在所述第二数据访问地址对应的目录内容时,清除掉第二数据访问地址在第二目录中对应的目录内容,并将所述第二数据访问地址对应的内存数据回写至第一处理器中,所述第一处理器为所述第二数据访问地址对应的内存数据所在的处理器。
17.一种多处理器系统,其特征在于,所述多处理器系统包括本地节点和至少一个远端节点,所述本地节点中的节点控制器采用如权利要求9-14任意一项所述的节点控制器,所述远端节点中的节点控制器采用如权利要求15或16所述的节点控制器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610283694.3A CN107341114B (zh) | 2016-04-29 | 2016-04-29 | 一种目录管理的方法、节点控制器和系统 |
EP17168595.1A EP3239847A1 (en) | 2016-04-29 | 2017-04-28 | Directory-based coherence method, node controller, and system |
US15/581,599 US20170315916A1 (en) | 2016-04-29 | 2017-04-28 | Directory management method, node controller, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610283694.3A CN107341114B (zh) | 2016-04-29 | 2016-04-29 | 一种目录管理的方法、节点控制器和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341114A true CN107341114A (zh) | 2017-11-10 |
CN107341114B CN107341114B (zh) | 2021-06-01 |
Family
ID=58745000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610283694.3A Active CN107341114B (zh) | 2016-04-29 | 2016-04-29 | 一种目录管理的方法、节点控制器和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170315916A1 (zh) |
EP (1) | EP3239847A1 (zh) |
CN (1) | CN107341114B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019140885A1 (zh) * | 2018-01-19 | 2019-07-25 | 华为技术有限公司 | 一种目录处理方法、装置及存储系统 |
CN113553274A (zh) * | 2020-04-24 | 2021-10-26 | 江苏华创微系统有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521112B2 (en) * | 2017-03-17 | 2019-12-31 | International Business Machines Corporation | Layered clustered scale-out storage system |
CN109309615B (zh) * | 2017-07-27 | 2020-07-07 | 华为技术有限公司 | 传输数据的方法和设备 |
US11836085B2 (en) | 2021-10-29 | 2023-12-05 | Advanced Micro Devices, Inc. | Cache line coherence state upgrade |
CN116962259B (zh) * | 2023-09-21 | 2024-02-13 | 中电科申泰信息科技有限公司 | 一种基于监听-目录两层协议的一致性处理方法及系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160226A1 (en) * | 2004-01-20 | 2005-07-21 | International Business Machines Corporation | Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches |
CN1869956A (zh) * | 2005-05-24 | 2006-11-29 | 国际商业机器公司 | 数据处理系统中的数据处理的方法和装置 |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN102063406A (zh) * | 2010-12-21 | 2011-05-18 | 清华大学 | 用于多核处理器的网络共享Cache及其目录控制方法 |
US20120144122A1 (en) * | 2010-12-07 | 2012-06-07 | Advanced Micro Devices, Inc. | Method and apparatus for accelerated shared data migration |
CN102521163A (zh) * | 2011-12-08 | 2012-06-27 | 华为技术有限公司 | 目录替换方法及设备 |
CN103179185A (zh) * | 2012-12-25 | 2013-06-26 | 中国科学院计算技术研究所 | 一种分布式文件系统客户端缓存中文件创建方法及其系统 |
US20130297879A1 (en) * | 2012-05-01 | 2013-11-07 | International Business Machines Corporation | Probabilistic associative cache |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和系统 |
US20150254184A1 (en) * | 2014-03-04 | 2015-09-10 | Huawei Technologies Co., Ltd. | Directory Maintenance Method and Apparatus |
CN105045729A (zh) * | 2015-09-08 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 一种远端代理带目录的缓存一致性处理方法与系统 |
US20160048427A1 (en) * | 2013-09-04 | 2016-02-18 | DataGravity, Inc. | Virtual subdirectory management |
US20160062891A1 (en) * | 2014-08-29 | 2016-03-03 | International Business Machines Corporation | Cache backing store for transactional memory |
-
2016
- 2016-04-29 CN CN201610283694.3A patent/CN107341114B/zh active Active
-
2017
- 2017-04-28 EP EP17168595.1A patent/EP3239847A1/en not_active Ceased
- 2017-04-28 US US15/581,599 patent/US20170315916A1/en not_active Abandoned
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160226A1 (en) * | 2004-01-20 | 2005-07-21 | International Business Machines Corporation | Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches |
CN1869956A (zh) * | 2005-05-24 | 2006-11-29 | 国际商业机器公司 | 数据处理系统中的数据处理的方法和装置 |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
US20120144122A1 (en) * | 2010-12-07 | 2012-06-07 | Advanced Micro Devices, Inc. | Method and apparatus for accelerated shared data migration |
CN102063406A (zh) * | 2010-12-21 | 2011-05-18 | 清华大学 | 用于多核处理器的网络共享Cache及其目录控制方法 |
CN102521163A (zh) * | 2011-12-08 | 2012-06-27 | 华为技术有限公司 | 目录替换方法及设备 |
US20130297879A1 (en) * | 2012-05-01 | 2013-11-07 | International Business Machines Corporation | Probabilistic associative cache |
CN103179185A (zh) * | 2012-12-25 | 2013-06-26 | 中国科学院计算技术研究所 | 一种分布式文件系统客户端缓存中文件创建方法及其系统 |
US20160048427A1 (en) * | 2013-09-04 | 2016-02-18 | DataGravity, Inc. | Virtual subdirectory management |
US20150254184A1 (en) * | 2014-03-04 | 2015-09-10 | Huawei Technologies Co., Ltd. | Directory Maintenance Method and Apparatus |
US20160062891A1 (en) * | 2014-08-29 | 2016-03-03 | International Business Machines Corporation | Cache backing store for transactional memory |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和系统 |
CN105045729A (zh) * | 2015-09-08 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 一种远端代理带目录的缓存一致性处理方法与系统 |
Non-Patent Citations (1)
Title |
---|
张骏等: "基于节点预测的直接Cache一致性协议", 《计算机学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019140885A1 (zh) * | 2018-01-19 | 2019-07-25 | 华为技术有限公司 | 一种目录处理方法、装置及存储系统 |
CN110059026A (zh) * | 2018-01-19 | 2019-07-26 | 华为技术有限公司 | 一种目录处理方法、装置及存储系统 |
CN110059026B (zh) * | 2018-01-19 | 2021-06-29 | 华为技术有限公司 | 一种目录处理方法、装置及存储系统 |
US11372759B2 (en) | 2018-01-19 | 2022-06-28 | Huawei Technologies Co., Ltd. | Directory processing method and apparatus, and storage system |
CN113553274A (zh) * | 2020-04-24 | 2021-10-26 | 江苏华创微系统有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
CN113553274B (zh) * | 2020-04-24 | 2023-09-12 | 江苏华创微系统有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107341114B (zh) | 2021-06-01 |
EP3239847A1 (en) | 2017-11-01 |
US20170315916A1 (en) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341114A (zh) | 一种目录管理的方法、节点控制器和系统 | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US10430338B2 (en) | Selectively reading data from cache and primary storage based on whether cache is overloaded | |
KR101786871B1 (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
CN110377436A (zh) | 持久性内存的数据存储访问方法、设备及装置 | |
CN103076992B (zh) | 一种内存数据缓冲方法及装置 | |
CN104809076B (zh) | Cache的管理方法及装置 | |
US20020156980A1 (en) | Designing a cache with adaptive reconfiguration | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
US7039765B1 (en) | Techniques for cache memory management using read and write operations | |
CN103984644B (zh) | 一种数据管理方法及装置 | |
EP2478442A1 (en) | Caching data between a database server and a storage system | |
CN111338561B (zh) | 存储器控制器与存储器页面管理方法 | |
CN109446114A (zh) | 一种空间数据缓存方法、装置和存储介质 | |
US10877902B2 (en) | Cuckoo caching | |
CN110442533A (zh) | 一种提高访问性能的方法、设备及存储介质 | |
CN107133183B (zh) | 一种基于tcmu虚拟块设备的缓存数据访问方法及系统 | |
CN112148736A (zh) | 缓存数据的方法、设备及存储介质 | |
CN109478164A (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN108733584B (zh) | 用于优化数据缓存的方法和设备 | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
CN108664217A (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN113157606A (zh) | 一种缓存器实现方法、装置和数据处理设备 | |
JPH11143779A (ja) | 仮想記憶装置におけるページング処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |