CN115836282A - 具有直接连接调度的分解式交换机控制路径 - Google Patents
具有直接连接调度的分解式交换机控制路径 Download PDFInfo
- Publication number
- CN115836282A CN115836282A CN202180040261.4A CN202180040261A CN115836282A CN 115836282 A CN115836282 A CN 115836282A CN 202180040261 A CN202180040261 A CN 202180040261A CN 115836282 A CN115836282 A CN 115836282A
- Authority
- CN
- China
- Prior art keywords
- packet
- host
- function block
- function
- data
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/423—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
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)
- Data Exchanges In Wide-Area Networks (AREA)
- Logic Circuits (AREA)
Abstract
本文的实施例描述了用于将在集成组件和主机中的I/O功能块之间传输的数据分离成分开的数据路径的技术。在一个实施例中,使用绕过集成组件中的交换机的直接数据路径来传输数据包。相反,配置包(例如,热交换、热添加、热移除数据、某些类型的描述符等)被传输到交换机,然后交换机将配置包转发到它们的目标。数据包的直接路径不依赖于交换机连接性(及其伴随的延迟)以在主机和I/O功能块之间传输带宽敏感流量,而是避免(例如绕过)交换机的带宽、资源、存储/转发以及延迟属性。同时,通过使用交换机以提供配置数据路径,继续支持软件兼容性属性,例如热插拔属性(所述软件兼容性属性不是延迟或带宽敏感的)。
Description
技术领域
本公开的示例通常涉及为在主机和集成组件上的I/O功能块之间传输的数据包和配置包建立分开的数据路径。
背景技术
服务器主机加速器系统,例如由周边装置互连高速(PCIe)或缓存一致性协议(例如计算高速链接(CXL:Compute Express Link)和加速器的缓存一致性互连(CCIX:CacheCoherent Interconnect for Accelerators))使能的那些通过协议感知交换机组件实现对多个器件的更多扇出。因此,单个物理主机端口可以与多个I/O器件进行通信,例如现场可编程门阵列(FPGA)、图形处理单元(GPU)、网络接口卡(NIC),包括执行不同I/O功能块的器件,例如网络功能块、存储功能块、加速器功能块、直接内存访问(DMA)功能块等,即使主机和I/O器件两者通过CXL、CCIX和PCIe建立的点对点连接进行通信。
服务器主机加速器系统还通过相同的协议感知交换机组件为系统中的多器件卡插槽提供热插拔机制。这些热插拔机制,包括热添加和热移除能力,创建了系统,其中特定服务器不受基于静态插入这些插槽中的协议卡的固定功能块组合的限制。相反,I/O功能块的任何组合都可以在运行时动态地热添加、热移除或热交换,以创建所需的系统组成。
但是,PCIe和CXL拓扑是树形拓扑。树形拓扑的缺点是来自主机的流量必须从源根节点通过交换机的上行端口遍历到树的分支。相反方向的流量受制于相同的树遍历路径。此外,由于延迟对整体系统性能的不成比例影响,缓存一致性协议对延迟的敏感性更高。对于缓存代理的情况,现有技术会导致在为通过交换机瓶颈连接的多个缓存代理端点提供一致性操作时增加延迟。除了一致性协议之外,由于在主机和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图示了根据一个示例的、具有用于I/O功能块的不同数据路径的计算系统。
图2图示了根据一个示例的、具有不同数据路径的直通接口。
图3是根据一个示例的、使用不同数据路径将数据包和配置包从主机传输到I/O功能块的流程图。
图4是根据一个示例的、使用不同数据路径将数据包和配置包从I/O功能块传输到主机的流程图。
图5是根据多个示例的、用于热交换新I/O功能块的流程图。
图6图示了根据多个示例的、其中添加了新I/O功能块的计算系统。
图7图示了根据多个示例的、具有与统合式网络接口卡通信的主机的计算系统。
为了便于理解,在可能的情况下,使用了相同的附图标记来表示附图共有的相同元件。预期一个示例的元件可以有益地结合到其他示例中。
具体实施方式
下文将参照附图描述各种特征。应当注意,附图可以或可以不按比例绘制,并且相似结构或功能块的元件在所有附图中由相似的附图标记表示。应当注意,附图仅旨在便于对特征的描述。它们不旨在作为说明书的详尽描述或作为对权利要求的范围的限制。此外,图示的示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例并且可以在任何其他示例中实践,即使未如此说明或未如此明确描述。
本文的实施例描述了用于将在集成组件中的I/O功能块和主机之间传输的数据分离成分开的数据路径的技术。在一个实施例中,使用绕过集成组件中的交换机的直接数据路径来传输数据包(例如,DMA有效载荷和描述符、CXL监听、或CCIX消息)。相反,配置包(例如,热交换、热添加、热移除数据、配置控制写入或配置状态读取等)被传输到交换机,然后交换机将配置包转发到它们的目标。以这种方式,交换机控制路径被分解为两条路径:一条用于数据包,另一条用于配置包。用于数据包的直接路径不依赖于在主机和I/O功能块之间的传输带宽或延迟敏感流量方面的交换机连接性,而是避免了(例如绕过了)交换机的带宽、资源、存储/转发和延迟属性。同时,软件兼容性属性,例如热插拔属性或配置寄存器的编程(该软件兼容性属性对延迟或带宽不敏感),继续通过使用提供配置数据路径的交换机来支持。
在一个实施例中,集成组件包括一个直通接口,用于将从主机接收的数据路由到I/O功能块和交换机,以及在向主机传输数据时在I/O功能块和交换机之间进行仲裁。然而,不同于将数据缓存在队列中的交换机(从而增加延迟并影响带宽),直通接口的路由和仲裁功能块不存储包,而是立即将接收到的包转发到它们的目标。如上所述,直通接口可以在主机和I/O功能块之间建立直接路径,所述直接路径在主机和I/O功能块之间使用交换机路由配置数据(所述配置数据对延迟或时间不敏感)时绕过用于时间敏感数据的交换机。以这种方式,对延迟或带宽不敏感的包不会阻塞延迟与带宽敏感数据所使用的同一数据路径。
图1图示了根据一个示例的、具有用于I/O功能块140的不同数据路径的计算系统100。具体地,计算系统100提供用于在主机105和I/O功能块140之间传输数据包的直接数据路径170和用于在主机105和I/O功能块140之间传输配置包的间接配置数据路径180。因此,与时间敏感数据和非时间敏感数据共享相同物理连接的先前解决方案不同,在计算系统100中,时间敏感数据可以在与集成组件160中的非时间敏感数据分开的路径上传输。
如图所示,计算系统100包括主机105和包含I/O功能块140的集成组件160。在该示例中,主机105包括一个或多个处理器110和存储器115。处理器110代表任意数量的处理单元,每个单元都可以包含任意数量的处理核心。存储器115可以包括易失性存储器元件、非易失性存储器元件或两者的组合。在该示例中,存储器115存储一个或多个虚拟机(VM)120或租户。这些VM120可以执行将任务提交给集成组件160的功能块。集成组件160中的I/O功能块140然后可以执行那些任务。
主机105包括耦合到集成组件160中的端口130的端口125。也就是说,主机105和集成组件160中的I/O功能块140使用同一对端口125、130来交换数据。在一个实施例中,主机105和集成组件160使用PCIe协议在端口125、130上交换数据。此外,端口125、130之间的相同物理连接由集成组件160中的I/O功能块140共享。在一个实施例中,只有一个I/O功能块140可以在任何给定时间使用端口125、130之间的物理连接。可以使用时间多路复用,使得每个I/O功能块140有机会使用物理连接与主机105交换数据。以这种方式,端口125、130之间的物理连接的带宽(该物理连接通常是最大带宽连接)在I/O功能块140之间共享。
集成组件160可以是其中可以集成多个I/O功能块140和嵌入式交换机150的任何物理器件。在一个实施例中,集成组件160可以包括印刷电路板(PCB)(例如,基板),其中I/O功能块140和嵌入式交换机150是安装在PCB上的分开的集成电路(例如,半导体芯片)。PCB可以包括这些集成电路插入到PCB中的插口。这样,集成电路可以被热交换(例如,执行第一I/O功能块的一个集成电路从插口中移除,并由执行第二I/O功能块的第二集成电路代替)。在另一实施例中,集成组件160可以是系统级封装(SiP),其中用于I/O功能块140的集成电路和嵌入式交换机150被封装在一个或多个芯片载体封装中。尽管在SiP中I/O功能块可能无法热交换,但I/O功能块140仍然可以选择性地激活和停用(例如,热添加和热移除)。
在又一实施例中,集成组件160是片上系统(SoC),其中组件160中的所有组件都包括在同一集成电路或芯片中。SoC可以包括用于实现I/O功能块140的硬化逻辑,其中功能块140可以被激活或停用(例如,热添加或热移除)。备选地,SoC可以包括用于实现I/O功能块140的可编程逻辑,使得I/O功能块140可以热交换,其中用于一个I/O功能块的可编程逻辑被重新配置,使得可编程逻辑执行第二个I/O功能块。在其他实施例中,集成组件160可以是FPGA,其中集成组件160中所示的电路以可编程逻辑或者是ASIC实现,在ASIC中,电路使用硬化逻辑实现。
不管集成组件160的具体实施方式如何,I/O功能块140可以在计算系统100通过物理移除集成电路、停用/激活硬化逻辑,或对可编程逻辑进行重新编程而进行操作时(例如,热添加或热移除)被激活或停用。在一些实施例中,I/O功能块140可以通过用基板(例如PCB)上的另一个集成电路替换第一集成电路或重新配置先前执行第一I/O功能块的可编程逻辑以执行第二I/O功能块来热交换。集成组件160中不受热交换/添加/移除影响的其他I/O功能块140可以继续并行操作。
集成组件160包括耦合到端口130、I/O功能块140、和嵌入式交换机150的直通接口135。直通接口135执行用于通过使用端口130在I/O功能块140、交换机150和主机105之间传输包的路由和仲裁功能块。例如,当从主机105接收包时,直通接口135确定包的类型,所述包的类型指示包是否应该遍历到I/O功能块140的直接数据路径170中的一条路径或者应该被路由到嵌入式交换机150。当从集成组件160向主机105传输包时,直通接口135可以使用仲裁逻辑来决定哪个源(例如,I/O功能块140或嵌入式交换机150中的一个)可以使用端口130来将包传输到主机105。
在一个实施例中,直通接口135不对它从主机105、I/O功能块140或交换机150接收的包进行缓冲或排队。相反,接口135允许包“通过”而不增加延迟。例如,当直通接口135接收到包时,它会立即将包转发到目标,这样接收到的包就不必等待先前接收到的包被直通接口135转发。在图2中,对直通接口135进行了更详细的讨论。
I/O功能块140可以是由主机105卸载以便由集成组件160执行的任何功能块。例如,I/O功能块140可以是加速器(例如,图形加速器、机器学习的人工智能加速器、密码加速器、压缩加速器等)。在其他示例中,I/O功能块140可以是网络通信功能块(例如,NIC功能块)、DMA引擎、网络存储功能块等。
I/O功能块140可以被认为是独立的I/O器件或可以彼此独立操作的功能块。例如,I/O功能块140A可以是执行网络存储的DMA引擎,而I/O功能块140B是人工智能加速器。I/O功能块140A和140B可以是单独的集成电路,或者可以是同一集成电路中的不同电路(例如,不同的硬化逻辑或不同的可编程逻辑)。在任何情况下,如下所述,I/O功能块140可以在计算系统100运行时被热移除(停用)或热添加(激活)。例如,主机105当前可以与I/O功能块140A通信,同时集成组件160添加新I/O功能块140(例如,激活之前被停用的I/O功能块140B,或者添加一个第五I/O功能块(未示出))或移除I/O功能块(例如,将之前激活的I/O功能块140C进行停用)。
嵌入式交换机150可以是在I/O功能块140和主机105之间路由包的PCIe交换机。此外,交换机150可以从主机105接收没有被转发到I/O功能块140的包。如上所述,交换机150可用于路由非延迟和非带宽敏感数据,例如用于热交换、热添加或热移除I/O功能块140的配置包。配置包还可以包括其他信息,例如缓存一致性协议中用于启动发送和接收操作的描述符。
在图1中,由主机105传输的、旨在用于I/O功能块140之一的配置包沿间接配置数据路径180之一被路由通过交换机150。因此,配置包存储在交换机150中的队列155中。该队列155也可以称为主机交换机缓冲器。交换机150可以执行仲裁功能块以确定存储在队列155中的配置包何时被传输或处理。
值得注意的是,在图1中,直接数据路径170绕过嵌入式交换机150,更具体地说,绕过队列155。因此,直接数据路径170也可以称为绕过路径,绕过路径避免了由队列155引起的延迟。因此,计算系统100相对于在为多个缓存代理端点(即,I/O功能块140)服务一致性操作时所有数据都经过交换机150的现有技术减少了延迟。此外,这里的实施例避免在主机105和I/O功能块140之间传输延迟和带宽敏感数据时必须对交换机中的资源进行仲裁。也就是说,敏感数据可以使用直接数据路径170来避免由交换机150执行的仲裁功能块(尽管仲裁仍然在如下所述的直通接口135处执行,但是直通接口135并不使用队列)。
此外,主机105和每个I/O功能块140不必通过交换机为主机105和所有I/O功能块140之间的并发协议消息共享带宽,因为这些消息可以使用直接数据路径170。此外,计算系统100避免依赖交换机150来存储且然后将所有I/O功能块140之间的请求和响应转发到由端口125和130形成的到主机105的单一上游连接。因此,相对于所有流量都通过交换机150路由的现有技术,计算系统100可以受益于改进的性能,其中多个端点(例如,I/O功能块140使用单个连接(例如,端口125、130之间的物理连接)以扇出方式连接到主机105。
图2图示了根据一个示例的具有不同数据路径的直通接口135。即,图2示出了直通接口135中的电路的一个示例,该直通接口允许计算系统200具有图1所示的直接数据路径和间接配置数据路径。
为简单起见,图2中的集成组件260仅包含两个I/O功能块140A和140B,但集成组件260可以包括任意数量的I/O功能块或I/O器件。为了将数据从主机105路由到I/O功能块140或嵌入式交换机150,直通接口135包括路由逻辑205和解复用器(de-mux)215。通常,路由逻辑205确定从主机105的端口125接收到的包(称为下行流量)的目标。基于该目标,路由逻辑205控制解复用器215的选择线,以便将包路由到正确的目标——即,I/O功能块140或嵌入式交换机150中的一个。
在该示例中,路由逻辑205包括解码器210,解码器210解码从主机105接收的包中包含的数据以确定包的目标。在一个实施例中,解码器210识别包的类型以及包的目标ID。包的类型确定了包是应该遍历直接数据路径到达I/O功能块140中的一个还是遍历间接配置数据路径到达嵌入式交换机150。也就是说,数据包可以直接发送到I/O功能块140,同时配置包被传输到嵌入式交换机150。如果解码器210确定该包是数据包,则解码器210还可以确定哪个I/O功能块140是其目标。当向集成组件260添加I/O功能块140时,主机105可以将ID分配给I/O功能块140,主机105将所述I/O功能块140提供给解码器210。通过将该ID嵌入到由主机105传输的数据包中,解码器210可以识别数据包的正确目标,因此路由逻辑205在对应于所选I/O功能块140的直接数据路径上路由数据包。
为了将上行流量从集成组件260转发到主机105,直通接口135包括仲裁逻辑220,其确定集成组件260中的哪个电路组件可以使用端口130。如所示的那样,多路复用器225将每个I/O功能块140和嵌入式交换机150连接到端口130。用于多路复用器225的选择信号由仲裁逻辑220提供。在一个实施例中,仲裁逻辑220确定这些电路组件中的哪个可以将包传输到端口130(例如,仲裁逻辑220时间控制多路复用器225的选择线)。在该示例中,仲裁逻辑220仅允许I/O功能块140或嵌入式交换机150之一访问端口130,因此不存在数据冲突。下面更详细地讨论仲裁逻辑220的细节。
如图2所示,无论集成组件260从主机105接收下行数据还是向主机105传输上行数据,都允许数据通过接口135而不进行排队。因此,相对于I/O功能块140依赖嵌入式交换机150作为它们和主机105之间的中介的系统,沿着I/O功能块140和主机105之间的直接数据路径传输的流量具有减少的延迟。
与直通接口135相似,嵌入式交换机150还包括仲裁逻辑230。也就是说,因为队列155可以存储来自多个源的多个包(例如,从I/O功能块140接收的包或由交换机150中的内部电路生成的包),仲裁逻辑230可以决定这些包中的哪个应该在队列155中具有优先权(而不是简单的先进先出模型)。例如,仲裁逻辑220和仲裁逻辑230两者可以将由I/O功能块产生的流量优先于由交换机中的内部电路产生的流量,或者将从I/O功能块140A接收的流量优先于从I/O功能块140B接收的流量。这在下面更详细地讨论。
图3是根据一个示例的用于使用不同数据路径将数据和配置包从主机传输到I/O功能块的方法300的流程图。在方块305,集成组件在直通接口处从主机接收包。在一个实施例中,集成组件包括依赖于在集成组件和主机之间的共享物理连接的多个I/O功能块(或I/O器件)。
在方块310,直通接口中的解码器确定接收到的包是数据包还是配置包。例如,包头可能包含指示包类型的数据。该信息可以由主机放入包中,也可以是用于传输包的物理传送协议的一部分(例如,PCIe)。在任何情况下,解码器可以对包中的信息进行解码,以确定它是否为数据包,或者更具体地,具有时间敏感数据的包,还是为配置包,例如,具有非时间敏感数据的包。
数据包和配置包之间的区别可以根据计算系统的特定实现而变化。例如,数据包可以是DMA有效载荷、CXL监听、CCIX消息等,而配置包包括用于执行热交换、热添加或热移除的描述符或命令(例如,主机到I/O器件控制消息)。本文的实施例可以与可根据包类型对数据进行分叉的任何系统一起使用。
如果包是数据包,则方法300进行到方块315,其中直通接口将数据包直接路由到对应的I/O功能块。换句话说,直通接口中的路由逻辑在绕过集成组件中的嵌入式交换机的直接数据路径上转发数据包。在一个实施例中,路由逻辑中的解码器对接收到的数据包进行解码以识别包的目标(例如,识别数据包中的目标ID)。例如,在配置计算系统时(例如,在添加I/O功能块或建立I/O功能块与主机之间的通信时),主机可以为路由逻辑已知的I/O功能块分配目标ID。当向集成组件传输包时,主机可以在包中嵌入目标ID。然后,解码器可以识别这些ID,并且路由逻辑可以确保将接收到的包转发到适当的I/O功能块,例如,使用解复用器。
然而,如果数据包是配置包,则方法300改为进行到方块320,其中直通接口将配置包转发到嵌入式交换机。在方块325,嵌入式交换机确定配置包的目标是交换机本身还是I/O功能块之一。也就是说,在方法300中,主机可以传输以交换机为目的地的配置包,这可以配置交换机以执行特定任务。主机也可以向I/O功能块发送配置包。
如果配置包以交换机为目的地,则方法300进行到方块330,在方块330,嵌入式交换机处理在交换机(图2中未示出)的配置(config)空间中的包。配置包可以通过改变配置空间来改变交换机的配置操作。
如果配置包以I/O功能块之一为目的地,则方法300转而进行到方块335,在方块335中嵌入式交换机将包转发到对应的I/O功能块。也就是说,交换机识别哪个I/O功能块是配置包的目标,并使用间接配置数据路径将包转发到该I/O功能块。
图4是根据一个示例的、用于使用不同数据路径将数据和配置包从I/O功能块传输到主机的方法400的流程图。也就是说,虽然方法300描述了使用两个数据路径从主机向集成组件中的各种电路组件传输数据的技术,但方法400描述了使用两个数据路径从集成组件向主机传输数据。
在方块405,嵌入式交换机从I/O功能块之一接收第一配置包(例如,配置响应消息)。例如,第一配置包可以是对由主机先前传输给I/O功能块的配置包的回复。
并行地,或基本上同时,在方块410,嵌入式交换机从交换机中的配置空间接收第二配置包。或者在另一个实施例中,嵌入式交换机可以基本上同时从两个I/O功能块接收两个(或更多个)配置包。
在方块415,嵌入式交换机中的仲裁逻辑在嵌入式交换机中的第一和第二配置包之间进行仲裁。也就是说,第一和第二包可以被存储在队列中,在包可以传输到直通接口之前等待仲裁完成,然后传输到主机。该仲裁逻辑可以基于服务质量(QoS)策略,该策略可能偏爱I/O功能块而不是交换机中的配置空间,或者偏爱I/O功能块中的一个而不是其他I/O功能块中的一个或多个。
当交换机中的仲裁逻辑确定先发送第一个和第二个包中的哪一个时,交换机在将包传输到直通接口之前可能仍然需要等待。如图2所示,直通接口135具有它自己的仲裁逻辑220,它确定允许哪个电路(例如,交换机或I/O功能块之一)使用例如多路复用器225向主机传输数据。
在方块420,直通接口中的仲裁逻辑(例如,仲裁逻辑220)接收关于交换机具有准备好用于主机的配置包(例如,第一和第二配置包)和至少一个I/O功能块具有用于主机的数据包的指示。也就是说,方法400假设在集成组件中的至少两个器件(例如,交换机和I/O功能块之一或I/O功能块中的多个I/O功能块)具有准备好发送到主机的数据。如果当前只有一个组件想要向主机传输数据,那么仲裁逻辑可以简单地允许该组件使用物理连接(例如,主机和集成电路之间的物理连接)而无需任何仲裁。
然而,假设多个组件想要向主机传输数据,在方块425,直通接口中的仲裁逻辑在配置包和数据包之间进行仲裁。在一个实施例中,仲裁逻辑可以使用将数据包优先于配置包的QoS策略。或者换一种说法,QoS策略可能偏爱直接从I/O功能块传输的包,而不是由交换机传输的包。在另一示例中,QoS策略可以使得一个I/O功能块优先于另一个I/O功能块。例如,主机中的VM(或租户)可能具有不同的优先级。在由直通接口中的仲裁逻辑使用的QoS策略中,由主机中较高优先级的VM使用的集成组件中的I/O功能块(或多个功能块)可以被赋予比由主机中较低优先级的VM使用的I/O功能块更高的优先级。
在方块430,直通接口中的仲裁逻辑允许将选择的包(由仲裁决定)传输到主机。在一个实施例中,仲裁逻辑具有加权仲裁并且通知I/O功能块之一或交换机它可以在特定时间访问共享总线(或发送特定数量或数目的数据)。通过这种方式,仲裁逻辑可以控制集成组件中的哪个组件可以使用在集成组件和主机之间的共享物理连接。
图5是根据多个示例的用于热交换新I/O功能块的方法500的流程图。为了便于解释,方法500结合图6进行讨论,图6示出了根据多个示例的其中添加了新I/O功能块的计算系统。
在方块505,集成组件接收来自主机的添加新I/O功能块的请求。在一个实施例中,用于集成组件的软件驱动程序(在主机中执行)确定将新I/O功能块热添加到集成组件。例如,在主机上执行的VM或租户可能已经发送了对新I/O功能块的请求,或者管理程序确定VM或租户需要新I/O功能块。
在图6中,计算系统600包括处于添加I/O功能块的过程的集成组件660。也就是说,加速器功能块0(AF0)和CXL.Cache X正被添加到集成组件660中,如虚线所示,而AF1和CXL.Cache Y已经在集成组件660中运行。在图6中,假设I/O功能块,即AF0、AF1、CXL.CacheX和CXL.Cache Y在可编程逻辑中实现,而AF0配置空间、ID-X配置空间、ID-Y配置空间、AF1配置空间和嵌入式CXL分解式交换机615在硬化电路中实现。也就是说,通过重新配置可编程逻辑,集成组件660可以热交换(即,热添加或热移除)I/O功能块:AF0、AF1、CXL.Cache X和CXL.Cache Y。然而,在另一个实施例中,I/O功能块可以在硬化逻辑中实现。在该示例中,主机105可以通过选择性地激活或停用I/O功能块来热添加或热移除I/O功能块,而不是添加或移除I/O功能块。
在另一个实施例中,I/O功能块——即AF0、AF1、CXL.Cache X和CXL.Cache Y以及AF0配置空间、ID-X配置空间、ID-Y配置空间、AF1配置空间是在可编程逻辑中实现,使得当AF0和CXL.Cache X被添加到集成组件660中时,在启动热添加事件之前为AF0和CXL.CacheX添加部分重新配置的可编程逻辑比特流。在这个实施例中,AF0和CXL.Cache X两者可以是具有预先作为可编程逻辑比特流加载的功能性的热插拔器件。
在方块510,集成组件从主机接收新I/O功能块的配置信息和绑定。在一个实施例中,配置信息可以包括用于在集成组件中添加或激活I/O功能块的数据。此外,主机将由主机分配的识别数据传输到新I/O功能块,该功能块用作I/O功能块的绑定,该I/O功能块用于将识别数据通知给直通接口(更具体地说,直通接口中的路由逻辑)。然后,直通接口中的路由逻辑可以在解码接收到的数据包时使用该识别数据来确定该包是否应该被路由到新I/O功能块,如上述方法300中所述。
方块510包括子块515,其中集成电路接收包括用于新I/O功能块、数据路径绑定和配置数据绑定的结构的比特流。在一个实施例中,当I/O功能块以可编程逻辑实现时执行子块515。例如,集成组件660可以使用比特流来配置可编程逻辑以包括AF0和CXL.Cache X。比特流还可以包括用于AF0和ID-X配置空间中的寄存器的结构。
数据路径绑定可以提供直通接口用来将数据包直接路由到新I/O功能块的路由信息。另一方面,配置数据绑定包括嵌入式交换机和直通接口135用来使用间接配置数据路径将配置数据包路由到新I/O功能块的路由信息。也就是说,数据路径绑定允许数据从直通接口135直接到达CXL.Cache X,而配置数据绑定允许数据通过嵌入式CXL交换机615到达AF0和ID-X配置空间。
在方块520,集成组件激活新I/O功能块及其绑定。也就是说,集成组件将可编程逻辑配置为包括新I/O功能块或激活以前使用在方块510处获得的信息而停用的硬化电路中的I/O功能块。
在方块525,集成组件向主机传输虚拟热插拔事件。在图6中,交换机615产生一个虚拟热插拔事件并将该事件转发给在主机上执行的主机热插拔软件驱动程序。即使新I/O功能块直接连接到上行端口,虚拟热插拔事件也会向主机指示新I/O功能块(例如,新I/O器件)已插入(或通信耦合到)连接到AF0配置空间和交换机615之间的虚拟端点连接的虚拟下游端口。
在方块530,主机使用在配置数据路径上发送的配置包发现新I/O功能块。例如,主机热插拔软件驱动程序可以响应虚拟热插拔事件并使用从CSL根端口(RP)605路由到CXL上行端口(USP)610并通过直通接口135路由到交换机615的配置读取消息来发现新的端点I/O功能块AF0和CXL.Cache X。交换机615然后可以将配置读取消息转发到AF0和ID-X配置空间中的虚拟端点寄存器。
在方块535,主机通过编程相应的寄存器来列举新I/O功能块。在一个实施例中,主机105通过使用CXL.Cache X的器件ID和AF0的器件ID对AF0和ID-X配置空间寄存器进行编程来列举AF0和CXL.Cache X。然后主机105准备好使用直接数据路径和间接配置数据路径将数据流量传送到新I/O功能块。
在一个实施例中,一旦完成上述方块,在方块540,主机和集成组件通过使用直接数据路径将数据包路由到新I/O功能块。在方块545,主机和集成组件使用间接配置数据路径将配置包路由到新I/O功能块。通过这种方式,主机和集成组件可以热添加新I/O器件。
图7图示了根据多个示例的具有主机105与使用集成组件760实现的统合式NIC通信的计算系统700。与上述计算系统相似,计算系统700包括主机105,该主机105使用PCIeRP 705和PCIe USP 710之间的单个物理连接通信耦合到集成组件760。此外,集成组件760包括直通接口135,用于在主机105和I/O功能块(即,DMA引擎0-3)之间建立直接数据路径以及包括嵌入式PCIe分解式交换机715的间接配置数据路径。
图7图示了连接到PCIe连接服务器(例如,主机105)的PCIe组件(例如,集成组件760)。集成组件760包括具有到主机105的低延迟和高带宽接口以及与其控制和状态结构或配置空间分离的相应服务的PCI DMA引擎0-3。在该示例中,每个DMA引擎0-3对应于统合式NIC(也称为SmartNIC(智能NIC))的不同网络功能块。例如,DMA引擎0对应网络服务,DMA引擎1对应远程直接内存访问(RDMA)服务,DMA引擎2对应非易失性内存高速光纤(NVMEoF)服务,以及DMA引擎3对应存储服务。网络、RDMA、NVMEoF和存储服务的高带宽器件到主机DMA流量遵循直接数据路径。此外,以那些网络、RDMA、NVMEoF和存储服务为目的地的低延迟主机到I/O功能块作业描述符也可以遵循直接数据路径。相比之下,PCIe交换机715可以为DMA引擎0-3以及相应的网络、RDMA、NVMEoF和存储配置空间沿间接配置数据路径路由主机到I/O功能块低性能控制路径流量。
DMA引擎0-3可以使用可编程逻辑或硬化电路来实现。此外,可以使用上面讨论的热添加和移除技术来添加和移除(例如,激活和停用)DMA引擎0-3和相应的服务。
创建与包括嵌入式交换机的间接路径分开的直接数据路径,本文的实施例创建到主机的低延迟、高带宽数据路径接口,包括热插拔添加/移除端点的能力(例如,I/O功能块)。使用直接数据路径,而不是通过交换机进行仲裁,许多实施例获得了卓越的性能,例如CXL.Cache和CCIX缓存实施例的低延迟监听响应,CXL.mem和CCIX归属代理和从属代理实施例的低延迟和高带宽内存流量,以及用于PCIe端点实施例的低延迟描述符通信和高带宽DMA读/写。
在上文中,参考了在本公开中呈现的实施例。然而,本公开的范围不限于具体描述的实施例。相反,所描述的特征和元素的任何组合,无论是否涉及不同的实施例,都可以被构想以实施和实践所构想的实施例。此外,尽管本文公开的实施例可以实现优于其他可能的解决方案或现有技术的优点,但是给定实施例是否实现了特定优点并不限制本公开的范围。因此,前述方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的元素或限制,除非在权利要求中明确记载。
如本领域技术人员将理解的,本文公开的实施例可以体现为系统、方法或计算机程序产品。因此,各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,其在本文中都可以统称为“电路”、“模块”或“系统”。此外,各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。
可以使用一种或多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子的、磁性的、光学的、电磁的、红外线的或半导体系统、装置或器件,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或多根电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储器件、磁存储器件或任何前述的适当组合。在本文档的上下文中,计算机可读存储介质是可以包含或存储程序以供指令执行系统、装置或器件使用或与其结合使用的任何有形介质。
计算机可读信号介质可以包括传播的数据信号,其中包含计算机可读程序代码,例如,在基带中或作为载波的一部分。这种传播的信号可以采用多种形式中的任何一种,包括但不限于电磁、光或其任何合适的组合。计算机可读信号介质可以不是计算机可读存储介质,而是可以通信、传播或传送由指令执行系统、装置或器件使用的程序或与其结合使用的程序的任何计算机可读介质。
体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等,或前述的任何合适的组合。
用于执行本公开的各方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合编写,包括诸如Java、Smalltalk、C++等的面向对象的编程语言和诸如“C”编程语言或类似的编程语言的传统程序化编程语言。程序代码可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上和部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以到外部计算机的连接(例如,通过使用互联网服务提供商提供的互联网)。
以下参考根据本公开中呈现的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本公开的各个方面。应当理解,流程图和/或框图的每个方块,以及流程图和/或框图中的方块的组合,可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令,创建用于实现流程图和/或框图块中指定的功能块/动作的装置。
这些计算机程序指令也可以存储在计算机可读介质中,该介质可以指导计算机、其他可编程数据处理装置或其他器件以特定方式运行,从而使存储在计算机可读介质中的指令产生包括执行流程图和/或框图块中指定的功能块/动作的指令的制品。
计算机程序指令也可以加载到计算机、其他可编程数据处理装置或其他器件上,以使计算机、其他可编程装置或其他器件上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图块中指定的功能块/动作的过程。
图中的流程图和框图说明了根据本发明的各种示例的系统、方法和计算机程序产品的可能实现的架构、功能块和操作。就此而言,流程图或框图中的每个方块可以表示模块、段或指令的一部分,其包括用于实现指定逻辑功能块的一个或多个可执行指令。在一些替代实施方式中,方块中标注的功能块可能不按图中标注的顺序出现。例如,连续显示的两个方块实际上可以基本上同时执行,或者这些方块有时可以以相反的顺序执行,这取决于所涉及的功能块。还应注意,框图和/或流程图的每个方块,以及框图和/或流程图中的方块的组合,可以由执行指定功能块或动作的专用基于硬件的系统实现,或执行专用硬件和计算机指令的组合。
本公开还可以通过以下非限制性示例中的一个或多个来描述。
示例1.一种计算系统,包括:包括第一端口的主机和集成组件。集成组件包括:第二端口,其中第一端口和第二端口形成主机与集成组件之间的物理连接;多个I/O功能块;嵌入式交换机;和直通接口,直通接口被配置为通过第二端口从主机接收包,识别包的类型,并基于包的类型将包路由到以下之一:直接到多个I/O功能块的目标I/O功能块或使用嵌入式交换机间接到目标I/O功能块。
示例2.根据示例1所述的计算系统,其中所述多个I/O功能块彼此独立地操作并且执行不同的I/O功能块。
示例3.根据示例1所述的计算系统,其中所述包的类型指示所述包是否是时间敏感数据数据包,其中将所述包直接路由到所述目标I/O功能块绕过所述嵌入式交换机。
示例4.根据示例1所述的计算系统,其中所述直通接口包括仲裁逻辑,所述仲裁逻辑被配置为接收所述多个I/O功能块中的第一I/O功能块和所述嵌入式交换机两者具有准备好被传输到所述主机的数据的指示,并且仲裁以确定允许第一I/O功能块和嵌入式交换机中的哪一个使用第二端口将数据传输到主机的第一端口。
示例5.根据示例1所述的计算系统,其中所述直通接口包括路由逻辑,用于识别所述包的类型并识别在所述包中与所述目标I/O功能块相对应的目标ID。
示例6.根据示例1所述的计算系统,其中所述主机被配置为在所述多个I/O功能块并行操作时将新I/O功能块热添加到所述集成组件中。
示例7.根据示例6所述的计算系统,其中热添加新I/O功能块包括配置集成组件中的可编程逻辑,以便包括新I/O功能块。
示例8.根据示例6所述的计算系统,其中热添加新I/O功能块包括激活先前停用的新I/O功能块,其中新I/O功能块在硬化逻辑中实现。
示例9.一种装置,包括被配置为与主机上的第二端口形成物理连接的第一端口;多个I/O功能块;嵌入式交换机;和直通接口,直通接口被配置为通过第一端口从主机接收包,识别包的类型,并基于包的类型将包路由到以下之一:直接到多个I/O功能块的目标I/O功能块或使用嵌入式交换机间接到目标I/O功能块。
示例10.根据示例9所述的装置,其中所述多个I/O功能块是独立I/O器件,其中所述独立I/O器件中的每一个至少部分地以可编程逻辑实现。
示例11.根据示例10所述的装置,其中所述独立I/O器件被形成在同一集成电路中。
示例12.根据示例9所述的装置,其中所述多个I/O功能块是独立I/O器件,其中所述独立I/O器件中的每一个是使用硬化逻辑来实现的。
示例13.根据示例12所述的装置,其中所述独立I/O器件形成在同一集成电路中。
示例14.根据示例9所述的装置,所述装置还包括:基板,其中所述多个I/O功能块中的每一个在不同的集成电路中实现,其中所述不同的集成电路和所述嵌入式交换机安装在所述基板上。
示例15.根据示例9所述的装置,其中所述装置被配置为在所述多个I/O功能块并行操作时热添加新I/O功能块。
示例16.根据示例15所述的装置,其中热添加新I/O功能块包括将所述装置中的可编程逻辑配置为包括所述新I/O功能块。
示例17.根据示例15所述的装置,其中热添加新I/O功能块包括激活先前被停用的新I/O功能块,其中新I/O功能块在装置中以硬化逻辑实现。
示例18.一种方法,包括:在集成组件中的直通接口处从主机接收第一包,其中集成组件包括多个I/O功能块和通信地耦合到直通接口的嵌入式交换机;确定第一包为数据包,其中多个I/O功能块中的第一I/O功能块为数据包的目标;使用绕过嵌入式交换机的直接数据路径将数据包从直通接口直接路由到第一I/O功能块;在直通接口处接收来自主机的第二包;确定第二包为配置包,其中第一I/O功能块为配置包的目标;并通过嵌入式交换机将数据包从直通接口路由到第一I/O功能块。
示例19.根据示例18所述的方法,其中将所述数据包从所述直通接口经由所述嵌入式交换机路由到所述第一I/O功能块进一步包括:将所述配置包从所述直通接口路由到所述嵌入式交换机;在嵌入式交换机处确定第一I/O功能块是配置包的目标;且将来自嵌入式交换机的配置包转发至第一I/O功能块,其中该方法还包括:在直通接口处接收来自主机的第三包;确定第三包为不同的配置包;将不同的配置包路由到嵌入式交换机;以及在嵌入式交换机处确定该嵌入式交换机是不同配置包的目标。
示例20.根据示例19所述的方法,所述方法还包括:在直通接口处确定所述嵌入式交换机和所述多个I/O功能块中的至少两个具有准备好传输到主机的包;以及基于服务质量(QoS)策略在嵌入式交换机和多个I/O功能块中的至少两个之间进行仲裁,以确定哪个开始使用集成组件中的共享端口来向主机传输数据。
尽管前述是针对具体示例的,但是在不脱离其基本范围的情况下可以设计其他和进一步的示例,并且其范围由所附权利要求确定。
Claims (15)
1.一种计算系统,其特征在于,所述计算系统包括:
主机,所述主机包括第一端口;和
集成组件,所述集成组件包括:
第二端口,其中所述第一端口和所述第二端口形成所述主机和所述集成组件之间的物理连接;
多个I/O功能块;
嵌入式交换机;和
直通接口,所述直通接口配置为通过所述第二端口从所述主机接收包,识别所述包的类型,并基于所述包的类型将所述包路由到以下之一:直接路由到所述多个I/O功能块的目标I/O功能块,或使用所述嵌入式交换机间接路由到所述目标I/O功能块。
2.根据权利要求1所述的计算系统,其特征在于,所述多个I/O功能块彼此独立地操作并且执行不同的I/O功能块。
3.根据权利要求1所述的计算系统,其特征在于,所述包的类型指示所述包是否是时间敏感数据包,其中将所述包直接路由到所述目标I/O功能块绕过所述嵌入式交换机。
4.根据权利要求1所述的计算系统,其特征在于,所述直通接口包括仲裁逻辑,所述仲裁逻辑被配置为接收所述多个I/O功能块的第一I/O功能块和所述嵌入式交换机两者具有准备好传输到所述主机的数据的指示,以及仲裁以确定所述第一I/O功能块和所述嵌入式交换机中的哪一个被允许使用所述第二端口以向所述主机的所述第一端口传输数据。
5.根据权利要求1所述的计算系统,其特征在于,所述直通接口包括路由逻辑,以用于识别所述包的类型并识别所述包中与所述目标I/O功能块相对应的目标ID。
6.根据权利要求1所述的计算系统,其特征在于,所述主机被配置为在所述多个I/O功能块并行操作时将新I/O功能块热添加到所述集成组件中。
7.根据权利要求6所述的计算系统,其特征在于,热添加所述新I/O功能块包括:
在所述集成组件中配置可编程逻辑以包括所述新I/O功能块;或者
激活之前停用的所述新I/O功能块,其中所述新I/O功能块以硬化逻辑实现。
8.一种装置,其特征在于,所述装置包括:
第一端口,所述第一端口被配置为与主机上的第二端口形成物理连接;
多个I/O功能块;
嵌入式交换机;和
直通接口,所述直通接口被配置为通过所述第一端口从所述主机接收包,识别所述包的类型,并基于所述包的类型将所述包路由到以下之一:直接路由到所述多个I/O功能块的目标I/O功能块,或使用所述嵌入式交换机间接路由到所述目标I/O功能块。
9.根据权利要求8所述的装置,其特征在于,所述多个I/O功能块是独立I/O器件,其中所述独立I/O器件中的每一个至少部分地以可编程逻辑实施。
10.根据权利要求8所述的装置,其特征在于,所述多个I/O功能块是独立I/O器件,其中所述独立I/O器件中的每一个是使用硬化逻辑来实现的。
11.根据权利要求9或10所述的装置,其特征在于,所述独立I/O器件形成在同一集成电路中。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
基板,其中所述多个I/O功能块中的每一个在不同的集成电路中实现,其中所述不同的集成电路和所述嵌入式交换机安装到所述基板上。
13.根据权利要求8所述的装置,其特征在于,所述装置被配置为在所述多个I/O功能块并行操作时热添加新I/O功能块。
14.根据权利要求13所述的装置,其特征在于,热添加所述新I/O功能块包括:
在所述装置中配置可编程逻辑以包括所述新I/O功能块;或者
激活之前被停用的所述新I/O功能块,其中所述新I/O功能块在所述装置中以硬化逻辑实现。
15.一种方法,其特征在于,所述方法包括:
在集成组件中的直通接口处从主机接收第一包,其中所述集成组件包括多个I/O功能块和在通信上耦合到所述直通接口的嵌入式交换机;
确定所述第一包为数据包,其中所述多个I/O功能块中的第一I/O功能块为所述数据包的目标;
使用绕过所述嵌入式交换机的直接数据路径将所述数据包从所述直通接口直接路由到所述第一I/O功能块;
在所述直通接口处从所述主机接收第二包;
确定所述第二包为配置包,其中所述第一I/O功能块为所述配置包的目标;以及
通过所述嵌入式交换机将所述数据包从所述直通接口路由到所述第一I/O功能块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/894,446 | 2020-06-05 | ||
US16/894,446 US11386031B2 (en) | 2020-06-05 | 2020-06-05 | Disaggregated switch control path with direct-attached dispatch |
PCT/US2021/018540 WO2021247103A1 (en) | 2020-06-05 | 2021-02-18 | Disaggregated switch control path with direct-attached dispatch |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115836282A true CN115836282A (zh) | 2023-03-21 |
Family
ID=74871829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180040261.4A Pending CN115836282A (zh) | 2020-06-05 | 2021-02-18 | 具有直接连接调度的分解式交换机控制路径 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11386031B2 (zh) |
EP (1) | EP4104060A1 (zh) |
JP (1) | JP2023529831A (zh) |
KR (1) | KR20230019828A (zh) |
CN (1) | CN115836282A (zh) |
WO (1) | WO2021247103A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023004229A1 (en) | 2021-07-18 | 2023-01-26 | Elastics.cloud, Inc. | Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc and extensible via cxloverethernet (coe) protocols |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6608813B1 (en) | 1998-11-04 | 2003-08-19 | Agere Systems Inc | Method and apparatus for achieving fault tolerance in packet switching systems with inverse multiplexing |
US6914907B1 (en) | 1999-08-05 | 2005-07-05 | Alcatel Canada Inc. | Method and apparatus for providing multi-cast transmissions using a distributed router |
US7027397B1 (en) * | 2001-02-15 | 2006-04-11 | Cisco Technology, Inc. | Method and apparatus for accumulating and distributing traffic and flow control information in a packet switching system |
AU2002363142A1 (en) * | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
US7251704B2 (en) | 2002-08-23 | 2007-07-31 | Intel Corporation | Store and forward switch device, system and method |
US7827343B2 (en) | 2007-09-20 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for providing accelerator support in a bus protocol |
US8223650B2 (en) * | 2008-04-02 | 2012-07-17 | Intel Corporation | Express virtual channels in a packet switched on-chip interconnection network |
JP4734374B2 (ja) | 2008-06-04 | 2011-07-27 | アラクサラネットワークス株式会社 | ネットワーク中継装置、および、ネットワーク中継装置方法 |
US8248951B2 (en) * | 2009-09-11 | 2012-08-21 | At&T Intellectual Property I, Lp | Methods and apparatus to manage bypass paths in an internet protocol (IP) network |
JP5561620B2 (ja) | 2011-05-27 | 2014-07-30 | 日立金属株式会社 | ネットワークシステム及びネットワークシステムの運用方法 |
JP5776618B2 (ja) | 2012-04-16 | 2015-09-09 | 日立金属株式会社 | ネットワークスイッチ |
JP5935666B2 (ja) | 2012-11-22 | 2016-06-15 | 日立金属株式会社 | 通信システムおよびネットワーク中継装置 |
US20140372660A1 (en) * | 2013-06-14 | 2014-12-18 | National Instruments Corporation | Packet Routing Based on Packet Type in Peripheral Component Interconnect Express Bus Systems |
CN104734993B (zh) | 2013-12-24 | 2018-05-18 | 杭州华为数字技术有限公司 | 数据分流方法及分流器 |
JP6278800B2 (ja) | 2014-04-03 | 2018-02-14 | APRESIA Systems株式会社 | 中継システムおよびスイッチ装置 |
JP6189783B2 (ja) | 2014-04-08 | 2017-08-30 | APRESIA Systems株式会社 | 中継システムおよびスイッチ装置 |
US20170075838A1 (en) * | 2015-09-14 | 2017-03-16 | Qualcomm Incorporated | Quality of service in interconnects with multi-stage arbitration |
US10587534B2 (en) * | 2017-04-04 | 2020-03-10 | Gray Research LLC | Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks |
US10409743B1 (en) | 2018-06-29 | 2019-09-10 | Xilinx, Inc. | Transparent port aggregation in multi-chip transport protocols |
-
2020
- 2020-06-05 US US16/894,446 patent/US11386031B2/en active Active
-
2021
- 2021-02-18 JP JP2022574299A patent/JP2023529831A/ja active Pending
- 2021-02-18 WO PCT/US2021/018540 patent/WO2021247103A1/en unknown
- 2021-02-18 CN CN202180040261.4A patent/CN115836282A/zh active Pending
- 2021-02-18 EP EP21711686.2A patent/EP4104060A1/en active Pending
- 2021-02-18 KR KR1020227040696A patent/KR20230019828A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
KR20230019828A (ko) | 2023-02-09 |
US20210382838A1 (en) | 2021-12-09 |
US11386031B2 (en) | 2022-07-12 |
JP2023529831A (ja) | 2023-07-12 |
WO2021247103A1 (en) | 2021-12-09 |
EP4104060A1 (en) | 2022-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
US10693781B2 (en) | In NIC flow switching | |
US11194753B2 (en) | Platform interface layer and protocol for accelerators | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US9213666B2 (en) | Providing a sideband message interface for system on a chip (SoC) | |
CN109076029B (zh) | 用于非统一网络输入/输出访问加速的方法和装置 | |
JP5490336B2 (ja) | Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け | |
JP4638216B2 (ja) | オンチップバス | |
KR100666515B1 (ko) | 저장 및 포워드 스위치 장치, 시스템 및 방법 | |
US9838300B2 (en) | Temperature sensitive routing of data in a computer system | |
US8225005B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect | |
JP2022533997A (ja) | Socおよびfpgaを有するサーバオフロードカード | |
US10983920B2 (en) | Customizable multi queue DMA interface | |
US20170177528A1 (en) | Architecture for software defined interconnect switch | |
US20070050520A1 (en) | Systems and methods for multi-host extension of a hierarchical interconnect network | |
EP1591908A1 (en) | Separating transactions into different virtual channels | |
JP5469081B2 (ja) | 制御パス入出力仮想化方法 | |
CN115437977A (zh) | 跨总线存储器映射 | |
TW200407712A (en) | Configurable multi-port multi-protocol network interface to support packet processing | |
US11386031B2 (en) | Disaggregated switch control path with direct-attached dispatch | |
US11809349B1 (en) | Direct injection of a virtual interrupt | |
KR20050080704A (ko) | 프로세서간 데이터 전송 장치 및 방법 | |
US11899969B1 (en) | Re-order buffer for in-order execution of dependent write transactions | |
US20240126622A1 (en) | I/o acceleration in a multi-node architecture | |
US20240241843A1 (en) | Network controller low latency data path |
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 |