高性能互连相干协议.pdf

上传人:g**** 文档编号:1624370 上传时间:2018-06-29 格式:PDF 页数:60 大小:9.33MB
返回 下载 相关 举报
摘要
申请专利号:

CN201380016955.X

申请日:

2013.03.15

公开号:

CN104380269A

公开日:

2015.02.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 13/00申请日:20130315|||公开

IPC分类号:

G06F13/00

主分类号:

G06F13/00

申请人:

英特尔公司

发明人:

R·G·布朗肯希普; B·法西姆; R·比尔斯; Y-C·刘; V·基塔; H·H·胡姆; J·维利

地址:

美国加利福尼亚州

优先权:

61/717,091 2012.10.22 US

专利代理机构:

上海专利商标事务所有限公司31100

代理人:

高见

PDF下载: PDF下载
内容摘要

接收一请求,该请求引用第一代理且请求特定存储器行在独占状态中被高速缓存。监听请求被发送指向一个或多个其他代理。接收到引用第二代理的监听响应,监听响应包括将对应于特定存储器行的已修改高速缓存行写回至存储器。发送完成以定址至第一代理,其中完成包括基于写回的特定存储器行的数据。

权利要求书

权利要求书
1.  一种装置,包括:
包括协议层逻辑的特定代理,用于:
接收引用第一代理以及请求特定存储器行在独占状态中被高速缓存的请求;
发送旨在给一个或多个其他代理的监听请求;
接收引用第二代理的监听响应,监听响应包括将与所述特定存储器行对应的已修改的高速缓存行写回至存储器;以及
发送完成以被定址到第一代理,其中所述完成包括基于写回的特定存储器行的数据。

2.  如权利要求1所述的装置,其特征在于,所述协议层逻辑还使已修改的高速缓存行被写至特定存储器行。

3.  如权利要求1所述的装置,其特征在于,所述协议层逻辑还确定第二代理的高速缓存行是已修改的高速缓存行。

4.  如权利要求3所述的装置,其特征在于,基于确定第二代理的高速缓存行是已修改的高速缓存行,所述完成在接收到对与来自第一代理的请求相对应的所有监听请求的响应之前被发送。

5.  如权利要求1所述的装置,其特征在于,监听请求包括监听无效请求。

6.  如权利要求5所述的装置,其特征在于,所述监听无效请求使对应于特定行或存储器的接收另一代理的高速缓存无效。

7.  如权利要求5所述的装置,其特征在于,所述监听无效请求标识特定存储器行以及来自第一代理的请求中所包括的命令。

8.  如权利要求1所述的装置,其特征在于,所述协议层逻辑还转换目录状态以指示特定存储器行与独占状态相关联。

9.  一种装置,包括:
包括协议层逻辑的代理,用于:
发送对独占状态下的特定高速缓存行的请求;以及
从存储器接收对应于所述特定高速缓存行的数据,其中所述特定数据包括由另一代理在请求之后写回存储器的数据。

10.  如权利要求9所述的装置,其特征在于,特定高速缓存行在请求之前处于无效状态。

11.  如权利要求9所述的装置,其特征在于,所述独占状态是E状态,指示特定高速缓存行中的数据的副本与存储器相匹配并且是独占副本。

12.  如权利要求9所述的装置,其特征在于,所述协议层逻辑还将特定数据复制到特定高速缓存行。

13.  如权利要求12所述的装置,其特征在于,所述协议层逻辑还基于接收到特定数据而将特定高速缓存行转换至独占状态。

14.  如权利要求9所述的装置,其特征在于,由另一代理写回存储器的数据包括响应于和对独占状态中的特定高速缓存行的请求相对应的监听而返回的数据。

15.  如权利要求14所述的装置,其特征在于,监听是多个监听之一,特定数据在针对每一个监听请求返回响应之前被接收。

16.  一种方法,包括:
从第一代理接收在独占状态中高速缓存特定存储器行的请求;
发送监听请求至一个或多个其他代理;
从第二代理接收监听响应,所述监听响应包括将第二代理的对应于特定存储器行的已修改高速缓存行写回至存储器;以及
发送完成至第一代理,其中所述完成包括基于所述写回的特定存储器行的数据。

17.  如权利要求16所述的方法,其特征在于,还包括:发送请求至存储器控制器以将已修改高速缓存行写至特定存储器行。

18.  如权利要求16所述的方法,其特征在于,还包括确定第二代理的高速缓存行是已修改高速缓存行。

19.  如权利要求16所述的方法,其特征在于,所述完成在接收到对和来自第一代理的请求相对应的所有监听响应的响应之前被发送。

20.  如权利要求16所述的方法,其特征在于,还包括转换目录状态以指示特定存储器行与独占状态相关联。

21.  一种系统,包括:
具有特定存储器位置的存储器控制器;
对应于所述特定存储器位置的归属代理;以及
第一设备的第一高速缓存代理;
其中所述归属代理用于:
接收引用第一代理以及请求特定存储器行在独占状态中被高速缓存的请求;
发送旨在给一个或多个其他代理的监听请求;
接收引用第二代理的监听响应,所述监听响应包括将与所述特定存储器行对应的已修改的高速缓存行写回至存储器;以及
发送完成以被定址到第一代理,其中所述完成包括基于所述写回的特定存储器行的数据。

22.  如权利要求21所述的装置,其特征在于,还包括第二高速缓存代理,用于:
接收监听请求;
从监听请求中标识来自第一高速缓存代理的请求以便在独占状态中高速缓存特定存储器位置的特定行;
将监听响应发送至归属代理。

23.  如权利要求21所述的系统,其特征在于,所述第一高速缓存代理用于:
发送请求至归属代理;以及
接收所述完成;
将特定存储器行的数据写入至相应的高速缓存行;以及
将相应的高速缓存行转换成独占状态。

24.  如权利要求21所述的系统,其特征在于,来自所述第一高速缓存代理的请求包括相干协议请求。

25.  如权利要求21所述的系统,其特征在于,所述完成在接收到对与来自第一代理的请求相对应的所有监听请求的响应之前被发送。

26.  一种装置,包括:
包括协议层逻辑的代理,用于:
接收显式写回请求,其中所述显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,并且所述显式写回请求包括用以指示另一高速缓存要请求特定存储器行的暗示;
确定是否在将已修改高速缓存行的数据写至特定存储器行之前,将已修改高速缓存行的数据推至其他高速缓存;以及
发送完成以对应于显式写回请求。

27.  如权利要求26所述的装置,其特征在于,确定不要推送数据使已修改高速缓存行的数据被写至特定存储器行。

28.  如权利要求27所述的装置,其特征在于,已修改高速缓存行的数据不被推至所述另一高速缓存。

29.  如权利要求27所述的装置,其特征在于,所述协议层逻辑还将对应于特定存储器行的目录状态自独占状态转换成无效状态。

30.  如权利要求26所述的装置,其特征在于,确定要推送数据使已修改高速缓存行的数据被发送至对应于所述另一高速缓存的第一高速缓存代理,以使已修改高速缓存行的数据被写至所述另一高速缓存的相应的高速缓存行。

31.  如权利要求30所述的装置,其特征在于,所述协议层逻辑还将对应于特定存储器行的目录状态转换为指示所述另一高速缓存具有特定存储器行的独占副本的状态。

32.  如权利要求30所述的装置,其特征在于,所述显式写回请求包括 来自对应于已修改高速缓存行的不同的、第二高速缓存代理的单个相干协议请求。

33.  如权利要求26所述的装置,其特征在于,确定要推送数据包括确定所述另一高速缓存是否是本地高速缓存。

34.  如权利要求26所述的装置,其特征在于,确定要推送数据包括确定是否有针对特定存储器行的其他未完成的请求。

35.  一种装置,包括:
包括协议层逻辑的代理,用于:
发送显式写回请求至归属代理,其中所述显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,所述显式写回请求包括用以指示另一高速缓存要请求所述特定存储器行的暗示;以及
自归属代理接收对显式写回请求的完成。

36.  如权利要求35所述的装置,其特征在于,所述协议逻辑层还在发送显式写回请求之后,将已修改高速缓存行从已修改状态转换成无效状态。

37.  如权利要求35所述的装置,其特征在于,显式写回请求使已修改高速缓存行的数据被写至所述另一高速缓存而不被写至特定存储器行。

38.  如权利要求37所述的装置,其特征在于,所述显式写回请求包括单个相干协议请求。

39.  如权利要求35所述的装置,其特征在于,显式写回请求标识所述另一高速缓存。

40.  一种装置,包括:
存储器控制器,用于:
接收写回冲刷消息;
标识存储器控制器到特定永久存储器的一组未决的写入;以及
基于写回冲刷消息将所有该组未决的写入写至特定存储器。

41.  如权利要求40所述的装置,其特征在于,所述写回冲刷消息包括相干协议消息。

42.  如权利要求41所述的装置,其特征在于,所述写回冲刷消息由高速缓存代理生成。

43.  如权利要求40所述的装置,其特征在于,该组未决写入包括存储器控制器的所有未决写入。

44.  如权利要求40所述的装置,其特征在于,所述写回冲刷消息标识存储器控制器。

45.  如权利要求44所述的装置,其特征在于,所述写回冲刷消息标识对应于特定存储器的存储器地址。

46.  如权利要求40所述的装置,其特征在于,所述写回冲刷消息对应于电力故障管理活动。

47.  一种装置,包括:
包括协议层逻辑的代理,用于:
标识高速缓存的特定行处于转发状态;
接收对应于高速缓存的特定行的请求;
在对请求的响应之后,确定是否要保持转发状态;以及
响应于所述请求。

48.  如权利要求47所述的装置,其特征在于,确定是否要保持转发状态包括确定代理的配置参数的值,其中配置参数的值标识转发状态是否要被保持。

49.  如权利要求48所述的装置,其特征在于,所述协议逻辑层还用于改变配置参数的值。

50.  如权利要求47所述的装置,其特征在于,确定是否要保持转发状态可以包括在响应之后确定保持转发状态。

51.  如权利要求47所述的装置,其特征在于,确定是否要保持转发状态包括在响应之后确定自转发状态转换。

52.  如权利要求51所述的装置,其特征在于,所述转发状态自所述转发状态转换成共享状态。

53.  如权利要求51所述的装置,其特征在于,所述转发状态自所述转发状态转换成无效状态。

54.  如权利要求47所述的装置,其特征在于,所述请求包括监听。

55.  如权利要求47所述的装置,其特征在于,响应于所述请求包括将数据自高速缓存的特定行转发至另一代理。

56.  一种装置,包括:
代理,包括:
协议层逻辑,用于:
生成扇出监听请求
路由层逻辑,用于:
标识多个代理以根据扇出监听请求接收监听;以及
将监听请求发送至多个代理的每一个。

57.  如权利要求56所述的装置,其特征在于,所述路由层逻辑用于从标识相应扇出锥形中的每个代理的配置参数标识多个代理。

58.  如权利要求57所述的装置,其特征在于,配置参数按地址标识每个代理。

59.  如权利要求56所述的装置,其特征在于,所述协议层逻辑还用于确定是否可以使用扇出监听来监听一个或多个代理。

60.  如权利要求56所述的装置,其特征在于,所述代理是归属代理。

61.  如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,用以获得转发或共享状态的任一个状态中的高速缓存数据。

62.  如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,用以获得已修改、独占、转发或共享状态的任一个中的高速缓存数据。

63.  如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,用以获得已修改或独占状态的任一个中的高速缓存数据。

64.  如权利要求56所述的装置,其特征在于,所述监听请求各自包括对相应代理的高速缓存的监听,其中已修改状态中的数据被冲刷至存储器。

65.  如权利要求56所述的装置,其特征在于,所述协议层逻辑还用于为监听请求的一个或多个接收监听响应。

66.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起接受独占的相干性状态数据的读取无效请求。

67.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层在不接收数据和指示写回高速缓存行的情况下发起请求高速缓存行的独占所有权的无效。

68.  如权利要求67所述的装置,其特征在于,写回高速缓存行是在接近时间帧内。

69.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起使数据冲刷至永久存储器的写回冲刷请求。

70.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起使监听请求生成至扇出锥形内的对等体代理的单个扇出监听请求。

71.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议 层发起显式写回请求,所述显式写回请求具有给归属代理的高速缓存推送暗示,暗示被引用的高速缓存行可被推送至本地高速缓存而无须将数据写至存储器。

72.  如权利要求71所述的装置,其特征在于,高速缓存行可以是存储于M状态中。

73.  一种装置,包括:
包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起共享数据的转发,而同时维持转发状态与共享数据相关联。

说明书

