CN108337910A - 用于软件定义的互连交换机的架构 - Google Patents

用于软件定义的互连交换机的架构 Download PDF

Info

Publication number
CN108337910A
CN108337910A CN201680068242.1A CN201680068242A CN108337910A CN 108337910 A CN108337910 A CN 108337910A CN 201680068242 A CN201680068242 A CN 201680068242A CN 108337910 A CN108337910 A CN 108337910A
Authority
CN
China
Prior art keywords
interchanger
host
virtual
control host
specific
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680068242.1A
Other languages
English (en)
Other versions
CN108337910B (zh
Inventor
D.J.哈里曼
M.库尔卡尼
A.G.佩特
S.O.施塔利
M.瓦格
D.达斯沙尔马
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202211334256.7A priority Critical patent/CN115687234A/zh
Publication of CN108337910A publication Critical patent/CN108337910A/zh
Application granted granted Critical
Publication of CN108337910B publication Critical patent/CN108337910B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

提供了一种互连交换机,包含可执行以促进基于外围组件互连高速(PCIe)的互连的交换逻辑,并且进一步包含嵌入在交换机中以提供一个或多个增强路由能力的控制主机。控制主机包含处理器装置、存储器和通过处理器装置可执行的软件,其用于处理在交换机的一个或多个端口处接收的业务以重定向至少一部分业务来提供一个或多个增强路由能力。

Description

用于软件定义的互连交换机的架构
相关申请的交叉参考
此申请要求2015年12月22日申请的题为“用于软件定义的互连交换机的架构(ARCHITECTURE FOR SOFTWARE DEFINED INTERCONNECT SWITCH)”的美国非临时专利申请No.14/978,179的优先权利益,该申请通过参考其全部而结合于本文中。
技术领域
此公开涉及计算系统,并且尤其(而非排他地)涉及互连交换机组构。
背景技术
半导体工艺和逻辑设计中的进步已经准许可在集成电路器件上存在的逻辑量的增大。作为推论,计算机系统配置已经从系统中的单个或多个集成电路演进到在各个集成电路上存在的多核、多硬件线程和多逻辑处理器,以及集成在此类处理器内的其它接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可包含任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。
作为将更多的处理能力装配到更小的封装中的更大能力的结果,更小的计算装置已经普遍增加。智能电话、平板电脑、超薄笔记本以及其它用户设备已经成指数型增长。然而,这些更小的装置依赖于用于超过形状因子的复杂处理和数据存储的服务器。因而,在高性能计算市场(即,服务器空间)中的需求也已经增大。比如,在现代服务器中,通常不仅存在具有多核的单个处理器,而且存在多个物理处理器(也称为多个套接口)以增大计算能力。但是随着处理能力连同计算系统中装置数量的增长,套接口与其它装置之间的通信变得更加关键。
实际上,互连已经从首要处置电气通信的更传统的多点下传总线发展到促进快速通信的完全成熟的互连架构。可惜,作为对于用于以甚至更高的速率消耗的将来处理器的需求,对应的需求被置于现有互连架构的能力上。
附图说明
图1图示了包含互连架构的计算系统的实施例。
图2图示了包含分层堆栈的互连架构的实施例。
图3图示了要在互连架构内接收或生成的分组或请求的实施例。
图4图示了对于互连架构的传送器和接收器对的实施例。
图5图示了增强互连交换机(EIS)的示例实施例。
图6A-6B图示了利用一个或多个增强互连交换机的示例拓扑。
图7A-7C图示了由示例增强互连交换机启用的能力。
图8A-8B图示了由示例增强互连交换机启用的能力。
图9图示了增强互连交换机(EIS)的示例实施例。
图10图示了示例条目时间戳(entry timestamp)结构。
图11图示了EIS的控制主机的示例数据转移环(DT)。
图12图示了示例DTR的示例数据环缓冲器(DRB)结构。
图13图示了在EIS中使用的示例门铃寄存器。
图14图示了在EIS中使用的示例数据结构的表示。
图15图示了对于包含多核处理器的计算系统的框图的实施例。
图16图示了用于计算系统的框图的另一实施例。
具体实施方式
在如下描述中,阐述了众多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等示例,以便提供本发明的透彻理解。然而,本领域技术人员将明白,不需要采用这些特定细节来实践本发明。在其它实例中,未详细描述众所周知的组件和方法,诸如特定和备选处理器架构、用于所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、用代码的算法的特定表述、特定掉电和门控技术/逻辑以及计算机系统的其它特定操作细节,以便避免不必要地使本发明模糊不清。
尽管可参考特定集成电路中(诸如在计算平台或微处理器中)的能量节约和能量高效来描述如下实施例,但其它实施例可应用于其它类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,其也可受益于更好的能量高效和能量节约。例如,所公开的实施例不限于台式计算机系统或Ultrabooks™。并且,还可用在其它装置(诸如手持装置、平板电脑、其它薄笔记本、片上系统(SoC)装置和嵌入式应用)中。手持装置的一些示例包含蜂窝电话、因特网协议装置、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包含微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可执行下面教导的功能和操作的任何其它系统。而且,本文描述的设备、方法和系统不限于物理计算装置,而且还可涉及用于能量节约和高效的软件优化。
随着计算系统进步,本文的组件变得更复杂了。因此,在组件之间通信和耦合的互连架构在复杂性上也正在增加,以确保针对最优组件操作而满足带宽要求。更进一步,不同市场分部要求互连架构的不同方面,以适合市场的需要。例如,服务器要求更高性能,而移动生态系统有时能够为了能量节约而牺牲总体性能。然而,大多数组构的突出目的是为最大能量节约提供最高可能的性能。下面,论述若干互连,其将潜在地受益于本文描述的发明的方面。
一个互连组构架构包含外围组件互连(PCI)高速(PCIe)架构。PCIe的首要目标是使来自不同供应商的组件和装置能够在开放架构中互操作,其跨越多个市场分部;客户端(台式和移动)、服务器(标准和企业)以及嵌入式和通信装置。PCI高速是为各种各样将来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性(诸如其使用模型、加载-存储架构和软件接口)已经通过其修正来维持,而先前的并行总线实现已经由高度可缩放、全串行接口替代。PCI高速的较近版本利用点对点互连、基于交换机的技术和分包化协议中的进步来递送新级别的性能和特征。功率管理、服务质量(QoS)、热插拔/热调换支持、数据完整性和错误处置属于由PCI高速支持的其中一些先进特征当中。
参考图1,图示了由互连一组组件的点对点链路构成的组构的实施例。系统100包含耦合到控制器集线器115的系统存储器110和处理器105。处理器105包含任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或者其它处理器。处理器105通过前端总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB 106是如下面所描述的串行点对点互连。在另一实施例中,链路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/DVD ROM、监控器、打印机、鼠标、键盘、路由器、便携式存储装置、火线装置、通用串行总线(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和131)可被表示为通信协议堆栈200。作为通信协议堆栈的表示也可被称为实现/包含协议堆栈的模块或接口。
PCI高速使用分组在组件之间传递信息。分组被形成在事务层205和数据链路层210中,以将信息从传送组件运载到接收组件。当传送的分组流过其它层时,它们用对于在那些层处置分组所必需的附加信息进行扩展。在接收侧进行相反过程,并且分组从它们的物理层220表示变换成数据链路层210表示,并且最后(对于事务层分组)变换成能由接收装置的事务层205处理的形式。
事务层
在一个实施例中,事务层205将提供装置的处理核与互连架构(诸如数据链路层210与物理层220)之间的接口。在这方面,事务层205的首要责任是分组的组装和拆解(即,事务层分组或TLP)。事务层205通常管理对于TLP的信用基础流控制。PCIe实现分离事务,即,带有按时间分开的请求和响应的事务,其允许链路携带其它业务,同时目标装置搜集针对响应的数据。
此外,PCIe利用基于信用的流控制。在此方案中,装置针对事务层205中的每个接收缓冲器都通告初始信用量。在链路相对端的外部装置(诸如图1中的控制器集线器115),对由每个TLP消耗的信用的数量进行计数。如果事务不超过信用极限,则可传送事务。在接收到响应时,恢复信用量。信用方案的优点是,信用返回的等待时间不影响性能(倘若没遇到信用极限)。
在一个实施例中,四个事务地址空间包含配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包含其中读请求和写请求中的一个或多个,以来往于存储器映射的位置转移数据。在一个实施例中,存储器空间事务能够使用两个不同地址格式,例如短地址格式(诸如32位地址)或长地址格式(诸如64位地址)。配置空间事务用于访问PCIe装置的配置空间。到配置空间的事务包含读请求和写请求。消息事务被定义成支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层205组装分组报头/有效载荷156。用于当前分组报头/有效载荷的格式可在PCIe规范网站的PCIe规范中找到。
快速参考图3,图示了PCIe事务描述符的实施例。在一个实施例中,事务描述符300是用于运载事务信息的机制。在这方面,事务描述符300支持系统中的事务标识。其它潜在使用包含跟踪事务与信道的关联以及默认事务排序的修改。
事务描述符300包含全局标识符字段302、属性字段304和信道标识符字段306。在所图示的示例中,全局标识符字段302被描绘为包括局部事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未解决请求都是唯一的。
根据一个实现,局部事务标识符字段308是由请求代理生成的字段,并且它对于要求针对该请求代理的完成的所有未解决请求都是唯一的。更进一步,在此示例中,源标识符310唯一标识PCIe层级内的请求方代理。相应地,与源ID 310一起,局部事务标识符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(即标识号或分组号)计算并应用检错码(即CRC 212),并将修改的TLP提交到物理层220以便跨物理到外部装置的传送。
物理层
在一个实施例中,物理层220包含逻辑子块221和电气子块222以向外部装置物理传送分组。在此,逻辑子块221负责物理层221的“数字”功能。在这方面,逻辑子块包含传送部分,其用于准备传出信息以便由物理子块222传送;以及接收部分,其用于标识并准备接收的信息,之后将它传递到链路层210。
物理块222包含传送器和接收器。逻辑子块221给传送器提供符号,传送器将符号串行化并传送到外部装置上。从外部装置给接收器提供串行化的符号,并接收器将接收的信号变换成位流。位流被去串行化并提供给逻辑子块221。在一个实施例中,采用8b/10b传送代码,在其中传送/接收十位符号。在此,使用特殊符号来用帧223使分组成帧。此外,在一个示例中,接收器还提供从传入串行流恢复的符号时钟。
如上所述,尽管事务层205、链路层210和物理层220参考PCIe协议堆栈的特定实施例论述,但分层协议堆栈不限于此。实际上,可包含/实现任何分层协议。作为示例,表示为分层协议的端口/接口包含:(1)第一层,组装分组,即,事务层;第二层,使分组序列化,即,链路层;以及第三层,传送分组,即,物理层。作为特定示例,利用公共标准接口(CSI)分层协议。
接下来参考图4,图示了PCIe串行点对点组构的实施例。尽管图示了PCIe串行点对点链路的实施例,但串行点对点链路不限于此,因为它包含用于传送串行数据的任何传送路径。在所示的实施例中,基本PCIe链路包含两个低电压差分驱动的信号对:传送对406/411和接收对412/407。相应地,装置405包含将数据传送到装置410的传送逻辑406和从装置410接收数据的接收逻辑407。换言之,两个传送路径(即,路径416和417)和两个接收路径(即,路径418和419)被包含在PCIe链路中。
传送路径指的是用于传送数据的任何路径,诸如传送线、铜线、光学线、无线通信信道、红外通信链路或其它通信路径。两个装置(诸如装置405和装置410)之间的连接被称为链路,诸如链路415。链路可支持一条路线——每条路线表示一组差分信号对(一对用于传送,一对用于接收)。为了缩放带宽,链路可聚合由xN标示的多条路线,其中N是任何支持的链路带宽,诸如1、2、4、8、12、16、32、64或更宽。
差分对指的是传送差分信号的两个传送路径(诸如线路416和417)。作为示例,当线路416从低电压等级切换到高电压等级(即,上升沿)时,线路417从高逻辑等级驱动到低逻辑等级(即,下降沿)。差分信号潜在地演示了更好的电气特性,诸如更好的信号完整性,即,交叉耦合、电压过冲(overshoot)/下冲(undershoot)、振铃(ringing)等。这考虑了更好的定时窗口,其实现了更快的传送频率。
由于PCI高速(PCIe)的初始开发,要认识到,PCI所支持的有限拓扑可能被扩展成具有更宽范围的可允许拓扑的互连组构。然而,对于利用PCIe的期望特征并扩展协议以实现更广区域连网的系统的先前尝试已经大大失败了(在实现上或者在采纳上)。实际上,先前解决方案尝试进行过多,在于它们对原生PCIe架构,以及从而PCIe的未确定的一些关键特征进行了太多改变。在本文描述的实现中,能提供用于PCIe(或者类似互连协议)的增强互连交换机(或EIS),其在由PCIe定义的底层机制(例如PCIe交换机、热插拔、10虚拟化等)上构建,以提供用于灵活资源管理和处理器间通信的基础设施,并且由此实现用于PCIe的各种各样的扩展用例。
比如,使用EIS(或EIS的网络)实现的PCIe拓扑可以不封装PCIe TLP或者为其建立隧道(tunnel),而是相反地在TLP它们本身上执行极少的处理,以重新映射地址(存储器、IO和总线/装置/功能,作为适合于TLP类型)。通过实现较少的管理开销以配置组构,并且在现有输入-输出存储器管理单元(IOMMU)上构建PCIe的实现(诸如用于直接I/O的虚拟化技术(VT-d)),此类存储器/存储器路由可能是优选的。拓扑也能通过一个或多个EIS实现,它们未定义新寻址空间,诸如组构特定的路由空间。定义此类空间的潜在好处超过了不得不管理此类新地址空间并维持其与现有PCIe地址空间的正确关系的低效。另外,流控制或拥塞管理能够是先行的(在给定与实现和维持它们关联的成本的情况下)。在一些实现中,基于EIS的拓扑也可以不执行(或甚至在一些情况下不允许)PCIe TLP的分段和重装配(SAR)(它们相反采取它们的“原生”形式路由),其确保可取决于特定平台行为的硬件/软件机制继续工作。另外,基于EIS的拓扑能利用原生PCIe链路类型,而不是定义新链路类型,允许鲁棒扩展的拓扑,而无需(重新)定义链路建立、管理等。
基于EIS的系统拓扑能使实现灵活性能够提供从非常有限的一组能力到特征丰富的一组能力的任何能力。相应地,EIS的实现能实现优化的成本/功率/性能/特征平衡。实际上,而不是替代连网拓扑,诸如无限带、以太网或者其它类似技术(以及通过此类网络优先的技术引入的高成本性能惩罚),类似的系统解决方案能基于PCIe开发,同时通过避免基于主机适配器的或NIC的业务路由并且容忍相对较低级别的隔离、组构管理以及通过PCIe实现的其它特征来提高性能。
基于EIS的架构能定义建构在PCIe工业规定的能力上的一组机制来实现采用基线PCIe不可能实现的各种能力。实际上,主机和装置的“组构”能通过一个或多个EIS互连。转到图5,示出了简化框图500,图示了增强互连交换机(EIS)505的表示。EIS能实现为增强PCIe交换机,包含专用控制主机处理器系统(或控制主机)510,用于在交换机或组构级别增强逻辑处实现,以实现除使用原生PCIe和原生PCIe交换机可实现的之外的附加能力。EIS能进一步包含一个或多个上游端口(例如515a-c)、一个或多个下游端口(例如520a-c)和基于PCIe的分组路由逻辑525。在一些实现中,EIS能托管考虑到其中零下游端口的一些用例的虚拟装置。在一些实现中,能额外地给每个端口(例如515a-c、520a-c)提供I/O逻辑块(例如530a-f)(例如至少部分地在硬件电路中实现),提供如地址转化和配置总线/装置/功能(BDF)转化以及页面和子页面管理及其它特征这样的增强。另外,在一些实现中,EIS可选地能包含中央数据移动引擎(DMA)535以支持数据移动(例如在支持主机对主机通信的拓扑中使用),并且进一步支持系统的改进性能和/或效率。
除了分组路由能力之外,通过控制主机510还能给每个EIS 505提供优化某些操作(诸如地址转化)的硬件和专用计算能力,控制主机510可被实现为集成在以片上系统(SoC)形式的架构内的常规独立服务器或专用微处理器。控制主机510能在如下某种意义上集成或嵌入:它对于通用使用(例如由其它系统资源,诸如其它主机或装置)是不可用的,但具有它自己的存储器,并且直接在EIS 505上运行专用软件堆栈以确保鲁棒性、性能和安全性。
如在其它PCIe系统中,能在“主机”(CPU或根复合体)与装置之间进行区分。另外,传统PCIe主机在此公开中有时也能被称为“工作者主机”以将它们与EIS专用控制主机510区分开。EIS 505的操作配置能由其控制主机510管理。在采用多个EIS(每个都有它自己的控制主机)来实现组构的情况下,则能提供组构管理接口以管理多个EIS的组合操作配置(除了其它示例之外)。在图5的示例中,能给控制主机510提供交换机/控制主机接口(SCHI)540,以促进控制主机510与EIS的剩余组件之间的接口。SCHI能够是仅暴露于控制主机510的类型0装置。作为实现选项,上游端口能被视为逻辑实体,在控制主机是分立的情况下,它也可与物理端口关联,或者在控制主机被集成在与剩余EIS相同的硅封装上的情况下,它可以仅仅是(用于提供一致的软件视图的)逻辑构造(除了其它示例实现之外)。
转到图6A,示出了简化框图600a,图示了示例EIS 505的多个主机605a-c(在上游端口处)和多个装置610a-e(在下游端口处)的连接。代替到EIS的下游(或上游)端口的直接连接,一些装置(例如610d-e)可通过另一附加PCIe交换机615(诸如传统非EIS PCIe交换机)(其直接连接到EIS 505的端口)连接到EIS。另外,如在图6B的简化框图600b中所示出的,多个EIS(例如505a-d)可连网到一起(每个都具有它自己的控制主机(CH))以充当包含主机605a-c和装置610a-e的系统的互连组构。在一些实现中,能给EIS提供促进多层EIS网络的管理能力,比如通过一致地协调多个EIS的配置(除其它任务之外)。
在一些情况下,装置(例如610a-e)能各自落入三个装置类别之一:存储装置、连网接口(例如网络接口控制器(NIC))和计算元件(例如图形处理单元、协处理器等)。存储装置能够是一种类型的存储装置,包含非易失性存储器(NVM)和NVM高速(NVMe)主机控制器、直接映射的存储装置和其它计算机存储器存储装置(包含存储器控制器和对应存储器)。网络接口装置能提供到其它网络和计算组件的网络连接。NIC装置比如能利用不同通信协议或技术(诸如以太网、无限带或光纤信道网络以及其它示例)将EIS启用的PCIe网络(例如,诸如在图6A-6B中示出的)连接到另一网络。计算元件装置能够是变化能力和处理能力的计算处理器,包含诸如Xeon PHI处理器的装置、现场可编程门阵列(FPGA)装置、图形处理器(GP)装置,等等。实际上,计算元件尽管被视为装置,但在一些实施例中,能在功能性类似于主机(例如605a-c)。EIS构建的组构能潜在地灵活地支持主机和装置的任何组合,以及利用此类组合的复杂拓扑。
控制主机510能执行(本地存储在控制主机的软件或固件中的)代码以提供用于包含EIS 505的拓扑的增强交换服务。此类服务的示例比如下面在图7A-8B的示例中描述了,并且可包含装置向主机的动态指配、装置的虚拟化(它们对主机是透明的)(除了其它特征之外)。
在一些情况下,在EIS 505处接收的数据可被提供给控制主机510,以便按照由控 制主机的逻辑提供的服务进行处理。在其它情况下,能接收涉及传统或较低端路由的分组, 允许控制主机先行处理这些分组。比如,在EIS端口(例如515a-c、520a-c)处接收的TLP能被 过滤,以确定它们是否能传递通过EIS交换逻辑(即在EIS外面)(诸如通过地址/BDF转化逻 辑(例如530a-f)),或者它们是否应该首先由控制主机510处置。此类TLP过滤能按端口进行 控制,其中表1中示出了一个示例的粒度。比如,取决于TLP类型,以及它是在上游端口还是 下游端口处接收,分组能传递通过(“PT”),而无需由控制主机进行处置,或者传递到控制主 机510以进行处理。
TLP 上游端口 下游端口
MRd, MRdLk, MWr, IORd, IOWr 通过(PT)/发送到控制主机(CH) PT/CH
CfgRd0, CfgWr0, CfgRd1, CfgWr1, Msg, MsgD CH CH
Cp1, Cp1D PT/CH PT/CH
Cp1Lk, Cp1DLk CH PT/CH
FetchAdd, Swap, CAS PT/CH PT/CH
LPrfx, Eprfx <基于TLP类型> <基于TLP类型>
表1:TLP过滤
如在表中所指示的,在一个示例中,在所有操作模式中,包含配置请求(例如CfgRdO、CfgWrO等)和消息(例如MRd、MWr等)的PCIe TLP被过滤以定向至控制主机510,其基于EIS的操作配置生成适当响应。比如,对于到EIS寄存器的配置请求,只读寄存器内容在控制主机存储器中保持最新状态,并且中断服务例程(ISR)(例如实现经由中断直接触发的动作(与例如通过延迟规程调用的排队等候以进行后面执行的随后处理相对))立即生成并且入队以便传送完成(例如具有2到4μs的目标响应等待时间)。RW/RW1C寄存器写可导致包含接收的TLP和元数据的工作队列条目(例如,其中控制主机给最大努力的服务提供小于50μs的目标响应等待时间)。对于通过EIS的配置请求,控制主机能应用它自己的请求方ID,将目标BDF从对应的工作者主机的BDF空间转化到控制主机的BDF空间,并且然后将该请求入队以便传送出适当端口。反向转化可应用于该完成。在一些实现中,在EIS 505处接收的所有消息都通过控制主机510路由。对于不影响EIS的消息(例如涉及由控制主机的“仅转化”处置),控制主机应用它自己的请求方ID,将目标BDF从特定的工作者主机的BDF空间转化到控制主机的BDF空间,然后将该请求入队以便传送出适当端口。对于影响EIS的消息,控制主机能调用如在表2中所描述的以及如在下面更详细描述的适当处置机制。
表2:EIS处置机制
通过提供相对高的性能专用控制主机,EIS组构比传统方法更好地能够支持灵活的虚拟化模型。比如,EIS通过控制主机逻辑能支持如跨多主机的非单根I/O虚拟化(SR-IOV)装置的虚拟化的此类用例,包含使用虚拟化来有效地将一种类型的装置变形成另一种(例如一种类型的存储控制器变形成另一类型),如由其中一个或多个主机所视察。提供控制主机(例如610)作为嵌入在PCIe交换机中的高性能元件由此能允许在软件中更广泛地并且更有效地卸载虚拟化。
对于潜在的任何配置,EIS控制主机能定义在其中存在装置(即,装置使用其进行寻址)的BDF空间以及相应存储器。例如,控制主机能针对热插拔、功率管理、错误报告、虚拟化、访问控制等使用定义的PCIe交换机机制来暴露装置。控制主机能进一步确定来自装置(例如610a-e)的哪些指示被传递通过关联的工作者主机(例如605a-c)以及它们如何传递通过的,其中未修改或者带有通过控制主机的修改。此外,控制主机在一些情况下能独立于装置状态或动作而生成到工作者主机的通知,例如,指示当装置不得不从工作者主机突然移除时的意外断连(除其它警告或事件之外)。
如所指示的,所有EIS下游端口在其中操作的分段/BDF空间和PCI存储器能由对应的控制主机控制和定义。EIS中的硬件和软件机制可用于提供地址空间的控制主机的视图与给定工作者主机(例如605a-c)的视图之间的1对1映射。实际上,这些映射可以是严格1对1的,使得没有信息的混叠或丢失(例如诸如在误差报告中等)。一般而言,EIS能通过控制主机重定向在EIS处接收的分组。这能涉及从在分组(例如TLP)中标识的目的地标识由控制主机处理器(和软件)控制和管理的相应指配或虚拟化的装置或主机,并且促使分组被相应地被处置(和路由)。从该目的地,EIS能确定控制主机是否将提供与TLP的路由有关的服务。在一些情况下,对于具体TLP,将不利用控制主机的逻辑和先进功能性,而对于其它TLP(以及对应目的地),使用控制主机是关键的。实际上,控制主机能响应于接收到具体TLP而重新格式化或者生成附加TLP以转发到EIS的一个或多个端口(包含连接到由控制主机实例化的虚拟装置的虚拟端口)(除其它示例之外)。控制主机能通过由控制主机逻辑支持的增强能力实现各种各样用例和事务。
转到图7A-7C,示出了简化框图700a-c,图示了由基于EIS的组构启用的示例能力。比如,如在图7A的示例中所表示的,能利用EIS的逻辑定义和支持简单指配能力。EIS 505的简单指配能力能将PCIe交换机的定义扩展成支持装置硬件到各个主机的分配。比如,连接到EIS的下游端口的每个装置(610a-d)能被指配给连接到EIS上游端口的单个相应主机(605a-c)。相应地,当主机通过简单指配被指配了装置时,主机(605a)的视图看起来是将该主机(605a)连接到其指配的装置(例如610a)的常规PCIe交换机。主机605a可能不知晓其它主机(例如605b-c)或其它装置(例如610b-d)也连接到相同EIS 505,因为各个主机和装置通过EIS 505的组构彼此完全隔离。另外,通过简单指配,装置指配能在运行时间通过经由简单指配提供的仿真的热移除/添加进行修改(例如重新指配或取消)。比如,虽然在图7A的示例中,装置610b-c可被初始指配给主机610b(例如作为主机610b的存储装置),但能确定,主机610a具有对于存储容量的更大需要,并且装置610b-c之一或二者能随时随地(on thefly)从主机610b重新指配给610a(即,无需改变在EIS处的任何物理连接)(除其它示例之外)。
转到图7B,通过EIS 505的控制主机逻辑能提供第二、更完善能力的虚拟化指配(VA)。虚拟化指配能将现有PCIe SR–IOV扩展成支持在虚拟功能级别的装置到特定主机(例如605a-c)的分数式指配。比如,如在图7B的示例中所示的,向主机605a和605b中的每个指配装置610b的一部分,并且向主机605b和605c中的每个指配装置610c的一部分(而装置610a和610d各被指配给单个主机(例如分别是605a和605d))。此类分数式虚拟化指配也能在运行时间修改,以考虑到在装置资源分配中的更多灵活性(例如,允许资源更加递增地被缩放、指配、重新平衡等)。
转到图7C,EIS能进一步实现多层虚拟化指配能力,其通过使用多层EIS(例如505a-d)来在虚拟化指配上构建。EIS能被互连以提供全路径冗余,由此通过控制主机软件支持用以支持主机与装置之间的全冗余路径的能力,其提供顺从其它性能益处以及远程接入服务(RAS)的部署的系统。比如,控制主机逻辑能提供如定义初级和容错(fail-over)路径、定义路由规则以允许同时使用多个路径而用于改进的性能(例如基于请求方ID进行区分)(除其它示例之外)的这种功能性。另外,如与虚拟化指配一起,多层虚拟化指配(或MTVA)能支持装置资源的分数部分的指配,增加多路径连接性。比如,在此示例中,能向主机605a和605c中的每个指配装置610a的分数部分,而向主机605a-c中的每个指配装置610b-c的资源的分数部分。
转到图8A-8B,EIS的处理能力能实现除了在图7A-7C的示例中图示的那些之外的更完善的路由和能力。比如,如在图8A的简化框图800a中所示的,通过EIS的控制主机的逻辑能启用另一能力,以实现组构内的虚拟装置。相应地,能支持组构虚拟装置能力,以向连接到EIS 505的上游端口的一个或多个主机(例如605a-c)呈现到具体(虚拟化)装置的方向连接的印象(impression)。作为装置是虚拟的事实可对主机隐藏,主机假定该装置是物理连接到组构中EIS之一的下游端口的装置之一。实际上,主机可不具有到连接到EIS(例如505a-d)的下游端口的实际装置(例如61a-d)中的可见性。虚拟装置(例如805a-g)通过组构虚拟装置(FVD)能力能利用连接到EIS端口的物理装置(例如610a-d)的资源。在一些情况下,虚拟装置可表示为与连接的装置(610a-d)之一相同类型的装置。实际上,多个虚拟装置能被实例化成细分相同类型的单个物理装置的资源。在其它情况下,虚拟装置可作为与物理装置不同类型的装置而呈现给主机。比如,可利用物理连接的存储装置(例如610a)的存储容量来支持不同类型的虚拟存储装置(但是,其实际上利用物理装置的存储装置)。作为示例,物理装置可以是实现一个具体主机接口的存储装置,但虚拟装置对于主机可看作为实现不同主机接口。在另一示例中,能使用组构虚拟装置将虚拟装置表示为被连接在PCIe交换机或者交换机层级下方,通过允许连续使用PCIe机制以用于热插拔、错误报告、接入控制服务(除其它考虑因素之外),这在一些情况下可能是期望的。
图8B的简化框图800b图示了EIS 505的又一潜在能力,其能通过嵌入式控制主机的逻辑和计算能力实现。在此示例中,装置被虚拟化并呈现给一个或多个主机(例如605a-c),然而,没有虚拟装置映射到连接到EIS的物理装置。使用主机-主机通信能力(在图8B中表示的),利用组构虚拟装置能力以使主机能够在由EIS提供的组构上彼此直接通信。比如,能使用一个或多个EIS(505a-b)的控制主机提供虚拟装置810a-f,其对于主机看作NIC、桥装置或其它装置(例如支持消息传递接口(MPI)、套接口等的专用过程间通信(IPC)接口),通过它们能促进主机间通信和多路径冗余。在一个示例中,每个虚拟装置(例如810a-f)的资源能被指配给其中两个或更多主机605a-c(诸如在图8B的示例中表示的)并由它们共享。
应该认识到,在图7A-8B的示例中图示的能力和用例可单独应用或在单个拓扑内组合应用。比如,对于一些主机-装置指配可使用简单指配,而对于其它主机-装置资源指配,利用虚拟化指配或组构虚拟装置。另外,虽然此公开参考PCIe链路,但EIS拓扑能被潜在地应用在使用PCIe可兼容架构的任何上下文中,包含管芯上组构、多片封装(MCP)、片上系统(SOC)以及支持PCIe可兼容I/O操作的组构技术(除其它示例之外)。
在一些实现中,基于EIS的组构能通过使本地虚拟机管理器能够使用控制主机的逻辑而在EIS上实例化来支持虚拟机(VM)迁移,以通过按照迁移动态地重新映射实际ReqID来维持一致的明显请求方ID(ReqID)。比如,通过在控制主机处静态地维持ReqID,VM能从一个主机和/或装置迁移到另一个,而无需在与访客关联的VT-d表中的不相容性发展。虽然传统SR-IOV提供了用于支持I/O虚拟化的各种钩(hook),但ReqID在此类实现中经常被绑定到特定HW,由此限制了VM迁移。然而,通过确保一致的1-1映射,如在EIS的控制主机处所提供的,VM迁移被大大简化,其在无需显著的组构重新配置的情况下实现VM迁移。
在简单情况下,单个EIS的单个控制主机能维持存储器的单个平面视图,并仅使用一个分段向所有装置呈现平面BDF空间。然而,可准许控制主机建立存储器的截然不同的视图,并使用多个分段建立截然不同的BDF空间。为了跟踪要应用若干BDF空间中的哪个,能维持标签以标识每个唯一BDF空间。当多个BDF空间跨使用多个EIS实现的组构而被定义时,可使用TLP前缀将BDF空间标签从一个EIS运载到另一个。比如,能重新目的化现有PCIe TLP前缀,诸如PASID前缀,或者能针对其定义新前缀。在传送对应TLP之前,能通过接收EIS在组构边缘处剥落这些前缀,由此维持存储器和BDF空间的单个单位视图的任何给定装置或工作者主机的视图。
在一些实现中,能进一步给每个EIS至少提供由EIS的控制主机拥有的存储器管理单元(MMU)控制器。控制器主机能利用MMU执行从一个存储器空间到另一个的映射。与IOV/VT-d一致,映射可由BDF索引,其中带有用于分段(当可应用时)的附加索引。这些MMU能一致地维持在组构内,即使所有MMU支持当前在使用的所有映射(诸如当EIS组构已经被划分成以使得某些装置仅被映射到某些工作者主机时)是不必要的。当支持到工作者主机的SR-IOV时,控制主机也能使用MMU。MMU映射表可使用与常规页表相同的格式。在一些实现中,MMU能包含一个或多个转化高速缓存(TLB)。
在一些实现中,EIS组构能支持用于由EIS交换机逻辑本身生成的中断的MSI和MSI-X。在同一组构中,一些工作者主机可使用MSI,而其它使用MSI-X,这是准许的。MSI/MSI-X中断一般将传递通过具有存储器和分段/BDF空间重新映射的EIS。EIS可以可选地支持子页面级重新映射,以使能够从多个完全不同的地址和存储器空间搜集中断,其允许它们被映射在单个页面内,或者相反,将看起来在单个页面内的中断分散到多个完全不同的地址或存储器空间(例如通过扩展EIS端口的页面转化逻辑)。
当使用简单指配时,或者当在功能级进行虚拟化时,与功能关联的错误(包含ERR_Messages)一般可传递通过EIS。然而,如果控制主机正在提供在子功能级的虚拟指配,则控制主机然后将对工作者主机所需的行为进行仿真,其可包含将ERR消息合成到工作者主机,或者当多个工作者主机受与具体功能关联的错误影响时多播ERR消息(除其它示例之外)。
在一些实现中,EIS端口功能能够由控制主机控制,其中端口控制的工作者主机的视图被虚拟化。比如,端口管理能涉及控制主机,控制主机基于用于给定机壳中的装置的适当功率极限设定该设置“在下游端口处的槽功率极限”。在上游端口处从工作者主机接收的槽功率极限在一些实例中可被忽略,因为各个工作者主机一般可能不理解它们在其中操作的机壳的实际要求。在一个示例中,装置就绪状态(DRS)消息可由控制主机在上游端口处传送(例如与PCIe一致),以向工作者主机指示控制主机已经配置了暴露于该工作者主机的EIS组构。由EIS在下游端口处接收的DRS消息可由控制主机用于优化装置的初始配置。
转到图9,示出了简化框图900,图示了包含控制主机510和交换机控制主机接口(SCHI) 540的EIS 505的示例实现。在一个实现中,SCHI 540在按端口的每种类型事务(例如投递式(Poseted)、非投递式(Non-Posted)、完成)的每个方向上,可具有4KB最小(或者其它大小的)时钟域交叉(CDC)(或者其它时钟域(例如控制主机可与交换机920共享时钟域)先入先出(FIFO)队列(例如905))。这些FIFO队列可被预先分配。在一些示例中,EIS可维持32位寄存器,其当中的较低30位被用作称为条目时间戳(例如910)的其组构时钟域中的自由运行的计数器。在适当的时钟域交叉之后,此寄存器可能对它们相应时钟域中的所有端口可见。寄存器的剩余位(例如位30和31)可用于特殊排序要求(诸如在图10中图示的)。在一些示例中,接收TLP的每个端口在将它推送到CDC FIFO中之前将EIS条目时间戳附加到它。在一个示例中,EIS的所有端口(例如510a-c、515a-c)将相对于将事务存储在CDC FIFO中而同时对条目时间戳910值进行采样。条目时间戳寄存器的重置值可被设置成0。
如所指示的,每个端口可在对于每种事务类型的每个方向上维持单独队列(例如915a-f)(例如,针对投递式、非投递式和完成事务每个中的一个,即,总共6个)。这些队列(例如915a-f)可用于将事务从本地端口域传递到组构域。SCHI同样可在每个方向上按端口维持单独队列(例如905)(例如,针对投递式、非投递式和完成事务每个中的一个,即,每个端口总共6个)。SCHI队列可用于在EIS交换组构(例如920)与SCHI 540之间转移TLP。
在一个实现中,除了PCI和PCIe要求的配置寄存器集合(例如928)之外,EIS的SCHI还可包含存储器映射的IO(MMIO)空间925。接口(例如SCHI或MMIO)可进一步包含基址寄存器(BAR),MIMO寄存器(诸如下面在表3中定义的那些)可映射到其中。
表3:MIMO寄存器
如在图9的示例实现中所示出的,EIS的控制主机510可包含它自己的系统存储器930,以用于支持实现为由控制主机处理器可执行的代码(例如935)的逻辑。在一个示例中,数据转移环(DTR)940能被实现在控制主机系统存储器930中。转到图11,简化框图1100图示了DTR 940的一个实现的表示。比如,DTR 940能被实现为由数据环缓冲器构成的循环缓冲器。数据环缓冲器(DRB)能由控制主机软件和SCHI用于为彼此调度工作。比如,DTR 940能实现包含每个DRB 1105的数据能通过其在控制主机与SCHI之间移动的队列。控制主机软件(除其它功能性能之外)可执行以针对每个方向上的EIS的每个端口分配和初始化控制主机存储器中的DRB结构(例如每EIS端口两个)。控制主机软件然后能将地址写到存储器中的缓冲区(例如在SCHI的MMIO空间925中)(除其它示例特征之外)。图12提供了数据转移DRB 1105的示例。
返回到图9,SCHI 540的实现此外能针对每个端口的每个事务类型维持一组门铃寄存器(诸如在图13的框图1300中表示的)。门铃寄存器比如能用于从交换机920请求针对由控制主机借助于从控制主机流到交换机920的FIFO中的SCHI放置的数据(例如,要传送的TLP,或者对于交换机920本身的配置命令)的服务(除其它示例使用之外)。
转到图14,用于表示在控制主机存储器中接收的TLP和要传送的TLP的数据结构可能是相同的。比如,每个数据结构(例如1400)都能指示相应的DB,其将包含对应的TLP(作为其数据有效载荷)。数据结构(例如1400)能进一步包含对应的EIS条目时间戳值(例如上面所描述的),比如,当在EIS交换逻辑中启用时,用于支持选择性TLP旁路。最后,数据结构(例如1400)能包含TLP本身,正如所接收的(逐字节),包含序列号、TLP报头、数据有效载荷、循环冗余校验值(LCRC),但其中在一个实现中排除了TLP的开头(STP)和TLP的结尾(END)符号(诸如在图14中示出的)。接收了TLP的端口的标识符在数据结构(例如1400)的一些实现中也可被省略,因为端口基于存储器缓冲区的位置可能是隐式的(除其它示例特征和考虑因素之外)。数据结构1400的实例在控制主机系统存储器(930)中能用于管理接收的或传送的(即,来往于控制主机发送的)每个TLP。
要指出,上面描述的设备、方法和系统可实现在上面所提到的任何电子装置或系统中。作为特定图示,下面的附图提供了用于利用本文所描述的本发明的示范性系统。当更详细描述下面的系统时,从上面的论述中公开、描述和重访了若干不同互连。并且如所容易明白的,上面描述的进步可应用于那些互连、组构或架构中的任一个。
参考图15,描绘了包含多核处理器的计算系统的框图的实施例。处理器1500包含任何处理器或处理装置,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或执行代码的其它装置。在一个实施例中,处理器1500包含至少两个核——核1501和核1502,它们可包含不对称核或对称核(所图示的实施例)。然而,处理器1500可包含任何数量的处理元件,它们可以是对称的或不对称的。
在一个实施例中,处理元件指的是支持软件线程的硬件或逻辑。硬件处理元件的示例包含:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,其能够保存处理器的状态,诸如执行状态或架构状态。换言之,处理元件在一个实施例中指的是能够与代码(诸如软件线程、操作系统、应用或其它代码)独立关联的任何硬件。物理处理器(或处理器套接口)通常指的是集成电路,其潜在地包含任何数量的其它处理元件,诸如核或硬件线程。
核经常指的是位于集成电路上能够维持独立架构状态的逻辑,其中每个独立维持的架构状态都与至少一些专用执行资源关联。与核相比,硬件线程通常指的是位于集成电路上能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可看到的,当某些资源被共享并且其它资源专用于架构状态时,核与硬件线程的命名之间的线路交叠。不过通常,核和硬件线程被操作系统视为单独逻辑处理器,其中操作系统能够在每个逻辑处理器上单独调度操作。
如图15所图示的物理处理器1500包含两个核——核1501和1502。在此,核1501和1502被视为对称核,即,具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核1501包含无序处理器核,而核1502包含有序处理器核。然而,核1501和1502可单独选自任何类型核,诸如原生核、软件管理核、适合于执行原生指令集架构(ISA)的核、适合于执行转化的指令集架构(ISA)的核、协同设计的核或其它已知核。在异构核环境(即不对称核)中,可利用某个形式的转化,诸如二进制转化,在一个核或两个核上调度或执行代码。然而为了推进论述,下面更详细描述在核1501中图示的功能单元,因为核1502中的单元在描绘的实施例中以类似方式操作。
如所描绘的,核1501包含两个硬件线程1501a和1501b,它们可被称为硬件线程槽1501a和1501b。因此,软件实体(诸如操作系统)在一个实施例中潜在地将处理器1500视为四个单独处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上面所提及的,第一线程与架构状态寄存器1501a关联,第二线程与架构状态寄存器1501b关联,第三线程与架构状态寄存器1502a关联,并且第四线程与架构状态寄存器1502b关联。在此,每个架构状态寄存器(1501a、1501b、1502a和1502b)可被称为处理元件、线程槽或线程单元,如上面所描述的。如所图示的,在架构状态寄存器1501b中复制架构状态寄存器1501a,因此各个架构状态/上下文能够被存储用于逻辑处理器1501a和逻辑处理器1501b。在核1501中,对于线程1501a和1501b,也可复制其它较小资源,诸如分配器和重命名块1530中的重命名逻辑和指令指针。可通过分区共享一些资源,诸如重新排序器/引退单元1535中的重新排序缓冲器、ITLB 1520、加载/存储缓冲器和队列。其它资源,诸如通用内部寄存器、页表基础寄存器、低级数据高速缓存和数据TLB 1515、执行单元1540和部分无序单元1535,潜在地完全共享。
处理器1500经常包含其它资源,它们可被完全共享、通过分区共享或者由处理元件专用/专用于处理元件。在图15中,图示了具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。要指出,处理器可包含或省略这些功能单元中的任何单元,以及包含未描绘的任何其它已知功能单元、逻辑或固件。如所图示的,核1501包含简化的代表性无序(OOO)处理器核。但是在不同实施例中可利用有序处理器。OOO核包含预测要执行/采取的分支的分支目标缓冲器1520以及存储用于指令的地址转化条目的指令转化缓冲器(I-TLB)1520。
核1501进一步包含耦合到提取单元1520以解码提取元素的解码模块1525。提取逻辑在一个实施例中包含分别与线程槽1501a、1501b关联的各个定序器。通常,核1501与第一ISA关联,第一ISA定义/规定在处理器1500上可执行的指令。是第一ISA一部分的机器码指令经常包含一部分指令(称为操作码),其参考/规定要执行的指令或操作。解码逻辑1525包含从它们的操作码中识别这些指令并在管线中传递解码指令以便如第一ISA所定义的进行处理的电路。例如,如下面更详细描述的,解码器1525在一个实施例中包含设计成或适合于识别特定指令诸如事务性指令的逻辑。作为解码器1525识别的结果,架构或核1501采取特定的预先定义的动作执行与适当指令关联的任务。重要的是要指出,本文描述的任务、块、操作和方法中的任一个都可响应于单个或多个指令而执行;其中一些可以是新指令或老指令。要指出,解码器1526在一个实施例中识别相同ISA(或者其子集)。备选地,在异构核环境中,解码器1526识别第二ISA(或者第一ISA子集或者截然不同的ISA)。
在一个示例中,分配器和重命名块1530包含预留资源的分配器,诸如存储指令处理结果的寄存器文件。然而,线程1501a和1501b潜在地能够无序执行,其中分配器和重命名器块1530还预留其它资源,诸如重排序缓冲器,以跟踪指令结果。单元1530还可包含寄存器重命名器以将程序/指令参考寄存器重命名成处理器1500内部的其它寄存器。重排序/引退单元1535包含部件诸如上面提到的重排序缓冲器、负载缓冲器和存储缓冲器以支持无序执行以及后来的无序执行的指令的有序引退。
在一个实施例中,调度器和执行单元块1540包含调度器单元以调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元端口上调度浮点指令。还包含与执行单元相关联的寄存器文件以存储信息指令处理结果。示范执行单元包含浮点执行单元、整数执行单元、跳执行单元、负载执行单元、存储执行单元和其它已知执行单元。
较低级数据高速缓存和数据转化缓冲器(D-TLB)1550耦合到执行单元1540。数据高速将缓存存储近来使用/操作的单元,诸如数据操作数,它们潜在地保持在存储器一致性状态。D-TLB将存储近来对物理地址转化的虚拟/线性。作为特定示例,处理器可包含页表结构以将物理存储器分成多个虚拟页。
在此,核1501和1502共享对较高级或更高级高速缓存(诸如与片上接口1510关联的第二级高速缓存)的访问。要指出,较高级或更高级指的是增大或从执行单元得到进一步方式的高速缓存级。在一个实施例中,较高级高速缓存是最后一级数据高速缓存——处理器1500上的存储器层级中的最后一个高速缓存——诸如第二级或第三级数据高速缓存。然而,较高级高速缓存不如此限制,因为它可与指令高速缓存关联或包含指令高速缓存。痕迹高速缓存——一种类型的指令高速缓存——相反可耦合在解码器1525后面以存储最近解码的痕迹。在此,指令潜在地指的是宏指令(即,由解码器识别的通用指令),其可被解码成若干微指令(微操作)。
在描绘的配置中,处理器1500还包含片上接口模块1510。历史上,在下面更详细描述的存储器控制器已经被包含在处理器1500外部的计算系统中。在此情形下,片上接口1510将与处理器1500外部的装置(诸如系统存储器1575、芯片集(经常包含连接到存储器1575的存储器控制器集线器以及连接外围装置的I/O控制器集线器)、存储器控制器集线器、北桥或其它集成电路)通信。并且在此情形下,总线1505可包含任何已知互连,诸如多点下传总线、点对点互连、串行互连、并行总线、一致(例如高速缓存一致)总线、分层协议架构、差分总线和GTL总线。
存储器1575可专用于处理器1500,或与系统中的其它装置共享。存储器1575的类型的公共示例包含DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知存储装置。要指出,装置1580可包含图形加速计、耦合到存储器控制器集线器的卡或处理器、耦合到I/O控制器集线器的数据存储装置、无线收发器、闪存装置、音频控制器、网络控制器或其它已知装置。
然而,近来,当更多的逻辑和装置被集成在单个管芯(诸如SOC)上时,这些装置中的每个都可结合在处理器1500上。例如,在一个实施例中,存储器控制器集线器在与处理器1500相同的封装和/或管芯上。在此,核的部分(核上部分)1500包含用于与诸如存储器1575或图形装置1580的其它装置接口的一个或多个控制器。包含用于与此类装置对接的控制器和互连的配置经常被称为核上(或非核)配置。作为示例,片上接口1510包含用于片上通信的环形互连以及用于片下通信的高速串行点对点链路105。然而,在SOC环境中,甚至更多的装置,诸如网络接口、协处理器、存储器1575、图形处理器1580以及任何其它已知的计算机装置/接口可被集成在单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因子。
在一个实施例中,处理器1500能够执行编译器、优化和/或转化器代码1577以编译、转化和/或优化应用代码1576以支持本文描述的设备和方法,或与之对接。编译器经常包含将源文本/代码转化成目标文本/代码的程序或一组程序。通常,用编译器编译程序/应用代码在多阶段和多遍进行,以将高级编程语言代码变换成低级机器或汇编语言代码。然而,对于简单编译,仍可利用单向(single pass)编译器。编译器可利用任何已知编译技术,并执行任何已知编译器操作,诸如词汇分析、预先处理、解析、语义分析、代码生成、代码变换和代码优化。
较大编译器经常包含多阶段,但最经常的是,这些阶段被包含在两个一般阶段内:(1)前端,即,一般在句法处理、语法处理和一些变换/优化可发生的情况下,以及(2)后端,即,一般在分析、变换、优化和代码生成发生的情况下。一些编译器指的是中间的,其图示了编译器的前端与后端之间的刻画的模糊。因此,对插入、关联、生成或编译器的其它操作的提及可发生在任何上面提到的阶段或遍,以及编译器的任何其它已知阶段或遍。作为说明性示例,编译器潜在地将操作、调用、函数等插入在编译的一个或多个阶段中,诸如将调用/操作插入在编译的前端中,并且然后在变换阶段期间将调用/操作变换成较低级代码。要指出,在动态编译期间,编译器代码或动态优化代码可插入此类操作/调用,以及优化用于在运行时间期间执行的代码。作为特定说明性示例,二进制代码(已经是编译代码)可在运行时间期间动态优化。在此,程序代码可包含动态优化代码、二进制代码或其组合。
类似于编译器,转化器(诸如二进制转化器)静态或动态转化代码,以优化和/或转化代码。因此,对执行代码、应用代码、程序代码或其它软件环境的提及可指的是:(1)动态或者静态地执行编译器程序、优化代码优化器或转化器,以编译程序代码,维持软件结构,执行其它操作,优化代码,或者转化代码;(2)执行包含操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行其它程序代码,诸如与维持软件结构的主程序代码关联的库,以执行其它软件相关应用,或优化代码;或者(4)其组合。
现在参考图16,示出的是按照本发明实施例的第二系统1600的框图。如图16所示,多处理器系统1600是点对点互连系统,并且包含经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每个都可以是处理器的某一版本。在一个实施例中,1652和1654是串行点对点一致性互连组构的部分,诸如Intel的快速路径互连(QPI)架构。因此,本发明可在QPI架构内实现。
虽然仅示出有两个处理器1670、1680,但要理解到,本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器1670和1680被分别示出包含集成存储器控制器单元1672和1682。处理器1670还包含作为总线控制器单元点对点(P-P)接口1676和1678其的部分;类似地,第二处理器1680包含P-P接口1686和1688。处理器1670、1680可使用P-P接口电路1678、1688经由点对点(P-P)接口1650互换信息。如图16中所示,IMC 1672和1682将处理器耦合到相应存储器,即,存储器1632和存储器1634,它们可以是本地附连到相应处理器的主存储器部分。
处理器1670、1680各经由各个P-P接口1652、1654使用点对点接口电路1676、1694、1686、1698与芯片集1690互换信息。芯片集1690还沿高性能图形互连1639经由接口电路1692与高性能图形电路1638互换信息。
共享高速缓存(未示出)可被包含在任一处理器中或者两个处理器外侧;仍经由P-P互连与处理器连接,使得任一个或两个处理器的本地高速缓存信息可被存储在共享高速缓存中(如果处理器被置于低功率模式)。
芯片集1690可以经由接口1696耦合到第一总线1616。在一个实施例中,第一总线1616可以是外围组件互连(PCI)总线,或者诸如PCI高速总线或者另一第三代I/O互连总线的总线,不过本发明的范围不如此限制。
如图16所示,各种I/O装置1614耦合到第一总线1616,连同将第一总线1616耦合到第二总线1620的总线桥1618。在一个实施例中,第二总线1620包含低管脚计数(LPC)总线。在一个实施例中,各种装置耦合到第二总线1620,例如包含键盘和/或鼠标1622、通信装置1627和存储单元1628,诸如盘驱动器或者经常包含指令/代码和数据1630的其它大容量存储装置。另外,音频I/O 1624被显示耦合到第二总线1620。要指出,其它架构是可能的,其中所包含的组件和互连架构可变。例如,代替图16的点对点架构,系统可实现多点下传总线或其它此类架构。
虽然本发明已经关于有限数量的实施例进行了描述,但本领域技术人员将认识到从其中的众多修改和改变。意图是,所附权利要求书涵盖了如落入此发明的真实精神和范围内的所有此类修改和改变。
设计可经历各种阶段,从创建到模拟到制作。表示设计的数据可用若干方式表示该设计。首先,如在仿真上是有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管门极的电路级模型。更进一步说,大多数设计在某一阶段达到用硬件模型表示各种装置的物理布局的数据级。在其中使用常规半导体制作技术的情况下,表示硬件模型的数据可以是规定在对于用于产生集成电路的掩膜的不同掩膜层上各种特征的存在或缺席的数据。在设计的任何表示中,数据都可被存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由光波或电波来传送信息,所述光波或电波调制成或以别的方式生成以传送此类信息。当传送指示或携带代码或设计的电载波时,在执行电信号的拷贝、缓冲或重传的程度上,进行新拷贝。从而,通信供应商或网络供应商可在有形、机器可读介质上至少暂时地存储实施本发明实施例的技术的制品,诸如编码到载波中的信息。
本文所使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包含硬件,诸如微控制器,其与存储适配成由微控制器执行的代码的非暂态介质关联。因此,在一个实施例中,对模块的引用指的是硬件,其特定地配置成识别和/或执行在非暂态介质上保持的代码。更进一步说,在另一实施例中,模块的使用指的是包含代码的非暂态介质,代码特定地适配成由微控制器执行以执行预定操作。并且如能指出的,在又一实施例中,术语模块(在此示例中)可指的是微控制器和非暂态介质的组合。被图示为单独的通常模块边界常见地改变,并且潜在地交叠。例如,第一和第二模块可共享硬件、软件、固件或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包含硬件,诸如晶体管、寄存器或者其它硬件,诸如可编程逻辑器件。
使用短语“用于”或“配置成”在一个实施例中指的是布置、放置一起、制造、许诺销售、进口和/或设计设备、硬件、逻辑或元件以执行指定或预定的任务。在此示例中,不在操作的设备或其元件仍“配置成”执行指定的任务(如果它被设计、耦合和/或互连以执行所述指定的任务)。作为纯粹说明性示例,逻辑门可在操作期间提供0或1。但“配置成”向时钟提供使能信号的逻辑门不包含可提供1或0的每一个潜在逻辑门。相反,逻辑门是以某种方式耦合的一种,在操作期间,1或0输出将启用时钟。再一次指出,使用术语“配置成”不要求操作,而是相反关注于设备、硬件和/或元件的潜伏状态,其中在潜伏状态中,当设备、硬件和/或元件在操作时,设备、硬件和/或元件被设计成执行具体任务。
更进一步说,使用短语“能够/以”和/或“可操作以”在一个实施例中指的是以某种方式设计的某一设备、逻辑、硬件和/或元件,以实现以规定方式使用设备、逻辑、硬件和/或元件。如上面指出的,使用“用于”、“能够”或“可操作以”在一个实施例中指的是设备、逻辑、硬件和/或元件的潜伏状态,其中该设备、逻辑、硬件和/或元件不在操作,但以某种方式设计成实现以规定的方式使用设备。
本文所使用的值包含数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑级、逻辑值或逻辑的值的使用也被称为1和0,其简单地表示二进制逻辑状态。例如,1指的是高逻辑级,并且0指的是低逻辑级。在一个实施例中,存储单元(诸如晶体管或快闪单元)可能能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中值的其它表示。例如,十进制数10也可被表示为二进制值1010和十六进制字母A。因此,一个值包含能够被保持在计算机系统中的信息的任何表示。
而且,状态可由值或值的部分来表示。作为示例,第一值,诸如逻辑1,可表示默认或初始状态,而第二值,诸如逻辑0,可表示非默认状态。此外,术语“重置”和“设置”在一个实施例中分别指的是默认和更新的值或状态。例如,默认值潜在地包含高逻辑值,即重置,而更新的值潜在地包含低逻辑值,即设置。要指出,可利用值的任何组合来表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可存取、机器可读、计算机可存取或计算机可读介质上的指令或代码(其可由处理元件执行)实现。非暂态机器可存取/可读介质包含提供(即,存储和/或传送)以由机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂态机器可存取介质包含随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器装置;电存储装置;光存储装置;声音存储装置;用于保持从暂态(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式存储装置等,它们将与可从其接收信息的非暂态介质区别开。
用于逻辑编程以执行本发明实施例的指令可被存储在系统中的存储器内,诸如在DRAM、高速缓存、闪速存储器或其它存储装置内。更进一步说,指令能经由网络或者通过其它计算机可读介质分布。从而,机器可读介质可包含用于存储或传送以由机器(例如计算机)可读形式的信息的任何机构,但不限于软盘、光盘、紧致盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在通过因特网经由电、光、声音或其它形式的传播信号(例如载波、红外信号、数字信号等)传送信息时使用的有形、机器可读存储装置。相应地,计算机可读介质包含适合于存储或传送以由机器(例如计算机)可读形式的电子指令或信息的任何类型有形、机器可读介质。
如下示例涉及按照此说明书的实施例。一个或多个实施例可提供方法、系统、具有可执行代码的机器可读存储介质、或者交换机,其包含可执行以促进基于外围组件互连高速(PCIe)的互连,并且进一步包含嵌入在交换机中以提供一个或多个增强路由能力的控制主机。控制主机能包含处理器装置、存储器和由处理器装置可执行的软件,以处理在交换机的一个或多个端口处接收的业务以重定向至少一部分业务来提供一个或多个增强路由能力。
在一个示例中,处理器装置和存储器专用于所述控制主机。
在一个示例中,增强路由能力包含将在所述交换机的一个或多个下游端口处的一个或多个装置指配给连接到所述交换机的上游端口的具体主机的简单指配能力,所述一个或多个装置包含连接到所述交换机的下游端口的所述装置的子集,并且所述装置子集外侧的装置对所述具体主机不可见。
在一个示例中,所述软件进一步可执行以动态地将所述装置子集外侧的装置中的具体装置至少重新指配给所述具体主机,而无需改变所述具体装置到所述交换机的连接。
在一个示例中,所述增强路由能力包含虚拟指配能力,所述软件可执行以定义由以通信方式耦合到所述交换机的具体装置提供的资源的虚拟分区,并将每个分区指配给以通信方式耦合到所述交换机的主机集合中的相应主机。
在一个示例中,具体装置不原生地支持输入/输出虚拟化(IOV)。
在一个示例中,使用所述交换机的一个或多个上游端口将所述主机集合的至少一部分直接连接到所述交换机,所述交换机的一个或多个下游端口互连到多层式架构中的一个或多个其它交换机的上游端口以提供所述具体装置与所述主机集合之间的多路径冗余,所述具体装置连接到所述其它交换机中的具体交换机的下游端口,并且所述一个或多个其它交换机中的每个都包含用于支持所述虚拟指配能力的相应控制主机。
在一个示例中,主机集合包含多个主机,所述主机集合中的至少一个主机连接到所述其它交换机中的另一交换机的上游端口,所述虚拟分区包含多个虚拟分区,所述虚拟分区中的第一个被指配给所述主机集合中的第一个,并且所述虚拟分区中的第二个被指配给所述主机集合中的第二个。
在一个示例中,所述增强路由能力包含虚拟装置能力,所述软件可执行以实例化在所述交换机上托管的一个或多个虚拟装置,所述交换机的下游端口连接到至少一个具体装置,所述交换机的上游端口连接到至少一个具体主机,所述虚拟装置中的至少具体虚拟装置利用所述具体装置的资源,并且所述具体虚拟装置的至少部分资源被指配给所述具体主机。
在一个示例中,所述具体装置对所述具体主机不可见。
在一个示例中,所述具体虚拟装置被仿真为与所述具体装置不同的装置。
在一个示例中,所述增强路由能力包含主机到主机通信能力,其包含在所述交换机上提供一个或多个虚拟装置,将对两个或更多主机的访问指配给具体虚拟装置,并且所述具体虚拟装置促进所述两个或更多主机之间的通信。
在一个示例中,所述具体虚拟装置包含虚拟网络接口控制器(NIC)。
在一个示例中,所述交换机进一步包含所述控制主机与交换逻辑之间的控制主机接口。
在一个示例中,所述交换机进一步包含多个上游端口和多个下游端口。
在一个示例中,每个所述端口都包含用于地址转化的I/O逻辑。
在一个示例中,当提供所述增强路由能力时,利用现有PCIe地址空间。
在一个示例中,交换机缺乏控制流功能性。
在一个示例中,业务包含服从PCIe的事务层分组(TLP),并且所述TLP将未封装和未分段地传送。
在一个示例中,增强路由能力包含:简单指配能力,用于将在所述交换机的一个或多个下游端口处的装置动态指配给连接到所述交换机的一个或多个上游端口的相应主机;虚拟指配能力,用于定义由在所述交换机的一个或多个下游端口的装置提供的资源的虚拟分区,并将每个分区指配给连接到所述交换机的一个或多个上游端口的相应主机;以及虚拟装置能力,用于实例化要在交换机上托管的一个或多个虚拟装置,其中虚拟装置利用在交换机的一个或多个下游端口处的一个或多个装置的资源,并且每个虚拟装置被指配给连接到交换机的一个或多个上游端口的相应主机。
一个或多个实施例可提供一种方法、系统、具有可执行代码的机器可读存储介质,所述可执行代码用于在包括处理器装置的控制主机处通过接口接收事务层分组,其中所述控制主机被嵌入在服从外围组件互连高速(PCIe)的交换机中,并且所述接口促进所述控制主机与所述控制主机的交换逻辑之间的通信。能根据事务层分组确定分组的目的地,并且控制主机能生成要在交换机上托管的虚拟装置,并将事务层分组定向到虚拟装置。虚拟装置能消耗连接到交换机的一个或多个下游端口的一个或多个物理装置的资源,并且对连接到交换机的上游端口的主机隐藏所述一个或多个物理装置。
一个或多个实施例可提供系统,其包含每个具有相应处理器装置的多个主机、多个装置以及包含控制主机的交换机。多个主机能连接到交换机的多个上游端口,并且多个装置能连接到交换机的多个下游端口。控制主机能包含专用处理器装置、存储器和由处理器装置可执行的软件,以处理在交换机的一个或多个端口处接收的业务以重定向至少一部分业务来提供一个或多个增强路由能力。
在一个示例中,交换机进一步包含服从外围组件互连高速(PCIe)的交换逻辑以及用于将所述交换逻辑与所述控制主机对接的接口。
在一个示例中,增强路由能力包含:简单指配能力,用于将其中一个或多个装置动态指配给交换机的相应主机;虚拟指配能力,用于定义由所述装置提供的资源的虚拟分区,并将每个分区指配给所述主机中的相应主机;以及虚拟装置能力,用于实例化要在所述交换机上托管的一个或多个虚拟装置,其中所述虚拟装置利用其中一个或多个所述装置的资源,并且每个虚拟装置被指配给所述主机中的相应主机。
在一个示例中,通过交换机的路由根据其中两个或更多所述增强路由能力的组合。
此说明书通篇提到“一个实施例”或“实施例”意味着,结合该实施例描述的具体特征、结构或特性被包含在本发明的至少一个实施例中。从而,在通篇说明书各个地方中出现的短语“在一个实施例中”或“在实施例中”不一定全都指的是同一实施例。更进一步说,在一个或多个实施例中,可以以任何适合的方式组合具体特征、结构或特性。
在前述说明书中,已经参考特定示范性实施例给出了详细描述。然而,将明显的是,在不脱离在所附权利要求书中所阐述的本发明的更广泛精神和范围的情况下,可对其进行各种修改和改变。说明书和附图将相应地以说明性意义而非限制性意义被考虑。更进一步说,前面使用的实施例和其它示范性语言不一定指的是同一实施例或同一示例,而是可指的是不同的或截然不同的实施例,以及潜在地相同实施例。

Claims (27)

1.一种设备,包括:
交换机,包括:
交换逻辑,用于促进基于外围组件互连高速(PCIe)的互连;
嵌入在所述交换机中的控制主机,用于提供一个或多个增强路由能力,其中所述控制主机包括:
处理器装置;
存储器;
由所述处理器装置可执行的软件,用于处理在所述交换机的一个或多个端口处接收的业务以重定向至少一部分所述业务来提供所述一个或多个增强路由能力。
2.如权利要求1所述的设备,其中所述处理器装置和存储器专用于所述控制主机。
3.如权利要求1所述的设备,其中所述增强路由能力包括用于将在所述交换机的一个或多个下游端口处的一个或多个装置指配给连接到所述交换机的上游端口的具体主机的简单指配能力,所述一个或多个装置包括连接到所述交换机的下游端口的所述装置的子集,并且所述装置子集外侧的装置对所述具体主机不可见。
4.如权利要求3所述的设备,其中所述软件进一步可执行以动态地将所述装置子集外侧的所述装置中的至少具体一个重新指配给所述具体主机,而无需改变所述具体装置到所述交换机的连接。
5.如权利要求1所述的设备,其中所述增强路由能力包括虚拟指配能力,所述软件可执行以定义由以通信方式耦合到所述交换机的具体装置提供的资源的虚拟分区,并将每个分区指配给以通信方式耦合到所述交换机的主机集合中的相应主机。
6.如权利要求5所述的设备,其中所述具体装置不原生地支持输入/输出虚拟化(IOV)。
7.如权利要求5所述的设备,其中使用所述交换机的一个或多个上游端口将所述主机集合中的至少一部分直接连接到所述交换机,所述交换机的一个或多个下游端口将互连到多层式架构中的一个或多个其它交换机的上游端口以提供所述具体装置与所述主机集合之间的多路径冗余,所述具体装置连接到所述其它交换机中的具体交换机的下游端口,并且所述一个或多个其它交换机中的每个包括用于支持所述虚拟指配能力的相应控制主机。
8.如权利要求7所述的设备,其中所述主机集合包括多个主机,所述主机集合中的至少一个主机连接到其它交换机中的另一交换机的上游端口,所述虚拟分区包括多个虚拟分区,所述虚拟分区中的第一个被指配给所述主机集合中的第一个,并且所述虚拟分区中的第二个被指配给所述主机集合中的第二个。
9.如权利要求1所述的设备,其中所述增强路由能力包括虚拟装置能力,所述软件可执行以实例化在所述交换机上托管的一个或多个虚拟装置,所述交换机的下游端口连接到至少一个具体装置,所述交换机的上游端口连接到至少一个具体主机,所述虚拟装置中的至少具体虚拟装置将利用所述具体装置的资源,并且所述具体虚拟装置的至少部分资源被指配给所述具体主机。
10.如权利要求9所述的设备,其中所述具体装置对所述具体主机不可见。
11.如权利要求9所述的设备,其中所述具体虚拟装置被仿真为与所述具体装置不同的装置。
12.如权利要求1所述的设备,其中所述增强路由能力包括主机到主机通信能力,其包括在所述交换机上提供一个或多个虚拟装置,将对两个或更多主机的访问指配给具体虚拟装置,并且所述具体虚拟装置促进所述两个或更多主机之间的通信。
13.如权利要求12所述的设备,其中所述具体虚拟装置包括虚拟网络接口控制器(NIC)。
14.如权利要求1所述的设备,其中所述交换机进一步包括所述控制主机与交换逻辑之间的控制主机接口。
15.如权利要求1所述的设备,其中所述交换机进一步包括多个上游端口和多个下游端口。
16.如权利要求15所述的设备,其中每个所述端口包括用于地址转化的I/O逻辑。
17.如权利要求1所述的设备,其中当提供所述增强路由能力时,利用现有PCIe地址空间。
18.如权利要求1所述的设备,其中所述交换机缺乏控制流功能性。
19.如权利要求1所述的设备,其中所述业务包括服从PCIe的事务层分组(TLP),并且所述TLP将未封装和未分段地传送。
20.如权利要求1所述的设备,其中所述增强路由能力包括:
简单指配能力,用于将在所述交换机的一个或多个下游端口处的装置动态指配给连接到所述交换机的一个或多个上游端口的相应主机;
虚拟指配能力,用于定义由在所述交换机的一个或多个下游端口处的装置提供的资源的虚拟分区,并将每个分区指配给连接到所述交换机的一个或多个上游端口的相应主机;以及
虚拟装置能力,用于实例化要在所述交换机上托管的一个或多个虚拟装置,其中所述虚拟装置利用在所述交换机的一个或多个下游端口处的一个或多个装置的资源,并且每个虚拟装置被指配给连接到所述交换机的一个或多个上游端口的相应主机。
21.至少一个存储装置,在其上存储的机器可读代码内,所述代码可由处理器执行以:
在包括处理器装置的控制主机处通过接口接收事务层分组,其中所述控制主机被嵌入在服从外围组件互连高速(PCIe)的交换机中,所述接口促进所述控制主机与所述控制主机的交换逻辑之间的通信;
根据所述事务层分组确定所述分组的目的地;
使用所述控制主机生成要在所述交换机上托管的虚拟装置,其中所述虚拟装置消耗连接到所述交换机的一个或多个下游端口的一个或多个物理装置的资源,并且对连接到所述交换机的上游端口的主机隐藏所述一个或多个物理装置;以及
将所述分组定向到所述虚拟装置。
22.一种系统,包括:
多个主机,其中每个主机包括相应处理器装置;
多个装置;
交换机,包括控制主机,其中所述多个主机连接到所述交换机的多个上游端口,所述多个装置连接到所述交换机的多个下游端口,并且所述控制主机包括:
专用处理器装置;
存储器;
由所述处理器装置可执行的软件,用于处理在所述交换机的一个或多个端口处接收的业务以重定向至少一部分所述业务来提供一个或多个增强路由能力。
23.如权利要求22所述的系统,其中所述交换机进一步包括服从外围组件互连高速(PCIe)的交换逻辑以及用于将所述交换逻辑与所述控制主机对接的接口。
24.如权利要求22所述的系统,其中所述增强路由能力包括:
简单指配能力,用于将其中一个或多个所述装置动态地指配给所述交换机的相应主机;
虚拟指配能力,用于定义由所述装置提供的资源的虚拟分区,并将每个分区指配给所述主机中的相应主机;以及
虚拟装置能力,用于实例化要在所述交换机上托管的一个或多个虚拟装置,其中所述虚拟装置利用其中一个或多个所述装置的资源,并且每个虚拟装置被指配给所述主机中的相应主机。
25.如权利要求24所述的系统,其中通过所述交换机的路由根据其中两个或更多所述增强路由能力的组合。
26.一种方法,包括:
在包括处理器装置的控制主机处通过接口接收事务层分组,其中所述控制主机被嵌入在服从外围组件互连高速(PCIe)的交换机中,所述接口促进所述控制主机与所述控制主机的交换逻辑之间的通信;
根据所述事务层分组确定所述分组的目的地;
使用所述控制主机生成要在所述交换机上托管的虚拟装置,其中所述虚拟装置消耗连接到所述交换机的一个或多个下游端口的一个或多个物理装置的资源,并且对连接到所述交换机的上游端口的主机隐藏所述一个或多个物理装置;以及
将所述分组定向到所述虚拟装置。
27.一种系统,包括:
用于在包括处理器装置的控制主机处通过接口接收事务层分组的部件,其中所述控制主机被嵌入在服从外围组件互连高速(PCIe)的交换机中,所述接口促进所述控制主机与所述控制主机的交换逻辑之间的通信;
用于根据所述事务层分组确定所述分组的目的地的部件;
用于使用所述控制主机生成要在所述交换机上托管的虚拟装置的部件,其中所述虚拟装置消耗连接到所述交换机的一个或多个下游端口的一个或多个物理装置的资源,并且对连接到所述交换机的上游端口的主机隐藏所述一个或多个物理装置;以及
用于将所述分组定向到所述虚拟装置的部件。
CN201680068242.1A 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构 Active CN108337910B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211334256.7A CN115687234A (zh) 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/978179 2015-12-22
US14/978,179 US10191877B2 (en) 2015-12-22 2015-12-22 Architecture for software defined interconnect switch
PCT/US2016/062968 WO2017112198A1 (en) 2015-12-22 2016-11-20 Architecture for software defined interconnect switch

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211334256.7A Division CN115687234A (zh) 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构

Publications (2)

Publication Number Publication Date
CN108337910A true CN108337910A (zh) 2018-07-27
CN108337910B CN108337910B (zh) 2023-02-21

Family

ID=59066150

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211334256.7A Pending CN115687234A (zh) 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构
CN201680068242.1A Active CN108337910B (zh) 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202211334256.7A Pending CN115687234A (zh) 2015-12-22 2016-11-20 用于软件定义的互连交换机的架构

Country Status (4)

Country Link
US (1) US10191877B2 (zh)
CN (2) CN115687234A (zh)
DE (1) DE112016005910T5 (zh)
WO (1) WO2017112198A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2011013981A (es) * 2009-06-29 2012-09-07 Research In Motion Ltd Sistema y metodo para servicio de voz en un sistema evolucionado de paquetes.
US10191877B2 (en) 2015-12-22 2019-01-29 Intel Corporation Architecture for software defined interconnect switch
DE102016109938B4 (de) * 2016-05-30 2022-05-25 Unify Patente Gmbh & Co. Kg Verfahren zum Integrieren eines Kommunikationsendgeräts als bevorzugtes Gerät in eine statische Konfiguration eines Kommunikationssystems sowie ein hierfür ausgebildetes Kommunikationssystem
US11055247B2 (en) * 2016-12-30 2021-07-06 Intel Corporation System and method to enable fairness on multi-level arbitrations for switch architectures
US10360092B1 (en) * 2017-05-17 2019-07-23 Amazon Technologies, Inc. Hybrid hardware and software reporting management
US11178023B2 (en) * 2017-06-30 2021-11-16 Intel Corporation Data plane interface network quality of service in multi-tenant data centers
US11249808B2 (en) * 2017-08-22 2022-02-15 Intel Corporation Connecting accelerator resources using a switch
US11966350B2 (en) * 2018-02-05 2024-04-23 Cisco Technology, Inc. Configurable storage server with multiple sockets
US10509753B2 (en) 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10795400B2 (en) 2018-04-30 2020-10-06 Qualcomm Incorporated Time synchronization for clocks separated by a communication link
US10824356B2 (en) 2018-05-11 2020-11-03 Intel Corporation Malleable controller for storage protocols
US10909012B2 (en) 2018-11-12 2021-02-02 H3 Platform, Inc. System having persistent memory
US10585833B1 (en) * 2019-01-28 2020-03-10 Quanta Computer Inc. Flexible PCIe topology
US11537548B2 (en) * 2019-04-24 2022-12-27 Google Llc Bandwidth allocation in asymmetrical switch topologies
TWI784165B (zh) * 2019-05-06 2022-11-21 旺玖科技股份有限公司 Usb主機對主機晶片
US11132321B2 (en) 2020-02-26 2021-09-28 Quanta Computer Inc. Method and system for automatic bifurcation of PCIe in BIOS
US11675722B2 (en) 2021-04-16 2023-06-13 Apple Inc. Multiple independent on-chip interconnect
CN113775936B (zh) * 2021-08-18 2023-10-24 国家管网集团大连液化天然气有限公司 一种lng接收站辅助系统多主采集方法
US11803471B2 (en) 2021-08-23 2023-10-31 Apple Inc. Scalable system on a chip
WO2024098291A1 (en) * 2022-11-09 2024-05-16 Microsoft Technology Licensing, Llc Software defined rack

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102007730A (zh) * 2007-10-24 2011-04-06 社会传播公司 在共享虚拟区域通信环境中的自动化实时数据流交换
US20130151750A1 (en) * 2010-08-19 2013-06-13 Balaji Kanigicherla Multi-root input output virtualization aware switch
CN103262034A (zh) * 2010-10-28 2013-08-21 惠普发展公司,有限责任合伙企业 将数据分区至虚拟机
US20150071292A1 (en) * 2010-12-07 2015-03-12 Pluribus Networks Inc Method and system for processing packets in a network device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236987B1 (en) * 2003-02-28 2007-06-26 Sun Microsystems Inc. Systems and methods for providing a storage virtualization environment
US7929565B2 (en) 2007-12-12 2011-04-19 Dell Products L.P. Ethernet switching of PCI express packets
US8442048B2 (en) 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
US9141571B2 (en) * 2010-12-28 2015-09-22 Avago Technologies General Ip (Singapore) Pte. Ltd. PCI express switch with logical device capability
US8621178B1 (en) * 2011-09-22 2013-12-31 Emc Corporation Techniques for data storage array virtualization
US9037772B2 (en) * 2012-01-05 2015-05-19 Hewlett-Packard Development Company, L.P. Host based zone configuration
US9652370B2 (en) * 2013-12-05 2017-05-16 National Instruments Corporation Address range decomposition
US20150261709A1 (en) 2014-03-14 2015-09-17 Emilio Billi Peripheral component interconnect express (pcie) distributed non- transparent bridging designed for scalability,networking and io sharing enabling the creation of complex architectures.
US9647894B2 (en) * 2014-07-30 2017-05-09 International Business Machines Corporation Mapping relationships among virtual elements across a system
US10191877B2 (en) 2015-12-22 2019-01-29 Intel Corporation Architecture for software defined interconnect switch

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102007730A (zh) * 2007-10-24 2011-04-06 社会传播公司 在共享虚拟区域通信环境中的自动化实时数据流交换
US20130151750A1 (en) * 2010-08-19 2013-06-13 Balaji Kanigicherla Multi-root input output virtualization aware switch
CN103262034A (zh) * 2010-10-28 2013-08-21 惠普发展公司,有限责任合伙企业 将数据分区至虚拟机
US20150071292A1 (en) * 2010-12-07 2015-03-12 Pluribus Networks Inc Method and system for processing packets in a network device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092773A (zh) * 2019-12-25 2020-05-01 成都九芯微科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN111092773B (zh) * 2019-12-25 2022-06-21 成都华大九天科技有限公司 一种支持虚拟交换的pcie交换芯片端口配置系统和方法
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN114265804B (zh) * 2021-12-13 2024-06-11 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法

Also Published As

Publication number Publication date
US20170177528A1 (en) 2017-06-22
WO2017112198A1 (en) 2017-06-29
US10191877B2 (en) 2019-01-29
CN115687234A (zh) 2023-02-03
DE112016005910T5 (de) 2018-09-13
CN108337910B (zh) 2023-02-21

Similar Documents

Publication Publication Date Title
CN108337910A (zh) 用于软件定义的互连交换机的架构
CN105718390B (zh) 共享存储器链路中的低功率进入
CN109154924B (zh) 多个上行链路端口设备
CN108604209B (zh) 扁平化端口桥
CN110036380B (zh) 用于高速互连中低延迟的双模phy
CN107077521B (zh) 片上系统配置元数据
CN108292267A (zh) 总线-装置-功能地址空间的推测性枚举
CN109426648A (zh) 用于由智能网络接口控制器处理网络分组的技术
CN105378694B (zh) 用于执行与通用串行总线(usb)装置的管理组件传输协议(mctp)通信的方法、设备和系统
CN105593830B (zh) 用于测量电路的物理单元中的等待时间的方法、装置和系统
CN107111576A (zh) 发布的中断架构
CN105793830A (zh) 在节点之间共享存储器和i/o服务
CN109213706A (zh) 用于访问作为存储器的存储设备的系统和方法
CN104932996B (zh) 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
WO2022103485A1 (en) Source ordering in device interconnects
CN110262923A (zh) 带内重定时器寄存器访问
CN110442534A (zh) 用于相干消息的高带宽链路层
CN109582605A (zh) 通过PCIe的一致性存储器设备
TW200826594A (en) Network interface techniques
CN109844725A (zh) 点对点互连中的非对称通道
CN109643299A (zh) 在具有现有tlp定义的pcie上的持久存储器写入语义
CN107003838B (zh) 解码信息库
JP2021090188A (ja) ストリーミングファブリックインタフェース
CN107750476A (zh) 边带导体谐振减轻
CN107111584A (zh) 到片上网络的接口的高带宽核

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant