掌桥专利:专业的专利平台
掌桥专利
首页

用于高速缓存行逐出的多级高速缓存一致性协议

文献发布时间:2024-04-18 19:52:40


用于高速缓存行逐出的多级高速缓存一致性协议

相关申请

本申请要求2020年9月25日提交的美国临时申请号63/083,810的优先权,该申请以引用的方式全文并入本文。

背景技术

现代计算系统具有多个中央处理单元(CPU),其通常包括并依赖于高速缓存分级结构中的多个高速缓存来改善处理器和存储器性能。与主存储器相比,高速缓存是较小且较快的存储器设备,其存储频繁存取或预期在不久的将来使用的数据,使得可以以低等待时间存取数据。此类高速缓存设备通常实施于静态随机存取存储器(SRAM)中且通常位于发出存储器请求的处理单元与主存储器设备之间。存储器侧高速缓存是附接到特定存储器设备或分区的专用高速缓存,其对由其它装置写入到存储器设备及从存储器设备读取的数据进行高速缓存。

计算系统中的高速缓存子系统包括被配置为存储数据块的高速高速缓存存储器。如本文所用,“块”是存储在连续存储器位置中的一组字节,出于一致性目的,其被视为单元。如本文中所使用的,术语“高速缓存块”、“块”、“高速缓存行”及“行”中的每一者可互换。在一些实施方案中,块也可以是高速缓存中的分配和释放单元。块中字节的数目根据设计选择而变化,并且大小可变化。

在多节点计算机系统中,必须采取特殊的预防措施来维持由不同处理节点所使用的数据的一致性。例如,如果处理器尝试访问某个存储器地址处的数据,则它必须首先确定该存储器是否被存储在另一高速缓存中并且已经被修改。为了实施这种高速缓存一致性协议,高速缓存通常包含多个状态位以指示高速缓存行的状态以维持整个系统中的数据一致性。例如,一种一致性协议是“MOESI”协议,其中每个字母表示高速缓存行的状态。这些状态如下:高速缓存行已被修改(M),高速缓存行是排他的(E)或共享的(S),或者高速缓存行是无效的(I)。拥有(O)状态指示:该行在一个高速缓存中被修改,在其他高速缓存中可能存在共享副本,并且存储器中的数据是陈旧的。每个高速缓存行包括高速缓存目录(其跟踪由系统当前使用的高速缓存行)中的状态位,以指示该行处于哪个MOESI状态。

附图说明

本文中的附图的图中所说明的实施方案是作为示例而非作为限制。在附图中:

图1是计算系统的一个实施方案的框图。

图2是核心复合的一个实施方案的框图。

图3是多CPU处理器系统的一个实施方案的框图。

图4是示出用于执行脏高速缓存行逐出的过程的流程图。

图5是示出用于减少处理器系统中的占用压力和瓶颈的过程的一个实施方案的流程图。

图6是示出用于在逐出与对相同地址的另一事务之间不存在重叠时降低处理器系统中的占用压力的过程的一个实施方案的流程图。

图7A是示出根据实施方案的用于当在到相同地址的脏高速缓存行逐出事务完成之前在一致性主控器处接收到探测时降低处理器系统中的占用压力的过程的流程图。

图7B是示出根据实施方案的用于当在到相同地址的脏高速缓存行逐出事务完成之前在一致性主控器处接收到探测时降低处理器系统中的占用压力的过程的流程图。

具体实施方式

以下描述阐述了众多具体细节诸如特定系统、部件、方法等的示例,以便提供对实施方案的良好理解。然而,对于本领域技术人员将显而易见的是,可在没有这些具体细节的情况下实践至少一些实施方案。在其他情况下,未详细描述众所周知的部件或方法,或者以简单的框图格式呈现众所周知的部件或方法,以便避免不必要地混淆实施方案。因此,所阐述的具体细节仅是示例性的。特定具体实施可因这些示例性细节而异,并且仍设想在实施方案的范围内。

通常,存储在高速缓存子系统中的数据不再被定期地利用,并且数据的高速缓存行可以被标记为用于逐出,这意味着该高速缓存行(有时被称为“牺牲品”)被从高速缓存子系统清除以为新的高速缓存行腾出空间。被逐出的高速缓存行或牺牲品可能是“脏的”或“干净的”。如果牺牲品高速缓存行是脏的,这意味着牺牲品内的数据已经被修改,并且应当在从高速缓存和相关联的缓冲器清除牺牲品之前用最新的副本来更新存储器。

从高速缓存执行脏的或干净的高速缓存行逐出涉及与其他事务竞争的多个操作。每个事务的操作典型地以串行方式执行,并且当数据和信号在系统内的各种接口块之间交互时处于优先级队列中。逐出事务的执行方案占用高速缓存子系统和其它计算机系统接口块处的资源以保持高速缓存一致性。因此,取决于高速缓存子系统和其它计算机系统接口块之间的距离,事务的寿命或占用大大增加。此占用可能在具有多个CPU集群的大型系统中产生瓶颈,其中每个集群具有其自身的高速缓存子系统及跨多个插槽分布的相关联系统接口块。为了简单起见,这里描述的实施方案将涉及脏高速缓存行逐出。然而,该过程和系统也适用于干净高速缓存行逐出。