说明书高性能互连相干协议
技术
本公开案一般涉及计算机开发领域,尤其涉及包括协调相互依赖的受约束系统的软件开发。
背景
半导体处理和逻辑设计中的进展允许增加集成电路器件上存在的逻辑的数量。计算机系统配置必然已经从系统中的单个或多个集成电路演进为个别集成电路上存在的多核、多硬件线程及多逻辑处理器,以及这种处理器内集成的其他接口。处理器或集成电路一般包括单个物理处理器模,其中处理器模可包括任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢等。
作为在较小的封装包内适配更多处理能力的较高能力的结果,较小的计算设备越来越流行。智能电话、平板电脑、超薄笔记本电脑及其他用户设备呈指数型增长。然而,这些较小设备依赖于服务器来进行数据存储以及超出规格的复杂处理。因而,也增加了对高性能计算市场(即,服务器空间)的需求。例如,在现代服务器中,一般不仅存在具有多个核的单个处理器,也存在多个物理处理器(也称为多个插槽(socket))来提高计算能力。但随着处理能力随着计算系统中设备数量而增长,插槽及其他设备间的通信变得更为关键。
实际上,互连已经从主要处理电子通信的较传统的多点总线增长为便于快速通信的全面互连基础结构。不幸的是,由于存在对将来处理器以甚至更高速率进行消耗的需求,对现有互连基础结构的能力也存在相应的需求。
附图简述
图1示出按照一实施例的系统的简化框图,该系统包括一系列点对点互连以连接计算机系统中的多个I/O设备;
图2示出按照一实施例的分层协议栈的简化框图;
图3示出事务描述符的实施例。
图4示出串行点对点链路的实施例。
图5示出潜在的高性能互连(HPI)系统配置的多个实施例。
图6示出与HPI相关联的分层协议栈的实施例。
图7示出示例相干协议冲突管理的流程图。
图8示出另一示例相干协议冲突管理的流程图。
图9示出另一示例相干协议冲突管理的流程图。
图10示出具有到存储器的写回的示例监听响应的流程图。
图11示出具有到存储器的写回的监听响应的另一示例的流程图。
图12示出示例写回冲刷操作的流程图。
图13示出到存储器的示例写回的流程图。
图14示出示例存储器控制器冲刷操作的流程图。
图15-17示出示例协议状态表的表示。
图18示出协议状态表的示例嵌套的表示。
图19示出由示例测试引擎使用一组协议状态表的表示。
图20示出由示例测试引擎使用一组协议状态表的表示。
图21示出包括多核处理器的计算系统的框图的实施例。
各附图中的相同附图标记和名称表示相同的元件。
详细描述
在以下描述中,提出了许多具体细节以便更透彻地理解本发明,诸如具体处理器和系统配置类型、具体硬件结构、具体结构和微结构细节、具体寄存器配置、具体指令类型、具体系统组件、具体处理器流水线阶段、具体互连层、具体分组/事务配置、具体事务名称、具体协议交换、具体链 路宽度、具体实现方式以及操作等等的多个示例。然而,对于本领域技术人员显而易见的是,不需要必须采用这些具体细节来实现本公开案的主题。在其他情况下,为避免不必要地混淆本公开案,已经避免了已知组件或方法的非常详细的描述,所述组件或方法诸如具体的和替代的处理器体系结构、所述算法的具体逻辑电路/代码、具体固件代码、低级互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、算法用代码的具体表达、具体掉电和门控技术/逻辑以及计算机系统的其他具体操作细节。
尽管可以参照具体集成电路(诸如计算平台或微处理器)中的能量保存、能量效率、处理效率等来描述以下实施例,然而其他实施例可应用于其他类型的集成电路和逻辑器件。这里所述的实施例的类似技术和原理可应用于也受益于这些特征的其他类型的电路或半导体器件。例如,所公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机、超级本(Ultrabooks)TM,而可以用于其他设备中,诸如手持设备、智能电话、平板电脑、其他薄型笔记本电脑、芯片上系统(SOC)设备及嵌入式应用。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)及手持式PC。这里,用于高性能互连的类似技术可应用于增加低功率互连中的性能(或甚至节省功率)。嵌入式应用一般包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或者可执行以下教导的功能和操作的任何其他系统。此外,这里所描述的装置、方法和系统不限于物理计算设备,而是也关于用于能量节省和效率的软件优化。从以下描述中可显而易见,这里所描述的方法、装置和系统的实施例(无论是参照硬件、固件、软件或其组合)可被视为对于以性能考虑因素平衡的“绿色技术”将来是关键的。
随着计算系统的进步,其中的组件变得更为复杂。用于在多个组件间耦合和通信的互连体系结构的复杂度也增加,以确保对于最佳组件操作满足带宽需求。而且,不同的细分市场要求互连体系结构的不同方面来适合于相应的市场。例如,服务器要求较高性能,而移动生态系统有时能为节 省功率而牺牲总性能。大多数构造的单一目的仍然是以最大的功率节省来提供最高的可能性能。而且,各种不同的互连可能潜在地受益于这里描述的主题。例如,在其他示例中,外围组件互连(PCI)Express(快速)(PCIe)互连构造体系结构和快速路径互连(QPI)构造体系结构可以根据这里描述的一个或多个原理得到潜在的改进。
图1示出由互连一组组件的多个点对点链路组成的构造的一个实施例。系统100包括与控制器中枢115耦合的处理器105和系统存储器110。处理器105可以包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)106耦合至控制器中枢115。在一实施例中,FSB 106是如下所述的串行点对点互连。在另一实施例中,链路106包括与不同的互连标准相兼容的串行差分互连体系结构。
系统存储器110包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV)存储器、或可由系统100内的设备访问的其他存储器。系统存储器110通过存储器接口116耦合至控制器中枢115。存储器接口的示例包括双数据速率(DDR)存储器接口、双通道DDR存储器接口以及动态RAM(DRAM)存储器接口。
在一实施例中,控制器中枢115可包括诸如PCIe互连层次结构中的根中枢(root hub)、根复合体(root complex)或根控制器。控制器中枢115的示例包括芯片集、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥以及根控制器/中枢。通常术语芯片集是指两个物理上分开的控制器中枢,例如与互连控制器中枢(ICH)耦合的存储器控制器中枢(MCH)。注意到,当前的系统通常包括与处理器105集成的MCH,而控制器115要以以下描述的类似方式与I/O设备通信。在一些实施例中,通过根复合体115任选地支持对等路由。
这里,控制器中枢115通过串行链路119耦合至交换机/桥120。输入/输出模块117和121也可称为接口/端口117和121,输入/输出模块117和121可包括/实现分层的协议栈以便在控制器中枢115和交换机120之间 提供通信。在一实施例中,多个设备能够耦合至交换机120。
交换机/桥120将分组/消息自设备125向上游(即,自分层结构向上朝向根复合体)路由至控制器中枢115,并且自处理器105或系统存储器110向下游(即,自分层结构向下远离根控制器)路由至设备125。在一实施例中,交换机120被称为多个虚拟PCI对PCT桥设备的逻辑装配。设备125包括要耦合至电子系统的任何内部或外部设备或组件,诸如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线(Firewire)设备、通用串行总线(USB)设备、扫描仪以及其他输入/输出设备。通常在PCIe语言中,诸如设备被称为端点。尽管未特别示出,但设备125可以包括桥(例如PCIe对PCI/PCI-X桥)以支持设备或这些设备所支持的互连构造的传统或其他版本。
图形加速器130也可以通过串行链路132耦合至控制器中枢115。在一实施例中,图形加速器130耦合至MCH,MCH耦合至ICH。于是,交换机120及相应的I/O设备125耦合至ICH。I/O模块131和118也用于实现分层的协议栈和相关联的逻辑以便在图形加速器130和控制器中枢115之间通信。类似于以上的MCH讨论,图形控制器或图形加速器130本身可集成在处理器105内。
转至图2,示出分层协议栈的实施例。分层协议栈200可包括任何形式的分层通信栈,诸如QPI栈、PCIe栈、下一代高性能计算互连(HPI)栈或其他分层栈。在一实施例中,协议栈200可包括事务层205、链路层210和物理层220。接口(接口诸如图1中的接口117、118、121、122、126和131)可以被表示为通信协议栈200。通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。
分组可用于在多个组件间传送信息。分组可形成于事务层205和数据链路层210中以将信息自发射组件携带至接收组件。随着所发送的分组流经其他层,使用用于在那些层处理分组的附加信息来扩展这些所发送的分组。在接收侧发生相反过程,分组从它们的物理层220表示变换成数据链 路层210表示,最终(对于事务层分组)变换成可由接收设备的事务层205处理的形式。
在一实施例中,事务层205可以在设备的处理核和互连体系结构之间提供接口,诸如数据链路层210和物理层220。在这点上,事务层205的主要责任可包括分组(即,事务层分组,即TLP)的装配和分解。事务层205也可以管理TLP的基于信用的流控制。在一些实现中,在其他示例中,可以利用分割事务,即关于请求的事务和关于响应的事务按时间分开,允许链路携带其他业务而同时目标设备为响应收集数据。
基于信用的流控制可用于实现利用互连构造的虚拟信道和网络。在一示例中,设备可以为事务层205中的每个接收缓冲器广告初始量的信用。在链路相对端的外部设备(诸如图1中的控制器中枢115)可以对每个TLP所消耗的信用数量计数。如果事务不超过信用界限,则发送事务。在接收到响应时,恢复信用的数量。这一信用方案的优点的一个示例在于,在其他潜在优点中,假如不遇到信用界限,信用返回的延迟就不影响性能。
在一实施例中,四个事务地址空间可包括配置地址空间、存储器地址空间、输入/输出地址空间以及消息地址空间。存储器空间事务包括读请求和写请求中的一个或多个,用以将数据传递至存储器映射的位置/自存储器映射的位置传递数据。在一实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(诸如32位地址)或长地址格式(诸如64位地址)。配置空间事务可用于访问与互连相连接的各个设备的配置空间。到配置空间的事务可包括读请求和写请求。也可以定义消息空间事务(或简称为消息)来支持互连代理之间的带内通信。因此,在一示例实施例中,事务层205可以装配分组头部/有效载荷206。
快速参照图3,示出事务层分组描述符的示例实施例。在一实施例中,事务描述符300可以是用于携带事务信息的机制。在这点上,事务描述符300支持系统中事务的标识。其他潜在用途包括跟踪缺省事务次序的修改以及事务与信道的关联。例如,事务描述符300可包括全局标识符字段302、属性字段304和信道标识符字段306。在所示示例中,全局标识符字段302 被描述为包括局部事务标识符字段308和源标识符字段310。在一实施例中,全局事务标识符302对于所有未完成的请求是唯一的。
根据一种实现方式,局部事务标识符字段308是由请求方代理(requesting agent)产生的字段,并且可以是对于对该请求方代理要求完成的所有未完成的请求唯一的。而且,在该示例中,源标识符310唯一地标识互连分层结构内的请求者代理(requestor agent)。因而,局部事务标识符308字段与源ID 310一起提供分层结构域内事务的全局标识。
属性字段304指定事务的特征和关系。在这点上,属性字段304可能用于提供允许修改事务的缺省处理方式的附加信息。在一实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和无监听(no-snoop)字段318。这里,优先级子字段312可由发起者修改以将优先级分配给事务。保留属性字段314预留给将来的用途或是厂商定义的用途。可以使用保留属性字段来实现使用优先级或安全属性的可能的用途模型。
在该示例中,排序属性字段316用于提供任选的信息,该任选的信息传递可以修改缺省排序规则的排序类型。根据一种示例实现方式,为“0”的排序属性表示要应用缺省的排序规则,其中为“1”的排序属性表示不受拘束的排序,其中写操作可以在相同方向上通过写操作,而读操作完成可以在相同方向上通过写操作。监听属性字段318用于确定事务是否被监听。如图所示,信道ID字段306标识事务与之相关联的信道。
返回图2的讨论,链路层210(也称为数据链路层210)可以充当事务层205和物理层220之间的中间阶段。在一实施例中,数据链路层210的责任是提供用于在链路上的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受事务层205所装配的TLP,应用分组序列标识符211(即,标识号或分组号),计算和应用差错检测码(即CRC 212),并且将经修改的TLP提交给物理层220,用于跨过物理组件传输至外部设备。
在一示例中,物理层220包括逻辑子块221和电气子块222以便将分组物理地发送至外部设备。这里,逻辑子块221负责物理层221的“数字” 功能。在这点上,逻辑子块可以包括发射部分和接收部分,发射部分用于准备传出信息供物理子块222发送,接收部分用于在将接收到的信息传递至链路层210之前标识和准备该接收到的信息。
物理块222包括发射机和接收机。发射机由具有符号的逻辑子块221提供,发射机将符号串行化并且向外发射至外部设备。接收机被提供有来自外部设备的经串行化符号并且将接收信号变换成位流。位流被解串行化并被提供给逻辑子块221。在一示例实施例中,采用8b/10b传输码,其中发射/接收10位的符号。这里,使用特殊的符号来用多个帧223对分组进行组帧。此外,在一示例中,接收机还提供从传入串行流恢复的符号时钟。
如上所述,尽管参照协议栈(诸如PCIe协议栈)的具体实施例讨论了事务层205、链路层210和物理层220,但是分层的协议栈不限于此。实际上,可以包括/实现任何分层的协议,分层的协议可以采用这里讨论的特征。作为一示例,被表示为分层协议的端口/接口可包括:(1)用于装配分组的第一层,即事务层;用于序列化分组的第二层,即链路层;以及用于发射分组的第三层,即物理层。作为一具体示例,使用如此处描述的高性能互连分层协议。
接下来参照图4,示出串行点对点构造的示例实施例。串行点对点链路可包括用于发射串行数据的任何发射路径。在所示实施例中,链路可以包括两个、低压、差分驱动的信号对:发射对406/411和接收对412/407。因而,设备405包括用于将数据发射至设备410的发射逻辑406和用于从设备410接收数据的接收逻辑407。换言之,在链路的一些实现中包括两个发射路径(即路径416和417)和两个接收路径(即路径418和419)。
发射路径是指用于发射数据的任何路径,诸如传输线、铜线、光学线路、无线通信信道、红外通信链路或其他通信路径。两个设备(诸如设备405和设备410)之间的连接被称为链路,诸如链路415。链路可以支持一条巷道,每条巷道表示一组差分信号对(一对用于发射,一对用于接收)。为缩放带宽,链路可以聚集由xN标记的多个巷道,其中N是任何所支持的链路宽度,诸如1、2、4、8、12、16、32、64或更宽。
差分对可以指用于发射差分信号的两条发射路径,诸如线路416和417。作为一示例,当线路416从低电压级别切换至高电压级别时(即,上升沿),线路417自高逻辑电平驱动至低逻辑电平(即,下降沿)。差分信号潜在地说明较佳的电子特性,诸如较佳的信号完整性,即交叉耦合、电压过冲/下冲、振荡等其他示例优点。这允许较佳的定时窗口,从而允许较快的传输频率。
在一实施例中,提供了新的高性能互连(HPI)。HPI可以包括下一代高速缓存相干的基于链路的互连。作为一示例,HPI可用于诸如工作站或服务器等高性能计算平台中,包括在其中PCIe或另一互连协议一般用来连接处理器、加速器、I/O设备等的系统中。然而,HPI不限于此。相反,HPI可用在这里描述的任一系统或平台中。而且,所开发的个别理念可应用于其他互连和平台,诸如PCIe、MIPI、QPI等。
为了支持多个设备,在一示例实现中,HPI可包括指令集架构(ISA)不可知的(即,HPI能够实现于多个不同的设备中)。在另一情况下,HPI也可用于连接高性能I/O设备,而不仅仅是处理器或加速器。例如,高性能PCIe设备可通过适当的转换桥(即,HPI至PCIe)耦合至HPI。此外,HPI连接可由许多基于HPI的设备(诸如处理器)以各种方式(例如,星形、环形、网状等)来使用。图5示出多个潜在的多插槽配置的示例实现。如图所示,双插槽配置505可包括两个HPI链路;然而,在其他实现中,可以使用一个HPI链路。对于较大的拓扑结构,只要可分配标识符(ID)并且存在某一形式的虚拟路径以及其他附加或替代特征,就可以使用任何配置。如图所示,在一示例中,四插槽配置510具有从每个处理器到每个其他处理器的HPI链路。但在配置515所示的八插槽实现中,不是每一个插槽都通过HPI链路彼此直接连接。然而,如果在多个处理器之间存在虚拟路径或信道,则支持该配置。所支持的处理器的范围包括本地域中的2-32个处理器。在其他示例中,可以通过使用多个域或节点控制器之间的其他互连来达到较高数量的处理器。
HPI架构包括分层协议架构的定义,在一些示例中,分层协议架构包 括协议层(相干的、非相干的、及任选的其他基于存储器的协议)、路由层、链路层以及包括相关联的I/O逻辑的物理层。而且,在其他示例中,HPI还可包括与功率管理器(诸如功率控制单元(PCU))、测试和调试的设计(DFT)、错误处理、寄存器、安全性有关的增强。图6示出示例HPI分层协议栈的实施例。在一些实现中,图6所示的至少一些层可以是任选的。每一层处理其自身级别的信息粒度或信息量(协议层605a、b处理分组630,链路层610a、b处理飞片(flit)635,物理层605a、b处理相数位(phit)640)。注意到在一些实现中,基于实现方式,分组可以包括多个部分飞片、单个飞片或是多个飞片。
作为第一示例,相数位640的宽度包括链路宽度到位的1对1映射(例如,20位链路宽度包括20位的相数位,等等)。飞片可以具有更大的尺寸,诸如184、192或200个位。注意到,如果相数位640为20位宽而飞片635的尺寸为184位,则需要一部分数目的相数位640来发射一个飞片635(例如,在其他示例中,20位下的9.2个相数位来发射184位的飞片635,或者20位下的9.6个相数位来发射192位的飞片)。注意到物理层处的基本链路宽度可以变化。例如,每个方向的道数目可以包括2、4、6、8、10、12、14、16、18、20、22、24等。在一实施例中,链路层610a、b能够将多片不同的事务嵌入在单个飞片中,并且一个或多个头部(例如1、2、3、4)可以被嵌入在飞片内。在一示例中,HPI将头部分割成相应的槽以便使飞片内的多个消息去往不同的节点。
在一实施例中,物理层605a、b可以负责在物理介质(电的或光的等等)上快速传递信息。物理链路可以是两个链路层实体(诸如层605a和605b)之间的点对点。链路层610a、b可以从较上层抽象出物理层605a、b,并且提供可靠地传递数据(以及请求)以及管理两个直连实体间的流控制的能力。链路层还可以负责将物理信道虚拟化为多个虚拟信道和消息类。协议层620a、b依赖于链路层610a、b来在将协议消息转交至物理层605a、b以便跨物理链路传递之前,将协议消息映射至适当的消息类和虚拟信道。在其他示例中,链路层610a、b可以支持多个消息,诸如请求、监听、响 应、写回、非相干数据。
如图6所示,HPI的物理层605a、b(或PHY)可以在电气层(electrical layer)(即,连接两个组件的电导体)上方并且在链路层610a、b下方实现。物理层和相应的逻辑可以驻留在每个代理上,并且连接彼此隔开的两个代理(A和B)上的链路层(例如,在链路的任一侧上的设备上)。本地和远程的电层通过物理媒介(例如,电线、导体、光学媒介等)来连接。在一实施例中,物理层605a、b具有两个主要的相位、初始化和操作。在初始化期间,连接对链路层不透明,信令可以包括定时的状态和握手事件的组合。在操作期间,连接对链路层透明,信令具有一定速度,其中所有巷道在一起操作作为单个链路。在操作阶段期间,物理层将飞片从代理A传输至代理B,且从代理B传输至代理A。该连接也称为链路,并且从链路层抽象出包括媒介、宽度和速度在内的某些物理方面,而同时与链路层交换当前配置的飞片和控制/状态(例如,宽度)。初始化阶段包括次要阶段,例如轮询、配置。操作阶段也包括次要阶段(例如,链路功率管理状态)。
在一实施例中,可以实现链路层610a、b以便在两个协议或路由实体间提供可靠的数据传输。链路层可以从协议层620a、b抽象出物理层605a、b,并且可以负责两个协议代理(A、B)之间的流控制,并且将虚拟信道服务提供给协议层(消息类)和路由层(虚拟网络)。协议层620a、b和链路层610a、b之间的接口一般可以处在分组级别。在一实施例中,链路层处的最小传输单位被称为飞片,飞片是指定数量的位,诸如192个位或某一其他数额。链路层610a、b依赖于物理层605a、b来将物理层605a、b的传输单位(相数位)组帧成链路层610a、b的传输单位(飞片)。此外,链路层610a、b可以在逻辑上被分成两部分,发送者和接收者。一个实体上的发送者/接收者对可以连接至另一实体上的接收者/发送者对。通常在飞片和分组两者的基础上进行流控制。也可能在飞片级基础上执行差错检测和校正。
在一实施例中,路由层615a、b可以提供灵活的且分布式的方法以将HPI事务自源路由至目的地。由于可以通过每个路由器处的可编程路由表来 指定多个拓扑结构的路由算法(一个实施例中的编程由固件、软件或其组合来执行),因此该方案是灵活的。路由功能可以是分布式的;路由可以通过一系列路由步骤来完成,且每个路由步骤通过源路由器、中间路由器或目的地路由器的任一个处的表格的查找来定义。源处的查找可用于将HPI分组注入HPI构造中。中间路由器处的查找可用于将HPI分组自输入端口路由至输出端口。目的地端口处的查找可用于瞄准目的地HPI协议代理。注意到,在一些实现中,路由层可以是薄的,因为路由表以及由此的路由算法未由说明书具体定义。这允许灵活性以及各种用途模型,包括要由系统实现定义的灵活的平台结构拓扑逻辑。路由层615a、b依赖于链路层610a、b来提供多达三个(或更多个)虚拟网络(VN)的使用--在一示例中,使用两个无死锁VN:VN0和VN1,且每个虚拟网络中定义了几个消息类。在其他特征和示例中,共享自适应虚拟网络(VNA)可定义于链路层中,但该自适应网络可能不直接暴露于路由概念,因为每个消息类和虚拟网络可以有专用的资源和有保证的进步。
在一实施例中,HPI可以包括相干协议层620a、b,用以支持代理高速缓存来自存储器的数据行。希望高速缓存存储器数据的代理可以使用相干协议来读取数据行以加载到其高速缓存中。希望修改其高速缓存中的数据行的代理可以使用相干协议以便在修改数据之前获取该行的所有权。在修改行之后,代理可以遵循协议要求将其保持在其高速缓存中,直到它或者将该行写回存储器或者将该行包括在对外部请求的响应中。最后,代理可以实现外部请求以便使其高速缓存中的行无效。协议通过指示所有正在高速缓存的代理可遵循的规则,确保了数据的相干性。它也为没有高速缓存的代理提供了相干地读取和写入存储器数据的手段。
可以实施两个条件以支持使用HPI相干协议的事务。首先,作为一示例,协议可以按每地址在代理的高速缓存中的数据之间、以及在那些数据和存储器中的数据之间维持数据一致性。通俗地说,数据一致性可以指:代理的高速缓存中表示数据的最新值的每个有效数据行以及在相干协议分组中传送的数据可以表示该数据被发送时的最新值。当没有有效的数据副 本存在于高速缓存中或在传输中时,协议可以确保数据的最新值驻留于存储器中。其次,协议可以为请求提供明确的承诺点(commitment point)。读取的承诺点可以表示数据何时可用;写入的承诺点可以表示写入的数据何时全局可观察并且将被后续读取加载。协议可以为相干存储器空间中的可高速缓存的请求和不可高速缓存的(UC)请求支持这些承诺点。
HPI相干协议也可以确保代理作出的相干请求前进至相干存储器空间中的地址。当然,事务可以最终针对适当的系统操作而被满足和隐退。在一些实施例中,HPI相干协议可能不打算重试以解决资源分配冲突。由此,协议自身可以被定义为不包含循环的资源依赖性,实现可能注意其设计不引入会导致死锁的依赖性。此外,协议可以指示设计何时能够提供对协议资源的公平访问。
逻辑上,在一实施例中,HPI相干协议可以包括三个项:相干(或高速缓存)代理、归属代理以及连接这些代理的HPI互连构造。相干代理和归属代理可以一起工作以通过在互连上交换消息而实现数据一致性。链路层610a、b及其相关的描述可以提供互连构造的细节,包括它如何遵循相干协议的要求,如此处讨论的。(可以注意到,划分成相干代理和归属代理是为清楚目的。在其他示例中,设计可以在一个插槽内包含两种类型的多个代理,或甚至将代理行为组合至单个设计单元。)
在一实施例中,归属代理可以被配置成保护物理存储器。每个归属代理可以负责相干存储器空间的区域。区域可以是非重叠的,因为单个地址被一个归属代理所保护,系统中的归属代理区域在一起覆盖了相干存储器空间。例如,每个地址可以由至少一个归属代理保护。因此,在一实施例中,HPI系统的相干存储器空间中的每个地址可以映射到正好一个归属代理。
在一实施例中,HPI相干协议中的归属代理可负责服务于对相干存储器空间的请求。对于读取(Rd)请求,归属代理可以生成监听(snoop)(Snp)、处理它们的响应、发送数据响应、以及发送完成响应。对于无效(Inv)请求,归属代理可以生成必要的监听、处理它们的响应、以及发送完成响应。 对于写入请求,归属代理可以将数据送交存储器并且发送完成响应。
归属代理可以在HPI相干协议中提供监听并且处理来自相干代理的监听响应。归属代理也可以处理来自相干代理的用于冲突解决的转发请求,转发请求是特殊的监听响应。当归属代理接收到转发请求时,它可以向生成该转发请求的相干代理(即,检测到冲突的监听请求的代理)发送转发响应。相干代理可以使用来自归属代理的这些转发响应和完成响应的排序来解决冲突。
相干代理可以发出所支持的相干协议请求。请求可以被发出至相干存储器空间中的地址。针对除RdCur以外的读取请求(Rd)接收到的数据可以是一致的。针对RdCur请求的数据在生成数据分组时可能是一致的(尽管它在传递时变得过时)。表1示出潜在的所支持请求的示例性的、非穷尽性的列表:
表1


