一种在节点之间共享存储器和I/O服务的装置、方法、系统与流程

文档序号:19495677发布日期:2019-12-24 14:55阅读:241来源:国知局
一种在节点之间共享存储器和I/O服务的装置、方法、系统与流程

领域

本公开涉及计算系统,且具体地(而非排他地)涉及计算系统中的组件之间的存储器访问。



背景技术:

半导体处理和逻辑设计方面的进展已允许可存在于集成电路器件上的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核、多个硬件线程和多个逻辑处理器、以及此类处理器内集成的其它接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢等等。

由于将更多处理功率装配在更小封装中的能力越来越强,更小的计算设备越来越受欢迎。智能手机、平板、超薄笔记本以及其它用户设备已指数地增长。然而,这些更小的设备依赖于服务器进行超出形状因数的数据存储和复杂处理。作为结果,高性能计算市场(即服务器空间)的需求也已经增加。例如,在现代服务器中,典型地不仅存在具有多个核的单个处理器,而且存在多个物理处理器(也称为多个插槽),以用于增加计算能力。但由于处理能力随着计算系统中的设备的数量增长,插槽与其它设备之间的通信变得更关键。

实际上,互连已经从主要处理电通信的更传统的多分支总线增长为便于快速通信的充分发展的互连架构。不幸的是,随着未来处理器在甚至更高速率下消耗的需求,对现有互连架构的能力寄予了相应的需求。

附图说明

图1示出包括互连架构的计算系统的实施例。

图2示出包括分层栈的互连架构的实施例。

图3示出将在互连架构内产生或接收的请求或分组的实施例。

图4示出用于互连架构的发射机和接收机对的实施例。

图5a示出示例节点的实施例的简化框图。

图5b示出包括多个节点的示例系统的实施例的简化框图。

图6是根据示例共享存储器链路传输的数据的表示。

图7a是根据共享存储器链路的另一示例传输的数据的表示。

图7b是示例数据开始分帧令牌的表示。

图8是根据共享存储器链路的另一示例传输的数据的表示。

图9a-9d是示出用于存储器访问消息收发的示例技术的流程图。

图10示出包括多核处理器的计算系统的框图的实施例。

图11示出包括多核处理器的计算系统的框图的另一实施例。

图12示出处理器的框图的实施例。

图13示出包括处理器的计算系统的框图的另一实施例。

图14示出包括多个处理器的计算系统的块的实施例。

图15示出实现为芯片上系统(soc)的示例系统。

各个附图中的相似附图标记和指示表示相似元件。

具体实施方式

在以下描述中,阐明了众多具体细节,如具体类型的处理器和系统配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率限制技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。

尽管参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑器件。可将本文中所描述的多个实施例的类似技术和教导应用于也可受益于更佳的能效和节能的其他类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或超极本tm。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(soc)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(pda)、手持式pc。嵌入式应用典型地包括微控制器、数字信号处理器(dsp)、芯片上系统、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机、或可执行以下教导的功能和操作的任何其他系统。此外,此处所描述的设备、方法,以及系统也不仅限于物理计算设备,但是,也可以涉及对于节能和效率的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。

随着计算系统的进步,本文的各组件可变得更加复杂。结果,用于在这些组件之间进行耦合和通信的互连架构也增加了复杂性以确保满足带宽要求来用于最优组件操作。此外,不同的市场细分要求互连架构的不同方面来适合该市场的需求。例如,服务器需要较高的性能,而移动生态系统有时能够牺牲整体性能来换取功率节省。然而,大多数结构的单一目的是使用最大功率节省来提供最高可能性能。在下文中,讨论了多个互连,它们将潜在地从在此描述的本公开的各方面中获益。

一种互连结构架构包括外围部件互连(pci)快速(express)(pcie)架构。pcie的主要目标是使得来自不同供应商的各组件和器件能够在开放架构中互操作,横跨多个市场细分;客户机(台式机和移动)、服务器(标准和企业),以及嵌入式和通信设备。pci快速是针对各种各样的将来计算和通信平台定义的高性能、通用i/o互连。一些pci属性,如其使用模型、加载-存储架构、以及软件接口,已通过其各版本得到维持,而先前的并行总线实现已被高度可伸缩、完全串行的接口所替换。pci快速的更新近版本利用点对点互连、基于交换机的技术、以及分组化协议的进步,来产生新的性能水平和特征。功率管理、服务质量(qos)、热插拔/热切换支持、数据完整性、以及出错处理是pci快速所支持的高级特征中的一些。

参考图1,示出了包括互连一组组件的点对点链路的结构的实施例。系统100包括耦合到控制器中枢115的处理器105和系统存储器110。处理器105包括任何处理元件,如微处理器、主处理器、嵌入式处理器、协处理器、或其他处理器。处理器105通过前侧总线(fsb)106耦合到控制器中枢115。在一个实施例中,如下所述,fsb106是串行点对点互连。在另一实施例中,链路106包括兼容不同的互连标准的串行、差分互连架构。

系统存储器110包括任何存储器设备,如随机存取存储器(ram)、非易失性(nv)存储器、或可由系统100中的器件访问的其他存储器。系统存储器110通过存储器接口116耦合到控制器中枢115。存储器接口的示例包括双数据率(ddr)存储器接口、双通道ddr存储器接口、以及动态ram(dram)存储器接口。

在一个实施例中,控制器中枢115是外围部件互连快速(pcie或pcie)互连分层结构中的根中枢、根联合体、或根控制器。控制器中枢115的示例包括芯片组、存储器控制器中枢(mch)、北桥、互连控制器中枢(ich)、南桥、以及根控制器/中枢。通常,术语芯片组指的是两个物理上分开的控制器中枢,即耦合到互连控制器中枢(ich)的存储器控制器中枢(mch)。注意,当前系统通常包括与处理器105集成在一起的mch,而控制器115用于按下述类似的方式与i/o设备通信。在一些实施例中,通过根联合体115来可任选地支持对等路由。

在此,控制器中枢115通过串行链路119耦合到交换机/桥接器120。输入/输出模块117和121(也可被称为接口/端口117和121)包括/实现用于提供控制器中枢115与交换机120之间的通信的分层协议栈。在一个实施例中,多个设备能够被耦合到交换机120。

交换机/桥接器120将来自设备125的分组/消息上行地路由(即沿分层结构向上朝根联合体)、下行地向控制器中枢115路由(即,沿分层结构向下远离根控制器),从处理器105或系统存储器110向设备125路由。在一个实施例中,交换机120被称为多个虚拟pci到pci桥接设备的逻辑组装件。设备125包括要耦合到电子系统的任何内部或外部设备或组件,如i/o设备、网络接口控制器(nic)、插卡、音频处理器、网络处理器、硬盘驱动器、存储设备、cd/dvdrom、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(usb)设备、扫描仪、以及其他输入/输出设备。通常,在pcie常用语中,诸如设备,被称为端点。虽然并未具体示出,但设备125可包括用于支持传统或其他版本pci设备的pcie到pci/pci-x桥接器。pcie中的端点设备通常被分类成传统、pcie、或根联合体集成端点。

图形加速器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栈、下一代高性能计算互连栈、或其他分层栈。虽然紧接着以下参考图1-4的讨论与pcie栈有关,但相同的概念可应用于其它互连栈。在一个示例中,协议栈200是包括事务层205、链路层210、以及物理层220的pcie协议栈。接口,诸如图1中的接口117、118、121、122、126、以及331,可被表示为通信协议栈200。表示为通信协议栈也可被称为实现/包括协议栈的模块或接口。

pciexpress使用分组在各组件之间传达信息。分组被形成在事务层205和数据链路层210中以将信息从发送组件携带至接收组件。随着发送的分组流过其它层,它们被扩充以具有在那些层处理分组所必需的附加信息。在接收侧,逆过程发生并且分组从其物理层220表示转变为数据链路层210表示,并最终(对于事务层分组)转变为可由接收设备的事务层205处理的形式。

事务层

在一个实施例中,事务层205用于提供设备的处理核与互连架构(如数据链路层210和物理层220)之间的接口。就此,事务层205的主要责任是对分组(即,事务层分组,或即tlp)的组装和分解。事务层205通常管理tlp的基于信用的流控制。pcie实现拆分事务,即请求和响应由时间分开的事务,从而允许链路在目标设备收集响应的数据时携带其他话务。

另外,pcie利用基于信用的流控制。在这一方案中,设备在事务层205中广告各接收缓冲区中的每一个的初始信用量。在该链路的相对端的外部设备,如图1中的控制器中枢115,对每一tlp所消耗的信用的数量进行计数。如果事务没有超出信用限制,则该事务可被传送。在接收到响应后,信用量恢复。信用方案的优点是信用返回的等待时间不影响性能,假定没有遇到信用限制的话。

在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间、以及消息地址空间。存储器空间事务包括向存储器映射的位置/从存储器映射的位置转移数据的读请求和写请求中的一个或超过一个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(如32位地址)或长地址格式(如64位地址)。配置空间事务被用于访问pcie设备的配置空间。到配置空间的事务包括读请求和写请求。消息空间事务(或即,简单地,消息)被定义为支持pcie代理之间的带内通信。

因此,在一个实施例中,事务层205组装分组头部/净荷206。当前分组头部/净荷的格式可在pcie规范网站处的pcie规范中找到。

快速参考图3,示出了pcie事务描述符的实施例。在一个实施例中,事务描述符300是用于携带事务信息的机制。就此,事务描述符300支持系统中事务的标识。其他可能用途包括跟踪默认事务排序的修改和事务与信道的关联。

事务描述符300包括全局标识符字段302、属性字段304以及信道标识符字段306。在所示示例中,全局标识符字段302被示为包括局部事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对所有未完成请求而言是唯一的。

根据一个实现,局部事务标识符字段308是由发出请求的代理所生成的字段,并且它对于需要对该发出请求的代理来完成的所有未完成的请求而言是唯一的。此外,在该示例中,源标识符310唯一地标识pcie分层结构内的请求者代理。因此,与源id310一起,局部事务标识符308字段提供事务在分层结构域内的全局标识。

属性字段304指定事务的特性和关系。就此,属性字段304潜在地被用来提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316以及无监视字段318。在此,优先级子字段312可由发起者修改以向事务分配优先级。保留属性字段314被保留以供将来使用或供应商定义的用途。使用优先级或安全属性的可能的使用模型可以使用该保留属性字段来实现。

在该示例中,排序属性字段316被用来提供传达可修改默认排序规则的排序的类型的可任选信息。根据一个示例实现,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示松散的排序,其中写可在同一方向上传递各个写,并且读完成可以在同一方向上传递各个写。监听属性字段318被用来确定事务是否被监听。如图所示,信道id字段306标识事务与之相关联的信道。

链路层

链路层210(也被称为数据链路层210)担当事务层205与物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路的两个组件之间交换事务层分组(tlp)的可靠机制。数据链路层210的一侧接受事务层205所组装的tlp,应用分组序列标识符211(即标识号或分组号),计算并应用错误检测码(即crc212),并将经修改的tlp提供给物理层220以供跨物理层传输给外部设备。

物理层

在一个实施例中,物理层220包括用于将分组物理地传送给外部设备的逻辑子块221和电气子块222。在此,逻辑子块221负责物理层221的“数字”功能。就此,逻辑子块包括用于准备外出信息以供物理子块222传输的传送部分以及用于在将接收到的信息传递给链路层210之前标识并准备该接收到的信息的接收机部分。

物理块222包括发射机和接收机。发射机由逻辑子块221来提供码元,发射机将这些码元串行化并向外部设备传送。来自外部设备的串行化的码元被提供给接收机,并且接收机将接收到的信号转换成位流。位流被解串行化并被提供给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中10位码元被传送/接收。在此,特殊码元被用于将分组分成各个帧223。另外,在一个示例中,接收机还提供从传入串行流恢复的码元时钟。

如上所述,虽然参考pcie协议栈的特定实施例讨论了事务层205、链路层210以及物理层220,但分层协议栈不限于此。实际上,可包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于将分组序列化的第二层,即链路层;以及用于传送分组的第三层,即物理层。作为特定示例,利用通用标准接口(csi)分层协议。

接着参考图4,示出了pcie串行点对点结构的实施例。虽然示出了pcie串行点对点链路的实施例,但串行点对点链路不限于此,因为它包括用于传送串行数据的任何传输路径。在所示实施例中,基本pcie链路包括两个低电压的、差分地驱动的信号对:传送对406/411和接收对412/407。因此,设备405包括用于将数据传送给设备410的传输逻辑406和用于从设备410接收数据的接收逻辑407。换言之,两个传送路径(即,路径416和417)和两个接收路径(即,路径418和419)被包括在pcie链路中。

传输路径可以指用于传送数据的任何路径,如传输线、铜线、光学线路、无线通信信道、红外通信链路、或其他通信路径。诸如设备405和设备410等两个设备之间的连接被称为链路,如链路415。链路可以支持多条通道(lane)——每条通道表示一组差分信号对(一个对用于传输,一个对用于接收)。为了扩展带宽,链路可以聚集表示为xn的多条通道,其中n是任何所支持的链路宽度,如1、2、4、8、12、16、32、64或更宽。

差分对可以指用于传送差分信号的两条传输路径,如路线416和417。作为示例,在路线416从低电平转换为高电平(即上升沿)时,路线417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号可能示出更好的电气特性,如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃,等等。这样允许更好的定时窗口,从而实现更快的传输频率。

可充分利用包括pcie的现有互连和通信架构的物理层来在系统内提供共享存储器和i/o服务。传统地,在使用传统加载/存储(ld/st)存储器语义的独立系统之间无法共享可缓存存储器。独立系统或“节点”可以是独立的,因为它作为单个逻辑实体起作用、被单个操作系统(和/或单个bios或虚拟机监控器(vmm))控制、和/或具有独立的故障域。单个节点可包括一个或超过一个处理器设备、在单个板或多个板上实现、且包括本地存储器,本地存储器包括可被同一节点上的设备使用ld/st语义来访问的可缓存存储器。在节点内,共享存储器可包括一块或超过一块存储器,诸如可由节点内的若干不同处理器(例如中央处理单元cpu)访问的随机存取存储器(ram)。共享存储器还可包括该节点中的处理器或其它设备的本地存储器。具有共享存储器的节点内的多个设备可共享该共享存储器内的数据的单视图。涉及共享存储器的i/o通信可以是非常低等待时间,且允许多个处理器对该存储器的快速访问。

传统地,不同节点之间的存储器共享尚未允许根据加载/存储范式的存储器共享。例如,在一些系统中,已通过分布式存储器架构来便于不同节点之间的存储器共享。在传统解决方案中,计算任务对本地数据进行操作,并且如果需要另一节点的数据,则(由另一cpu节点执行的)该计算任务例如经由通信信道与另一节点通信,该通信信道利用诸如以太网、无限宽带(infiniband)或另一分层协议之类的通信协议栈。在传统多点系统中,不同节点的处理器不一定要知晓数据驻留在何处。使用传统方法经由协议栈共享数据比使用加载/存储范式在节点内的存储器共享可具有显著更高的等待时间。除了其它示例之外,不对共享存储器中的数据进行直接寻址和操作,一个节点可使用诸如以太网(或无限带宽)之类的现有的协议握手来请求来自另一节点的数据,并且源节点可提供该数据,使得可通过请求节点来存储和操作数据。

在一些实现中,可提供共享存储器架构,该共享存储器架构允许使用加载/存储(ld/st)存储器语义在独立节点之间共享存储器以进行排它或共享的访问。在一个示例中,可在公共的引脚集合或单独的引脚集合上导出存储器语义(以及目录信息,若适用)以及i/o语义(对于诸如pcie之类的协议)。在这样的系统中,改进的共享存储器架构可以允许系统中的多个节点的每一个节点以维持其自身的独立的故障域(以及本地存储器),同时使用根据ld/st语义的存储器来允许供节点访问的共享存储器池和低等待时间消息传递。在一些实现中,可在不同节点之间动态地(或静态地分配这样的共享存储器池)。相应地,本领域技术人员可将系统的多个节点配置成将节点的组动态地改变成利用共享存储器基础结构在各种任务上协同和灵活地工作(例如,在出现需求时)。

转到图5a,示出了简化框图500a,其中示出包括共享存储器505的示例系统,多个独立节点510a-510n中的每一个节点可利用加载/存储技术来访问该共享存储器505。例如,可提供共享存储器控制器515,该共享存储器控制器可接受系统上的各个节点510a-510n的加载/存储访问请求。可利用同步动态随机存取存储器(sdram)、双列直插式存储器模块(dimm)以及其它非易失性存储器(或易失性存储器)来实现共享存储器505。

每个节点自身可具有一个或许多cpu插槽,并且还可包括与系统中的其它节点的ld/st访问保持隔离的本地存储器。除了其它示例之外,该节点可使用一个或超过一个协议(包括pcie、qpi、以太网)与该系统上的其它设备(例如共享存储器控制器515、联网控制器520、其它节点、等等)通信。在一些实现中,可提供共享存储器链路(sml)协议,通过该协议可支持低等待时间ld/st存储器语义。例如,可在系统的各个节点510a-510n(通过共享存储器控制器515)对共享存储器505的通信读取和协议时使用sml。

在一个示例中,sml可基于存储器访问协议,诸如可缩放存储器互连(smi)第三代(smi3)。除了其它示例之外,可替代地使用其它存储器访问协议,诸如完全缓冲的dimm(fb-dimm)、ddr事务性(ddr-t)之类的事务性存储器访问协议。在其它实例中,sml可基于原生的pcie存储器读取/写入语义,并带有附加的目录扩展。由于对于高速缓存行存储器访问量身设计,sml的基于存储器协议的实现可提供带宽效率优势。虽然诸如pcie之类的高性能设备间通信协议存在,此类协议的上层(例如事务和链路层)会引入等待时间,该等待时间会使完整协议在ld/st存储器事务(包括涉及共享存储器505的事务)中的使用降级。诸如smi3之类的存储器协议可绕过诸如pcie之类的另一协议栈的大部分,因此可允许提供更低等待时间访问的潜在附加优势。相应地,sml的实现可利用在另一协议的逻辑和物理phy上运行的smi3或另一存储器协议,诸如pcie上的smi3。

如所述,在一些实现中,可提供共享存储器控制器(smc)515,该共享存储器控制器包括用于处理系统中的节点510a-510n的加载/存储请求的逻辑。可由smc515经由利用sml并将节点510a-510n连接至该smc515的链路来接收加载/存储请求。在一些实现中,可将smc515实现为包括用于服务节点510a-510n对共享存储器资源的访问请求的逻辑的设备,诸如专用集成电路(asic)。在其它实例中,smc515(以及共享存储器505)可驻留在与节点510a-510n中的一个或超过一个(或甚至全部)分离的设备、芯片或板上。smc515可进一步包括用于协调各个节点的涉及共享存储器505的事务的逻辑。此外,smc可保持对共享存储器505中包括的各种数据资源(诸如每个高速缓存行)的目录跟踪访问。除了其它可能的示例之外,例如,数据资源可以处于共享访问状态(例如能同时被节点内的多个处理和/或i/o设备访问(例如加载或读取))、排它访问状态(例如被节点内的单个处理和/或i/o设备排它地(若非临时地)预留以用于例如存储或写入操作)、未高速缓存状态。此外,虽然每个节点可能具有对共享存储器505的一个或超过一个部分的直接访问,但各个节点(例如510a-510n)可能采用不同的寻址方案和值,导致由第一节点(例如在指令中)根据第一地址值引用的共享存储器数据与第二节点通过第二地址值引用的数据相同。smc515可包括逻辑,包括将节点的地址映射至共享存储器资源的数据结构,以允许smc515来解释各个节点的各种访问请求。

此外,在一些情况下,可对共享存储器的一些部分(例如某些分区、存储器块、记录、文件等等)施加某些许可、规则以及分配,使得(例如通过smc515)仅允许节点510a-510n的部分访问相应的数据。实际上,可将每个共享存储器资源分配给系统中的节点510a-510n的相应的(且在一些情况下不同的)子集。这些分配可以是动态的,并且smc515可修改此类规则和许可(例如根据需要、动态地、等等),以容许适用于共享存储器505的给定部分的新的或改变的规则、许可、节点分配和所有权。

示例smc515可进一步跟踪涉及系统中的访问一个或超过一个共享存储器资源的节点(例如510a-510n)的各种事务。除了其它事务信息之外,例如,smc515可跟踪每个共享存储器505事务的信息,包括该事务中涉及的节点的标识、该事务的进程(例如它是否已被完成)。这可允许传统分布式存储器架构中的面向事务的多个方面中的一些方面应用于本申请中描述的改进型多节点共享存储器架构。附加地,(例如smc)可使用事务跟踪来辅助保持或加强每个相应节点的不同和独立的故障域。例如,smc可将每个正在进行中的事务的相应节点id保持在其内部数据结构中(包括在存储器中),并且使用该信息来加强访问权限并保持每个节点的各个故障域。相应地,当节点之一(由于关键错误、触发的恢复序列或其它故障或事件)失效时,仅涉及该共享存储器505的该节点和其事务被中断(例如由smc转储)——涉及共享存储器505的余下节点的事务与其它节点中的故障无关地继续。

系统可包括多个节点。附加地,一些示例系统可包括多个smc。在一些情况下,节点可能能够访问它未直接附连的远程smc的共享存储器(即该节点的本地smc通过一个或许多sml链路跳(linkhop)连接至远程smc)。远程smc可以在同一板上或在不同板上。在一些情况下,节点中的一些可以在系统之外(例如板外或芯片外),但仍然访问共享存储器505。除了其它示例之外,例如,一个或超过一个系统之外的节点可利用sml兼容的链路直接连接至smc。附加地,包括它们自身的smc和共享存储器的其它系统也可与smc510连接,以将存储器505的共享扩展至例如另一板上包括的节点,另一板经由sml链路与连接至smc的另一smc连接。再者,可隧穿网络连接以将访问进一步扩展至其它板外或芯片外的节点。除了其它示例之外,例如,sml可经由(例如通过网络控制器520提供的)以太网连接来隧穿,该以太网连接将图5a的示例系统与另一系统通信地耦合,另一系统还可包括一个或超过一个其它节点并允许这些节点获得对smc515的访问从而获得对共享存储器505的访问。

作为另一示例,如图5b的简化框图500b中所示,允许根据ld/st存储器语义的多个独立节点的共享访问的改进的共享存储器架构可灵活地允许提供各种不同的多节点系统设计。可分配多个节点的各种组合以共享示例系统中提供的一个或超过一个共享存储器块的多个部分。例如,图5b的示例中所示的另一示例系统可包括多个设备550a-550d,这多个设备可例如被实现为不同的管芯、板、芯片等等,每个设备包括一个或超过一个独立的cpu节点(例如510a-510h)。每个节点可包括其自己的本地存储器。多个设备550a-550d中的一个或超过一个可进一步包括共享存储器,该共享存储器可被系统的节点510a-510h中的两个或超过两个节点访问。

图5b中所示的系统是示例,提供该示例是为了示出可通过改进的存储器架构实现的可变性中的一些,比如本申请中示出和描述的示例。例如,设备a550a和设备c550c中的每一个可包括相应的共享存储器元件(例如505a、505b)。相应地,在一些实现中,不同设备上的每个共享存储器元件可进一步包括相应的共享存储器控制器(smc)515a、515b。节点510a-510h的各种组合可通信地耦合至每个smc(例如515a、515b),从而允许节点访问相应的共享存储器(例如505a、505b)。作为示例,设备a550a的smc515a可使用支持sml的直接数据链路连接至设备a上的节点510a、510b。附加地,另一设备(例如设备c550c)上的另一节点510c也可借助从节点510c(和/或其设备550c)到smc515a的直接硬接线连接(支持sml)而获得对共享存储器505a的访问。还可使用间接的基于网络的或其它此类连接,来允许远程或板外的设备(例如设备d550d)的节点(例如510f-510h)使用常规的协议栈与smc515a连接以也获得对共享存储器505a的访问。例如,可经由以太网、无线宽带或将设备a和设备d耦合的其它连接来建立sml隧道555。虽然与在其它不太受软件管理的物理连接相比,建立和维持隧道会引入一些附加的开销和等待时间,但sml隧道555在建立时可作为其它sml信道操作,并且允许节点510f-510h经由sml与smc515a连接,并能像经由sml链路与smc通信的其它节点那样访问共享存储器505a。例如,可通过系统中的联网组件或可在smc之间端到端地增强sml信道中的分组的可靠性和排序。

在另外的其它示例中,设备上的与主控共享存储器(例如505a)的特定部分的节点不同的节点(例如515d、515e)可通过直接连接至另一smc(例如515b)——该另一smc自身(利用sml链路)连接至相应的smc(例如515a),来间接连接至相应的smc(例如smc515a)。链接两个或超过两个smc(例如515a、515b)可有效地扩展对于该系统上的节点510a-510h可用的共享存储器的量。例如,借助于图5b的示例中的smc515a、515b之间的链路,在一些实现中,能够经由smc515a访问共享存储器505a的节点(例如510a-510c、510f-510h)中的任一个还可能借助于smc515a和smc515b之间的连接来访问可共享的存储器505b。类似地,除了其它可能的示例之外,在一些实现中,直接访问smc515b的节点中的每一个还可借助于smc515a、515b之间的连接来访问可共享的存储器505a。

如上所述,改进的共享存储器架构可包括低等待时间链路协议(即sml),该低等待时间链路协议基于诸如smi3之类的存储器访问协议,并被提供用于便于涉及该共享存储器的加载/存储请求。虽然可将传统的smi3和其它存储器访问协议配置用于单个节点内的存储器共享,然而sml可将存储器访问语义扩展至多个节点以允许多个节点之间的存储器共享。此外,可潜在地在任何物理通信链路上利用sml。sml可利用上覆在适于互连不同设备(以及节点)的物理层(以及相应的物理层逻辑)之上的支持ld/st存储器语义的存储器访问协议。此外,除了其它特征之外,sml的物理层逻辑可提供不丢分组以及错误重试功能。

在一些实现中,可通过将smi3上覆在pciephy上来实现sml。可提供sml链路层(例如代替传统的pcie链路层)以放弃流程控制和其它特征,并便于更低等待时间的存储器访问(如同传统cpu存储器访问架构中的特性)。在一个示例中,sml链路层逻辑可在共享存储器事务与其它事务之间进行多路复用。例如,sml链路层逻辑可在smi3与pcie事务之间进行多路复用。例如,smi3(或另一存储器协议)可上覆在pcie(或另一互连协议)之上,使得该链路可在smi3与pcie事务之间动态地切换。在一些实例中,这可允许传统的pcie业务量与sml业务量在同一链路上有效地共存。

转到图6,示出了表示600,其中示出了sml的第一实现。例如,可通过将smi3上覆在pciephy上来实现sml。该物理层可将标准pcie128b/130b编码用于所有物理层活动,包括链路训练以及pcie数据块。sml可实现在pcie分组与smi3微片之间多路复用该链路的通道(例如通道0-通道7)上的业务量。例如,在图6所示的实现中,可修改并使用pcie128b/130b编码的同步头部并将其用于指示将在该链路的通道上发送smi3微片而不是pcie分组。在传统的pcie128b/130b编码中,有效的同步头部(例如610)可包括在该链路的所有通道上发送10b样式(以指示该块的净荷的类型将是pcie数据块)或在该链路的所有通道上发送01b样式(以指示该块的净荷的类型将是pcie有序集块)。在sml的示例中,可定义替代的同步头部,以将smi3微片业务量与pcie数据块和有序集区分开。在如图6所示的一个示例中,可利用奇数/偶数通道上交替的01b、10b样式来编码pcie128b/130b同步头部(例如605a、605b),以标识将被发送smi3微片。除了其它示例编码之外,在另一替代实现中,可通过在奇数/偶数通道上交替的10b、01b样式来定义用于smi3业务量的128b/130b同步头部编码。在一些情况下,可在smi3同步头部之后紧接着逐个字节地传输smi3微片,其中pcie与smi3协议之间的转换在块边界处发生。

在诸如图6的示例中所示的一些实现中,可将协议之间的转换定义为在块边界之间发生,而不论它对应于smi3微片还是pcie分组边界。例如,可定义块以包括预定量的数据(例如16个码元、128个字节、等等)。在此类实现中,当块边界不对应于smi3微片或pcie分组边界时,可中断整个smi3微片的传输。可在下一smi3块中恢复中断的smi3微片,其中通过对于smi3编码的另一同步头部的发送来指示下一smi3块。

转到图7a,示出了表示700,其中示出了sml的另一示例实现。在图7a的示例中,不使用专门的同步头部编码来用信号通知存储器访问与互连协议业务量之间的转换,可使用物理层分帧令牌。分帧令牌(或“令牌”)可以是物理层数据封装,该物理层数据封装指定或暗示要被包括在与该令牌相关的数据流中的码元的数量。作为结果,该分帧令牌可标识流正在开始并暗示它在何处结束,并且因此还可用于标识下一分帧令牌的位置。数据流的分帧令牌可位于数据流的第一数据块的第一通道(例如通道0)的第一码元(码元0)中。在pci的示例中,可定义五个分帧令牌,包括tlp业务量开始(stp)令牌、数据流结束(eds)令牌、结束坏(edb)令牌、dllp开始(sdp)令牌、以及逻辑空闲(idl)令牌。

在图7a的示例中,可通过将smi3或另一数据访问协议上覆在pcie上来实现sml,并且可修改标准pciestp令牌来定义新stp令牌,该新stp令牌标识smi3(代替tlp业务量)将在该链路的通道上开始。在一些示例中,可修改标准pciestp令牌的保留位的值,以在sml中定义smi3stp令牌。此外,如图7b中所示,stp令牌705可包括若干字段,包括指定接下来的smi3净荷的长度(按照微片数量)的710字段。在一些实现中,可对tlp数据定义一个或超过一个标准净荷长度。在一些实现中,可定义smi3数据以包含固定数量的微片,或在其它情况下,smi3数据可具有可变数量的微片,在该情况下,用于smi3微片的数量的长度字段成为可被无视的字段。此外,可将smi3stp的长度字段定义为除了所定义的tlp净荷长度之一以外的长度。作为一个示例,相应地,可基于stp长度字段中存在非tlp长度值来标识smi3stp。例如,在一个实现中,可将11位stp长度字段的高3位设置为111b以指示smi3分组(例如基于如下假定:与规范不兼容的pcietlp可以足够长,以具有使得长度字段的高3位将为1的长度)。其它实现可改变或编码stp令牌的其它字段,以将标识传统pcietlp数据净荷的pciestp令牌与标识smi3数据封装在tlp数据中的smi3stp令牌区分开。

返回图7a的示例,同步头部数据可遵循对于传统pcie128b/130b编码指定的编码。例如,在715a-c,接收具有值10b的同步头部,表明数据块即将到来。当接收pciestp(例如720)时,预期pcietlp净荷,并相应地处理数据流。与pciestp720中标识的净荷长度一致,pcietlp净荷可利用所分配的完整净荷长度。可基本上在tlp净荷的结束之后的数据块内的任一时间接收另一stp令牌。例如,在725,可接收smi3stp,以信号通知从pcietlp数据到smi3微片数据的转换。例如,只要标识了pcie分组数据的结尾,就可发送smi3stp。

继续图7a的示例,如同pcietlp数据,smi3stp725可定义随后的smi3微片净荷的长度。例如,smi3数据的净荷长度可对应于随后按照dw的smi3微片的数量。由此可在通道上定义与净荷长度相对应的窗口(例如在通道3的码元15结束),其中在该窗口期间仅发送smi3数据。当窗口结束时,可发送诸如另一pciestp之类的其它数据,以重新开始发送tlp数据或诸如有序集数据之类的其它数据。例如,如图7a的示例中所示,在由smi3stp令牌725定义的smi3数据窗口的结束之后发送eds令牌。eds令牌可以信号通知数据流的结束并暗示接下来是有序集块,如同图7a的示例中的情况。发送同步头部740,该同步头部被编码为01b以指示将发送有序集块。在该情况下,发送pcieskp有序集。除了其它示例之外,可周期性地或根据设定间隙或窗口来发送这样的有序集,使得可执行各种phy层级任务和协作,包括初始化位对准、初始化码元对准、交换phy参数、补偿两个通信端口的不同位速率。在一些情况下,可发送强制有序集以中断由对应的smi3stp令牌对于smi3微片数据指定的定义窗口或数据块。

虽然未在图7a的示例中明确示出,但还可使用stp令牌在该链路上从smi3微片数据转换至pcietlp数据。例如,在定义的smi3窗口结束之后,可发送pciestp令牌(例如与令牌720相似)以指示下一窗口将用于发送指定量的pcietlp数据。

在一些实施例中,存储器访问微片(例如smi3微片)的尺寸可能变化,使得难以先验地预测在相应stp令牌(例如smi3stp令牌)中预留多少数据以用于存储器访问净荷。作为示例,如图7a中所示,smi3stp725可具有长度字段,指示在smi3stp725之后预期244字节的smi3数据。然而,在该示例中,仅10个微片(例如smi3微片0-9)准备就绪在该窗口期间被发送,并且这十个smi3微片仅利用244个字节中的240个。相应地,留下了四(4)字节的空带宽,并且这些空带宽被idl令牌填充。这在pcietlp数据排队并等待smi3窗口关闭时尤其不是最理想。在其它情况下,为了smi3微片的发送而提供的窗口可能不足以发送对该通道准备就绪的smi3数据的量。可采用仲裁技术以确定如何在该链路上共存的smi3与pcietlp数据之间仲裁。此外,在一些实现中,可动态地修改smi3窗口的长度以辅助对该链路的更高效使用。例如,仲裁或其它逻辑可监测已定义smi3窗口被利用的程度,以确定是否可针对该通道预期的smi3(以及竞争的pcietlp业务量)的量来更好地优化已定义窗口长度。除了其它示例之外,相应地,在此类实现中,根据应当给smi3微片数据分配的链路带宽的量(例如相关于其他pcie数据,包括tlp、dllp和有序集数据),可(例如在不同值之间)动态地调节smi3stp令牌的长度字段值。

转到图8,示出了sml的另一示例实现的表示800。在该替代实施例中,sml可通过修改的pcie分帧令牌来实现smi3与pcie协议的交织。如上所述,可在pcie中使用eds令牌以指示数据流的结束并指示下一块将是有序集块。在图8的示例中,sml可定义smi3eds令牌(例如805),该令牌指示tlp数据流的结束和向smi3微片传输的转换。可通过将传统eds令牌的预留位的部分编码成指示接下来是smi3数据,而不是将跟随在pcieeds之后的pcie有序集或其它数据,来定义smi3eds(例如805)。与传统的eds令牌不同,可基本上在pcie数据块的任一处发送smi3eds。这可允许发送smi3数据和容许相应的低等待时间共享存储器事务时的附加灵活性。例如,可通过单个双字(dw)的开销来完成从pcie到smi3的转换。此外,如同传统的eds令牌,示例smi3eds可以不指定与跟随在该令牌之后的smi3数据相关联的长度。在smi3eds之后,pcietlp数据可完结,且smi3微片在该链路上继续。smi3业务量可继续,直到smi3逻辑将控制传递回pcie逻辑。在一些实现中,smi3eds的发送导致控制从pcie逻辑传递至例如在该链路上连接的设备上提供的smi3逻辑。

在一个示例中,smi3(或另一协议)可定义其自己的用于执行链路层控制的链路控制信令。例如,在一个实现中,sml可定义smi3链路层控制(llctrl)微片(例如810)的专门版本,该专门版本指示从smi3返回pcie协议的转换。如同smi3eds,定义的llctrl微片(例如810)可导致控制从smi3逻辑被传递回pcie逻辑。在一些情况下,如图8的示例中所示,在完成向pcie的转换之前,可用预定义数量的llctrl空闲(llctrl-idle)微片(例如815)填充定义的llctrl微片(例如810)。例如,要发送以填充smi3llctrl微片810的llctrl-idle微片815的数量可取决于用于解码已定义的以信号通知该转换的smi3llctrl微片810的等待时间。在完成转换回到pcie之后,可发送stp分组,并且tlp分组数据可在pcie的控制下在该链路上重新开始。

应当理解,本申请中描述的实现被提供作为示例以示出本说明书中公开的某些原理和特征。应当理解,(除了示例中特别讨论的那些配置、协议和架构之外的)替代的配置、协议和架构可使用并应用这些原理和特征。作为一个替代方案的示例,可使用通过目录信息增强的pcie存储器读取/写入(例如代替smi3协议)。该目录信息可通过pcie分组的预留位来实现。除了其它可能的示例和替代方案之外,在另一示例中,cpu节点可利用高速缓存控制器(例如,作为共享存储器控制器的替代)例如基于远程地址范围检查来在pcie链路上发送存储器读取/写入事务。

转到图9a-9d,示出了流程图900a-d,其中示出了用于使用mcpl来通信的示例技术。例如,在图9a中,可在905接收来自第一节点的加载/存储存储器访问消息,该消息请求共享存储器的特定数据。可在910将对该特定数据的访问提供给第一节点。可在915接收来自第二独立节点的第二加载/存储存储器访问消息。第二消息可请求对该共享存储器的相同特定数据的访问,并且可在920将对该特定数据的访问提供给第二节点。因此,共享存储器中的数据可由多个不同的独立节点共享和访问。

