CN115298656A - 用于调度可共享pcie端点设备的系统和方法 - Google Patents
用于调度可共享pcie端点设备的系统和方法 Download PDFInfo
- Publication number
- CN115298656A CN115298656A CN202180022442.4A CN202180022442A CN115298656A CN 115298656 A CN115298656 A CN 115298656A CN 202180022442 A CN202180022442 A CN 202180022442A CN 115298656 A CN115298656 A CN 115298656A
- Authority
- CN
- China
- Prior art keywords
- endpoint device
- pcie
- host computer
- pcie endpoint
- shareable
- 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
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/3625—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
公开了用于通过向耦接到PCIe交换机的多个主计算机中的主计算机分配时间配额来与多个主计算机共享PCIe端点设备的系统和方法,其中该时间配额识别在该主计算机排他地访问耦接到该PCIe交换机的可共享PCIe端点设备期间的持续时间。在该时间配额期间,将来自该主计算机的请求传输到该PCIe交换机的仿真PCIe端点设备,并且然后在分配给该主计算机的该时间配额期间将该请求从该仿真PCIe端点设备重新引导到该可共享PCIe端点设备。
Description
相关申请的交叉引用
本申请要求于2020年6月2日提交的美国临时专利申请序列号63/033,216和于2021年1月18日提交的美国非临时专利申请序列号17/151,316的优先权,其各自的内容全文以引用方式并入本文。
背景技术
快速外围部件互联(PCIe)是在系统级处实现串行、交换分组、点对点通信标准的第三代输入输出(3GIO)系统。PCIe已实现优于现有共享总线系统的许多优点,诸如服务质量(QoS)、外部设备之间的高速对等通信、适应性和低引脚计数。基本PCIe架构可包括根联合体、PCIe交换机和PCIe端点设备。根联合体通常与处理器相关联,并且负责通过在开启电源时执行枚举过程来配置交换机结构。由于PCIe连接是点对点的,因此PCIe交换机用于扩展交换机结构。
PCIe端点设备的全部潜力仅在高峰工作负载期间由PCIe交换机结构的系统软件利用。例如,如果PCIe端点设备(包括但不限于raid控制器卡或网络卡)用于启用对存储区域网络(SAN)环境内的存储介质的访问,则PCIe端点设备的平均性能利用率将在可由PCIe端点设备递送的实际吞吐量的10%至20%之间变化。
因此,本领域需要的是一种用于改进PCIe端点设备的处理能力的利用率的系统和方法。
发明内容
本发明的方法和装置涉及快速外围部件互联(PCIe)设备,并且涉及对在两个或更多个主计算机之间共享的PCIe端点设备的管理。所公开的方法和装置使得在PCIe交换机的管理服务器上运行的软件能够有效地使用在耦接到PCIe交换机的PCIe端点设备中可用的可用计算和处理能力以节省功率和成本。
公开了一种与多个主计算机共享PCIe端点设备的方法,该方法包括:由管理服务器向耦接到PCIe交换机的多个主计算机中的一个主计算机分配时间配额,其中该时间配额识别在主计算机排他地访问耦接到PCIe交换机的可共享PCIe端点设备期间的持续时间。该方法进一步包括:在分配给主计算机的时间配额期间,在主计算机处产生以PCIe交换机的仿真PCIe端点设备为目标的请求,并且在分配给主计算机的时间配额期间将该请求从仿真PCIe端点设备重新引导到可共享PCIe端点设备。
公开了一种用于与多个主计算机共享PCIe端点设备的系统。该系统包括PCIe交换机和耦接到PCIe交换机的多个主计算机。PCIe交换机提供与多个主计算机中的每个主计算机相关联的仿真PCIe端点设备。该系统进一步包括耦接到PCIe交换机的可共享PCIe端点设备和耦接到PCIe交换机的管理服务器。管理服务器向多个主计算机中的一个主计算机分配时间配额,其中该时间配额识别在主计算机排他地访问可共享PCIe端点设备期间的持续时间。PCIe交换机和管理服务器被进一步配置为在分配给主计算机的时间配额期间将由主计算机产生的以仿真PCIe端点设备为目标的请求重新引导到可共享PCIe端点设备。
可共享PCIe端点设备进一步包括将PCIe供应商定义的调度控制能力暴露于管理服务器的PCIe配置空间,该PCIe配置空间进一步包括具有BAR映射区域的R/W处理单元,其中该R/W处理单元将在可共享PCIe端点设备处接收的存储器TLP转换成R/W请求。可共享PCIe端点设备进一步包括:耦接到R/W处理单元的主机ID附加单元,该主机ID附加单元用以将与主计算机相关联的主机端口ID附加到R/W请求以产生具有主机ID的R/W请求;耦接到主机ID附加单元的功能栈切换模块,该功能栈切换模块用于使用功能栈的BAR映射区域副本切换到与主计算机相关联的功能栈,并且该功能栈包括主机ID到DMA地址附加模块,以将主机端口ID加到DMA地址前头以用于转发到主计算机。
公开了一种用于经由PCIe交换机与多个主计算机共享PCIe端点设备的改进的系统和方法。
附图说明
将参考附图解释所公开的方法和装置,附图中示出了:
图1是示出用于经由PCIe交换机访问可共享PCIe端点设备的系统的物理部件的高级视图的框图。
图2是示出用于经由PCIe交换机访问可共享PCIe端点设备的系统的物理部件的更详细视图的框图。
图3A至图3B是示出用于经由PCIe交换机访问可共享PCIe端点设备的过程的泳道图。
图4是示出用于在特定时间配额期间允许多个主计算机排他地访问可共享PCIe端点设备的高级方法的流程图。
图5是示出用于在特定时间配额期间允许多个主计算机排他地访问可共享PCIe端点设备的详细方法的第一部分的流程图。
图6是示出用于在特定时间配额期间允许多个主计算机排他地访问可共享PCIe端点设备的详细方法的第二部分的流程图。
图7是示出用于建立仿真PCIe端点设备的方法的流程图。
图8是示出在仿真PCIe端点设备与可共享PCIe端点设备之间建立通信关系的流程图。
具体实施方式
公开了一种使用PCIe交换机在多个主计算机之间共享单个PCIe端点设备的系统和方法。对可共享PCIe端点设备的基于时间的调度通过在PCIe交换机内实现的路由技术和在可共享PCIe端点设备内实现的增强的切换能力来促进。在与PCIe交换机相关联的管理服务器上运行的软件负责在连接到PCIe交换机的上游端口的多个主计算机之间调度连接到PCIe交换机的下游端口的可共享PCIe端点设备。分配给主计算机中的每个主计算机以访问可共享PCIe端点设备的时间配额不重叠,并且照此,允许多个主计算机中的每个主计算机在分配给该主计算机的时间配额期间排他地访问可共享PCIe端点设备。
图1是示出存在于系统100中的物理部件的高级视图的框图,在该系统中,诸如第一主计算机105和第二主计算机110的多个主计算机期望通过PCIe交换机120访问可共享PCIe端点设备115。本领域的普通技术人员将理解,在图1中描绘两个主计算机105、110和单个可共享PCIe端点设备115仅出于说明目的,并且该系统可具有多于两个主计算机和多于一个共享PCIe端点设备。
在图1中,第一主计算机105经由PCIe总线130通过PCIe交换机120的第一主机端口107耦接到PCIe交换机120,并且第二主计算机110经由第二PCIe总线132通过PCIe交换机120的第二主机端口117耦接到PCIe交换机120。管理服务器150经由第三PCIe总线134通过PCIe交换机120的管理端口127耦接到PCIe交换机120。
虽然管理服务器150在图1中被示出为与PCIe交换机120分开,但这并不旨在为限制性的,并且管理服务器150另选地在PCIe交换机120内实现。
可共享PCIe端点设备115经由PCIe总线136通过PCIe交换机120的下游端口137耦接到PCIe交换机120。可共享PCIe端点设备115被认为是“可共享的”,因为可共享PCIe端点设备115的能力可由两个主计算机105、110访问,每个主计算机持续预定时间段,如由管理服务器150所确定和所控制的。主计算机105、110中的每个主计算机与可共享PCIe端点设备115之间的基于时间的连接由在管理服务器150的控制下的PCIe交换机120来实现,如本文将描述。
可设想,系统100中可包括多于一个可共享PCIe端点设备,其中另外的可共享PCIe端点设备由通过PCIe交换机120中的任选的下游端口耦接到PCIe交换机120的任选的可共享PCIe端点设备表示。描述将集中于一个可共享PCIe端点设备115。然而,参考可共享PCIe端点设备115对系统100的操作的描述将同样适用于系统100中的每个此类另外的可共享PCIe端点设备。
可共享PCIe端点设备115在第一主计算机105与第二主计算机110之间的基于时间的调度使用在管理服务器150的控制下的PCIe交换机120和可共享PCIe端点设备115来实现。特别地,管理服务器150可操作以枚举连接到PCIe交换机120的设备以识别耦接到PCIe交换机120的每个PCIe端点设备,诸如可共享PCIe端点设备115。管理服务器150另外地可操作以在可共享PCIe端点设备115与主计算机105、110中的每个主计算机之间建立针对特定时间段的路由。管理服务器150使用由PCIe交换机120配置的相应的仿真PCIe端点设备140、145,结合管理服务器150,在可共享PCIe端点设备115与主计算机105、110中的每个主计算机之间建立路由,如本文将详细描述。
图2示出了PCIe交换机120和可共享PCIe端点设备115的更详细示例。如图所示,PCIe交换机120包括通过第一主机端口107耦接到第一主计算机105的第一仿真PCIe端点设备140和通过第二主机端口117耦接到第二主计算机110的第二仿真PCIe端点设备145。仿真PCIe端点设备140、145仿真可共享PCIe端点设备115的配置和功能,以允许主计算机105、110中的每个主计算机在相应分配的时间配额期间访问可共享PCIe端点设备115的能力。
如本领域中众所周知的,耦接到PCIe交换机的上游端口的设备,诸如耦接到PCIe交换机120的相应主机端口107、117的主计算机105、107执行仿真以检测PCIe交换机120的相应仿真PCIe端点设备140、145。在执行枚举之后,通过第一仿真PCIe端点设备140在第一主计算机105与PCIe交换机120的下游端口137上的PCIe端点设备之间建立数据路由关系,并且通过第二仿真PCIe端点设备145在第二主计算机110与PCIe交换机120的下游端口137上的PCIe端点设备之间建立数据路由关系。PCIe交换机120允许主计算机105、110中的每个主计算机在时间配额期间使用在PCIe交换机120中建立的相应的仿真PCIe端点设备140、145来访问可共享PCIe端点设备115。
基于需求和指配到可共享PCIe端点设备115的工作负载,在管理服务器150上运行的调度器可动态地确定可共享PCIe端点设备115将与每个主计算机105、110共享的时间配额。如果主计算机105、110中的一个主计算机与另一个主计算机105、110相比想要更多地访问可共享PCIe端点设备115,则调度器可授予可共享PCIe端点设备115对该特定主计算机的更高优先级和/或更大的时间配额。用于允许访问可共享PCIe端点设备115的标准可通过各种方法确定,并且超出本公开的范围。如本领域中所公知的,在管理服务器150上运行的调度器可在软件和/或硬件或它们的组合中实现。
为了建立仿真PCIe端点设备140、145,管理服务器150捕获在枚举过程期间经由第一主机端口107从第一主计算机105传输的配置事务层分组(TLP)和在枚举过程期间经由第二主机端口117从第二主计算机110传输的配置TLP。管理服务器150通过分析和响应于分别来自主计算机105、110的配置TLP来建立仿真PCIe端点设备140、145。第一仿真PCIe端点设备140将PCIe供应商定义的能力202暴露于第一主计算机105,并且第二仿真PCIe端点设备145将PCIe供应商定义的能力203暴露于第二主计算机110。PCIe供应商定义的能力202、203含有控制和访问相应的仿真PCIe端点设备140、145所需的信息。该信息包括指配到时间配额开始和时间配额结束的中断向量号。仿真PCIe端点设备140、145中的每个仿真PCIe端点设备分别包括基地址寄存器映射(BAR映射)区域206、207,该区域包括映射到系统存储器的一个或多个基地址寄存器(BAR)。每个主计算机105、110在访问仿真PCIe端点设备140、145的相应的BAR映射区域206、207之前等待由相应的仿真PCIe端点设备140、145产生的时间配额开始。另外地,PCIe交换机120提供可配置路由电路220,该可配置路由电路包括ID路由表222和地址陷阱设定224。ID路由表222和地址陷阱设定224用于通过PCIe交换机120路由分组,如在PCIe交换技术中众所周知的。
如图2所示,耦接到PCIe交换机120的下游端口137的可共享PCIe端点设备115包括具有读/写(R/W)处理单元234的PCIe配置空间230,该读/写(R/W)处理单元包括包含多个BAR的BAR映射区域236。管理服务器150执行枚举以检测PCIe交换机120的下游端口137上的可共享PCIe端点设备115。响应于枚举过程,PCIe配置空间230内的PCIe供应商定义的调度控制能力232被暴露于管理服务器150。PCIe供应商定义的调度控制能力232包括控制和访问可共享PCIe端点设备115所需的信息。由PCIe供应商定义的调度控制能力232提供的信息包括中断向量号,该中断向量号被指配到中断以控制由主计算机105、110在指配到主计算机105、110中的每个主计算机的时间配额期间对可共享PCIe端点设备115的访问。将PCIe供应商定义的调度控制能力232暴露于管理服务器150允许管理服务器150通知可共享PCIe端点设备115在分配的时间配额内将允许哪个主计算机105、110访问可共享PCIe端点设备115。如此,仅允许一个主计算机105、110在给定时间配额期间通过使用对应的仿真PCIe端点设备140、145来访问共享的PCIe端点设备115。管理服务器150可通知与第一主机端口107相关联的第一主计算机105,已使用第一仿真PCIe端点设备140的PCIe供应商定义的能力202向其分配了时间配额。另外地,管理服务器150可通知与第二主机端口117相关联的第二主计算机110,已使用第二仿真PCIe端点设备145的PCIe供应商定义的能力203向其分配了下一时间配额。
在枚举之后,并且假设已向第一主计算机105分配了时间配额,则第一主计算机105初始化第一仿真PCIe端点设备140的BAR映射区域206,并且管理服务器150在可配置路由电路220的帮助下在第一仿真PCIe端点设备140的BAR映射区域206与耦接到PCIe交换机120的下游端口137的可共享PCIe端点设备115的BAR映射区域236之间建立连接关系。另选地,如果已向第二主计算机110分配了时间配额,则第二主计算机110初始化第二仿真PCIe端点设备145的BAR映射区域207,并且管理服务器150在可配置路由电路220的帮助下在第二仿真PCIe端点设备145的BAR映射区域207与可共享PCIe端点设备115的BAR映射区域236之间建立连接关系。
可共享PCIe端点设备115包括主机ID附加单元242和功能栈切换模块246,该功能栈切换模块经耦接以在两个或更多个功能栈250、260之间进行选择,其中相应的功能栈250、260中的每个功能栈与主计算机105、110中的相应一个主计算机相关联。主机ID附加单元242从R/W处理单元234接收读/写(R/W)请求240,并且从PCIe供应商定义的调度控制能力232接收主机端口标识符(ID)248。主机端口ID 248标识主机端口107、117,该主机端口耦接到已由管理服务器150分配了时间配额249的主计算机105、110。主机ID附加单元242将主机端口ID 248附加到R/W请求240以产生具有主机端口ID 244的R/W请求,该R/W请求然后被提供到功能栈切换模块246。每个功能栈250、260负责处理起源于主计算机105、110中的相应一个主计算机处的R/W请求。
当主计算机105、110请求访问可共享PCIe端点设备115时,管理服务器150通过向可共享PCIe端点设备115提供时间配额来做出响应。可共享PCIe端点设备115向管理服务器150发送第一中断以指示该时间配额已开始,并且当该时间配额已消逝时,可共享PCIe端点设备115向管理服务器150发送第二中断以指示该时间配额已结束。管理服务器150负责基于从可共享PCIe端点设备115接收的相应的第一中断和第二中断向适当的主计算机105、110提供中断。如果已向第一主计算机105分配了时间配额,则在该时间配额的持续时间期间,第一主计算机105可传输以第一仿真PCIe端点设备140为目标的请求,诸如存储器TLP、R/W请求和DMA请求,并且然后利用PCIe交换机120和可共享PCIe端点设备115的功能性将请求重新引导到可共享PCIe端点设备115。另选地,如果已向第二主计算机110分配了时间配额,则在该时间配额的持续时间期间,第二主计算机110可传输以第二仿真PCIe端点设备145为目标的请求,诸如存储器TLP、R/W请求和DMA请求,并且然后利用PCIe交换机120和可共享PCIe端点设备115的功能性将请求重新引导到可共享PCIe端点设备115。
假设管理服务器150已向第一主计算机105分配了时间配额,则在该时间配额的持续时间内,源自第一主计算机105的接收于第一仿真PCIe端点设备140处的R/W请求被重新引导到可共享PCIe端点设备115的BAR映射区域236。具体地,R/W请求240将在可共享PCIe端点设备115处接收,并且具有主机ID 244的R/W请求将在可共享PCIe端点设备115内创建。在该时间配额已结束之后,起源于第一主计算机105处的R/W请求将不再被重新引导到可共享PCIe端点设备115。
每当可共享PCIe端点设备115接收以仿真PCIe端点设备140的BAR映射区域206为目标的经重新引导的存储器TLP时,R/W处理单元234将存储器TLP转换成含有TLP的地址和数据字段成员两者的R/W请求240。R/W请求240然后被转发到主机ID附加单元242,该主机ID附加单元将把主机端口ID 248附加到R/W请求240以产生具有主机端口ID的R/W请求244。具有主机端口ID的R/W请求244然后被转发到功能栈切换模块246,该功能栈切换模块将把具有主机端口ID的R/W请求244引导到功能栈250、260中的相应的一个功能栈,该功能栈负责处理来自已被分配了时间配额的相应的主计算机105、110的该R/W请求。
具有主机端口ID的R/W请求244将在对应的功能栈250、260处被接收,并且将由一个或多个I/O处理模块254、264处理,该一个或多个I/O处理模块的功能性取决于可共享PCIe端点设备115。另外地,主机ID到DMA地址附加模块256、266将把主机ID加到从对应的主计算机105、110接收的每个DMA地址前头。例如,在其中第一功能栈250被指配到第一主计算机105的情况下,源自第一主计算机105的具有主机ID的R/W请求244是直接存储器访问(DMA)R/W请求,将由功能栈切换模块246引导到功能栈250,并且主机ID到DMA地址附加模块256将把主机ID加到从对应的主计算机105接收的每个DMA地址前头。
可共享PCIe端点设备115使用PCIe供应商定义的调度控制能力232和管理服务器150来切换可共享PCIe端点设备115的功能栈250、260。如上文所指示,当时间配额被分配给第一主计算机105时,功能栈切换模块246选择与第一主计算机105相关联的第一功能栈250,并且当时间配额被分配给第二主计算机110时,选择与第二主计算机110相关联的第二功能栈260。功能栈切换模块246使用由主机ID附加单元242附加到R/W请求的主机端口ID248来识别功能栈切换模块246应选择哪个功能栈。
如上文所指示,可共享PCIe端点设备115的每个功能栈250、260负责处理来自主计算机105、110中的一个主计算机的请求。在主计算机105、110与功能栈250、260之间存在一对一的关系,并且照此,一个功能栈被指配到正共享可共享PCIe端点设备115的资源的每个主计算机。功能栈250、260用于将可共享PCIe端点设备115的处理能力细分给每个主计算机105、110。因此,每个功能栈250、260负责处理可共享PCIe端点设备115与相应的主计算机105、110之间的R/W请求。可共享PCIe端点设备115的处理能力可包括多个处理单元,该多个处理单元中的每个处理单元可被指配到功能栈250、260中的一个功能栈。
每当在管理服务器150内运行的调度器请求切换功能栈时,每个功能栈250、260维持可共享PCIe端点设备115内的一组寄存器,该组寄存器将从可共享PCIe端点设备115的BAR映射区域236复制或与该BAR映射区域映射。如图2所示,每个功能栈250、260包括相应的BAR映射区域副本252、262。BAR映射区域副本252、262是PCIe端点设备115内的存储区域,该存储区域使得能够取决于哪个主计算机105、110当前已被分配了用以访问可共享PCIe端点设备115的时间配额来在功能栈250、260之间进行切换。例如,如果先前时间配额被指配到第二主计算机110,当第一主计算机105被分配下一时间配额时,功能栈将需要从第二功能栈260切换到第一功能栈250,由此允许R/W请求被引导到与第一主计算机105相关联的第一功能栈250。为了从第二功能栈260切换到第一功能栈250,第二功能栈260的BAR映射区域副本262可用于保存可共享PCIe端点设备115的BAR映射区域236的当前状态。然后,可共享PCIe端点设备115的BAR映射区域236可使用第一功能栈250的BAR映射区域副本252来代替,由此根据与指配到第一主计算机105的第一功能栈250相关联的BAR映射区域副本252恢复可共享PCIe端点设备115的BAR映射区域236。可共享PCIe端点设备115然后使用第一功能栈250来发送和接收来自第一主计算机105的请求。
每个功能栈250、260包括一个或多个相应的I/O处理模块254、264,其功能是特定于端点设备的,如本领域中众所周知的。每个功能栈250、260另外地包括相应的主机端口ID到DMA地址附加模块256、266。主机端口ID到DMA地址附加模块256、266优选地在于可共享PCIe端点设备115上运行的固件中实现,以在被传递到可共享PCIe端点设备115的DMA引擎272之前,将当前正访问可共享PCIe端点设备115的相应的主计算机105、110的主机端口ID107、117加到从相应的主计算机105、110接收的每个DMA地址前头。管理服务器150向可共享PCIe端点设备115提供主机端口ID 248以附加到从相应的主计算机105、110接收的DMA地址,并且向可共享PCIe端点设备115提供相应的时间配额249以产生向管理服务器150指示时间配额开始的信号和指示时间配额结束的信号。响应于指示时间配额开始的信号,管理服务器150产生第一中断,并且将所产生的第一中断传输到相应的主计算机105、110。响应于指示时间配额结束的信号,管理服务器150产生第二中断,并且将所产生的第二中断传输到相应的主计算机105、110。
起源于主计算机105处的请求中的一些请求可能需要来自可共享PCIe端点设备115的响应。取决于源自第一主计算机105的特定请求,来自可共享PCIe端点设备的响应可能需要DMA,并且照此,可共享PCIe端点设备115将需要通过读取或写入到第一主计算机105的存储器来做出响应。起源于可共享PCIe端点设备115处并且被引导朝向主计算机105的存储器读取或写入TLP被认为是DMA请求。起源于可共享PCIe端点设备115处的DMA TLP 274可通过使用在PCIe交换机120中实现的地址陷阱设定224和ID路由表222在任何时间点通过第一仿真PCIe端点设备140引导到第一主计算机105。起源于可共享PCIe端点设备115处的DMATLP 274可被引导到第一主计算机105,而不管第一主计算机105当前是否被分配了时间配额。
因此,仅允许主计算机105、110在指配到主计算机105、110的相应的时间配额期间访问它们相应的仿真PCIe端点设备140、145的BAR映射区域。然而,响应于来自主计算机105、110的请求而起源于可共享PCIe端点设备115处的任何请求即使在时间配额已结束之后也可被引导到相应的主计算机105、110。如此,即使可共享PCIe端点设备115可在下一时间配额期间主动接收来自第二主计算机110的请求,在先前时间配额期间响应于从第一主计算机105接收的请求而起源于可共享PCIe端点设备115处的响应仍可被引导到第一主计算机110。
一般来讲,虽然对主计算机105、110何时可访问相应的仿真PCIe端点设备140、145存在时间配额限制,但对PCIe端点设备115何时可访问仿真PCIe端点设备140、145以响应于来自主计算机105、110的先前请求而传输DMA TLP不存在时间配额限制。
由可共享PCIe端点设备115的DMA引擎272响应于来自相应的主计算机105、110的R/W请求240而产生的DMA TLP 274使用PCIe交换机120的地址陷阱设定224和ID路由表222经由PCIe总线136传输到相应的主计算机105、110。具体地,与第一主计算机105相关联的第一功能栈250的主机端口ID到DMA地址附加模块256负责以所得DMA地址将存在于所修改的DMA地址的剩余LSB位中的这样一种方式来附加主机端口ID248,连同主计算机105的DMA地址的最高有效未使用字节。例如,如果源自第一主计算机105的64位DMA地址是0x0000XXXXXXXXXXXX,并且该64位DMA地址的第一个最高有效未使用字节用于附加主机端口ID,即0xAA,则所得DMA地址将为0x AA00XXXXXXXXXXXX。当源自可共享PCIe端点设备115的DMA TLP 274到达PCIe交换机120的下游端口137时,PCIe交换机120将检查每个DMA地址的MSB位,并且提取主机端口ID 248以将TLP引导到主计算机105。
另外地,如本领域中众所周知的,PCIe交换机120的可配置路由电路220的ID路由表222经初始化以将仿真PCIe端点设备140的PCIe总线:设备:功能号映射到可共享PCIe端点设备115的PCIe总线:设备:功能号。ID路由表222,连同主机端口ID一起用于将以映射到可共享PCIe端点设备115的BAR映射区域236的存储器为目标的DMA TLP 274路由到主计算机105。
如先前所描述,管理服务器150在可配置路由电路220的帮助下在每个分配的时间配额期间在相应的仿真PCIe端点设备140、145与正在多个主计算机105、110之间共享的可共享PCIe端点设备115之间建立连接关系。该连接关系使得以相应的仿真PCIe端点设备140、145的BAR映射区域为目标的读取和写入请求能够被重新引导到可共享PCIE端点设备115的BAR映射区域。通过建立这种连接关系,当PCIe交换机120接收来自主计算机105的以仿真PCIe端点设备140、145中的相应一个仿真PCIe端点设备的BAR映射区域206、207为目标的存储器TLP时,存储器TLP将被重新引导到可共享PCIe端点设备115的BAR映射区域236。
图3A和图3B的泳道图组合示出了用于访问可共享PCIe端点设备115的示例性过程。例如,该过程可由用户使用,并且部分由管理服务器150和PCIe交换机120实现以允许主计算机105在分配给主计算机105的指定时间配额内访问可共享PCIe端点115。图3A和图3B示出了可由管理服务器150、可共享PCIe端点设备115、仿真PCIe端点设备140和主计算机105执行的步骤的泳道。在图3A和图3B的所示的泳道图中,假设管理服务器150和主计算机105已执行枚举和启动。如此,如先前所描述,仿真PCIe端点设备140已在PCIe交换机120中建立,并且仿真PCIe端点设备140与可共享PCIe端点设备115之间的通信关系先前已建立。
参考图3A,主计算机105不能直接向管理服务器150传输请求以授予对可共享PCIe端点设备115的访问,因为主计算机105正充当从设备,并且将仅在由管理服务器150分配的时间配额期间访问可共享PCIe端点设备115的BAR映射区域236。如此,在管理服务器150上运行的调度器识别并将时间配额分配给主计算机105(305)。管理服务器150然后将与主计算机105相关联的时间配额和主机端口ID传输到可共享PCIe端点设备115(310)。更具体地,在管理服务器150上运行的调度器使用可共享PCIe端点设备115的PCIe供应商定义的调度控制能力232来将可共享PCIe设备115调度到主计算机105。在每个时间配额分配的开始,调度器将对应的主计算机105所耦接到的PCIe交换机120的主机端口107的主机端口ID和允许主计算机105访问可共享PCIe端点设备115的分配的时间配额写入到PCIe供应商定义的调度控制能力232。
在接收来自管理服务器150的时间配额和主机端口ID之后,并且当可共享PCIe端点设备115准备好处理来自第一主计算机105的请求(诸如切换到与第一主计算机105相关联的功能栈)时,可共享PCIe端点设备115产生时间配额开始信号(315)。时间配额开始信号经由PCIe总线136和管理端口127传输到管理服务器150(320)。管理服务器150然后响应于接收时间配额开始而产生第一中断(325),并且管理服务器150经由主机端口107将第一中断传输到主计算机105(330),以通知第一主计算机105分配给第一主计算机105的时间配额的持续时间已经开始。第一主计算机105确认来自管理服务器150的第一中断,并且开始产生以第一仿真PCIe端点设备140的BAR映射区域206为目标的请求(340)。以第一仿真PCIe端点设备140的BAR映射区域206为目标的请求然后被重新引导到可共享PCIe端点设备115的BAR映射区域236(345)。可共享PCIe端点设备115可通过向第一主计算机105发送DMA TLP来做出响应(350)。
现参考图3B,从可共享PCIe端点设备140传输的DMA TLP(图3A的350)在主计算机105处被接收(355)。在分配给第一主计算机105的时间配额期间,第一主计算机105继续向仿真PCIe端点设备140传输请求(360),该请求随后被重新引导到可共享PCIe端点设备115(365)。可共享PCIe端点设备115通过向第一主计算机105发送DMA TLP来继续做出响应(370)。同时,可共享PCIe端点设备115跟踪该时间配额,并且当该时间配额期满时(375),可共享PCIe端点设备产生时间配额结束信号(380),并且将该时间配额结束信号传输到管理服务器150(385)。管理服务器150响应于接收来自可共享PCIe端点设备115的时间配额结束信号而产生第二中断(390),然后将该第二中断传输到主计算机105(395)。响应于第二中断,主计算机105停止产生以第一仿真PCIe端点设备140的BAR映射区域为目标的请求(399)。如此,第一主计算机105停止访问仿真PCIe端点设备140的BAR映射区域,直到其从管理服务器150接收指示分配给第一主计算机105的下一时间配额开始的下一中断。
虽然图3A和图3B示出了在分配给主计算机105的时间配额内第一主计算机105与可共享PCIe端点设备115之间的连接的示例性过程,但设想该过程可通过接下来选择不同的主计算机以通过不同的仿真PCIe端点设备连接到可共享PCIe端点设备115来继续。通常,正访问可共享PCIe端点设备115的每个主计算机将由在管理服务器150上运行的调度器来分配时间配额,在该时间配额期间,主计算机可访问可共享PCIe端点设备115。
图4示出了用于通过PCIe交换机对可共享PCIe端点设备进行基于时间的调度的方法400的流程图。
在操作405处,该方法包括:由管理服务器向耦接到PCIe交换机的多个主计算机中的主计算机分配时间配额,其中该时间配额识别在其期间该主计算机排他地访问耦接到PCIe交换机的可共享PCIe端点设备的时间段。参考图1,管理服务器150向耦接到PCIe交换机120的第一主计算机105分配时间配额,并且向耦接到PCIe交换机120的第二主计算机110分配单独的时间配额。
在操作410处,该方法包括:在分配给主计算机的时间配额期间,从主计算机产生以PCIe交换机的仿真PCIe端点设备为目标的请求。参考图1,在分配给第一主计算机105的时间配额期间,在第一主计算机105处产生以PCIe交换机120的第一仿真PCIe端点设备140为目标的请求。类似地,在分配给第二主计算机110的时间配额期间,在第二主计算机110处产生以PCIe交换机120的仿真PCIe端点设备145为目标的请求。
在操作415处,该方法包括:在分配给主计算机的时间配额期间,将请求从仿真PCIe端点设备重新引导到可共享PCIe端点设备。参考图1,在分配给第一主计算机105的时间配额期间,使用PCIe交换机120的地址陷阱设定224和ID路由表222,将以第一仿真PCIe端点设备140为目标的请求从第一主计算机105重新引导到可共享PCIe端点设备115。类似地,在分配给第二主计算机110的单独的时间配额期间,使用PCIe交换机120的地址陷阱设定224和ID路由表222,将以第二仿真PCIe端点设备145为目标的请求从第二主计算机110重新引导到可共享PCIe端点设备115。
图5和图6组合示出了用于通过PCIe交换机对可共享PCIe端点设备进行基于时间的调度的方法500的更详细流程图。
在图5的操作505处,该方法包括:由与PCIe交换机相关联的管理服务器选择多个主计算机中的主计算机和待分配给所选择的主计算机的时间配额。参考图2,与PCIe交换机120相关联的管理服务器150可选择耦接到PCIe交换机120的相应的主机端口107、117的多个主计算机105、110中的第一主计算机105,并且管理服务器150可选择待分配给所选择的第一主计算机105的时间配额。类似地,管理服务器150可选择耦接到PCIe交换机120的相应的主机端口107、117的多个主计算机105、110中的第二主计算机110,并且管理服务器150可选择待分配给所选择的第二主计算机110的单独且不同的时间配额。管理服务器150的调度器用于选择相应的主计算机和对应的时间配额。如先前所描述,一般来讲,可共享PCIe端点设备115将与每个相应的主计算机105、110共享的时间配额可基于需求和指配到可共享PCIe端点设备115的工作负载。用于选择相应的时间配额的标准可通过本领域的技术人员已知的各种方法确定。
在操作510处,该方法包括:将与所选择的主计算机相关联的主机端口ID和待分配给所选择的主计算机的相应的时间配额传输到可共享PCIe端点设备。参考图2,如果当前选择了第一主计算机105,则利用由PCIe供应商定义的调度控制能力232提供的功能性将与第一主计算机105相关联的第一主机端口107的主机端口ID和待分配给第一主计算机105的时间配额传输到可共享PCIe端点设备115。
在操作515处,该方法包括:在可共享PCIe端点设备处产生时间配额开始信号,并且在操作520处,该方法通过将来自可共享PCIe端点设备的时间配额开始信号传输到管理服务器来继续。参考图2,可共享PCIe端点设备115利用时间配额249和主机端口ID 248来产生时间配额开始信号,该时间配额开始信号指示将允许耦接到由主机端口ID 248指示的主机端口的第一主计算机105访问可共享PCIe端点设备115的时间段配额开始。可共享PCIe端点设备115延迟向管理服务器150传输时间配额开始的中断,直到其准备好接收来自第一主计算机105的请求,这可能需要切换功能栈,如参考图8更详细地描述。
在操作525处,该方法包括:响应于接收来自可共享PCIe端点设备的时间配额开始信号而在管理服务器处产生第一中断。参考图2,并且如先前所描述,管理服务器150接收来自可共享PCIe端点设备115的时间配额开始信号,并且响应于该时间配额开始信号而产生第一中断。
在操作530处,该方法包括:通过仿真PCIe端点设备将第一中断传输到主计算机。参考图2,由管理服务器150产生的第一中断经由第一主机端口107通过第一仿真PCIe端点设备140传输到第一主计算机105,或者经由第二主机端口117通过第二仿真PCIe端点设备145传输到第二主计算机110,这取决于哪个主计算机105、110当前已被分配了时间配额。
在操作535处,该方法包括:响应于第一中断,在主计算机处产生以仿真PCIe端点设备的BAR映射区域为目标的请求。参考图2,第一主计算机105产生以第一仿真PCIe端点设备140的BAR映射区域206为目标的请求,或者第二主计算机110产生以第二仿真PCIe端点设备145的BAR映射区域207为目标的请求,这取决于哪个主计算机105、110当前已被分配了时间配额。
在图6的操作540处,该方法包括:将请求从仿真PCIe端点设备重新引导到可共享PCIe端点设备。参考图2,通过使用PCIe交换机120的地址陷阱设定224和ID路由表222将第一仿真PCIe端点设备140的BAR映射区域206映射到可共享PCIe端点设备115的BAR映射区域236来将由第一主计算机105提供到仿真PCIe端点设备140的请求重新引导到可共享PCIe端点设备115。另选地,通过使用PCIe交换机120的地址陷阱设定224和ID路由表222将第二仿真PCIe端点设备145的BAR映射区域207映射到可共享PCIe端点设备115的BAR映射区域236来将由第二主计算机110提供到仿真PCIe端点设备145的请求重新引导到可共享PCIe端点设备115。
在操作545处,该方法包括:确定时间配额是否已期满。参考图2,可共享PCIe端点设备115确定时间配额249何时期满。如果时间配额没有期满,则该方法返回到步骤535,并且主计算机105继续将请求传输到仿真PCIe端点设备140。另选地,如果时间配额已期满,则该方法继续到步骤550,其中该方法包括:在可共享PCIe端点设备115处产生时间配额结束信号。
在操作555处,该方法包括:将时间配额结束信号传输到管理服务器,并且在操作560处,该方法通过响应于接收来自可共享PCIe端点设备的时间配额结束信号而在管理服务器处产生第二中断来继续。在操作565处,管理服务器150将第二中断传输到主计算机。参考图2,当时间配额已期满时,可共享PCIe端点设备115将时间配额结束信号传输到管理服务器150。管理服务器150然后产生第二中断,并且经由第一主机端口107通过仿真PCIe端点设备140将第二中断传输到第一主计算机105,或者经由第二主机端口117通过第二仿真PCIe端点设备145将第二中断传输到第二主计算机110,这取决于哪个主计算机105、110当前已被分配了时间配额。
在操作565处,该方法包括:由主计算机响应于在主计算机处接收的第二中断,停止传输来自主计算机的以仿真PCIe端点设备的BAR映射区域为目标的请求。参考图2,当主计算机105接收来自管理服务器150的第二中断时,其停止传输以仿真PCIe端点设备140的BAR映射区域为目标的请求,直到接收到另一个时间配额开始的中断。
图7是详细示出在将时间配额分配给主计算机之前在主计算机启动时并且由管理服务器执行的枚举过程的流程图700。
在操作705处,该方法包括:由主计算机传输配置事务层分组(TLP)以执行PCIe端点设备和PCIe交换机的枚举。该方法在操作710处通过由管理服务器捕获从主计算机传输的配置TLP来继续。通过捕获并响应于从主计算机接收的配置TLP,管理服务器将创建与相应的主计算机中的每个主计算机相关联的仿真PCIe端点。如此,管理服务器将以主计算机将认为PCIe端点设备存在于PCIe总线上的这样一种方式来配置对配置TLP的响应。参考图2,配置TLP由第一主计算机105经由第一主机端口107传输,并且由管理服务器150捕获。另选地,配置TLP由第二主计算机110经由第二主机端口117传输,并且由管理服务器150捕获。应注意,配置TLP可由第一主计算机105和第二主计算机110在任何时间传输,而不管特定主计算机是否已被分配了时间配额。
在操作710处,该方法包括:通过建立仿真PCIe端点设备来响应从主计算机传输的配置TLP。参考图2,管理服务器150通过在PCIe交换机120处建立仿真PCIe端点设备140来响应由第一主计算机105传输的配置TLP,并且通过在PCIe交换机120处建立仿真PCIe端点设备145来响应由第二主计算机110传输的配置TLP。
在操作720处,该方法包括:由管理服务器将具有PCIe供应商定义的能力的仿真PCIe端点设备暴露于主计算机。参考图2,仿真PCIe端点设备140将PCIe供应商定义的能力202暴露于第一主计算机105。如先前所描述,PCIe供应商定义的能力202含有控制和访问仿真PCIe端点设备140所需的信息。类似地,仿真PCIe端点设备145将PCIe供应商定义的能力203暴露于第二主计算机110。
在操作725处,该方法包括:由管理服务器枚举PCIe交换机和可共享PCIe端点设备,以将PCIe供应商定义的调度控制能力暴露于管理服务器。参考图2,管理服务器150执行枚举以将PCIe供应商定义的调度控制能力232暴露于管理服务器150。如先前所描述,PCIe供应商定义的调度控制能力232包括控制和访问可共享PCIe端点设备115所需的信息。
图8是示出用于在分配给主计算机的时间配额期间将请求从仿真PCIe端点设备重新引导到可共享PCIe端点设备之前在可共享PCIe端点设备处切换功能栈的操作的流程图800。基于主计算机105、110中的哪一个主计算机已被分配了时间配额来切换功能栈。如图2所示,第一主计算机105与第一功能栈250相关联,并且第二主计算机110与第二功能栈260相关联。在操作中,如果第一主计算机105已被分配了当前时间配额,并且先前时间配额被分配给了与第二功能栈260相关联的第二主计算机110,则可共享PCIe端点设备115将功能栈从第二功能栈260切换到第一功能栈250。
在操作805处,该方法包括:保存可共享PCIe端点设备的BAR映射区域的当前状态。参考图2,假设第一主计算机105已被分配了时间配额,并且第一主计算机105与第一功能栈250相关联,可共享PCIe端点设备115的BAR映射区域236的当前状态可被保存到可共享PCIe端点设备115的第二功能栈260的BAR映射区域副本262。
在操作810处,该方法包括:使用与主计算机相关联的功能栈的BAR映射区域代替可共享PCIe端点设备的BAR映射区域,以在可共享PCIe端点设备处恢复与主计算机相关联的功能栈。参考图2,可共享PCIe端点设备115的BAR映射区域236可使用可共享PCIe端点设备115的第一功能栈250的BAR映射区域副本252来代替。
在操作815处,该方法包括:初始化PCIe交换机的ID路由表以在主计算机对仿真PCIe端点设备的枚举期间将仿真PCIe端点设备的PCIE总线:设备:功能号映射到可共享PCIe端点设备的PCIe总线:设备:功能号。参考图2,PCIe交换机120的ID路由表222经初始化以在主计算机105对仿真PCIe端点设备140的枚举期间将仿真PCIe端点设备140的PCIE总线:设备:功能号映射到可共享PCIe端点设备115的PCIe总线:设备:功能号。
在操作820处,该方法包括:将由主计算机访问的仿真PCIe端点设备的BAR映射区域映射到可共享PCIe端点设备115的BAR映射区域。参考图2,在已执行枚举和初始化之后,在产生以仿真PCIe端点设备140为目标的请求时,已由主计算机105访问的仿真PCIe端点设备140的BAR映射区域在由管理服务器150分配给主计算机105的时间配额期间被映射到可共享PCIe端点设备115的BAR映射区域。
公开了一种用于通过PCIe交换机对可共享PCIe端点设备进行基于时间的调度的改进的系统和方法。
在一个示例中,所公开的方法和装置的部分可在现场可编程门阵列(FPGA)或专用集成电路(ASIC)中实现。在一个示例中,电路元件的各种功能被实现为软件程序中的处理步骤。在一个示例中,软件可用于例如数字信号处理器、网络处理器、微控制器或通用计算机中。
除非如从讨论中显而易见的另有特别说明,否则应当理解,在整个本说明书中,利用诸如“接收”、“确定”、“生成”、“限制”、“发送”、“计数”、“分类”等的术语的讨论可以指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转化成类似地表示为计算机系统存储器或寄存器或者其他此类信息存储、传输或显示设备内的物理量的其他数据。
可使用响应于基于软件的指令而执行动作的各种计算平台。下文提供了可用于实现本发明的方法和装置的信息技术的前置基础。
用于执行所公开的方法的软件可存储在计算机可读介质上,该计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述各项的任何合适的组合。计算机可读存储介质的更具体示例(非穷尽列表)将包括以下各项:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、磁存储设备,或前述各项的任何合适的组合。在本文件的上下文中,计算机可读存储介质可以是可包含或存储供指令执行系统、装置或设备使用或与它们结合在一起使用的程序的任何非暂态有形介质。
计算机可读信号介质可包括例如在基带中或作为载波的一部分传播的数据信号,其中体现了计算机可读程序代码。这种传播的信号可采用多种形式中的任何一种形式,包括但不限于电磁信号、光信号或它们的任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质的任何计算机可读介质,该计算机可读介质可传送、传播或传输供指令执行系统、装置或设备使用或与它们结合在一起使用的程序。所公开的方法可体现在非暂态软件介质中,诸如计算机硬盘驱动器、闪存、光盘等。
计算机可读介质上体现的程序代码可使用任何适当的介质来传输,包括但不限于无线、有线线路、光纤电缆、射频等,或者前述各项的任何合适的组合。用于执行本文所公开的各方面的操作的计算机程序代码可使用一种或多种编程语言的任何组合来编写,该编程语言包括诸如Java、C#、C++、Visual Basic等面向对象的编程语言以及诸如“C”编程语言或类似编程语言的常规过程编程语言。
下文参考方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本文所公开的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令实现。可将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由该计算机或其他可编程数据处理装置的处理器执行的该指令产生用于实现在一个或多个流程图和/或框图框中指定的功能/动作的装置。
还可将这些计算机程序指令存储在计算机可读介质中,该计算机可读介质可引导计算机、其他可编程数据处理装置或其他设备以特定方式发挥功能,使得存储在计算机可读介质中的该指令产生包括实现在一个或多个流程图和/或框图框中指定的功能/动作的指令的制品。
还可将计算机程序指令加载到计算机、其他可编程数据处理装置或其他设备上,使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在该计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或框图框中指定的功能/动作的过程。
Claims (19)
1.一种与多个主计算机共享PCIe端点设备的方法,所述方法包括:
由管理服务器向耦接到PCIe交换机的所述多个主计算机中的主计算机分配时间配额,其中所述时间配额识别在所述主计算机排他地访问耦接到所述PCIe交换机的可共享PCIe端点设备期间的持续时间;
在分配给所述主计算机的所述时间配额期间,在所述主计算机处产生以所述PCIe交换机的仿真PCIe端点设备为目标的请求;以及
在分配给所述主计算机的所述时间配额期间,将以所述仿真PCIe端点设备为目标的所述请求重新引导到所述可共享PCIe端点设备。
2.根据权利要求1所述的方法,其中向所述主计算机分配所述时间配额进一步包括:
由与所述PCIe交换机相关联的所述管理服务器选择所述多个主计算机中的所述主计算机和待分配给所述主计算机的所述时间配额;
将与所述主计算机相关联的主机端口ID传输到所述可共享PCIe端点设备;以及
将由所述管理服务器选择的所述时间配额传输到所述可共享PCIe端点设备。
3.根据权利要求2所述的方法,其中在所述主计算机处产生以仿真PCIe端点的仿真PCIe端点设备为目标的请求,并且将以所述仿真PCIe端点设备为目标的所述请求重新引导到所述可共享PCIe端点设备进一步包括:
在所述可共享PCIe端点设备处产生时间配额开始信号;
将来自所述可共享PCIe端点设备的所述时间配额开始信号传输到所述管理服务器;
响应于来自所述可共享PCIe端点设备的所述时间配额开始信号而在所述管理服务器处产生第一中断;以及
将所述第一中断传输到所述主计算机。
4.根据权利要求3所述的方法,所述方法进一步包括:
在由所述时间配额识别的所述持续时间已期满之后,在所述可共享PCIe端点设备处产生时间配额结束信号;
将所述时间配额结束信号传输到所述管理服务器;
响应于来自所述可共享PCIe端点设备的所述时间配额结束信号而在所述管理服务器处产生第二中断;
将来自所述管理服务器的所述第二中断传输到所述主计算机;以及
由所述主计算机响应于在所述主计算机处接收的所述第二中断,停止产生以所述仿真PCIe端点设备为目标的请求。
5.根据权利要求3所述的方法,其中在所述主计算机处响应于所述第一中断而产生以所述仿真PCIe端点设备为目标的请求进一步包括:所述主计算机响应于所述第一中断而访问所述仿真PCIe端点设备的BAR映射区域。
6.根据权利要求5所述的方法,所述方法进一步包括:在分配给所述主计算机的所述时间配额期间,将以所述仿真PCIe端点设备为目标的所述请求重新引导到所述可共享PCIe端点设备之前:
保存所述可共享PCIe端点设备的所述BAR映射区域的当前状态;
使用与所述主计算机相关联的功能栈的BAR映射区域代替所述可共享PCIe端点设备的所述BAR映射区域,以在所述可共享PCIe端点设备处切换与所述主计算机相关联的所述功能栈;
初始化所述PCIe交换机的ID路由表,以将所述仿真PCIe端点设备的PCIe总线:设备:功能号映射到所述可共享PCIe端点设备的PCIe总线:设备:功能号;以及
将由所述主计算机作为目标的所述仿真PCIe端点设备的所述BAR映射区域映射到所述可共享PCIe端点设备的所述BAR映射区域。
7.根据权利要求1所述的方法,所述方法进一步包括在将所述时间配额分配给所述主计算机之前:
由所述主计算机传输配置交易层分组(TLP)以执行可共享PCIe端点设备和所述PCIe交换机的枚举;
由所述管理服务器捕获从所述主计算机传输的所述配置TLP;
通过建立所述仿真PCIe端点设备来对从所述主计算机传输的所述配置TLP做出响应;以及
由所述仿真PCIe端点设备将PCIe供应商定义的能力暴露于所述主计算机。
8.根据权利要求7所述的方法,所述方法进一步包括:
由所述管理服务器枚举所述PCIe交换机和所述可共享PCIe端点设备以将PCIe供应商定义的调度控制能力暴露于所述管理服务器。
9.一种用于与多个主计算机共享PCIe端点设备的系统,所述系统包括:
PCIe交换机;
多个主计算机,所述多个主计算机耦接到所述PCIe交换机;
可共享PCIe端点设备,所述可共享PCIe端点设备耦接到所述PCIe交换机;
管理服务器,所述管理服务器与所述PCIe交换机相关联,所述管理服务器用以在所述PCIe交换机内建立多个仿真PCIe端点设备,其中所述多个仿真PCIe端点设备中的每个仿真PCIe端点设备与耦接到所述PCIe交换机的所述多个主计算机中的每个主计算机中的一个主计算机相关联,并且所述管理服务器用以将时间配额分配给所述多个主计算机中的一个主计算机,其中所述时间配额识别在所述主计算机排他地访问所述可共享PCIe端点设备期间的持续时间;并且
所述PCIe交换机用以在分配给所述主计算机的所述时间配额期间将从所述主计算机产生的以所相关联的仿真PCIe端点设备为目标的请求重新引导到所述可共享PCIe交换机。
10.根据权利要求9所述的系统,其中每个仿真PCIe端点设备在枚举过程期间将PCIe供应商定义的能力暴露于所相关联的主计算机。
11.根据权利要求9所述的系统,其中所述可共享PCIe端点设备进一步包括:
PCIe配置空间,所述PCIe配置空间将PCIe供应商定义的调度控制能力暴露于所述管理服务器,所述PCIe配置空间进一步包括具有BAR映射区域的R/W处理单元,其中所述R/W处理单元将在所述可共享PCIe端点设备处接收的存储器TLP转换成R/W请求;
主机ID附加单元,所述主机ID附加单元耦接到所述R/W处理单元,所述主机ID附加单元用以将与所述主计算机相关联的主机端口ID附加到所述R/W请求以产生具有主机端口ID的R/W请求;
多个功能栈,所述多个功能栈中的每个功能栈与所述多个主计算机中的每个主计算机中的一个主计算机相关联;和
功能栈切换模块,所述功能栈切换模块耦接到所述主机ID附加单元,所述功能栈切换模块用于使用所述功能栈的BAR映射区域副本来切换与已被分配了所述时间配额的所述主计算机相关联的所述功能栈。
12.根据权利要求11所述的系统,其中所述多个功能栈中的每个功能栈包括主机端口ID到DMA地址附加模块,以将所述主机端口ID加到DMA地址前头以用于转发到所述主计算机。
13.根据权利要求9所述的系统,其中所述管理服务器被进一步配置为:
选择所述多个主计算机中的所述主计算机并且选择待分配给所述主计算机的所述时间配额;
将与所选择的主计算机相关联的主机端口ID传输到所述可共享PCIe端点设备;以及
将所选择的时间配额传输到所述可共享PCIe端点设备。
14.根据权利要求13所述的系统,其中所述可共享PCIe端点设备被进一步配置为:
从所述管理服务器接收所传输的时间配额;
产生指示所述时间配额开始的时间配额开始信号;
将所述时间配额开始信号传输到所述管理服务器;
响应于来自所述可共享PCIe端点设备的所述时间配额开始信号而在所述管理服务器处产生第一中断;以及
将所述第一中断传输到所选择的主计算机。
15.根据权利要求14所述的系统,其中所选择的主计算机被进一步配置为:
响应于接收到所述第一中断而产生以所相关联的仿真PCIe端点设备为目标的所述请求。
16.根据权利要求15所述的系统,其中所述可共享PCIe端点设备被进一步配置为:
在由所述时间配额识别的所述持续时间已期满之后,产生指示所述时间配额结束的时间配额结束信号;以及
将所述时间配额结束信号传输到所述管理服务器。
17.根据权利要求16所述的系统,其中所述主计算机被进一步配置为:
接收所述时间配额结束信号;
响应于来自所述可共享PCIe端点设备的所述时间配额结束信号而产生第二中断;以及
通过所述仿真PCIe端点设备将来自所述管理服务器的所述第二中断传输到所述主计算机。
18.根据权利要求17所述的系统,其中所述主计算机被进一步配置为:
接收所述第二中断;以及
响应于所述第二中断而停止传输以所述仿真PCIe端点设备为目标的请求。
19.根据权利要求18所述的系统,其中所述PCIe交换机被进一步配置为响应于所述时间配额结束的中断而停止将从所述主计算机产生的以所相关联的仿真PCIe端点设备为目标的所述请求重新引导到所述可共享PCIe交换机。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063033216P | 2020-06-02 | 2020-06-02 | |
US63/033,216 | 2020-06-02 | ||
US17/151,316 | 2021-01-18 | ||
US17/151,316 US11449456B2 (en) | 2020-06-02 | 2021-01-18 | System and method for scheduling sharable PCIe endpoint devices |
PCT/US2021/021223 WO2021247113A1 (en) | 2020-06-02 | 2021-03-05 | System and method for scheduling sharable pcie endpoint devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115298656A true CN115298656A (zh) | 2022-11-04 |
Family
ID=78706369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180022442.4A Pending CN115298656A (zh) | 2020-06-02 | 2021-03-05 | 用于调度可共享pcie端点设备的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11449456B2 (zh) |
CN (1) | CN115298656A (zh) |
DE (1) | DE112021003094T5 (zh) |
WO (1) | WO2021247113A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021168758A1 (zh) * | 2020-02-27 | 2021-09-02 | 华为技术有限公司 | 一种基于PCIe的通信方法及装置 |
US11449456B2 (en) * | 2020-06-02 | 2022-09-20 | Microchip Technology Inc. | System and method for scheduling sharable PCIe endpoint devices |
US20220075747A1 (en) * | 2020-09-09 | 2022-03-10 | Mellanox Technologies Tlv Ltd. | Support for multiple hot pluggable devices via emulated switch |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7934045B2 (en) * | 2009-06-09 | 2011-04-26 | International Business Machines Corporation | Redundant and fault tolerant control of an I/O enclosure by multiple hosts |
US9141571B2 (en) | 2010-12-28 | 2015-09-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | PCI express switch with logical device capability |
US8521941B2 (en) | 2010-12-28 | 2013-08-27 | Plx Technology, Inc. | Multi-root sharing of single-root input/output virtualization |
WO2014186938A1 (zh) | 2013-05-20 | 2014-11-27 | 华为技术有限公司 | 一种计算机系统、高速外围组件互联端点设备的访问方法和装置 |
US9563591B2 (en) * | 2014-03-06 | 2017-02-07 | International Business Machines Corporation | Peripheral component interconnect express (PCIe) ping in a switch-based environment |
US20160154756A1 (en) | 2014-03-31 | 2016-06-02 | Avago Technologies General Ip (Singapore) Pte. Ltd | Unordered multi-path routing in a pcie express fabric environment |
US9984017B2 (en) | 2014-12-27 | 2018-05-29 | Intel Corporation | Intelligent network fabric to connect multiple computer nodes with one or more SR-IOV devices |
TWI597953B (zh) * | 2015-11-25 | 2017-09-01 | 財團法人工業技術研究院 | 具故障轉移能力的快速周邊元件互連網路系統與操作方法 |
US10162792B2 (en) | 2016-10-13 | 2018-12-25 | Baidu Usa Llc | Method and system for high precision time synchronization |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10387356B1 (en) * | 2018-10-02 | 2019-08-20 | Teradyne, Inc. | Generating timestamps on a packet-oriented bus |
US11194750B2 (en) * | 2018-12-12 | 2021-12-07 | Micron Technology, Inc. | Memory sub-system with multiple ports having single root virtualization |
US11038749B2 (en) * | 2018-12-24 | 2021-06-15 | Intel Corporation | Memory resource allocation in an end-point device |
US11449456B2 (en) * | 2020-06-02 | 2022-09-20 | Microchip Technology Inc. | System and method for scheduling sharable PCIe endpoint devices |
-
2021
- 2021-01-18 US US17/151,316 patent/US11449456B2/en active Active
- 2021-03-05 DE DE112021003094.9T patent/DE112021003094T5/de active Pending
- 2021-03-05 CN CN202180022442.4A patent/CN115298656A/zh active Pending
- 2021-03-05 WO PCT/US2021/021223 patent/WO2021247113A1/en active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
CN115617722B (zh) * | 2022-12-05 | 2023-03-07 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210374086A1 (en) | 2021-12-02 |
US11449456B2 (en) | 2022-09-20 |
WO2021247113A1 (en) | 2021-12-09 |
DE112021003094T5 (de) | 2023-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
US11449456B2 (en) | System and method for scheduling sharable PCIe endpoint devices | |
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
US10411971B2 (en) | Method for unified communication of server, baseboard management controller, and server | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
EP3033681B1 (en) | Method and apparatus for delivering msi-x interrupts through non-transparent bridges to computing resources in pci-express clusters | |
US8774055B2 (en) | Switching method | |
US9430432B2 (en) | Optimized multi-root input output virtualization aware switch | |
CN109445905B (zh) | 虚拟机数据通信方法和系统以及虚拟机配置方法和装置 | |
US10509758B1 (en) | Emulated switch with hot-plugging | |
JP2016042374A (ja) | ネットワークのセグメント化によるネイティブクラウドコンピューティング | |
KR20050039859A (ko) | 저장 및 포워드 스위치 장치, 시스템 및 방법 | |
CN111988230B (zh) | 虚拟机通信方法、装置、系统及电子设备 | |
JP2008287717A (ja) | 仮想レーン資源を割り当てるための方法及びコンピュータ・システム | |
JP5669851B2 (ja) | 論理的にパーティション化されたシステムにおいてパーティション間の効率的なコミュニケーションを行うための装置、方法、及びコンピュータ・プログラム | |
EP2570913A1 (en) | Method and system for accessing storage device | |
CN114265800B (zh) | 中断消息处理方法、装置、电子设备及可读存储介质 | |
CN113312143A (zh) | 云计算系统、命令处理方法及虚拟化仿真装置 | |
CN110389711B (zh) | 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质 | |
US8032675B2 (en) | Dynamic memory buffer allocation method and system | |
US20100169069A1 (en) | Composite device emulation | |
JP2005529430A (ja) | バスシステム、バスシステム内で用いるためのステーション、及びバスインタフェース | |
KR100316190B1 (ko) | 로컬 메모리에서 패킷화된 동작 정보의 기억을 통한 입출력 성능을 증가시키기 위한 시스템 | |
JP2018524697A (ja) | ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合 | |
US11386031B2 (en) | Disaggregated switch control path with direct-attached dispatch |
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 |