CN101354682B - 一种用于解决多处理器访问目录冲突的装置和方法 - Google Patents

一种用于解决多处理器访问目录冲突的装置和方法 Download PDF

Info

Publication number
CN101354682B
CN101354682B CN2008101198565A CN200810119856A CN101354682B CN 101354682 B CN101354682 B CN 101354682B CN 2008101198565 A CN2008101198565 A CN 2008101198565A CN 200810119856 A CN200810119856 A CN 200810119856A CN 101354682 B CN101354682 B CN 101354682B
Authority
CN
China
Prior art keywords
cache
request
cache blocks
directory
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008101198565A
Other languages
English (en)
Other versions
CN101354682A (zh
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.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008101198565A priority Critical patent/CN101354682B/zh
Publication of CN101354682A publication Critical patent/CN101354682A/zh
Application granted granted Critical
Publication of CN101354682B publication Critical patent/CN101354682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种多处理器系统,用于解决多处理器中存在的目录访问冲突,包括:至少两个包含有一级缓存的处理器核,与所述处理器核连接的访存失效队列,至少两个二级缓存,与所述二级缓存连接的目录访问管理队列,所述的访存失效队列与所述的目录访问管理队列通过互连网络连接;其中,在所述的二级缓存中包括有用于维护缓存一致性的目录,在所述的目录访问管理队列中包括有状态应答比较电路。本发明还提供了用于解决多处理器访问目录冲突的方法。本发明具有实现简单,无需像现有的侦听机制那样采用复杂的硬件资源的优点。在本发明的方法中,目录不会向处理器返回请求不成功的应答,处理器核也不需要实现请求重发机制,由此简化了处理器核的设计。

Description

一种用于解决多处理器访问目录冲突的装置和方法
技术领域
本发明涉及微处理器体系结构,特别涉及一种用于解决多处理器访问目录冲突的装置和方法。
背景技术
随着半导体技术的进步,处理器设计者可以利用更多的晶体管资源来实现更高性能的芯片。与此同时,目标工作负载也在不停地变化,从早期以科学计算为主到今天个人桌面应用、服务器事务处理、电子商务应用和各种嵌入式应用并存。在应用需求和半导体工艺水平提升的双重推动下,更高并行度的片上多处理器结构(Chip Multi-Processor,简称CMP)应运而生,并成为目前高性能处理器体系结构发展的最新方向。
一致性协议的设计是片上多处理器和传统多处理器系统设计的关键。一致性协议通过读写权限和Modified(修改)、Exclusive(独占)、Shared(共享)及Invalid(无效)等状态来维护高速缓存(Cache)的一致性。当面临不同的系统需求时,设计者需要选择合适的一致性协议实现技术来控制状态的转换。共享内存的系统可以采用基于总线的一致性协议、基于目录的一致性协议、基于环的一致性协议和基于令牌的一致性协议等。由于片上多处理器设计需要具有很好的可扩展性,基于目录的一致性协议无疑是个很好的选择。学术界和工业界很多处理器都采用了这种协议。
在常见的基于总线一致性协议的系统中,总线是一个天然的“串行点”,对总线的竞争使赢得仲裁的处理节点不仅获得了对总线独占的访问权限,也同时获得了对内存独占的访问权限,从而决定了对内存数据操作的顺序。而在基于目录一致性协议的系统中,由于各个处理器节点可同时访问多个内存区域,按照统一的全局顺序来处理所有访存请求几乎是不可能的。正因为无法隐式地通过总线的独占性来决定访存请求对缓存块状态的影响,基于目录的协议用一个目录来维护数据块在系统中的全局一致性状态。对应每一个数据块,在目录中都有一个条目与之对应,用于保存它的状态以响应未来的请求。目录用所有者位向量记录哪个处理器中拥有该数据块的备份。当收到一个请求时,目录根据条目中的信息可以选择直接回复数据,或者从其他处理器获得更新的数据再进行回复。
与总线类似,在基于目录的一致性协议中,目录也成为了一个用于处理相互冲突的访存请求和消除竞争情况的“串行点”。由于基于目录的协议不再基于集中式的总线结构,所以系统中可能同时存在多个对同一数据块的访问请求。这些请求之间的相互顺序是由目录处理它们的顺序决定的。在采用基于目录的一致性协议的设备中,由于用于连接处理器和目录所在缓存的互连网络存在延迟,且处理器和目录对不同请求应答的处理是一个分布的过程,因此容易引起数据和控制的不一致,从而导致错误或者死锁。为了解决这一问题,在对请求进行处理的过程中,内存块的状态出现了很多中间状态,如转换(transient)状态或者等待(pending)状态等。当内存块处于中间状态时,说明对该内存块的前一个访存请求还未完成,此时目录将会延迟处理对该内存块的其它后续冲突请求。目录控制器把这些冲突请求保存在队列中或是给冲突请求的请求者一个否认的反馈消息(negatively acknowledgement,NACK)。只有当内存块从中间状态转换为正常状态后,才能对后续的冲突请求进行处理。
在现有技术中,对中间状态是否转换为正常状态的监控采用了侦听机制,由于在部分操作中,侦听的对象在访问二级Cache后才能确定,而访问二级Cache延迟较大,需要多个流水级才能完成,因此需要进行多流水级的侦听。在多流水级的侦听中,需要增加多个地址比较电路,因而增加了相关装置的设计复杂度。此外由于侦听实质上是一种数据比较,因此当数据位较长时,所需要的比较逻辑也会很长,会增加相关装置的延时、面积和功耗。
发明内容
本发明的任务是克服现有的多处理器在发生访问目录冲突时采用侦听机制所带来的比较逻辑过长,增加相关装置的延时、面积和功耗等缺陷,从而提供一种能够有效解决多处理器访问目录冲突的方法。
为了实现上述目的,本发明提供了一种多处理器系统,用于解决多处理器中存在的目录访问冲突,其特征在于,包括:至少两个包含有一级缓存的处理器核,与所述处理器核连接的访存失效队列,至少两个二级缓存,与所述二级缓存连接的目录访问管理队列,所述的访存失效队列与所述的目录访问管理队列通过互连网络连接;其中,在所述的二级缓存中包括有用于维护缓存一致性的目录,在所述的目录访问管理队列中还包括有状态应答比较电路,在所述目录访问管理队列的每个队列项中还包括用于记录所述的状态应答比较结果是否一致的应答错误位;
所述处理器核发出的访存请求未在所述的一级缓存中命中后,相关的请求经由所述的访存失效队列与互连网络到达所述的目录访问管理队列,所述的目录访问管理队列对二级缓存中与所述访存请求相关的缓存块的目录进行访问,得到包含有所述缓存块的其它处理器核,向所述处理器核发送状态改变请求;所述的状态应答比较电路将所述的其它处理器核所返回的状态与所述目录中的状态进行比较,在比较结果一致时,在所述缓存块的目录项中添加发出访存请求的处理器核的信息,读出对应的数据,完成所述的访存请求;在比较结果不一致时,将所述应答错误位置为1,目录访问管理队列根据应答错误位的值决定用目录重试机制进行处理。
上述技术方案中,在所述目录访问管理队列的每个队列项中还包括用于记录处理器核应答返回次数的计数器。
上述技术方案中,所述目录的目录项中包括状态位、标记位以及目录位向量;其中,
所述的状态位用于记录目录项所对应的缓存块在所述一级缓存中的状态;
所述的标记位用于记录目录项所对应的缓存块在二级缓存中所存储的是哪个地址的数据;
所述的目录位向量则用于记录各个处理核是否拥有对应缓存块。
一种在所述的多处理器系统中解决目录访问冲突的方法,包括以下步骤:
步骤1)、处理器核发出的访存请求未在所述的一级缓存中命中后,与所述访存请求相关的缓存块所在的二级缓存中的目录访问管理队列查找所要访问的缓存块,并对所述缓存块的目录项进行访问;
步骤2)、若所述的二级缓存中包括有与所述访存请求相关的缓存块,且根据所述目录访问管理队列对所述缓存块的目录项的访问结果找到还包括有该所述缓存块的其他处理器核时,向所述的其他处理器核中的对应缓存块发送状态改变请求;
步骤3)、所述目录访问管理队列中的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较,在两者的比较结果一致时,执行下一步;
步骤4)、在所述缓存块的目录项中添加发出访存请求的处理器核的信息,读出对应的数据,完成所述的访存请求。
上述技术方案中,在所述的步骤3)中,还包括:
当所述处理器核所返回的状态信息与所述目录项中的对应状态信息不一致时,所述的目录访问管理队列重新对所述缓存块的目录项进行访问,若从所述的访问结果中找到包括该所述缓存块的其它处理器核,则向所述的其它处理器核中的对应缓存块发送状态改变请求,然后重新由所述的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较。
上述技术方案中,在所述的步骤2)或步骤3)中,还包括:
根据所述目录访问管理队列对所述缓存块的目录项的访问结果未找到包括有该所述缓存块的其他处理器核时,直接执行步骤4)。
上述技术方案中,在所述的步骤2)中,还包括:
当所述的二级缓存中未包括与所述访存请求相关的缓存块时,从所述二级缓存中找到被替换的缓存块,根据所述被替换的缓存块的目录项中的信息找到包括有该被替换的缓存块的其他处理器核,向所述的其他处理器核中的对应缓存块发送状态改变请求;
所述目录访问管理队列中的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较,当比较结果一致时,将从内存或从下一级缓存所得到的用于替换的缓存块代替二级缓存中被替换的缓存块,然后执行步骤4)。
上述技术方案中,若根据所述被替换的缓存块的目录项中的信息未找到包括有该被替换的缓存块的其他处理器核时,所述的目录访问管理队列将从内存或从下一级缓存所得到的用于替换的缓存块代替二级缓存中被替换的缓存块,然后执行步骤4)。
上述技术方案中,所述的状态改变请求包括:
用于表示无效一级缓存中的数据但不写回数据的Reqinv请求;
用于表示向二级缓存写回一级缓存中的数据,但不无效一级缓存中的数据,而是将其变为共享状态的Reqwtbk请求;
用于表示向二级缓存写回一级缓存中的数据,且无效一级缓存中的数 据的Reqinvwtbk请求。
本发明的优点在于:
1、本发明所采用的目录重试机制不需要增加目录中所记录的内存块的状态,对于每一个请求,其状态响应如果与发出请求时期待的状态响应不一致,就重新访问目录,实现简单,无需像现有的侦听机制那样采用复杂的硬件资源。
2、在本发明的方法中,目录不会向处理器返回请求不成功(NACK)的应答,处理器核也不需要实现请求重发机制,由此简化了处理器核的设计。
附图说明
以下,结合附图来详细说明本发明的实施例,其中:
图1为本发明中能够解决多处理器目录访问冲突的多处理器系统的示意图;
图2为本发明的用于解决多处理器访问目录冲突的方法的示意图。
具体实施方式
在对本发明的方法进行详细说明前,首先就本发明中所涉及的一致性协议的一些基本内容加以说明,以方便理解。
在一致性协议中使用一致性状态来跟踪处理器的高速缓存(Cache)中每一个高速缓存块(简称缓存块)的读写状态。以最为常见的MESI协议为例,一个缓存块可以处于以下四种状态之一:Modified(修改)、Exclusive(独占)、Shared(共享)或者Invalid(无效)。如果一个缓存块不在Cache中或者处于Invalid状态,当访存请求到达时,数据将从下一级存储层次中取回以响应该请求。如果一个缓存块处于Shared状态,表明该缓存块包含的数据在系统中可能存在一个或多个备份,同时也表明其他备份不会处于Modified状态或Exclusive状态,处理器可以对这个缓存块进行读操作,但是不能进行写操作。如果一个缓存块处于Exclusive状态,表明该缓存块是系统中唯一的备份,其他处理器的缓存中不存在该数据块的备份,而且它的内容没有被改写过,与内存中的数据内容是一致的,处理器可以对该块进行读写操作或将其替换出缓存。如果一个缓存块处于Modified状态,同样表明该缓存块是系统中唯一有效的备份,而且内容已 经被处理器改写过,处理器可以读写这个缓存块,但是当它被替换出缓存时,必须将它已被改写的内容写回内存。在本实施例中,对上述的一致性状态进行了一定的修改,将Modified状态和Exclusive状态统一为Exclusive状态,表示相应的Cache块处于独占状态,处理器读写该块都直接命中。每个Cache块还有表示该块是否被写过的w位,如果该块被写,则置w位有效(如置为1)。当缓存块位于Exclusive状态且w位有效时,该状态相当于原先的Modified状态,当当缓存块位于Exclusive状态且w位无效时,该状态相当于原先的Exclusive状态。
在下面的表1中对本发明中所采用的一致性状态进行了说明,并对缓存在相应的一致性状态下收到各个请求时所要实现的操作进行了说明。在下文中将结合具体的例子,对表中的内容进行说明。
Figure DEST_PATH_G2008101198565D00061
Figure DEST_PATH_G2008101198565D00071
Figure DEST_PATH_G2008101198565D00081
表1
在上述表格中,reqread请求表示请求读操作;reqwrite请求表示请求写操作;reqreplace请求表示请求替换写回操作;Reqinv请求表示无效一级缓存中的数据但不写回;Reqwtbk请求表示向二级缓存写回一级缓存中的数据,但并不无效一级缓存中的数据,而是将其变为共享状态;Reqinvwtbk请求表示向二级缓存写回一级缓存中的数据,且无效一级缓存中的数据。
下面结合附图和具体实施例对本发明进行说明。
图1给出了适用于本发明的片上多处理器的一种典型配置方案,在该方案中包括m+1个处理器核P0、P1、......、Pm-1和Pm,以及n+1个二级缓存块S0、S1、......、Sn-1和Sn(其中m和n是正整数);此外还包括访存失效队列missq(Miss Queue),以及目录访问管理队列dirq(DirectoryQueue)。本领域的普通技术人员应当了解,在各个处理器核中还包括有一级缓存,但在图1中没有做相应的标记。上述的处理器核与二级缓存间可以通过互连网络连接,此处所述的互连网络可以采用现有技术中各种类型的网络,如直接连接、总线、交叉开关、Mesh网络、Torus网络、星形网络、树形网络、环形网络和上述一个或多个互连结构组合的混合形网络。在片上多处理器中,一个访存失效队列missq对应一个处理器核,访存失效队列missq用于控制本地一级缓存和二级缓存之间的交互,负责发送一级缓存的失效请求到二级缓存、接收二级缓存的数据响应、接收来自二级缓存的外部操作请求、向二级缓存返回外部操作请求的应答。在片上多处理器中,一个目录访问管理队列dirq对应一个二级缓存,目录访问管理队列dirq负责处理所有发向对应二级缓存的访问请求。要注意的是,在图1所示实施例中,处理器核P0所发出的请求并不必然发送到二级缓存S0上,对于处理器核P0而言,所有的二级缓存都是一样的。反过来,对于二级缓存也是一样。
在本发明中,Cache一致性的维护在所述的二级缓存上实现,即用于维护Cache一致性的目录在二级缓存上。在二级缓存中,每一个数据块对应有一个目录项,在每一个目录项中包括有状态位、标记位(TAG)以及 目录位向量(directory bit vector)。在下表2中给出了所述目录的目录项的示意图。
  
