CN105579987A - 通用pci express端口 - Google Patents

通用pci express端口 Download PDF

Info

Publication number
CN105579987A
CN105579987A CN201480049076.1A CN201480049076A CN105579987A CN 105579987 A CN105579987 A CN 105579987A CN 201480049076 A CN201480049076 A CN 201480049076A CN 105579987 A CN105579987 A CN 105579987A
Authority
CN
China
Prior art keywords
pcie
end points
main frame
address
virtual
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
CN201480049076.1A
Other languages
English (en)
Other versions
CN105579987B (zh
Inventor
迈克尔·B·加勒
赫曼特·M·温彻
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN105579987A publication Critical patent/CN105579987A/zh
Application granted granted Critical
Publication of CN105579987B publication Critical patent/CN105579987B/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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/409Mechanical coupling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

Abstract

这里公开了用于提供通用PCIe端口的方法和系统。相同的端口可被配置为对称地将PCIe组件接受为主机或端点(设备)。当PCIe连接被配置为主机或端点时,PCIe端口可分别被连接到主机接口或者根联合体接口。可为主机提供将该主机与相应端点相关联的虚拟拓扑。虚拟拓扑中的相应端点的虚拟地址与相应端点的本地地址之间的映射被提供。

Description

通用PCI EXPRESS端口
技术领域
本公开一般涉及计算领域,并且更具体地涉及用于在计算机系统中提供通用PCIExpress(PCIe)端口的方法和系统。
背景技术
计算机服务器通常包括诸如中央处理单元(CPU)、存储器、和输入/输出(I/O)设备之类的组件。随着针对计算的需求增加,计算机服务器中的组件的数量也在增加。为互连这些组件,刀片服务器底架能够提供机架单元,在该机架单元中,组件卡可通过多个插槽被插入互连结构中。在售的刀片服务器底架可在单个底架中提供4、8、12、16或更多个插槽。
通过刀片服务器底架中提供的互连结构,组件卡能够与刀片服务器底架中的其他组件卡或者(例如,当刀片服务器底架提供网络连通性时)通过网络与其他系统通信。互连结构的功能通常由专用硬件提供(出于性能原因),例如互连结构可被实现为专用集成电路(ASIC)。取决于所选取的刀片服务器底架的配置,互连结构将具有各自被配置为仅接收特定类型的组件卡(例如,具有一个或多个CPU的主机、具有IO设备的目标设备、网络接口控制器、或者硬件驱动(或者类似的存储设备))的插槽。
因此,互连结构中将底架的组件卡互连的专用硬件对服务器组件能够在数据中心中进行配置的方式提出了一些限制。例如,添加不可与现有底架中的空插槽协作的组件提起了对于新底架的昂贵购买。在另一实例中,底架中的一些插槽可能被空置,因而浪费了底架的有价值的物理空间和资源。另外,如果不同的组件不能够被容易地分解,针对各种类型的组件卡的基础设施以及组件卡自身不能够被独立地调整或更新。
附图说明
为提供对本公开及其特征和优点的更全面理解,结合附图参考以下描述,其中类似的标号表示类似的部分,其中:
图1根据本公开的一些实施例示出了刀片服务器底架中的互连结构的示意性框图;
图2根据本公开的一些实施例示出了互连结构的示意性功能图示;
图3根据本公开的一些实施例示出了通过网络通信地连接的两个互连结构的示意性框图;
图4根据本公开的一些实施例示出了示意性PCIe以太网分组;以及
图5根据本公开的实施例示出了用于重传PCIe以太网分组的场景。
具体实施方式
概述
这里公开了用于提供通用PCIe端口的方法和系统。相同的端口被配置为对称地将PCIe连接接受为主机(例如,作为上游端口或虚拟交换机端口的PCIe组件)或者端点(例如,具有下游连接的PCIe组件)。如果PCIe设备是主机或者端点,则PCIe端口分别被连接到主机接口或者根联合体接口。可为主机提供将主机与相应端点(或端点设备)相关联的虚拟拓扑。虚拟拓扑中的相应端点的虚拟地址与相应端点的本地地址之间的映射被提供。
另外,这里公开了用于提供通用PCIe端口的方法和系统。相同的端口被配置为对称地将PCIe连接接受为主机或者端点。朝向端点的下游业务被截获并且通过使用映射将下游业务中的虚拟地址转换为本地地址。下游业务使用本地地址而不是虚拟地址被转发到端点。针对对于多个主机共享相同本地地址的端点,反向查找可被提供以在转发上游业务时确定本地地址对应于这些主机中的哪个主机。
作为一个实施例,提供了用于允许远程PCIe设备透明地与本地主机(例如,上游端口或虚拟交换机端口)相关联的PCIe以太网(PCIeoverEtheret)。除了提供PCIe虚拟化机制外,PCIe以太网实施例还提供了经采取以确保传输机制仍然满足PCIeexpress标准中的传输层分组所需的要求的非平凡措施。
示例实施例
一种普遍的互连结构架构包括外设组件互连快速(PeripheralComponentInterconnectExpress,PCIeTM)架构(例如,在2011年11月29日公布的PCIeTM协议版本4.0(此后称为PCIeTM规范))。注意,本公开可应用于任何版本的PCIe规范。PCIe(由PCI-SIG(PCI特殊兴趣小组)维护和研发的标准)的首要目标是使得来自不同供应商的组件和设备能够在跨多个市场区段(客户端(台式和移动)、服务器(标准和企业级)、以及嵌入式和通信设备)的开放架构中相互操作。PCIe是针对各种各样的计算和通信平台定义的高性能通用I/O互连。PCIe的近期版本利用了点对点互连、基于交换的技术、以及分组化协议的进步来达到性能和功能的新层次。PCIe是用于服务器处理器(包括x86和ARM架构)的首要连通性选项。
为提供更多的灵活性,物理PCIe端口已经能够被实现为在PCIe接口处被虚拟化,这使得PCIe端口能够通用且对称地接受主机和端点(或者端点设备)。通用PCIe端口在服务器配置中提供了更多的灵活性,允许服务器设计者通过将服务器的主机(例如,被配置为上游端口或虚拟交换机端口的计算机处理单元和存储器)与端点(例如,诸如存储设备和网络接口控制器之类的输入/输出(I/O)设备、端点设备)相分离来分解数据中心中的服务器组件。分解允许服务器设计将端点与主机解耦合,允许这些子系统被独立地调整并被独立地刷新至新的技术步骤。另外,在PCIe接口处分解服务器允许被解耦合的子系统在基于长期标准的总线间进行演进。例如,具有插入式刀片(组件卡)的多服务器底架可受益于允许服务器刀片(主机)或I/O子系统刀片(端点)被插入到任何可用插槽中的一个或多个通用PCIe端口。因此,物理PCIe连接的虚拟化允许独立的服务器和I/O在相同的物理封装(envelop)内进行调整。
例如,刀片底架插槽可被配置为接受服务器刀片、基于PCIe的闪存刀片、包括PCIe控制器的传统存储介质刀片、用于浮点加速的GPU、加密加速器、以及其他设备,这允许顾客使用共同的基础设施在不同的时候在不同方向扩展服务器能力。这具有允许顾客独立于IO子系统联合体(端点)地升级和调整GPU和存储器联合体(主机)的优点。当与允许设备或功能被分配给此服务器的本地地址空间中的个体服务器的虚拟化技术相结合时,该优点被成倍放大,因为它使得IO设备能够跨越多个服务器(包括旧有操作系统)被共享和调整,因为它依靠于标准设备列举(enumeration)、资源映射、和命名机制。另外,PCIe结构或交换机可被配置为支持设备虚拟化,单个I/O设备可在多个独立服务器间被共享。
在本公开的上下文内,主机可包括一个或多个处理器(通常是服务器系统的“CPU”)以及可选地包括支持一个或多个处理器的一个或多个存储器元件。主机可被配置为上游端口或虚拟交换机端口,端点可与该上游端口或虚拟交换机端口进行通信。I/O或端点(或者端点设备)可包括以下各项中的一项或多项:网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、图形卡、硬驱、存储设备、CD/DVD/ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描器、以及其他输入/输出设备。一般在PCIe用语中,这样的I/O或端点设备被称作端点。在不同的术语中,主机可以是“主设备(master)”并且端点可以是“从设备(slave)”。在一些情形中,设备可包括PCIe至PCI/PCI-X桥接以支持旧有或其他版本的PCI设备。
提供通用PCIe端口不是普通的任务。在创建统一通用端口时存在设备虚拟化、地址、和命名问题,以及其他难题。通用PCIe端点是到PCIe结构或交换机的连接,其支持到相同物理端口的主机CPU连通性以及I/O设备端点连通性。通用PCIe端口逻辑包含PCIeMAC(介质访问控制器,或者一般作为端口管理器),该PCIeMAC具有连接到上游(或者PCIe根联合体端口)或者下游(或者PCIe设备或交换机端口)的能力。除了PCIeMAC之外,具有虚拟化PCIe地址空间、PCIe设备标识、PCIe消息传送、和PCIe终端的逻辑也存在。此硬件设备虚拟化是关键组件,因为它允许不同设备或功能被分配到相关联端口的地址空间和名称空间内的不同服务器主机。
为提供通用PCIe端口,许多特性在服务器底架中的改进互连结构中被提供,其中互连结构由将一组设备互连的点对点链路组成。一般而言,互连结构包括用于处理设备之间的业务以及用于提供通信路由能力(即,交换机、总线、信号线等等)以转发这些业务的专用硬件和电路。例如,互连结构可被至少部分地实现在专用集成电路(ASIC)上,并且通用PCIe端口可包括PCIe组件/卡/设备能够连接到的输入和输出引脚/引线并且在PCIe组件/卡/设备与互连结构之间提供到互连结构的信号连通性。为进行说明,图1根据本公开的一些实施例示出了刀片服务器底架中的互连结构100的示意性框图。
一个或多个主机可通过PCIe通道102连接到主机接口105,并且每个主机可利用一个或多个虚拟拓扑104(被示出为PCIe层次结构(或者被称为“PCIe树”))被虚拟化。虚拟拓扑将主机与一个或多个端点相关联,表明服务器系统中一个或多个主机与一个或多个端点间的关系。连接到互连结构的其他设备以及互连结构中的设备可通过主机接口寻址并与主机进行通信。一个或多个端点设备可通过PCIe通道108连接到根联合体接口106。使用端点的一个或多个本地地址,连接到互连结构的其他连接/设备以及互连结构中的设备可通过根联合体接口寻址并与主机进行通信。
一般地,互连结构包括一个或多个处理器110和本地存储器112(包括一个或多个存储器元件)以处理设备间的业务。一个或多个处理器可包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器、或其他处理器。本地存储器112可包括任何适合的一个或多个计算机可读非暂态存储器元件。一个或多个处理器110和本地存储器112扮演若干重要角色。
首先,互连结构中的一个或多个处理器可用作配置代理和/或端口处理器。一个或多个处理器可确定连接到通用PCIe端口的物理PCIe组件是要被配置为主机还是端点。PCIe组件卡不是带有主机就是带有端点(可能具有多个主机和端点),因此一些互连结构可具有检测/确定PCIe组件是要被配置为主机(例如,上游设备)还是端点(下游设备)的能力。在一些实例中,如果互连结构不能够自己确定PCIe组件卡是带有主机还是带有端点,则管理者可提供用户输入,该用户输入向互连结构指示被连接到互连结构的PCIe组件是主机还是端点。基于来自管理者的用户输入(例如,通过用户接口),一个或多个处理器确定PCIe总线上所发现的PCIe组件要被配置为主机还是端点。从而,一个或多个处理器在PCIe组件被配置为主机时在PCIe端口处将PCIe组件连接到主机接口105或者在PCIe组件被配置为端点时将PCIe组件连接到根联合体接口。在一个实施例中,分别取决于PCIe设备是/具有主机或端点设备,一个或多个处理器可配置一个或多个复用器以选择一组信号线来提供PCIe组件(分别)到主机接口或者根联合体接口之间的上游信号连通性或者下游信号连通性。
第二,一个或多个处理器配置互连结构以利用分离的虚拟拓扑来虚拟化每个主机,例如每个虚拟拓扑包括PCIe树/层次结构。虚拟拓扑将具体主机与相应的端点相关联,其中从具体主机的视角来看,相应端点是可使用一个或多个虚拟地址进行寻址的。另外,一个或多个处理器提供虚拟拓扑中使用的虚拟地址到由根联合体接口使用的(实际/物理的)本地地址之间的一个或多个映射以用于对端点进行寻址。从主机视角(即,来自主机的视角)看的虚拟地址可不同于从本地视角(即,来自一个或多个端点和互连结构中的一个或多个处理器的视角)看的本地地址。映射因此允许虚拟地址被转换至本地地址(反之亦然)。一个或多个处理器因此具有以下作用:适当地分配和配设端点的地址空间以及端点的虚拟地址到本地地址的映射从而确保各个主机之间的独立和隔离的操作(例如,提供主机的隔离操作,其中一个主机不知道另一主机和/或不与该另一主机进行交互)。
第三,互连结构中的一个或多个处理器可用作主机接口处的主机与根联合体接口处的端点之间的代理或代理处理器。一个或多个处理器可拦截和/或转发主机和端点之间的上游和下游业务并执行虚拟地址和本地地址之间的任何必要转换。在一些实施例中,一个或多个处理器可被配置为将业务封装至远程主机/端点设备以用于通过不同的通信协议(例如,以太网)传输业务。
图2根据本公开的一些实施例示出了互连结构的示意性功能图示。一旦确定连接到PCIe端口的PCIe组件是/具有主机还是端点,PCIe端口根据该确定被连接到主机接口202或根联合体接口204(例如,PCIe端口处的PCIe组件被提供有到适合的接口/总线/交换机的信号连通性)。在示例性实施例中,多达16个主机(“主机0”……“主机15”)可被连接到主机接口202。eCPU206可以是(在功能上和/或可通信地位于)主机接口202和根联合体接口204之间的代理处理器。eCPU206可列举在根联合体接口204处连接的PCIe端点,并且向主机接口202处的主机呈现作为虚拟网络接口卡(vNIC)的端点。在示例性实施例中,多达128个外部的虚拟/物理端点(或端点设备)可被连接到根联合体接口204。
在上电之后,取决于所选择的产品配置(其在本公开的范围之外),eCPU206可列举端点(以及中间交换机,如果存在的话)并且针对端点BDF的配置空间维持本地配置视角(图2中的“本地CFG视角”)。eCPU206针对所发现的一个或多个各种端点分配存储器/IO基地址寄存器(BAR)地址范围。所分配的存储器/IOBAR地址范围可被定义于互连结构中的本地存储器204内和/或主机处的存储器内。
在PCIe的情境内被连接到根联合体接口的端点是可使用诸如(相应的)总线/设备/功能(BDF)号、一个或多个存储器空间地址、和/或一个或多个输入/输出空间地址之类的本地地址进行寻址。在PCIe快速中,这些本地地址基于本地配置视角(在图2中被标示为“本地CFG视角”),即来自嵌入式计算机处理单元206(此后为“eCPU”,包括一个或多个处理器)和端点的角度的端点配置。本地配置视角定义了eCPU206如何能够对本地地在根联合体接口204(由其提供的物理网络)内的端点设备进行寻址。在一些实施例中,根联合体接口204可将端点呈现为具有端点的本地地址的虚拟网络接口卡(vNIC)。
为与PCIe端点设备通信,eCPU206可使用BDF号来访问设备的配置空间以对端点进行寻址/识别。另外,eCPU206可使用例如在端点设备的配置空间中的基地址寄存器(BAR)中编程的存储器空间或I/O空间地址来寻址端点的I/O和存储器区域/空间(例如,规定了本地存储器208中的一个或多个区域)。使用本地地址、BDF号、和/或BAR来寻址端点是根据PCIe标准执行的。
如果PCIe组件是主机(或者PCIe端口要被配置为主机),则eCPU206确定主机的一个或多个相应端点。该确定可基于来自管理者通过用户接口的用户输入而被执行,该用户输入将特定主机与一个或多个相应端点或端点设备相关联。主机和端点(或者端点设备)之间的关联的管理可以是基于策略的或者手动规定的,并且可从基于网络的配置控制台中进行控制或者从主机CPU中进行配置。
在确定相应的端点之后,eCPU206提供将主机与一个或多个端点相关联的虚拟拓扑,该一个或多个端点可通过一个或多个相应端点的虚拟地址来寻址。虚拟地址是在主机配置视角(由“主机CFG视角”标示)内定义的,并且可以不同于相应端点的本地地址。为确保主机能够正确地寻址相应的端点,eCPU206提供了相应端点的虚拟地址与相应端点的本地地址之间的第一映射。
如果PCIe组件是端点(或者PCIe端口要被配置为端点),则eCPU206可配置端点以将该端点与连接到互连结构的主机相关联。eCPU206可例如基于来自管理者的用户输入、通过将特定端点与主机相关联用户接口来为端点确定主机。在确定了相应主机之后,针对相应主机的第二虚拟拓扑被确定(或者如果第二虚拟拓扑尚不存在,则被配设),其中第二虚拟拓扑将相应主机与特定端点相关联。eCPU206可提供第二虚拟拓扑中的虚拟地址(寻址/标识特定端点)和端点的本地地址之间的第二映射。
第一映射和第二映射由例如eCPU206中的PCIe虚拟化引擎提供(或者在一些情形中不需要来自eCPU206的协助,而是由另一处理器、功能或专用单元提供),以将从主机配置视角看的虚拟地址转换为从本地配置视角看的本地地址。为确保PCIe组件/连接被正确地寻址,第一映射和第二映射(被标示为“转换表210”)可将主机CFG视角BDF和BAR转换为本地CFG视角BDF和BAR。在一些实施例中,第一映射和第二映射可各自包括查找表(例如,内容可寻址存储器(CAM)或任何适合的数据结构),该查找表将由特定主机使用的端点的虚拟地址与那些端点的相应本地地址相关联。映射允许主机透明地对端点寻址而无需知道端点的实际本地地址。通过映射的虚拟化还可允许eCPU(或其他适合的独立实体)确保本地存储器208被正确地分配给端点。另外,通过为不同主机的端点提供分离的虚拟拓扑并且适当地配设本地地址,主机被使能以独立并且彼此分离地进行操作。此外,eCPU206通过转换表210有效地虚拟化了根联合体端点配置空间的主机视角。
在一个或多个转换表被配置之后,eCPU206可管理上游业务和下游业务。在本公开的上下文内,上游业务包括从端点到主机接口202处的主机和/或eCPU206的通信(即,PCIe流量),并且下游业务包括从eCPU206和主机接口202处的主机到在根联合体接口204处连接的端点的通信(即,PCIe流量)。
PCIe上游和下游业务可在以下四个类别中进行描述。下面的字母A-D对应于图2中示出的转发路径中的标号A-D。
A.eCPU206可发送/转发下游业务到根联合体接口204处的端点以用于以下目的:
i.列举端点(例如,设备发现和配置);
ii.在eCPU206上实现的vNIC的操纵以寻址端点设备;以及
iii.处理来自主机的PCIe业务以及需要由eCPU206代理的其他PCIe间接业务/请求。
B.在使用转换表210将BDF和BAR地址从主机CFG视角转换为本地CFG视角(例如,转换可由eCPU206管理)之后,主机可发送由硬件直接转发的配置/I/O/存储器(CFG/IO/MEM)相关的下游业务。
C.来自端点设备的上游直接存储器存取(DMA)业务/请求/上游中断/PCIe消息被转发到主机存储器或者本地存储器208(DMA业务可对准主机存储器、ASIC中的本地存储器、或者甚至PCIe层次结构内的其他设备(被称作PCIe对等(peertopeer)业务))。针对由多个主机共享的BDF,可选的上游地址转换被执行。
D.不能够由硬件直接转发的上游业务被发送到eCPU206。示例包括:
i.除了存储器(MEM)业务/请求类型之外的业务;
ii.BDF查找表没能解析与主机相关联的主机的标识符(例如,host_id/vNIC);
iii.PCIe业务/消息和PCIe业务层错误,像中毒、ECRC错误等等;以及
iv.由访问控制列表(ACL)查找表可选地捕获(trap)的业务。
因为主机使用主机CFG视角来寻址一个或多个端点,来自主机的下游业务被eCPU206截获并且下游业务中使用的一个或多个虚拟地址被通过使用与主机相关联的一个或多个相应端点的一个或多个虚拟地址与本地CFG视角中的一个或多个相应端点的一个或多个本地地址之间的映射进行转换。下游业务然后使用一个或多个本地地址而非一个或多个虚拟地址被转发到一个或多个适当端点上。
当例如端点的本地地址(例如,BDF号)和主机之间存在1比1分配/关系(被示出为模式212)时,来自端点的上游业务可由硬件被直接转发到主机或eCPU206。这可应用于以下情形:PCIe组件卡未由多个主机共享,或者PCIe组件卡由多个主机共享但设备可通过单一根I/O虚拟化(SR/IOV)技术的使用根据它自己的BDF号来寻址。在这样的模式中可提供简单的反向查找,这允许对与该上游业务源自的本地地址(例如,请求者/端点设备BDF号)直接相对应的正确主机的查找来确定特定上游业务的目的地主机。
然而,在一些实施例中,本地地址(单一BDF)可由多个主机共享(被示出为模式214)。换而言之,PCIe端口处的同一PCIe组件卡可包括能够与不同主机相关联(例如,多个主机共享同一PCIe组件卡)同时使用相同的本地地址(例如,相同的BDF号)的多个端点设备。在这些实施例中,上游业务可例如由eCPU206处理以确定上游业务要指向多个主机中的哪个主机。为确定该上游业务被指向多个主机中的哪一个,上游转换器可被提供,并且(例如使用转换表210来)执行存储器地址的反向查找。上游转换器可包括将不同主机与共享同一本地地址的端点可用的不同存储器地址或地址范围相关联的信息。上游转换器可确定存储器地址所对应的主机的标识符,并且使用标识符将上游业务转发至主机接口。
性能数据路径被称作由硬件进行的直接处置(例如,由模式212使用的路径)。根联合体接口可针对业务源自的端点确定相应主机的目的地vNIC,并且将业务直接转发到主机存储器或本地存储器208并且相应地将响应数据和状态作为PCIe完成返回到端点。
包括由转换表210明确地捕获的请求、除了MEM存取之外的请求、和/或PCIe消息的上游业务通过中断eCPU206进行处理。这被称作间接处置并且被视为缓慢/例外路径。在一些情形中,为避免由需要由eCPU206进行间接处置的上游业务导致的线端拥塞,可提供逐vNIC间接业务环。每个vNIC间接环大小可被配置为在某一时刻多达64个待处理业务并且每个vNIC环可使用可配置中断地址来中断eCPU。
在一些实施例中,来自端点的主数据路径DMA流量包括到主机存储器或本地存储器208的MEM读/写(RD/WR)业务。在此模式(被视为快速路径)中,上游业务(例如,存储器请求)被硬件使用的主机或本地存储器地址直接转发。一般地,上游存储器请求和它们的完成是由流水线直接处理的。其他类型的业务(IO、MSG等等)作为间接业务可被转发到eCPU进行处置。
为提供用于转发上游业务的快速路径,查找表被提供,该查找表将(端点设备的)BDF号与相应主机和/或相应主机的vNIC地址相关联。这可在具有或者不具有eCPU206的情况下被执行。如果查找表不能够解析相应主机的vNIC地址,上游业务在间接模式中被处理。间接模式被提供以在eCPU206的协助下支持共享的端点使用模型。在此模式中,BDF查找表自身不能够解析vNIC地址,因为本地地址(例如,BDF号)可被多个主机设备共享。反向查找可被执行以从多个主机中确定正确的主机,或者上游业务可利用主机地址空间中的未使用比特(用于对主机寻址)来编码主机标识符。
在一些实施例中,针对端点的本地地址范围/区域可被分配为与128字节的边界自然对齐的连续范围。主机的最大地址宽度可以是用于上游存储器描述符的[47:0]。当本地地址(例如,BDF号)在多个主机间共享时,主机地址空间可具有一些未使用的比特。上游转换器可灵活地使用空间/未使用的地址比特来在未使用的比特中编码标识符(host_id或者任何适合的主机标识符)。eCPU206可用作主机的代理处理器以将直接存储器存取散集列表(DMASGL列表)描述符地址公布给端点设备并且向端点提供在未使用的地址比特中具有经编码的主机标识符的一个或多个主机地址。因此,端点可利用经编码的主机标识符在上游业务中发送主机地址。经编码的主机标识符然后可被用于将上游业务路由至相应的主机。例如,互连结构中的硬件可在将上游业务转发给主机之前将经更改的比特恢复回它们的原始值。
为在此模式中操作,假设端点不使用所有可寻址的主机存储器空间(例如,地址空间[47:0])。因此,如果存在一些未使用的主机地址比特,则eCPU可在代表主机向端点公布DMASGL地址时在描述符地址的未使用地址比特中插入独有的主机_指针(host_index)(或者“host_id”或者任何适合的主机标识符)。当端点发出上游DMA请求时,硬件将剥离host_index比特并且使用它来确定相应主机的vNIC号。编码host_id或host_index所需要的未使用的地址比特可以根据共享BDF的2/4/8/16个主机而逐BDF变化。使用此模式,在多个主机之间共享端点以及eCPU206是可能的。
上游业务(存储器请求)可经历另一查找,该查找用于通过使能对特定BDF的host_index字段的比较来解析共享BDF模型的vNIC号、捕获对特定VNIC的请求并将它间接地发送至eCPU、捕获针对某一主机/本地存储器范围的请求并将它间接地发送至eCPU、以及利用地址转换对针对某一主机/本地存储器范围的上游业务中的地址进行转换以用于直接转发。查找的一个用例是设置条目来保护某一本地存储器区域从而使得来自端点设备的错误/未预料到的DMA存取不会损坏本地存储器208。
在一些实施例中,中断(MSI写业务或者旧有PCIe消息)还可被转换以使得业务被定向至正确/相应的主机,而不论它是共享的资源还是直接BDF映射。针对共享的中断资源,寻址方案可被用于选择主机,或者中断可通过eCPU或另一映射硬件被代理以将中断递送到正确的主机。
甚至可以跨越通信网络(例如,以太网网络,或者数据中心以太网网络)在具有支持图1-2中所述的虚拟化特性的互连结构的另一服务器底架处提供通用PCIe端口的功能。PCIe业务可使用不同的通信协议进行封装和传输,并且这些业务可在接收到时被解封装并且使用这里公开的虚拟化特性进行处理。例如,插入到远程服务器底架中的PCIe插槽中的端点可使用这里公开的虚拟化特性进行配置以将远程服务器底架中的端点与本地服务器底架中的主机相关联。在一些实施例中,PCIe业务可被封装在以太网分组中并且通过以太网(但是可预见到其他通信协议)进行传输。例如,以太网分组可通过以太网连接上的隧道从一个PCIe组件被传输到另一PCIe组件(上游或下游)。
图3根据本公开的一些实施例示出了通过网络通信地连接的两个互连结构的示意性框图。此示例性系统通过以太网在第一互连结构304处的主机302与第二互连结构308的一个或多个端点306a和306b之间经由隧道传输PCIe业务的独立传输层分组(TLP)。PCIe业务可被路由通过L2交换机310。第二互连结构308可执行对它的PCIe总线的列举并且发现一个或多个端点306a和306b。然后,第二互连结构可向第一互连结构发送通信以指示一个或多个端点306a和306b已经被发现。
在一些实施例中,基于来自管理者的用户输入,第二互连结构308确定PCIe组件306a和306b要被配置为端点并且将它们连接到第二互连结构308处的根联合体接口。本地地址可被配设来对根联合体接口处的端点进行寻址。例如,本地地址可包括以下各项中的至少一项以对PCIe组件寻址:一个或多个总线/设备/功能(BDF)号、一个或多个存储器空间地址、以及一个或多个输入/输出空间地址。PCIe组件虚拟化引擎或者广义上的PCIe虚拟化引擎可将一个或多个端点呈现为具有(一个或多个本地地址)的一个或多个虚拟网络接口卡(vNIC)。另外,基于用户输入,第一互连结构可确定PCIe组件302要被配置为主机,并且将PCIe设备302连接至互连结构的主机接口。虚拟拓扑被提供以使用端点306a和306b的一个或多个虚拟地址来将主机302与一个或多个端点306a和306b相关联。虚拟地址由主机302用于对端点306a和306b寻址。映射然后被提供,其在(主机配置空间中的)虚拟地址和端点的(一个或多个本地配置空间中的)相应本地地址之间进行映射/转换。虚拟地址和本地地址可以是不同的。虚拟化主机和端点的处理类似于关于图1和图2所述的处理。注意,下游和上游转换可以如关于图1和图2所述相同的方式被执行。例如,目的地为远程端点的下游业务被截获,并且使用由PCIe虚拟化引擎提供的映射来转换这些下游业务中所使用的虚拟地址。
为提供主机302和一个或多个端点306a和306b之间的适合通信信道,第一互连结构304的网络地址(例如,L2地址)被从第一互连结构发送到第二互连结构308,并且第二互连结构308的网络地址在第一互连结构304处被从第二互连结构接收。可预见到用于向通信信道的各端通知它的对等者(peer)的网络地址的其他步骤。网络地址的交换允许在第一互连结构304和第二互连结构308之间配设通信隧道以用于在主机302和一个或多个端点306a和306b之间传输PCIe业务(即,PCIe以太网分组)。PCIe业务(具体地,TLP分组)可通过将TLP分组封装在以太网分组中而被传输。封装可在发送经封装的分组前被执行。解封装/提取可在接收到经封装的分组之后被执行。经提取的PCIe业务然后被转发至适合的PCIe设备。
用于在远程地且通信地连接的PCIe设备之间传输PCIe业务的隧道协议可包括序列号检查和重传以确保帧的可靠有序递送,如PCIe传输层分组(TLP)所要求的那样。如果以太网链路或交换机故障,则隧道通过在替换路径上重新发送帧来继续操作。为了满足PCIeTLP业务的要求,以太网连接优选地满足以下项中的至少一项:(1)低延时,由于PCIe层超时可随着过量延迟而发生;(2)被分配到支持暂停的数据中心以太网(DCE)网络服务等级(COS)上,以最小化分组丢失的几率并提供高质量服务;(3)服务器和PCIe卡机架单元应当在同一的数据中心中,优选地被连接到同一L2交换机。如果以上条件被满足,则PCIe以太网技术可在主机和(第三方)PCIe端点之间提供可靠连接。性能将首要地取决于第三方端点(或端点设备)的延时容忍度-例如,支持更大数量的待处理PCIe读请求的设备将遭受最小的性能影响,因为与具有少量待处理PCIe读请求的设备相比的增加的主机存储器读延时。对设备读延时的示例性估计约为1.5微秒。为进行对比,直接连接到主机的PCIe端点可预期约为300纳秒的理想读延时。然而,此数是高度可变的并且取决于x86处理器状态,其可在增加的延时中达到数10微秒。为了通过以太网PCIe来维持从主机到端点的10Gb/s的数据流,要求至少8个待处理的读取来容忍1.5微秒的延时(假设256字节的TLP有效载荷)。注意,从端点到主机的PCIe以太网流量未被延时显著影响,因为写入不需要设备中的保留资源。
PCIe以太网协议定义了连接建立、分组封装、可靠递送、以及在故障时的替换路径重试。协议可保证CRC保护的PCIe业务在PCIe发起者和目标(上游或下游)之间的按顺序递送。为建立连接,PCIe以太网连接是使用管理代理(例如,图2中的eCPU206或者第一互连结构304和/或第二互连结构308中的任何适合处理器)进行设置的。目标侧(即,第二互连结构308)执行PCIe总线的本地列举并且向管理代理通知所发现的卡。管理代理可将一个或多个端点306a和306b分配给主机302(例如,在虚拟拓扑中)。注意,具有单一根I/O虚拟化的PCIe卡可将每个功能(BDF号)分配给单个主机或各个主机,假设物理驱动器可由目标互连结构处的本地管理代理运行。管理代理向第一互连结构304通知设备关联并且创建包括针对要被连接到的各个远程PCIe设备的虚拟PCIe插槽的vNIC配置。发起者主机(即,第一互连结构304)可在正常的PCIe列举过程期间、在远程PCIe插槽的下一次重启过程中发现它。管理代理还可向该连接的各端通知它的对等者的L2地址。一旦连接被建立,去往/来自远程设备ID的所有PCIe业务在PCIe以太网隧道中被转发至远程对等者。
第一互连结构可截获下游业务并且确定目标端点(例如,一个或多个端点306a和306b)通过第一互连结构304和第二互连结构308之间的通信隧道被远程地连接。作为响应,分组头部被构造用于向端点发送经截获的下游业务(例如,使用第二互连结构的L2网络地址)。分组头部可被用于封装经截获的下游业务,并且经封装的分组通过通信隧道被转发到第二互连结构。
图4根据本公开的一些实施例示出了示意性PCIe以太网分组。在示例分组中,来自TLP业务的数据有效载荷和PCIe地址被封装在具有特定PCIe以太网类型的L2分组中。图4中示出了以太网帧的单一PCIe的格式。
分组头部可标识第二互连结构的网络地址以允许分组被路由至第二互连结构。另外,PCIe以太网分组可包括以下示例性字段中的一个或多个字段:
·TxSN[8]-当前帧的发送序列号
·AckSn[8]-确认序列号,或者最后接收到的良好TxSN
·TLP[]-3DW(12字节)或者4DW(16字节),如PCIe所定义的那样
·Data[]-数据有效载荷,0-4096字节,大小由TLP长度字段定义
·PCIeCRC[32]-保护SN、TLP和数据的循环冗余校验(CRC)
PCIe以太网头部可与PCIeTLP相等。序列号字段TxSN和AckSN以及PCIeCRC在标准化的TLP定义之外。具体地,在转发经封装的下游业务前,误差检测码(例如,CRC)可被附加到以太网分组以保护下游业务中的一个或多个PCIe序列号、传输层分组(TLP)、和数据有效载荷的数据完整性。
PCIe以太网可利用滑动窗口协议以及后退n重试来从检测到的错误中恢复。每个帧在发送之前被标记以序列号。例如,序列号以业务被发送的次序来进行分配(随着业务被发送而递增,重复一系列号)。接收互连结构可使用例如PCIeCRC和/或现有的802.3FCS(CRC-32校验和)来检查数据完整性。发送的序列号与预期的序列号之间的失配或者CRC或FCS误差将导致接收机丢弃该帧。匹配预期的序列号并且具有正确FCS的接收到的帧将被直接传递到正确的PCIe设备。正确接收到的帧可生成返回给对等者的确认通知。确认通知可被独立地或者利用下一向外传输背负式地进行发送。确认通知可被丢失或合并。如果在可编程的重传计时器到期之后未接收到确认通知,则一个或多个帧将被重传,该重传自最后未确认的帧开始。例如,重传计时器可在具有PCIe业务的PCIe以太网分组被发送时即被启动,并且如果在特定的超时时段内未接收到针对所发送的业务的确认,则PCIe以太网分组被重传。如果发生超出可编程阈值的多个重传,则替换隧道路径可被选择。
现代的PCIe设备驱动器可最小化到设备的PIO读操作。这有助于PCIe以太网,因为所引入的增加的延时可导致主机CPU停顿并且最好被避免。还要注意,最关键的超时事件是主机PIO读请求。多个PCIe以太网重传事件可显著地延长延时,逼近主机PCIe超时值。最小的PCIe超时值是50微秒,但更通常地该值被设置为数十微秒。PIO写不具有严格的延时要求,目标设备读和写操作也不具有严格的延时要求。因此,主机PIO读是易受超时失败影响的首要请求。
所发送的PCIe以太网帧可被测量(span)并被存储在专用存储器(图5中被标示为“RQ”)中。如果远程对等的互连结构经由它的AckSN字段确认了对到来的帧的接收,则RQ缓冲器被静默地释放并且准备好重复使用。如果远程对等的互连结构没能在重传计时器持续期内确认接收,则重传被执行。重传经由与重传RQ相关联的熔断存储器(被标示为“WQ”)被执行。当重传事件被发起时,重写引擎将根据序列号状态设置公布指针(posted_index)和取回_指针(fetch_index)并然后启用WQ。
针对此RQ+WQ对,以下内容可以是真的(参见图5的图形描述):
·RQ+WQ中的缓冲器的指针还等于它包含的帧的TxSN。
·当新的Ack到达时,RQ.posted_index<=RxAckSN-1,这有效地释放缓冲器和远程确认。
·在重传事件上,WQ.posted_index<=TxSN;WQ.fetch_index<=RxAckSN
·在一些实施例中,如果N次重试未被确认,则下次重传事件应当尝试替换路径;确保N*超时值小于PCIe超时值。
在一个示例实现方式中,实现这里所描述的实施例所涉及的各种设备或组件可包括用于实现所述功能的软件,并且这里公开的这些设备或组件可包括在体现于一个或多个非暂态有形介质中以用于辅助这里描述的活动的软件。互连结构、PCIe虚拟化引擎、端口管理器、用户接口、和/或管理代理中的至少一部分还可包括用于存储有待用于实现如本文所概括的功能的信息的存储器设备(存储器元件)64。另外,这里所述的互连结构可包括能够执行软件或算法以执行本说明书中所论述的功能的一个或多个处理器。这些设备可在适当情况下并且基于具体需要将信息保存在任何合适的存储器元件(随机存取存储器(“RAM”)、ROM、EPROM、EEPROM、ASIC等)、软件、硬件中,或维持在任何其他合适的组件、设备、元件或对象中。这里论述的任何存储器项目应被解释为涵盖在广义术语“存储器元件”内。类似地,本文在本说明书中描述的潜在处理元件、模块和机器中的任一种应被解释为涵盖在广义术语“处理器”内。每个元件还包括用于在网络环境中接收、传输和/或以其他方式传达数据或信息的合适接口。
注意,在某些示例性实现方式中,这里并在图1-3中概括的功能可由编码在一个或多个有形介质中的逻辑实施(例如,在专用集成电路(“ASIC”)中提供的嵌入式逻辑、数字信号处理器(“DSP”)指令、要由处理器或其他类似机器执行的软件(潜在地包括对象代码和源代码)等)。在这些实例的一些中,存储器元件(如图1-2中所示)可存储用于本文描述的操作的数据。这包括能够存储被执行以进行本文在本说明书中详述的活动的软件、逻辑、代码或处理器指令的存储器元件。处理器可执行与实现本文在本说明书中详述的操作的数据相关联的任何类型的指令。在一个示例中,处理器(如图5中所示)可将元件或物件(例如,数据)从一种状态或情况转变到另一种状态或情况。在另一个示例中,本文概括的活动可利用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)实现,并且本文标识的元件可以是可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(“FPGA”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程ROM(“EEPROM”))、或包括数字逻辑、软件、代码、电子指令或其任何合适的组合的ASIC中的某种类型。
应当注意到,这里论述的基础设施(例如,各种接口、转换表、缓存、交叉开关、子系统等等)中的多数可被配设为任何类型的计算元件的一部分。如这里所用,术语“计算元件”、“计算设备”、“交换机”、“主机”、“端点”等等是可互换的并且可涵盖可操作以在网络中交换信息的计算机,服务器,网络器具,底架,主机,路由器,交换机,网关,网桥,虚拟设备,电路负载均衡器,防火墙,处理器,模块,或任何其他适合的设备、组件、元件、或对象。例如,术语“端点”可与用于发起通信的各种计算设备相关联,例如任何类型的接收机,计算机,机顶盒,互联网无线电设备(IRD),蜂窝电话,智能电话,膝上型计算机,平板,个人数字助理(PDA),GoogleAndroidTM,iPhoneTM,iPadTM,MicrosoftSurfaceTM或者能够发起系统内的语音、音频、视频、媒体或数据交换的任何其他设备、组件、元件、端点或对象。
此外,这些元件可包括促进其操作的任何合适的硬件、软件、组件、模块、接口或对象。这可以包括允许有效交换数据或信息的适当的算法和通信协议。
在一种实现方式中,这些元件/设备可包括实现(或促成)本文论述的活动的软件。这可包括附图中所示的组件、引擎、逻辑、模块等中任一种的实例的实现方式。另外,这些设备中的每一个可具有促进在此描述的一些操作的内部结构(例如,处理器、存储器元件等)。在其他实施例中,这些管理活动可在这些设备外部被执行,或被包括在一些其他设备中以实现预期功能性。可替代地,这些网络设备可包括可与其他元件协作以便执行本文描述的活动的软件(或往复式软件)。在其他实施例中,一个或几个设备可包括促进其操作的任何合适的算法、硬件、软件、组件、模块、接口或对象。
注意,在以上提供的示例以及本文提供的众多其他示例的情况下,可以就两个、三个或四个计算机元件来描述交互。然而,仅出于清晰和示例的目的而这样做。在某些情况下,通过仅提及有限数量的元件可更容易描述给定一组流程的功能性中的一种或多种。应理解,参考附图描述和示出的拓扑(及其教导)易于扩展并可容纳大量的组件、以及更复杂/精细的布置和配置。因此,所提供的示例不应限制所示系统的范围或抑制所示拓扑的广泛教导,因为所示拓扑潜在地可应用于无数其他架构。
同样重要的是注意,先前流程图中的步骤仅示出可由附图中所示的通信系统执行或在附图中所示的通信系统内执行的可能信令情形和模式中的一些。在适当情况下可删除或移除这些步骤中的一些,或可在不脱离本公开范围的情况下相当大地修改或改变这些步骤。另外,这些操作中的一些已经描述为与一个或多个另外的操作同时或并行执行。然而,这些操作的定时可被相当大地变更。出于示例和论述目的提供先前操作流程。所述系统可提供显著灵活性,因为在不脱离本公开教导的情况下,可提供任何合适的布置、时间表、配置和定时机制。
尽管已经参考具体布置和配置详细描述了本公开,但在不脱离本公开的范围的情况下,这些示例性配置和布置可显著改变。例如,尽管已经参考具体通信交换而描述了本公开,但这里所述的实施例可应用于其他架构。
本领域的技术人员可探知众多其他改变、替代、变动、变更和修改,并且本公开旨在涵盖落入所附权利要求书的范围内的此类改变、替代、变动、变更和修改。为了帮助美国专利商标局(USPTO)并且另外帮助基于本申请发布的任何专利的任何读者理解在此所附的权利要求书,申请人希望注意,申请人:(a)并不旨在所附权利要求中的任一项援引35U.S.C第112章第六(6)段(因为其在本申请的申请日已存在),除非字词“用于……装置”或“用于……步骤”明确地用在具体权利要求中;并且(b)并不旨在由本说明书中的任何陈述以未在所附权利要求书中另行反映出的任何方式限制本公开。

