CN111651375A - 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 - Google Patents

基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 Download PDF

Info

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
Application number
CN202010440942.7A
Other languages
English (en)
Inventor
冯权友
张英
周宏伟
邓让钰
杨乾明
励楠
曾坤
王勇
张见
乔寓然
王俊辉
王永文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202010440942.7A priority Critical patent/CN111651375A/zh
Publication of CN111651375A publication Critical patent/CN111651375A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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中任意一项所述基于分布式有限目录的多路处理器缓存数据一致性实现方法的步骤。
CN202010440942.7A 2020-05-22 2020-05-22 基于分布式有限目录的多路处理器缓存数据一致性实现方法及系统 Pending CN111651375A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117806992A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 数据块替换方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
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 中国人民解放军国防科技大学 基于分布式有限目录的缓存数据一致性实现方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
BIGELOW: "《计算机网络故障排除与维护实用大全》", 中国铁道出版社, pages: 16 - 17 *

Cited By (2)

* Cited by examiner, † Cited by third party
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