图1是根据一个实施方案的计算系统100的框图,用于执行更高效率的高速缓存行事务,诸如脏或干净高速缓存行逐出。在一个实施方案中,计算系统100包括多个CPU子系统105A-N、输入/输出(I/O)接口120、数据编织/总线125、多个归属节点130A-N以及网络接口135。在其它实施方案中,计算系统100可以包括其它部件和/或以其它配置布置。为清楚起见,如本文所用,“核心复合”也可以称为“CPU”。

在一个实施方案中,每个CPU子系统105A-N可以包括各种部件,诸如用于管理高速缓存一致性的一致性主控器(例如,图3的一致性主控器315A)和处理部件,诸如一个或多个处理器核心主控器(例如,图3的核心308A)或其他专用处理部件。CPU子系统105A-N内的每个处理器核心包括高速缓存子系统,该高速缓存子系统具有连接到一致性主控器的一级或多级高速缓存。在一个实施方案中,高速缓存子系统包括连接到每个CPU子系统105A-N的共享高速缓存(例如,图2的L3高速缓存230)。在一些实施方案中,一个或多个CPU子系统105A-N可以包括具有高度并行架构的数据并行处理器,诸如图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等中的一者或多者。如本文所用,“核心复合”也可以称为“处理节点”或“CPU”。

在一个实施方案中,归属节点130可以包括一致性从控器、高速缓存目录及耦接到任何数目及类型的存储器设备(未示出)的存储器控制器中的一者或多者。例如,耦接到归属节点130的存储器设备可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。

在各种实施方案中,每一归属节点130A-N及每一CPU子系统105A-N包括用以彼此通信以发送探测、确认及将数据(例如高速缓存行或高速缓存区域数据)移动到请求位置及存储器等的逻辑。例如,CPU子系统105A可以与归属节点130N交换信号以处理脏高速缓存行逐出。

I/O接口120代表任何数目和类型的I/O接口,例如但不限于各种类型的外围部件互连(PCI)总线、千兆以太网(GBE)总线、通用串行总线(USB)、专用处理器(例如,平台安全处理器、图形处理器)和系统管理逻辑。各种类型的外围设备可以耦接到I/O接口120。此类外围设备包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录设备、外部存储设备、网络接口卡等。

在各种实施方案中,计算系统100可以是服务器、台式计算机、膝上型计算机、移动设备、游戏机、流式传输设备、可穿戴设备或各种其它类型的计算系统或设备中的任一种。计算系统100中示出的部件的数目、取向和类型仅作为示例,并且可以基于应用和系统架构在不同的实施方案之间变化。

图2是例如可以在图1的CPU子系统105A-N内找到的CPU复合200的一个实施方案的框图。CPU复合200可以包括四个处理器核心210A-D和包括L1高速缓存215A-D、L2高速缓存220A-D和L3高速缓存230的高速缓存子系统。在CPU复合200的一个实施方案中,高速缓存子系统包括被配置为存储数据块(未示出)的高速高速缓存存储器(例如,L1高速缓存215A-D、L2高速缓存220A-D和L3高速缓存230)。如本文所用,“块”是存储在高速缓存存储器内连续存储器位置中的一组字节,出于一致性目的,其被视为单元。另外,术语“高速缓存块”、“块”、“高速缓存行”及“行”中的每一者在本文中可互换。在一些实施方案中,块也可以是高速缓存中的分配和释放单元。可以从系统内的其它高速缓存检索块,例如从其它核心复合(例如,图1的CPU子系统105A-N),或从主存储器,例如可以通过图1的归属节点130A检索。

另外,在一个实施方案中,L3高速缓存230由处理器核心210A-D中的每一个共享。L3高速缓存230耦接到一致性主控器(未示出)以访问数据编织(例如,图1的数据编织/总线125)和存储器子系统。在其他实施方案中,CPU复合200可以包括更少或更多的处理器核心(例如,处理器核心210A)以及对应的L2高速缓存(例如,L2高速缓存220A)。在其它实施方案中,CPU复合200可以包括其它类型的可寻址高速缓存子系统,其可以包括不同数目、类型及级别的高速缓存存储器而不脱离本公开的新颖性。

在一个实施方案中,L2或L3高速缓存(例如,L2高速缓存220A或L3高速缓存230)与一致性主控器(未示出)交换信令以从高速缓存逐出脏高速缓存行(牺牲品)。在该过程期间,在高速缓存将牺牲品转发到一致性主控器并且每者确认它们各自的任务完成之后(例如,见图5),高速缓存然后从其存储器清除牺牲品并且准备好接收新的高速缓存行条目,同时一致性主控器和归属节点完成逐出过程。

图3是处理器系统300的一个实施方案的框图。在一个实施方案中,处理器系统300包括如CPU 305A-N所示的多个核心复合。在各种实施方案中,CPU(例如,CPU复合305A)的数目和每个CPU的核心(例如,核心308A-N)的数目可以根据设计选择而变化。每个CPU 305A-N还包括对应的高速缓存子系统310A-N。在各种实施方案中,高速缓存子系统310A-N可以在大小和结构上变化,如上文参考图2所述。

在一个实施方案中,每个CPU 305A-N连接到对应的一致性主控器315A-N,其进一步连接到数据编织/总线318。如本文所使用的,“一致性主控器”被定义为处理在互连(例如,数据编织/总线318)上流动的流量并管理高速缓存一致性的代理,其包括每个一致性主控器(例如,一致性主控器315A-N)协调工作以生成、接收和处理一致性相关消息和探测,用于同步处理器系统300内的共享高速缓存行数据的副本。

在各种实施方案中,每个CPU 305A-N可以通过对应的一致性主控器315A-N和数据编织/总线318连接到一个或多个一致性从控器。一致性从控器320A连接到存储器控制器(MC)330A和高速缓存目录(CD)325A,而一致性从控器321A耦接到存储器控制器331A和高速缓存目录326A。每一存储器控制器330A-N及331A-N连接到存储器设备340A-N及341A-N中的相应一个。每一存储器控制器(例如存储器控制器330A)的功能中的一个功能是向处理器系统300的元件提供对存储器设备340A-N及341A-N的访问。在各种实施方案中,尽管被示为一个块,但存储器设备340A-N及341A-N中的每一个可以由一个或多个物理存储器组成且可以为适合于存储数据的任何类型,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等。

在各种实施方案中,一致性从控器(例如,一致性从控器320A-N)负责通过附接的存储器控制器(例如,存储器控制器330A-N)读出存储器(例如,存储器340A-N)并通过高速缓存目录(例如,高速缓存目录325A-N)管理高速缓存一致性。

在一个实施方案中,类似于高速缓存子系统310A,一致性主控器315A通过数据编织/总线318内的非阻塞虚拟通道将牺牲品发送到一致性从控器320A。一致性从控器320A基于非阻塞虚拟通道的使用而对牺牲品的执行进行优先化,并且将牺牲品发送到存储器控制器330A以写入到存储器340A,同时将另一全局可见响应发送回到一致性主控器315A以指示事务完成(例如,见图5)。这向一致性主控器315A指示其可以从其缓冲器清除牺牲品数据,同时维持牺牲品命令。类似地,一旦将牺牲品发送到存储器控制器330A,在脏高速缓存行牺牲品的情况下,一致性从控器320A可以将牺牲品从其缓冲器清除并且转向对相同地址的其它事务。除了优先级通道之外,信令的定时和次序减少了高速缓存子系统310A和一致性从控器320A处的数据和命令的事务资源和缓冲器占用,这导致系统速度和效率的增加。为方便起见,本文中所描述的部件(例如高速缓存子系统、一致性主控器及一致性从控器)被论述为包括用于命令数据及高速缓存数据的单个缓冲器。然而,在其它实施方案中,每一部件可以具有与不同类型的数据(例如,命令数据及高速缓存数据(例如,牺牲品数据))共享或为其专用的两个或更多个缓冲器。

在其他实施方案中,使用非阻塞虚拟通道的异步逐出事务利用系统范围的危害检查(例如,竞态条件)来确保其他数据一致性。例如,在执行逐出事务之前,一致性从控器(例如,一致性从控器320A-N)必须对地址匹配事务(诸如与相同高速缓存行数据相关联的存储器读取或一致性探测)执行危害检查,以确保那些事务得到最新数据。下面关于图7A和7B进一步详细讨论危害检查事务。

尽管在图3中未示出,但在其他实施方案中,可以存在从数据编织/总线318到未示出的其它部件的其它连接以避免使图模糊。例如,在另一个实施方案中,数据编织/总线318包括到一个或多个I/O接口和一个或多个I/O装置的连接,例如如图1所示。

图4是示出用于执行脏高速缓存行逐出的过程400的流程图。过程400开始于框402,此时高速缓存子系统的较低级高速缓存(LLC)(例如,图3的高速缓存子系统310A以及图2的L2高速缓存220A和L3高速缓存230)发起脏高速缓存行逐出,为了清楚起见,脏高速缓存行数据在该图中被称为牺牲品。牺牲品被转发到一致性主控器(CM)(例如,图3的一致性主控器315A),一致性主控器然后在框404处将其发送到一致性从控器(CS)(例如,图3的一致性从控器320A)。一致性从控器可能必须处理对相同地址的其它事务,但最终牺牲品事务将变成对对应于牺牲品数据的该地址的最旧事务。然后,在框406,一致性从控器将利用全局可见(GV)响应向一致性主控器指示该事务现在为GV。当一致性主控器接收到GV响应时,其在框408处将GV响应发送到高速缓存子系统。牺牲品保持并占据高速缓存子系统中的空间,直到在框410处,其接收到GV响应,且其可以接着清除牺牲品并将高速缓存完成响应分组发送到一致性主控器,该分组提供对一致性主控器不再需要维持一致性状态的指示。然后,在框412处,一致性主控器将高速缓存完成响应转换为CM完成响应分组,并将其发送到一致性从控器。当此分组到达一致性从控器中时,在框414处,一致性从控器接着将牺牲品汇集到存储器控制器,清除其缓冲器,并且事务完成。最后,在框416处,存储器控制器接收牺牲品数据并且相应地更新存储器地址位置。

图4中所说明的事务的过程占用高速缓存子系统及一致性从控器两者处的资源以保持高速缓存一致性的正确性。此事务的寿命基于高速缓存子系统与一致性从控器之间的距离以及系统如何对数据进行优先级而大大增加。因此,例如在具有带有多个高速缓存子系统、一致性主控器和一致性从控器的多个插槽的处理器系统(例如,图3的处理器系统300)中,事务可能必须经过若干交换以从高速缓存子系统到达一致性从控器并返回(例如,参见图3中的相应部件A-N),并且可能在其他事务之后被阻塞。系统越大,那些部件保持到逐出事务的部分上的时间越长,并且因此那些部件上导致影响性能的瓶颈的缓冲器和命令占用压力越大。

图5是过程500的流程图,其示出了降低处理器系统(例如,图3的处理器系统300)中的占用压力和瓶颈的方法的一个实施方案。在框502处,当高速缓存子系统的较低级高速缓存(LLC)(例如,图3的高速缓存子系统310A以及图2的L2高速缓存220A和L3高速缓存230)发起高速缓存行逐出并且将高速缓存行(牺牲品)发送到一致性主控器(CM)(例如,图3的一致性主控器315A)时,高速缓存行逐出开始。在该牺牲品进入的时刻,在框504处,一致性主控器立即发送将牺牲品事务的所有权从高速缓存子系统(LLC)转移到一致性主控器的早期GV响应。高速缓存子系统在接收到早期GV响应之后,在框506处将“高速缓存完成”响应返回到一致性主控器,从LLC缓冲器清除牺牲品数据和命令,并且被释放以用于处理下一事务。在框508处,一致性主控器经由优先级通道509将牺牲品发送到一致性从控器,并且从一致性主控器缓冲器清除牺牲品数据。

在一个实施方案中,优先级通道509是非阻塞虚拟通道。例如,利用优先级通道,例如非阻塞虚拟通道,因为牺牲品可能不是对牺牲品的特定地址的最旧事务,这意味着牺牲品可能已经堆积在对处理器系统中的相同地址或之间某处的其它事务之后。

在一个实施方案中,当在优先级通道509上接收数据时,一致性从控器保证在牺牲品上的向前进展超过其它事务,这意味着例如一致性从控器不基于其它功能(例如地址比较、地址匹配检查或可能延迟牺牲品进展的任何其它处理)而延迟牺牲品。在框510处,一致性从控器对高速缓存行逐出数据进行优先化,并将其发送或汇集到存储器控制器(例如图3的存储器控制器330A)以在框512处用牺牲品更新存储器。返回到框510,一致性从控器也向一致性主控器发送回GV响应且清除其缓冲器(在一致性从控器处完成事务)。在框514处,一致性从控器从其缓冲器清除牺牲品命令及牺牲品数据。在框516处,一致性主控器接收指示一致性从控器已完成事务的GV响应并且从缓冲器清除牺牲品命令。

图6是示出用于在逐出与对相同地址的另一事务之间不存在重叠时降低处理器系统(例如,图3的处理器系统300)中的占用压力的过程的一个实施方案的流程图。在本示例性实施方案中,存在要在第一CPU复合及第一一致性主控器(例如,图3的CPU复合305A及一致性主控器315A)处完成的高速缓存行(牺牲品)的逐出,而在大致相同时间,第二CPU复合及第二一致性主控器(例如,图3的CPU复合305N及一致性主控器315N)想要读取同一高速缓存行。此过程开始于框602处,其中第二一致性主控器(CM2)将读取数据请求发送到对应于与被设定用于逐出的高速缓存行相关联的该地址的一致性从控器(CS)(例如,图3的一致性从控器321A)。在框604处,一致性从控器将存储器读取请求发送到存储器控制器(MC)(例如,图3中的存储器控制器331A)并且作为响应,在框606处,存储器控制器发回存储器数据。在框608处,一致性从控器将所接收的存储器数据转发到在框602中作出初始请求的第二一致性主控器。

返回到框604,一致性从控器在发送存储器读取请求的同时还发出寻找对应于该存储器地址的高速缓存行数据的一个或多个探测。在此示例中,仅一个探测被发送到第一一致性主控器(CM1),该第一一致性主控器在框610处接收该探测且将其转发到第一高速缓存子系统(LLC1)(例如,图3的高速缓存子系统310A以及图2的L2高速缓存220A和L3高速缓存230)。该探测是命中,并且在框612处,第一高速缓存子系统利用发回第一一致性主控器的LLC1数据对该探测作出响应。在框614处,第一一致性主控器将LLC1数据转发到在框602处通过对一致性从控器的请求而发起探测的第二一致性主控器。

在框616处,第二一致性主控器从第一一致性主控器接收LLC1数据并且从一致性从控器接收存储器数据。在框618处,一致性主控器使LLC1数据优先于被确定为比该高速缓存行数据更旧的存储器数据,并且将LLC1数据发送到其相关联的第二高速缓存子系统(LLC2)(未示出)。在各种实施方案中,优先级可以基于数据的逐字节比较、通过标记(例如,状态位)等。在框620处,第二一致性主控器将CM2完成消息发送到一致性从控器,该一致性从控器在框622处接收CM2完成消息且完成事务。