在图9b的示例中,可在925接收具有第一编码的第一同步头部(诸如pcie同步头部)。该编码可指示从互连协议向存储器访问协议的转换,并且可在930根据第一同步头部来标识该转换。可在935在第一同步头部之后接收存储器访问协议的数据,并处理该数据(例如与存储器访问协议一致)。在一些示例中,存储器访问协议数据可包括涉及由多个独立节点共享的共享存储器的事务。可在940接收第二同步头部,该第二同步头部包括指示从互连协议的转换的第二、不同的编码。可在945根据第二同步头部标识从存储器访问协议返回至互连协议的转换。

转到图9c,在一些实例中,可在950接收第一数据开始令牌(例如pciestp令牌),该数据令牌包括被编码成标识从互连协议向存储器访问协议的转换的一个或超过一个值。存储器访问协议的数据可在第一数据开始令牌之后到达并可在955被标识。可在960处理存储器访问协议的该数据。可在第一数据开始令牌中包括长度字段,以指示何时数据将转换回互连协议数据。实际上,在一些实现中,可将数据开始令牌的的长度字段编码成指示与存储器访问协议的数据相对应的长度。此外,可定义第二、不同的数据开始分帧令牌,该令牌将被解释成对应于互连协议的数据的到达。除了其它示例之外,可根据互连协议(例如pcie)来定义第一和第二数据开始分帧令牌中的每一个。

在图9d的示例中,可在965接收流结束令牌(例如专门的pcieeds令牌),该令牌将被编码成指示向存储器访问协议数据的转换。接收到的流结束令牌可导致在970从用于处理互连协议数据的链路层逻辑向用于处理存储器访问协议数据的链路层逻辑的转换。可在975接收并利用存储器访问协议的链路层逻辑来处理存储器访问协议的数据。可在980接收存储器访问协议的链路层控制数据(例如在存储器访问协议的数据的结束),以指示向互连协议的数据的转换。在980接收链路层控制数据可导致在985从存储器访问协议的链路层逻辑向互连协议的链路层逻辑的转换。除了其它示例之外,可在链路层控制数据之后接收互连协议的数据,并在转换985之后通过互连协议的链路层逻辑来处理该数据。

应当注意,虽然在pcie和pcie规范的特定修订的背景内描述了上述原理和示例中的多数,本申请中描述的原理、解决方案以及特征可等同适用于其它协议和系统。例如,可使用其它协议基于模拟码元、数据流、令牌、以及针对使用、放置规定的规则,并在经由其它链路传输的数据之内格式化此类结构,来检测其它链路中的模拟通道错误。此外,可使用替代的机制和结构(例如在pcieles寄存器或skpos之外)在系统内提供通道错误检测和报告功能。此外,除了其它示例之外,可在系统内应用以上解决方案的组合,包括对链路的逻辑和物理增强的组合以及本申请描述的相应逻辑。

注意,如上所述,上述装置、方法以及系统可被实现在任何电子设备和系统中。作为具体说明,以下附图提供了用于利用在此描述的发明的示例性系统。在用更多细节描述以下系统时,公开、描述以及重访了来自以上讨论的多个不同的互连。并且如显而易见的,上述进步可适用于这些互连、构造、或架构中的任一个。

参考图10,描绘了包括多核处理器的计算系统的框图的实施例。处理器1000包括任何处理器或处理设备,诸如,微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上系统(soc)或用于执行代码的其他设备。在一个实施例中,处理器1000包括至少两个核——核1001和1002,这两个核可包括不对称核或对称核(所示实施例)。然而,处理器1000可包括可以是对称的或非对称的任何数量的处理元件。

在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其他代码之类的代码独立地相关联的任何硬件。典型地,物理处理器(或处理器插槽)指的是集成电路,该集成电路潜在地包括任何数量的其它处理元件(诸如核或硬件线程)。

核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用的执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如所看到的那样,当某些资源是共享的而其他资源是专用于架构状态的时候,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常被操作系统视为单个的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。

如图10所示的物理处理器1000包括两个核——核1001和1002。在此,核1001和1002被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核1001包括无序处理器核,而核1002包括有序处理器核。然而,可从任何类型的核中分别选择核1001和1002,诸如原生核、软件管理的核、适于执行原生指令集架构(isa)的核、适于执行经转换指令集架构(isa)的核、共同设计的核或其它已知核。在异构核环境(即,非对称核)中,一些形式的转换(如二进制转换)可被用来在一个或这两个核上调度或执行代码。不过,为进一步讨论,以下将进一步详细描述在核1001中示出的功能单元,因为核1002中的单元以在所示实施例中的类似方式操作。

如所描绘的那样,核1001包括两个硬件线程1001a和1001b,它们也可被称为硬件线程槽1001a和1001b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1000视为四个单独的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上文所暗指的那样,第一线程与架构状态寄存器1001a相关联,第二线程与架构状态寄存器1001b相关联,第三线程可与架构状态寄存器1002a相关联,并且第四线程可与架构状态寄存器1002b相关联。在此,如上所述,可将架构状态寄存器(1001a、1001b、1002a和1002b)中的每一个称为处理元件、线程槽或线程单元。如所示出的那样,架构状态寄存器1001a被复制在架构状态寄存器1001b中,因此能够为逻辑处理器1001a和逻辑处理器1001b存储单独的架构状态/上下文。在核1001中,也可复制用于线程1001a和1001b的其他较小资源,诸如,指令指针以及分配器和重命名块1030中的重命名逻辑。可通过分区来共享诸如重排序器/引退单元1035中的重排序缓冲器、iltb1020、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、页表基寄存器、低层级数据高速缓存和数据tlb1015、执行单元1040和无序单元1035的多个部分之类的其他资源。

处理器1000通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图10中,示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所示出的那样,核1001包括简化的、代表性的无序(ooo)处理器核。但是,在不同实施例中,可利用有序处理器。ooo核包括用于预测要被执行/进行的分支的分支目标缓冲器1020以及用于存储指令的地址转换条目的指令转换缓冲器(i-tlb)1020。

核1001进一步包括耦合至取出单元1020的解码模块1025,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽1001a、1001b相关联的单个的序列发生器。通常,核1001与第一isa相关联,该第一isa定义/指定在处理器1000上可执行的指令。作为第一isa的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码逻辑1025包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行第一isa所定义的处理的电路。例如,如下文更详细讨论地,在一个实施例中,解码器1025包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器1025识别的结果,架构或核1001采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。注意,在一个实施例中,解码器1026识别相同的isa(或其子集)。或者,在异构核环境中,解码器1026识别第二isa(第一isa的子集或不同的isa)。

在一个示例中,分配器和重命名器块1030包括用于预留资源的分配器,诸如,用于存储指令处理结果的寄存器组。然而,线程1001a和1001b潜在地能够进行无序执行,其中,分配器和重命名器块1030还保留其他资源(诸如,用于跟踪指令结果的重排序缓冲器)。单元1030还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器1000内部的其他寄存器。重排序/引退单元1035包括用于支持被无序执行的指令的无序执行和稍后的有序引退的、诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件。

在一个实施例中,调度器和执行单元块1040包括调度器单元,其用于在多个执行单元上调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器组,其用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。

较低层级的数据高速缓存和数据转换缓冲器(d-tlb)1050耦合至执行单元1040。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。d-tlb用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。

在此,核1001和1002共享对较高级或进一步的高速缓存的访问,如与片上接口1010相关联的第二级高速缓存。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行单元。在一个实施例中,较高级高速缓存是末级数据高速缓存——处理器1000上的存储器层次中的最后级高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器1025之后,用于存储最近经解码的跟踪。在此,指令可能引用宏指令(即,解码器所识别的通用指令),该宏指令可解码成多个微指令(微操作)。

在所描绘的配置中,处理器1000还包括片上接口模块1010。历史上,存储器控制器(以下将更详细地描述)已被包括在处理器1000外部的计算系统中。在该场景中,片上接口1010与处理器1000外部的器件通信,处理器1000外部的器件诸如系统存储器1075、芯片组(通常包括存储器控制器中枢以连接到存储器1075以及i/o控制器中枢以连接到外围器件)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1005可包括任何已知的互连,诸如,多分支总线、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线以及gtl总线。

存储器1075可专用于处理器1000或可由处理器1000与系统中的其他设备共享。存储器1075的类型的常见示例包括dram、sram、非易失性存储器(nv存储器)以及其他已知的存储设备。注意,设备1080可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到i/o控制器中枢的数据存储设备,无线收发机,闪存设备,音频控制器,网络控制器或其他已知设备。

然而,最近,随着更多的逻辑和器件被集成在单个管芯上(如soc),这些器件中的每一个可被合并在处理器1000上。例如,在一个实施例中,存储器控制器中枢与处理器1000处于同一封装和/或管芯上。在此,核的一部分(核上部分)1010包括与诸如存储器1075和/或图形器件1080之类的其它器件进行对接的一个或超过一个控制器。通常将包括互连和用于与此类设备对接的控制器的配置称为核上(或非核配置)。作为示例,片上接口1010包括用于片上通信的环互连和用于片外通信的高速串行点对点链路1005。然而,在soc环境中,可将诸如网络接口、协处理器、存储器1075、图形处理器1080以及任何其他已知计算机设备/接口之类的甚至更多设备集成到单个管芯或集成电路上,以提供具有高功能和低功耗的小形状因子。

在一个实施例中,处理器1000能够执行编译器、优化和/或转换器代码1077以编译、转换和/或优化应用代码1076,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个级和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。

更大的编译器通常包括多个级,但多数时候这些级被包括在两个一般级中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它操作的引用可在编译器的上述级或运行中的任一个以及任何其它已知的级或运行中进行。作为说明性示例,编译器可能在编译的一个或超过一个级中插入操作、调用、函数等等,诸如在编译的前端级插入调用/操作,然后在转换级期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。