状态位 标记位 目录位向量
表2
上述目录项中的状态位用于记录缓存块在一级缓存中的状态,这些状态包括表1中所述的Invalid、Shared以及Exclusive。标记位用于记录对应的二级缓存行所存储的是哪个地址的数据,而目录位向量则用于记录各个处理核是否拥有该缓存块,因此,目录位向量的位数与处理器核的个数有关,如果处理器核有4个,则目录位向量有8位,每个核对应2位,1位用于表示数据缓存,1位用于表示指令缓存。例如,在下列目录项中,在状态位指出了对应的缓存块的状态是Shared,在标记位指出了该缓存块存储的是地址为0x00ff321c的数据,而在每两个目录位向量中,第一位表示指令缓存,第二位表示数据缓存,该目录项对应的缓存在第一个处理器核与第三个处理核中都有备份。
  
shared 0x00ff321c 0 1 0 0 0 1 0 0
表3
为了满足本发明的需要,在上述的片上多处理器中,还在现有的目录访问管理队列dirq的基础上,对目录访问管理队列做了一定的改进,包括:在该队列中添加状态应答比较电路,在每一个目录访问管理队列项中增加应答错误位(reperr)以及用于记录处理器核应答返回情况的计数器。应答错误位初始值为0。所述的状态应答比较电路用于将处理器核返回的状态应答与目录期待的状态应答进行比较,而应答错误位则根据状态比较电路的比较结果进行置位,若处理器核的应答与目录期待的应答不一致,则将应答错误位置1。而目录访问管理队列项中的计数器则用来记录处理器核的应答返回情况,其初始值为需要发出请求的处理器核的数目,每收到一个处理器核的状态应答,该计数器的值就减1,当计数器的值变为0时,处理器核的应答都已返回。对于上述的状态应答比较电路、应答错误位以及计数器的具体应用场景以及相关的作用将在下文中详细说明。
在对图1的上述说明中,对可用于本发明的片上多处理器的一种实现方式进行了说明,下面将在此片上多处理器的基础上对目录冲突解决方法 的实现步骤进行说明。应当指出,本发明的目录冲突解决方法并不限于图1所示的片上多处理器,对于现有技术中其它采用目录一致性协议的片上多处理器或传统多处理器系统,只要在目录访问管理队列中添加了具有前述状态应答比较电路、应答错误位以及计数器的相应功能的部件,都可应用于本发明的目录冲突解决方法。
在一个实施例中,假设处理器核P1的一级缓存中拥有一个Shared状态的缓存块,现在需要对这一缓存块做写操作。由于该缓存块是Shared状态,可能在其它处理器核中具有对该缓存块的备份,因此,为了保持数据的一致性,不能直接对该缓存块进行写操作,而需要根据目录中所记录的数据决定如何对该缓存块做进一步的处理。如前所述,所述目录位于二级缓存中,且由于二级缓存包含有一级缓存中所有的缓存块,因此由P1的missq向包含该缓存块的二级缓存发送reqwrite请求,同时在missq队列中保存这一reqwrite请求。在相近时刻,处理器核P2也要对这一缓存块进行写操作,但处理器核P2没有该缓存块,因此也需要由P2的missq队列向包含该缓存块的二级缓存发送reqwrite请求,并在P2的missq队列中保存reqwrite请求。假设这一缓存块在二级缓存S1中,因此,P1与P2所发送的reqwrite请求都会到达S1的dirq队列中。若P1发送请求到达S1的时间在前,则在dirq队列中,P1的请求在前,P2的请求在后。在dirq队列中,对请求的处理顺序可以有多种,如先进先出、随机选择等。在本实施例中先进先出的顺序对请求进行处理,因此,dirq队列首先对P1的请求进行处理。
dirq队列根据P1的reqwrite请求向二级缓存发出访问请求,向对应缓存块的目录项中访问该缓存块的相关信息,如表2所述,目录项中的状态位记录了缓存块的状态信息,而在目录位向量中则记录了缓存块在各个处理器中的备份情况。根据访问结果可以知道,要进行写操作的缓存块有效且在一级缓存中为Shared状态,并且只有处理器核P1拥有该块的备份。上述访问结果得到后,返回给dirq队列。dirq队列根据访问结果知道应当将处理器核P1中对应缓存块的状态由Shared状态改为Exclusive状态,同时在目录位向量中不需要改变所标记的其他处理器核的缓存块的状态。据此,在目录项中将该缓存块在一级缓存中的状态由Shared改为Exclusive,然后将包含缓存块数据与Exclusive状态响应的信息作为reqwrite请求响应返回给处理器核P1。此处需要将缓存块的数据返回给处理器核P1是为了 防止这一数据被置换出一级缓存。此外,还需要在dirq队列中将P1的reqwrite请求退出队列。
在dirq队列中,P1的reqwrite请求退出后,接着对P2的reqwrite请求进行处理。P2的reqwrite请求同样是要对前述的缓存块进行处理,因此,dirq队列再次访问相应缓存块的目录,得到该缓存块有效,在一级缓存中的状态为Exclusive,且在处理器核P1中拥有该块的备份的访问结果。将这一查询结果返回给dirq队列。由于P2要对该缓存块进行写操作,因此需要从P1获得该缓存块的控制权,此外,由于P1在此前可能对缓存块中的数据内容进行了修改,因此还需要P1将修改后的内容返回给二级缓存,由P2在修改后的内容的基础上再写新的内容。考虑到上述原因,dirq队列项发出reqinvwtbk请求,以无效并写回P1中的相应一级缓存块。由于dirq队列项只需要向P1发出reqinvwtbk请求,因此将dirq队列项中的计数器的初始值赋为1,应答错误位的初始值赋为0。
在上述的两段描述中可以看到,S1的dirq队列对于P1的reqwrite请求会向P1返回reqwrite请求响应,而S1的dirq队列根据P2的reqwrite请求会向P1发送reqinvwtbk请求。这里所述的reqwrite请求响应与reqinvwtbk请求是两种不同类型的信息,因此在P1的missq队列会分开放置,其中的reqwrite请求响应会与前面所提到的reqwrite请求放置在一起,而reqinvwtbk请求则会单独放置。由于对上述两类信息的处理顺序上不存在逻辑关系,即先到的第一类信息未必会比后到的第二类信息早处理,再加上reqwrite请求响应与reqinvwtbk请求在互连网络上又可能是由不同的数据通道发送的,传输过程中没有顺序关系,先于reqinvwtbk请求发出的repwrite请求响应在P1中的missq队列中可能会后收到,因此,请求处理的一致性上会存在问题。
例如,missq队列首先对reqinvwtbk请求进行处理,但此时P1的missq队列还没有对reqwrite请求响应进行处理,即还没有将一级缓存中相应缓存块的状态由Shared改为Exclusive,根据表1中的记载,对Shared状态的缓存块无法执行reqinvwtbk请求中的无效并写回操作,需要将缓存块的Shared状态返回给发出reqinvwtbk请求的S1,再将reqinvwtbk请求从missq中退出。当S1的dirq队列收到Shared状态响应后,在前述的状态比较电路中将其与目录中所记录的P1的一级缓存块的状态进行比较,由于目录中记录的状态是Exclusive,两者显然不一致,因此需要将应答错误位置1, 目录访问管理队列根据应答错误位的值决定用目录重试机制进行处理,即对目录重新进行访问。所述的目录重新访问包括读出该块有效,在一级缓存中对应缓存块的状态为Exclusive,且在P1中拥有该块的备份。将上述的目录重新访问结果返回dirq队列后,dirq队列又会生成reqinvwtbk请求并向P1发出。虽然二次发出的reqinvwtbk请求仍然有可能在P1的missq队列中更早处理,但为了说明的方便,此处假设P1的missq队列先处理reqwrite请求响应,再处理二次发出的reqinvwtbk请求。对reqwrite请求响应进行处理时,完成Shared状态到Exclusive状态的转换,并实现数据的填充,此时,P1所要求的写操作完成,将reqwrite请求以及reqwrite请求响应一并从missq队列中退出。missq队列接着再次执行reqinvwtbk请求,从表1中的内容可以看出,当一级缓存位于Exclusive状态时,所执行的reqinvwtbk请求包括将一级缓存的状态改为Invalid状态,然后向位于二级缓存中的目录发送reqinvwtbk应答,该应答中包括:状态响应Exclusive,以及用于把相应的缓存块写回二级缓存的数据。完成对reqinvwtbk请求的执行后,reqinvwtbk请求从P1的missq中退出。
在P1中完成reqinvwtbk请求,将数据写回二级缓存后,在二级缓存中将对应缓存块的目录项修改为P1的一级缓存不再拥有该缓存块的备份,即在相应位置0,同时还将dirq队列项中的计数器的值减1。该计数器的值减1后变为0,表示处理器核的应答都已经返回。由于dirq队列所接收到的一级缓存块状态是Exclusive,与期待的状态响应相一致,因此,在dirq队列中将应答错误位的值置为0,并向二级缓存的目录项中添加缓存块是Exclusive状态,且处理器核P2拥有该缓存块备份的信息。然后从二级缓存中读出该缓存块的数据,将该数据与Exclusive状态一起作为P2发出的repwrite请求响应返回给P2的missq队列。P2的missq队列接到该repwrite请求响应后,向P2中的一级缓存填充数据以及相应的状态,然后将P2发出的reqwrite请求从missq中退出。
以上是对片上多处理器中发生一致性冲突并如何解决该冲突的一种情况的说明,为了更好地对本发明的方法进行说明,下面给出了又一个实施例。
仍然在图1所示的片上多处理器的基础上,假设处理器P2需要从一级缓存中读取一个数据块,但该数据块并不在一级缓存中,即在一级Cache访问失败,因此发出一个读请求reqread到P2的missq队列,P2的missq 队列保存该reqread请求,并向该数据块所在的二级缓存发出读请求reqread。若数据块所在的二级缓存为S3,则S3的dirq队列接收到读请求reqread后,在目录中访问与该数据块相关的信息。从访问的结果知道,该数据块不在二级缓存中,在下一级的高速缓存或内存中。因此,需要在二级缓存中找到一个被替换的缓存块,以将该被替换的缓存块的内容替换出二级缓存,从而为所要读取数据块腾出存储空间。被替换的缓存块的查找属于现有技术,与所要读取数据块的Cache行索引(Index)相同的数据块就可以作为被替换的缓存块。
在将被替换的缓存块换出二级缓存前,读取被替换的缓存块的目录信息,得到被替换的缓存块有效,在一级缓存中的状态为Exclusive,且在P1中拥有该块的备份的信息。将读取的结果返回dirq队列。为了维护二级缓存对一级缓存的包含关系,dirq队列需要将被替换的缓存块在P1的一级缓存中的备份换出,考虑到被替换的缓存块在一级缓存中的状态为Exclusive,在一级缓存中可能被修改,因此dirq队列向P1发出写回并无效请求reqinvwtbk,期待P1写回被替换的缓存块的数据并返回Exclusive的状态响应,这一请求由P1的missq队列接收。在实际运行过程中,由于P1的一级缓存在被reqinvwtbk请求无效并写回前,可能通过自身的替换操作repreplace已经将所述被替换的缓存块换出一级缓存,一级缓存在自身的替换操作中,会将所述被替换的缓存块的状态由Exclusive转变为Invalid,并将相应的数据以及Invalid状态发送给相应的二级缓存。由于互连网络传输的延迟,这些数据和Invalid状态在S3的dirq队列发出reqinvwtbk请求前还没有被传送到S3,因此,还不会对reqinvwtbk请求的生成和发出产生影响。但当missq队列在对reqinvwtbk请求进行处理时,由于一级缓存中所述被替换的缓存块的状态已经由Exclusive变为了Invalid,因此missq队列对reqinvwtbk请求进行处理的结果(reqinvwtbk请求的响应)中只包括了Invalid状态响应,这与前述所期待的“写回被替换的缓存块的数据并返回Exclusive的状态响应”有很大的差别。因此S3的dirq队列需要对目录重新进行访问。如果前述的由于一级缓存自身替换所产生的数据和Invalid状态响应仍然没有到达S3,则根据目录的重新访问结果还会向P1发出写回并无效请求reqinvwtbk,如果所述的数据和Invalid状态响应已经到达了S3,则S3的dirq队列会将所述被替换的缓存块的数据写入二级缓存中,并修改相应的目录,将目录的状态由Exclusive 改为Invalid,在目录位向量中标记所述被替换的缓存块不再存在于处理器核P1中。在目录中进行上述修改后,下次重新访问后就不会再向P1发出写回并无效请求reqinvwtbk,从而完成了对所述被替换的缓存块在一级缓存中的处理。
S3的dirq队列从下一级高速缓存或内存中找到所要读取的数据块后,将所述被替换的缓存块的内容写到内存中,然后将所要读取的数据块的内容写到所述被替换的缓存块在二级缓存中的相应位置上,然后在目录中将该块的状态置为Shared,并在目录位向量中记录处理器核P2拥有该数据块的Shared状态的备份。Dirq队列将数据和Shared状态响应作为repread请求的响应返回给P2。P2向自身的一级缓存填充数据和状态,reqread请求从missq队列中退出。P2的失效请求处理完成。
在上述实施例中,当被替换的缓存块在一级缓存中的状态为Exclusive时,向一级缓存发送reqinvwtbk请求,但如果被替换的缓存块在一级缓存中的状态为Shared状态,则所发出的请求为无效但不写回请求Reqinv。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1.一种多处理器系统,用于解决多处理器中存在的目录访问冲突,其特征在于,包括:至少两个包含有一级缓存的处理器核,与所述处理器核连接的访存失效队列,至少两个二级缓存,与所述二级缓存连接的目录访问管理队列,所述的访存失效队列与所述的目录访问管理队列通过互连网络连接;其中,在所述的二级缓存中包括有用于维护缓存一致性的目录,在所述的目录访问管理队列中还包括有状态应答比较电路,在所述目录访问管理队列的每个队列项中还包括用于记录所述的状态应答比较结果是否一致的应答错误位;
所述处理器核发出的访存请求未在所述的一级缓存中命中后,相关的请求经由所述的访存失效队列与互连网络到达所述的目录访问管理队列,所述的目录访问管理队列对二级缓存中与所述访存请求相关的缓存块的目录进行访问,得到包含有所述缓存块的其它处理器核,向所述其它处理器核发送状态改变请求;所述的状态应答比较电路将所述的其它处理器核所返回的状态与所述目录中的状态进行比较,在比较结果一致时,在所述缓存块的目录项中添加发出访存请求的处理器核的信息,读出对应的数据,完成所述的访存请求;在比较结果不一致时,将所述应答错误位置为1,目录访问管理队列根据应答错误位的值决定用目录重试机制进行处理。
2.根据权利要求1所述的多处理器系统,其特征在于,在所述目录访问管理队列的每个队列项中还包括用于记录处理器核应答返回次数的计数器。
3.根据权利要求1所述的多处理器系统,其特征在于,所述目录的目录项中包括状态位、标记位以及目录位向量;其中,
所述的状态位用于记录目录项所对应的缓存块在所述一级缓存中的状态;
所述的标记位用于记录目录项所对应的缓存块在二级缓存中所存储的是哪个地址的数据;
所述的目录位向量则用于记录各个处理核是否拥有对应缓存块。
4.一种在权利要求1-3之一所述的多处理器系统中解决目录访问冲突的方法,包括以下步骤: 
步骤1)、处理器核发出的访存请求未在所述的一级缓存中命中后,与所述访存请求相关的缓存块所在的二级缓存中的目录访问管理队列查找所要访问的缓存块,并对所述缓存块的目录项进行访问;
步骤2)、若所述的二级缓存中包括有与所述访存请求相关的缓存块,且根据所述目录访问管理队列对所述缓存块的目录项的访问结果找到还包括有该所述缓存块的其他处理器核时,向所述的其他处理器核中的对应缓存块发送状态改变请求;
步骤3)、所述目录访问管理队列中的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较,在两者的比较结果一致时,执行下一步;
步骤4)、在所述缓存块的目录项中添加发出访存请求的处理器核的信息,读出对应的数据,完成所述的访存请求。
5.根据权利要求4所述的在多处理器系统中解决目录访问冲突的方法,其特征在于,在所述的步骤3)中,还包括:
当所述处理器核所返回的状态信息与所述目录项中的对应状态信息不一致时,所述的目录访问管理队列重新对所述缓存块的目录项进行访问,若从所述的访问结果中找到包括该所述缓存块的其它处理器核,则向所述的其它处理器核中的对应缓存块发送状态改变请求,然后重新由所述的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较。
6.根据权利要求5所述的在多处理器系统中解决目录访问冲突的方法,其特征在于,在所述的步骤2)或步骤3)中,还包括:
根据所述目录访问管理队列对所述缓存块的目录项的访问结果未找到包括有该所述缓存块的其他处理器核时,直接执行步骤4)。
7.根据权利要求4所述的在多处理器系统中解决目录访问冲突的方法,其特征在于,在所述的步骤2)中,还包括:
当所述的二级缓存中未包括与所述访存请求相关的缓存块时,从所述二级缓存中找到被替换的缓存块,根据所述被替换的缓存块的目录项中的信息找到包括有该被替换的缓存块的其他处理器核,向所述的其他处理器核中的对应缓存块发送状态改变请求;
所述目录访问管理队列中的状态应答比较电路将所述处理器核所返回的状态信息与所述目录项中的对应状态信息进行比较,当比较结果一致 时,将从内存或从下一级缓存所得到的用于替换的缓存块代替二级缓存中被替换的缓存块,然后执行步骤4)。
8.根据权利要求7所述的在多处理器系统中解决目录访问冲突的方法,其特征在于,若根据所述被替换的缓存块的目录项中的信息未找到包括有该被替换的缓存块的其他处理器核时,所述的目录访问管理队列将从内存或从下一级缓存所得到的用于替换的缓存块代替二级缓存中被替换的缓存块,然后执行步骤4)。
9.根据权利要求4所述的在多处理器系统中解决目录访问冲突的方法,其特征在于,所述的状态改变请求包括:
用于表示无效一级缓存中的数据但不写回数据的Reqinv请求;
用于表示向二级缓存写回一级缓存中的数据,但不无效一级缓存中的数据,而是将其变为共享状态的Reqwtbk请求;
用于表示向二级缓存写回一级缓存中的数据,且无效一级缓存中的数据的Reqinvwtbk请求。 
CN2008101198565A 2008-09-12 2008-09-12 一种用于解决多处理器访问目录冲突的装置和方法 Active CN101354682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101198565A CN101354682B (zh) 2008-09-12 2008-09-12 一种用于解决多处理器访问目录冲突的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101198565A CN101354682B (zh) 2008-09-12 2008-09-12 一种用于解决多处理器访问目录冲突的装置和方法