Claims (20)

1.一种用于配置服务器底架的外设组件互连快速(PCIe)端口以将连接到该PCIe端口的PCIe组件接受为主机或端点的方法,所述方法包括:
确定被能通信地连接到所述PCIe端口的所述PCIe组件具有主机还是端点;
如果所述PCIe组件是主机,则:
将所述主机连接到互连结构中的主机接口;
确定针对所述主机的一个或多个相应端点;
提供针对所述主机的第一虚拟拓扑,该第一虚拟拓扑将所述主机与所述主机的一个或多个相应端点的一个或多个虚拟地址相关联;以及
提供所述一个或多个相应端点的所述一个或多个虚拟地址与所述相应端点的一个或多个本地地址之间的第一映射;
如果所述PCIe设备是端点设备,则:
将所述端点连接到所述互连结构中的根联合体接口,其中所述端点是能够根据本地地址通过所述根联合体接口来寻址的;
确定所述端点的相应主机以及与所述相应主机相关联的第二虚拟拓扑;以及
提供所述第二虚拟拓扑中的虚拟地址与所述端点的本地地址之间的第二映射。
2.如权利要求1所述的方法,其中,依据所述PCIe组件是主机还是端点来将所述主机连接到所述主机接口以及将所述的端点连接到所述根联合体接口包括配置复用器来分别为所述PCIe端口选择以下项中的一项:(1)所述PCIe端口到所述主机接口之间的信号上游连通性,或者(2)所述PCIe端口与所述根联合体接口之间的信号下游连通性。
3.如权利要求1所述的方法,其中:
所述第一虚拟拓扑和所述第二虚拟拓扑各自包括将主机与一个或多个端点相关联的PCIe树。
4.如权利要求1所述的方法,其中:
端点的一个或多个虚拟地址不同于端点的一个或多个本地地址;并且
所述第一映射和所述第二映射提供从一个或多个虚拟地址到一个或多个本地地址和/或从一个或多个本地地址到一个或多个虚拟地址之间的转换。
5.如权利要求1所述的方法,其中:
所述第一虚拟拓扑与所述第二拓扑相分离以提供主机的隔离操作,其中所述主机中的一个主机不知道所述主机中的另一主机和/或不与所述主机中的另一主机交互。
6.如权利要求1所述的方法,其中:
所述第一映射和所述第二映射中的一个或多个本地地址包括能够用于对被连接到所述根联合体接口的一个或多个端点进行寻址的一个或多个总线/设备/功能(BDF)号、一个或多个存储器空间地址、以及一个或多个输入/输出空间地址中的至少一者。
7.如权利要求1所述的方法,其中:
所述第一映射和所述第二映射各自包括将虚拟地址与端点的相应本地地址相关联的查找表和/或内容可寻址存储器表。
8.如权利要求1所述的方法,其中:
所述第一映射和所述第二映射是由所述互连结构中的所述主机接口和所述根联合体接口之间的代理处理器提供的。
9.如权利要求1所述的方法,其中:
所述PCIe组件是在同一PCIe组件卡上的多个端点中的一个端点;
所述多个端点共享所述根联合体接口处的相同总线/设备/功能号作为所述本地地址,并且所述多个端点对应于不同的主机;并且
所述方法还包括:提供用于执行对存储器地址的反向查找的上游转换器,该反向查找被用于来自端点的业务中以确定所述存储器地址对应于所述不同的主机中的哪个主机。
10.如权利要求9所述的方法,其中:
所述上游转换器包括将所述不同的主机与能够由所述多个端点使用的不同存储器地址范围相关联的信息。
11.一种用于配置服务器底架的外设组件互连快速(PCIe)端口以将所连接的PCIe组件接受为主机或端点的互连结构,所述互连结构包括:
端口管理器,该端口管理器被配置为:
确定被能通信地连接到所述PCIe端口的所述PCIe组件具有主机还是端点;
如果所述PCIe组件是主机,则将所述主机连接到互连结构中的主机接口;
如果所述PCIe设备是端点,则将所述端点连接到所述互连结构中的根联合体接口,其中所述端点是能够根据本地地址通过所述根联合体接口来寻址的;
PCIe虚拟化引擎,该PCIe虚拟化引擎被配置为:
如果所述PCIe组件是主机,则:
确定针对所述主机的一个或多个相应端点;
提供所述一个或多个相应端点的所述一个或多个虚拟地址与所述相应端点的一个或多个本地地址之间的第一映射;
提供所述主机的一个或多个端点的所述一个或多个虚拟地址与所述相应端点的一个或多个本地地址之间的第一映射;
如果所述PCIe设备是端点,则:
确定所述端点的相应主机以及与所述相应主机相关联的第二虚拟拓扑;以及
提供所述第二拓扑中的虚拟地址与所述端点的本地地址之间的第二映射。
12.如权利要求11所述的互连结构,其中,依据所述PCIe组件是主机还是端点来将所述主机连接到所述主机接口以及将所述的端点连接到所述根联合体接口包括配置复用器来分别为所述PCIe端口选择以下项中的一项:(1)所述PCIe端口到所述主机接口之间的信号上游连通性,或者(2)所述PCIe端口与所述根联合体接口之间的信号下游连通性。
13.如权利要求11所述的互连结构,其中:
所述第一虚拟拓扑和所述第二虚拟拓扑各自包括将主机与一个或多个端点相关联的PCIe树。
14.如权利要求11所述的互连结构,其中:
端点的一个或多个虚拟地址不同于端点的一个或多个本地地址;并且
所述第一映射和所述第二映射提供从一个或多个虚拟地址到一个或多个本地地址和/或从一个或多个本地地址到一个或多个虚拟地址之间的转换。
15.如权利要求11所述的互连结构,其中:
所述第一映射和所述第二映射中的一个或多个本地地址包括能够用于对被连接到所述根联合体接口的一个或多个端点进行寻址的一个或多个总线/设备/功能(BDF)号、一个或多个存储器空间地址、和一个或多个输入/输出空间地址中的至少一者。
16.如权利要求11所述的互连结构,还包括:
所述PCIe虚拟化引擎中、在所述互连结构中的所述主机接口和所述根联合体接口之间的代理处理器,该代理处理器用于提供所述第一映射和所述第二映射。
17.如权利要求11所述的互连结构,其中:
所述PCIe组件是在同一PCIe组件卡上的多个端点中的一个端点;
所述多个端点共享所述根联合体接口处的相同总线/设备/功能号作为所述本地地址,并且所述多个端点对应于不同的主机;并且
所述互连结构还包括:所述PCIe虚拟化引擎中用于执行对存储器地址的反向查找的上游转换器,该反向查找被用于来自端点的业务中以确定所述存储器地址对应于所述不同的主机中的哪个主机。
18.如权利要求17所述的互连结构,其中:
所述上游转换器包括将所述不同的主机与能够由所述多个端点使用的不同存储器地址范围相关联的信息。
19.一种服务器底架,包括:
机架单元,该机架单元具有用于接收一个或多个外设组件互连快速(PCIe)组件卡的一个或多个PCIe插槽;
用于配置所述服务器底架中的PCIe端口以将PCIe组件接受为主机或端点的互连结构,所述互连结构包括:
端口管理器,该端口管理器被配置为:
确定被能通信地连接到所述PCIe端口的所述PCIe组件具有主机还是端点;
如果所述PCIe组件是主机,则将所述主机连接到互连结构中的主机接口;
如果所述PCIe设备是端点,则将所述端点连接到所述互连结构中的根联合体接口,其中所述端点是能够根据本地地址通过所述根联合体接口来寻址的;
PCIe虚拟化引擎,该PCIe虚拟化引擎被配置为:
确定针对所述主机的一个或多个相应端点;
提供针对所述主机的第一虚拟拓扑,该第一虚拟拓扑将所述主机与所述主机的一个或多个相应端点的一个或多个虚拟地址相关联;
提供所述一个或多个相应端点的所述一个或多个虚拟地址与所述相应端点的一个或多个本地地址之间的第一映射;
确定所述端点的相应主机以及与所述相应主机相关联的第二虚拟拓扑;以及
提供所述第二虚拟拓扑中的虚拟地址与所述端点的本地地址之间的第二映射。
20.如权利要求19所述的服务器底架,其中,依据所述PCIe组件是主机还是端点来将所述主机连接到所述主机接口以及将所述的端点连接到所述根联合体接口包括配置复用器来分别为所述PCIe端口选择以下项中的一项:(1)所述PCIe端口到所述主机接口之间的信号连通性,或者(2)所述PCIe端口与所述根联合体接口之间的信号连通性。
CN201480049076.1A 2013-09-06 2014-07-28 通用pci express端口 Active CN105579987B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/019,777 US9152591B2 (en) 2013-09-06 2013-09-06 Universal PCI express port
US14/019,777 2013-09-06
PCT/US2014/048454 WO2015034587A1 (en) 2013-09-06 2014-07-28 Universal pci express port

Publications (2)

Publication Number Publication Date
CN105579987A true CN105579987A (zh) 2016-05-11
CN105579987B CN105579987B (zh) 2019-07-26

Family

ID=51355651

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201480049078.0A Active CN105531684B (zh) 2013-09-06 2014-07-28 通用pci express端口
CN201480049076.1A Active CN105579987B (zh) 2013-09-06 2014-07-28 通用pci express端口
CN201480049081.2A Active CN105531685B (zh) 2013-09-06 2014-07-28 通用pci express端口

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201480049078.0A Active CN105531684B (zh) 2013-09-06 2014-07-28 通用pci express端口

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480049081.2A Active CN105531685B (zh) 2013-09-06 2014-07-28 通用pci express端口

Country Status (4)

Country Link
US (3) US9152591B2 (zh)
EP (3) EP3042297B1 (zh)
CN (3) CN105531684B (zh)
WO (3) WO2015034589A1 (zh)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152591B2 (en) 2013-09-06 2015-10-06 Cisco Technology Universal PCI express port
US20150160627A1 (en) * 2013-12-05 2015-06-11 Dell Products L.P. Methods and systems for monitoring and management in a distributed architecture information handling system chassis
US10467166B2 (en) 2014-04-25 2019-11-05 Liqid Inc. Stacked-device peripheral storage card
US9678910B2 (en) 2014-04-25 2017-06-13 Liqid Inc. Power handling in a scalable storage system
US10031857B2 (en) * 2014-05-27 2018-07-24 Mellanox Technologies, Ltd. Address translation services for direct accessing of local memory over a network fabric
US9507740B2 (en) * 2014-06-10 2016-11-29 Oracle International Corporation Aggregation of interrupts using event queues
US9645902B2 (en) 2014-06-23 2017-05-09 Liqid Inc. Modular switched fabric for data storage systems
US9653124B2 (en) 2014-09-04 2017-05-16 Liqid Inc. Dual-sided rackmount storage assembly
US10362107B2 (en) 2014-09-04 2019-07-23 Liqid Inc. Synchronization of storage transactions in clustered storage systems
US10198183B2 (en) 2015-02-06 2019-02-05 Liqid Inc. Tunneling of storage operations between storage nodes
US9817787B2 (en) * 2015-03-26 2017-11-14 Intel Corporation Method, apparatus and system for encapsulating information in a communication
US10191691B2 (en) 2015-04-28 2019-01-29 Liqid Inc. Front-end quality of service differentiation in storage system operations
US10019388B2 (en) 2015-04-28 2018-07-10 Liqid Inc. Enhanced initialization for data storage assemblies
US10108422B2 (en) 2015-04-28 2018-10-23 Liqid Inc. Multi-thread network stack buffering of data frames
US9760513B2 (en) 2015-09-22 2017-09-12 Cisco Technology, Inc. Low latency efficient sharing of resources in multi-server ecosystems
CN106998347A (zh) * 2016-01-26 2017-08-01 中兴通讯股份有限公司 服务器虚拟化网络共享的装置和方法
US10255215B2 (en) 2016-01-29 2019-04-09 Liqid Inc. Enhanced PCIe storage device form factors
US11294839B2 (en) 2016-08-12 2022-04-05 Liqid Inc. Emulated telemetry interfaces for fabric-coupled computing units
US11880326B2 (en) 2016-08-12 2024-01-23 Liqid Inc. Emulated telemetry interfaces for computing units
CN109844722B (zh) 2016-08-12 2022-09-27 利奇得公司 分解式结构交换计算平台
US10255223B2 (en) 2016-12-05 2019-04-09 International Business Machines Corporation Detecting a type of storage adapter connected and miscabling of a microbay housing the storage adapter
EP3507675A4 (en) 2017-01-28 2020-02-12 Hewlett-Packard Development Company, L.P. ADAPTABLE CONNECTOR WITH EXTERNAL I / O PORT
WO2018200761A1 (en) 2017-04-27 2018-11-01 Liqid Inc. Pcie fabric connectivity expansion card
US10795842B2 (en) 2017-05-08 2020-10-06 Liqid Inc. Fabric switched graphics modules within storage enclosures
CN107046469B (zh) * 2017-05-11 2021-02-02 苏州浪潮智能科技有限公司 一种用于服务器负载均衡网卡设备扩展的方法
CN109656755A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 检测设备状态的方法和系统
CN109951365B (zh) * 2017-12-21 2021-12-28 财团法人工业技术研究院 结合PCIe总线与以太网络的网络通信方法、系统及控制器
US10817443B2 (en) * 2018-03-28 2020-10-27 SK Hynix Inc. Configurable interface card
US10660228B2 (en) 2018-08-03 2020-05-19 Liqid Inc. Peripheral storage card with offset slot alignment
US11544000B2 (en) * 2018-08-08 2023-01-03 Marvell Asia Pte Ltd. Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services
CN110941576B (zh) 2018-09-21 2021-11-19 苏州库瀚信息科技有限公司 具有多模pcie功能的存储控制器的系统、方法和设备
US11030144B2 (en) * 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)
US11360925B2 (en) * 2018-12-25 2022-06-14 Intel Corporation Method and apparatus for host adaptation to a change of persona of a configurable integrated circuit die
US10585827B1 (en) 2019-02-05 2020-03-10 Liqid Inc. PCIe fabric enabled peer-to-peer communications
US11036649B2 (en) 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning
EP3959860A4 (en) 2019-04-25 2023-01-25 Liqid Inc. MULTI-PROTOCOL COMMUNICATION CONTROL FOR TISSUE
EP3959604A4 (en) 2019-04-25 2023-01-18 Liqid Inc. MACHINE TEMPLATES FOR DEDICATED COMPUTING UNITS
JP6574917B1 (ja) * 2019-05-20 2019-09-11 富士通クライアントコンピューティング株式会社 情報処理システム、及び中継装置
CN112153087B (zh) * 2019-06-27 2022-06-24 山东华软金盾软件股份有限公司 一种第三方网络终端跨Net通讯方法
CN110688328B (zh) * 2019-09-27 2023-03-14 山东华芯半导体有限公司 一种axi总线分主机映射集的可配置重映射实现方法
CN111104213B (zh) * 2019-12-25 2023-10-10 上海众源网络有限公司 调整熔断的方法及装置
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
EP4167100A4 (en) * 2020-07-13 2023-11-08 Huawei Technologies Co., Ltd. PCIE SYSTEM EXTENSION METHOD, PCIE SWITCH DEVICE AND PCIE SYSTEM
CN111988394B (zh) * 2020-08-18 2022-11-01 北京金山云网络技术有限公司 一种虚拟化环境中优化p2p数据传输的方法、装置及设备
CN114201432A (zh) * 2020-09-02 2022-03-18 华为技术有限公司 用于usb传输的方法和电子设备
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11636053B2 (en) * 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11716383B2 (en) 2020-09-28 2023-08-01 Vmware, Inc. Accessing multiple external storages to present an emulated local storage through a NIC
US11442776B2 (en) 2020-12-11 2022-09-13 Liqid Inc. Execution job compute unit composition in computing clusters
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质
US20220359011A1 (en) * 2021-05-04 2022-11-10 Micron Technology, Inc. Redundancy and majority voting in a key-value data storage system using content addressable memory
US20220385587A1 (en) * 2021-05-25 2022-12-01 Google Llc Acknowledgement Coalescing Module Utilized In Content Addressable Memory (CAM) Based Hardware Architecture For Data Center Networking
US20230161502A1 (en) * 2021-11-23 2023-05-25 Silicon Motion Inc. Storage devices including a controller and methods operating the same
US11886356B2 (en) 2021-11-30 2024-01-30 Liqid Inc. Local instantiation of remote peripheral devices
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050270988A1 (en) * 2004-06-04 2005-12-08 Dehaemer Eric Mechanism of dynamic upstream port selection in a PCI express switch
CN101206633A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 用事务协议和共享存储器在主机系统间通信的系统和方法
CN100495377C (zh) * 2007-03-09 2009-06-03 华为技术有限公司 检测插入外设类型的方法和终端接口
US8189573B2 (en) * 2005-12-22 2012-05-29 Intel Corporation Method and apparatus for configuring at least one port in a switch to be an upstream port or a downstream port

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058738B2 (en) * 2004-04-28 2006-06-06 Microsoft Corporation Configurable PCI express switch which allows multiple CPUs to be connected to multiple I/O devices
US9264384B1 (en) * 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US8285907B2 (en) * 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks
US7565463B2 (en) 2005-04-22 2009-07-21 Sun Microsystems, Inc. Scalable routing and addressing
US7356636B2 (en) * 2005-04-22 2008-04-08 Sun Microsystems, Inc. Virtualized PCI switch
US20080137676A1 (en) 2006-12-06 2008-06-12 William T Boyd Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch
US7597592B2 (en) 2006-12-27 2009-10-06 Intel Corporation Automatic configuration of an interface to a host or client
US20080195756A1 (en) 2007-02-08 2008-08-14 Michael Galles Method and system to access a service utilizing a virtual communications device
US20080192648A1 (en) 2007-02-08 2008-08-14 Nuova Systems Method and system to create a virtual topology
US7752360B2 (en) 2007-05-16 2010-07-06 Nuova Systems, Inc. Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus
US8503468B2 (en) 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
US8296469B2 (en) * 2008-12-31 2012-10-23 Intel Corporation Scalable method and apparatus for link with reconfigurable ports
US8521915B2 (en) * 2009-08-18 2013-08-27 Fusion-Io, Inc. Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system
US8949499B2 (en) * 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8804747B2 (en) 2010-09-23 2014-08-12 Cisco Technology, Inc. Network interface controller for virtual and distributed services
US8788873B2 (en) * 2011-04-14 2014-07-22 Cisco Technology, Inc. Server input/output failover device serving highly available virtual devices
US8661178B2 (en) 2011-07-27 2014-02-25 Agilent Technologies, Inc. PCI-E system having reconfigurable link architecture
US8972611B2 (en) 2011-08-11 2015-03-03 Cisco Technology, Inc. Multi-server consolidated input/output (IO) device
US9864711B2 (en) * 2011-12-16 2018-01-09 Intel Corporation Automatic downstream to upstream mode switching at a universal serial bus physical layer
US9268732B2 (en) * 2012-06-08 2016-02-23 Advanced Micro Devices, Inc. Tunnel suitable for multi-segment communication links and method therefor
US20140237156A1 (en) * 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment
US9152591B2 (en) 2013-09-06 2015-10-06 Cisco Technology Universal PCI express port

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050270988A1 (en) * 2004-06-04 2005-12-08 Dehaemer Eric Mechanism of dynamic upstream port selection in a PCI express switch
US8189573B2 (en) * 2005-12-22 2012-05-29 Intel Corporation Method and apparatus for configuring at least one port in a switch to be an upstream port or a downstream port
CN101206633A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 用事务协议和共享存储器在主机系统间通信的系统和方法
CN100495377C (zh) * 2007-03-09 2009-06-03 华为技术有限公司 检测插入外设类型的方法和终端接口