与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。

现在参考图11,示出了多核处理器的实施例的框图。如图11的实施例中所示,处理器1100包括多个域。具体而言,核域1130包括多个核1130a-1130n,图形域1160包括具有媒体引擎1165的一个或超过一个图形引擎,以及系统代理与1110。

在各个实施例中,系统代理域1110处理功率控制事件和功率管理,使得域1130和1160的各个单元(例如核和/或图形引擎)是独立可控的,以根据给定单元中发生的活动(或不活动)在适当的功率模式/水平下操作(例如活动、加速、睡眠、休眠、深度睡眠或其它高级配置电源接口类似的状态)。域1130和1160中的每一个可在不同的电压和/或功率下操作,并且域中的各个单元各自可能在独立的频率和电压下操作。注意,虽然仅以三个域示出,但是会理解,本发明的范围不限于这方面,并且附加的域可存在于其他实施例中。

如所示,每个核1130除各种执行单元和附加的处理元件之外,还包括多个低级高速缓存。在此,各个核彼此耦合并且耦合至由末级高速缓存(llc)的多个单元或片1140a-1140n形成的共享的高速缓存存储器;这些llc通常包括存储和高速缓存控制器功能,并在核之间以及可能的图形引擎之间被共享。

如所见,环状互连1150将核耦合在一起,并通过各自位于核与llc片之间的耦合处的多个环分支1152a-1152n来提供核域1130、图形域1160以及系统代理电路1110之间的互连。如图11中可见,互连1150用于携带各种信息,包括地址信息、数据信息、确认信息、以及监听/无效信息。虽然示出了环状互连,但可利用任何已知的管芯上的互连或结构。作为说明性示例,可按照相似的方式来利用以上讨论的结构中的一些(例如另一管芯上互连、芯片上系统结构(osf)、高级微控制器总线架构(amba)互连、多维网状网结构、或其它已知的互连架构)。

如进一步所看到的那样,系统代理域1110可包括显示引擎1112,该显示引擎可提供对相关联的显示器的控制以及到它的接口。系统代理域1110可包括其它单元,诸如:集成存储器控制器1120,提供到系统存储器(例如利用多个dimm实现的dram)的接口;一致性逻辑1122,用于执行存储器一致性操作。可以存在多个接口以实现处理器与其他电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(dmi)1116接口以及一个或超过一个pcietm接口1114。显示引擎和这些接口典型地通过pcietm桥1118耦合至存储器。再进一步,为了提供诸如附加的处理器或其它电路之类的其它代理之间的通信,可提供一个或超过一个其它接口。

现在参考图12,示出了代表性核的框图;具体而言是诸如来自图11的核1130之类的核的后端的逻辑块。一般而言,图12中所示的结构包括无序处理器,该无序处理器具有前端单元1270,该前端单元用于取出传入指令、执行各种处理(例如高速缓存、解码、分支预测等等)并向无序(ooo)引擎1280传递指令/操作。ooo引擎1280对经解码的指令执行进一步处理。

具体地,在图12的实施例中,无序引擎1280包括分配单元1282,该分配单元用于接收来自前端单元1270的经解码的指令(可以是一个或超过一个微指令或微操作的形式),并将它们分配给诸如寄存器等等之类的适当的资源。接下来,将指令提供给预留站1284,该预留站预留并调度资源以在多个执行单元1286a-1286n中的一个执行单元上执行。可存在各样各样类型的执行单元,包括例如算术逻辑单元(alu)、加载和存储单元、向量处理单元(vpu)、浮点执行单元、等等。将来自这些不同执行单元的结果提供给重排序缓冲器(rob)1288,该重排序缓冲器获取未排序的结果并将它们返回至正确的程序顺序。

仍参考图12,注意前端单元1270和无序引擎1280耦合至存储器分层结构的不同层级。具体而言,所示指令级高速缓存1272耦合至中级高速缓存1276,该中级高速缓存又耦合至末级高速缓存1295。在一个实施例中,末级高速缓存1295在芯片上单元(有时称为非核)1290中实现。作为示例,单元1290与图11的系统代理1110相似。如上所讨论,非核1290与系统存储器1299通信,在所示实施例中,系统存储器1299通过edram实现。注意,无序引擎1280之内的各个执行单元1286与一级高速缓存1274通信,一级高速缓存也与中级高速缓存1276通信。注意,附加的核1230n-2-1230n可耦合至llc1295。尽管在图12的实施例以这样的高级别示出,然而要理解可能存在各种变型和附加组件。

转到图13,形成具有处理器的示例性计算机系统的框图,处理器包括用于执行指令的执行单元,其中示出了实现根据本发明的一个实施例的一个或超过一个特征的一个或超过一个互连。根据本发明,诸如根据在此所描述的实施例,系统1300包括诸如处理器1302之类的组件,该处理器用于使用包括逻辑的执行单元以执行算法来处理数据。系统1300代表基于pentiumiiitm、pentium4tm、xeontm、itanium、xscaletm和/或strongarmtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的pc、工程工作站、机顶盒等)。在一个实施例中,样本系统1300执行可从美国华盛顿州雷蒙德市的微软公司获得的windowstm操作系统的某个版本,不过也可使用其他操作系统(例如,unix和linux)、嵌入式软件和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。

实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个人数字助理(pda)、手持式pc。嵌入式应用可包括:微控制器、数字信号处理器(dsp)、芯片上系统、网络计算机(netpc)、机顶盒、网络中枢、广域网(wan)交换机、或可执行参照至少一个实施例的一个或超过一个指令的任何其他系统。