HPI可以支持相干协议,相干协议利用MESI协议的原理。每个高速缓存行可以用一个或多个所支持的状态(例如,在高速缓存行中被编码)来标记。“M”或“已修改”状态可以表明高速缓存行的值已经从在主存储器中的值被修改。M状态中的行仅存在于特定的和相应的高速缓存代理中,该代理被要求在将来的某一时间将已修改的数据写回至存储器,例如,在允许主存储器状态的任何其他读取(不再有效)之前。写回可以将行自 M状态转换成E状态。“E”或“独占”状态可以指示高速缓存行仅存在于当前的高速缓存中,但其值与主存储器中的值相匹配。E状态中的高速缓存行可以响应于读取请求在任一时间转换为S状态,或者可以通过写至该行而被改变为M状态。“S”或“共享”状态可以指示高速缓存行可以被存储于机器的其他高速缓存中,并且具有与主存储器中的值相匹配的值。行可以在任一时间被丢弃(被改变为I状态)。“I”或“无效”状态可以指示高速缓存行是无效的或未使用的。HPI中也可以支持其他状态,在其他示例中,诸如“F”或“转发”状态,“F”或“转发”状态指示特定的共享行值要被转发至也共享该行的其他高速缓存。
表2包括可包括于一些相干协议消息中的示例性信息,在其他示例中,包括监听、读取和写入请求:
表2

监听消息可由归属代理生成并且被定向至相干代理。监听(SNP)虚拟信道可用于监听,且在一实施例中,监听(SNP)虚拟信道消息是使用SNP虚拟信道的仅有的消息。监听可以包括请求方代理的NID以及万一监听导致数据被直接发送至作出请求的代理时它为请求分配的RTID。在一实施例 中,监听还可以包括由归属代理分配以处理该请求的HTID。处理监听的相干代理可以将HTID包括于它发回归属代理的监听响应中。在一些实例中,监听可能不包括归属代理的NID,因为它可以自所包括的地址而得到,这是目标相干代理在发送其响应时所做的。扇出(fanout)监听(有“SnpF”前缀的那些监听)可能不包括目的地NID,因为路由层负责将适当的监听消息生成至扇出区域中的所有对等体。表3中列出监听信道消息的示例性列表:
表3


HPI也可以支持它们可以发出至地址的非监听请求,诸如那些实现为非相干请求的非监听请求。在其他可能示例中,这些请求的示例可包括:自存储器请求只读行的非监听读取、将行写至存储器的非监听写入、以及根据掩码将行写至存储器。
在一示例中,在HPI相干协议中可以定义四种基本类型的响应消息:数据、完成、监听和转发。特定的数据消息可携带附加的完成指示,并且特定的监听响应可以携带数据。响应消息可以使用RSP虚拟信道,并且通信构造可以在有序的完成响应和转发响应之间维持适当的消息传递。
表4包括示例HPI相干协议所支持的至少一些潜在响应消息的列表:
表4


