CN111651375A - 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 - Google Patents
基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 Download PDFInfo
- Publication number
- CN111651375A CN111651375A CN202010440942.7A CN202010440942A CN111651375A CN 111651375 A CN111651375 A CN 111651375A CN 202010440942 A CN202010440942 A CN 202010440942A CN 111651375 A CN111651375 A CN 111651375A
- Authority
- CN
- China
- Prior art keywords
- ddcu
- host
- pcache
- cache
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims description 20
- 230000003068 static effect Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 235000003642 hunger Nutrition 0.000 description 4
- 230000037351 starvation Effects 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统,本发明通过私有缓存响应对应处理单元的请求,不命中时向对应的宿主DDCU发出数据读写一致性请求事务,宿主DDCU如遇到资源冲突时则丢弃报文并进入流控模式,私有缓存基于信约原理将丢弃的报文逐个重发,直到资源冲突解除后退出流控模式进入正常的流水作业模式。本发明能够解决目录自替换堵塞工作流水线而导致请求事务饿死的问题,同时提供严格的执行顺序保证,确保多处理器分布式环境下,数据依赖关系不被破坏,请求事务间数据依赖关系能够被完整保持,并保证多个核心发出的请求事务能公平的协调执行,从而提高众核处理器可靠性和可扩展性。
Description
技术领域
本发明涉及多核处理器体系结构,具体涉及一种基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统,用于解决基于目录的高速缓存(Cache)一致性协议在目录存储器容量受限时,目录自替换堵塞工作流水线而导致请求事务饿死的问题。
背景技术
众核微处理器常用的实现方式是同构集成,即集成多个成熟的、结构相同、功能强大的通用处理核心。例如Intel在 Skylake-EP Xeon E5芯片中集成了32个处理器核;AMD在锐龙 Threadripper 处理器集成了16个处理器核心;飞腾系列服务器芯片则集成了16~64个处理器核心。如图1所示,包括上述处理器在内的众核微处理器在芯片上集成了多级Cache(Cache0~Cache(n-1))和存储控制器(Memory Controller Unit, MCU)(MCU0~MCU(m-1)),它们的存储层次有一个共同特点,采用私有的分布式Cache结构,然后通过片上互连网络(Network on chip,简称NOC)访问共享的最外层Cache(Last Level Cache,LLCache)或者存储控制器MCU。分布式私有Cache通过Cache一致性协议实现数据一致性。常见的实现方式就是基于目录的Cache一致性协议。
基于目录的Cache一致性协议管理的最细粒度地址空间是单个高速缓存行(CacheLine),常见大小为64字节。现代众核微处理器的物理地址空间往往很大。以44位物理地址空间为例,整个目录存储器(Directory Control Unit,DCU)的容量约为256G条,在目前的工艺条件下,显然无法在片上完全存储整个目录信息。基于有限目录方式的Cache一致性协议是目前常用的折中方案,即片上目录控制器中只存储部分目录信息。当目录存储器容量不足时,发起目录替换操作,将处于有效但是空转态的目录项替换出去,把原目录项留给新的请求事务。现有技术的目录控制器的工作原理如图2所示,DCU根据被替换的目录项信息,产生监听作废请求Snoop_Invalidate,通过NOC发送到对应的私有Cache0和CacheX。私有Cache0和CacheX作废其内部的高速缓存行Cacheline,并生成监听响应Snoop_RSP_Data报文,发送回给DCU。DCU将监听响应返回的脏副本通过写命令报文MCU_Write写回MCU。
当目录替换数量比较多时,将出现如下几种情况:(1)请求事务饿死:目录替换时会引起监听操作,监听作废耗时较长,会一直占用DCU工作流水线资源。当目录替换数量较多时,容易引发堵塞,新的请求事务迟迟不能处理,如图2中的Read和Write事务,当系统节点数增大时,极易导致请求事务饿死;(2)请求事务乱序执行,破坏数据依赖关系:有限容量的目录控制器通过自替换实现目录存储器的资源复用,当替换数量较多时,控制调度算法复杂度组合剧增。当两个存在数据依赖的请求事务到来时,复杂的控制调度算法容易导致请求事务乱序执行,数据依赖关系被破坏,直接影响处理器核心中程序执行的正确性,引发很大的风险。上述基于有限容量目录的Cache一致性方案,容易导致请求事务饿死,破坏数据依赖性,引发较大的设计风险,是限制众核处理器可靠性和可扩展性的重要因素。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统,本发明能够解决目录自替换堵塞工作流水线而导致请求事务饿死的问题,同时提供严格的执行顺序保证,确保分布式环境下,数据依赖关系不被破坏,请求事务间数据依赖关系能够被完整保持,并保证多个核心发出的请求事务能公平的协调执行,从而提高众核处理器可靠性和可扩展性。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于分布式有限目录的多路处理器缓存数据一致性实现方法,实施步骤包括:
1)私有缓存PCache X响应对应的处理单元PE X的请求,且在请求不命中时向对应的宿主DDCU X发出数据读写一致性请求事务;
2)宿主DDCU X响应数据读写一致性请求事务并检测是否发生资源冲突,如无资源冲突,则通过其他宿主DDCU或MCU返回数据,结束并退出;否则,等待重试缓冲[X]处于空闲态free,且在重试缓冲[X]处于空闲态free时丢弃数据读写一致性请求事务并且向私有缓存PCache X发送重试应答报文RetryAck,跳转执行下一步;
3)私有缓存PCache X与私有缓存PCache之间进入流控模式,在流控模式下宿主DDCU X向私有缓存PCache X逐个发送信约报文Credit_Grant,且每发送一个信约报文Credit_Grant则私有缓存PCache X将被宿主DDCU X丢弃的一个数据读写一致性请求事务重新发送给宿主DDCU X,并通过宿主DDCU X响应数据读写一致性请求事务并返回数据,直至被宿主DDCU X丢弃的所有数据读写一致性请求事务全部完成后退出流控模式。
可选地,步骤1)的详细步骤包括:
1.1)私有缓存PCache X响应对应的处理单元PE X的请求并判断访问请求是否命中,如果命中则直接从私有缓存PCache X中返回命中结果并退出;否则跳转执行下一步;
1.2)将请求的报文设置为动态信用请求存储在正常队列中等待发给宿主DDCU X,且在私有缓存PCache将正常队列中的报文发送给宿主DDCU X的同时也将报文复制一份存入本地的重发队列的底部,使得向对应的宿主DDCU X收到数据读写一致性请求事务。
可选地,步骤2)中向私有缓存PCache X发送重试应答报文RetryAck时还包括将重试缓冲[X]的retryCounter计数器自增1的步骤。
可选地,步骤3)的详细步骤包括:
3.1)私有缓存PCache X收到重试应答报文RetryAck后则和宿主DDCU X进入流控模式,暂停其中正常队列中的目的节点为宿主DDCU X的报文发送,并将其对应的计数器retryCounter[X]自增1,且在计数器retryCounter[X]变为0以前不允许向宿主DDCU X发送动态信用请求Dreq,所述动态信用请求Dreq是指非流控模式下的一致性请求事务;
3.2)宿主DDCU X内当重试缓冲[X]中的上一个被重试的请求事务成功流出,重试缓冲[X]队列状态会转换为空闲态free,如果重试缓冲[X]的计数器retryCounter值大于1,则宿主DDCU X首先会设置重试缓冲[X]进入预留模式,并跳转执行下一步;
3.3)宿主DDCU X向对应的私有缓存PCache X发送信约报文Credit_Grant;
3.4)私有缓存PCache X收到信约报文Credit_Grant后,按时间顺序将先前被DCU丢弃的请求事务从重发队列中取出最早的一项数据读写一致性请求事务并设置为静态信用报文Sreq,再次发送给宿主DDCU X,同时对应宿主DDCU X的计数器retryCounter[X]自减1;所述静态信用报文Sreq是指流控模式下的一致性请求事务;
3.5)宿主DDCU X收到设置为静态信用报文Sreq的数据读写一致性请求事务后,向其余的私有缓存PCache请求对应的高速缓存行Cacheline或者通过存储控制器请求对应的高速缓存行Cacheline并返回给私有缓存PCache X;
3.6)判断宿主DDCU X的计数器retryCounter[X]是否为0,如果为0则私有缓存PCacheX和宿主DDCU X退出流控模式;否则,跳转执行步骤3.3)。
此外,本发明还提供一种基于分布式有限目录的多路处理器缓存数据一致性实现系统,所述多路处理器缓存数据一致性实现系统被编程或配置以执行所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
此外,本发明还提供一种众核微处理器,所述众核微处理器被编程以执行所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
此外,本发明还提供一种计算机设备,该计算机设备至少包括存储器和微处理器,所述微处理器为众核微处理器,所述众核微处理器被编程以执行所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
和现有技术相比,本发明具有下述有益效果:本发明对基于目录Cache一致性协议的众核处理器体系结构进行改进,采用分布式目录设计并增加信约流控机制,解决目录自替换堵塞工作流水线而导致请求事务饿死的问题,同时提供严格的执行顺序保证,确保分布式环境下,数据依赖关系不被破坏,请求事务间数据依赖关系能够被完整保持,并保证多个核心发出的请求事务能公平的协调执行,从而提高众核处理器可靠性和可扩展性。
附图说明
图1为现有技术的众核微处理器拓扑结构示意图。
图2为现有技术的目录控制器的工作原理示意图。
图3为本发明实施例方法的基本流程示意图。
图4为本发明实施例中DDCU的分布式结构示意图。
图5是本发明实施例中DCU的位向量、socket向量以及Bsy标志位和有效标志位示意图。
具体实施方式
如图3所示,本实施例基于分布式有限目录的多路处理器缓存数据一致性实现方法的实施步骤包括:
1)私有缓存PCache X响应对应的处理单元PE X的请求,且在请求不命中时向对应的宿主DDCU X发出数据读写一致性请求事务;
2)宿主DDCU X响应数据读写一致性请求事务并检测是否发生资源冲突,如无资源冲突,则通过其他宿主DDCU或MCU返回数据,结束并退出;否则,等待重试缓冲[X]处于空闲态free,且在重试缓冲[X]处于空闲态free时丢弃数据读写一致性请求事务并且向私有缓存PCache X发送重试应答报文RetryAck,跳转执行下一步;
3)私有缓存PCache X与私有缓存PCache之间进入流控模式,在流控模式下宿主DDCU X向私有缓存PCache X逐个发送信约报文Credit_Grant,且每发送一个信约报文Credit_Grant则私有缓存PCache X将被宿主DDCU X丢弃的一个数据读写一致性请求事务重新发送给宿主DDCU X,并通过宿主DDCU X响应数据读写一致性请求事务并返回数据,直至被宿主DDCU X丢弃的所有数据读写一致性请求事务全部完成后退出流控模式。
本实施例中以X表示同一组处理单元PE、私有缓存PCache、宿主DDCU的序号。如图4所示,每一组处理单元PE、私有缓存PCache、宿主DDCU都具有一个对应的唯一的序号(1~n),通过序号X表示处理单元PE、私有缓存PCache以及对应的宿主DDCU(DistributedDirectory Control Unit, 分布式目录控制器单元)之间的关联映射关系,处理单元PE X的对应私有缓存PCache X,X∈1~n-1。私有缓存PCache X对应宿主DDCU X,且均为一一对应关系。处理单元(Processor Element, PE)的私有缓存(Private Cache, PCache)不命中时,都会发出数据读写一致性请求事务,按照地址空间分片(Sharding)映射规范实现处理单元PE、私有缓存PCache以及对应的宿主DDCU的一一对应关系,这些数据读写一致性请求事务将转发到不同的宿主DDCU 。某地址空间分片的目录控制器流水线在处理某一请求事务时,如果遇到资源冲突(例如,当前目录正在自替换,或者目录存储器资源耗尽,或者针对当前高速缓存行Cacheline的上一个事务还未结束)时,将终止当前事务请求并转发给重试缓冲队列。重试缓冲队列基于信约原理,负责完成与请求源节点之间的流量控制。直到资源冲突解除后,目录控制器与请求源节点间才退出流控模式,进入正常的流水作业模式。为了实现处理单元PE、私有缓存PCache以及对应的宿主DDCU的一一对应关系,本实施例中需要物理地址空间分片,确保每一个DCU管理固定空间的Cache块数据一致性,不同的DCU所管理的空间不重叠;物理地址空间中的任一高速缓存行Cacheline,其宿主DCU全芯片唯一。基于分布式有限目录的Cache一致性协议的众核处理器基本结构如图3。在这种结构中,处理器核单元(Processor Element, PE)访问私有缓存(private Cache, PCache)不命中失效时,PCache将向该高速缓存行Cacheline地址所属分片的DDCU(宿主DDCU)发出一致性请求事务。各个DDCU中已记录加载到各个PCache的所有高速缓存行Cacheline的信息。根据这些信息,DDCU生成新的监听取数命令报文发给有副本的PCache,监听返回的数据被DDCU转发到最初的请求节点私有缓存;或者生成新的访存命令报文发送给存控单元,取回的数据被DDCU转发到最初的请求节点私有缓存。
由所有的宿主DDCU X构成的目录控制器单元DCU是完成一致性协议的重要单元,它通过各个宿主DDCU X记录了加载到各个私有缓存PCache的所有高速缓存行Cacheline的信息。通常,目录信息中位向量的每一位对应高速缓存行Cacheline的一个PCache副本,位向量为1,表示对应的PCache中有该高速缓存行Cacheline副本。图5是一个记录n个副本的位向量,Bsy表示忙状态,表示附着在该高速缓存行Cacheline上的上一个事务正在进行,暂时不能处理新请求事务,Vld表示该高速缓存行Cacheline处于活跃状态,表示众核系统中至少有一个PCache中存在该高速缓存行Cacheline副本。
本实施例中,步骤1)的详细步骤包括:
1.1)私有缓存PCache X响应对应的处理单元PE X的请求并判断访问请求是否命中,如果命中则直接从私有缓存PCache X中返回命中结果并退出;否则跳转执行下一步;
1.2)将请求的报文设置为动态信用请求存储在正常队列中等待发给宿主DDCU X,且在私有缓存PCache将正常队列中的报文发送给宿主DDCU X的同时也将报文复制一份存入本地的重发队列的底部,使得向对应的宿主DDCU X收到数据读写一致性请求事务。
本实施例中私有缓存PCache中维护两个请求事务队列,一个是正常队列,一个是重发队列。重发队列采用先进先出的工作方式,每当有新的请求事务从正常队列流出到片上互连网络NoC时,该请求报文也被复制一份存入重发队列的底部。同时对于一个含M个DCU的系统,私有缓存PCache X中还维护重试计数器retryCounter组[0:M-1],确保与DCU成一一对应关系。对于含N个私有缓存PCache的系统,每个DCU中设置重试缓冲队列组[0:N-1],重试计数器retryCounter组[0:N-1]、信用计数器creditCounter组[0:N-1],确保与PCache成一一对应关系。每个重试缓冲队列深度为1,用于缓存DCU工作流水线上暂时存在资源冲突(冲突包括三种:该高速缓存行Cacheline正在自替换、目录存储器资源耗尽、或者该高速缓存行Cacheline的上一个事务还未结束导致的Bsy有效)的请求事务。
本实施例中,步骤2)中向私有缓存PCache X发送重试应答报文RetryAck时还包括将重试缓冲[X]的retryCounter计数器自增1的步骤。
本实施例中,步骤3)的详细步骤包括:
3.1)私有缓存PCache X收到重试应答报文RetryAck后则和宿主DDCU X进入流控模式,暂停其中正常队列中的目的节点为宿主DDCU X的报文发送,并将其对应的计数器retryCounter[X]自增1,且在计数器retryCounter[X]变为0以前不允许向宿主DDCU X发送动态信用请求Dreq,所述动态信用请求Dreq是指非流控模式下的一致性请求事务;
3.2)宿主DDCU X内当重试缓冲[X]中的上一个被重试的请求事务成功流出,重试缓冲[X]队列状态会转换为空闲态free,如果重试缓冲[X]的计数器retryCounter值大于1,则宿主DDCU X首先会设置重试缓冲[X]进入预留模式,并跳转执行下一步;
3.3)宿主DDCU X向对应的私有缓存PCache X发送信约报文Credit_Grant;
3.4)私有缓存PCache X收到信约报文Credit_Grant后,按时间顺序将先前被DCU丢弃的请求事务从重发队列中取出最早的一项数据读写一致性请求事务并设置为静态信用报文Sreq,再次发送给宿主DDCU X,同时对应宿主DDCU X的计数器retryCounter[X]自减1;所述静态信用报文Sreq是指流控模式下的一致性请求事务;
3.5)宿主DDCU X收到设置为静态信用报文Sreq的数据读写一致性请求事务后,向其余的私有缓存PCache请求对应的高速缓存行Cacheline或者通过存储控制器请求对应的高速缓存行Cacheline并返回给私有缓存PCache X;
3.6)判断宿主DDCU X的计数器retryCounter[X]是否为0,如果为0则私有缓存PCacheX和宿主DDCU X退出流控模式;否则,跳转执行步骤3.3)。
以某个私有缓存PCache X及其对应的宿主DDCU X为例,目录控制器工作过程如下:S1)私有缓存PCache内,对因Cache不命中而产生的请求事务报文,设置这些请求为动态信用请求,并按顺序存入正常队列,等待发往NOC。S2)私有缓存PCache内,正常队列的报文发送时,复制一份存入重发队列的底部。S3)宿主DDCU X内,处理来自私有缓存PCache X的请求时,对于存在资源冲突(冲突包括三种:该高速缓存行Cacheline正在自替换、目录存储器资源耗尽、或者该高速缓存行Cacheline的上一个事务还未结束导致的Bsy有效)的请求事务,如果重试缓冲[X]处于空闲态free,则将其存入重试缓冲[X]队列中。S4)宿主DDCU X内,上述步骤S3)中,如果重试缓冲[X]处于非空闲态,则丢弃该请求事务报文,同时发送指令为retryACK的报文返回给私有缓存PCache X,告知对方该请求事务报文已被丢弃,同时重试缓冲[X]的retryCounter计数器自增1。S5)宿主DDCU X内,对于已经存入重试缓冲[X]的请求事务进行调度。S6)私有缓存PCache X内,当接收到来自DCU X的retryACK报文时,进入流控模式,立刻暂停正常队列中的目的节点为DCU X的报文发送,同时其计数器retryCounter[X]自增1。此后,在计数器retryCounter[X]变为0以前,不允许PCache X向DCU X发送动态信用请求Dreq。S7)宿主DDCU X内,当重试缓冲[X]中的上一个被重试的请求事务成功流出,重试缓冲[X]队列状态会转换为空闲态free。此时如果重试缓冲[X]的retryCounter计数器值大于1,宿主DDCU X首先会设置该队列进入预留模式,任何来自PCache X的动态信用请求Dreq在发生资源冲突时,都将被丢弃,并发送指令为RetryAck的报文告知私有缓存PCache X;其次,宿主DDCU X会向私有缓存PCache X发送指令为Credit_Grant的报文,creditCounter[X]自增1。S8)私有缓存PCache X内,当接收到来自宿主DDCUX的Credit_Grant报文时,得知宿主DDCU X已为刚才被丢弃的请求事务预留了存储空间,可接收那些事务的再次发送。 私有缓存PCache X会按时间顺序,将先前被宿主DDCU X丢弃的请求事务从重发队列中取出最早的一项,并设置为静态信用Sreq报文,再次发送给DCU X。同时私有缓存PCache X对应宿主DDCU X的retryCounter[X]计数器自减1。。一个Credit_Grant报文对应一次重发。此时,若retryCounter[X]计数器变为0,则表示私有缓存PCacheX与宿主DDCU X间已退出流控模式,可以发送正常队列中的动态请求;若若retryCounter[X]计数器还是大于0,私有缓存PCache X会继续等待下一个Credit_Grant报文。 S9)宿主DDCU X中,收到私有缓存PCache X静态请求Sreq时,如果宿主DDCU X的流水线发生资源冲突,则存入早已预留的重试缓冲[X]中,然后按照实施步骤S5)中的规则重新流入宿主DDCUX的工作流水线。如果宿主DDCU X的流水线没有发生资源冲突,顺利完成请求事务,则对应的creditCounter[X]自减1,预留的重试缓冲[X]队列进入空闲态。此时,如果计数器retryCounter[X]还是大于0,则宿主DDCU X还会设置该队列进入预留模式,同时向私有缓存PCache X发送一个Credit_Grant报文,等待处理下一个来自私有缓存PCache X的静态请求Sreq;如果计数器retryCounter[X]和creditCounter[X]都变成0,则表示私有缓存PCache X与宿主DDCU X间已退出流控模式,宿主DDCU X可以处理正常的动态信用请求Dreq。
本实施例中重试缓冲[X]的队列状态除了空闲态free以外,还包括流出态issued、唤醒态wakeup和睡眠态sleep三种非空闲态,DCU流水线检测到资源冲突,插入请求事务时,如果是由于高速缓存行Cacheline自替换和目录存储器资源耗尽引起的插入,则队列中的事务直接进入唤醒态wakeup;如果是由于该高速缓存行Cacheline的Bsy有效引起的插入的话,则队列中的事务直接进入睡眠态sleep,等待资源冲突消解被wakeup后,进入唤醒态wakeup。只有进入唤醒态wakeup的请求事务,才能被重新调度进入DDCU的工作流水线。由于某地址空间分片DCU与私有缓存PCache间是1:N的关系,DCU调度器会遇到多个重试队列同时wakeup的场景,故特设流出态issued,表示都请求事务正在被调度选择issue_select。按照调度结果,如果成功issue_success,则该队列进入空闲态free,可用于存储下一次冲突时的请求事务;如果失败issue_fail,该队列重新进入唤醒态wakeup,等待再次被调度选择issue_select。本实施例中,将私有缓存PCache发往宿主DDCU的请求事务分为动态信用请求(Dynamic Credited Request, Dreq)和静态信用请求(Static Credited Request,Sreq)两类。进入流控模式前,私有缓存PCache默认按动态信用模式,以任意速度向宿主DDCU发送请求事务;进入流控模式后,私有缓存PCache只能受控地向宿主DDCU发送静态信用请求事务。宿主DDCU通过指令为retryACK的报文与私有缓存PCache交互,令其进入流控模式;宿主DDCU通过指令为Credit_Grant的报文与私有缓存PCache交互,令其以静态信用的模式重发先前被DCU放弃处理的请求事务。
本实施例中,宿主DDCU X中工作流水线由于资源冲突,将丢弃Dreq_read0请求和Dreq_read1请求,并通过返回两个RetryAck报文给私有缓存PCache X,告知该情况,此后宿主DDCU X与私有缓存PCache X进入流控模式。当资源冲突消解后,会首发一个Credit_Grant报文给私有缓存PCache X,准备接收第一个静态请求Sreq_read0。等第一个Sreq_read0读事务完成后,宿主DDCU X再次发送一个Credit_Grant报文给私有缓存PCache X,准备接收第一个静态请求Sreq_read1。Sreq_read1读事务顺利流入宿主DDCU X的工作流水线后,宿主DDCU X与私有缓存PCache X退出流控模式。私有缓存PCache X开始向宿主DDCU X发送新的动态信用请求事务,Dreq_read2请求和Dreq_read3请求。
综上所述,本实施例基于分布式有限目录的多路处理器缓存数据一致性实现方法通过私有缓存PCache X响应对应处理单元PE X的请求,且在请求不命中时向对应的宿主DDCU X发出数据读写一致性请求事务,宿主DDCU X在处理请求事务时如遇到资源冲突时则丢弃报文并进入流控模式,PCache X基于信约原理将丢弃的报文逐个重发,直到资源冲突解除后退出流控模式进入正常的流水作业模式,本实施例基于分布式有限目录的多路处理器缓存数据一致性实现方法能够解决目录自替换堵塞工作流水线而导致请求事务饿死的问题,同时提供严格的执行顺序保证,确保多处理器分布式环境下,数据依赖关系不被破坏,请求事务间数据依赖关系能够被完整保持,并保证多个核心发出的请求事务能公平的协调执行,从而提高众核处理器可靠性和可扩展性。
此外,本实施例还提供一种基于分布式有限目录的多路处理器缓存数据一致性实现系统,所述多路处理器缓存数据一致性实现系统被编程或配置以执行前述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
此外,本实施例还提供一种众核微处理器,所述众核微处理器被编程以执行前述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
此外,本实施例还提供一种计算机设备,该计算机设备至少包括存储器和微处理器,所述微处理器为众核微处理器,所述众核微处理器被编程以执行前述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种基于分布式有限目录的多路处理器缓存数据一致性实现方法,其特征在于实施步骤包括:
1)私有缓存PCache X响应对应的处理单元PE X的请求,且在请求不命中时向对应的宿主DDCU X发出数据读写一致性请求事务;
2)宿主DDCU X响应数据读写一致性请求事务并检测是否发生资源冲突,如无资源冲突,则通过其他宿主DDCU或MCU返回数据,结束并退出;否则,等待重试缓冲[X]处于空闲态free,且在重试缓冲[X]处于空闲态free时丢弃数据读写一致性请求事务并且向私有缓存PCache X发送重试应答报文RetryAck,跳转执行下一步;
3)私有缓存PCache X与私有缓存PCache之间进入流控模式,在流控模式下宿主DDCU X向私有缓存PCache X逐个发送信约报文Credit_Grant,且每发送一个信约报文Credit_Grant则私有缓存PCache X将被宿主DDCU X丢弃的一个数据读写一致性请求事务重新发送给宿主DDCU X,并通过宿主DDCU X响应数据读写一致性请求事务并返回数据,直至被宿主DDCU X丢弃的所有数据读写一致性请求事务全部完成后退出流控模式。
2.根据权利要求1所述的基于分布式有限目录的多路处理器缓存数据一致性实现方法,其特征在于,步骤1)的详细步骤包括:
1.1)私有缓存PCache X响应对应的处理单元PE X的请求并判断访问请求是否命中,如果命中则直接从私有缓存PCache X中返回命中结果并退出;否则跳转执行下一步;
1.2)将请求的报文设置为动态信用请求存储在正常队列中等待发给宿主DDCU X,且在私有缓存PCache将正常队列中的报文发送给宿主DDCU X的同时也将报文复制一份存入本地的重发队列的底部,使得向对应的宿主DDCU X收到数据读写一致性请求事务。
3.根据权利要求1所述的基于分布式有限目录的多路处理器缓存数据一致性实现方法,其特征在于,步骤2)中向私有缓存PCache X发送重试应答报文RetryAck时还包括将重试缓冲[X]的retryCounter计数器自增1的步骤。
4.根据权利要求3所述的基于分布式有限目录的多路处理器缓存数据一致性实现方法,其特征在于,步骤3)的详细步骤包括:
3.1)私有缓存PCache X收到重试应答报文RetryAck后则和宿主DDCU X进入流控模式,暂停其中正常队列中的目的节点为宿主DDCU X的报文发送,并将其对应的计数器retryCounter[X]自增1,且在计数器retryCounter[X]变为0以前不允许向宿主DDCU X发送动态信用请求Dreq,所述动态信用请求Dreq是指非流控模式下的一致性请求事务;
3.2)宿主DDCU X内当重试缓冲[X]中的上一个被重试的请求事务成功流出,重试缓冲[X]队列状态会转换为空闲态free,如果重试缓冲[X]的计数器retryCounter值大于1,则宿主DDCU X首先会设置重试缓冲[X]进入预留模式,并跳转执行下一步;
3.3)宿主DDCU X向对应的私有缓存PCache X发送信约报文Credit_Grant;
3.4)私有缓存PCache X收到信约报文Credit_Grant后,按时间顺序将先前被DCU丢弃的请求事务从重发队列中取出最早的一项数据读写一致性请求事务并设置为静态信用报文Sreq,再次发送给宿主DDCU X,同时对应宿主DDCU X的计数器retryCounter[X]自减1;所述静态信用报文Sreq是指流控模式下的一致性请求事务;
3.5)宿主DDCU X收到设置为静态信用报文Sreq的数据读写一致性请求事务后,向其余的私有缓存PCache请求对应的高速缓存行Cacheline或者通过存储控制器请求对应的高速缓存行Cacheline并返回给私有缓存PCache X;
3.6)判断宿主DDCU X的计数器retryCounter[X]是否为0,如果为0则私有缓存PCacheX和宿主DDCU X退出流控模式;否则,跳转执行步骤3.3)。
5.一种基于分布式有限目录的多路处理器缓存数据一致性实现系统,其特征在于,所述多路处理器缓存数据一致性实现系统被编程或配置以执行权利要求1~4中任意一项所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
6.一种众核微处理器,其特征在于,所述众核微处理器被编程以执行权利要求1~4中任意一项所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
7.一种计算机设备,该计算机设备至少包括存储器和微处理器,其特征在于,所述微处理器为众核微处理器,所述众核微处理器被编程以执行权利要求1~4中任意一项所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010440942.7A CN111651375A (zh) | 2020-05-22 | 2020-05-22 | 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010440942.7A CN111651375A (zh) | 2020-05-22 | 2020-05-22 | 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111651375A true CN111651375A (zh) | 2020-09-11 |
Family
ID=72348339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010440942.7A Pending CN111651375A (zh) | 2020-05-22 | 2020-05-22 | 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651375A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070113020A1 (en) * | 2005-11-17 | 2007-05-17 | P.A. Semi, Inc. | Data cache block zero implementation |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN108920192A (zh) * | 2018-07-03 | 2018-11-30 | 中国人民解放军国防科技大学 | 基于分布式有限目录的缓存数据一致性实现方法及装置 |
-
2020
- 2020-05-22 CN CN202010440942.7A patent/CN111651375A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070113020A1 (en) * | 2005-11-17 | 2007-05-17 | P.A. Semi, Inc. | Data cache block zero implementation |
CN101958834A (zh) * | 2010-09-27 | 2011-01-26 | 清华大学 | 支持高速缓存一致的片上网络系统及数据请求方法 |
CN108920192A (zh) * | 2018-07-03 | 2018-11-30 | 中国人民解放军国防科技大学 | 基于分布式有限目录的缓存数据一致性实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
BIGELOW: "《计算机网络故障排除与维护实用大全》", 中国铁道出版社, pages: 16 - 17 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
CN117806992B (zh) * | 2024-02-29 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230091432A1 (en) | Thread Creation on Local or Remote Compute Elements by a Multi-Threaded, Self-Scheduling Processor | |
CN112088357B (zh) | 用户模式多线程自调度处理器中的系统调用管理 | |
US11119972B2 (en) | Multi-threaded, self-scheduling processor | |
US7533197B2 (en) | System and method for remote direct memory access without page locking by the operating system | |
US20190340019A1 (en) | Thread Commencement and Completion Using Work Descriptor Packets in a System Having a Self-Scheduling Processor and a Hybrid Threading Fabric | |
US20190340027A1 (en) | Adjustment of Load Access Size by a Multi-Threaded, Self-Scheduling Processor to Manage Network Congestion | |
US20190339976A1 (en) | Thread Commencement Using a Work Descriptor Packet in a Self-Scheduling Processor | |
US20190340035A1 (en) | Thread Priority Management in a Multi-Threaded, Self-Scheduling Processor | |
JP3632635B2 (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
JP3871305B2 (ja) | マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化 | |
JP5037566B2 (ja) | ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化 | |
US20080109569A1 (en) | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations | |
EP1021764B1 (en) | I/o forwarding in a cache coherent shared disk computer system | |
US20040199727A1 (en) | Cache allocation | |
US20060206635A1 (en) | DMA engine for protocol processing | |
JPH05324471A (ja) | キャッシュ制御装置 | |
US7886199B2 (en) | Recovery from a hang condition in a data processing system | |
US11157286B2 (en) | Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor | |
JP2024513076A (ja) | メッセージパッシング回路構成及び方法 | |
JP6687845B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20080109604A1 (en) | Systems and methods for remote direct memory access to processor caches for RDMA reads and writes | |
CN108920192B (zh) | 基于分布式有限目录的缓存数据一致性实现方法及装置 | |
CN111133423B (zh) | 一种抢占式高速缓存写回方法、处理系统和处理器 | |
CN111651375A (zh) | 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 | |
WO2000034882A1 (fr) | Antememoire et procede de commande |
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 |