Also Published As

Publication number Publication date
US9152591B2 (en) 2015-10-06
CN105531685B (zh) 2019-06-21
US9152593B2 (en) 2015-10-06
EP3042298B1 (en) 2018-04-04
EP3042297B1 (en) 2018-05-23
EP3042296A1 (en) 2016-07-13
CN105531685A (zh) 2016-04-27
US20150074321A1 (en) 2015-03-12
EP3042298A1 (en) 2016-07-13
US9152592B2 (en) 2015-10-06
US20150074322A1 (en) 2015-03-12
CN105531684A (zh) 2016-04-27
WO2015034587A1 (en) 2015-03-12
US20150074320A1 (en) 2015-03-12
WO2015034589A1 (en) 2015-03-12
CN105531684B (zh) 2019-06-21
CN105579987B (zh) 2019-07-26
EP3042297A1 (en) 2016-07-13
EP3042296B1 (en) 2018-03-21
WO2015034588A1 (en) 2015-03-12

Similar Documents

Publication Publication Date Title
CN105579987A (zh) 通用pci express端口
CN107278299B (zh) 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统
US8615622B2 (en) Non-standard I/O adapters in a standardized I/O architecture
KR101861312B1 (ko) 다중슬롯 링크 계층 플릿에서의 제어 메시징
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
JP5274730B2 (ja) PCIeアーキテクチャ中でのI/O拡張要求および応答のルーティング
US9479461B2 (en) Computer system and method for communicating data between computers
US8645606B2 (en) Upbound input/output expansion request and response processing in a PCIe architecture
CN104395895A (zh) 用于输入/输出虚拟化的系统和方法
CN105378694A (zh) 用于执行与通用串行总线(usb)装置的管理组件传输协议(mctp)通信的方法、设备和系统
CN103907102A (zh) 管理管芯上的系统组织结构中的边带路由器
US8352667B2 (en) I/O connection system and I/O connection method
US8799519B2 (en) Network-to-network bridge
CN101577712A (zh) 支持多终端远程接入的业务前置机及其网络接口卡
US20240104045A1 (en) System and method for ghost bridging
WO2017019104A1 (en) Network device emulation
TW201301815A (zh) 網路系統及網路至網路橋接器

Legal Events

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