在该示出的实施例中,处理器1302包括用于实现算法的一个或超过一个执行单元1308,该算法用于执行至少一条指令。可在单处理器桌面或服务器系统的上下文中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统1300是“中枢”系统架构的示例。计算机系统1300包括用于处理数据信号的处理器1302。作为一个说明性示例,处理器1302包括例如,复杂指令集计算机(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现指令集的组合的处理器或任何其他处理器设备(诸如,数字信号处理器)。处理器1302耦合到处理器总线1310,该处理器总线1310在处理器1302与系统1300中的其他组件之间传输数据信号。系统1300的元件(例如,图形加速器1312、存储器控制器中枢1316、存储器1320、i/o控制器中枢1324、无线收发机1326、闪存bios1328、网络控制器1334、音频控制器1336、串行扩展端口1338、i/o控制器1340等)执行为熟悉本领域的人员所共知的它们的常规功能。

在一个实施例中,处理器1302包括第一级(l1)内部高速缓存存储器1304。取决于架构,处理器1302可以具有单个的内部高速缓存或多个层级的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。寄存器组1306用于将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块化(banked)寄存器、影子寄存器(shadowregister)、检查点寄存器、状态寄存器以及指令指针寄存器。

执行单元1308(包括执行整数和浮点操作的逻辑)也位于处理器1302中。在一个实施例中,处理器1302包括用于存储微代码的微代码(ucode)rom,该微代码在被执行时将执行用于某些宏指令的算法或处理复杂的场景。在此,微代码是潜在地可更新的,以便为处理器1302处理逻辑缺陷/修补。对于一个实施例,执行单元1308包括用于处理紧缩指令集1309的逻辑。通过将紧缩指令集109包括在通用处理器1302以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器1302中的紧缩数据来执行由许多多媒体应用程序使用的操作。如此,通过将处理器的数据总线的全宽度用于对紧缩数据执行操作,加速了许多多媒体应用并且更高效地执行了紧缩数据。这潜在地消除了跨处理器的数据总线来传输较小的数据单元以执行一个或超过一个操作(一次对一个数据元素执行)的需求。

执行单元1308的替换实施例也可以用于微控制器、嵌入式处理器、图形设备、dsp及其他类型的逻辑电路。系统1300包括存储器1320。存储器1320包括动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备或其他存储器设备。主存储器1320存储将由可由处理器1302执行的数据信号来表示的指令和/或数据。

值得注意的是,可在图13所示的一个或超过一个互连上利用本发明的任意上述特征或方面。例如,未示出的用于耦合处理器1302的内部单元的管芯上互连(odi)实现上述本发明的一个或超过一个方面。或者,本发明与处理器总线1310(例如其它已知的高性能计算互联)、到存储器1320的高带宽存储器路径1318、到图形加速器1312的点到点链路(例如,快速外围组件互连(pcie)兼容的结构)、控制器中枢互连1322、用于耦合其他所示部件的i/o或其它互连(例如,usb、pci、pcie)相关联。此类组件的一些示例是音频控制器1336、固件中枢(闪存bios)1328、无线收发机1326、数据存储设备1324、包括用户输入和键盘接口1342的传统i/o控制器1310、串行扩展端口1338(诸如,通用串行总线(usb))以及网络控制器1334。数据存储设备1324可以包括硬盘驱动器、软盘驱动器、cd-rom设备、闪存设备、或其他大容量存储设备。

现在参照图14,所示出的是根据本发明实施例的第二系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个都可以是处理器的某一版本。在一个实施例中,1452和1454是串行、点对点一致性互连结构(诸如高性能架构)的一部分。因此,可在qpi架构中实现本发明。

虽然仅以两个处理器1470、1480来示出,但应理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或超过一个附加处理器。

处理器1470和1480被示为分别包括集成存储器控制器单元1472和1482。处理器1470还包括点对点(p-p)接口1476和1478作为其总线控制器单元的部分;类似地,第二处理器1480包括p-p接口1486和1488。处理器1470、1480可以经由使用点对点(p-p)接口电路1478、1488的p-p接口1450来交换信息。如图14所示,imc1472和1482将处理器耦合到各自的存储器,即存储器1432和存储器1434,这些存储器可以是本地附连到各自处理器的主存储器的多个部分。

处理器1470、1480可各自使用点对点接口电路1476、1494、1486、1498经由各个p-p接口1452、1454与芯片组1490交换信息。芯片组还1490经由接口电路1492沿着高性能图形互连1439与高性能图形电路1438交换信息。

共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由p-p互连与这些处理器连接,使得如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。

芯片组1490可经由接口1496耦合至第一总线1414。在一个实施例中,第一总线1414可以是外围组件互连(pci)总线,或诸如pci快速总线或另一第三代i/o互连总线之类的总线,但本发明的范围并不受此限制。

如图14所示,各种i/o设备1414可连同总线桥1418一起耦合到第一总线1414,总线桥1418将第一总线1414耦合到第二总线1420。在一个实施例中,第二总线1420可以是低引脚计数(lpc)总线。各种设备可以被耦合至第二总线1420,在一个实施例中,这些设备包括例如键盘和/或鼠标1422、通信设备1427以及存储单元1428,存储单元1428诸如可包括指令/代码和数据1430的盘驱动器或其他大容量存储设备。此外,音频i/o1424可耦合至第二总线1420。值得注意的是,其他架构也是可能的,其中所包括的部件和互连架构不同。例如,代替图14的点对点架构,系统可以实现多分支总线或其他此类架构。

接下来参考图15,描绘了根据本发明的各实施例的芯片上系统(soc)设计的实施例。作为特定的说明性示例,soc1500被包括在用户装备(ue)中。在一个实施例中,ue是指由最终用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。ue常常连接到基站或节点,该基站或节点本质上潜在地对应于gsm网络中的移动站(ms)。

在此,soc1500包括2个核——1506和1507。核1506和1507可符合指令集架构,诸如,基于架构核tm的处理器、超微半导体公司(amd)处理器、基于mips的处理器、基于arm的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1506和1507耦合到与总线接口单元1509和l2高速缓存1511相关联的高速缓存控制装置1508,以便与系统1500的其他部分进行通信。互连1510包括可能实现所描述的公开的一个或超过一个方面的诸如iosf、amba或上文讨论的其他互连之类的芯片上互连。

接口1510可以提供到其他组件的通信信道,其他组件诸如,与订户标识模块(sim)卡对接的sim1530、用于保存供核1506和1507执行以初始化并引导soc1500的引导代码的引导rom1535、用于与外部存储器(例如,dram1560)对接的sdram控制器1540、用于与非易失性存储器(例如,闪存1565)对接的闪存控制器1545、用于与外围设备对接的外围控制装置1550(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1520和视频接口1525、用于执行图形相关的计算的gpu1515等。这些接口中的任一个可纳入本申请中描述的本发明的多个方面。

另外,系统可以包括用于通信的外围设备,诸如,蓝牙模块1570、3g调制解调器1575、gps1585以及wi-fi1585。注意,如上所述,ue包括用于通信的无线电装置。结果,这些外围通信模块不都是需要的。然而,在ue中,将包括用于外部通信的某种形式的无线电装置。

虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神和范围的所有此类修改和变型。

设计会经历多个级,从创新到模拟到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的一些级产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个级都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。

在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。

在一个实施例中,使用短语‘被配置成’指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或所确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但逻辑门“被配置成”向时钟提供启用信号不包括可提供1或0的每一潜在逻辑门。而是,该逻辑门是以在操作期间所输出的1或0用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语‘被配置成’不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。

此外,在一个实施例中,使用术语‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于指的是装置、逻辑、硬件、和/或元件的潜在状态,潜在该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。

如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母a。因此,值包括能保持在计算机系统中的信息的任何表示。

而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。

上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态ram(sram)或动态ram(dram)之类的随机存取存储器(ram);rom;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质相区别。

被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统的存储器(诸如,dram、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(cd-rom)、磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。

以下示例涉及根据本说明书的各实施例。一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:提供共享存储器控制器,所述共享存储器控制器用于服务来自多个独立节点的加载和存储操作以提供对共享存储器资源的访问,其中所述多个独立节点中的每一个被允许访问共享存储器资源的相应部分。

在至少一个示例中,所述加载和存储操作使用共享存储器链路协议被传达。

在至少一个示例中,所述共享存储器链路协议包括利用不同的互连协议的物理层逻辑的存储器访问协议。

在至少一个示例中,所述共享存储器链路协议实现存储器访问协议的数据的传输与互连协议的数据的传输之间的多路复用。

在至少一个示例中,所述互连协议的数据包括链路层数据和事务层数据中的至少一个。

在至少一个示例中,所述存储器访问协议包括smi3,且所述互连协议包括外围组件互连(pci)快速(pcie)。

在至少一个示例中,通过被编码成标识所述转换的同步头部来标识互连协议数据与存储器访问协议数据之间的转换。

在至少一个示例中,通过被编码成标识所述转换的数据分帧开始令牌来标识互连协议数据与存储器访问协议数据之间的转换。

在至少一个示例中,通过被编码成标识所述转换的互连协议的数据流分帧结束令牌来标识从互连协议数据到存储器访问协议数据的转换,并且通过所述存储器访问协议的链路层控制微片来标识从存储器访问协议数据到互连协议数据的转换。

在至少一个示例中,经由网络协议栈隧穿共享存储器链路协议。

在至少一个示例中,所述网络协议栈包括以太网。

在至少一个示例中,所述多个cpu节点中的第一cpu节点在第一板上,所述多个cpu节点中的第二cpu节点在与所述第一板不同的第二板上。

在至少一个示例中,所述多个cpu节点中的至少两个在同一设备上。

在至少一个示例中,所述共享存储器控制器进一步用于跟踪涉及所述加载和存储操作的存储器事务。

在至少一个示例中,所述共享存储器控制器进一步用于标识所述多个cpu节点中的特定cpu节点失效、标识所述特定cpu节点的存储器事务的部分、并丢弃所述特定cpu节点的存储器事务的所述部分同时保持所有其它存储器事务。

在至少一个示例中,所述共享存储器控制器进一步用于管理所述多个cpu节点对所述共享存储器资源中的数据的访问许可。

在至少一个示例中,所述多个cpu节点中的至少特定cpu节点被阻止访问所述共享存储器的至少第一部分,并且所述多个cpu节点中的第二cpu节点被允许访问所述第一部分。

在至少一个示例中,所述共享存储器控制器进一步用于管理所述共享存储器资源中的数据的目录信息。

在至少一个示例中,所述目录信息对于所述共享存储器资源中存储的多个数据资源中的每个数据资源,标识对相应数据资源的访问对于所述多个cpu节点中的一个cpu节点是排它的还是在所述多个cpu节点中的两个或超过两个节点之间共享。

在至少一个示例中,所述共享存储器控制器进一步用于协商对所述多个数据资源中的特定数据资源的访问的改变,其中所述改变包括将访问从共享改为排它和将访问从排它改为共享中的至少一个。

在至少一个示例中,所述共享存储器控制器耦合至管理至少一个其它共享存储器资源的至少一个另一共享存储器控制器,并且所述共享存储器控制器进一步用于将加载/存储操作传达至所述另一共享存储器控制器,以允许所述多个cpu节点访问所述其它共享存储器。

在至少一个示例中,所述共享存储器控制器进一步用于将所述加载和存储操作中的地址信息映射至所述共享存储器资源中存储的相应数据资源。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:将存储器访问请求发送至共享存储器控制器,其中所述存储器访问请求包括加载/存储操作且用于标识要包括在与共享存储器控制器相对应的共享存储器资源中的数据资源的地址,多个独立节点中的每一个被允许访问所述共享存储器资源的相应部分。

在至少一个示例中,所述存储器访问请求包括加载请求,且所述i/o逻辑进一步用于响应于所述加载请求接收与所述数据资源相对应的数据。

在至少一个示例中,所述存储器访问请求包括存储请求。

在至少一个示例中,所述存储器访问请求使用共享存储器链路协议被发送,并且所述共享存储器链路协议包括利用不同的互连协议的物理层逻辑的存储器访问协议。

在至少一个示例中,所述共享存储器链路协议实现存储器访问协议的数据的传输与互连协议的数据的传输之间的多路复用。

在至少一个示例中,通过以下的至少一个来标识互连协议数据与存储器访问协议数据之间的转换:(a)被编码成标识转换的同步头部;(b)被编码成标识转换的数据分帧开始令牌;以及(c)被编码成标识转换的数据流分帧结束令牌。

在至少一个示例中,所述存储器访问协议包括smi3,且所述互连协议包括基于pcie的协议。

在至少一个示例中,所述多个节点中的特定节点包括多个cpu插槽和本地存储器。在至少一个示例中,所述共享存储器资源在与所述特定节点分离的设备上。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:接收来自第一独立cpu节点的标识共享存储器中的特定数据的第一加载/存储消息;响应于第一加载/存储消息,向第一cpu节点提供对特定数据的访问;接收来自第二独立cpu节点的标识共享存储器中的特定数据的第二加载/存储消息;以及响应于第二加载/存储消息,向第二cpu存储器提供对特定数据的访问。

在至少一个示例中,使用共享存储器链路协议经由数据链路来接收第一和第二第一加载/存储消息中的每一个。

至少一些实施例可实现标识第一cpu节点被允许访问该特定数据,并标识第二cpu节点被允许访问该特定数据。

至少一些实施例可实现跟踪第一和第二cpu节点中的每一个的涉及共享存储器的事务。

至少一些实施例可提供标识特定数据的目录信息,其中该目录信息标识该特定数据是否处于共享的、未高速缓存的、或排它的状态。

在至少一个示例中,第一加载/存储消息通过第一地址来标识该特定数据,且第二加载/存储消息通过不同的第二地址来标识该特定数据。

至少一些实施例可实现将第一地址映射至该特定数据并将第二地址映射至该特定数据。

至少一些实施例可提供一种系统,该系统包括:第一节点,包括一个或超过一个处理器设备;与第一节点独立的第二节点,包括一个或超过一个处理器设备;以及共享存储器,通过加载/存储存储器访问协议对第一和第二节点中的每一个可访问。

在至少一个示例中,第一节点具有与第二节点独立的故障域。

在至少一个示例中,所述第一节点由第一操作系统控制,且所述第二节点由第二操作系统控制。

在至少一个示例中,所述加载/存储存储器访问协议被包括在共享存储器链路协议中,并且所述共享存储器链路协议在所述存储器访问协议与不同的互连协议之间切换。

在至少一个示例中,所述共享存储器控制器可服务来自所述第一和第二节点的加载和存储操作,并提供对所述共享存储器的访问。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上发送第一同步头部,其中第一同步头部被编码成标识从互连协议的数据向存储器访问协议的数据的转换;以及在该数据链路的通道上发送第二同步头部,其中该第二同步头部被编码成标识从存储器访问协议的数据向互连协议的数据的转换。

在至少一个示例中,每个同步头部标识同步头部之后的数据块的类型。

在至少一个示例中,每个数据块具有预定义长度。

在至少一个示例中,所述存储器访问协议包括基于smi3的协议。

在至少一个示例中,互连协议包括基于pcie的基于协议的协议。

在至少一个示例中,每个同步头部根据128b/130b编码被编码。

在至少一个示例中,第二同步头部指示互连协议的数据块,且第三同步头部将在该数据链路的通道上被发送,以指示该互连协议的有序集块。

在至少一个示例中,利用通道上的交替值来编码第一同步头部,且利用所有通道上的相同值来编码第二同步头部。

在至少一个示例中,存储器访问协议的数据包括链路层数据,且互连协议的数据包括事务层和数据链路层分组中的一个。

在至少一个示例中,根据互连协议来定义同步头部。

在至少一个示例中,存储器访问协议支持加载/存储存储器访问消息收发。

在至少一个示例中,存储器访问协议数据包括用于访问共享存储器资源的存储器访问消息收发,其中多个独立节点中的每一个被允许访问共享存储器资源的相应部分。

在至少一个示例中,多个独立节点中的每一个具有独立的故障域。

在至少一个示例中,数据链路包括至少四个通道。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上接收第一同步头部,其中第一同步头部利用第一编码被编码;根据第一同步头部的第一编码来标识从互连协议的数据向存储器访问协议的数据的转换;在该数据链路的通道上接收第二同步头部,其中该第二同步头部利用第二编码被编码;以及根据第二同步头部的第二编码来标识从存储器访问协议的数据向互连协议的数据的转换。

在至少一个示例中,每个同步头部标识同步头部之后的数据块的类型。

在至少一个示例中,互连协议包括基于pcie的协议。

在至少一个示例中,所述存储器访问协议包括基于smi3的协议。

在至少一个示例中,同步头部根据128b/130b编码被编码。

在至少一个示例中,第一编码包括在数据链路的通道上交替的01b和10b的值。

在至少一个示例中,存储器访问协议的数据包括加载/存储存储器访问消息。

在至少一个示例中,存储器访问消息包括用于访问共享存储器资源的消息,其中系统中的多个独立节点中的每一个被允许访问共享存储器资源的相应部分。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上接收第一同步头部,其中第一同步头部利用第一编码被编码;根据第一同步头部的第一编码来标识从互连协议的数据向存储器访问协议的数据的转换;处理存储器访问协议的数据;在该数据链路的通道上接收第二同步头部,其中该第二同步头部利用第二编码被编码;以及根据第二同步头部的第二编码来标识从存储器访问协议的数据向互连协议的数据的转换。

在至少一个示例中,互连协议包括基于pcie的协议,且存储器访问协议基于smi3。

在至少一个示例中,同步头部根据pcie。

在至少一个示例中,存储器访问协议的数据被处理以服务被包括在存储器访问协议的数据中的存储器访问请求。

在至少一个示例中,存储器访问请求是对在多个独立cpu节点之间共享的共享存储器资源的请求。

在至少一个示例中,所述存储器访问请求包括加载/存储消息。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上发送第一数据开始分帧令牌,其中第一数据开始分帧令牌被编码成标识从互连协议的数据向存储器访问协议的数据的转换;以及在该数据链路的通道上发送第二数据开始分帧令牌,其中第二数据开始分帧令牌被编码成标识从存储器访问协议的数据向互连协议的数据的转换。

在至少一个示例中,第一数据开始分帧令牌包括经修改的pciestp分帧令牌,且第二数据开始分帧令牌包括pciestp分帧令牌。

在至少一个示例中,每个数据开始分帧令牌包括长度字段。

在至少一个示例中,在第一数据开始分帧令牌中通过第一数据开始分帧令牌的长度字段中的值来标识从互连协议的数据到存储器访问协议的数据的转换。

在至少一个示例中,在由第一数据开始分帧令牌的长度字段定义的窗口中发送存储器访问协议的数据。

在至少一个示例中,所述存储器访问协议基于smi3。

在至少一个示例中,互连协议包括基于pcie的协议。

在至少一个示例中,存储器访问协议的数据包括链路层数据,且互连协议的数据包括事务层和数据链路层分组中的一个。

在至少一个示例中,物理层逻辑进一步用于发送存储器访问协议的数据,且存储器访问协议的数据包括加载/存储存储器访问消息。

在至少一个示例中,存储器访问协议数据包括用于访问共享存储器资源的存储器访问消息,其中多个独立节点中的每一个被允许访问共享存储器资源的相应部分。

在至少一个示例中,多个独立节点中的每一个具有独立的故障域。

在至少一个示例中,数据链路包括一个或超过一个通道。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上接收第一数据开始分帧令牌;根据第一数据开始分帧令牌来标识存储器访问协议的数据的到达;在该数据链路的通道上接收第二数据开始分帧令牌,其中第二数据开始分帧令牌与第一数据开始分帧令牌不同;以及根据第二数据开始分帧令牌来标识互连协议的数据的到达。

在至少一个示例中,第一数据开始分帧令牌包括经修改的pciestp分帧令牌,且第二数据开始分帧令牌包括pciestp分帧令牌。

在至少一个示例中,每个数据开始分帧令牌包括长度字段。

在至少一个示例中,在第一数据开始分帧令牌中通过第一数据开始分帧令牌的长度字段中的值来标识从互连协议的数据到存储器访问协议的数据的转换。

在至少一个示例中,所述存储器访问协议基于smi3,且所述互连协议包括基于pcie的协议。

在至少一个示例中,接收所述存储器访问协议的数据并且

接收互连协议的数据。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上发送第一数据流结束分帧令牌,其中第一数据流结束分帧令牌被编码成标识从互连协议向存储器访问协议的转换;在向存储器访问协议的转换之后发送存储器访问协议数据;以及发送存储器访问协议的链路层控制数据以标识从存储器访问协议向互连协议的转换。

在至少一个示例中,存储器访问协议数据在数据链路上被发送,直到链路层控制数据被发送。

在至少一个示例中,向存储器访问协议的转换导致从互连协议逻辑处理该数据链路上的数据到存储器访问协议逻辑处理该数据链路上的数据。

在至少一个示例中,所述存储器访问协议包括基于smi3的协议。

在至少一个示例中,互连协议包括基于pcie的协议。

在至少一个示例中,第一数据流结束分帧令牌包括经修改的pcieeds分帧令牌。

在至少一个示例中,发送pcieeds以指示一组pcie事务层分组的结束和pcie有序集块的到达。

在至少一个示例中,存储器访问协议的数据包括链路层数据,且互连协议的数据包括事务层和数据链路层分组中的一个。

在至少一个示例中,存储器访问协议的数据被发送且包括加载/存储存储器访问消息。

在至少一个示例中,存储器访问协议数据包括用于访问共享存储器资源的存储器访问消息,其中多个独立节点中的每一个被允许访问共享存储器资源的相应部分。

在至少一个示例中,多个独立节点中的每一个具有独立的故障域。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在数据链路的通道上接收第一数据流结束分帧令牌,其中第一数据流结束分帧令牌被编码成标识从互连协议向存储器访问协议的转换;基于第一数据流结束分帧令牌向使用存储器访问协议的链路层逻辑转换;接收存储器访问协议链路层数据;接收存储器访问协议的链路层控制数据,以标识从存储器访问协议向互连协议的转换;以及基于链路层控制数据向使用互连协议的链路层逻辑转换。

在至少一个示例中,所述存储器访问协议基于smi3。

在至少一个示例中,互连协议包括基于pcie的协议。

在至少一个示例中,第一数据流结束分帧令牌包括经修改的pcieeds分帧令牌。

在至少一个示例中,存储器访问协议的数据包括链路层数据,且互连协议的数据包括事务层和数据链路层分组中的一个。

在至少一个示例中,存储器访问协议的数据包括加载/存储存储器访问消息。

本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。如此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或超过一个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。

在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,应当将说明书和附图应认为是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1