高性能互连相干协议的制作方法

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