Publications (2)

Publication Number Publication Date
CN101354682A CN101354682A (zh) 2009-01-28
CN101354682B true CN101354682B (zh) 2010-12-15

Family

ID=40307499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101198565A Active CN101354682B (zh) 2008-09-12 2008-09-12 一种用于解决多处理器访问目录冲突的装置和方法

Country Status (1)

Country Link
CN (1) CN101354682B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819506A (zh) * 2012-08-03 2012-12-12 中国人民解放军国防科学技术大学 一种基于双相关链的监听应答处理方法
CN103500108A (zh) * 2013-09-27 2014-01-08 杭州华为数字技术有限公司 系统内存访问方法、节点控制器和多处理器系统

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063406B (zh) * 2010-12-21 2012-07-25 清华大学 用于多核处理器的网络共享Cache及其目录控制方法
CN102662885B (zh) * 2012-04-01 2015-09-23 天津国芯科技有限公司 对称式多核处理器维护二级缓存一致性的装置及其方法
CN102831024B (zh) * 2012-08-03 2014-12-17 中国人民解放军国防科学技术大学 一种基于随机扰动的防饿死访存请求唤醒方法
CN104252423B (zh) * 2013-06-26 2017-12-15 华为技术有限公司 基于多内核处理器的一致性处理方法和装置
CN103870395B (zh) 2014-03-04 2017-08-04 华为技术有限公司 一种目录维护方法及装置
CN106104502B (zh) * 2014-03-20 2019-03-22 慧与发展有限责任合伙企业 用于存储系统事务的系统、方法和介质
CN104978283B (zh) * 2014-04-10 2018-06-05 华为技术有限公司 一种内存访问控制方法,及装置
CN105468540B (zh) * 2014-09-04 2019-11-15 深圳市中兴微电子技术有限公司 L2 Cache及其一致性实现方法和数据处理系统
CN104714901B (zh) * 2015-03-13 2018-07-03 浪潮集团有限公司 一种基于计数器的粗结构目录设计方法
CN105912477B (zh) * 2016-04-05 2019-01-01 浪潮电子信息产业股份有限公司 一种目录读取的方法、装置及系统
CN108804020B (zh) * 2017-05-05 2020-10-09 华为技术有限公司 一种存储处理方法及装置
CN109062613B (zh) 2018-06-01 2020-08-28 杭州中天微系统有限公司 多核互联二级缓存访问验证方法
CN111858147A (zh) * 2019-04-29 2020-10-30 中国移动通信集团贵州有限公司 容灾处理方法、装置、移动终端及存储介质
CN113900966B (zh) * 2021-11-16 2022-03-25 北京微核芯科技有限公司 一种基于Cache的访存方法及装置
CN117472804B (zh) * 2023-12-28 2024-04-09 北京微核芯科技有限公司 访存失效队列处理方法、装置及电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819506A (zh) * 2012-08-03 2012-12-12 中国人民解放军国防科学技术大学 一种基于双相关链的监听应答处理方法
CN102819506B (zh) * 2012-08-03 2015-06-10 中国人民解放军国防科学技术大学 一种基于双相关链的监听应答处理方法
CN103500108A (zh) * 2013-09-27 2014-01-08 杭州华为数字技术有限公司 系统内存访问方法、节点控制器和多处理器系统
CN103500108B (zh) * 2013-09-27 2016-08-10 杭州华为数字技术有限公司 系统内存访问方法、节点控制器和多处理器系统