在一示例中,数据响应可以瞄准请求方相干代理。归属代理可以发送数据响应的任一个。相干代理可以仅发送不包含有序完成指示的数据响应。此外,相干代理可以被限制为仅作为处理监听请求的结果而发送数据响应。组合的数据和完成响应可以总是具有有序完成类型,并且可以通过通信构造与转发响应保持排序。
HPI相干协议可以使用通用的无序完成消息和相干专用的有序完成消息。归属代理可将完成响应发送至相干代理,完成响应一般去往相干代理。有序完成响应可以通过通信构造来保持与转发响应排序。
监听响应可由相干代理发送,特别是响应于处理监听请求而发送,并 瞄准处理监听请求的归属代理。destNID通常是归属代理(自监听请求中的地址确定),并且所包括的TID用于归属代理的为处理请求而分配的资源。命令中有“Wb”的监听命令用于已修改的高速缓存行的隐式写回,它们携带高速缓存行数据。(隐式写回可以包括相干代理由于另一代理的请求而作出的写回,而其他请求由相干代理使用其请求资源显式地作出。)
当监听请求与未完成的请求冲突时,相干代理可以生成转发请求。转发请求瞄准生成监听的归属代理,自监听请求的地址确定。由此,destNID是归属代理。转发请求还可以包括归属代理的为处理原始请求而分配的资源的TID、以及生成转发请求的相干代理的NID。
HPI相干协议可以支持单个转发响应FwdCnfltO。归属代理可以为每个接收到的转发请求发送一转发响应,并且发送到转发请求的peerNID字段中的相干代理。转发请求携带高速缓存行地址,使得相干代理可以将消息与它所分配的转发资源相匹配。转发响应消息可以携带请求方代理的NID,但在一些情况下,不是请求方代理的TID。如果相干代理想要支持转发响应的高速缓存到高速缓存传输,它可以在处理监听时保存请求方代理的TID并且发送转发请求。为了支持冲突解决,通信构造可以在转发响应以及在它之前被发送到同一目的地相干代理的所有有序完成之间保持排序。
在一些系统中,归属代理资源被预分配,因为“RTID”表示归属代理中的资源,并且高速缓存的代理在生成新的相干请求时自系统配置的池分配RTID。这种方案可以将任何特定高速缓存代理可以对归属代理作出的活动请求的数量限制为它被系统给予的RTID数量,从而高效地在高速缓存代理之间静态地切片归属代理。除了其他潜在问题以外,这种方案可导致资源的低效分配,并且适当调整归属代理的尺寸以支持请求吞吐量对于大型系统来说变得不切实际。例如,这种方案可以强制对高速缓存的代理实施RTID池管理。此外,在一些系统中,高速缓存代理可能不再用该RTID,直到归属代理已经完全处理了该事务为止。然而,等到归属代理完成所有处理会不必要地抑制高速缓存代理。此外,在其他问题中,协议中的特定流可包括高速缓存代理在归属代理释放通知之外紧紧抓住RTID,从而进一步 扼制它们的性能。
在一实现中,归属代理可被允许在请求自高速缓存代理到来时分配它们的资源。在这种实例中,归属代理资源管理可被保持与相干代理逻辑分开。在一些实现中,归属资源管理和相干代理逻辑可以至少部分地混合在一起。在一些实例中,与归属代理能同时处理的请求数量相比,相干代理有更多的未完成的请求给归属代理。例如,HPI可以允许请求在通信构造中排队。而且,为避免归属代理阻止到来的请求直到资源变得可用所造成的死锁,HPI相干协议可以被配置成确保其他消息可以在被阻止的请求周围取得进步,从而确保活动的事务得以完成。
在一示例中,可以通过允许代理接收分配资源的请求以处理它来支持资源管理,该代理发送为到该请求的所有响应分配相应资源的请求。HTID可以表示归属代理为某些协议消息中包括的给定请求分配的资源。在其他示例中,监听请求和转发响应中的HTID(连同RNID/RTID)可用于支持对归属代理的响应以及被转发给请求方代理的数据。而且,HPI可以支持代理早期发送有序完成(CmpO)的能力,即当确定请求方代理重新使用其RTID资源是安全的时,在归属代理完成处理请求之前发送。协议也可以定义对具有类似RNID/RTID的监听的一般处理。
在一个说明性示例中,当特定请求的跟踪状态为繁忙时,目录状态可用于确定归属代理何时发送响应。例如,无效目录状态可允许发送响应,除了指示不存在未完成的监听响应的RdCur请求。未知的目录状态可以表明所有对等体代理均已被监听且在发送一响应之前收集所有它们的响应。专用目录状态可以表明所有者被监听且在发送一响应前收集所有响应,或者如果请求方代理是所有者则可立即发送响应。共享目录状态可以指定无效请求(例如,RdInv*或Inv*)已经监听了所有对等体代理并且收集了所有监听响应。当给定请求的跟踪者状态是已写回缓冲(WbBuffered)时,归属代理可以发送数据响应。当请求的跟踪状态是DataSent(指示归属代理已发送数据响应)或DataXfrd(指示对等体传输行的副本)时,归属代理可以发送完成响应。
在诸如以上那些示例中,归属代理可以在已收集所有监听响应之前发送数据和完成响应。HPI接口允许这些“早期”响应。当发送早期数据和完成时,归属代理可以在释放它为请求分配的资源之前,收集所有未完成的监听响应。归属代理也可以继续阻止到同一低至的标准请求,指导已收集所有监听响应为止,然后释放资源。自Busy(繁忙)或WbBuffered状态发送响应消息的归属代理可以使用消息要发送至的子动作表格(例如,被包括在体现HPI相干协议的正式规范一组协议表格中)并且为如何更新目录状态使用子动作表格。在一些情况下,早期完成可以没有归属节点的预分配而执行。
在一实施例中,HPI相干协议可以省略预分配归属资源和有序请求信道之一或之两者的使用。在这样的实现中,HPI RSP通信信道上的特定消息可以被排序。例如,可以特别提供“有序完成”和“转发响应”消息,这些消息可以自归属代理被发送至相干代理。归属代理可以对所有的相干读取和无效请求(以及其他请求,诸如高速缓存相干冲突中所包括的NonSnpRd请求)发送有序完成(CmpO或Data_*_CmpO)。
归属代理可以将转发响应(FwdCnfltO)发送至相干代理,相干代理发送转发请求(RspCnflt)以指示冲突。每当相干代理具有未完成的读取或无效请求并且检测到与该请求到达同一高速缓存行传入监听请求,相干代理可以生成转发请求。当相干代理接收到转发响应时,它检验未完成请求的当前状态以确定如何处理原始监听。归属代理可以发送转发响应来与完成(例如,CmpO或Data_*_CmpO)排序。相干代理可以使用监听中所包括的信息来帮助相干代理处理转发响应。例如,转发响应可能不包括任何“类型”信息且无RTID。转发响应的性质可以从自以前的监听获得的信息中得出。而且,当相干代理的所有“转发资源”都在等待转发响应时,相干代理可以阻止未完成的监听请求。在一些实现中,每个相干代理可以被设计成具有至少一个转发资源。
在一些实现中,通信构造需求是在路由层上。在一实施例中,HPI相关协议具有为路由层所特有的一个通信构造需求。相干协议可以取决于路 由层来将扇出监听(SnpF*操作码-监听(SNP)信道消息)转换成针对相干代理的扇出集中请求的所有对等体的适当的监听。扇出集是路由层的由协议层所共享的配置参数。在该相干协议规范中,它被描述为归属代理配置参数。
在以上一些实现中,HPI相干协议可以使用虚拟信道中的四个:REQ、WB、SNP和RSP。虚拟信道可用于解开依赖性周期并避免死锁。在一实施例中,可以在所有虚拟信道上没有复制且RSP虚拟信道上没有排序要求的情况下,传递每个消息。
在一些实现中,通信构造可以被配置成在特定的完成消息和FwdCnfltO消息之间保留排序。完成消息是CmpO消息以及CmpO附着有(Data_*_CmpO)的任何数据消息。所有这些消息一起成为“有序完成响应”。有序完成响应和FwdCnfltO消息之间的概念要求在于FwdCnfltO不“通过”有序完成。更具体而言,如果归属代理发送有序完成响应其后是FwdCnfltO消息,且两个消息都去往同一个相干代理,则通信构造在FwdCfltO之前传递有序完成响应,还有其他可能示例。
应当理解,尽管这里公开了协议流的一些示例,但是所述的示例仅意图给出该协议的直觉,而不需要覆盖协议可能显示的所有可能的场景和行为。
当来自多于一个相干代理的到同一高速缓存行地址的请求出现在差不多相同时间,可能出现冲突。作为一具体示例,当一个相干代理的标准请求的监听到达一个对等体相干代理且具有到同一地址的未完成请求时,可能出现冲突。由于每个监听会在冲突中结束,因此单个请求可具有多个冲突。解决冲突可以是归属代理、相干代理和通信构造间的协调努力。然而,主要责任在于相干代理检测冲突的监听。
在一实施例中,归属代理、相干代理和通信构造可以被配置成帮助成功地解决冲突。例如,归属代理一次可仅对每地址一个请求具有未完成的监听,使得对于给定的地址,归属代理可仅对一个请求具有未完成的监听。这可用于排除包括两个请求彼此竞争的竞争条件的能力。它也可以确保在 相干代理检测到冲突但尚未解决它之前,该相干代理不会看到另一个监听到达该同一地址。
在另一示例中,当相干代理以地址与活动标准请求相匹配来处理监听时,它可以分配转发资源并且将转发请求发送至归属代理。具有接收到同一地址的监听的未完成标准请求的相干代理可以以RspCnflt监听响应进行应答。该响应可以是到归属代理的转发请求。由于消息是请求,在发送它之前,相干代理可以分配资源以处理归属代理将发送的请求。(在一些实例中,当相干代理用尽转发资源时,相干协议允许阻止冲突的监听。)相干代理可以存储有关冲突监听的信息以便在处理转发请求时使用。在检测到冲突且直到处理转发请求之前,可以保证相干代理不看到另一监听到达同一地址。
在一些示例中,当归属代理接收到转发请求时,它不记录监听响应。相反,归属代理可以向冲突的相干代理发送转发响应。在一示例中,转发请求(RspCnflt)看上去像监听响应,但归属代理不将其视为监听响应。它不将该消息记录为监听响应,而是发送转发响应。具体而言,对于归属代理接收到的每一个转发请求(RspCnflt),它向作出请求的相干代理发送一个转发响应(FwdCftO)。
HPI通信构造对转发响应以及归属代理和目标相干代理之间的有序完成进行排序。因此,构造可用于将早期冲突与冲突的相干代理处的晚到冲突区分开来。从系统级的角度,早期冲突出现于对当前活动的请求的监听遇到归属代理尚未接收到或未开始处理的请求时,而晚到冲突出现于监听遇到它已处理的请求时。换言之,晚到冲突是与归属代理已向其发送完成响应的请求的冲突。由此,当归属代理接收到对晚到冲突的转发请求时,它会已将完成响应发送至冲突代理的未完成请求。通过对自归属代理到相干代理的转发响应和有序完成响应进行排序,相干代理可以通过处理其冲突请求的状态,来确定冲突是早期还是晚到。
当相干代理接收到转发响应时,它使用其冲突请求的状态来确定冲突是早期还是晚到,以及何时处理原始监听。由于通信构造的排序要求,因 此冲突请求的状态指示冲突是早期还是晚到。如果请求状态指示已经接收到完成,则它是晚到冲突,否则,它是早期冲突。或者,如果请求状态表示该请求正在等待其(多个)响应,则它是早期冲突,否则,它是晚到冲突。冲突的类型确定何时处理监听:从相干代理的角度,早期冲突意指监听是针对在代理的冲突请求之前被处理的请求,晚到冲突意指监听是针对在代理的冲突请求之后被处理的请求。假定该排序后,对于早期冲突,相干代理立即处理原始监听;对于晚到冲突,相干代理等待直到冲突请求已接收到其数据(用于读取)且其处理器已经有机会在处理监听之前作用于已完成的请求。当处理冲突监听时,相干代理会生成监听响应供归属代理最终记录。
与写回请求的所有冲突可以是晚到冲突。自相干代理角度的晚到冲突是当代理的请求在监听的请求之前被处理时。根据该定义,与写回请求的所有冲突可以被视为晚到冲突,因为写回最先被处理。否则,如果归属代理打算在写回送交到存储器之前处理请求,则会违反数据一致性和相干性。由于与写回的所有冲突都被视为晚到冲突,因此相干代理可以被配置成阻止冲突的监听,直到未完成的写回请求完成为止。而且,写回也可以阻止转发的处理。在其他示例中,由活动写回来阻止转发可以被实现为用于支持不可高速缓存的存储器的协议要求。
当相干代理接收到监听其高速缓冲的请求时,它可以首先检验相干协议是否会允许它,然后它可以处理该监听并生成响应。可以在定义协议规范的一组状态表格中定义一个或多个状态表格。一个或多个状态表格可以指定相干代理何时可以处理监听以及它是否会监听高速缓存或替代地生成冲突转发请求。在一示例中,有两个条件,相干代理在这两个条件下处理监听。第一条件是当相干代理具有到监听地址的REQ请求(Rd*或Inv*)且它具有可用转发资源时。在该情况下,相干代理必须生成转发请求(RspCnflt)。第二条件是当相干代理不具有到监听地址的REQ、Wb*或EvctCln请求时。状态表格可以定义相干代理如何根据这两个相应的条件来处理监听。在一示例中,在其他条件下,相干代理可以阻止监听,直到或 者转发资源变得可用(第一条件)、或者阻止Wb*或EvctCln接收到其CmpU响应(第二条件)为止。注意到,NonSnp*请求可能不影响监听处理,并且相干代理在确定如何处理或阻止监听时可以忽略NonSnp*条目。
当生成转发请求时,相干代理可以为转发请求保留资源。在一示例中,HPI相干协议可能不要求最小数量的转发响应资源(具有至少一个以上)并且可允许相干代理在没有转发响应资源可用时阻止监听。
相干代理如何处理其高速缓存中的监听可取决于监听类型和当前的高速缓存状态。然而,对于给定的监听类型和高速缓存状态,可能有许多所允许的响应。例如,具有接收非冲突SnpMigr(或在SnpMigr之后正在处理转发响应)的完全修改行的相干代理可以做以下之一:降级为S,发送隐式写回至归属代理以及发送Data_F至请求者;降级为S,发送隐式写回至归属代理;降级为I,发送Data_M至请求者;降级为I,发送隐式写回至归属代理以及发送Data_E至请求者;降级为I,发送隐式写回至归属代理;可能有其他示例。
HPI相干协议允许相干代理将带有部分掩码的已修改行存储于其高速缓存中。然而,对于M个副本的所有行可能要求完全(Full)或空(Empty)掩码。在一示例中,HPI相干协议可以限制部分行的隐式写回。由于监听请求(或转发响应)而希望驱逐部分M行的相干代理可以先发起显式写回并阻止监听(或转发),直到显式写回完成为止。
保存转发响应的信息:在一实施例中,HPI相干协议允许相干代理存储与外出请求缓冲器(ORB)分开的转发响应信息。分开信息允许ORB在所有响应都被收集时释放ORB资源和RTID,而不管冲突中所涉及的条目。状态表格可用于指定为转发响应存储什么信息以及在什么条件下存储。
HPI相干协议中的转发响应可包含地址、请求方代理的NID以及归属TID。它不包含原始监听类型或RTID。如果相干代理希望将转发类型和RTID用于转发响应,则相干代理可以存储转发类型和RTID,而且它可以使用地址来将传入转发响应与适当的转发条目相匹配(且用于生成归属NID)。存储转发类型可以是任选的。如果没有类型被存储,则相干代理可以将转发 请求视为具有FwdInv类型。同样,存储RTID可以是任选的,并且可以在相干代理要在处理转发响应时支持高速缓存到高速缓存的传输时发生。
如上所述,相干代理可以在监听请求与未完成请求冲突时生成转发请求。转发请求瞄准生成监听的归属代理,监听可以从监听请求的地址确定。由此,destNID可以标识归属代理。转发请求也可以包括归属代理的为处理原始请求而分配的资源的TID、以及生成转发代理的相干代理的NID。
在一实施例中,相干代理可以阻止对写回请求的转发以维持数据一致性。相干代理也可以使用写回请求以在处理转发之前送交不可高速缓存的(UC)数据,并且可以允许相干代理写回部分高速缓存行而不是支持对转发的部分隐式写回的协议。实际上,在一实施例中,相干代理可被允许将带有部分掩码的修改行存储在其高速缓存中(尽管M个副本要包括完全或空掩码)。
在一示例中,在早期冲突被任何响应接收到之前,它可以通过转发响应遇到未完成的标准请求来解决。在一示例中,相应的协议状态表格可以指定,只要标准请求条目仍处于ReqSent状态,就可以处理转发响应。晚到冲突可以通过在未完成的请求已接收到其完成响应之后到达的转发响应来解决。当这发生时,或者该请求会已完成(已接收到其数据或是Inv*请求),或者该条目处于其RcvdCmp状态。如果请求仍在等待其数据,则相干代理必须阻止转发,直到数据被接收(并被使用)为止。如果冲突的Rd*或Inv*已完成,则只要相干代理未发起高速缓存行的显式写回,转发响应就可以被处理。可允许相干代理在具有到同一地址的转发响应(或监听请求)的同时发起显式写回,由此允许部分行(例如,对部分修改的行的监听请求)或不可高速缓存的存储器被适当地送交至存储器。
转至图7,示出了示例冲突管理方案的第一示例。第一高速缓存(或相干)代理705可以将对特定数据行的读取请求发送至归属代理710,导致对存储器715的读取。在高速缓存代理705的读取请求之后不久,另一高速缓存代理720作出对同一行的所有权(RFO)的请求。然而,在从高速缓存代理720接收RFO之前,归属代理710已将Data_S_CmpO(数据_S_CmpO) 发送至第一高速缓存代理705。RFO可以导致监听(SnpFO)被发送至高速缓存代理705(以及其他高速缓存代理),在接收完整的Data_S_CmpO之前,监听被第一高速缓存代理705所接收。高速缓存代理705在接收到监听SnpO之后可以标识潜在冲突,潜在冲突涉及在其原始读取请求中所请求的存储器的行,并且可以通过用转发响应冲突消息(RspCnflt)响应于SnpO而向归属代理710通知该冲突。归属代理710可以通过发送转发响应(FwdCnfltO)来响应于转发响应RspCnflt。然后,高速缓存代理705可以接收共享数据完成Data_S_CmpO并且从I状态转换成S状态。转发响应FwdCnfltO然后可以被高速缓存代理705所接收,且高速缓存代理705可以基于触发了转发响应RspCnflt的发送的监听SnpFO来确定如何响应于转发响应消息FwdClfltO。在该示例中,高速缓存代理705可以查询例如协议状态表格,以确定对转发响应消息FwdClfltO的响应。在图7的特定示例中,高速缓存代理705可以转换至F状态并且将它在Data_S_CmpO消息中从归属代理710接收到的数据的S副本、在Data_F消息中发送至第二高速缓存代理720。第一高速缓存代理705还可以将响应消息RspFwdS发送至归属代理710,通知归属代理710第一高速缓存代理与第二高速缓存代理共享其数据副本。
在另一说明性示例中,在图8的简化流程图中所示,第一高速缓存代理705可以将对特定存储器行的所有权(RFO)的请求发送至归属代理710。不久后,第二高速缓存代理可以将RdInvOwn发送至归属代理710,作为对M状态中的同一存储器行的请求。连同来自第一高速缓存705的RFO消息,归属代理710可以将监听(SnpFO)发送至第二高速缓存代理720,第二高速缓存代理720将监听标识为潜在冲突,潜在冲突涉及该存储器行服从于RFO和RdInvOwn请求两者。因而,第二高速缓存代理720可以将转发请求RspCnflt发送至归属代理720。归属代理720用转发响应来响应于第二高速缓存代理720的转发请求。第二高速缓存代理720基于原始监听SnpFO中所包含的信息确定对该转发响应的响应。在该示例中,第二高速缓存代理720用监听响应RspI进行应答,监听响应RspI指示第二高速缓存代理 720处于I状态。归属代理710接收监听响应RspI并且确定将数据完成独占(Data_E_CmpO)发送至第一高速缓存代理705是合适的,这使第一高速缓存代理转换成E状态。发送了完成之后,归属代理710于是可以开始响应于第二高速缓存代理的RdInvOwn请求,以第一高速缓存代理705的监听请求SnpInvO开始。第一高速缓存代理705可以标识该监听导致第二高速缓存代理720为获得行的独占M状态副本而作出的请求。因而,第一高速缓存代理705转换成M状态以将其行副本作为M状态副本(随着Data_M消息)发送至第二高速缓存代理720。此外,第一高速缓存代理705也发送响应消息RspFwdI以指示该行的副本已被发送至第二高速缓存代理720且第一高速缓存代理已被转换成I状态(将副本的所有权放弃给第二高速缓存代理720)。
接下来转至图9的示例,示出另一简化流程图。在该示例中,高速缓存代理720尝试在不接收数据(例如通过InvItoE消息)的情况下请求不可高速缓存的(UC)行的独占所有权。第一高速缓存代理705为E状态中的高速缓存行发送竞争消息(RdInv)。HPI相干协议可以指示如果所请求的行之前被高速缓存在M状态中,则在响应于第一高速缓存代理705的RdInv传递E数据之前,该行将被写入至存储器。归属代理710可以基于RdInv请求,将完成(CmpO)发送至InvItoE请求且将监听(SnpInv)发送至高速缓存代理720。如果高速缓存代理720在完成前接收到监听,则高速缓存代理720就可以标识该监听与其独占所有权请求关于同一个高速缓存行,并且通过转发请求RspCnflt来指示冲突。如在以前的示例中,归属代理710可以被配置成用转发响应(FwdCnfltO)响应于转发请求。可以对该转发响应允许多个可允许的响应。例如,高速缓存代理720可以发起显式写回(例如,WbMtoI)并且阻止监听(或转发)直到显式写回已完成(例如,CmpU),如图9的示例中所示。然后,高速缓存代理可以完成监听响应(RspI)。然后,在其他示例中,归属代理710可以处理第一高速缓存代理705的RdInv请求并且返回完成Data_E_CmpO。
在多个示例中,诸如图9的示例,其中,在高速缓存代理具有到同一 地址的未完成的读取或无效请求且它已高速缓存了部分修改行(通常称为“埋葬(bury)的M”)时接收到监听的情况下,在一实现中,HPI相干协议允许代理或1)在阻止监听的同时执行行的显式写回(部分)、或2)发送转发请求(RspCnflt)至归属代理。如果选择了(1),则代理就在接收到写回完成之后处理监听。如果选择了(2),则代理可能会在其未完成的读取或无效请求仍在等待响应的同时接收到转发响应(FwdCnfltO),且代理仍具有部分修改行。如果是该情况,则协议允许代理在执行行的显式写回(部分)的同时阻止转发。在写回期间,协议保证代理不会接收到对未完成的读取或无效请求的响应。上述机制(即使在代理具有未完成的读取或无效请求时,允许相干代理发出显式的写回并阻止监听和转发)也用于确保部分或UC写入在写入者获得全局可观察性之前被送至存储器。
相干代理针对部分/UC请求使用两步骤过程。首先,它们检验它们是否具有高速缓存行的所有权,并且如果没有则在协议中发出所有权(无效)请求。其次,它们执行写入。在第一步骤中,如果它们执行了所有权请求,则请求可能与其他代理对该行的请求冲突,意味着代理可能在所有权请求未完成的同时接收到监听。按相关协议要求,代理将发出冲突监听的转发请求。在等待转发响应时,代理可能接收到所有权请求的完成,这将该行的所有权许可给该代理并且允许代理发起对部分/UC写入的写回。在此发生时,代理可能接收到转发响应,它被强制处理该转发响应。相干代理可能不组合这两个活动。相干代理替代地将写回部分/UC写入数据与转发的处理分开,并且首先执行写回。例如,高速缓存代理可以在处理转发和写回部分高速缓存行之前,使用写回请求来送交UC数据,还有其他示例和特征。
在一实施例中,HPI相干协议可以支持接受独占状态数据的读取无效(RdInv)请求。不可高速缓存的(UC)读取的语义包括将已修改的数据冲刷至存储器。然而,一些体系结构允许将M数据转发至无效的读取,无效的读取强制请求方代理在其接收到M数据的情况下清除该行。RdInv简化了流程且不允许转发E数据。例如,如图的10的示例所示,归属代理710的目录状态可以表示没有代理(例如705、710)具有该行的副本。在这种实 例中,归属代理710可以立即发送数据和完成响应。如果有效的目录状态指示没有对等体具有该行的副本,HPI也允许同样地立即发送数据和完成响应。
如图10的示例所示,在一些实现中,代理可以用RspIWb消息响应于监听,表示高速缓存代理(例如705)在请求对存储器的写入的同时处于(或被转换至)I状态。RspIWb可以将有效的目录状态设置为无效(Invalid),并且允许归属代理710在不监听所有对等体的情况下发送响应。在图10的示例中,第二高速缓存代理720在归属代理目录处于未知(Unknown)状态时发送RdInv请求。作为响应,归属代理710最初仅监听第一高速缓存代理705。在该示例中,高速缓存代理705具有行的已修改副本,并且用隐式写回(例如RspIWb)进行响应。当归属代理(Home)接收到RspIWb消息时,可以确定没有其他代理会具有该行的副本,并且可以进一步标识高速缓存代理705已经通过RspIWb无效了其高速缓存。作为响应,归属代理710可以将目录状态设为无效(Invalid)。由于目录状态为无效,因此归属代理710等待直到至存储器715的写入完成,然后发送数据和完成响应(例如Data_E_CmpO)并释放它为来自高速缓存代理720的请求分配的资源。在该示例中,归属代理可以跳过系统中其他高速缓存代理的监听。实际上,在这种示例中,如图11所示的示例中所示(用高速缓存代理1105),归属代理(例如710)可以在接收到所有监听响应(例如,由于代理705处M副本的标识)之前,发送数据和完成响应。
在图10和11的示例中,当第二高速缓存代理720自归属代理710接收到Data_E_CmpO响应时,高速缓存代理720可以将数据加载至其高速缓存中、将其高速缓存状态设置为E、并且释放它为请求分配的资源RTID。在释放RTID之后,高速缓存代理720可以为新请求重新使用它。与此同时,归属代理710可以等待针对对到原始使用RTID的请求的监听的监听响应。监听消息可以包含请求的RTID和请求方代理的NID。由此,由于高速缓存代理720会为了到相同或不同归属代理的新请求重新使用该RTID,且该归属代理会在对原始请求的监听未完成的同时为新请求生成监听,因此同一 个“唯一”事务ID会存在于到相同相干代理的多个监听中。从相干性的角度,事务ID(TID)的该复制仍是可接受的,因为对原始请求的监听仅找到ID状态。
归属代理可以在请求的跟踪状态是等待(Wait)、繁忙(Busy)或DataXfrd时生成监听,意味着或者归属代理尚未发送数据响应、或者监听响应表示一些对等体将数据转发至请求方代理。归属代理也可以检验请求的监听(Snoop)字段以确保它尚未发送监听之对等体。当发送监听时,归属代理可以将对等体(或所有扇出对等体)添加至监听(以防止发送第二监听)并且跟踪未完成的监听响应。
如上所述,HPI的一些实现可以支持扇出监听。此外,在一些示例中,HPI可以对于路由层所生成的扇出监听支持显式的扇出监听操作SnpF。HPI归属代理(例如710)可以使用SnpF来生成单个扇出监听请求(例如,用单个命令和消息),并且作为响应,路由层可以基于SnpF请求生成对相应的扇出锥形中的所有对等体代理的监听。归属代理可以相应地预期来自每一个代理扇区的监听响应。尽管其他监听消息可包括目的地节点ID,但是扇出监听可以省略目的地NID,因为路由层负责生成到扇出区域中的所有对等体的适当监听消息。
在一些实现中,由于路由层就在协议层下面,通信构造要求作用于路由层。在一实施例中,HPI相干协议可以具有对于路由层专用的一个通信构造要求。例如,相干协议可以依赖于路由层来将一扇出监听(SnpF*操作码-监听(SNP)信道消息)转换成对于高速缓存代理的扇出集合中所有请求的对等体的适当监听。扇出集合是路由层的由协议层所共享的配置参数,或是归属代理配置参数。
在一些实现中,归属代理可以发送对活动标准请求的扇出监听。HPI路由层可以将归属代理的扇出监听请求转换成路由层所定义的扇出锥形中的每一个对等体。HPI相干协议归属代理经由HAFanoutAgent配置参数知道哪些相干代理被路由层扇出所覆盖,HAFanoutAgent配置参数按地址标识了扇出锥形中所包括的相应的高速缓存代理。路由层可以接受扇出监听SnpF 并且将其转换成扇出锥形中所包括的每一个高速缓存代理(除请求方代理以外)的监听。在一实现中,在其他示例中,路由层可以将扇出监听转换成相应的非扇出监听(具有适当的非扇出操作码,诸如表3所示的那些)。
类似于规则监听,归属代理可以被限制为仅在它发送对高速缓存代理作出的相干协议请求的完成响应之前发送扇出监听。而且,附加条件可以置于扇出监听上。例如,如果归属代理未个别地监听扇出锥形中的任一对等体,则归属代理可以发送扇出监听。换言之,在其他示例中,在一些实现中,如果扇出锥形为空或如果请求方高速缓存代理是扇出锥形中仅有的代理,则归属代理可能不发起扇出监听。
在一实施例中,HPI可以支持具有高速缓存推提示(WbPushMtoI)的显式写回。通常,在一些示例中,已修改的数据可以通过或者将数据显式地写回存储器、或者响应于监听请求而传输已修改的数据来传输。连同监听响应来传输已修改的数据可以被视为“拉”传输。在一些实现中,也可以支持“推”机制,借此,具有修改数据的高速缓存代理将该修改数据直接发送至另一高速缓存代理,用于存储于目标代理的高速缓存中(与修改的(Modified)高速缓存状态一起)。
在一实施例中,高速缓存代理可以将已修改数据连同一提示写回归属代理,且暗示它可以将已修改数据推至“本地”高速缓存,将数据存储于本地高速缓存中的M状态中,而不将数据写至存储器。在一实现中,归属代理710可以自高速缓存代理705接收WbPushMtoI消息,并且标识另一高速缓存代理(例如720)可能在不久的将来使用或期望特定行的所有权的暗示,如图12的示例所示。归属代理710可以处理WbPushMtoI消息并且有效地接受该暗示并把写回数据推至其他高速缓存代理720,而不将数据写至存储器715,从而使该另一高速缓存代理720转换至M状态。在一些实现中,归属代理710可以交替地处理WbPushMtoI消息和操作数以将数据写回存储器,如在WbMtoI请求(如图13所示)中,并且不将写回数据直接推至该另一高速缓存代理720。
在一示例实现中,归属代理(例如710)可以通过检验跟踪状态为 WbBuffered来处理WbPushMtoI消息,跟踪状态为WbBuffered可以表示归属代理尚未处理数据。在一些实例中,数据“推”的条件可以是归属代理确定归属代理还未处理到同一地址的标准请求。在一些实现中,推的条件还可以是归属代理确定目标高速缓存代理(例如,在图12的示例中是720)是“本地”。如果目标高速缓存代理不被归属代理目录所覆盖,则归属代理可以将数据传输至目标高速缓存代理的高速缓存并且将目录更新为无效(Invalid)。如果目标高速缓存代理被目录所覆盖,则只有在目标高速缓存不具有活动InvXtoI时允许到高速缓存代理的高速缓存的数据传输,且在被传输时,归属代理可以将目录更新为独占(Exclusive),以目标高速缓存代理作为所有者。在其他可能的示例中,对于归属代理确定是否要接受WbPushMtoI消息的暗示并将数据推至目标高速缓存代理,还是取而代之通过将数据写至存储器来处理WbPushMtoI消息作为WbMtoI请求,可以定义其他条件(例如,在相应的协议状态表格中)。
在一些实现中,HPI可以支持InvItoM消息以预分配至归属代理的目录高速缓存,诸如I/O目录高速缓存(IODC)。InvItoM可以在不接收数据的情况下请求高速缓存行的独占所有权,而同时指示马上要执行写回的意图。所要求的高速缓存状态可以是M状态和E状态,或是任一个。归属代理可以处理InvItoM消息以便为通过InvItoM消息暗示的写回分配资源(包括InvItoM操作码)。
在一些实现中,操作码可以通过HPI相干协议被提供以触发存储器控制器的存储器冲刷,一个或多个归属代理与该存储器控制器交互。例如,可以为永久存储器冲刷定义操作码WbFlush。如图14的示例中所示,主机(例如1405)可以发送定向至特定存储器控制器1410的WbFlush消息。在一些实例中,WbFlush可以指示特定地址,WbFlush命令可以被发送至按地址瞄准的具体存储器控制器。在另一示例中,WbFlush消息可以被广播至多个存储器控制器。在一示例中,可以作为CPU中永久送交的结果而发送t。接收WbFlush命令的每个相应的存储器控制器(例如,1410)可以处理该消息,以使存储器控制器处的所有未决的写入至该存储器控制器所管理的 永久存储器设备(或存储器位置)。命令的目的可以是将所有以前的写送交至永久存储器。例如,可以连同电力故障管理控制器或过程来触发WbFlush命令,以确保未决写入被冲刷至非易失性存储器并且在系统的电力故障时被保存。而且,如图14的示例所示,在将所有未决写入冲刷(或发起它们的冲刷)至存储器(例如,1415)后,存储器控制器1410可以用指示该冲刷的完成来响应于请求方主机(或代理)(例如,1405)。该完成不应被发送至主机,直到存储器控制器已确保数据将使其发送至永久存储器。在其他用途和示例中,WbFlush消息或相应的完成可以充当其他过程和控制器的检验点,这取决于或驱动未决写入到存储器的冲刷。
一些传统的体系结构可以要求分开地发送Data_M和相应的完成。HPI可以被扩展为具有接受组合的Data_M_CmpO的相干代理支持。而且,归属代理可以被配置成经由缓冲隐式写回数据而生成组合的Data_M_CmpO消息。实际上,在一些实现中,可以向代理提供将高速缓存和归属代理行为相组合的逻辑,使得当代理接收请求并在其高速缓冲中找到M数据时,代理可以直接生成Data_M_CmpO。在这些实例中,在其他示例中,可以在不生成RspIWb或缓冲写回数据的情况下,生成Data_M_CmpO响应。
在另一示例中,如图15所示的示例协议状态表格1500所示,状态机(由机器可读状态表格(例如1500)体现)可以定义归属代理可以在标准请求的跟踪条目被标识为处在Busy或WbBuffered状态时发送的各种可能的响应消息。在一示例中,如表格1500所示,归属代理可能不被允许发送CmpO完成消息到来自任一状态的读取Rd*请求,这有效地意指归属代理要在完成响应之前或随完成响应一起发送数据响应。在Data_X响应可以在归属代理响应消息中被发送的情况下,归属代理可以将数据响应与完成组合,并且替代地发送它。
数据响应的状态可以对于无效请求和RdCur是固定的。对于RdMigr和RdData,非共享目录状态可以允许发送E数据。对于RdMigr、RdData和RdCode,共享的(Shared)目录状态可以涉及检验可能具有F状态的所有对等体是否已被监听。如果是,则数据可以在F状态中被发送;否则,在 其他可能的示例,在未监听的对等体具有F副本的情形中,数据可以在S状态中被发送。而且,在一些实现中,只有在归属代理缓冲了来自RspIWb监听响应的数据时,归属代理才可以发送Data_M或Data_M_CmpO响应。当归属代理缓冲RspIWb数据时,它可以将数据存储在跟踪条目中,并将该条目的状态改变为WbBuffered。注意,在该示例中,如果归属代理缓冲RspIWb数据而不是将其写入至存储器,它就发送Data_M或Data_M_CmpO响应。
在一实施例中,如上所述,HPI相干协议可以支持F状态,F状态允许高速缓存代理在转发共享数据时保持F状态。在一些系统或实例中,F(转发)高速缓存状态可以是自身可转发的。当高速缓存将行保持在F状态中且接收允许传输共享数据的监听时,高速缓存可以转发该数据,当它这么做时,它可以发送F状态与数据,并将其高速缓存状态转换成S(或I)。在一些情况下,可能期望高速缓存在转发数据时反而保持F状态,在该情况下,它会连同所转发的数据一起发送S状态。
在一个示例中,高速缓存代理在共享传输上保持或传递F状态的能力可以是可控的。在一示例中,按相干代理的配置参数可以指示相干代理是否将传输或保持为F状态。不考虑参数设置,相干代理可以使用相同的监听响应(例如,RspFwdS)。在当监听到达时代理具有行在F状态中的附加情况下,高速缓存代理可以在转发S数据和发送RspFwdS响应时(当参数被设为保持F状态时),将其高速缓存状态转换成F。在监听到达时代理具有行在M(完全)状态中的附加情况下,高速缓存代理可以在转发S数据、将数据写回至存储器以及发送RspFwdSWb响应时(当参数被设为保持F状态时),将其高速缓存状态降级为F。而且,具有F状态的接收“共享”监听或在这一监听之后转发的相干代理可以在将S状态发送至请求方代理的同时,保持F状态。在其他实例中,配置参数可以被套牢(toggle),以允许F专题在共享数据的传输中被传输并且转换至S(或I)状态,还有其他示例。实际上,如图16的示例状态表格所示,F状态中的高速缓存代理可以以各种方式响应,包括SnpMigr/FwdMigr、F、F、RspFwdS、Data_S等等其他示例。
如上所述,在一些实现中,高速缓存行和代理的状态转换可以使用状态机来管理。在一实现中,状态机还可体现为状态表格的集合或库,状态表格已被定义为详细说明可影响状态转换如何发生的命令、属性、以前状态及其他条件的所有各种组合、以及可以与状态转换相关联的消息类型、数据操作、掩码等(诸如图15和16的特定示例中所示)。每个状态表格可对应于动作或状态的一个特定的动作或类别。表格集合可以包括多个表格,每个表格对应于一个特定的动作或子动作。表格集合可以体现协议的正式规范,诸如HPI的相干协议或另一协议(处于栈层的任一层)。
状态表格可以是人类可读的文件,诸如可以通过人类用户使用端点计算机设备与状态表格结构而容易地解释和修改和开发的表格结构。其他用户可以使用状态表格以容易地解释相干协议(或HPI的任何其他协议)内的状态转换。而且,状态表格可以是机器可读的和可解析结构,该结构可由接收机读取和解释以标识状态如何根据特定的协议规范而转换。
图17示出动作“动作A”的概括状态表格的简化表示。在一示例中,协议表格1700可包括关于当前状态(即,要自其作出转换的状态)的多个列(例如1705)以及关于下一状态(即,要转换至的状态)的其他列(例如1710)。当前状态列中的列可以对应于状态的各个特征,诸如自响应消息、监听消息或其他消息中接收到的命令、高速缓存行状态、外出请求缓冲器(ROB)条件、要应用/保留的信用或资源、高速缓存行是否被部分修改、转发条件等等。表格1700中的每一行可对应于特定状态下高速缓存行的一组已检测条件。而且,下一状态列(例如,1710)内的行的单元可以基于当前状态列(例如,1705)中的行单元中指定的当前状态条件,来指示要进入的下一状态以及该下一状态的条件。下一状态列(例如,1710)可以对应于下一状态中的条件,诸如要发送(例如,发送至相应的归属节点(HNID)、作出请求的节点(RNID)、对等体节点等)的消息、下一高速缓存行状态、转发状态等等。
在一实施例中,协议状态表格可以使用行跨度来指示多个行为或状态(行)等效地可允许当前状态条件的特定集合。例如,在图17的示例中, 当命令为Cmd1、第一条件为错误、高速缓存行在第二状态、且第二条件也错误时(如行1715所指示),多个可能的下一状态条件是可能的并且可能同等可允许,每个由一个相应的行来指示。换言之,这种同等可允许转换的任一个可以基于相应的当前状态条件被触发。在一些实现中,附加代理逻辑可以选择要选择多个下一状态中的哪一个,还有其他示例实现。在一个说明性示例中,对应于归属代理发送请求响应的状态表的当前状态部分可以包括多个条件(或输入和状态保护),多个条件包括相干代理在代理将完全M行保持在其高速缓存中且正在处理到同一高速缓存行的SnpMigr时要执行的所有有效行为。表格行可以对应于五个不同的且同等可允许的下一状态行为,这些下一状态行为是相干代理可以响应于当前状态条件而采取的,还有其他示例。
在其他系统中,偏移位可以被包括在协议状态表格中,在那里多个可能的下一状态或条件对于特定的当前状态是可能的。例如,在QPI中,“偏移”位被包括在表格中作为在多个行为之间进行选择的机制。这种偏移位可主要地用于协议的状态机的确认期间,但这种偏移位引入了附加的复杂度,且在一些情况下,引入不熟悉偏移位效用的混淆。在某些方面,偏移位可以仅仅是确认工作的伪像。在HPI的一个示例中,通过使用可能跨多个行的多行的协议表格,可以排除偏移位和其他特征。在这种实例中,HPI协议表格可以强调显式的非确定。
转至图18的示例,在一实施例中,协议表格可能通过使一个表格在“下一状态”列中指向另一子表格来嵌套,所嵌套的表格可具有附加的或更细的保护来指明哪些行(行为)被允许。如图18所示,示例协议状态表格1700可包括到另一表格1800的嵌套引用1805,另一表格1800被包括于体现协议规范的表格集合中,诸如关于子动作的状态表格,子动作与为表格1700的特定行指明的下一状态中所包括的动作或行为。多个表格(例如,1700、1800)可以引用嵌套表格(例如,1800)。作为示例,处理对协议响应的传入响应的代理可以遵循动作表格(例如,1700、1810)和子动作表格1800。这里,动作表格1700可包括下一状态,其中子动作表格嵌套于一个或多个 其他协议表格之下。这类嵌套可以应用超出相干协议和协议层状态表格,但也可应用于任何已知的或将来的协议响应/表格。
在一示例中,代理可以利用协议表格(或自协议表格构造的另一可解析结构)并且可以标识与特定动作或事件相对应的特定状态表格。而且,代理可以标识应用于由该代理处理或瞄准的高速缓存行的行,并且自表格标识该高速缓存行的下一状态信息。该确定可以包括标识到子动作的嵌套表格的引用。因而,代理可以标识连接的嵌套表格的相应结构,并且进一步引用嵌套表格以确定状态转换。
在一个特定示例中,协议表格的共同集合可被定义,并且表示协议中的所有的可能的、已定义的状态转换。而且,每个表格可以指定覆盖协议内的一组相关行为的一组转换(例如,一个表格覆盖了监听和高速缓存状态中所涉及的所有行为,一个表格覆盖了生成新请求的所有行为,等等)。当代理要执行行为、处理事件或检验是否应采取某一其他动作时,代理可以在状态表格集合内标识覆盖该特定行为的特定状态表格。然后,代理可以标识系统的当前状态并且引用所选择的状态表格以标识与当前状态相匹配的行或一组行(如果有的话)。如果没有行是匹配的,则在一些实例中,代理可以避免为给定的当前状态采取任何动作,并且等待某一其他事件/行为在重试前改变状态。而且,在一些实例中,如以上介绍的,如果多于一个行与所标识的系统状态相匹配,则代理可以选择它们中的任一个来执行,因为它们全部都可以被视为同等可允许的。而且,在嵌套的情况下,如果行是指嵌套表格,则代理可以访问该嵌套表格并且使用所标识的系统的当前状态来搜索嵌套表格中的所允许行。
在一些示例中,在遍历任何主要和嵌套表格以确定对特定已标识系统(或协议)状态的响应之后,代理可以根据响应状态表格中指定的“下一状态”来执行相应动作和更新系统状态。
在一些实例中,可能有多于一个状态表格关于或覆盖一组行为。例如,作为说明性的示例,为处理监听可以提供两个表格,第一个表格用在存在冲突的活动请求时,第二个表格用于没有冲突的活动请求时。因而,在一 些实现中,代理可以调查多个表格以确定哪个表格包括与代理所标识的特定条件和状态有关的行。而且,在一些情况下,代理可以处理同时出现的两个不相关或不同的事件,诸如归属代理同时接收监听响应和新请求的示例。在多个事件被处理的情况下,代理可以同时标识和使用多个相应的表格以确定如何处理事件。
现在转至图19和20,示出用于确认协议的至少一部分的测试或确认环境的示例的简化框图1900、2000。例如,在图19的示例中,提供适于确认协议的状态机的测试引擎1900。例如,在一示例中,测试引擎1900可以包括或基于Murphi工具或另一枚举(明确状态)模型检验器的原理,还有其他示例。例如,可以代替上述Murphi示例而使用其他规范语言,作为另一示例,规范语言包括TLA+或另一适当的语言或格式。在传统的系统中,状态模型检验器已由开发人员所构造,该开发人员尝试将状态机(例如,来自随附的状态表格等)转换成一组要求,该组要求然后用于生成能检验状态机的检验器。这不仅仅是一般的人力和资源密集的过程,而因为状态表格的状态和状态转换由人类用户转录和解释而引入人类误差。
在一实现中,测试引擎1900可以使用一组状态表格(例如,1905)来从该组状态表格中自动生成资源以在一测试环境中建模代理的行为。例如,在图19的示例中,测试引擎1900可以使用状态表格1905作为用于建模高速缓存代理或其他代理(例如,1910)的功能引擎,该高速缓存代理或其他代理可用于通过对其他实时或被仿真代理(包括归属代理1915)仿真请求和响应(例如,1912)来确认各个状态转换。类似地,如图20的示例中所示,测试引擎1900可以使用状态表格1905来仿真归属代理(例如,1920)的请求和响应(例如,1918),并且与其他实时或被仿真代理(例如,1925)相接口以进一步确认和枚举协议的状态。例如,测试引擎1900可以建模一代理,并且接收实时或建模的协议消息,诸如HPI相干协议消息,并且引用状态表格1905(或自状态表格1905生成的另一可解析结构)以基于状态表格1905自动生成适当的响应、执行相应的状态转换等等。
在一个特定实现中,测试引擎或者其他基于软件或基于硬件的工具可 用于使用状态表格(例如,1905)来生成代码以驱动或反应于采用特定协议的设计,特定协议诸如HPI相干协议。在该特定示例中,通过将状态表格或所包括的伪代码连同表格值和伪代码元素的Murphi映射转换成适当的Murphi规则和过程格式,状态表格可以被用作测试引擎的输入。测试引擎可用于进一步生成用于类型定义和支持功能的Murphi代码。Murphi规则、过程、类型和支持代码可用于生成Murphi模型。例如,Murphi模型可以使用转换器来转换成C++或其他类定义。实际上,可以使用任何适当的编程语言。可以生成该模型类的多个子类,这些模块可用于充当采用了状态表格中体现的协议规范且对齐于该协议规范的代理的被仿真或测试平台版本。而且,可以生成或以其他方式提供内部API,内部API对齐于协议状态表格中所定义的消息生成和消息接收。例如,协议消息生成API可被捆绑于链路分组类型,消息接收可以在单个接口点下统一。在该示例中,整个正式协议规范可以被转换成C++(或其他面向对象的编程语言)类。继承可用于拦截所生成的消息,继承类的实例可以被创建作为(多个)功能测试平台代理。通常,正式规范表格可用作用于确认或测试环境工具的功能引擎,而不是使多个开发者基于它们对规范的解释而分开地创建其自身的工具。
HPI可以被结合于任何种类的计算设备和系统中,包括大型机、服务器系统、个人计算机、移动计算机(诸如平板电脑、智能电话、个人数字系统等)、智能设备、游戏或娱乐控制台和机顶盒等其他示例。例如,参照图21,描述了用于包括多核处理器的计算系统的框图的实施例。处理器2100包括任何处理器或处理设备或用于执行代码的其他设备,处理器或处理设备诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、芯片上系统(SOC)。在一实施例中,处理器2100包括至少两个核--核2101和2102,核可以包括不对称的核或对称的核(所示实施例)。然而,处理器2100可以包括可以对称或非对称的任何数量的处理元件。
在一实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文 单元、逻辑处理器、硬件线程、核和/或任何其他能够保持处理器的状态的元件,处理器的状态诸如执行状态或架构状态。换言之,在一实施例中,处理元件是指能够与代码独立相关联的任何硬件,代码诸如软件线程、操作系统、应用或其他代码。物理处理器(或处理器插槽)一般是指集成电路,集成电路可能包括任何数量的其他处理元件,诸如核或硬件线程。
核通常是指位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程一般是指位于能够维持独立架构状态上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如图所示,当特定的资源被共享而其他资源专用于架构状态时,硬件线程的命名和核之间的线重叠。但往往,核和硬件线程被操作系统视为个别的逻辑处理器,其中操作系统能够个别地调度每个逻辑处理器上的操作。
如图21所示,物理处理器2100包括两个核--核2101和2102。这里,核2101和2102被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核2101包括无序处理器核,而核2102包括有序处理器核。然而,核2101和2102可以从任何类型的核中个别地选择,诸如本机核、软件管理的核、适用于执行本机指令集架构(ISA)的核、适用于执行经转换指令集架构(ISA)的核、共同设计的核或其他已知核。在异构核环境(即,非对称核)中,可以使用一些形式的转换(例如二进制转换)来在一个或两个核上调度或执行代码。为了进一步讨论,下面进一步详细描述了核2101中所示的功能单元,核2102中的单元在所述实施例中以类似方式操作。
如图所述,核2101包括两个硬件线程2101a和2101b,它们也可以被称为硬件线程槽2101a和2101b。因此,在一实施例中,诸如操作系统的软件实体可能将处理器2100视为四个分开的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。如以上所提到的,第一线程与架构状态寄存器2101a相关联,第二线程与架构状态寄存器2101b相关联,第三线程可与架构状态寄存器2102a相关联,第四线程可与架构状态寄存器 2102b相关联。这里,架构状态寄存器(2101a、2101b、2102a和2102b)的每一个可以被称为处理元件、线程槽或线程单元,如下所述。如图所示,架构状态寄存器2101a在架构状态寄存器2101b中被复制,因此个别的架构状态/上下文能够针对逻辑处理器2101a和逻辑处理器2101b被存储。在核2101中,也可以为线程2101a和2101b复制其他较小的资源,诸如分配器和重命名器块2130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,诸如重排序/隐退单元2135中的重排序缓冲器、ILTB 2120、负载/存储缓冲器以及队列。其他资源可能被完全共享,其他资源诸如通用内部寄存器、页表基础寄存器、低级数据高速缓存和数据TLB 2151、执行单元2140以及无序单元2135的部分。
处理器2100通常包括其他资源,其他资源可以被完全共享、通过分区被共享、或者由/对处理器元件专用。在图21中,示出具有处理器的示意性逻辑单元/资源的纯示例性处理器的实施例。注意到,处理器可包括或省略这些功能单元的任何,以及包括任何其他未图示的已知功能单元、逻辑或固件。如图所示,核2101包括简化的代表性的无序(OOO)处理器核。但在不同的实施例中可以使用有序处理器。OOO核包括用于预测要被执行/采取的分支的分支目标缓冲器2120和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)2120。
核2101还包括耦合至取回单元2120以便对取回的元素进行解码的解码模块2125。在一实施例中,取回逻辑包括分别与线程槽2101a、2101b相关联的个别定序器。通常,核2101与第一ISA相关联,第一ISA定义/指定处理器2100上可执行的指令。通常,作为第一ISA一部分的机器码指令包括一部分指令(称为操作码),该部分指令引用/指定要被执行的指令或操作。解码逻辑2125包括用于从它们的操作码中认出这些指令并且在管线上传递经解码的指令用于如第一ISA所定义那样处理的电路。例如,如以下更详细讨论的,在一实施例中,解码器2125包括被设计或适配成认出特定指令(诸如事务指令)的逻辑。作为解码器2125的辨认结果,架构或核2101采取特定的、预定义的动作来执行与适当指令相关联的任务。注意 以下是重要的:这里描述的任何任务、块、操作和方法可以响应于单个或多个指令而执行;一些指令可以是新指令或旧指令。注意到,在一实施例中,解码器2126认出相同的ISA(或其子集)。或者,在异构核环境中,解码器2126认出第二ISA(或是第一ISA的子集,或是不同的ISA)。
在一示例中,分配器和重命名器块2130包括分配器以保留资源(诸如寄存器文件)以存储指令处理结果。然而,线程2101a和2101b可能能进行无序执行,其中分配器和重命名器块2130也保留其他资源,诸如用于跟踪指令结果的记录器缓冲器。单元2130也可以包括寄存器重命名器以便将程序/指令引用寄存器重命名为处理器2100内部的其他寄存器。记录器/隐退单元2135包括组件以支持无序执行以及无序执行的指令的稍候有序隐退,组件诸如上述记录器缓冲器、负载缓冲器以及存储缓冲器。
在一实施例中,调度器和执行单元块2140包括调度器单元以便在执行单元上调度指令/操作。例如,浮点指令在执行单元的一部分上被调度,该部分具有可用的浮点执行单元。也包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳跃执行单元、负载执行单元、存储执行单元以及其他已知的执行单元。
较低级的数据高速缓存和数据转换缓冲器(D-TLB)2150被耦合至(多个)执行单元2140。数据高速缓存用于存储元件上最近使用/操作的诸如数据操作数,数据操作数可能被保持在存储器相干性状态中。D-TLB用于存储最近的虚拟/线性到物理的地址转换。作为一具体示例,处理器可以包括页表结构以将物理存储器分成多个虚拟页。
这里,核2101和2102共享对较高级或更高级高速缓存的访问,诸如与芯片上接口2110相关联的第二级高速缓存。注意到,较高级或更高级是指自(多个)执行单元提升或进一步提升的高速缓存级别。在一实施例中,较高级的高速缓存是最后级数据高速缓存-处理器2100上存储器分层结构中的最后高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可以与指令高速缓存相关联或者包括指令高速缓存。 取而代之,痕迹高速缓存(一类指令高速缓存)可以耦合在解码器2125之后以存储最近解码的痕迹。这里,指令可能是指宏指令(即,解码器所认出的通用指令),宏指令可以解码为许多微指令(微操作)。
在所述配置中,处理器2100还包括芯片上接口模块2110。历史上,处理器2100外部的计算机系统中已经包括了存储器控制器,以下更详细地描述存储器控制器。在该场景下,芯片上接口2110用于与处理器2100外部的设备通信,诸如系统存储器2175、芯片集(通常包括用于连接至存储器2175的存储器控制器中枢以及用于连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。在此场景中,总线2105可以包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线以及GTL总线。
存储器2175可以对处理器2100专用,或者与系统中的其他设备共享。存储器2175的常用类型示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其他已知存储设备。注意到,设备2180可以包括图形加速器、耦合至存储器控制器中枢的处理器或卡、耦合至I/O控制器中枢的数据存储器、无线收发机、快闪设备、音频控制器、网络控制器或其他已知设备。
然而最近,随着更多的逻辑和设备被集成于单个芯片(诸如SOC)上,这些设备的每一个可以被结合于处理器2100上。例如,在一实施例中,存储器控制器中枢与处理器2100在相同的包和/或芯片上。这里,核的一部分(核上部分)2110包括一个或多个控制器,用于与诸如存储器2175或图形设备2180等其他设备相接口。包括互连以及用于与这些设备相接口的控制器在内的配置通常被称为核上(即,非核(un-core)配置)。作为一示例,芯片上接口2110包括用于芯片上通信的环形互连以及用于芯片外通信的高速串行点对点链路2105。在SOC环境中,可以在单个芯片或集成电路上集成甚至更多的设备(诸如网络接口、协处理器、存储器2175、图形处理器2180以及任何其他已知的计算机设备/接口)以便以高功能和低功耗来提供小的形状因子。
在一实施例中,处理器2100能够执行编译器、优化和/或转换器代码2177以编译、转换和/或优化应用码2176,以支持这里所述的装置和方法或者与这里所述的装置和方法相接口。编译器通常包括将源文本/代码转换成目标文本/代码的程序或程序集。通常,用编译器对程序/应用码所作的编译在多个阶段中被完成,并且多次通过以将高级编程语言代码转换成低级机器或汇编语言代码。然而,对于简单编译仍可利用单通编译器。编译器可以使用任何已知的编译技术并且执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。
较大的编译器通常包括多个阶段,但通常这些阶段被包括于两个通用阶段:(1)前端,即,一般是词法处理、语义处理及一些转换/优化所发生的阶段;以及(2)后端,即,一般是分析、转换、优化和代码生成所发生的阶段。一些编译器适用于中间,说明编译器的前端和后端之间的划分是模糊的。结果,编译器的插入引用、关联、生成或其他操作可以发生于任一上述阶段或通过中、以及编译器的任何其他已知阶段或通过中。作为说明性的示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等,诸如在编译的前端阶段插入调用/操作、然后在转换阶段将调用/操作转换成较低级代码。注意到在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化代码供运行时间执行。作为一具体的说明性示例,二进制代码(已编译的代码)可以在运行时间被动态地优化。这里,程序代码可以包括动态优化代码、二进制代码或者它们的组合。
类似于编译器,诸如二进制转换器这样的转换器或静态地或动态地转换代码,以优化和/或转换代码。因此,对代码执行、应用代码、程序代码或其他软件环境的引用可以是指:(1)或动态地或静态地执行编译器程序、优化代码优化器、或转换器,以编译程序代码、维持软件结构、执行其他操作、优化代码、或者转换代码;(2)执行包括操作/调用的主程序代码,主程序代码诸如已被优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码(诸如库),以维持软件结构、执行其他软件相关的操 作、或者优化代码;或(4)以上的组合。
尽管已经相对于有限数量的实施例描述了本发明,但是本领域的技术人员会理解从中得出的许多修改和变化。所附权利要求书意图覆盖所有这些修改和变化,它们落在本发明的实际精神和范围内。
设计可以经历各种阶段,从创建到仿真到制造。表示设计的数据可以以许多方式来表示该设计。首先,如仿真中有用的,硬件可以用硬件描述语言或另一功能描述语言来表示。此外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。而且,许多设计在某一阶段达到了表示各个设备在硬件模型中的物理位置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定各个特征在用于生产集成电路的掩膜的不同掩膜层上存在或不存在的数据。在设计的任何表示中,数据可以被存储于任何形式的机器可读介质中。存储器或者诸如磁盘的磁性或光学存储器可以是机器可读介质,机器可读介质用于存储经由光波或电波发射的信息,光波或电波被调制或以其他方式生成以发射这样的信息。当发射指示或携带代码或设计的电载波时,就电信号的复制、缓冲或重传的方面来说,制作新的副本。由此,通信提供商或网络提供商可以至少暂时地在有形的机器可读介质上存储体现本发明实施例的技术的项目,所述项目诸如被编码为载波的信息。
这里使用的模块是指硬件、软件和/或固件的任何组合。作为一示例,模块包括与非暂时性介质相关联的硬件(诸如微控制器),用于存储适合由微控制器执行的代码。因此,在一实施例中,对模块的引用是引用硬件,硬件被专门配置为认出和/或执行要被保持于非暂时性介质上的代码。而且,在另一实施例中,模块的使用是指包括代码的非暂时性介质,代码专门适用于由微处理器执行以便执行预定的操作。在还有另一实施例中,如可推断的,术语模块(在该示例中)是指微处理器和非暂时性介质的组合。通常,图示为分开的模块边界通常会变化并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或它们的组合,而可能保留某些独立的硬件、软件或固件。在一实施例中,术语逻辑的使用包括诸如晶体管、寄 存器等硬件,或者诸如可编程逻辑器件等其他硬件。
在一实施例中,短语“被配置为”的使用是指对装置、硬件、逻辑或元件进行排列、置于一起、制造、承诺销售、进口和/或设计以执行指定的或确定的任务。在该示例中,如果装置或其元件被设计、耦合和/或互连以执行指定的任务,则装置或元件即使未在运行也仍然“被配置成”执行所述指定的任务。作为纯说明性的示例,逻辑门可以在运算期间提供0或1。但是逻辑门“被配置成”向时钟提供使能信号不包括可能提供1或0的每个可能的逻辑门。相反,逻辑门是以在操作期间1或0输出用于启用时钟的方式耦合的门。再次注意到,术语“被配置成”的使用不要求操作,而是聚焦于装置、硬件和/或元件的潜伏状态,其中在潜伏状态中,装置、硬件和/或元件被设计成在装置、硬件和/或元件正在操作时执行特定的任务。
而且,在一实施例中,短语“用于”、“能够/以”以及或者“可操作用于”的使用是指装置、硬件和/或元件以能以指定方式使用装置、硬件和/或元件的方式被设计。注意到以上,在一实施例中,“用于”、“能够”或“可操作用于”的使用是指装置、逻辑、硬件和/或元件的潜伏状态,其中装置、逻辑、硬件和/或元件不在操作,但是以能以指定方式使用装置的方式被设计。
如此处使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也被称为1和0,仅表示二进制逻辑状态。例如,1是指高逻辑电平,0是指低逻辑电平。在一实施例中,存储单元(诸如晶体管或闪存单元)可能能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中值的其他表示。例如,十进制数10也可以被表示为二进制值2110和十六进制字母A。因此,值包括能被保持在计算机系统中的信息的任何表示。
此外,状态可由值或值的部分表示。作为一示例,第一值(诸如逻辑1)可以表示缺省或初始状态,而第二值(诸如逻辑0)可以表示非缺省状态。此外,在一实施例中,术语重置和设置分别指缺省的和更新的值或状态。例如,缺省的值可能包括高逻辑值,即重置,而更新的值可能包括低 逻辑值,即设置。注意到,可以使用值的任何组合来表示任何数量的状态。
以上提出的方法、硬件、软件、固件或代码的实施例可以经由机器可存取、机器可读、计算机可存取或计算机可读介质上存储的指令或代码来实现,指令或代码可由处理元件执行。非暂时性的机器可存取/可读介质包括以可由机器(诸如计算机或电子系统)读取的形式提供(即,存储和/或发射)信息的任何机制。例如,非暂时性的机器可存取介质包括随机存取存储器(RAM)(诸如静态RAM(SRAM)或动态RAM(DRAM));ROM;磁性或光学存储介质;闪存设备;电子存储设备;光学存储设备;声学存储设备;其他形式的用于保持从瞬时(传播的)信号接收到的信息的存储设备等等,这些其他存储设备区别于可以接收信息的非暂时性介质。
用于对逻辑编程以执行本发明多个实施例的指令可以被存储在系统中的存储器内,诸如DRAM、高速缓存、闪存或其他存储器。而且,指令可以经由网络或通过其他计算机可读媒介来分布。由此,机器可读介质可以包括用于以机器(例如计算机)可读的形式存储或发射信息的任何机制,包括但不限于:软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存或者有形的、机器可读存储器,这些存储器用于经由电学、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息。因而,计算机可读介质包括适用于以机器(例如,计算机)可读形式存储或发射电子指令或信息的任何类型的有形机器可读介质。
以下示例关于按照本说明书的实施例。一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收引用第一代理以及请求特定存储器行在独占状态中被高速缓存的请求;发送旨在给一个或多个其他代理的监听请求;接收要引用第二代理的监听响应,监听响应包括到存储器的写回,写回与该特定存储器行对应的已修改的高速缓存行;以及发送完成以被定址到第一代理,其中完成包括基于写回的特定存储器行的数据。
在至少一个示例中,已修改的高速缓存行被写至特定存储器行。
在至少一个示例中,确定第二代理的高速缓存行是已修改的高速缓存行。基于确定第二代理的高速缓存行是已修改的高速缓存行,完成可以在接收到对与来自第一代理的请求相对应的所有监听请求的响应之前被发送。
在至少一个示例中,监听请求包括监听无效请求。监听无效请求可以使对应于特定存储器行的接收另一代理的高速缓存无效。监听无效请求可以标识特定存储器行以及来自第一代理的请求中所包括的命令。
在至少一个示例中,可以转换目录状态以表示特定存储器行与独占状态相关联。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收要发送对独占状态下的特定高速缓存行的请求的请求;以及从存储器接收对应于该特定高速缓存行的数据,其中特定数据包括由另一代理在请求之后写回存储器的数据。
在至少一个示例中,特定高速缓存行在请求之前处于无效状态。
在至少一个示例中,独占状态是E状态,表示特定高速缓存行中的数据的副本与存储器相匹配并且是独占副本。
在至少一个示例中,特定数据被复制到特定高速缓存行。特定高速缓存行可以基于接收到特定数据而被转换至独占状态。
在至少一个示例中,由另一代理写回存储器的数据包括响应于和对独占状态中的特定高速缓存行的请求相对应的监听而返回的数据。
在至少一个示例中,监听是多个监听之一,特定数据要在为每一个监听请求返回响应之前被接收。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收要接收显式写回请求的请求,其中显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,显式写回请求包括提示以指示另一高速缓存要请求特定存储器行;确定是否在将已修改高速缓存行的数据写至特定存储器行之前,将已修改高速缓存行的数据推至其他高速缓 存;以及发送完成以对应于显式写回请求。
在至少一个示例中,确定是否推送数据使已修改高速缓存行的数据被写至特定存储器行。
在至少一个示例中,已修改高速缓存行的数据不被推至该另一高速缓存。
在至少一个示例中,对应于特定存储器行的目录状态可以自独占状态转换成无效状态。
在至少一个示例中,确定推送数据使已修改高速缓存行的数据被发送至对应于该另一高速缓存的第一高速缓存代理,以使已修改高速缓存行的数据被写至该另一高速缓存的相应的高速缓存行。
在至少一个示例中,对应于特定存储器行的目录状态是转换为表示该另一高速缓存具有特定存储器行的独占副本的状态。
在至少一个示例中,显式写回请求包括来自对应于已修改高速缓存行的不同的、第二高速缓存代理的单个相干协议请求。
在至少一个示例中,确定推送数据包括确定该另一高速缓存是否是本地高速缓存。
在至少一个示例中,确定推送数据包括确定是否有针对特定存储器行的其他未完成的请求。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收要将显式写回请求发送至归属代理的请求,其中显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,显式写回请求包括暗示,用以指示另一高速缓存要请求该特定存储器行;以及自归属代理接收对该显式写回请求的完成。
在至少一个示例中,在发送显式写回请求之后,已修改高速缓存行要从已修改状态转换成无效状态。
在至少一个示例中,显式写回请求使已修改高速缓存行的数据被写至该另一高速缓存而不被写至特定存储器行。
在至少一个示例中,显式写回请求包括单个相干协议请求。
在至少一个示例中,显式写回请求标识该另一高速缓存。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收要接收写回冲刷消息的请求;标识存储器控制器到一特定永久存储器的一组未决的写入;以及基于写回冲刷消息将所有该组未决的写入写至特定存储器。
在至少一个示例中,写回冲刷消息包括相干协议消息。
在至少一个示例中,写回冲刷消息由高速缓存代理生成。
在至少一个示例中,该组未决写入包括存储器控制器的所有未决写入。
如权利要求40所述的装置,其中写回冲刷消息标识存储器控制器。
在至少一个示例中,写回冲刷消息标识对应于特定存储器的存储器地址。
在至少一个示例中,写回冲刷消息对应于电力故障管理活动。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收标识高速缓存的特定行处于转发状态的请求;接收对应于高速缓存的特定行的请求;在对请求的响应之后,确定是否保持转发状态;以及响应于请求。
在至少一个示例中,确定是否要保持转发状态包括确定代理的配置参数的值,其中配置参数的值标识转发状态是否要被保持。
在至少一个示例中,配置参数的值可以改变。确定是否要保持转发状态可以包括在响应之后确定保持转发状态。确定是否要保持转发状态可以包括在响应之后确定自转发状态转换。在至少一个示例中,转发状态自转发状态转换成无效状态。
在至少一个示例中,请求包括监听。响应于请求可以包括将数据自特定高速缓存行转发至另一代理。
一个或多个实施例提供了装置、系统、机器可读存储器、机器可读介质和方法以:接收提供包括协议层逻辑和路由层逻辑的代理的请求,协议层逻辑用于生成扇出监听请求,路由层逻辑用于标识多个代理以根据扇出监听请求接收监听;以及将监听请求发送至多个代理的每一个。
在至少一个示例中,多个代理从标识响应扇出锥形中的每个代理的配置参数而标识。
在至少一个示例中,配置参数按地址标识每个代理。
在至少一个示例中,可以确定是否使用扇出监听来监听一个或多个代理。
在至少一个示例中,代理是归属代理,监听请求的每一个可以包括一监听以获得转发或共享状态的任一个状态中的高速缓存数据。
在至少一个示例中,监听请求的每一个包括监听,用以获得已修改、独占、转发或共享状态的任一个中的高速缓存数据。
在至少一个示例中,监听请求的每一个包括监听,用以获得已修改或独占状态的任一个中的高速缓存数据。
在至少一个示例中,监听请求的每一个包括对相应代理的高速缓存的监听,其中已修改状态中的数据要被冲刷至存储器。
在至少一个示例中,可以为监听请求的一个或多个接收监听响应。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层发起要接受独占的相干性状态数据的读取无效请求。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层在不接收数据和指示到高速缓存行的写回的情况下发起请求高速缓存行的独占所有权的无效。
在至少一个示例中,写回高速缓存行是在接近时间帧内。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层发起使数据冲刷至永久存储器的写回冲刷请求。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层发起使监听请求生成至扇出锥形内的对等体代理的单个扇出请求。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层发起显式写回请求,显式写回请求具有到归属代 理的高速缓存推送暗示,暗示被引用的高速缓存行被推送至本地高速缓存而无须将数据写至存储器。
在至少一个示例中,高速缓存行可以是存储于M状态中。
一个或多个示例还可以提供包括分层协议栈的代理,该分层协议栈包括协议层,其中,协议层发起共享数据的转发,而同时维持与共享数据相关联的转发状态。
本说明书中通篇引用“一个实施例”或“一实施例”意指结合本发明至少一个实施例中所包括的实施例所描述的特定的特征、结构或特性。因此,本说明书中各处出现的短语“在一个实施例中”或“在一实施例中”不必要全部指同一个实施例。而且,特定的特征、结构或特性可以以任何适当的方式被组合在一个或多个实施例中。
在以上说明书中,已经参照具体的示例性实施例给出了详细描述。然而显而易见的是,可以对其作出各种修改和变化,而不背离所附权利要求书中所提出的本发明的更宽的精神和范围。因此,说明书和附图被视为是示意性的,而不是限制性的。而且,实施例及其他示例性语言的以上使用不必要是指相同的实施例或相同的示例,而可以指不同的和相异的实施例,以及可能相同的实施例。

高性能互连相干协议.pdf_第1页
第1页 / 共60页
高性能互连相干协议.pdf_第2页
第2页 / 共60页
高性能互连相干协议.pdf_第3页
第3页 / 共60页
点击查看更多>>
资源描述

《高性能互连相干协议.pdf》由会员分享,可在线阅读,更多相关《高性能互连相干协议.pdf(60页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201380016955.X(22)申请日 2013.03.1561/717,091 2012.10.22 USG06F 13/00(2006.01)(71)申请人英特尔公司地址美国加利福尼亚州(72)发明人 RG布朗肯希普 B法西姆R比尔斯 Y-C刘 V基塔HH胡姆 J维利(74)专利代理机构上海专利商标事务所有限公司 31100代理人高见(54) 发明名称高性能互连相干协议(57) 摘要接收一请求,该请求引用第一代理且请求特定存储器行在独占状态中被高速缓存。监听请求被发送指向一个或多个其他代理。接收到引用第二代理的监听响应,监听响应包。

2、括将对应于特定存储器行的已修改高速缓存行写回至存储器。发送完成以定址至第一代理,其中完成包括基于写回的特定存储器行的数据。(30)优先权数据(85)PCT国际申请进入国家阶段日2014.09.26(86)PCT国际申请的申请数据PCT/US2013/032651 2013.03.15(87)PCT国际申请的公布数据WO2014/065875 EN 2014.05.01(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书5页 说明书35页 附图19页(10)申请公布号 CN 104380269 A(43)申请公布日 2015.02.25CN 104380269。

3、 A1/5页21.一种装置,包括:包括协议层逻辑的特定代理,用于:接收引用第一代理以及请求特定存储器行在独占状态中被高速缓存的请求;发送旨在给一个或多个其他代理的监听请求;接收引用第二代理的监听响应,监听响应包括将与所述特定存储器行对应的已修改的高速缓存行写回至存储器;以及发送完成以被定址到第一代理,其中所述完成包括基于写回的特定存储器行的数据。2.如权利要求1所述的装置,其特征在于,所述协议层逻辑还使已修改的高速缓存行被写至特定存储器行。3.如权利要求1所述的装置,其特征在于,所述协议层逻辑还确定第二代理的高速缓存行是已修改的高速缓存行。4.如权利要求3所述的装置,其特征在于,基于确定第二代。

4、理的高速缓存行是已修改的高速缓存行,所述完成在接收到对与来自第一代理的请求相对应的所有监听请求的响应之前被发送。5.如权利要求1所述的装置,其特征在于,监听请求包括监听无效请求。6.如权利要求5所述的装置,其特征在于,所述监听无效请求使对应于特定行或存储器的接收另一代理的高速缓存无效。7.如权利要求5所述的装置,其特征在于,所述监听无效请求标识特定存储器行以及来自第一代理的请求中所包括的命令。8.如权利要求1所述的装置,其特征在于,所述协议层逻辑还转换目录状态以指示特定存储器行与独占状态相关联。9.一种装置,包括:包括协议层逻辑的代理,用于:发送对独占状态下的特定高速缓存行的请求;以及从存储器。

5、接收对应于所述特定高速缓存行的数据,其中所述特定数据包括由另一代理在请求之后写回存储器的数据。10.如权利要求9所述的装置,其特征在于,特定高速缓存行在请求之前处于无效状态。11.如权利要求9所述的装置,其特征在于,所述独占状态是E状态,指示特定高速缓存行中的数据的副本与存储器相匹配并且是独占副本。12.如权利要求9所述的装置,其特征在于,所述协议层逻辑还将特定数据复制到特定高速缓存行。13.如权利要求12所述的装置,其特征在于,所述协议层逻辑还基于接收到特定数据而将特定高速缓存行转换至独占状态。14.如权利要求9所述的装置,其特征在于,由另一代理写回存储器的数据包括响应于和对独占状态中的特定。

6、高速缓存行的请求相对应的监听而返回的数据。15.如权利要求14所述的装置,其特征在于,监听是多个监听之一,特定数据在针对每一个监听请求返回响应之前被接收。16.一种方法,包括:权 利 要 求 书CN 104380269 A2/5页3从第一代理接收在独占状态中高速缓存特定存储器行的请求;发送监听请求至一个或多个其他代理;从第二代理接收监听响应,所述监听响应包括将第二代理的对应于特定存储器行的已修改高速缓存行写回至存储器;以及发送完成至第一代理,其中所述完成包括基于所述写回的特定存储器行的数据。17.如权利要求16所述的方法,其特征在于,还包括:发送请求至存储器控制器以将已修改高速缓存行写至特定存。

7、储器行。18.如权利要求16所述的方法,其特征在于,还包括确定第二代理的高速缓存行是已修改高速缓存行。19.如权利要求16所述的方法,其特征在于,所述完成在接收到对和来自第一代理的请求相对应的所有监听响应的响应之前被发送。20.如权利要求16所述的方法,其特征在于,还包括转换目录状态以指示特定存储器行与独占状态相关联。21.一种系统,包括:具有特定存储器位置的存储器控制器;对应于所述特定存储器位置的归属代理;以及第一设备的第一高速缓存代理;其中所述归属代理用于:接收引用第一代理以及请求特定存储器行在独占状态中被高速缓存的请求;发送旨在给一个或多个其他代理的监听请求;接收引用第二代理的监听响应,。

8、所述监听响应包括将与所述特定存储器行对应的已修改的高速缓存行写回至存储器;以及发送完成以被定址到第一代理,其中所述完成包括基于所述写回的特定存储器行的数据。22.如权利要求21所述的装置,其特征在于,还包括第二高速缓存代理,用于:接收监听请求;从监听请求中标识来自第一高速缓存代理的请求以便在独占状态中高速缓存特定存储器位置的特定行;将监听响应发送至归属代理。23.如权利要求21所述的系统,其特征在于,所述第一高速缓存代理用于:发送请求至归属代理;以及接收所述完成;将特定存储器行的数据写入至相应的高速缓存行;以及将相应的高速缓存行转换成独占状态。24.如权利要求21所述的系统,其特征在于,来自所。

9、述第一高速缓存代理的请求包括相干协议请求。25.如权利要求21所述的系统,其特征在于,所述完成在接收到对与来自第一代理的请求相对应的所有监听请求的响应之前被发送。26.一种装置,包括:权 利 要 求 书CN 104380269 A3/5页4包括协议层逻辑的代理,用于:接收显式写回请求,其中所述显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,并且所述显式写回请求包括用以指示另一高速缓存要请求特定存储器行的暗示;确定是否在将已修改高速缓存行的数据写至特定存储器行之前,将已修改高速缓存行的数据推至其他高速缓存;以及发送完成以对应于显式写回请求。27.如权利要求26所述的装置,其特征在于,确。

10、定不要推送数据使已修改高速缓存行的数据被写至特定存储器行。28.如权利要求27所述的装置,其特征在于,已修改高速缓存行的数据不被推至所述另一高速缓存。29.如权利要求27所述的装置,其特征在于,所述协议层逻辑还将对应于特定存储器行的目录状态自独占状态转换成无效状态。30.如权利要求26所述的装置,其特征在于,确定要推送数据使已修改高速缓存行的数据被发送至对应于所述另一高速缓存的第一高速缓存代理,以使已修改高速缓存行的数据被写至所述另一高速缓存的相应的高速缓存行。31.如权利要求30所述的装置,其特征在于,所述协议层逻辑还将对应于特定存储器行的目录状态转换为指示所述另一高速缓存具有特定存储器行的。

11、独占副本的状态。32.如权利要求30所述的装置,其特征在于,所述显式写回请求包括来自对应于已修改高速缓存行的不同的、第二高速缓存代理的单个相干协议请求。33.如权利要求26所述的装置,其特征在于,确定要推送数据包括确定所述另一高速缓存是否是本地高速缓存。34.如权利要求26所述的装置,其特征在于,确定要推送数据包括确定是否有针对特定存储器行的其他未完成的请求。35.一种装置,包括:包括协议层逻辑的代理,用于:发送显式写回请求至归属代理,其中所述显式写回请求对应于和特定存储器行相对应的已修改高速缓存行,所述显式写回请求包括用以指示另一高速缓存要请求所述特定存储器行的暗示;以及自归属代理接收对显式。

12、写回请求的完成。36.如权利要求35所述的装置,其特征在于,所述协议逻辑层还在发送显式写回请求之后,将已修改高速缓存行从已修改状态转换成无效状态。37.如权利要求35所述的装置,其特征在于,显式写回请求使已修改高速缓存行的数据被写至所述另一高速缓存而不被写至特定存储器行。38.如权利要求37所述的装置,其特征在于,所述显式写回请求包括单个相干协议请求。39.如权利要求35所述的装置,其特征在于,显式写回请求标识所述另一高速缓存。40.一种装置,包括:存储器控制器,用于:权 利 要 求 书CN 104380269 A4/5页5接收写回冲刷消息;标识存储器控制器到特定永久存储器的一组未决的写入;以。

13、及基于写回冲刷消息将所有该组未决的写入写至特定存储器。41.如权利要求40所述的装置,其特征在于,所述写回冲刷消息包括相干协议消息。42.如权利要求41所述的装置,其特征在于,所述写回冲刷消息由高速缓存代理生成。43.如权利要求40所述的装置,其特征在于,该组未决写入包括存储器控制器的所有未决写入。44.如权利要求40所述的装置,其特征在于,所述写回冲刷消息标识存储器控制器。45.如权利要求44所述的装置,其特征在于,所述写回冲刷消息标识对应于特定存储器的存储器地址。46.如权利要求40所述的装置,其特征在于,所述写回冲刷消息对应于电力故障管理活动。47.一种装置,包括:包括协议层逻辑的代理,。

14、用于:标识高速缓存的特定行处于转发状态;接收对应于高速缓存的特定行的请求;在对请求的响应之后,确定是否要保持转发状态;以及响应于所述请求。48.如权利要求47所述的装置,其特征在于,确定是否要保持转发状态包括确定代理的配置参数的值,其中配置参数的值标识转发状态是否要被保持。49.如权利要求48所述的装置,其特征在于,所述协议逻辑层还用于改变配置参数的值。50.如权利要求47所述的装置,其特征在于,确定是否要保持转发状态可以包括在响应之后确定保持转发状态。51.如权利要求47所述的装置,其特征在于,确定是否要保持转发状态包括在响应之后确定自转发状态转换。52.如权利要求51所述的装置,其特征在于。

15、,所述转发状态自所述转发状态转换成共享状态。53.如权利要求51所述的装置,其特征在于,所述转发状态自所述转发状态转换成无效状态。54.如权利要求47所述的装置,其特征在于,所述请求包括监听。55.如权利要求47所述的装置,其特征在于,响应于所述请求包括将数据自高速缓存的特定行转发至另一代理。56.一种装置,包括:代理,包括:协议层逻辑,用于:生成扇出监听请求路由层逻辑,用于:标识多个代理以根据扇出监听请求接收监听;以及权 利 要 求 书CN 104380269 A5/5页6将监听请求发送至多个代理的每一个。57.如权利要求56所述的装置,其特征在于,所述路由层逻辑用于从标识相应扇出锥形中的每。

16、个代理的配置参数标识多个代理。58.如权利要求57所述的装置,其特征在于,配置参数按地址标识每个代理。59.如权利要求56所述的装置,其特征在于,所述协议层逻辑还用于确定是否可以使用扇出监听来监听一个或多个代理。60.如权利要求56所述的装置,其特征在于,所述代理是归属代理。61.如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,用以获得转发或共享状态的任一个状态中的高速缓存数据。62.如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,用以获得已修改、独占、转发或共享状态的任一个中的高速缓存数据。63.如权利要求56所述的装置,其特征在于,所述监听请求各自包括监听,。

17、用以获得已修改或独占状态的任一个中的高速缓存数据。64.如权利要求56所述的装置,其特征在于,所述监听请求各自包括对相应代理的高速缓存的监听,其中已修改状态中的数据被冲刷至存储器。65.如权利要求56所述的装置,其特征在于,所述协议层逻辑还用于为监听请求的一个或多个接收监听响应。66.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起接受独占的相干性状态数据的读取无效请求。67.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层在不接收数据和指示写回高速缓存行的情况下发起请求高速缓存行的独占所有权的无效。68.如权利要求67所述的装置。

18、,其特征在于,写回高速缓存行是在接近时间帧内。69.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起使数据冲刷至永久存储器的写回冲刷请求。70.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起使监听请求生成至扇出锥形内的对等体代理的单个扇出监听请求。71.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起显式写回请求,所述显式写回请求具有给归属代理的高速缓存推送暗示,暗示被引用的高速缓存行可被推送至本地高速缓存而无须将数据写至存储器。72.如权利要求71所述的装置,其特征在于,高速缓存行可以是存。

19、储于M状态中。73.一种装置,包括:包括分层协议栈的代理,所述分层协议栈包括协议层,其中所述协议层发起共享数据的转发,而同时维持转发状态与共享数据相关联。权 利 要 求 书CN 104380269 A1/35页7高性能互连相干协议0001 技术0002 本公开案一般涉及计算机开发领域,尤其涉及包括协调相互依赖的受约束系统的软件开发。0003 背景0004 半导体处理和逻辑设计中的进展允许增加集成电路器件上存在的逻辑的数量。计算机系统配置必然已经从系统中的单个或多个集成电路演进为个别集成电路上存在的多核、多硬件线程及多逻辑处理器,以及这种处理器内集成的其他接口。处理器或集成电路一般包括单个物理处。

20、理器模,其中处理器模可包括任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢等。0005 作为在较小的封装包内适配更多处理能力的较高能力的结果,较小的计算设备越来越流行。智能电话、平板电脑、超薄笔记本电脑及其他用户设备呈指数型增长。然而,这些较小设备依赖于服务器来进行数据存储以及超出规格的复杂处理。因而,也增加了对高性能计算市场(即,服务器空间)的需求。例如,在现代服务器中,一般不仅存在具有多个核的单个处理器,也存在多个物理处理器(也称为多个插槽(socket)来提高计算能力。但随着处理能力随着计算系统中设备数量而增长,插槽及其他设备间的通信变得更为关键。0006 实际上,互连已经从。

21、主要处理电子通信的较传统的多点总线增长为便于快速通信的全面互连基础结构。不幸的是,由于存在对将来处理器以甚至更高速率进行消耗的需求,对现有互连基础结构的能力也存在相应的需求。0007 附图简述0008 图1示出按照一实施例的系统的简化框图,该系统包括一系列点对点互连以连接计算机系统中的多个I/O设备;0009 图2示出按照一实施例的分层协议栈的简化框图;0010 图3示出事务描述符的实施例。0011 图4示出串行点对点链路的实施例。0012 图5示出潜在的高性能互连(HPI)系统配置的多个实施例。0013 图6示出与HPI相关联的分层协议栈的实施例。0014 图7示出示例相干协议冲突管理的流程。

22、图。0015 图8示出另一示例相干协议冲突管理的流程图。0016 图9示出另一示例相干协议冲突管理的流程图。0017 图10示出具有到存储器的写回的示例监听响应的流程图。0018 图11示出具有到存储器的写回的监听响应的另一示例的流程图。0019 图12示出示例写回冲刷操作的流程图。0020 图13示出到存储器的示例写回的流程图。0021 图14示出示例存储器控制器冲刷操作的流程图。0022 图15-17示出示例协议状态表的表示。0023 图18示出协议状态表的示例嵌套的表示。说 明 书CN 104380269 A2/35页80024 图19示出由示例测试引擎使用一组协议状态表的表示。0025。

23、 图20示出由示例测试引擎使用一组协议状态表的表示。0026 图21示出包括多核处理器的计算系统的框图的实施例。0027 各附图中的相同附图标记和名称表示相同的元件。0028 详细描述0029 在以下描述中,提出了许多具体细节以便更透彻地理解本发明,诸如具体处理器和系统配置类型、具体硬件结构、具体结构和微结构细节、具体寄存器配置、具体指令类型、具体系统组件、具体处理器流水线阶段、具体互连层、具体分组/事务配置、具体事务名称、具体协议交换、具体链路宽度、具体实现方式以及操作等等的多个示例。然而,对于本领域技术人员显而易见的是,不需要必须采用这些具体细节来实现本公开案的主题。在其他情况下,为避免不。

24、必要地混淆本公开案,已经避免了已知组件或方法的非常详细的描述,所述组件或方法诸如具体的和替代的处理器体系结构、所述算法的具体逻辑电路/代码、具体固件代码、低级互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、算法用代码的具体表达、具体掉电和门控技术/逻辑以及计算机系统的其他具体操作细节。0030 尽管可以参照具体集成电路(诸如计算平台或微处理器)中的能量保存、能量效率、处理效率等来描述以下实施例,然而其他实施例可应用于其他类型的集成电路和逻辑器件。这里所述的实施例的类似技术和原理可应用于也受益于这些特征的其他类型的电路或半导体器件。例如,所公开的实施例不限于服务器计算机系统、台式计算。

25、机系统、膝上型计算机、超级本(Ultrabooks)TM,而可以用于其他设备中,诸如手持设备、智能电话、平板电脑、其他薄型笔记本电脑、芯片上系统(SOC)设备及嵌入式应用。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)及手持式PC。这里,用于高性能互连的类似技术可应用于增加低功率互连中的性能(或甚至节省功率)。嵌入式应用一般包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或者可执行以下教导的功能和操作的任何其他系统。此外,这里所描述的装置、方法和系统不限于物理计算设备,而是也关于用于能量节省和。

26、效率的软件优化。从以下描述中可显而易见,这里所描述的方法、装置和系统的实施例(无论是参照硬件、固件、软件或其组合)可被视为对于以性能考虑因素平衡的“绿色技术”将来是关键的。0031 随着计算系统的进步,其中的组件变得更为复杂。用于在多个组件间耦合和通信的互连体系结构的复杂度也增加,以确保对于最佳组件操作满足带宽需求。而且,不同的细分市场要求互连体系结构的不同方面来适合于相应的市场。例如,服务器要求较高性能,而移动生态系统有时能为节省功率而牺牲总性能。大多数构造的单一目的仍然是以最大的功率节省来提供最高的可能性能。而且,各种不同的互连可能潜在地受益于这里描述的主题。例如,在其他示例中,外围组件互。

27、连(PCI)Express(快速)(PCIe)互连构造体系结构和快速路径互连(QPI)构造体系结构可以根据这里描述的一个或多个原理得到潜在的改进。0032 图1示出由互连一组组件的多个点对点链路组成的构造的一个实施例。系统100包括与控制器中枢115耦合的处理器105和系统存储器110。处理器105可以包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)106耦合至控制器中枢115。在一实施例中,FSB 106是如下所述的串行点对点互连。在另一实施例中,链路106包括与不同的互连标准相兼容的串行差分互连体说 明 书CN 104380。

28、269 A3/35页9系结构。0033 系统存储器110包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV)存储器、或可由系统100内的设备访问的其他存储器。系统存储器110通过存储器接口116耦合至控制器中枢115。存储器接口的示例包括双数据速率(DDR)存储器接口、双通道DDR存储器接口以及动态RAM(DRAM)存储器接口。0034 在一实施例中,控制器中枢115可包括诸如PCIe互连层次结构中的根中枢(root hub)、根复合体(root complex)或根控制器。控制器中枢115的示例包括芯片集、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥以及根控。

29、制器/中枢。通常术语芯片集是指两个物理上分开的控制器中枢,例如与互连控制器中枢(ICH)耦合的存储器控制器中枢(MCH)。注意到,当前的系统通常包括与处理器105集成的MCH,而控制器115要以以下描述的类似方式与I/O设备通信。在一些实施例中,通过根复合体115任选地支持对等路由。0035 这里,控制器中枢115通过串行链路119耦合至交换机/桥120。输入/输出模块117和121也可称为接口/端口117和121,输入/输出模块117和121可包括/实现分层的协议栈以便在控制器中枢115和交换机120之间提供通信。在一实施例中,多个设备能够耦合至交换机120。0036 交换机/桥120将分组。

30、/消息自设备125向上游(即,自分层结构向上朝向根复合体)路由至控制器中枢115,并且自处理器105或系统存储器110向下游(即,自分层结构向下远离根控制器)路由至设备125。在一实施例中,交换机120被称为多个虚拟PCI对PCT桥设备的逻辑装配。设备125包括要耦合至电子系统的任何内部或外部设备或组件,诸如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线(Firewire)设备、通用串行总线(USB)设备、扫描仪以及其他输入/输出设备。通常在PCIe语言中,诸如设备被称为。

31、端点。尽管未特别示出,但设备125可以包括桥(例如PCIe对PCI/PCI-X桥)以支持设备或这些设备所支持的互连构造的传统或其他版本。0037 图形加速器130也可以通过串行链路132耦合至控制器中枢115。在一实施例中,图形加速器130耦合至MCH,MCH耦合至ICH。于是,交换机120及相应的I/O设备125耦合至ICH。I/O模块131和118也用于实现分层的协议栈和相关联的逻辑以便在图形加速器130和控制器中枢115之间通信。类似于以上的MCH讨论,图形控制器或图形加速器130本身可集成在处理器105内。0038 转至图2,示出分层协议栈的实施例。分层协议栈200可包括任何形式的分层。

32、通信栈,诸如QPI栈、PCIe栈、下一代高性能计算互连(HPI)栈或其他分层栈。在一实施例中,协议栈200可包括事务层205、链路层210和物理层220。接口(接口诸如图1中的接口117、118、121、122、126和131)可以被表示为通信协议栈200。通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。0039 分组可用于在多个组件间传送信息。分组可形成于事务层205和数据链路层210中以将信息自发射组件携带至接收组件。随着所发送的分组流经其他层,使用用于在那些层处理分组的附加信息来扩展这些所发送的分组。在接收侧发生相反过程,分组从它们的物理层220表示变换成数据链路层210表示,。

33、最终(对于事务层分组)变换成可由接收设说 明 书CN 104380269 A4/35页10备的事务层205处理的形式。0040 在一实施例中,事务层205可以在设备的处理核和互连体系结构之间提供接口,诸如数据链路层210和物理层220。在这点上,事务层205的主要责任可包括分组(即,事务层分组,即TLP)的装配和分解。事务层205也可以管理TLP的基于信用的流控制。在一些实现中,在其他示例中,可以利用分割事务,即关于请求的事务和关于响应的事务按时间分开,允许链路携带其他业务而同时目标设备为响应收集数据。0041 基于信用的流控制可用于实现利用互连构造的虚拟信道和网络。在一示例中,设备可以为事务。

34、层205中的每个接收缓冲器广告初始量的信用。在链路相对端的外部设备(诸如图1中的控制器中枢115)可以对每个TLP所消耗的信用数量计数。如果事务不超过信用界限,则发送事务。在接收到响应时,恢复信用的数量。这一信用方案的优点的一个示例在于,在其他潜在优点中,假如不遇到信用界限,信用返回的延迟就不影响性能。0042 在一实施例中,四个事务地址空间可包括配置地址空间、存储器地址空间、输入/输出地址空间以及消息地址空间。存储器空间事务包括读请求和写请求中的一个或多个,用以将数据传递至存储器映射的位置/自存储器映射的位置传递数据。在一实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(诸。

35、如32位地址)或长地址格式(诸如64位地址)。配置空间事务可用于访问与互连相连接的各个设备的配置空间。到配置空间的事务可包括读请求和写请求。也可以定义消息空间事务(或简称为消息)来支持互连代理之间的带内通信。因此,在一示例实施例中,事务层205可以装配分组头部/有效载荷206。0043 快速参照图3,示出事务层分组描述符的示例实施例。在一实施例中,事务描述符300可以是用于携带事务信息的机制。在这点上,事务描述符300支持系统中事务的标识。其他潜在用途包括跟踪缺省事务次序的修改以及事务与信道的关联。例如,事务描述符300可包括全局标识符字段302、属性字段304和信道标识符字段306。在所示示。

36、例中,全局标识符字段302被描述为包括局部事务标识符字段308和源标识符字段310。在一实施例中,全局事务标识符302对于所有未完成的请求是唯一的。0044 根据一种实现方式,局部事务标识符字段308是由请求方代理(requesting agent)产生的字段,并且可以是对于对该请求方代理要求完成的所有未完成的请求唯一的。而且,在该示例中,源标识符310唯一地标识互连分层结构内的请求者代理(requestor agent)。因而,局部事务标识符308字段与源ID 310一起提供分层结构域内事务的全局标识。0045 属性字段304指定事务的特征和关系。在这点上,属性字段304可能用于提供允许修改。

37、事务的缺省处理方式的附加信息。在一实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和无监听(no-snoop)字段318。这里,优先级子字段312可由发起者修改以将优先级分配给事务。保留属性字段314预留给将来的用途或是厂商定义的用途。可以使用保留属性字段来实现使用优先级或安全属性的可能的用途模型。0046 在该示例中,排序属性字段316用于提供任选的信息,该任选的信息传递可以修改缺省排序规则的排序类型。根据一种示例实现方式,为“0”的排序属性表示要应用缺省的排序规则,其中为“1”的排序属性表示不受拘束的排序,其中写操作可以在相同方向上通过写操作,而读操作完成可以在相同方向上通过写操作。监听属性字段318用于确定事务说 明 书CN 104380269 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1