在对高速缓存行的探测事务完成的情况下,过程600可以像图5的过程500那样继续处理该高速缓存行的逐出。高速缓存行逐出开始于框624,此时,高速缓存子系统发起高速缓存行逐出并且将牺牲品(高速缓存行逐出数据)发送到第一一致性主控器。然后在框626处,一致性主控器发送将牺牲品事务的所有权从第一高速缓存子系统转移到第一一致性主控器的早期GV响应。第一高速缓存子系统在接收到早期GV响应之后,在框628处将高速缓存完成响应返回到第一一致性主控器,从LLC缓冲器清除牺牲品数据和命令,并且被释放以用于处理下一事务。在框630处,第一一致性主控器经由优先级通道631将牺牲品发送到一致性从控器,并且从一致性主控器缓冲器清除牺牲品数据。

在一个实施方案中,优先级通道631是非阻塞虚拟通道。例如,利用优先级通道,例如非阻塞虚拟通道,因为牺牲品可能不是对牺牲品的特定地址的最旧事务,这意味着牺牲品可能已经堆积在对处理器系统中的相同地址或之间某处的其它事务之后。

在一个实施方案中,当在优先级通道631上接收数据时,一致性从控器保证在牺牲品上的向前进展超过其它事务,这意味着例如一致性从控器不基于其它功能(例如地址比较、地址匹配检查或可能延迟牺牲品进展的任何其它处理)而延迟牺牲品。在框632处,一致性从控器优先于牺牲品事务并且将其发送或汇集到存储器控制器以在框634处用牺牲品更新存储器。返回到框632,一致性从控器也向第一一致性主控器发送回GV响应且清除其缓冲器(在框634处在一致性从控器处完成事务)。在框636处,第一一致性主控器接收指示一致性从控器已完成事务的GV响应并且从缓冲器清除牺牲品命令。在框638处,一致性从控器从其缓冲器清除牺牲品命令及牺牲品数据。

图7A是过程700的流程图,示出了当在到相同地址的脏高速缓存行逐出事务完成之前在一致性主控器处接收到探测时降低处理器系统(例如,图3的处理器系统300)中的占用压力的方法的一个实施方案。在本示例性实施方案中,类似于图6的过程600,存在要在第一CPU复合及第一一致性主控器(例如,图3的CPU复合305A及一致性主控器315A)处完成的高速缓存行(牺牲品)的脏高速缓存行逐出,而在大致相同时间,第二CPU复合及第二一致性主控器(例如,图3的CPU复合305N及一致性主控器315N)想要读取同一高速缓存行。然而,在该示例中,探测在脏高速缓存行逐出事务完成之前到达第一一致性主控器。

过程700开始于框702,此时,高速缓存子系统发起脏高速缓存行逐出并且将牺牲品发送到第一一致性主控器。然后,在框704处,一致性主控器发送早期GV响应,其指示牺牲品的所有权以及该事务已从第一高速缓存子系统转移到第一一致性主控器。第一高速缓存子系统在接收到早期GV响应之后,在框706处将高速缓存完成响应返回到第一一致性主控器,从LLC缓冲器清除牺牲品数据和命令,并且被释放以用于处理下一事务。在框708处,第一一致性主控器经由优先级通道709将牺牲品发送到一致性从控器,并且从一致性主控器缓冲器清除牺牲品数据。

然而,在向一致性从控器发送牺牲品之前,第二一致性主控器(CM2)在框710处向对应于与脏高速缓存行逐出相关联的该地址的一致性从控器(CS)(例如,图3的一致性从控器321A)发送读取数据请求。在框712处,一致性从控器将存储器读取请求发送到存储器控制器(MC)(例如,图3中的存储器控制器331A)并且作为响应,在框714处,存储器控制器发回存储器数据。

返回到框712,一致性从控器在发送存储器读取请求的同时还发出寻找对应于该存储器地址的高速缓存行数据的一个或多个探测。在此示例中,向第一一致性主控器(CM1)仅发送一个探测,其在框715处接收该探测。在一个实施方案中,因为之前存在早期GV响应,所以在框704处,第一一致性主控器知道优先级通道逐出事务,并且将阻止探测响应,直到逐出事务完成为止。在其他实施方案中,可以设置其他信令或标记来指示探测阻止。在又一实施方案中,如果在框704处,在第一一致性主控器在早期GV响应之前接收到地址匹配探测的情况下,第一一致性主控器允许牺牲品使用常规执行流且不执行任何早期GV响应。

在框716处,一致性从控器通过优先级通道709接收牺牲品,一致性从控器向牺牲品事务赋予优先级并且将其发送或汇集到存储器控制器以在框718处用牺牲品更新存储器。在框720处,一致性从控器忽略从存储器控制器接收的存储器数据,因为它还保持对同一地址的牺牲品,其根据定义为对应于该地址的最新数据。一致性从控器也向第一一致性主控器发回GV响应。在框722处,第一一致性主控器接收指示一致性从控器已完成牺牲品事务的GV响应,并且将其探测未命中响应释放到第二一致性主控器(框710处的原始数据请求者),因为在牺牲品在框708处被发送到一致性从控器之后牺牲品不再可用。

同时,在框726处,一致性从控器将第二存储器读取请求发送到存储器控制器,且作为响应,在框728处,存储器控制器发回更新的存储器数据,该更新的存储器数据由一致性从控器在框730处接收。在框732处,第一一致性主控器发送读取数据请求,该读取数据请求向一致性从控器指示第二一致性主控器应从存储器接收更新的数据。在框734处,一致性从控器将更新的数据从存储器发送到第二一致性主控器,第二一致性主控器在框736处接收更新的数据,将CM2完成响应发送回到一致性从控器,且从缓冲器清除牺牲品命令。在框738处,一致性从控器从其缓冲器清除牺牲品命令及牺牲品数据。在另一实施方案中,响应于框732处的读取请求,一致性从控器在框734处直接转发来自牺牲品的数据,因此避免了框726-730处的第二存储器读取过程。

图7B是过程750的流程图,示出了在第二种情形中,当在到相同地址的脏高速缓存行逐出事务完成之前在一致性主控器处接收到探测时降低处理器系统(例如,图3的处理器系统300)中的占用压力的方法的一个实施方案。在本示例性实施方案中,存在要在第一CPU复合及第一一致性主控器(例如,图3的CPU复合305A及一致性主控器315A)处完成的高速缓存行(牺牲品)的脏高速缓存行逐出,而在大致相同时间,第二CPU复合及第二一致性主控器(例如,图3的CPU复合305N及一致性主控器315N)想要读取同一高速缓存行。然而,在此示例中,在脏高速缓存行逐出事务完成之前,探测到达第一一致性主控器且第一读取存储器到达第二一致性主控器。

过程750开始于框752,此时,高速缓存子系统发起脏高速缓存行逐出并且将牺牲品(高速缓存行逐出数据)发送到第一一致性主控器。然后,在框754处,一致性主控器发送早期GV响应,其指示牺牲品的所有权以及该事务已从第一高速缓存子系统转移到第一一致性主控器。第一高速缓存子系统在接收到早期GV响应之后,在框756处将高速缓存完成响应返回到第一一致性主控器,从LLC缓冲器清除牺牲品数据和命令,并且被释放以用于处理。在框758处,第一一致性主控器经由优先级通道759将牺牲品发送到一致性从控器,并且从一致性主控器缓冲器清除牺牲品数据。

然而,在向一致性从控器发送牺牲品之前,第二一致性主控器(CM2)在框760处向对应于与脏高速缓存行逐出相关联的该地址的一致性从控器(CS)(例如,图3的一致性从控器321A)发送读取数据请求。在框762处,一致性从控器将存储器读取请求发送到存储器控制器(MC)(例如,图3的存储器控制器331A)并且作为响应,在框764处,存储器控制器发回存储器数据。

返回到框762,一致性从控器在发送存储器读取请求的同时还发出寻找对应于该存储器地址的高速缓存行数据的一个或多个探测。在此示例中,向第一一致性主控器(CM1)仅发送一个探测,该第一一致性主控器在框765处接收该探测。在一个实施方案中,因为之前存在早期GV响应,所以在框754处,第一一致性主控器知道优先级通道逐出事务,并且将阻止探测,直到逐出事务完成为止。在其他实施方案中,可以设置其他信令或标记来指示探测阻止。

在框766处,一致性从控器将从存储器控制器接收到的存储器数据发送到第二一致性主控器,该存储器数据是在框768处接收到的。然而,具有更新的数据的牺牲品尚未在一致性从控器处被接收,从而导致第二一致性主控器接收陈旧数据,该陈旧数据必须在过程750中由拥有牺牲品事务的第一一致性主控器解决。

在框770处,一致性从控器通过优先级通道759接收牺牲品,向牺牲品事务赋予优先级并且将其发送或汇集到存储器控制器以在框772处用牺牲品更新存储器。另外,在框770处,一致性从控器将GV响应发送到第一一致性主控器,其指示一致性从控器已完成牺牲品事务。第一一致性主控器在框774处接收GV响应,且将其探测未命中响应释放到第二一致性主控器(框760处的原始数据请求者),该探测未命中响应在框776处被接收。

同时,在框778处,一致性从控器将第二存储器读取请求发送到存储器控制器,且作为响应,在框780处,存储器控制器发回更新的存储器数据,该更新的存储器数据由一致性从控器在框782处接收。在框784处,第一一致性主控器发送读取数据请求,该读取数据请求向一致性从控器指示第二一致性主控器应从存储器接收更新的数据。在框786处,一致性从控器将更新的数据从存储器发送到第二一致性主控器,第二一致性主控器在框788处接收更新的数据,将CM2完成响应发送回到一致性从控器,且从缓冲器清除牺牲品命令。在框790处,一致性从控器从其缓冲器清除牺牲品命令及牺牲品数据。

在脏高速缓存行逐出期间,一致性从控器(例如,图3的一致性从控器320A)与一个或多个一致性主控器(例如,图3的一致性主控器315A及315B)之间的信令中可能出现其它危害。即使在这些危害中,各种实施方案也利用优先级通道和早期GV响应(如上文详细描述)来确保以最小瓶颈将高速缓存行的最近副本提供给请求者。

对于每个危害,一致性主控器和一致性从控器使用互锁来确保递送高速缓存行的最近副本,并且进程不会停止。例如,探测可以在通过一致性从控器处理牺牲品之后被存储器(例如图3的存储器340A)看到。在这种情形中,高速缓存子系统(例如,图3的高速缓存子系统310A)已经完成了牺牲品事务,并且第一一致性主控器已经将牺牲品推送到一致性从控器。然而,在牺牲品到达之前,一致性从控器已经从第二一致性主控器接收到对相同地址的读取,并且已经向已经发送牺牲品的第一一致性主控器发送了一致性探测。如果该竞态未被正确处理,则请求读取数据的高速缓存子系统将从存储器获得陈旧数据。为了解决这个问题,根据一个实施方案,一致性从控器检测竞态条件并通过通知第一一致性主控器已经检测到竞态条件来指示危害。第一一致性主控器通过保持牺牲品并等待直到它接收到一致性探测来进行响应。一旦接收到探测,第一一致性主控器通知一致性从控器该一致性探测未命中,并请求向第二一致性主控器发送来自存储器的另一次读取。

可能出现的另一危害是当一致性从控器已经从第二一致性主控器接收到对相同地址的读取并且已经向第一一致性主控器发送了一致性探测时,但是一致性探测在第一一致性主控器处被接收并且在牺牲品在一致性从控器处被接收和处理之前完成探测响应。这可能导致一致性从控器中的假竞态检测。在这种情况下,根据一个实施方案,如果一致性从控器得到第二一致性主控器已经完成的指示而不是等待向第二一致性主控器发送对另一存储器读取的请求,则该一致性从控器释放对牺牲品的保持。

一种用于处理高速缓存行逐出事务的方法可以包括从高速缓存子系统接收高速缓存行逐出数据以及通过优先级通道处理所接收的高速缓存行逐出数据。

该方法还可以包括:在处理高速缓存行逐出数据之前,释放高速缓存子系统以在接收到高速缓存行逐出数据之后处理其他事务。

在该方法中,处理高速缓存行逐出数据可以包括在处理较低优先级事务之前处理高速缓存行逐出数据,以及通过在与高速缓存行逐出数据相关联的存储器地址处将高速缓存行逐出数据写入存储器来更新存储器。

该方法还可以包括:在处理高速缓存行逐出数据之前,处理针对对应于与该高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,该一致性探测源自来自一致性主控器的对高速缓存行数据的请求;以及延迟发送一致性探测响应,直到在处理高速缓存行逐出数据之后。

该方法还可以包括:在发送一致性探测响应之后,从存储器请求数据以向一致性主控器提供更新的高速缓存行数据。

该方法还可以包括:在发送一致性探测响应之后,将高速缓存行逐出数据转发到一致性主控器。

该方法还可以包括:在处理高速缓存行逐出数据之后,基于对危害条件的指示来保持高速缓存行逐出事务;在处理高速缓存行逐出数据之后,处理针对对应于与高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,该一致性探测源自来自一致性主控器的对高速缓存行数据的请求;以及基于探测未命中响应从存储器请求数据以向一致性主控器提供更新的高速缓存行数据。

该方法还可以包括:在高速缓存子系统接收高速缓存行逐出数据之前,处理针对对应于与高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,该一致性探测源自来自一致性主控器的对高速缓存行数据的请求;在一致性主控器处接收以高速缓存行数据的探测响应;以及在一致性从控器处处理高速缓存行逐出数据之后,保持高速缓存行逐出数据直到一致性主控器接收高速缓存行逐出数据,并且释放对高速缓存行逐出数据的保持以完成高速缓存行逐出事务。

一种用于处理高速缓存行逐出事务的设备可以包括:第一一致性主控器,用于从与第一一致性主控器相对应的高速缓存子系统接收高速缓存行逐出数据,并且通过优先级通道将高速缓存行逐出数据传送到一致性从控器;以及一致性从控器,用于基于通过优先级通道的对高速缓存行逐出数据的接收来处理高速缓存行逐出数据。

在该设备中,第一一致性主控器可以被配置为在接收到高速缓存行逐出数据之后并且在将高速缓存行逐出数据传送到一致性从控器之前,将指示高速缓存行逐出事务的所有权的响应传送到高速缓存子系统以释放高速缓存行逐出事务的高速缓存子系统。

在该设备中,该一致性从控器可以通过将高速缓存行逐出数据传送到存储器控制器以更新对应于高速缓存行逐出数据的存储器地址位置来处理高速缓存行逐出数据,并且可以将响应传送到第一一致性主控器以指示高速缓存行逐出事务完成,以释放高速缓存行逐出事务的第一一致性主控器。

在该设备中,在将高速缓存行逐出数据传送到一致性从控器之前,第一一致性主控器可以接收针对对应于与高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,其中该一致性探测源自来自第二一致性主控器的对高速缓存行数据的请求。在该设备中,响应于一致性探测和高速缓存行逐出数据的接收,第一一致性主控器可以延迟一致性探测响应,直到一致性从控器处理高速缓存行逐出数据之后。

在该设备中,第一一致性主控器可以将探测未命中传送到第二一致性主控器,并且第一一致性主控器可以将读取数据请求传送到一致性从控器,以将对应于高速缓存行逐出数据的更新的高速缓存行数据提供到第二一致性主控器。

在该设备中,在一致性从控器处理高速缓存行逐出数据之后,第一一致性主控器可以接收命令以基于对危害条件的指示保持高速缓存行逐出事务,并且可以接收针对对应于与高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,该一致性探测源自来自第二一致性主控器的对高速缓存行数据的请求。该一致性主控器可以将探测未命中传送到第二一致性主控器,并且可以将读取数据请求传送到一致性从控器,以将对应于高速缓存行逐出数据的更新的高速缓存行数据提供到第二一致性主控器。

在该设备中,在从高速缓存子系统接收高速缓存行逐出数据之前,该第一一致性主控器可以接收针对对应于与高速缓存行逐出数据相关联的存储器地址的高速缓存行数据的一致性探测,该一致性探测源自来自第二一致性主控器的对高速缓存行数据的请求。该第一一致性主控器可以将以高速缓存行数据的探测响应传送到第二一致性主控器,并且在一致性从控器处处理高速缓存行逐出数据之后,第一一致性主控器可以接收对高速缓存行逐出数据的保持。该第二一致性主控器可以从一致性从控器接收高速缓存行逐出数据,并且第一一致性主控器可以基于事务在一致性从控器处完成来释放对高速缓存行逐出数据的保持。

在该设备中,第一一致性主控器在一致性从控器处理高速缓存行逐出数据之后可以接收命令以基于对危害条件的指示保持高速缓存行逐出事务,确定危害条件为假,并且释放对事务的保持。

一种用于处理高速缓存行逐出事务的方法可以包括:从第一CPU子系统接收对与存储器地址相关联的高速缓存行数据的请求;通过优先级通道将与所请求的高速缓存行数据的存储器地址相对应的高速缓存行逐出数据从第二CPU子系统传送到归属节点;处理通过优先级通道接收的高速缓存行逐出数据;检测所请求的高速缓存行数据与高速缓存行逐出数据之间的危害条件;保持高速缓存行逐出数据直到危害条件清除;以及将高速缓存行逐出数据传送到第一CPU子系统以完成高速缓存行逐出事务。

在该方法中,检测危害条件可以包括:基于在将高速缓存行逐出数据传送到归属节点之前接收到请求高速缓存行数据的探测而在第二CPU子系统处检测危害条件,并且在第二CPU子系统处且在传送高速缓存行逐出数据之前向归属节点发送请求以向第一核心复合提供对应于高速缓存行逐出数据的更新的高速缓存行数据。

在该方法中,检测危害条件还可以包括:基于在处理高速缓存行逐出数据之后第二CPU子系统接收到请求高速缓存行数据的探测而在归属节点处检测危害条件,并且在第二CPU子系统处且在传送高速缓存行逐出数据之前向归属节点发送请求以向第一核心复合提供对应于高速缓存行逐出数据的更新的高速缓存行数据。

在该方法中,检测危害条件还可以包括基于第二CPU子系统在处理高速缓存行逐出数据之前以高速缓存行数据对针对高速缓存行数据的探测请求作出响应来在归属节点处检测危害条件。保持高速缓存行逐出数据直到危害条件清除可以包括在第二CPU子系统处保持高速缓存行逐出数据直到头节点传送高速缓存行逐出事务的完成。

如本文所使用,术语“耦接到”可意指直接耦接或通过一个或多个居间部件间接耦接。在本文所述的各种总线上提供的任何信号可与其他信号时分复用,并且在一个或多个公共总线上提供。另外,电路部件或块之间的互连可被示出为总线或单信号线。总线中的每个总线可另选地是一个或多个单信号线,并且单信号线中的每个单信号线可另选地是总线。

某些实施方案可被实施为计算机程序产品,该计算机程序产品可包括存储在非暂态计算机可读介质上的指令。这些指令可用于对通用或专用处理器编程以执行所描述的操作。计算机可读介质包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用程序)存储或传输信息的任何机制。非暂态计算机可读存储介质可包括但不限于:磁存储介质(例如,软盘);光学存储介质(例如,CD-ROM);磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如,EPROM和EEPROM);闪存存储器或适于存储电子指令的另一类型的介质。

另外,一些实施方案可在其中计算机可读介质被存储在多于一个计算机系统上并且/或者由多于一个计算机系统执行的分布式计算环境中实践。另外,在计算机系统之间传送的信息可跨连接计算机系统的传输介质进行推送或拉取。

通常,在计算机可读存储介质上承载的表示计算系统100和/或其部分的数据结构可以是能够由程序读取并且直接或间接用于制造包括计算系统100的硬件的数据库或其他数据结构。例如,数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成库的门列表的网表。网表包括门集,其也表示包括计算系统100的硬件的功能。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可将掩码用于各种半导体制造步骤中以产生对应于计算系统100的半导体电路或电路。另选地,计算机可读存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。

尽管按特定顺序示出并描述了本文的方法的操作,但是可改变每个方法的操作的顺序,使得可按相反顺序执行某些操作,或者使得某些操作可至少部分地与其他操作同时执行。在另一实施方案中,不同操作的指令或子操作可以间歇性和/或交替方式进行。

在前述说明书中,已参考其具体示例性实施方案对实施方案进行了描述。然而,将显而易见的是,可在不脱离如在所附权利要求中阐述的实施方案的更宽范围的情况下对这些实施方案进行各种修改和改变。因此,应将该说明书和附图视为例示性的而非限制性的。

相关技术
  • 用于基于高速缓存类型来提供高速缓存一致性的技术
  • 基于高速缓存行的扇区的修改来逐出高速缓存行
  • 逐出高速缓存的行的电路布置、数据处理系统和方法
技术分类

06120116330224