Also Published As

Publication number Publication date
CN101354682A (zh) 2009-01-28

Similar Documents

Publication Publication Date Title
CN101354682B (zh) 一种用于解决多处理器访问目录冲突的装置和方法
US7814279B2 (en) Low-cost cache coherency for accelerators
CN101430664B (zh) 一种多处理器系统及Cache一致性消息传输方法
US8818942B2 (en) Database system with multiple layer distribution
US7340565B2 (en) Source request arbitration
CN101625664B (zh) 满足部分写和非监听存取之间的存储器排序要求
US7543115B1 (en) Two-hop source snoop based cache coherence protocol
CN101625663A (zh) 满足部分读取和非监听访问之间的访存顺序要求
US8706970B2 (en) Dynamic cache queue allocation based on destination availability
JP2005519391A (ja) 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム
EP3404537B1 (en) Processing node, computer system and transaction conflict detection method
CN112579480B (zh) 存储管理方法、存储管理装置以及计算机系统
CN103294611A (zh) 一种基于有限数据一致性状态的服务器节点数据缓存方法
US7174430B1 (en) Bandwidth reduction technique using cache-to-cache transfer prediction in a snooping-based cache-coherent cluster of multiprocessing nodes
KR20050074310A (ko) 캐시 라인 소유권 이전 방법 및 장치
US6363458B1 (en) Adaptive granularity method for integration of fine and coarse communication in the distributed shared memory system
US20040068616A1 (en) System and method enabling efficient cache line reuse in a computer system
KR102027391B1 (ko) 멀티 코어 시스템에서 데이터 방문자 디렉토리에 액세스하는 방법 및 장치
CN116057514A (zh) 可扩展高速缓存一致性协议
JP4882233B2 (ja) メモリ制御装置及び制御方法
JP2006079218A (ja) メモリ制御装置及び制御方法
US7089372B2 (en) Local region table for storage of information regarding memory access by other nodes
US20210349840A1 (en) System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol
US6895476B2 (en) Retry-based late race resolution mechanism for a computer system
US20050060383A1 (en) Temporary storage of memory line while waiting for cache eviction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31

Contract record no.: 2010990000062

Denomination of invention: Apparatus and method for settling access catalog conflict of multi-processor

License type: exclusive license

Record date: 20100128

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C14 Grant of patent or utility model
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20090128

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: Apparatus and method for settling access catalog conflict of multi-processor

Granted publication date: 20101215

License type: Common License

Record date: 20150211

TR01 Transfer of patent right

Effective date of registration: 20200819

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

EC01 Cancellation of recordation of patent licensing contract
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.