CN111752872A - 用于灵活i/o端点加速的技术 - Google Patents
用于灵活i/o端点加速的技术 Download PDFInfo
- Publication number
- CN111752872A CN111752872A CN202010121526.0A CN202010121526A CN111752872A CN 111752872 A CN111752872 A CN 111752872A CN 202010121526 A CN202010121526 A CN 202010121526A CN 111752872 A CN111752872 A CN 111752872A
- Authority
- CN
- China
- Prior art keywords
- transaction
- endpoint
- soft
- response
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Cooling Or The Like Of Electrical Apparatus (AREA)
Abstract
本公开涉及用于灵活I/O端点加速的技术。用于灵活I/O端点加速的技术包括一种计算设备,其具有根复合体、耦合到根复合体的软端点和耦合到软端点的负载转移复合体。软端点基于端点固件建立模拟端点层次体系。计算设备可对端点固件编程。软端点接收源自于根复合体的I/O事务并且确定是否要处理该I/O事务。软端点可处理I/O事务或者将I/O事务转发到负载转移复合体。软端点可利用元数据封装I/O事务并且将封装的事务转发到负载转移复合体。软端点可将来自负载转移复合体的响应存储在历史缓冲器中并且响应于重试的I/O事务而取回响应。I/O事务可以是快速PCI事务层封包。描述和要求保护了其他实施例。
Description
技术领域
本公开涉及用于灵活I/O端点加速的技术。
背景技术
典型的快速PCI(PCI Express,PCIe)I/O设备包括固定功能端点。固定功能端点通常包括端点事务层、硬件基本配置空间和到I/O设备的其他部分的端点接口。该端点也可包括固定功能协议转换。PCIe设备还可包括硬件交换机、桥接器或者建立固定PCI层次体系的其他组件。
当前的计算系统可利用软件虚拟化在多个租户之间共享诸如盘驱动器或其他存储设备之类的计算资源,其中软件虚拟化通常是由虚拟机监视器、管理程序或者由主机处理器执行的虚拟化访客软件来执行的。一些计算系统可通过将某些虚拟化任务负载转移到负载转移复合体(offloadcomplex)来支持裸金属虚拟化(bare metal virtualization)。
发明内容
根据本公开的一方面,提供了一种用于I/O通信的软端点,该软端点包括:灵活端点,用于基于所述软端点的端点固件建立模拟端点层次体系;事务层,用于响应于所述模拟端点层次体系的建立而接收源自于计算设备的根端口的I/O事务;智能过滤器,用于(i)确定是否要处理所述I/O事务,并且(ii)响应于确定要处理所述I/O事务而处理所述I/O事务;以及端点接口,用于响应于确定不处理所述I/O事务而将所述I/O事务转发到所述计算设备的负载转移复合体。
根据本公开的一方面,提供了一种用于I/O通信的方法,该方法包括:由计算设备的软端点基于所述软端点的端点固件建立模拟端点层次体系,其中所述软端点耦合到所述计算设备的根端口,并且其中所述软端点还耦合到所述计算设备的负载转移复合体;响应于建立所述模拟端点层次体系,由所述软端点接收源自于所述根端口的I/O事务;由所述软端点确定是否要处理所述I/O事务;响应于确定要处理所述I/O事务,由所述软端点处理所述I/O事务;并且响应于确定不处理所述I/O事务,由所述软端点将所述I/O事务转发到所述负载转移复合体。
根据本公开的一方面,提供了一个或多个计算机可读存储介质,包括存储在其上的多个指令,这些指令响应于被执行而使得计算设备:由所述计算设备的软端点基于所述软端点的端点固件建立模拟端点层次体系,其中所述软端点耦合到所述计算设备的根端口,并且其中所述软端点还耦合到所述计算设备的负载转移复合体;响应于建立所述模拟端点层次体系,由所述软端点接收源自于所述根端口的I/O事务;由所述软端点确定是否要处理所述I/O事务;响应于确定要处理所述I/O事务,由所述软端点处理所述I/O事务;并且响应于确定不处理所述I/O事务,由所述软端点将所述I/O事务转发到所述负载转移复合体。
附图说明
在附图中以示例方式而非限制方式图示了本文描述的构思。为了图示的简单和清晰,附图中图示的元素不一定是按比例绘制的。在认为适当时,附图标记在附图之间被重复以指示出对应的或相似的元素。
图1是用于以解聚集的资源执行工作负载的数据中心的至少一个实施例的简化图;
图2是可被包括在图1的数据中心中的机房的至少一个实施例的简化图;
图3是可被包括在图2的机房中的机架的至少一个实施例的透视图;
图4是图3的机架的侧面立视图;
图5是其中安放有托架的图3的机架的透视图;
图6是图5的托架的顶侧的至少一个实施例的简化框图;
图7是图6的托架的底侧的至少一个实施例的简化框图;
图8是图1的数据中心中可使用的计算托架的至少一个实施例的简化框图;
图9是图8的计算托架的至少一个实施例的顶部透视图;
图10是图1的数据中心中可使用的加速器托架的至少一个实施例的简化框图;
图11是图10的加速器托架的至少一个实施例的顶部透视图;
图12是图1的数据中心中可使用的存储托架的至少一个实施例的简化框图;
图13是图12的存储托架的至少一个实施例的顶部透视图;
图14是图1的数据中心中可使用的存储器托架的至少一个实施例的简化框图;并且
图15是可在图1的数据中心内建立来利用由解聚集的资源构成的被管理节点执行工作负载的系统的简化框图。
图16是用于针对裸金属虚拟化的灵活端点加速的系统的至少一个实施例的简化框图;
图17是图16的计算设备的软端点和负载转移复合体的至少一个实施例的简化框图;
图18是图16-图17的计算设备可建立的环境的至少一个实施例的简化框图;
图19-图20是图16-图18的计算设备的软端点可执行的用于针对裸金属虚拟化的灵活端点加速的方法的至少一个实施例的简化流程图。
图21是图16-图18的计算设备可执行的用于事务重试的方法的至少一个实施例的简化流程图;并且
图22是可由图16-图18的计算设备建立的软端点层次体系的示意图。
具体实施方式
虽然本公开的构思容许各种修改和替换形式,但其具体实施例在附图中以示例方式示出并且将在本文中详细描述。然而,应当理解,并不意图将本公开的构思限制到所公开的特定形式,而是相反,意图是要覆盖符合本公开和所附权利要求的所有修改、等同和替换。
说明书中提及“一个实施例”、“一实施例”、“一说明性实施例”等等表明描述的实施例可包括特定的特征、结构或特性,但每个实施例可包括或者可不一定包括该特定特征、结构或特性。另外,这种短语不一定指同一实施例。另外,当联系一实施例来描述特定的特征、结构或特性时,认为联系其他实施例(无论是否明确描述)来实现这种特征、结构或特性是在本领域技术人员的知识范围内的。此外,应当明白,“至少一个A、B和C”形式的列表中包括的项目可以指(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B或C的至少一者”的形式列出的项目可以指(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。
公开的实施例在一些情况下可以用硬件、固件、软件或者其任何组合来实现。公开的实施例也可实现为由暂态或非暂态机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,这些指令可被一个或多个处理器读取和执行。机器可读存储介质可实现为用于以机器可读的形式存储或传输信息的任何存储设备、机构或者其他物理结构(例如,易失性或非易失性存储器、介质盘或者其他介质设备)。
在附图中,可按特定的布置和/或排序示出一些结构或方法特征。然而,应当明白这种特定的布置和/或排序可不是必需的。相反,在一些实施例中,可按与示意图中所示不同的方式和/或顺序来布置这种特征。此外,在特定附图中包括某个结构或方法特征并不打算暗示这种特征是所有实施例中必需的,并且在一些实施例中可不包括这种特征或者可将这种特征与其他特征组合。
现在参考图1,其中解聚集的资源(disaggregated resources)可合作执行一个或多个工作负载(例如,代表客户的应用)的数据中心100包括多个机房(pod)110、120、130、140,每个机房包括一排或多排机架(rack)。当然,虽然数据中心100被示为具有多个机房,但在一些实施例中,数据中心100可实现为单个机房。如本文更详细描述的,每个机架容纳多个托架(sled),每个托架可主要配备有特定类型的资源(例如,存储器设备、数据存储设备、加速器设备、通用处理器),即可被逻辑地耦合来形成合成节点的资源,该合成节点可充当例如服务器。在说明性实施例中,每个机房110、120、130、140中的托架连接到多个机房交换机(pod switch)(例如,向和从机房内的托架路由数据通信的交换机)。机房交换机进而与脊柱交换机(spine switch)150连接,脊柱交换机150在数据中心100中的机房(例如,机房110、120、130、140)之间交换通信。在一些实施例中,托架可与使用英特尔Omni-Path技术的架构连接。在其他实施例中,托架可与其他架构连接,例如InfiniBand或以太网。如本文更详细描述的,数据中心100中的托架内的资源可被分配到一群组(本文中称为“被管理节点(managed node)”),该群组包含来自一个或多个托架的资源以在工作负载的执行中被集体利用。工作负载可以就好像属于被管理节点的资源是位于同一托架上那样执行。被管理节点中的资源可属于分属不同机架以及甚至分属不同机房110、120、130、140的托架。这样,单个托架的一些资源可被分配到一个被管理节点,而同一托架的其他资源可被分配到不同的被管理节点(例如,一个处理器被指派到一个被管理节点,并且同一托架的另一处理器被指派到另一不同被管理节点)。
包括解聚集资源的数据中心——例如数据中心100——可被用于各种各样的情境中,例如企业、政府、云服务提供商以及通信服务提供商(例如,电信公司),也可用于各种各样的大小,从消耗超过100,000平方英尺的云服务提供商海量数据中心到用于基站中的单机架或多机架安装。
将资源解聚集到主要由单种类型的资源构成的托架(例如,计算托架主要包括计算资源,存储器托架主要包含存储器资源)并且对解聚集的资源进行选择性分配和解除分配以形成被指派来执行工作负载的被管理节点相对于典型数据中心改善了数据中心100的操作和资源使用,这些典型数据中心由将计算、存储器、存储以及可能额外的资源包含在单个机箱中的超会聚服务器构成。例如,因为托架主要包含特定类型的资源,所以给定类型的资源可独立于其他资源被升级。此外,因为不同的资源类型(处理器、存储、加速器等等)通常具有不同的刷新率,所以可实现更高的资源利用率和降低的总拥有成本。例如,数据中心运营者只要通过换出计算托架就可升级其整个设施中的处理器。在这种情况下,加速器和存储资源可不被同时升级,而是可被允许继续操作,直到这些资源被安排来进行其自己的刷新为止。资源利用率也可增大。例如,如果被管理节点是基于将在其上运行的工作负载的要求来构成的,则节点内的资源更有可能被充分利用。这种利用可允许更多的被管理节点以给定的一组资源在数据中心中运行,或者允许利用更少的资源来构建预期运行给定的一组工作负载的数据中心。
现在参考图2,机房110在说明性实施例中包括一组多排200、210、220、230的机架240。每个机架240可容纳多个托架(例如,十六个托架)并且向容纳的托架提供电力和数据连接,如本文更详细描述。在说明性实施例中,每一排200、210、220、230中的机架连接到多个机房交换机250、260。机房交换机250包括机房110的机架的托架连接到的一组端口252,以及将机房110连接到脊柱交换机150以提供到数据中心100中的其他机房的连通性的另一组端口254。类似地,机房交换机260包括机房110的机架的托架连接到的一组端口262和将机房110连接到脊柱交换机150的一组端口264。这样,一对交换机250、260的使用向机房110提供了一定量的冗余性。例如,如果交换机250、260的任一者发生故障,则机房110中的托架仍可通过另一交换机250、260与数据中心100的剩余部分(例如,其他机房的托架)维持数据通信。此外,在说明性实施例中,交换机150、250、260可实现为双模式光学交换机,既能够路由携带互联网协议(Internet Protocol,IP)封包的以太网协议通信,也能够经由光学架构的光学信令介质路由根据第二种高性能链路层协议(例如,英特尔的Omni-Path体系结构的、InfiniBand、快速PCI)的通信。
应当明白,其他机房120、130、140的每一者(以及数据中心100的任何额外机房)可与图2中示出和参考图2描述的机房110类似地构造并且具有与其类似的组件(例如,每个机房可具有如上所述的容纳多个托架的机架排)。此外,虽然示出了两个机房交换机250、260,但应当理解在其他实施例中,每个机房110、120、130、140可连接到不同数目的机房交换机,提供甚至更多的故障转移能力。当然,在其他实施例中,机房的布置可与图1-图2中所示的机架排配置不同。例如,机房可实现为多组机架,其中每组机架是径向布置的,即,机架与中央交换机是等距离的。
现在参考图3-图5,数据中心100的每个说明性机架240包括两个细长支柱302、304,它们是垂直布置的。例如,细长支柱302、304在被部署时可从数据中心100的地板向上延伸。机架240还包括如下所述被配置为支撑数据中心100的托架的水平的一对或多对310细长支撑臂312(在图3中经由虚线椭圆标识)。一对细长支撑臂312中的一个细长支撑臂312从细长支柱302向外延伸并且另一细长支撑臂312从细长支柱304向外延伸。
在说明性实施例中,数据中心100的每个托架被实现为无机箱托架。也就是说,每个托架具有无机箱电路板基板,其上如下文更详细论述安放有物理资源(例如,处理器、存储器、加速器、存储装置等等)。这样,机架240被配置为接收无机箱托架。例如,每对310细长支撑臂312定义机架240的一个托架槽320,其被配置为接收相应的无机箱托架。为此,每个说明性细长支撑臂312包括被配置为接收托架的无机箱电路板基板的电路板导轨330。每个电路板导轨330被紧固到或者以其他方式安放到相应的细长支撑臂312的顶侧332。例如,在说明性实施例中,每个电路板导轨330相对于相应细长支柱302、304被安放在相应细长支撑臂312的远端。为了附图的清晰,可不在每幅图中引用每个电路板导轨330。
每个电路板导轨330包括限定电路板槽380的内壁,该电路板槽380被配置为在托架400被接收在机架240的相应托架槽320中时接收托架400的无机箱电路板基板。为此,如图4中所示,用户(或者机器人)将说明性无机箱托架400的无机箱电路板基板对齐到托架槽320。用户或者机器人随后可将无机箱电路板基板向前滑动到托架槽320中,使得无机箱电路板基板的每个侧边缘414被接收在如图4中所示限定相应托架槽320的一对310细长支撑臂312的电路板导轨330的相应电路板槽380中。通过让机器人可触及且机器人可操纵的托架包括解聚集的资源,每种类型的资源可被彼此独立地并且以其自己优化的刷新率来升级。此外,托架被配置为与每个机架240中的电力和数据通信线缆盲配对,增强了其被迅速移除、升级、重安装和/或更换的能力。这样,在一些实施例中,数据中心100可在数据中心场地上没有人类介入的情况下操作(例如,执行工作负载、经历维护和/或升级等等)。在其他实施例中,人类可促进数据中心100中的一个或多个维护或升级操作。
应当明白,每个电路板导轨330是双面的。也就是说,每个电路板导轨330在电路板导轨330的每侧包括限定电路板槽380的内壁。这样,每个电路板导轨330可在任一侧支撑无机箱电路板基板。这样,单个额外的细长支柱可被添加到机架240以将机架240变成可支持两倍那么多的如图3中所示的托架槽320的双机架方案。说明性机架240包括七对310细长支撑臂312,它们限定相应的七个托架槽320,每个托架槽320如上所述被配置为接收并支撑相应的托架400。当然,在其他实施例中,机架240可包括额外或更少对310的细长支撑臂312(例如,额外或更少的托架槽320)。应当明白,因为托架400是无机箱的,所以托架400可具有不同于典型服务器的整体高度。这样,在一些实施例中,每个托架槽320的高度可矮于典型服务器的高度(例如,矮于单个机架单位“1U”)。也就是说,每对310细长支撑臂312之间的垂直距离可小于标准机架单位“1U”。此外,由于托架槽320的高度的相对减小,所以在一些实施例中机架240的整体高度可矮于传统机架封壳的高度。例如,在一些实施例中,细长支柱302、304的每一者可具有六英尺或更小的长度。同样,在其他实施例中,机架240可具有不同的尺寸。例如,在一些实施例中,每对310细长支撑臂312之间的垂直距离可大于标准机架单位“1U”。在这种实施例中,托架之间的增大的垂直距离允许了更大的散热器被附着到物理资源并且允许了更大的风扇被用于(例如,在下文描述的风扇阵列370中)冷却每个托架,这进而可允许物理资源以增大的功率水平来操作。另外,应当明白,机架240不包括任何壁、封壳等等。相反,机架240是向局部环境开放的无封壳机架。当然,在一些情况下,在机架240形成数据中心100中的排末(end-of-row)机架的那些情形中,端板可被附着到细长支柱302、304之一。
在一些实施例中,各种互连可被向上或向下布线经过细长支柱302、304。为了促进这种布线,每个细长支柱302、304包括内壁,该内壁限定互连可位于其中的内腔。被布线经过细长支柱302、304的互连可实现为任何类型的互连,包括但不限于向每个托架槽320提供通信连接的数据或通信互连、向每个托架槽320提供电力的电力互连和/或其他类型的互连。
机架240在说明性实施例中包括支撑平台,其上安放着相应的光学数据连接器(未示出)。每个光学数据连接器与相应的托架槽320相关联并且被配置为在相应托架400被接收在相应托架槽320中时与该托架400的光学数据连接器配对。在一些实施例中,数据中心100中的组件(例如,托架、机架和交换机)之间的光学连接是利用盲配对光学连接来做出的。例如,每条线缆上的门可防止灰尘污染线缆内部的光纤。在连接到盲配对光学连接器机制的过程中,当线缆的末端接近或进入连接器机制时,该门被推开。随后,线缆内部的光纤可进入连接器机制内的凝胶内并且一条线缆的光纤在连接器机制内部的凝胶内与另一条线缆的光纤接触。
说明性机架240还包括耦合到机架240的交叉支撑臂的风扇阵列370。风扇阵列370包括一排或多排冷却风扇372,它们与细长支柱302、304之间的水平线对齐。在说明性实施例中,风扇阵列370对于机架240的每个托架槽320包括一排冷却风扇372。如上所述,每个托架400在说明性实施例中不包括任何板上冷却系统,并且因此,风扇阵列370为机架240中接收的每个托架400提供冷却。每个机架240在说明性实施例中还包括与每个托架槽320相关联的供给电源。每个供给电源被紧固到限定相应托架槽320的那对310细长支撑臂312中的细长支撑臂312之一。例如,机架240可包括被耦合到或紧固到从细长支柱302延伸的每个细长支撑臂312的供给电源。每个供给电源包括被配置为在托架400被接收在相应的托架槽320中时与托架400的电力连接器配对的电力连接器。在说明性实施例中,托架400不包括任何板上供给电源,并且因此,机架240中提供的供给电源在被安放到机架240时向相应的托架400提供电力。每个供给电源被配置为为其关联的托架满足电力要求,这些要求在托架与托架之间可以是不同的。此外,在机架240中提供的供给电源可彼此独立地操作。也就是说,在单个机架内,向计算托架提供电力的第一供给电源可提供与向加速器托架提供电力的第二供给电源所提供的功率水平不同的功率水平。供给电源可以是在托架级或机架级可控制的,并且可被关联的托架上的组件在本地控制,或者被远程控制,例如由另一托架或协调器在远程控制。
现在参考图6,托架400在说明性实施例中如上所述被配置为被安放在数据中心100的相应机架240中。在一些实施例中,每个托架400可以是针对执行特定任务来优化或以其他方式配置的,这些任务例如是计算任务、加速任务、数据存储任务等等。例如,托架400可如下文参考图8-图9所述被实现为计算托架800,如下文参考图10-图11所述被实现为加速器托架1000,如下文参考图12-图13所述被实现为存储托架1200,或者被优化或以其他方式配置来执行其他专门任务的托架,例如存储器托架1400,如下文参考图14所述。
如上所述,说明性托架400包括无机箱电路板基板602,其支撑安放在其上的各种物理资源(例如,电组件)。应当明白,电路板基板602是“无机箱”的,因为托架400不包括外壳或封壳。相反,无机箱电路板基板602是对局部环境开放的。无机箱电路板基板602可由能够支撑安放在其上的各种电组件的任何材料形成。例如,在说明性实施例中,无机箱电路板基板602由FR-4玻璃增强环氧树脂层压板材料形成。当然,在其他实施例中其他材料可用于形成无机箱电路板基板602。
如下文更详细论述的,无机箱电路板基板602包括改善安放在无机箱电路板基板602上的各种电组件的热冷却特性的多个特征。如前所述,无机箱电路板基板602不包括外壳或封壳,这可通过减少可抑制气流的那些结构来改善经过托架400的电组件的气流。例如,因为无机箱电路板基板602没有位于个体的外壳或封壳中,所以没有垂直布置的背板(例如,机箱的背板)附着到无机箱电路板基板602,这种背板可抑制穿过电组件的气流。此外,无机箱电路板基板602具有被配置为减少穿过安放到无机箱电路板基板602的电组件的气流路径的长度的几何形状。例如,说明性无机箱电路板基板602具有大于无机箱电路板基板602的深度606的宽度604。在一个特定实施例中,例如,与具有大约17英寸的宽度和大约39英寸的深度的典型服务器相比,无机箱电路板基板602具有大约21英寸的宽度和大约9英寸的深度。这样,从无机箱电路板基板602的前边缘610朝着后边缘612延伸的气流路径608相对于典型服务器具有更短的距离,这可改善托架400的热冷却特性。此外,虽然在图6中没有图示,但安放到无机箱电路板基板602的各种物理资源被安放在使得没有两个实质上产生热量的电组件会彼此遮蔽的相应位置,如下文更详细论述。也就是说,没有两个在操作期间产生可感知的热量(即,大于充分到足以不利地影响另一电组件的冷却的标称热量)的电组件会被沿着气流路径608的方向(即,沿着从无机箱电路板基板602的前边缘610朝着后边缘612延伸的方向)彼此排成一直线地安放到无机箱电路板基板602。
如上所述,说明性托架400包括安放到无机箱电路板基板602的顶侧650的一个或多个物理资源620。虽然在图6中示出了两个物理资源620,但应当明白在其他实施例中托架400可包括一个、两个或者更多个物理资源620。物理资源620可实现为任何类型的处理器、控制器或者能够执行诸如计算功能之类的各种任务和/或取决于例如托架400的类型或期望功能来控制托架400的功能的其他计算电路。例如,如下文更详细论述的,物理资源620在托架400被实现为计算托架的实施例中可实现为高性能处理器,在托架400被实现为加速器托架的实施例中可实现为加速器协处理器或电路,在托架400被实现为存储托架的实施例中可实现为存储控制器,或者在托架400被实现为存储器托架的实施例中可实现为一组存储器设备。
托架400还包括安放到无机箱电路板基板602的顶侧650的一个或多个额外物理资源630。在说明性实施例中,额外的物理资源包括网络接口控制器(network interfacecontroller,NIC),如下文更详细论述。当然,取决于托架400的类型和功能,物理资源630在其他实施例中可包括额外的或者其他的电组件、电路和/或设备。
物理资源620经由输入/输出(I/O)子系统622通信地耦合到物理资源630。I/O子系统622可实现为用于促进与物理资源620、物理资源630和/或托架400的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统622可实现为或者以其他方式包括存储器控制器中心、输入/输出控制中心、集成传感器中心、固件设备、通信链路(例如,点到点链路、总线链路、导线、线缆、波导、光导、印刷电路板印制线等等)和/或用于促进输入/输出操作的其他组件和子系统。在说明性实施例中,I/O子系统622实现为或者以其他方式包括双数据速率4(double data rate 4,DDR4)数据总线或DDR5数据总线。
在一些实施例中,托架400还可包括资源到资源互连624。资源到资源互连624可实现为任何类型的能够促进资源到资源通信的通信互连。在说明性实施例中,资源到资源互连624实现为高速点到点互连(例如,比I/O子系统622更快)。例如,资源到资源互连624可实现为QuickPath互连(QPI)、UltraPath互连(UPI)或者专用于资源到资源通信的其他高速点到点互连。
托架400还包括被配置为当托架400被安放在相应机架240中时与机架240的相应电力连接器配对的电力连接器640。托架400经由电力连接器640从机架240的供给电源接收电力以向托架400的各种电组件提供电力。也就是说,托架400不包括任何本地供给电源(即,板上供给电源)来向托架400的电组件提供电力。不包括本地或板上供给电源促进了无机箱电路板基板602的整体占地面积的减小,这如上所述可增大安放在无机箱电路板基板602上的各种电组件的热冷却特性。在一些实施例中,稳压器被放置在无机箱电路板基板602的底侧750(见图7)、与处理器820(参见图8)直接相对,并且电力被延伸过电路板基板602的过孔从稳压器路由到处理器820。相对于其中处理器电力是从稳压器一部分由印刷电路印制线递送的典型印刷电路板,这种配置提供了增大的热预算、额外的电流和/或电压以及更好的电压控制。
在一些实施例中,托架400还可包括安放特征642,其被配置为与机器人的安放臂或其他结构配对以促进由机器人在机架240中放置托架600。安放特征642可实现为任何类型的物理结构,其允许机器人抓握住托架400,而不毁坏无机箱电路板基板602或者安放到其的电组件。例如,在一些实施例中,安放特征642可实现为附着到无机箱电路板基板602的非导电衬垫。在其他实施例中,安放特征可实现为支架、支柱或者附着到无机箱电路板基板602的其他类似结构。安放特征642的特定数目、形状、大小和/或构成可取决于被配置为管理托架400的机器人的设计。
现在参考图7,除了安放到无机箱电路板基板602的顶侧650的物理资源630以外,托架400还包括安放到无机箱电路板基板602的底侧750的一个或多个存储器设备720。也就是说,无机箱电路板基板602被实现为双面电路板。物理资源620经由I/O子系统622通信地耦合到存储器设备720。例如,物理资源620和存储器设备720可由延伸过无机箱电路板基板602的一个或多个过孔通信地耦合。每个物理资源620在一些实施例中可通信地耦合到不同的一组一个或多个存储器设备720。或者,在其他实施例中,每个物理资源620可通信地耦合到每个存储器设备720。
存储器设备720可实现为能够在托架400的操作期间为物理资源620存储数据的任何类型的存储器设备,例如任何类型的易失性(例如,动态随机访问存储器(dynamicrandom access memory,DRAM)等等)或者非易失性存储器。易失性存储器可以是要求电力来维持该介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可包括各种类型的随机访问存储器(random access memory,RAM),例如动态随机访问存储器(DRAM)或静态随机访问存储器(SRAM)。可用于存储器模块中的一种特定类型的DRAM是同步动态随机访问存储器(synchronous dynamic random access memory,SDRAM)。在特定实施例中,存储器组件的DRAM可遵守由JEDEC颁布的标准,例如用于DDR SDRAM的JESD79F,用于DDR2 SDRAM的JESD79-2F,用于DDR3 SDRAM的JESD79-3F,用于DDR4 SDRAM的JESD79-4A,用于低功率DDR(Low Power DDR,LPDDR)的JESD209,用于LPDDR2的JESD209-2,用于LPDDR3的JESD209-3,以及用于LPDDR4的JESD209-4。这种标准(以及类似的标准)可被称为基于DDR的标准,并且实现这种标准的存储设备的通信接口可被称为基于DDR的接口。
在一个实施例中,存储器设备是块可寻址存储器设备,例如基于NAND或NOR技术的那些。存储器设备也可包括下一代非易失性设备,例如英特尔3D XPointTM存储器或者其他字节可寻址位置写入(write-in-place)非易失性存储器设备。在一个实施例中,存储器设备可以是或者可以包括使用硫属化合物玻璃的存储器设备,多阈值级别NAND闪存,NOR闪存,单级别或多级别相变存储器(Phase Change Memory,PCM),电阻性存储器,纳米线存储器,铁电晶体管随机访问存储器(ferroelectric transistor random access memory,FeTRAM),反铁电存储器,包含忆阻器技术的磁阻式随机访问存储器(magnetoresistiverandom access memory,MRAM)存储器,包括金属氧化物基底、氧空位基底的电阻性存储器以及导电桥随机访问存储器(conductive bridge Random Access Memory,CB-RAM),或者自旋转移力矩(spin transfer torque,STT)-MRAM,基于自旋电子磁结存储器的设备,基于磁隧道结(magnetic tunneling junction,MTJ)的设备,基于DW(Domain Wall,畴壁)和SOT(Spin Orbit Transfer,自旋轨道转移)的设备,基于半导体闸流管的存储器设备,或者上述的任何者的组合,或者其他存储器。存储器设备可以指晶粒本身和/或指封装的存储器产品。在一些实施例中,存储器设备可包括无晶体管可堆叠交叉点体系结构,其中存储器单元位于字线和位线的交点处并且是个体可寻址的,并且其中位存储是基于体电阻的变化的。
现在参考图8,在一些实施例中,托架400可实现为计算托架800。计算托架800被优化或者以其他方式配置来执行计算任务。当然,如上所述,计算托架800可依赖于其他托架,例如加速托架和/或存储托架,来执行这种计算任务。计算托架800包括与托架400的物理资源类似的各种物理资源(例如,电组件),在图8中利用相同的标号来标识它们。上文参考图6和图7提供的对这种组件的描述适用于计算托架800的相应组件,并且在这里为了对计算托架800的描述的清晰而不再重复。
在说明性计算托架800中,物理资源620被实现为处理器820。虽然在图8中只示出了两个处理器820,但应当明白计算托架800在其他实施例中可包括额外的处理器820。说明性地,处理器820实现为高性能处理器820并且可被配置为以相对高的额定功率操作。虽然处理器820在以大于典型处理器(其在大约155-230W操作)的额定功率操作时生成额外的热量,但上文论述的无机箱电路板基板602的增强的热冷却特性促进了更高功率操作。例如,在说明性实施例中,处理器820被配置为以至少250W的额定功率操作。在一些实施例中,处理器820可被配置为以至少350W的额定功率操作。
在一些实施例中,计算托架800还可包括处理器到处理器互连842。与上文论述的托架400的资源到资源互连624类似,处理器到处理器互连842可实现为能够促进处理器到处理器互连842通信的任何类型的通信互连。在说明性实施例中,处理器到处理器互连842实现为高速点到点互连(例如,比I/O子系统622更快)。例如,处理器到处理器互连842可实现为QuickPath互连(QPI)、UltraPath互连(UPI)或者专用于处理器到处理器通信的其他高速点到点互连。
计算托架800还包括通信电路830。说明性通信电路830包括网络接口控制器(NIC)832,其也可被称为主机架构接口(host fabric interface,HFI)。NIC 832可实现为或者以其他方式包括任何类型的集成电路、分立电路、控制器芯片、芯片集、内插板、子插件板、网络接口卡或者可被计算托架800用来与另一计算设备(例如,与其他托架400)连接的其他设备。在一些实施例中,NIC 832可实现为包括一个或多个处理器的片上系统(system-on-a-chip,SoC)的一部分,或者被包括在也包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC 832可包括都在NIC 832本地的本地处理器(未示出)和/或本地存储器(未示出)。在这种实施例中,NIC 832的本地处理器可能够执行处理器820的一个或多个功能。额外地或者替换地,在这种实施例中,NIC 832的本地存储器可在板级、插座级、芯片级和/或其他级别被集成到计算托架的一个或多个组件中。
通信电路830通信地耦合到光学数据连接器834。光学数据连接器834被配置为在计算托架800被安放在机架240中时与机架240的相应光学数据连接器配对。说明性地,光学数据连接器834包括从光学数据连接器834的配对表面通向光学收发器836的多个光纤。光学收发器836被配置为将来自机架侧光学数据连接器的传入光学信号转换成电信号并且将电信号转换成去到机架侧光学数据连接器的传出光学信号。虽然在说明性实施例中被示为光学数据连接器834的形成部分,但光学收发器836在其他实施例中可形成通信电路830的一部分。
在一些实施例中,计算托架800也可包括扩展连接器840。在这种实施例中,扩展连接器840被配置为与扩展无机箱电路板基板的相应连接器配对以向计算托架800提供额外的物理资源。额外的物理资源可例如被处理器820在计算托架800的操作期间使用。扩展无机箱电路板基板可基本上类似于上文论述的无机箱电路板基板602并且可包括安放到它的各种电组件。安放到扩展无机箱电路板基板的特定电组件可取决于扩展无机箱电路板基板的预期功能。例如,扩展无机箱电路板基板可提供额外的计算资源、存储器资源和/或存储资源。这样,扩展无机箱电路板基板的额外物理资源可包括但不限于处理器、存储器设备、存储设备和/或加速器电路,例如包括现场可编程门阵列(field programmable gatearray,FPGA)、专用集成电路(application-specific integrated circuit,ASIC)、安全性协处理器、图形处理单元(graphics processing unit,GPU)、机器学习电路或者其他专门的处理器、控制器、设备和/或电路。
现在参考图9,示出了计算托架800的说明性实施例。如图所示,处理器820、通信电路830和光学数据连接器834被安放到无机箱电路板基板602的顶侧650。任何适当的附着或安放技术可用于将计算托架800的物理资源安放到无机箱电路板基板602。例如,各种物理资源可被安放在相应的插座(例如,处理器插座)、支持物或者支架中。在一些情况下,电组件中的一些可经由焊接或类似的技术被直接安放到无机箱电路板基板602。
如上所述,个体处理器820和通信电路830被安放到无机箱电路板基板602的顶侧650,使得没有两个产生热量的电组件会彼此遮蔽。在说明性实施例中,处理器820和通信电路830被安放在无机箱电路板基板602的顶侧650的相应位置中,使得这些物理资源中没有两个会沿着气流路径608的方向与彼此排成一直线。应当明白,虽然光学数据连接器834与通信电路830排成一直线,但光学数据连接器834在操作期间不产生热量或者只产生微不足道的热量。
计算托架800的存储器设备720如上文对于托架400所论述被安放到无机箱电路板基板602的底侧750。虽然被安放到底侧750,但存储器设备720经由I/O子系统622通信地耦合到位于顶侧650的处理器820。因为无机箱电路板基板602被实现为双面电路板,所以存储器设备720和处理器820可由延伸经过无机箱电路板基板602的一个或多个过孔、连接器或其他机制通信地耦合。当然,每个处理器820在一些实施例中可通信地耦合到不同的一组一个或多个存储器设备720。或者,在其他实施例中,每个处理器820可通信地耦合到每个存储器设备720。在一些实施例中,存储器设备720可被安放到无机箱电路板基板602的底侧的一个或多个存储器夹层并且可通过球栅阵列与相应的处理器820互连。
每个处理器820包括被紧固到它的散热器850。由于将存储器设备720安放到无机箱电路板基板602的底侧750(以及相应机架240中的托架400的垂直间距),无机箱电路板基板602的顶侧650包括额外的“自由”区域或空间,这促进了对相对于典型服务器中使用的传统散热器具有更大大小的散热器850的使用。此外,由于无机箱电路板基板602的改善的热冷却特性,所以没有处理器散热器850包括附着到它的冷却风扇。也就是说,每个散热器850被实现为无风扇散热器。在一些实施例中,安放到处理器820顶上的散热器850由于其增大的大小在气流路径608的方向上可与附着到通信电路830的散热器重叠,如图9说明性提议的。
现在参考图10,在一些实施例中,托架400可实现为加速器托架1000。加速器托架1000被配置为执行专门的计算任务,例如机器学习、加密、散列或者其他计算密集型任务。在一些实施例中,例如,计算托架800在操作期间可将任务负载转移到加速器托架1000。加速器托架1000包括与托架400和/或计算托架800的组件类似的各种组件,这些组件在图10中利用相同的标号来标识。上文参考图6、图7和图8提供的对这种组件的描述适用于加速器托架1000的相应组件,并且在这里为了对加速器托架1000的描述的清晰而不再重复。
在说明性加速器托架1000中,物理资源620被实现为加速器电路1020。虽然在图10中只示出了两个加速器电路1020,但应当明白加速器托架1000在其他实施例中可包括额外的加速器电路1020。例如,如图11中所示,加速器托架1000在一些实施例中可包括四个加速器电路1020。加速器电路1020可实现为任何类型的处理器、协处理器、计算电路或者能够执行计算或处理操作的其他设备。例如,加速器电路1020可实现为例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、安全性协处理器、图形处理单元(GPU)、神经形态处理器单元、量子计算机、机器学习电路或者其他专门的处理器、控制器、设备和/或电路。
在一些实施例中,加速器托架1000还可包括加速器到加速器互连1042。与上文论述的托架600的资源到资源互连624类似,加速器到加速器互连1042可实现为能够促进加速器到加速器通信的任何类型的通信互连。在说明性实施例中,加速器到加速器互连1042实现为高速点到点互连(例如,比I/O子系统622更快)。例如,加速器到加速器互连1042可实现为QuickPath互连(QPI)、UltraPath互连(UPI)或者专用于处理器到处理器通信的其他高速点到点互连。在一些实施例中,加速器电路1020可以是菊链式的,其中主加速器电路1020通过I/O子系统622连接到NIC832和存储器设备720并且次加速器电路1020通过主加速器电路1020连接到NIC 832和存储器设备720。
现在参考图11,示出了加速器托架1000的说明性实施例。如上所述,加速器电路1020、通信电路830和光学数据连接器834被安放到无机箱电路板基板602的顶侧650。同样,如上所述,个体加速器电路1020和通信电路830被安放到无机箱电路板基板602的顶侧650,使得没有两个产生热量的电组件会彼此遮蔽。加速器托架1000的存储器设备720如上文对于托架600所述被安放到无机箱电路板基板602的底侧750。虽然被安放到底侧750,但存储器设备720经由I/O子系统622(例如,通过过孔)通信地耦合到位于顶侧650的加速器电路1020。另外,每个加速器电路1020可包括大于服务器中使用的传统散热器的散热器1070。如上文参考散热器870所述,因为由存储器资源720位于无机箱电路板基板602的底侧750而不是位于顶侧650所提供的“自由”区域,散热器1070可大于传统散热器。
现在参考图12,在一些实施例中,托架400可实现为存储托架1200。存储托架1200被配置为在存储托架1200本地的数据存储装置1250中存储数据。例如,在操作期间,计算托架800或加速器托架1000可从存储托架1200的数据存储装置1250存储和取回数据。存储托架1200包括与托架400和/或计算托架800的组件类似的各种组件,这些组件在图12中利用相同的标号来标识。上文参考图6、图7和图8提供的对这种组件的描述适用于存储托架1200的相应组件,并且在这里为了对存储托架1200的描述的清晰而不再重复。
在说明性存储托架1200中,物理资源620被实现为存储控制器1220。虽然在图12中只示出了两个存储控制器1220,但应当明白存储托架1200在其他实施例中可包括额外的存储控制器1220。存储控制器1220可实现为能够基于经由通信电路830接收的请求来控制数据到数据存储装置1250中的存储和取回的任何类型的处理器、控制器或控制电路。在说明性实施例中,存储控制器1220被实现为相对低功率的处理器或控制器。例如,在一些实施例中,存储控制器1220可被配置为以大约75瓦特的额定功率操作。
在一些实施例中,存储托架1200也可包括控制器到控制器互连1242。与上文论述的托架400的资源到资源互连624类似,控制器到控制器互连1242可实现为能够促进控制器到控制器通信的任何类型的通信互连。在说明性实施例中,控制器到控制器互连1242实现为高速点到点互连(例如,比I/O子系统622更快)。例如,控制器到控制器互连1242可实现为QuickPath互连(QPI)、UltraPath互连(UPI)或者专用于处理器到处理器通信的其他高速点到点互连。
现在参考图13,示出了存储托架1200的说明性实施例。在说明性实施例中,数据存储装置1250被实现为或者以其他方式包括被配置为容纳一个或多个固态驱动器(solidstate drive,SSD)1254的存储笼1252。为此,存储笼1252包括若干个安放槽1256,每个安放槽1256被配置为接收相应的固态驱动器1254。每个安放槽1256包括若干个驱动导轨1258,这些驱动导轨1258合作来限定相应安放槽1256的检修孔1260。存储笼1252被紧固到无机箱电路板基板602,使得检修孔背对着无机箱电路板基板602(即,朝着无机箱电路板基板602的前方)。这样,当存储托架1200被安放在相应机架240中时,固态驱动器1254是可触及的。例如,在存储托架1200保持安放在相应机架240中的同时,固态驱动器1254可被换出机架240(例如,经由机器人)。
存储笼1252说明性地包括十六个安放槽1256并且能够安放并存储十六个固态驱动器1254。当然,存储笼1252在其他实施例中可被配置为存储额外的或者更少的固态驱动器1254。此外,在说明性实施例中,固态驱动器被垂直地安放在存储笼1252中,但在其他实施例中可按不同的朝向安放在存储笼1252中。每个固态驱动器1254可实现为任何类型的能够存储长期数据的数据存储设备。为此,固态驱动器1254可包括上文论述的易失性和非易失性存储器设备。
如图13中所示,存储控制器1220、通信电路830和光学数据连接器834被说明性地安放到无机箱电路板基板602的顶侧650。同样,如上所述,任何适当的附着或安放技术可用于将存储托架1200的电组件安放到无机箱电路板基板602,包括例如插座(例如,处理器插座)、支持物、支架、焊接连接和/或其他安放或紧固技术。
如上所述,个体存储控制器1220和通信电路830被安放到无机箱电路板基板602的顶侧650,使得没有两个产生热量的电组件会彼此遮蔽。例如,存储控制器1220和通信电路830被安放在无机箱电路板基板602的顶侧650的相应位置中,使得这些电组件中没有两个会沿着气流路径608的方向与彼此排成一直线。
存储托架1200的存储器设备720如上文对于托架400所述被安放到无机箱电路板基板602的底侧750。虽然被安放到底侧750,但存储器设备720经由I/O子系统622通信地耦合到位于顶侧650的存储控制器1220。同样,因为无机箱电路板基板602被实现为双面电路板,所以存储器设备720和存储控制器1220可由延伸经过无机箱电路板基板602的一个或多个过孔、连接器或其他机制通信地耦合。每个存储控制器1220包括被紧固到它的散热器1270。如上所述,由于存储托架1200的无机箱电路板基板602的改善的热冷却特性,所以没有散热器1270包括附着到它的冷却风扇。也就是说,每个散热器1270被实现为无风扇散热器。
现在参考图14,在一些实施例中,托架400可实现为存储器托架1400。存储器托架1400被优化或者以其他方式配置为向其他托架400(例如,计算托架800、加速器托架1000等等)提供对存储器托架1400本地的存储器的池(例如,在两组或更多组1430、1432的存储器设备720中)的访问。例如,在操作期间,计算托架800或加速器托架1000可利用映射到存储器组1430、1432中的物理地址的逻辑地址空间远程地向存储器托架1400的存储器组1430、1432中的一个或多个写入和/或从其读取。存储器托架1400包括与托架400和/或计算托架800的组件类似的各种组件,这些组件在图14中利用相同的标号来标识。上文参考图6、图7和图8提供的对这种组件的描述适用于存储器托架1400的相应组件,并且在这里为了对存储器托架1400的描述的清晰而不再重复。
在说明性存储器托架1400中,物理资源620被实现为存储器控制器1420。虽然在图14中只示出了两个存储器控制器1420,但应当明白存储器托架1400在其他实施例中可包括额外的存储器控制器1420。存储器控制器1420可实现为能够基于经由通信电路830接收的请求来控制数据到存储器组1430、1432中的写入和读取的任何类型的处理器、控制器或控制电路。在说明性实施例中,每个存储器控制器1420连接到相应的存储器组1430、1432以向相应存储器组1430、1432内的存储器设备720写入和从其读取并且实施与向存储器托架1400发送了执行存储器访问操作(例如,读取或写入)的请求的托架400相关联的任何许可(例如,读取、写入等等)。
在一些实施例中,存储器托架1400也可包括控制器到控制器互连1442。与上文论述的托架400的资源到资源互连624类似,控制器到控制器互连1442可实现为能够促进控制器到控制器通信的任何类型的通信互连。在说明性实施例中,控制器到控制器互连1442实现为高速点到点互连(例如,比I/O子系统622更快)。例如,控制器到控制器互连1442可实现为QuickPath互连(QPI)、UltraPath互连(UPI)或者专用于处理器到处理器通信的其他高速点到点互连。这样,在一些实施例中,存储器控制器1420可通过控制器到控制器互连1442访问在与另一存储器控制器1420相关联的存储器组1432内的存储器。在一些实施例中,可缩放存储器控制器由存储器托架(例如,存储器托架1400)上的多个更小的存储器控制器构成,这些更小的存储器控制器在这里被称为“小芯片”(chiplet)。小芯片可被互连(例如,利用EMIB(Embedded Multi-DieInterconnect Bridge,嵌入式多晶粒互连桥接))。组合的小芯片存储器控制器可扩大到相对大数目的存储器控制器和I/O端口(例如,多达16个存储器通道)。在一些实施例中,存储器控制器1420可实现存储器交织(例如,一个存储器地址被映射到存储器组1430,下一存储器地址被映射到存储器组1432,并且第三地址被映射到存储器组1430,等等)。交织可以是在存储器控制器1420内管理的,或者是从CPU插座(例如,计算托架800的CPU插座)通过到存储器组1430、1432的网络链路管理的,并且与访问来自同一存储器设备的连续存储器地址相比可改善与执行存储器访问操作相关联的时延。
另外,在一些实施例中,存储器托架1400可利用波导连接器1480通过波导连接到一个或多个其他托架400(例如,在同一机架240或相邻机架240中)。在说明性实施例中,波导是提供16个Rx(即,接收)通道和16个Tx(即,发送)通道的64毫米波导。在说明性实施例中,每个通道是16GHz或32GHz的。在其他实施例中,频率可以不同。使用波导可向另一托架(例如,与存储器托架1400在同一机架240中或者在相邻机架240中的托架400)提供对存储器池(例如,存储器组1430、1432)的高吞吐量访问,而不会增加光学数据连接器834上的负载。
现在参考图15,根据数据中心100可实现一种用于执行一个或多个工作负载(例如,应用)的系统。在说明性实施例中,系统1510包括协调器服务器1520,其可实现为被管理节点,该被管理节点包括执行管理软件(例如,云操作环境,比如OpenStack)的计算设备(例如,计算托架800上的处理器820),该计算设备通信地耦合到多个托架400,这些托架400包括大量的计算托架1530(例如,每一者类似于计算托架800)、存储器托架1540(例如,每一者类似于存储器托架1400)、加速器托架1550(例如,每一者类似于加速器托架1000)和存储托架1560(例如,每一者类似于存储托架1200)。托架1530、1540、1550、1560中的一个或多个可例如被协调器服务器1520分组成被管理节点1570,以集体执行工作负载(例如,在虚拟机中或者在容器中执行的应用1532)。被管理节点1570可实现为来自相同或不同托架400的物理资源620(例如处理器820、存储器资源720、加速器电路1020或者数据存储装置1250)的汇集。另外,被管理节点可在工作负载要被指派到被管理节点时或者在任何其他时间由协调器服务器1520建立、定义或者“起转”,并且不管是否有任何工作负载当前被指派到被管理节点,都可存在。在说明性实施例中,根据与工作负载(例如,应用1532)的服务水平协定相关联的服务质量(quality of service,QoS)目标(例如,与吞吐量、时延、每秒指令等等相关联的性能目标),协调器服务器1520可选择性地从托架400分配和/或解除分配物理资源620,和/或从被管理节点1570添加或去除一个或多个托架400。在此期间,协调器服务器1520可接收指示被管理节点1570的每个托架400中的性能条件(例如,吞吐量、时延、每秒指令等等)的遥测数据,并且将遥测数据与服务质量目标相比较来确定服务质量目标是否被满足。协调器服务器1520还可确定是否可在仍满足QoS目标的同时从被管理节点1570解除分配一个或多个物理资源,从而释放这些物理资源来用于另一被管理节点中(例如,为了执行不同的工作负载)。或者,如果当前不满足QoS目标,则协调器服务器1520可确定动态地分配额外的物理资源来在工作负载(例如,应用1532)执行的同时辅助工作负载的执行。类似地,如果协调器服务器1520确定解除分配物理资源的结果将是QoS目标仍得到满足,则协调器服务器1520可确定动态地从被管理节点解除分配物理资源。
此外,在一些实施例中,协调器服务器1520可识别工作负载(例如,应用1532)的资源利用中的趋势,例如通过识别工作负载(例如,应用1532)的执行的阶段(例如,执行不同操作的时间段,其中每个操作具有不同的资源利用特性)并且抢先识别数据中心100中的可用资源并且将它们分配给被管理节点1570(例如,在关联的阶段开始后的预定时间段内)。在一些实施例中,协调器服务器1520可基于各种时延和分布方案来对性能建模以在数据中心100中的计算托架和其他资源(例如,加速器托架、存储器托架、存储托架)之间放置工作负载。例如,协调器服务器1520可利用这样的模型:该模型考虑到托架400上的资源的性能(例如,FPGA性能、存储器访问时延等等)以及通过网络到该资源(例如,FPGA)的路径的性能(例如,拥塞、时延、带宽)。这样,协调器服务器1520可基于与数据中心100中可用的每个潜在资源相关联的总时延(例如,与资源本身的性能相关联的时延,以及与执行工作负载的计算托架和资源所位于的托架400之间的通过网络的路径相关联的时延)来确定对于哪些工作负载应当使用哪个(或哪些)资源。
在一些实施例中,协调器服务器1520可利用从托架400报告的遥测数据(例如,温度、风扇速度等等)生成数据中心100中的热量生成的地图并且根据热量生成的地图和与不同工作负载相关联的预测热量生成来向被管理节点分配资源,以维持数据中心100中的目标温度和热量分布。额外地或者替换地,在一些实施例中,协调器服务器1520可将接收到的遥测数据组织成指示被管理节点之间的关系(例如,空间关系,比如被管理节点的资源在数据中心100内的物理位置,和/或功能关系,比如被管理节点为其提供服务的客户对被管理节点的分组、被管理节点通常执行的功能的类型、通常在彼此之间共享或交换工作负载的被管理节点,等等)的层次模型。基于物理位置和被管理节点中的资源中的差异,给定的工作负载在不同的被管理节点的资源之间可展现出不同的资源利用(例如,引起不同的内部温度、使用不同百分比的处理器或存储器容量)。协调器服务器1520可基于存储在层次模型中的遥测数据来确定这些差异并且在工作负载被从一个被管理节点重指派到另一被管理节点的情况下将这些差异计入到工作负载的未来资源利用的预测中,以准确地平衡数据中心100中的资源利用。
为了降低协调器服务器1520上的计算负载和网络上的数据传送负载,在一些实施例中,协调器服务器1520可向托架400发送自测试信息以使得每个托架400能够在本地(例如,在托架400上)确定该托架400生成的遥测数据是否满足一个或多个条件(例如,满足预定阈值的可用容量、满足预定阈值的温度,等等)。每个托架400随后可向协调器服务器1520报告回简化的结果(例如,是或否),协调器服务器1520可利用该结果来确定向被管理节点的资源分配。
现在参考图16,一种用于针对裸金属虚拟化的灵活端点加速的说明性系统1600包括通过网络1606通信的计算设备1602和多个远程设备1604。设备1602、1604的每一者可实现为数据中心中的一个或多个托架400(例如,计算托架800和多个存储托架1200,或者另一配置)。在使用中,如下文进一步描述的,计算设备1602向模拟端点层次体系(例如,快速PCI层次体系)的软端点发出I/O事务。计算设备1602可利用标准驱动器和/或操作系统来发出I/O事务。软端点及其模拟的层次体系是可由计算设备1602编程的。从而,系统1600可透明地支持灵活的、可编程的设备层次体系。此外,软端点可选择性地处理或以其他方式加速I/O事务和/或将I/O事务传递到诸如智能NIC之类的负载转移复合体。负载转移复合体可执行诸如裸金属虚拟化之类的任务。从而,系统1600支持将裸金属虚拟化任务从计算设备1602的主机处理器负载转移到负载转移复合体。系统1600还支持从负载转移复合体负载转移I/O事务处理任务。从而,系统1600可改善负载转移复合体的可用处理周期和/或可允许使用不那么昂贵的负载转移复合体。
计算设备1602可实现为能够执行本文描述的功能的任何类型的设备。例如,计算设备1602可实现为——但不限于——托架、计算托架、加速器托架、存储托架、计算机、服务器、分布式计算设备、解聚集计算设备、膝上型计算机、平板计算机、笔记本计算机、移动计算设备、智能电话、可穿戴计算设备、多处理器系统、服务器、工作站和/或消费型电子设备。如图1中所示,说明性计算设备1602包括处理器1620、I/O子系统1622、存储器1626、数据存储设备1628和通信子系统1630。此外,在一些实施例中,说明性组件中的一个或多个可被包含在另一组件中,或者以其他方式形成另一组件的一部分。例如,在一些实施例中,存储器1626或其一些部分可被包含在处理器1620中。
处理器1620可实现为能够执行本文描述的功能的任何类型的处理器。例如,处理器1620可实现为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或者其他处理器或处理/控制电路。类似地,存储器1626可实现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或者数据存储装置。在操作中,存储器1626可存储在计算设备1602的操作期间使用的各种数据和软件,例如操作系统、应用、程序、库和驱动器。
说明性地,存储器1626经由I/O子系统1622通信地耦合到处理器1620,I/O子系统1622可实现为用于促进与处理器1620、存储器1626和计算设备1602的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统1622可实现为或者以其他方式包括存储器控制器中心、输入/输出控制中心、传感器中心、主机控制器、固件设备、通信链路(即,点到点链路、总线链路、导线、线缆、光导、印刷电路板印制线等等)和/或用于促进输入/输出操作的其他组件和子系统。如图所示,I/O子系统1622说明性地包括快速PCI(PCIe)根复合体(rootcomplex,RC)1624。RC 1624可包括一个或多个根端口、PCIe链路、PCIe交换机和/或可用于在计算设备1602的主机系统(例如,处理器1620和/或存储器1626)和一个或多个I/O设备之间传输I/O数据的其他组件。在一些实施例中,存储器1626可直接耦合到处理器1620,例如经由集成存储器控制器中心或数据端口。此外,在一些实施例中,I/O子系统1622可形成片上系统(SoC)的一部分,并且与处理器1620、存储器1626和计算设备1602的其他组件一起被包含在单个集成电路芯片上。
数据存储设备1628可实现为被配置用于数据的短期或长期存储的任何类型的一个或多个设备,例如存储器设备和电路、存储卡、硬盘驱动器、固态驱动器、非易失性闪存或者其他数据存储设备。计算设备1602还可包括通信子系统1630,通信子系统1630可实现为能够使能计算设备1602和其他远程设备之间通过计算机网络(未示出)的通信的任何网络接口控制器(NIC)、通信电路、设备或者其集合。通信子系统1630可被配置为使用任何一个或多个通信技术(例如,有线或无线通信)和关联的协议(例如,以太网、WiMAX、3G、4G LTE等等)来实现这种通信。
如图所示,计算设备1602还包括软端点1632和负载转移复合体1634。如下文进一步描述的,软端点1632耦合到RC 1624并且耦合到负载转移复合体1634,例如通过一个或多个PCIe通道耦合。软端点1632从RC 1624接收I/O事务并且可处理I/O事务和/或向负载转移复合体1634提供I/O事务。负载转移复合体1634例如通过执行裸金属虚拟化(例如,虚拟化多个存储设备、网络设备或其他设备)来执行I/O事务的进一步处理。负载转移复合体1634也耦合到通信子系统1630并从而可与一个或多个远程设备1604通信。软端点1632和负载转移复合体1634的一个可能实施例在下文联系图17来描述。
类似地,每个远程设备1604可实现为能够执行本文描述的功能的任何类型的设备。例如,每个远程设备1604可实现为——但不限于——托架、计算托架、加速器托架、存储托架、计算机、服务器、分布式计算设备、解聚集计算设备、膝上型计算机、平板计算机、笔记本计算机、移动计算设备、智能电话、可穿戴计算设备、多处理器系统、服务器、工作站和/或消费型电子设备。这样,每个远程设备1604可包括与计算设备1602类似的组件和特征,例如处理器、I/O子系统、存储器、数据存储设备、通信子系统或者存储托架的其他组件。如图所示,每个远程设备1604可包括远程存储装置1640,该远程存储装置1640可例如被负载转移复合体1634访问来进行裸金属虚拟化。
如下文更详细论述的,计算设备1602和远程设备1604可被配置为与彼此和/或与系统1600的其他设备通过网络1606发送和接收数据。网络1606可实现为任何数目的各种有线和/或无线网络。例如,网络1606可实现为或者以其他方式包括有线或无线局域网(localarea network,LAN),和/或有线或无线广域网(wide area network,WAN)。这样,网络1606可包括任何数目的额外设备,例如额外的计算机、路由器和交换机,以促进系统1600的设备之间的通信。
现在参考图17,图1700图示了软端点1632和负载转移复合体1634的一个可能实施例。如图所示,软端点1632包括端点接口1702、一个或多个软核心1704、DMA引擎1706、存储器1708和端点接口1710。端点接口1702耦合到根复合体(RC)1624并且可实现为用于通过PCIe链路与RC 1624通信的任何通信电路或其他组件。例如,端点接口1710可实现为或者以其他方式包括PCIe物理层、PCIe数据链路层和PCIe事务层。
每个软核心1704可实现为可编程元件,例如状态机、微控制器、微处理器或者其他计算资源。如下文进一步描述的,软核心1704可被配置为模拟PCIe端点层次体系、处理PCI事务并且执行如下文进一步描述的其他任务。DMA引擎1706可实现为DMA控制器或者其他组件,其能够执行DMA事务(例如,读取和/或写入)以在存储器1626和软端点1632之间和/或存储器1626和负载转移复合体1634之间传送数据。存储器1708可实现为能够执行本文描述的功能的任何易失性或非易失性存储器或者数据存储装置。在操作中,存储器1708可存储在软端点1632的操作期间使用的各种数据和软件,例如被软核心1704处理的固件和数据。
端点接口1710耦合到负载转移复合体1634并且可实现为用于与负载转移复合体1634通信的任何通信电路或其他组件。如图所示,端点接口1710耦合到负载转移复合体1634的根复合体1712。因此,端点接口1710可通过PCIe与负载转移复合体1634通信并从而可实现为或者以其他方式包括PCIe物理层、PCIe数据链路层和PCIe事务层。
如图所示,负载转移复合体1634包括根复合体1712、多个处理器核心1714、存储器1716和根复合体1718。如上所述,根复合体1712耦合到软端点1632的端点接口1710。与RC1624类似,RC 1712可包括一个或多个根端口、PCIe链路、PCIe交换机和/或可用于在负载转移复合体1634和软端点1632之间传输I/O数据的其他组件。
每个处理器核心1714可实现为能够执行本文描述的功能的任何类型的处理器核心,例如(一个或多个)单核或多核处理器、数字信号处理器、微控制器或者其他处理器或处理/控制电路。处理器核心1714可执行来自与处理器1620相同的指令集体系结构(instruction set architecture,ISA)或不同ISA的指令。例如,在一些实施例中,处理器核心1714可实现为核心。在其他实施例中,处理器核心1714可实现为ARM核心。存储器1716可实现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或者数据存储装置。在操作中,存储器1716可存储在负载转移复合体1634的操作期间使用的各种数据和软件,例如操作系统、应用、程序、库和驱动器。
根复合体1718耦合到通信子系统1630(例如,耦合到网络接口控制器)并且可实现为用于与通信子系统1630通信的任何通信电路或其他组件。例如,根复合体1718可包括一个或多个根端口、PCIe链路、PCIe交换机和/或可用于在负载转移复合体1634和通信子系统1630之间传输I/O数据的其他组件。
虽然在图17中被示为分开的组件,但应当理解在一些实施例中软端点1632和负载转移复合体1634可被包括在同一组件中和/或与其他组件包含在一起。例如,在一些实施例中,软端点1632和负载转移复合体1634可实现为包括在同一计算机芯片中的分开的晶粒。在这些实施例中,包括软端点1632和负载转移复合体1634的芯片可与NIC(例如,通信子系统1630)、FPGA或其他组件一起被包含在多芯片封装中。
现在参考图18,在说明性实施例中,计算设备1602在操作期间建立环境1800。说明性环境1800包括应用1802、驱动器1804、事务层1806、灵活端点1808、智能过滤器1810、重试管理器1812和端点接口1814。环境1800的各种组件可实现为硬件、固件、软件或者其组合。这样,在一些实施例中,环境1800的一个或多个组件可实现为电气设备的电路或集合(例如,应用电路1802、驱动器电路1804、事务层电路1806、灵活端点电路1808、智能过滤器电路1810、重试管理器电路1812和/或端点接口电路1814)。应当明白,在这种实施例中,应用电路1802、驱动器电路1804、事务层电路1806、灵活端点电路1808、智能过滤器电路1810、重试管理器电路1812和/或端点接口电路1814中的一个或多个可形成处理器1620、I/O子系统1622、软端点1632和/或计算设备1602的其他组件的一部分。此外,在一些实施例中,说明性组件中的一个或多个可形成另一组件的一部分,并且/或者说明性组件中的一个或多个可以是彼此独立的。
应用1802可实现为任何用户应用、系统应用或者计算设备1602执行的其他应用。类似地,驱动器1804可实现为任何设备驱动器、操作系统、虚拟机监视器和/或控制或以其他方式与软端点1632传输I/O数据的管理程序。驱动器1804可利用一个或多个标准化设备协议(例如快速NVM(NVMe)、VirtIO、英特尔自适应虚拟功能(Adaptive VirtualFunction,AVF)或其他协议)与软端点1632通信。例如,驱动器1804可实现为本地存储驱动器、网络设备驱动器或者其他设备驱动器。应用1802可经由驱动器1804访问由软端点1632和/或负载转移复合体1634提供的服务。
灵活端点1808被配置为对软端点1632的端点固件编程。灵活端点1808还被配置为响应于对端点固件编程而基于端点固件建立模拟的端点层次体系。建立端点层次体系可包括模拟一个或多个快速PCI交换机、快速PCI桥接器和/或快速PCI端点(设备/功能)。
事务层1806被配置为响应于模拟的端点层次体系被建立而接收源自于计算设备1602的根复合体1624的I/O事务。I/O事务可实现为快速PCI事务层封包(transactionlayer packet,TLP)。事务层1806还可被配置为接收源自于根复合体1624的重试I/O事务。重试I/O事务与先前接收的I/O事务相关联。
智能过滤器1810被配置为确定是否要处理接收到的I/O事务。智能过滤器1810可基于TLP的类型或者TLP的地址来确定是否要处理I/O事务。如果确定要处理I/O事务,智能过滤器1810还被配置为处理I/O事务。处理I/O事务可包括将与I/O事务相关联的数据拷贝到软端点1632的存储器或者将与I/O事务相关联的数据拷贝到负载转移复合体1634的存储器。
端点接口1814被配置为响应于确定不处理I/O事务而将I/O事务转发到计算设备的负载转移复合体1634。转发I/O事务可包括利用元数据来封装I/O事务,所述元数据例如是I/O事务的大小、I/O事务的原始时间、I/O事务的开始、I/O事务的结束或者对队列中的最后事务的指示。端点接口1814还被配置为响应于将I/O事务转发到负载转移复合体1634而从负载转移复合体1634接收响应。
重试管理器1812被配置为将从负载转移复合体1634接收的响应存储在软端点1632的历史缓冲器中。重试管理器1812还被配置为响应于接收到重试I/O事务而从历史缓冲器取回响应。
现在参考图19-图20,在使用中,计算设备1602可执行用于灵活端点加速的方法1900。应当明白,在一些实施例中,方法1900的操作可由如图18所示的计算设备1602的环境1800的一个或多个组件(例如软端点1632)执行。方法1900开始于块1902中,在其中软端点1632利用软端点配置来对端点固件编程。可利用任何适当的技术从主机接收端点固件。例如,处理器1620可经由RC 1624配设固件或者固件可以是在带外配设的。端点固件可实现为被软核心1704或者软端点1632的其他可编程元件处理的存储的指令或者其他数据。端点固件可例如被存储在存储器1708或者软端点1632的其他易失性或非易失性存储装置中。
在块1904中,软端点1632为软端点建立模拟的端点层次体系。端点层次体系可包括任何数目、类型和/或布置的模拟I/O设备。为了建立模拟端点层次体系,软端点1632可模拟端点层次体系的配置空间、I/O链接、设备、功能、虚拟功能和/或其他组件。模拟端点层次体系的一个示例在图22中图示并且在下文进一步描述。在一些实施例中,在块1906中,软端点1632模拟一个或多个PCIe交换机。每个模拟的交换机包括一上游端口和一个或多个下游端口,并且可包括多个虚拟PCI-PCI桥接器。在一些实施例中,在块1908中,软端点1632模拟一个或多个PCIe桥接器。PCIe桥接器将PCIe层次体系连接到不同的I/O互连,例如PCI或PCI-X。在一些实施例中,在块1910中,软端点1632模拟一个或多个PCIe端点。每个端点可包括PCIe设备和一个或多个功能(即,物理功能和/或虚拟功能)。软端点1632可模拟多种类型的端点,包括NVMe端点、VirtIO端点、自适应虚拟功能(AVF)端点或者其他端点。
在块1912中,软端点1632在I/O互连的事务层上接收来自主机的事务。该事务可例如源自于计算设备1602的根复合体1624处。在一些实施例中,在块1914中,软端点1632可从主机接收快速PCI事务层封包(TLP)。
在块1916中,软端点1632确定其是否从主机接收到重试的事务。如下文进一步描述的,在一些实施例中,主机可在经历超时或其他差错之后重试事务。软端点1632可使用任何适当的技术来识别重试的事务。例如,软端点1632可将未解决的事务存储在历史缓冲器或者其他数据结构中,并且可确定事务是否匹配未解决的事务。作为另一示例,重试的事务可引用并行地址空间。如果事务被重试,则方法1900前进到块1918,如下所述。如果事务未被重试,则方法1900分支到块1920。
在块1920中,软端点1632确定是否要自己处理事务;也就是说,是否要在软端点1632上处理事务。软端点1632可使用任何过滤策略或其他标准来确定是否要处理事务。在一些实施例中,在块1922中,软端点1632可基于其事务类型来过滤事务。事务类型可包括PCIe事务类型,例如配置读取、配置写入、存储器读取、存储器写入、I/O读取、I/O写入和/或消息。例如,在一些实施例中,软端点1632可处理配置读取和写入和/或存储器读取和写入,并且可不处理其他类型的事务。作为另一示例,软端点1632可处理所有类型的事务。作为另外一个示例,软端点1632可不处理任何类型的事务。在一些实施例中,在块1924中,软端点1632可基于事务的目标地址来过滤事务。例如,软端点1632可处理具有在配置空间的低64字节中的地址的事务并且可不处理具有更高地址的事务。当然,如上所述,软端点1632可组合评估多个过滤标准或者以其他方式考虑多个过滤标准。
在块1926中,软端点1632检查事务是否应当由软端点1632自己处理。如果是,则方法1900分支到块1928,这在图20中示出。如果软端点1632确定不处理事务,则方法1900分支到块1934,这也在图20中示出。
在图20中示出的块1928中,软端点1632利用软端点1632的资源处理事务。软端点1632可执行计算任务、直接存储器访问(direct memoryaccess,DMA)传送或者从负载转移复合体1634负载转移端点处理的其他操作。软端点1632可利用软端点1632的软核心1704例如执行一个或多个端点模拟、配置空间模拟或者其他处理任务。软核心1704可被编程以软端点固件。在一些实施例中,在块1930中,软端点1632可将与事务相关联的数据拷贝到软端点1632。例如,软端点1632可使用软端点1632的DMA引擎1706来将由事务标识的数据从存储器1626拷贝到软端点1632的存储器1708。由软端点1632管理DMA传送可从负载转移复合体1634负载转移DMA处理。在一些实施例中,在块1932中,软端点1632可将与事务相关联的数据拷贝到负载转移复合体1634。例如,软端点1632可使用软端点1632的DMA引擎1706来将由事务标识的数据从存储器1626拷贝到负载转移复合体1634的存储器1716。由软端点1632管理DMA传送可从负载转移复合体1634负载转移DMA处理。在处理事务之后,方法1900前进到块1944,如下所述。
返回参考在图19中示出的块1926,如果软端点1632确定不处理事务,则方法1900分支到块1934,这在图20中示出。在块1934中,软端点1632经由端点接口1710将该事务传递到负载转移复合体1634。软端点1632可例如将该事务作为PCIe TLP传递到负载转移复合体1634。在一些实施例中,在块1936中,软端点1632可利用元数据来封装事务。例如,软端点1632可在PCIe TLP被传送到负载转移复合体1634时向其添加一个或多个头部。元数据可包括处理提示或者可被负载转移复合体1634用来加速处理的其他额外信息。元数据可包括例如关于下述项的处理提示:事务的大小、事务的原始时间、事务的结束、新事务的开始和事务是否是队列中的最后一个。
负载转移复合体1634可在接收到事务时处理事务。例如,负载转移复合体1634可执行存储栈,该存储栈基于事务执行一个或多个NVMe命令或其他存储命令。负载转移复合体1634可访问一个或多个远程设备1604上的远程存储装置1640来处理事务。在块1938中,在负载转移复合体1634完成处理事务之后,软端点1632可从负载转移复合体1634接收响应。该响应可实现为PCIe完成、TLP、消息、中断或者由软端点1632从负载转移复合体1634接收的其他数据。在一些实施例中,在块1940中,软端点1632可从响应中解封出元数据。例如,软端点1632可从接收自负载转移复合体1634的PCIe TLP或完成中剥离一个或多个头部。在一些实施例中,在块1942中,软端点1632可将响应存储在历史缓冲器中。如下文进一步描述的,在一些实施例中,负载转移复合体1634可返回一个有效但是直到主机设置的超时之后才接收到的响应。在这些实施例中,不是将该事务重提交到负载转移复合体1634,而是软端点1632可将响应缓存在历史缓冲器中并且在本地取回响应。在接收到来自负载转移复合体1634的响应之后,方法1900前进到块1944。
在块1944中,软端点1632将响应转发到主机。该响应可例如是从软端点1632的端点接口1702的上游端口发出的并且可被寻址到计算设备1602的根复合体1624、存储器1626或者其他组件。该响应可由软端点1632自己联系处理事务而生成,如上文联系块1928所述,和/或该响应可以是从负载转移复合体1634接收的,如上文联系块1938所述。在转发响应之后,方法1900循环回到图19中所示的块1912以继续处理事务。
返回参考图19的块1916,如果软端点1632确定事务被重试,则方法1900前进到块1918,在其中软端点1632从历史缓冲器向主机返回与重试的事务相对应的响应。如上所述,存储在历史缓冲器中的响应是先前从负载转移复合体1634接收的。通过从软端点1632的本地历史缓冲器转发响应而不是向负载转移复合体1634提交事务,软端点1632可为重试的事务改善性能。在转发响应之后,方法1900循环回到块1912以继续处理事务。
现在参考图21中,在使用中,计算设备1602可执行用于事务重试的方法2100。应当明白,在一些实施例中,方法2100的操作可由如图18所示的计算设备1602的环境1800的一个或多个组件(例如驱动器1804或者驱动器1804和软端点1632之间的硬件或软件中介层)执行。方法2100开始于块2102中,在其中计算设备1602向软端点1632提交I/O事务。如上所述,事务可源自于计算设备1602的根复合体1624处,并且事务可实现为快速PCI事务层封包(TLP)。
在块2104中,计算设备1602确定是否发生了与事务相关联的超时。例如,计算设备1602可确定是否在预定的时间限制期满之前从软端点1632接收到了与事务相关联的响应。如果没有发生超时(即,如果接收到了响应或者以其他方式成功完成了事务),则方法2100循环回到块2102以向软端点1632提交额外的事务。如果发生超时,则方法2100前进到块2106。
在块2106中,计算设备1602向软端点1632提交重试事务。与原始事务类似,重试事务可以是源自于根复合体1624的PCIe TLP。在一些实施例中,重试事务可具有相同地址或者在其他方面与原始事务相同。在这些实施例中,软端点1632可例如通过维护未解决事务的列表或其他数据结构来识别重试事务。在一些实施例中,在块2108中,计算设备1602可在与原始事务的并行地址空间中提交重试事务。例如,重试事务可使用不同的基本地址,但使用与原始事务相同的偏移。在该实施例中,软端点1632可将重试事务识别为并行地址空间中包括的那些。在提交重试事务之后,方法2100循环回到块2102以向软端点1632提交额外的事务。
现在参考图22,图2200图示了可由软端点1632建立的模拟设备层次体系的一个可能实施例。如图所示,模拟设备层次体系可包括耦合到根复合体1624的可缩放I/O虚拟化(scalable I/O virtualization,SIOV)NVMe端点2202和PCIe交换机2204、2206。SIOV NVMe端点2202包括多个物理功能。交换机2204耦合到包括多个物理功能和多个虚拟功能的单根I/O虚拟化(single-root I/O virtualization,SRIOV)NVMe端点2208,并且耦合到包括多个物理功能的SIOV VirtIO端点2210。交换机2206耦合到SRIOV VirtIO端点2212,其包括多个物理功能和多个虚拟功能。所有元素2202、2204、2206、2208、2210、2212都被软端点1632模拟并且从而可被计算设备1602编程在固件中或者以其他方式灵活配置。
示例
下面提供本文公开的技术的说明性示例。技术的实施例可包括下面描述的示例中的任何一个或多个以及其任何组合。
示例1包括一种用于I/O通信的软端点,所述软端点包括:灵活端点,用于基于所述软端点的端点固件建立模拟端点层次体系;事务层,用于响应于所述模拟端点层次体系的建立而接收源自于计算设备的根端口的I/O事务;智能过滤器,用于(i)确定是否要处理所述I/O事务,并且(ii)响应于确定要处理所述I/O事务而处理所述I/O事务;以及端点接口,用于响应于确定不处理所述I/O事务而将所述I/O事务转发到所述计算设备的负载转移复合体。
示例2包括如示例1所述的主题,并且其中所述灵活端点还用于:对所述软端点的端点固件编程,其中建立所述端点层次体系包括响应于对所述端点固件的编程而建立所述端点层次体系。
示例3包括如示例1和2的任何一项所述的主题,并且其中建立所述端点层次体系包括:模拟快速PCI交换机、快速PCI桥接器、或者快速PCI端点。
示例4包括如示例1-3的任何一项所述的主题,并且其中所述I/O事务包括快速PCI事务层封包。
示例5包括如示例1-4的任何一项所述的主题,并且其中确定是否要处理所述I/O事务包括:基于所述事务层封包的类型来确定是否要处理所述I/O事务。
示例6包括如示例1-5的任何一项所述的主题,并且其中确定是否要处理所述I/O事务包括:基于所述事务层封包的地址来确定是否要处理所述I/O事务。
示例7包括如示例1-6的任何一项所述的主题,并且其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述软端点的存储器。
示例8包括如示例1-7的任何一项所述的主题,并且其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述负载转移复合体的存储器。
示例9包括如示例1-8的任何一项所述的主题,并且其中将所述I/O事务转发到所述负载转移复合体包括:利用元数据来封装所述I/O事务。
示例10包括如示例1-9的任何一项所述的主题,并且其中所述元数据包括所述I/O事务的大小、所述I/O事务的原始时间、所述I/O事务的开始、所述I/O事务的结束、或者对队列中的最后事务的指示。
示例11包括如示例1-10的任何一项所述的主题,并且还包括重试管理器,其中所述端点接口还用于响应于将所述I/O事务转发到所述负载转移复合体而接收来自所述负载转移复合体的响应;并且所述重试管理器用于将所述响应存储在所述软端点的历史缓冲器中。
示例12包括如示例1-11的任何一项所述的主题,并且其中所述事务层用于接收源自于所述根端口的重试I/O事务,其中所述重试I/O事务与所述I/O事务相关联;并且所述重试管理器用于响应于对所述重试I/O事务的接收而从所述历史缓冲器取回所述响应。
示例13包括一种用于I/O通信的方法,该方法包括:由计算设备的软端点基于所述软端点的端点固件建立模拟端点层次体系,其中所述软端点耦合到所述计算设备的根端口,并且其中所述软端点还耦合到所述计算设备的负载转移复合体;响应于建立所述模拟端点层次体系,由所述软端点接收源自于所述根端口的I/O事务;由所述软端点确定是否要处理所述I/O事务;响应于确定要处理所述I/O事务,由所述软端点处理所述I/O事务;并且响应于确定不处理所述I/O事务,由所述软端点将所述I/O事务转发到所述负载转移复合体。
示例14包括如示例13所述的主题,并且还包括:由所述计算设备对所述软端点的端点固件编程,其中建立所述端点层次体系包括响应于对所述端点固件编程而建立所述端点层次体系。
示例15包括如示例13和14的任何一项所述的主题,并且其中建立所述端点层次体系包括:模拟快速PCI交换机、快速PCI桥接器、或者快速PCI端点。
示例16包括如示例13-15的任何一项所述的主题,并且其中接收所述I/O事务包括:接收快速PCI事务层封包。
示例17包括如示例13-16的任何一项所述的主题,并且其中确定是否要处理所述I/O事务包括:基于所述事务层封包的类型来确定是否要处理所述I/O事务。
示例18包括如示例13-17的任何一项所述的主题,并且其中确定是否要处理所述I/O事务包括:基于所述事务层封包的地址来确定是否要处理所述I/O事务。
示例19包括如示例13-18的任何一项所述的主题,并且其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述软端点的存储器。
示例20包括如示例13-19的任何一项所述的主题,并且其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述负载转移复合体的存储器。
示例21包括如示例13-20的任何一项所述的主题,并且其中将所述I/O事务转发到所述负载转移复合体包括:利用元数据来封装所述I/O事务。
示例22包括如示例13-21的任何一项所述的主题,并且其中所述元数据包括所述I/O事务的大小、所述I/O事务的原始时间、所述I/O事务的开始、所述I/O事务的结束、或者对队列中的最后事务的指示。
示例23包括如示例13-22的任何一项所述的主题,并且还包括:响应于将所述I/O事务转发到所述负载转移复合体而由所述软端点接收来自所述负载转移复合体的响应;并且由所述软端点将所述响应存储在所述软端点的历史缓冲器中。
示例24包括如示例13-23的任何一项所述的主题,并且还包括:由所述软端点接收源自于所述根端口的重试I/O事务,其中所述重试I/O事务与所述I/O事务相关联;并且响应于接收到所述重试I/O事务而由所述软端点从所述历史缓冲器取回所述响应。
示例25包括一种计算设备,包括:处理器;以及存储器,其中存储有多个指令,这些指令当被所述处理器执行时使得所述计算设备执行如示例13-24的任何一项所述的方法。
示例26包括一个或多个非暂态计算机可读存储介质,包括存储在其上的多个指令,这些指令响应于被执行而使得计算设备执行如示例13-24的任何一项所述的方法。
示例27包括一种计算设备,包括用于执行如示例13-24的任何一项所述的方法的装置。
Claims (25)
1.一种用于I/O通信的软端点,该软端点包括:
灵活端点,用于基于所述软端点的端点固件建立模拟端点层次体系;
事务层,用于响应于所述模拟端点层次体系的建立而接收源自于计算设备的根端口的I/O事务;
智能过滤器,用于(i)确定是否要处理所述I/O事务,并且(ii)响应于确定要处理所述I/O事务而处理所述I/O事务;以及
端点接口,用于响应于确定不处理所述I/O事务而将所述I/O事务转发到所述计算设备的负载转移复合体。
2.如权利要求1所述的软端点,其中所述灵活端点还用于:对所述软端点的端点固件编程,其中建立所述端点层次体系包括响应于对所述端点固件的编程而建立所述端点层次体系。
3.如权利要求1所述的软端点,其中建立所述端点层次体系包括:模拟快速PCI交换机、快速PCI桥接器、或者快速PCI端点。
4.如权利要求1所述的软端点,其中所述I/O事务包括快速PCI事务层封包。
5.如权利要求4所述的软端点,其中确定是否要处理所述I/O事务包括:基于所述事务层封包的类型来确定是否要处理所述I/O事务。
6.如权利要求4所述的软端点,其中确定是否要处理所述I/O事务包括:基于所述事务层封包的地址来确定是否要处理所述I/O事务。
7.如权利要求1所述的软端点,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述软端点的存储器。
8.如权利要求1所述的软端点,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述负载转移复合体的存储器。
9.如权利要求1所述的软端点,其中将所述I/O事务转发到所述负载转移复合体包括:利用元数据来封装所述I/O事务。
10.如权利要求1所述的软端点,还包括重试管理器,其中:
所述端点接口还用于响应于将所述I/O事务转发到所述负载转移复合体而接收来自所述负载转移复合体的响应;并且
所述重试管理器用于将所述响应存储在所述软端点的历史缓冲器中。
11.如权利要求10所述的软端点,其中:
所述事务层用于接收源自于所述根端口的重试I/O事务,其中所述重试I/O事务与所述I/O事务相关联;并且
所述重试管理器用于响应于对所述重试I/O事务的接收而从所述历史缓冲器取回所述响应。
12.一种用于I/O通信的方法,该方法包括:
由计算设备的软端点基于所述软端点的端点固件建立模拟端点层次体系,其中所述软端点耦合到所述计算设备的根端口,并且其中所述软端点还耦合到所述计算设备的负载转移复合体;
响应于建立所述模拟端点层次体系,由所述软端点接收源自于所述根端口的I/O事务;
由所述软端点确定是否要处理所述I/O事务;
响应于确定要处理所述I/O事务,由所述软端点处理所述I/O事务;并且
响应于确定不处理所述I/O事务,由所述软端点将所述I/O事务转发到所述负载转移复合体。
13.如权利要求12所述的方法,还包括:由所述计算设备对所述软端点的端点固件编程,其中建立所述端点层次体系包括响应于对所述端点固件编程而建立所述端点层次体系。
14.如权利要求12所述的方法,其中建立所述端点层次体系包括模拟快速PCI交换机、快速PCI桥接器、或者快速PCI端点。
15.如权利要求12所述的方法,其中:
接收所述I/O事务包括接收快速PCI事务层封包;并且
确定是否要处理所述I/O事务包括基于所述事务层封包的类型来确定是否要处理所述I/O事务。
16.如权利要求12所述的方法,其中:
接收所述I/O事务包括接收快速PCI事务层封包;并且
确定是否要处理所述I/O事务包括基于所述事务层封包的地址来确定是否要处理所述I/O事务。
17.如权利要求12所述的方法,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述软端点的存储器。
18.如权利要求12所述的方法,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述负载转移复合体的存储器。
19.一个或多个计算机可读存储介质,包括存储在其上的多个指令,这些指令响应于被执行而使得计算设备:
由所述计算设备的软端点基于所述软端点的端点固件建立模拟端点层次体系,其中所述软端点耦合到所述计算设备的根端口,并且其中所述软端点还耦合到所述计算设备的负载转移复合体;
响应于建立所述模拟端点层次体系,由所述软端点接收源自于所述根端口的I/O事务;
由所述软端点确定是否要处理所述I/O事务;
响应于确定要处理所述I/O事务,由所述软端点处理所述I/O事务;并且
响应于确定不处理所述I/O事务,由所述软端点将所述I/O事务转发到所述负载转移复合体。
20.如权利要求19所述的一个或多个计算机可读存储介质,还包括存储在其上的多个指令,这些指令响应于被执行而使得所述计算设备:由所述计算设备对所述软端点的端点固件编程,其中建立所述端点层次体系包括响应于对所述端点固件编程而建立所述端点层次体系。
21.如权利要求19所述的一个或多个计算机可读存储介质,其中建立所述端点层次体系包括:模拟快速PCI交换机、快速PCI桥接器、或者快速PCI端点。
22.如权利要求19所述的一个或多个计算机可读存储介质,其中:
所述I/O事务包括快速PCI事务层封包;并且
确定是否要处理所述I/O事务包括基于所述事务层封包的类型来确定是否要处理所述I/O事务。
23.如权利要求19所述的一个或多个计算机可读存储介质,其中:
所述I/O事务包括快速PCI事务层封包;并且
确定是否要处理所述I/O事务包括基于所述事务层封包的地址来确定是否要处理所述I/O事务。
24.如权利要求19所述的一个或多个计算机可读存储介质,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述软端点的存储器。
25.如权利要求19所述的一个或多个计算机可读存储介质,其中处理所述I/O事务包括:将与所述I/O事务相关联的数据拷贝到所述负载转移复合体的存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/366,504 | 2019-03-27 | ||
US16/366,504 US10783100B2 (en) | 2019-03-27 | 2019-03-27 | Technologies for flexible I/O endpoint acceleration |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752872A true CN111752872A (zh) | 2020-10-09 |
Family
ID=69584619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010121526.0A Pending CN111752872A (zh) | 2019-03-27 | 2020-02-26 | 用于灵活i/o端点加速的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10783100B2 (zh) |
EP (1) | EP3716085B1 (zh) |
CN (1) | CN111752872A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105979007B (zh) * | 2016-07-04 | 2020-06-02 | 华为技术有限公司 | 加速资源处理方法、装置及网络功能虚拟化系统 |
US10925166B1 (en) * | 2019-08-07 | 2021-02-16 | Quanta Computer Inc. | Protection fixture |
US11847352B1 (en) * | 2021-09-22 | 2023-12-19 | Ridgeline, Inc. | Parent child request recovery to improve stability |
TWI809741B (zh) * | 2022-03-02 | 2023-07-21 | 大陸商星宸科技股份有限公司 | 具有命令轉發機制的多晶片系統及地址產生方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
US8645600B2 (en) * | 2011-11-10 | 2014-02-04 | International Business Machines Corporation | Configuring expansion component interconnect (‘ECI’) physical functions on an ECI device in a computing system |
US10380026B2 (en) * | 2014-09-04 | 2019-08-13 | Sandisk Technologies Llc | Generalized storage virtualization interface |
US9996484B1 (en) * | 2014-09-17 | 2018-06-12 | Amazon Technologies, Inc. | Hardware acceleration for software emulation of PCI express compliant devices |
SG11201702584UA (en) * | 2014-10-05 | 2017-04-27 | Amazon Tech Inc | Emulated endpoint configuration |
US9733980B1 (en) * | 2014-12-05 | 2017-08-15 | Amazon Technologies, Inc. | Virtual machine management using I/O device logging |
US10360092B1 (en) * | 2017-05-17 | 2019-07-23 | Amazon Technologies, Inc. | Hybrid hardware and software reporting management |
-
2019
- 2019-03-27 US US16/366,504 patent/US10783100B2/en active Active
-
2020
- 2020-02-26 CN CN202010121526.0A patent/CN111752872A/zh active Pending
- 2020-03-10 EP EP20161942.6A patent/EP3716085B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10783100B2 (en) | 2020-09-22 |
US20200065271A1 (en) | 2020-02-27 |
EP3716085B1 (en) | 2021-12-01 |
EP3716085A1 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210073151A1 (en) | Page-based remote memory access using system memory interface network device | |
US11030017B2 (en) | Technologies for efficiently booting sleds in a disaggregated architecture | |
US20190372866A1 (en) | Technologies for latency based service level agreement management in remote direct memory access networks | |
CN111752872A (zh) | 用于灵活i/o端点加速的技术 | |
US20190250857A1 (en) | TECHNOLOGIES FOR AUTOMATIC WORKLOAD DETECTION AND CACHE QoS POLICY APPLICATION | |
EP3731063B1 (en) | Technologies for providing adaptive power management in an accelerator sled | |
EP3731090A1 (en) | Technologies for providing resource health based node composition and management | |
EP3761177A1 (en) | Technologies for providing latency-aware consensus management in a disaggregated architecture | |
US10970246B2 (en) | Technologies for remote networked accelerators | |
EP3731091A1 (en) | Technologies for providing an accelerator device discovery service | |
EP3716088B1 (en) | Technologies for flexible protocol acceleration | |
US20190138464A1 (en) | Technologies for providing i/o channel abstraction for accelerator device kernels | |
CN115136565A (zh) | 用于在分解环境中提供先进资源管理的技术 | |
EP3739448B1 (en) | Technologies for compressing communication for accelerator devices | |
EP3757785B1 (en) | Technologies for facilitating remote memory requests in accelerator devices | |
EP3731094A1 (en) | Technologies for providing inter-kernel flow control for accelerator device kernels | |
US20200341904A1 (en) | Technologies for chained memory search with hardware acceleration | |
US20210073161A1 (en) | Technologies for establishing communication channel between accelerator device kernels | |
US20190324802A1 (en) | Technologies for providing efficient message polling | |
EP3731095A1 (en) | Technologies for providing inter-kernel communication abstraction to support scale-up and scale-out |
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 |