CN103544269A - 目录的存储方法、查询方法及节点控制器 - Google Patents
目录的存储方法、查询方法及节点控制器 Download PDFInfo
- Publication number
- CN103544269A CN103544269A CN201310487653.2A CN201310487653A CN103544269A CN 103544269 A CN103544269 A CN 103544269A CN 201310487653 A CN201310487653 A CN 201310487653A CN 103544269 A CN103544269 A CN 103544269A
- Authority
- CN
- China
- Prior art keywords
- content
- storage space
- address
- catalogue
- storage
- 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
Images
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/0824—Distributed directories, e.g. linked lists of caches
-
- 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
-
- 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/27—Using a specific cache architecture
- G06F2212/271—Non-uniform cache access [NUCA] architecture
-
- 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/622—State-only directory, i.e. not recording identity of sharing or owning nodes
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种目录的存储方法及存储目录的节点控制器,用以解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题。方法包括:本地节点中的节点控制器NC获得被远端节点读取的数据块在本地节点中的CPU中的存储地址;确定分别位于存储地址的第一特定位和第二特定位的第一内容和第二内容;根据第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与第一内容相匹配的存储空间;在确定出的存储空间中,对应存储第二内容以及目录。本发明实施例还提供一种目录的查询方法及查询目录的节点控制器。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种目录的存储方法、查询方法及节点控制器。
背景技术
在由高性能的中央处理器(Central Processing Unit,CPU,后文也简称处理器)组建的缓存一致性非对称存储器访问(Cache Coherence Non-UniformMemory Access,CC-NUMA)***中,由于CPU本身的对接扩展能力有限,所以需要将CC-NUMA***中的多个CPU划分到不同节点(Node)中,再由节点控制器(Node Controller,NC)进行多CPU扩展,以增加可并行运行的CPU个数,从而提升CC-NUMA***的性能。
一个简单的CC-NUMA***的结构示意图如图1所示。图1所示的CC-NUMA***共包含N+1个节点,分别为Node0~NodeN。以Node0为例,其包含一个NC以及由该NC控制的n个CPU。其中,每个CPU都有自己的高速缓冲存储器(Cache),该Cache具体可以为L3Cache,即图1中标示的L3。此外,每个CPU还可以进行内存扩展,比如可以在CPU原有内存的基础上,通过新增如图1所示的双列直插内存模组(Dual in-line memory module,DIMM)来实现对CPU的内存扩展。
在图1所示的***中,每个CPU都有自己的L3Cache,并且可以进行内存扩展,该***中的任意CPU可以对该***中的除该CPU外的其他CPU的内存进行一致性访问。
按照现有技术,针对每个NC而言,其需要通过保存如图1所示的Dir即目录(Directory),来实现记录该NC所在节点内的CPU内存中的数据被其他节点(即不同于该NC所在节点的其他节点,也称远端节点)的CPU缓存的情况,以维护不同节点间的数据一致性。比如,假设Node1中的CPU缓存了Node0中的CPU的内存中的某数据,则控制Node0的NC需要利用一个Dir来记录该数据被Node1缓存这一情况,并在该目录中对Node1中的CPU对该数据的占用状态(可能为共享或独占)进行标示。由于对CPU的内存扩展可能使得CPU具有容量非常大的内存,因此,为了实现对远端节点对于CPU的内存中的数据的缓存情况进行充分记录,维护目录的NC上通常也可以通过新增DIMM的方式来实现对目录的存储空间进行扩展,以满足大量的目录对于存储空间的需求量。
一般地,目录与CPU的内存中的数据量的对应关系是:一条目录对应CPU内存中的一个缓存块(Cache Line),即每一条目录记载的是一个Cache Line的数据被远端节点缓存的情况。其中,一个Cache Line的数据量大小可以是512bit。
以Ivy-Bridge EX这一CPU为例,其L3Cache的容量为37.5MB,从而每个这样的CPU实际可以缓存的Cache Line的最大个数为37.5MB/64B=600K个。对于一个32P的CC-NUMA***,即共包含32个CPU的CC-NUMA***而言,由于针对该***中的任何一个节点,其对应的所有远端节点共包含30个CPU,从而该节点的NC总共需要维护的目录的最大个数为30×600K=18M个。由于对于任何一个CPU而言,其对于远端节点中数据的缓存状态是处于变化中的,因此这也就使得NC维护的目录处于动态变化中。仍然以该32P的CC-NUMA***为例,假设某节点中CPU的数据X被远端节点进行缓存的情况发生了变化,那么该节点中NC所维护的目录就需要发生相应变化。特别地,在该NC所维护的目录已达到最大个数的情况下,为了实现对数据X所对应的目录进行保存,该NC只能通过删除掉某条目录的方式,为数据X所对应的目录释放出存储空间,并通知该目录中记录的CPU对相应的数据进行删除。
由上述目录的更新方式可以看出,若NC用于维护目录的存储空间过小,势必导致CC-NUMA***中频繁出现通知CPU删除其缓存的远端节点的数据的情况,从而会严重影响CPU对于其缓存的远端节点的数据的使用。
为了避免上述问题,现有技术中提出了“全目录技术”。该技术的核心思想在于,按照CPU的最大内存量,在NC上预留该最大内存量所能支持的最大个数的Cache Line所对应的目录存储空间。比如,若假设一个节点控制两个CPU,且这两个CPU在分别经内存扩展后其内存容量总和为2TB,且假设512bit为一个Cache Line的数据量,那么,为了避免目录存储空间的不足而导致对CPU对于从远端节点获取到的数据的使用产生影响,需要在NC上为CPU中的每个Cache Line所分别对应的每个目录预留存储空间,即NC上需要存储的目录条数应为2TB/64Byte=32G。按照这样的需求,如果假设一个目录的大小为8bit,则NC上需要有32GByte的存储空间,这无疑会产生非常大的存储资源需求量。
发明内容
本发明实施例提供一种目录的存储方法及存储目录的节点控制器,用以解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题。
本发明实施例还提供一种目录的查询方法及查询目录的节点控制器。
本发明实施例采用以下技术方案:
第一方面,提供一种目录的存储方法,所述目录用于记录远端节点对于本地节点中的中央处理器CPU中的数据块的缓存情况,包括:所述本地节点中的节点控制器NC获得所述CPU中被所述远端节点读取的所述数据块在所述CPU中的存储地址;确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间;在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
结合第一方面,在第一种可能的实现方式中,所述第一内容包含第一索引部分和第二索引部分;则根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间,具体包括:根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与所述第一索引部分相匹配的存储空间集合;根据所述第二索引部分,从确定出的所述存储空间集合中,确定寻址地址与所述第二索引部分相匹配的存储空间。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录,具体包括:从预先按照预定存储空间划分方式对确定出的所述存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;在确定出的所述存储子空间中,对应存储所述第二内容以及所述目录。
结合第一方面,在第三种可能的实现方式中,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录,具体包括:判断确定出的所述存储空间中是否已存储有其他目录;在判断结果为否时,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录;在判断结果为是时,释放确定出的所述存储空间后,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
第二方面,提供一种目录的查询方法,包括:本地节点中的节点控制器NC获得数据块在本地节点中的中央处理器CPU中的存储地址;确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间;根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中,查询与所述第二内容对应存储的目录;其中,所述目录用于记录远端节点对于所述数据块的缓存情况。
结合第二方面,在第一种可能的实现方式中,所述第一内容包含第一索引部分和第二索引部分;则根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间,具体包括:根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与所述第一索引部分相匹配的存储空间集合;根据所述第二索引部分,从查询到的寻址地址与所述第一索引部分相匹配的存储空间集合中,查询寻址地址与所述第二索引部分相匹配的存储空间。
结合第二方面,或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中查询所述目录,具体包括:根据所述第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与所述第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与所述第二内容对应存储的所述目录。
第三方面,提供一种存储目录的节点控制器,所述目录用于记录远端节点对于本地节点中的中央处理器CPU中的数据块的缓存情况,其中,所述本地节点为所述节点控制器所在的节点,所述节点控制器包括:地址获得单元,用于获得所述CPU中被所述远端节点读取的所述数据块在所述CPU中的存储地址;内容确定单元,用于确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;存储空间确定单元,用于根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间;目录存储执行单元,用于在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
结合第三方面,在第一种可能的实现方式中,所述第一内容包含第一索引部分和第二索引部分;所述存储空间确定单元具体用于:根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与所述第一索引部分相匹配的存储空间集合;根据所述第二索引部分,从确定出的所述存储空间集合中,确定寻址地址与所述第二索引部分相匹配的存储空间。
结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述目录存储执行单元具体用于:从预先按照预定存储空间划分方式对确定出的所述存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;在确定出的所述存储子空间中,对应存储所述第二内容以及所述目录。
结合第三方面,在第三种可能的实现方式中,所述目录存储执行单元具体用于:判断确定出的所述存储空间中是否已存储有其他目录;在判断结果为否时,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录;在判断结果为是时,释放确定出的所述存储空间后,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
第四方面,提供一种查询目录的节点控制器,包括:存储地址获得单元,用于获得数据块在中央处理器CPU中的存储地址;其中,所述CPU为所述节点控制器所在的本地节点中的CPU;内容确定单元,用于确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;存储空间查询单元,用于根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间;目录查询单元,用于根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中,查询与所述第二内容对应存储的目录;其中,所述目录用于记录远端节点对于所述数据块的缓存情况。
结合第四方面,在第一种可能的实现方式中,所述第一内容包含第一索引部分和第二索引部分;所述存储空间查询单元具体用于:根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与所述第一索引部分相匹配的存储空间集合;根据所述第二索引部分,从查询到的寻址地址与所述第一索引部分相匹配的存储空间集合中,查询寻址地址与所述第二索引部分相匹配的存储空间。
结合第四方面,或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述目录查询单元具体用于:根据所述第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与所述第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与所述第二内容对应存储的所述目录。
本发明实施例的有益效果如下:
本发明实施例提供的上述方案中,由于第一特定位的位数被设置为大于预先规定的位数阈值,且小于数据的存储地址的总位数,且按照该位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和,从而按照第一特定位的位数进行寻址时,其所能寻址的不同寻址地址的最大个数不会超过按照数据的存储地址的位数所能寻址的不同寻址地址的最大个数,同时其所能寻址的不同寻址地址的最大个数也不会小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。因此与现有技术中的全目录技术相比,本发明实施例提供的该方案在减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响的同时,大大减小了目录对于存储资源的需求量。
附图说明
图1为一个简单的CC-NUMA***的结构示意图;
图2为本发明实施例提供的一种目录的存储方法的具体流程示意图;
图3为本发明实施例提供的一种目录的查询方法的具体流程示意图;
图4为实施例1中采用的CPU DIMM和NC DIMM的映射方式;
图5为Way0~Way15中的任意存储子空间所存储的信息的格式示意图;
图6为用于存储Dir的7个bit的划分示意图;
图7为如图1所示的CC-NUMA***中的一个简单的跨节点的数据读操作的实现流程示意图;
图8为Node1的CPU发起对Node0的CPU的内存地址A的读请求的示意图;
图9为从内存地址A的不同位中选取内容分别作为Index、Mux和Tag的示意图;
图10为NC0中设置的协议处理引擎和存储控制器的示意图;
图11为实施例1中的寻址方式示意图;
图12为实施例2中的Cache Line的地址与NC DIMM中的存储空间的地址的映射方式示意图;
图13为实施例2中的存储空间被划分为8个存储子空间的示意图;
图14为实施例3中的Cache Line的地址与NC DIMM中的存储空间的地址的映射方式示意图;
图15为本发明实施例提供的一种存储目录的NC的具体结构示意图;
图16为本发明实施例提供的一种查询目录的NC的具体结构示意图;
图17为本发明实施例提供的另一种存储目录的NC的具体结构示意图;
图18为本发明实施例提供的另一种查询目录的NC的具体结构示意图。
具体实施方式
为了解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题,本发明实施例提供了一种目录的存储方法及存储目录的节点控制器。以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限制本发明。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
首先,本发明实施例提供一种目录的存储方法,该方法的具体流程示意图如图2所示,主要包括下述步骤:
步骤21,本地节点中的NC获得本地节点中的CPU中被远端节点读取的数据块在该CPU中的存储地址;
比如,可以从远端节点发送来的数据访问请求中,获得远端节点欲访问的数据块在CPU中的存储地址。该存储地址可以为16位或32位等等,本发明实施例对此不做限定。
本发明实施例中,步骤21可以是由远端节点发送来的数据访问请求触发执行的,也可以是在判断出远端节点实现对其欲访问的数据块的成功访问后才执行的,等等,本发明实施例对此也不做限定。
步骤22,NC确定分别位于获得的该存储地址的第一特定位和第二特定位的第一内容和第二内容;
其中,本发明实施例对第一特定位和第二特定位的位数可以不做限定。但需要说明的是,位于第一特定位的该第一内容和位于第二特定位的该第二内容至少共同包括该存储地址的所有内容。比如,当该存储地址为0000000000000001时,该第一内容和第二内容应共同覆盖该存储地址的所有内容,即应覆盖“0000000000000001”。具体地,比如第一内容可以为位于该存储地址的高8位的内容“00000000”,而该第二内容可以为位于该存储地址的低八位的内容“00000001”;或者,比如第一内容可以为位于该存储地址的高10位的内容“0000000000”,而该第二内容可以为位于该存储地址的低八位的内容“00000001”。
本发明实施例中,通过第一特定位和第二特定位中的内容至少共同包括该存储地址的所有内容,可以使得无论针对哪个数据块的存储地址而言,由第一特定位和第二特定位中的内容,均可以实现共同唯一映射一个目录。具体映射方式请参见后文的步骤23和步骤24,在此不再赘述。
此外需要说明的是,第一特定位的位数可以大于预先规定的位数阈值,同时小于获得的该存储地址的总位数。其中,该位数阈值满足:按照该位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。由对第一特定位的位数的该限定可知,与现有技术中的全目录技术相比,按照第一特定位的位数进行寻址的不同寻址地址的最大个数,不会超过按照数据块的存储地址的位数所能寻址的不同寻址地址的最大个数。
步骤23,根据确定的第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与第一内容相匹配的存储空间;
上述预先设置的用于存储目录的存储空间的总个数可以等于根据第一特定位的位数可寻址的不同寻址地址的总个数。
根据上文可知,第一特定位的位数满足:大于预先规定的位数阈值,同时小于获得的该存储地址的总位数。根据该条件可知,按照第一特定位的位数进行寻址的不同寻址地址的最大个数,不会超过按照数据块的存储地址的位数所能寻址的不同寻址地址的最大个数,同时其所能寻址的不同寻址地址的最大个数也不会小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。从而与现有技术中的全目录技术相比,本发明实施例提供的该方案在减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响的同时,大大减小了目录对于存储资源的需求量。
步骤24,在确定出的具备与第一内容相匹配的寻址地址的存储空间中,对应存储第二内容以及CPU中被远端节点读取的该数据块所对应的目录。
本发明实施例中,该数据块所对应的目录即表征该数据块在远端节点的缓存情况的信息。与该目录对应存储的该第二内容主要用于后续当需要对该目录进行查询时,可以与位于第一特定位的第一内容共同作为唯一确定该条目录的存储位置的依据。具体实现对目录进行查询的过程可以参见本说明书后文中介绍的一种目录的查询方法。
可选的,本发明实施例提供的该方法中,第一内容可以包含第一索引部分和第二索引部分。基于第一索引部分和第二索引部分,上述步骤23的具体实现方式可以包括:
首先,根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与第一索引部分相匹配的存储空间集合;
然后,再根据第二索引部分,从确定出的存储空间集合中,确定寻址地址与第二索引部分相匹配的存储空间。
举例而言,假设该第二索引部分的位数为1,那么根据第二索引部分的位数可寻址的不同寻址地址的总个数为2。由此可以得出,寻址地址与第一索引部分相匹配的存储空间集合包含两个存储空间,其分别具备寻址地址1和0。在这样的场景下,当第二索引部分为0时,就可以从上述两个存储空间中,确定具备寻址地址“0”的存储空间,作为对应存储第二内容和被远端节点读取的该数据块所对应的目录的存储空间。
本发明实施例中,可以灵活设置该第二索引部分的位数,从而实现对存储空间的灵活划分。本发明实施例对第二索引部分的具***数不做限定。
进一步地,本发明实施例中,存储空间还可以进一步划分为多个存储子空间,而第二内容和与上述数据块对应的目录可以存储在某个存储子空间中。具体地,在确定出的上述存储空间中对应存储第二内容以及该数据块所对应的目录的实现过程可以包括:
首先,从预先按照预定存储空间划分方式对确定出的存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;
然后,在确定出的该存储子空间中,对应存储第二内容以及该数据块所对应的目录。
比如,假设按照第一内容中的第一索引部分而寻址到的寻址地址所指向的存储空间集合的大小为512bit,且假设第一内容中的第二索引部分的位数为1。那么,该存储空间集合实际包含两个存储空间。若进一步假设一个存储空间可以被划分为16个大小相等的存储子空间,那么在对第二内容和目录进行存储时,可以从该16个存储子空间中选取一个存储子空间,然后在该存储子控件部分中对应存储该第二内容和目录。
需要说明的是,采用本发明实施例提供的方案,在确定出的存储空间中对应存储第二内容以及目录时,可能会出现根据第一内容所寻址到的存储空间已满的情况。为了在这样的情况下实现对目录的成功存储,前文所述的步骤24的具体实现方式可以包括:
首先,判断确定出的寻址地址与第一内容相匹配的存储空间中是否已存储有其他目录;
然后,若判断结果为否,则在确定出的该存储空间中对应存储第二内容以及被远端节点所访问的该数据块所对应的目录;而若判断结果为是,则在释放确定出的存储空间后,再在该存储空间中对应存储第二内容以及该数据块所对应的目录。
通过本发明实施例提供的上述方法,由于第一特定位的位数被设置为大于预先规定的位数阈值,且小于数据块的存储地址的总位数,从而按照第一特定位的位数进行寻址时,其所能寻址的不同寻址地址的最大个数不会超过按照数据块的存储地址的位数所能寻址的不同寻址地址的最大个数,同时其所能寻址的不同寻址地址的最大个数也不会小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和,从而与现有技术中的全目录技术相比,本发明实施例提供的该方案在减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响的同时,大大减小了目录对于存储资源的需求量。
出于与本发明实施例提供的一种目录的存储方法相同的发明构思,本发明实施例还提供一种目录的查询方法,该方法具体包括如图3所示的下述步骤:
步骤31,本地节点中的NC获得数据块在本地节点中的CPU中的存储地址;
步骤32,确定分别位于该存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,该第一内容和该第二内容至少共同包括该存储地址的所有内容;并且,第一特定位的位数满足:大于预先规定的位数阈值,且小于该存储地址的总位数;该位数阈值满足:按照该位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
步骤33,根据第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与第一内容相匹配的存储空间;其中,预先设置的存储空间的总个数一般可以等于根据第一特定位的位数可寻址的不同寻址地址的总个数;
步骤34,根据第二内容,从查询到的寻址地址与第一内容相匹配的存储空间中,查询与第二内容对应存储的目录。其中,这里所述的目录用于记录远端节点对于步骤31中所述的数据块的缓存情况。
可选的,若第一内容包含第一索引部分和第二索引部分,那么上述步骤33的具体实现方式可以包括如下步骤:
首先,根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与第一索引部分相匹配的存储空间集合;
然后,根据第二索引部分,从查询到的寻址地址与第一索引部分相匹配的存储空间集合中,查询寻址地址与第二索引部分相匹配的存储空间。
可选的,若存储空间被按照预定存储空间划分方式进行了划分,那么,步骤34的具体实现过程可以包括:
根据第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与第二内容对应存储的目录。
为了具体说明本发明实施例提供的上述方案在实际中的应用,以下着重介绍该方案在实际中的两个具体的实施例。
实施例1
在实施例1中,假设用作对CPU的内存进行扩展的DIMM(后文简称CPUDIMM)中每512Bit的数据构成一个Cache Line(即相当于前文所说的数据块),且每个Cache Line均唯一对应CPU的一个存储地址。此外,假设当Cache Line的数据被远端节点访问后,该CPU节点的NC需要在自身的存储空间中存储一条相应的目录,以记录Cache Line的数据被远端节点缓存的情况,比如需要记录该数据被哪个远端节点缓存,以及该远端节点对该数据是独占还是与其他远端节点共享,等等。
在上述场景下,为了解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题,实施例1中按照如图4所示的映射方式,对CPU DIMM与用于对NC的存储空间进行扩展的DIMM(后文简称NC DIMM)进行了映射。对图4的说明如下:
NC DIMM上每个可存储512Bit的数据的存储空间集合均包含2个16路组相联的存储空间,后文统称该存储空间为Cache。进一步地,每个Cache又被分划分成了16个部分,其中每部分相当于前文所述的存储子空间,其标识分别为Way0~Way15。Way0~Way15可称为16路的目录存储器。
图4中,CPU DIMM中的存储空间与NC DIMM中的存储空间集合的映射方式包括:CPU DIMM中的每个Cache Line所分别唯一对应的存储地址中,处于第一特定位中的第一索引内容被用作对NC DIMM中的各个可存储512Bit的数据的存储空间集合进行寻址的寻址地址,也称Index;而CPU DIMM中的每个Cache Line所分别唯一对应的存储地址中,处于第一特定位中的第二索引内容被用作对NC DIMM中的各个可存储512Bit的数据的存储空间集合所包含的存储空间进行寻址的寻址地址,也称Mux。此外,CPU DIMM中的每个CacheLine所分别唯一对应的存储地址中,处于第二特定位的内容被用作与目录对应存储在NC DIMM中的内容。其中,该第二特定位中的内容可称为Tag。需要说明的是,第一特定位中的内容(即本发明实施例中所述的第一内容)和第二特定位中的内容(即本发明实施例中所述的第二内容)至少共同包括数据的存储地址的所有内容,以使得根据第一内容和第二内容,可以唯一确定一条存储地址,即唯一确定一条目录的存储空间。
通过如图4所示的映射方式,首先可以实现根据Index建立CPU DIMM中的多个Cache Line所分别对应的存储地址与NC DIMM中的同一存储空间集合的地址的映射关系;进一步地,若需要对该存储空间集合进行细分,则可以根据Mux建立CPU DIMM中的多个Cache Line所分别对应的存储地址与该存储空间集合所包含的存储空间的映射关系;再进一步地,还可以根据Tag建立CPU DIMM中的多个Cache Line所分别对应的存储地址与该存储空间集合所包含的存储子空间的映射关系。
通过如图4所示的映射方式,相当于将NC DIMM的深度扩展了2倍,而宽度则缩小了1/2。
实施例1中,Way0~Way15中的任意存储子空间所存储的信息的格式如图5所示。图5中,每个存储子空间中所存储的信息包括:1Bit的目录状态指示标志V,8Bit的Tag,7Bit的Dir。对图5的具体说明如下:
目录状态指示标志V,用于表征与该有效标志同处一个存储子空间中的目录是否处于有效状态。一般说来,在NC中未存储有任何目录的初始阶段,NCDIMM中的所有目录状态指示标志V均用于分别表征相应的目录处于无效状态。
Tag即前文所述的第二内容。由于在实施例1中,NC DIMM的一个存储空间集合会映射超过32个Cache Line所对应的目录,因此针对多个Cache Line所分别对应的存储地址而言,在根据从存储地址中确定出的Index和Mux来寻址存储空间时,可能会出现的多个Cache Line所分别对应的存储地址会同时映射同一存储空间的情况。在这样的情况下,就需要进一步进行Tag的匹配,从而根据实现Index、Mux和Tag唯一定位出一个Cache Line对应的目录。
Dir即目录。用于存储Dir的7bit中,可以分配1bit来作为状态位state,对用于表征数据处于独占或共享状态的信息进行存储;而此外的6bit则用于存储用于表征数据在远端节点中的存储位置的信息。具体用于存储Dir的7个bit的划分示意图如图6所示。其中,用于表征数据在远端节点中的存储位置的信息是一个长度为6bit的向量vector。
基于实施例1中的上述映射关系,如图1所示的CC-NUMA***中的一个简单的跨节点的数据读操作的实现流程如图7所示。需要说明的是,该数据读操作具体是指Node1的CPU发起对Node0的CPU的内存地址A的读请求,如图8所示。
具体地,图7所示的跨节点的数据读操作的实现流程具体包括下述主要步骤:
步骤71,在CC-NUMA***的初始状态下,节点Node1的CPU发起对Node0的CPU内存地址A的读请求,其中,该读请求中包含指向一个Cache Line所唯一对应的地址A;
实施例1中,可以假设CC-NUMA***在初始状态时,所有的目录状态指示标志V均分别表征相应的目录处于无效状态。
步骤72,NC0在接收到内存地址A的读请求后,由于查询到所有的目录状态指示标志V均分别表征相应的目录处于无效状态,即还没有任何的远端节点缓存内存地址A中保存的数据的副本,从而向NC0所控制的CPU发起内存地址A的读请求;
步骤73,存储有上述数据的CPU将自身的内存地址A中的数据返回给NC0,并由该NC0将该数据转发给节点Node1中的CPU;
步骤74,NC0按照如图9所示的选取方式,从内存地址A的不同位中选取内容分别作为Index、Mux和Tag,从而相当于得到一个如图9所示的重映射地址A’;
需要说明的是,本实施例1中,考虑到后续对于Node0的CPU中的CacheLine所对应的目录的查询往往会采用连续查询的方式,即其可能会对Node0的CPU的在地址上连续的多个Cache Line所对应的目录进行查询,因此,在对目录进行存储时,可以在内存地址A中选取一些位中的内容,作为图9中所示的“关联”这一内容。后续在对某个目录进行查询时,可以根据该“关联”的位数,一次性查询到多个目录并存储到Node0的内存中,以便于与连续查询的方式相匹配,从而提高查询效率。实施例1中,可以将“关联”视为Tag的一部分。
实施例1中,可以选取内存地址A的低位中的几位中的内容作为关联,比如选取[1:0]这两位中的内容作为“关联”,则针对内存地址A以及与内存地址A相似的多个内存地址而言,当该些内存地址中除[1:0]这两位外的其他位中的内容均相同时,[1:0]这两位中的内容分别为00、01、10和11的四个内存地址中保存的数据的目录会存储在NC DIMM中的、地址连续的存储子空间中。
此外,可以选取内存地址A中的部分高位中的内容作为Tag,这样可以保证在数据连续访问模式下,同一存储空间中的存储子空间不会被频繁竞争。
实施例1中,还可以选取内存地址A的1位中的内容作为Mux。一般地,不宜选取内存地址A中太高的位中的内容作为Mux。这是由于如果选取内存地址A中太高的位中的内容作为Mux,则可能使得CPU DIMM中内存地址连续的两个Cache Line所对应的目录最终被存储到地址之间的距离较远的不同存储空间中,从而不利于后续对于目录的连续查询。
步骤75,NC0根据通过执行步骤74而得到的重映射地址A’,对内存地址A中的数据所对应的目录进行存储;
具体地,根据重映射地址A’中的Index,可以在NC0DIMM中,确定一个存储空间集合;进而根据重映射地址A’中Mux,可以在确定出的该存储空间集合中进一步确定出一个存储空间;进一步地,就可以将Tag和内存地址A中的数据所对应的目录,存储到确定出的该存储空间中的一个存储子空间中。需要说明的是,在对Tag和目录进行存储后,该存储子空间中的目录状态指示标志V被设置为表征目录处于有效状态;并且,该存储子空间中的状态位state也根据上述数据处于独占或共享状态的信息被进行了设置;同时,向量vector也根据数据在远端节点中的存储位置的信息进行了设置。
实施例1中,在步骤75的执行过程中,当根据Index和Mux确定出了一个存储空间后,若NC0发现该存储空间所包含的所有存储子空间中的目录状态指示标志V当前已被设置为表征目录处于有效状态,即该存储空间已被占用,则NC0可以从该存储空间所包含的所有存储子空间中,选择并释放一个存储子空间,并将上述数据的目录和上述Tag存储到释放后的该存储子空间中,从而实现不同的目录之间对于存储子空间的“竞争”。
实施例1中,可以通过在NC0中设置如图10所示的协议处理引擎来完成对步骤75的实现。由于目录是存储于用于对NC0的内存进行扩展的NC0DIMM中,因此,NC0中还可以进一步设置一个如图10所示存储控制器,以实现后续对于目录的查询。
上述步骤71~步骤75执行完毕后,NC0即完成了对内存地址A中的数据所对应的目录的存储。以后进一步通过对后续步骤76和步骤77的介绍,说明如何实现对目录的查询。
步骤76,NC0获得待查询的目录所对应的CPU的内存地址A;
步骤77,NC0按照如图11所示的寻址方式,从NC0DIMM中,寻址与Index、Mux相匹配的NC0DIMM的存储空间,并在寻址到存储空间中,查询与Tag对应存储的目录,若查询到该存储空间中有与Tag对应存储的目录,则可以获取该目录,而若查询到该存储空间中没有与Tag对应存储的目录,则确定该目录未进行存储。
步骤77中,上述Index、Mux以及Tag均是根据内存地址A确定出的。
与现有技术中的全目录技术相比可知:按照现有技术,若假设每一个CacheLine都分别对应一个大小为8bit的目录,那么CPU DIMM的容量与NC DIMM的容量之比为64:1,即2TByte的CPU DIMM需要32GByte的NC DIMM;而采用本发明实施例1中的方案,在目录之间采用竞争的方式来实现存储的情况下,若Tag的长度为8bit,V的长度为1Bit,Dir的长度为7bit,那么CPU DIMM的容量与NC DIMM的容量之比为(32*2^4)/1=(2^9)/1,即2TByte的CPUDIMM只需要4GByte的NC DIMM。由此可见,采用本发明实施例提供的方案可以明显压缩目录对于NC DIMM的需求。
实施例2
相比于实施例1,实施例2与实施例1之间的主要差别在于Cache Line的地址与NC DIMM中的存储空间的地址的映射方式不同。
具体而言,实施例2中的Cache Line的地址与NC DIMM中的存储空间的地址的映射方式如图12所示。对于如图12所示的该映射关系的说明与前文对图4所示的映射关系的说明类似,在此不再赘述。
由图12所示的映射关系可知,在实施例2中,Mux的位数为2。这样,实施例2中的根据Index和Mux所寻址到的每个存储空间集合包含的是4个存储空间,其中,每个存储空间由被划分为8个存储子空间,如图13所示。
实施例2中,若假设每一个Cache Line都分别对应一个大小为8bit的目录、Tag的长度为8bit、V的长度为1Bit,Dir的长度为7bit,那么,CPU DIMM的容量与NC DIMM的容量之比为(32*2^5)/1=(2^10)/1,即2TByte的CPU DIMM只需要2GByte的NC DIMM。
实施例3
相比于实施例1和实施例2,实施例3与实施例1和实施例2之间的主要差别在于Cache Line的地址与NC DIMM中的存储空间的地址的映射方式不同。
具体而言,实施例3中的Cache Line的地址与NC DIMM中的存储空间的地址的映射方式如图14所示。对于图14所示的该映射关系的说明与前文对图4和图12所示的映射关系的说明类似,在此不再赘述。
由图14所示的映射关系可知,在实施例3中未从Cache Line的地址中选取内容作为Mux。这样,实施例3中的根据Index和Mux所寻址到的每个存储空间集合包含的是1个存储空间,其中,每个存储空间由被划分为32个存储子空间。
出于与本发明实施例提供的目录的存储方法相同的发明构思,本发明实施例还提供一种存储目录的NC,用以解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题。其中,这里所述的目录用于记录远端节点对于本地节点中的CPU中的数据块的缓存情况,该本地节点为该存储目录的NC所在的节点。具体地,该NC的具体结构示意图如图15所示,包括地址获得单元151、内容确定单元152、存储空间确定单元153和目录存储执行单元154。对该些单元的具体功能介绍如下:
地址获得单元151,用于获得CPU中被远端节点读取的数据块在CPU中的存储地址;
内容确定单元152,用于确定分别位于存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,第一内容和第二内容至少共同包括存储地址的所有内容;第一特定位的位数大于预先规定的位数阈值,且小于存储地址的总位数;位数阈值满足:按照位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
存储空间确定单元153,用于根据第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与第一内容相匹配的存储空间;
目录存储执行单元154,用于在确定出的存储空间中,对应存储第二内容以及目录。
可选的,当第一内容包含第一索引部分和第二索引部分时,存储空间确定单元153具体可以用于:根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与第一索引部分相匹配的存储空间集合;根据第二索引部分,从确定出的存储空间集合中,确定寻址地址与第二索引部分相匹配的存储空间。
可选的,目录存储执行单元154具体可以用于:从预先按照预定存储空间划分方式对确定出的存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;在确定出的存储子空间中,对应存储第二内容以及目录。
可选的,目录存储执行单元154具体可以用于:判断确定出的存储空间中是否已存储有其他目录;在判断结果为否时,在确定出的存储空间中,对应存储第二内容以及目录;在判断结果为是时,释放确定出的存储空间后,在确定出的存储空间中,对应存储第二内容以及目录。
出于本发明实施例提供的一种目录的查询方法的发明构思,本发明实施例还提供一种查询目录的NC,其具体结构示意图如图16所示,包括存储地址获得单元161、内容确定单元162、存储空间查询单元163和目录查询单元164。对于该些单元的功能介绍如下:
存储地址获得单元161,用于获得数据块在CPU中的存储地址;其中,这里所述的CPU为该查询目录的NC所在的本地节点中的CPU;
内容确定单元162,用于确定分别位于存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,第一内容和第二内容至少共同包括存储地址的所有内容;第一特定位的位数大于预先规定的位数阈值,且小于存储地址的总位数;位数阈值满足:按照位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
存储空间查询单元163,用于根据第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与第一内容相匹配的存储空间;
目录查询单元164,用于根据第二内容,从查询到的寻址地址与第一内容相匹配的存储空间中,查询与第二内容对应存储的目录;其中,该目录用于记录远端节点对于数据块的缓存情况。
可选的,当第一内容包含第一索引部分和第二索引部分时,存储空间查询单元163具体可以用于:
根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与第一索引部分相匹配的存储空间集合;
根据第二索引部分,从查询到的寻址地址与第一索引部分相匹配的存储空间集合中,查询寻址地址与第二索引部分相匹配的存储空间。
可选的,目录查询单元164具体可以用于:
根据第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与第二内容对应存储的目录。
出于与本发明实施例提供的目录的存储方法相同的发明构思,本发明实施例还提供一种存储目录的NC,用以解决现有技术中为了减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响,会导致产生非常大的存储资源需求量的问题。其中,这里所述的目录用于记录远端节点对于本地节点中的CPU中的数据块的缓存情况,该本地节点为该存储目录的NC所在的节点。具体地,该NC的具体结构示意图如图17所示,包括处理器171和存储器172。对该些功能实体的具体功能介绍如下:
处理器171,用于获得CPU中被远端节点读取的数据块在CPU中的存储地址;确定分别位于存储地址的第一特定位和第二特定位的第一内容和第二内容;根据第一内容,从预先设置的用于存储目录的存储器172的各个存储空间中,确定寻址地址与第一内容相匹配的存储空间;在确定出的存储空间中,对应存储第二内容以及目录;
存储器172,用于对所述第二内容以及目录进行存储。
其中需要说明的是:
第一内容和第二内容至少共同包括存储地址的所有内容;
第一特定位的位数大于预先规定的位数阈值,且小于存储地址的总位数;
该位数阈值满足:按照位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。
本发明实施例中,该NC也可以不包含存储器172,即用于存储目录的存储器也可以不作为该NC的一部分,而是以独立于NC外的存储器的形式存在。
可选的,当第一内容包含第一索引部分和第二索引部分时,处理器171具体可以用于:根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与第一索引部分相匹配的存储空间集合;根据第二索引部分,从确定出的存储空间集合中,确定寻址地址与第二索引部分相匹配的存储空间。
可选的,处理器171具体可以用于:从预先按照预定存储空间划分方式对确定出的存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;在确定出的存储子空间中,对应存储第二内容以及目录。
可选的,处理器171具体可以用于:判断确定出的存储空间中是否已存储有其他目录;在判断结果为否时,在确定出的存储空间中,对应存储第二内容以及目录;在判断结果为是时,释放确定出的存储空间后,在确定出的存储空间中,对应存储第二内容以及目录。
出于本发明实施例提供的一种目录的查询方法的发明构思,本发明实施例还提供一种查询目录的NC,其具体结构示意图如图18所示,包括存储器181和处理器182。对于该些功能实体的功能介绍如下:
存储器181,用于存储目录;其中,这里所说的目录用于记录远端节点对于数据块的缓存情况;
处理器182,用于获得数据块在CPU(这里所述的CPU为该查询目录的NC所在的本地节点中的CPU)中的存储地址;确定分别位于存储地址的第一特定位和第二特定位的第一内容和第二内容;从预先设置的用于存储目录的各个存储空间中,查询寻址地址与第一内容相匹配的存储空间;根据第二内容,从存储器181的与查询到的寻址地址与第一内容相匹配的存储空间中,查询与第二内容对应存储的目录。
需要说明的是:
上述第一内容和第二内容至少共同包括存储地址的所有内容;
第一特定位的位数大于预先规定的位数阈值,且小于存储地址的总位数;
位数阈值满足:按照位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。
本发明实施例中,该NC也可以不包含存储器181,即存储器181也可以不作为该NC的一部分,而是以独立于NC外的存储器的形式存在。
可选的,当第一内容包含第一索引部分和第二索引部分时,处理器182具体可以用于:
根据第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与第一索引部分相匹配的存储空间集合;
根据第二索引部分,从查询到的寻址地址与第一索引部分相匹配的存储空间集合中,查询寻址地址与第二索引部分相匹配的存储空间。
可选的,处理器182具体可以用于:
根据第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与第二内容对应存储的目录。
本发明实施例提供的上述方案中,由于第一特定位的位数被设置为大于预先规定的位数阈值,且小于数据的存储地址的总位数,且按照该位数阈值所能寻址的不同存储空间总个数不小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和,从而按照第一特定位的位数进行寻址时,其所能寻址的不同寻址地址的最大个数不会超过按照数据的存储地址的位数所能寻址的不同寻址地址的最大个数,同时其所能寻址的不同寻址地址的最大个数也不会小于与本地节点同处同一CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和。因此与现有技术中的全目录技术相比,本发明实施例提供的该方案在减小NC的目录存储空间不足对CPU对于其缓存的远端节点的数据的使用的影响的同时,大大减小了目录对于存储资源的需求量。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种目录的存储方法,所述目录用于记录远端节点对于本地节点中的中央处理器CPU中的数据块的缓存情况,其特征在于,包括:
所述本地节点中的节点控制器NC获得所述CPU中被所述远端节点读取的所述数据块在所述CPU中的存储地址;
确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间;
在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
2.如权利要求1所述的方法,其特征在于,所述第一内容包含第一索引部分和第二索引部分;则
根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间,具体包括:
根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与所述第一索引部分相匹配的存储空间集合;
根据所述第二索引部分,从确定出的所述存储空间集合中,确定寻址地址与所述第二索引部分相匹配的存储空间。
3.如权利要求1或2所述的方法,其特征在于,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录,具体包括:
从预先按照预定存储空间划分方式对确定出的所述存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;
在确定出的所述存储子空间中,对应存储所述第二内容以及所述目录。
4.如权利要求1所述的方法,其特征在于,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录,具体包括:
判断确定出的所述存储空间中是否已存储有其他目录;
在判断结果为否时,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录;
在判断结果为是时,释放确定出的所述存储空间后,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
5.一种目录的查询方法,其特征在于,包括:
本地节点中的节点控制器NC获得数据块在本地节点中的中央处理器CPU中的存储地址;
确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间;
根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中,查询与所述第二内容对应存储的目录;其中,所述目录用于记录远端节点对于所述数据块的缓存情况。
6.如权利要求5所述的方法,其特征在于,所述第一内容包含第一索引部分和第二索引部分;则
根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间,具体包括:
根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与所述第一索引部分相匹配的存储空间集合;
根据所述第二索引部分,从查询到的寻址地址与所述第一索引部分相匹配的存储空间集合中,查询寻址地址与所述第二索引部分相匹配的存储空间。
7.如权利要求5或6所述的方法,其特征在于,根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中查询所述目录,具体包括:
根据所述第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与所述第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与所述第二内容对应存储的所述目录。
8.一种存储目录的节点控制器,所述目录用于记录远端节点对于本地节点中的中央处理器CPU中的数据块的缓存情况,其中,所述本地节点为所述节点控制器所在的节点,其特征在于,包括:
地址获得单元,用于获得所述CPU中被所述远端节点读取的所述数据块在所述CPU中的存储地址;
内容确定单元,用于确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
存储空间确定单元,用于根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,确定寻址地址与所述第一内容相匹配的存储空间;
目录存储执行单元,用于在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
9.如权利要求8所述的节点控制器,其特征在于,所述第一内容包含第一索引部分和第二索引部分;
所述存储空间确定单元具体用于:
根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,确定寻址地址与所述第一索引部分相匹配的存储空间集合;
根据所述第二索引部分,从确定出的所述存储空间集合中,确定寻址地址与所述第二索引部分相匹配的存储空间。
10.如权利要求8或9所述的节点控制器,其特征在于,所述目录存储执行单元具体用于:
从预先按照预定存储空间划分方式对确定出的所述存储空间进行划分而得到的多个存储子空间中,确定一个存储子空间;
在确定出的所述存储子空间中,对应存储所述第二内容以及所述目录。
11.如权利要求8所述的节点控制器,其特征在于,所述目录存储执行单元具体用于:
判断确定出的所述存储空间中是否已存储有其他目录;
在判断结果为否时,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录;
在判断结果为是时,释放确定出的所述存储空间后,在确定出的所述存储空间中,对应存储所述第二内容以及所述目录。
12.一种查询目录的节点控制器,其特征在于,包括:
存储地址获得单元,用于获得数据块在中央处理器CPU中的存储地址;其中,所述CPU为所述节点控制器所在的本地节点中的CPU;
内容确定单元,用于确定分别位于所述存储地址的第一特定位和第二特定位的第一内容和第二内容;其中,所述第一内容和所述第二内容至少共同包括所述存储地址的所有内容;所述第一特定位的位数大于预先规定的位数阈值,且小于所述存储地址的总位数;所述位数阈值满足:按照所述位数阈值所能寻址的不同存储空间总个数不小于与所述本地节点同处同一缓存一致性非对称存储器访问CC-NUMA***的所有远端节点中的各CPU所能分别同时缓存的数据块的最大个数之和;
存储空间查询单元,用于根据所述第一内容,从预先设置的用于存储目录的各个存储空间中,查询寻址地址与所述第一内容相匹配的存储空间;
目录查询单元,用于根据所述第二内容,从查询到的寻址地址与所述第一内容相匹配的存储空间中,查询与所述第二内容对应存储的目录;其中,所述目录用于记录远端节点对于所述数据块的缓存情况。
13.如权利要求12所述的节点控制器,其特征在于,所述第一内容包含第一索引部分和第二索引部分;
所述存储空间查询单元具体用于:
根据所述第一索引部分,从预先设置的用于存储目录的各个存储空间集合中,查询寻址地址与所述第一索引部分相匹配的存储空间集合;
根据所述第二索引部分,从查询到的寻址地址与所述第一索引部分相匹配的存储空间集合中,查询寻址地址与所述第二索引部分相匹配的存储空间。
14.如权利要求12或13所述的节点控制器,其特征在于,所述目录查询单元具体用于:
根据所述第二内容,从预先按照预定存储空间划分方式对确定出的寻址地址与所述第一内容相匹配的存储空间进行划分而得到的多个存储子空间中,查询与所述第二内容对应存储的所述目录。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310487653.2A CN103544269B (zh) | 2013-10-17 | 2013-10-17 | 目录的存储方法、查询方法及节点控制器 |
US14/515,940 US20150113230A1 (en) | 2013-10-17 | 2014-10-16 | Directory storage method and query method, and node controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310487653.2A CN103544269B (zh) | 2013-10-17 | 2013-10-17 | 目录的存储方法、查询方法及节点控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544269A true CN103544269A (zh) | 2014-01-29 |
CN103544269B CN103544269B (zh) | 2017-02-01 |
Family
ID=49967721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310487653.2A Active CN103544269B (zh) | 2013-10-17 | 2013-10-17 | 目录的存储方法、查询方法及节点控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150113230A1 (zh) |
CN (1) | CN103544269B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838682A (zh) * | 2014-03-10 | 2014-06-04 | 华为技术有限公司 | 一种文件目录的读取方法和设备 |
CN104077375A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种cc-numa***中节点的错误目录的处理方法和节点 |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN105912477A (zh) * | 2016-04-05 | 2016-08-31 | 浪潮电子信息产业股份有限公司 | 一种目录读取的方法、装置及*** |
CN107533512A (zh) * | 2015-06-29 | 2018-01-02 | 华为技术有限公司 | 目录中表项合并的方法以及设备 |
CN109885509A (zh) * | 2019-02-26 | 2019-06-14 | 京信通信***(中国)有限公司 | 非易失性存储器的访问方法及装置 |
WO2021081944A1 (zh) * | 2019-10-31 | 2021-05-06 | 华为技术有限公司 | 处理非缓存写数据请求的方法、缓存器和节点 |
CN113138851A (zh) * | 2020-01-16 | 2021-07-20 | 华为技术有限公司 | 一种缓存管理方法及装置 |
CN115932532A (zh) * | 2023-03-09 | 2023-04-07 | 长鑫存储技术有限公司 | 半导体器件的测试方法、装置、设备及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489309B2 (en) * | 2014-10-31 | 2016-11-08 | Oracle International Corporation | Method and system for dynamic cache partitioning using address remapping |
CN104375963B (zh) * | 2014-11-28 | 2019-03-15 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制***和方法 |
US10521112B2 (en) | 2017-03-17 | 2019-12-31 | International Business Machines Corporation | Layered clustered scale-out storage system |
CN111198877B (zh) * | 2018-10-31 | 2023-08-25 | 北京国双科技有限公司 | 数据存储和查询方法及装置 |
CN112540941A (zh) * | 2019-09-21 | 2021-03-23 | 华为技术有限公司 | 一种数据转发芯片及服务器 |
CN116088771B (zh) * | 2023-04-06 | 2023-06-16 | 国网浙江省电力有限公司营销服务中心 | 基于能源互联网的工单数据多层次存储方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2270401A (en) * | 1992-09-08 | 1994-03-09 | Hewlett Packard Co | Multi-processor cache system utilizing interleaved directories. |
US5848434A (en) * | 1996-12-09 | 1998-12-08 | Intel Corporation | Method and apparatus for caching state information within a directory-based coherency memory system |
US6073216A (en) * | 1997-11-25 | 2000-06-06 | Intel Corporation | System and method for reliable system shutdown after coherency corruption |
CN1685319A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有集成目录与处理器高速缓存的计算机*** |
-
2013
- 2013-10-17 CN CN201310487653.2A patent/CN103544269B/zh active Active
-
2014
- 2014-10-16 US US14/515,940 patent/US20150113230A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2270401A (en) * | 1992-09-08 | 1994-03-09 | Hewlett Packard Co | Multi-processor cache system utilizing interleaved directories. |
US5848434A (en) * | 1996-12-09 | 1998-12-08 | Intel Corporation | Method and apparatus for caching state information within a directory-based coherency memory system |
US6073216A (en) * | 1997-11-25 | 2000-06-06 | Intel Corporation | System and method for reliable system shutdown after coherency corruption |
CN1685319A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有集成目录与处理器高速缓存的计算机*** |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838682A (zh) * | 2014-03-10 | 2014-06-04 | 华为技术有限公司 | 一种文件目录的读取方法和设备 |
US9652407B2 (en) | 2014-06-24 | 2017-05-16 | Huawei Technologies Co., Ltd. | Method for processing error directory of node in CC-NUMA system, and node |
CN104077375A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种cc-numa***中节点的错误目录的处理方法和节点 |
CN104899160B (zh) * | 2015-05-30 | 2019-02-19 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN107533512A (zh) * | 2015-06-29 | 2018-01-02 | 华为技术有限公司 | 目录中表项合并的方法以及设备 |
CN105912477A (zh) * | 2016-04-05 | 2016-08-31 | 浪潮电子信息产业股份有限公司 | 一种目录读取的方法、装置及*** |
WO2017173844A1 (zh) * | 2016-04-05 | 2017-10-12 | 浪潮电子信息产业股份有限公司 | 一种目录读取的方法、装置及*** |
CN105912477B (zh) * | 2016-04-05 | 2019-01-01 | 浪潮电子信息产业股份有限公司 | 一种目录读取的方法、装置及*** |
CN109885509A (zh) * | 2019-02-26 | 2019-06-14 | 京信通信***(中国)有限公司 | 非易失性存储器的访问方法及装置 |
CN109885509B (zh) * | 2019-02-26 | 2021-10-26 | 京信网络***股份有限公司 | 非易失性存储器的访问方法及装置 |
WO2021081944A1 (zh) * | 2019-10-31 | 2021-05-06 | 华为技术有限公司 | 处理非缓存写数据请求的方法、缓存器和节点 |
CN113138851A (zh) * | 2020-01-16 | 2021-07-20 | 华为技术有限公司 | 一种缓存管理方法及装置 |
CN113138851B (zh) * | 2020-01-16 | 2023-07-14 | 华为技术有限公司 | 一种数据管理方法、相关装置及*** |
US11928061B2 (en) | 2020-01-16 | 2024-03-12 | Huawei Technologies Co., Ltd. | Cache management method and apparatus |
CN115932532A (zh) * | 2023-03-09 | 2023-04-07 | 长鑫存储技术有限公司 | 半导体器件的测试方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150113230A1 (en) | 2015-04-23 |
CN103544269B (zh) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544269A (zh) | 目录的存储方法、查询方法及节点控制器 | |
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
CN103440208B (zh) | 一种数据存储的方法及装置 | |
CN108804510A (zh) | 键值文件*** | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
KR102509913B1 (ko) | 최대화된 중복 제거 메모리를 위한 방법 및 장치 | |
CN101777061B (zh) | 一种java卡对象管理方法及java卡 | |
JP5716537B2 (ja) | 記憶媒体制御装置、記憶装置、記憶媒体制御方法、プログラム | |
CN107193494B (zh) | 一种基于ssd和hdd混合存储***的rdd持久化方法 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN105022696A (zh) | 一种基于内存访问热度的大内存页整合方法 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN103455284A (zh) | 一种读写数据的方法及装置 | |
US20150052327A1 (en) | Dynamic memory relocation | |
CN108427648B (zh) | 存储***页内脏数据索引方法和装置 | |
CN104407990A (zh) | 一种磁盘访问方法及装置 | |
CN103019963B (zh) | 一种高速缓存的映射方法及存储设备 | |
CN106156049A (zh) | 一种数据读取的方法和*** | |
CN107430546B (zh) | 一种文件更新方法及存储设备 | |
CN101783814A (zh) | 海量存储***的元数据存储方法 | |
US11256630B2 (en) | Cache address mapping method and related device | |
TWM528459U (zh) | 資料儲存系統以及電子裝置 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
CN112506813B (zh) | 一种内存管理方法和*** | |
CN112069088B (zh) | 一种地址映射管理方法及相关装置、设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |