CN111176829A - 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配 - Google Patents

虚拟化处理***中的物理功能和虚拟功能的灵活资源分配 Download PDF

Info

Publication number
CN111176829A
CN111176829A CN201911102878.5A CN201911102878A CN111176829A CN 111176829 A CN111176829 A CN 111176829A CN 201911102878 A CN201911102878 A CN 201911102878A CN 111176829 A CN111176829 A CN 111176829A
Authority
CN
China
Prior art keywords
functions
physical
virtual
flexibly
hardware resources
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911102878.5A
Other languages
English (en)
Other versions
CN111176829B (zh
Inventor
S·克拉基里安
J·泽布查克
W·P·斯奈德二世
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of CN111176829A publication Critical patent/CN111176829A/zh
Application granted granted Critical
Publication of CN111176829B publication Critical patent/CN111176829B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

本公开的实施例涉及虚拟化处理***中的物理功能和虚拟功能的灵活资源分配。公开了一种用于在支持硬件虚拟化的处理器***中将硬件资源灵活地分配给物理功能和虚拟功能的方法和***。该处理器***包括资源虚拟化单元,资源虚拟化单元被用来将硬件资源灵活地分配给物理功能,以及还将本地功能灵活地分配给与一个或多个物理功能相关联的虚拟功能。由此,标准PCI软件与物理功能以及已经被灵活地分配给虚拟功能和本地功能的任何相关联的虚拟化硬件资源兼容。

Description

虚拟化处理***中的物理功能和虚拟功能的灵活资源分配
技术领域
本发明涉及用于将各种硬件资源分配给物理功能和虚拟功能的灵活机制。
背景技术
软件应用需要实际的物理硬件资源,诸如用于执行计算机代码的处理器、用于存储数据的存储器以及用于通信的网络电路。然而,软件应用没有完全地利用可用的物理硬件资源。更复杂的问题是一些软件应用可能消耗大量的一个或多个物理资源,而其他软件应用可能消耗较少的整体物理资源或较少的一种特定类型的物理资源。这种低效率造成了经济负担,因为实施和操作硬件资源都是高成本的。未充分利用可用的硬件资源是浪费的。相反,如果没有足够的专用硬件资源,则软件应用在还运行的情况下可能会运行得极其缓慢。
为了提高硬件资源利用的效率,已经开发了一种被称为“虚拟化”的技术。基本上,虚拟化指的是从单个硬件资源集合中限定多个“虚拟”机的动作,并且主机包含其上发生虚拟化的实际物理资源。多个虚拟机运行来自多个用户的多个软件应用。专门的虚拟软件包被加载到一个或多个物理主机设备上,使得(多个)主机设备的物理硬件资源能够在许多不同用户之中被共享。通过实现实际物理硬件资源的共享,虚拟机可以对昂贵的现有硬件资源进行更高效的使用。此外,由于每个用户通过他们自己的虚拟机访问(多个)主机设备,所以从用户的角度来看,显得好像他们都具有他们自己的专用硬件资源。目前,虚拟化的程度正在提高,以满足高度精细的软件应用(例如云计算、人工智能、大数据等)所带来的不断扩展的需求,以高效地指派硬件资源的底层复杂性。
图1示出了现有技术虚拟化模型的示例。传入的数据分组起初由分组输入单元(PKI)101接收。PKI负责接收来自网络的分组。它解析数据分组并且将分组分配给特定的工作流。在此基础上,PKI从分配器单元(FPA)102请求用于分组的缓冲区指针。在FPA 102内,存在物理功能103和多个虚拟功能104-106。与VF相关联的是存储器池,存储器池由指向缓冲区的指针列表所限定,数据被写入并且被存储在该缓冲区上。还存在指向工作队列条目的指针,工作队列条目存储针对特定分组的控制和元数据信息。调度/同步/排序(order)单元(SSO)107的职责是调度要由一个或多个核ARM处理器(AP)112-114执行的工作流。SSO107包括物理功能108和多个组功能109-111,以有助于将数据移向/移出ARM处理器核112-114。分组输出单元(PKO)115具有用于输出分组及其相关联的控制信息的一个PF 116和多个VF 117-119。应当注意,其他现有技术的虚拟化模型以不同的格式存在。这些其他的虚拟化模型也具有它们的用于物理和虚拟功能的特定设计。
无论实施什么类型的虚拟化模型,从软件的立场,每个物理和虚拟功能单元都显得像是分离的设备。因此,每个单元需要其自己的专用软件驱动程序。为了分配物理硬件资源的集合,每个客户端需要其自己的、针对其被分配的单元(例如PKO、SSO和FPA)的软件驱动程序。这些单元中的每一个单元都具有被加载在特定的客户端之下的分离的软件驱动程序。例如,客户端1 115具有针对其PKO、SSO和FPA被加载的分离的驱动程序。同样地,客户端2 116具有其自己的、针对其PKO、SSO和FPA被加载的分离的驱动程序。这适用于每个附加的客户端。
虽然这种在逐个客户端的基础上实现分离的驱动程序的变通的解决方案支持增强的虚拟化级别,但它不是理想的,因为它造成了过度的开销负担。需要被主动管理的软件驱动程序的绝对数目和驱动程序之间的协调带来了严重的处理挑战。某些操作***(例如,Linux)限制这样的驱动程序之间的协调的所允许的类型和形式。这种与正常操作***标准的偏离可能负面地影响软件应用的性能。此外,专门训练的软件程序员必须编写代码来满足多个软件驱动程序的要求所带来的独特需求。
发明内容
本发明关于一种用于在支持硬件虚拟化的处理器***中将硬件资源灵活地分配给物理和虚拟功能的方法和***。管理(Administrative)软件限定且建立用于对一定数目的硬件资源进行虚拟化的一定数目的物理功能和虚拟功能。管理软件还限定且建立用于处理器***中的指定逻辑模块的一定数目的本地功能。一个物理功能可以具有两个虚拟化层。其可以被灵活地分配虚拟功能的集合和/或被分配给虚拟功能或物理功能本身的本地功能集合。通过以这种方式灵活地分配虚拟化的硬件资源,提高了在支持硬件虚拟化的处理器***上运行的各种客户端操作***的效率。此外,物理功能显得像是PCI设备,从而符合标准PCI软件。
附图说明
图1示出了现有技术虚拟化模型的示例。
图2图示了用于实现本发明的一个实施例的虚拟化处理***。
图3示出了根据本发明的一个实施例的RVU的详细的图。
图4示出了PCIe功能布局。
具体实施方式
本发明关于一种用于对虚拟化处理器***中的物理和虚拟功能的灵活资源分配的方法和***。在一个实施例中,实现一个或多个套接字,其中每个套接字被给定一个或多个功能块。每个功能块可以具有一定范围的本地功能(LF),以及每个LF的硬件资源集合。在一个实施例中,本地功能可以包括指令队列、分组或调度器工作队列、计时器环和存储器池。功能块不具有任何本地功能也是可能的。每个套接字的资源虚拟化单元(RVU)被用来虚拟化跨一个或多个功能块的LF资源。每个套接字具有多个RVU也是可能的。每个RVU具有一个或多个PF。可选地,每个RVU被分配一个或多个硬件VF(HWVF)。管理软件分配特定的HWVF或一定范围的连续HWVF,作为所选择的PCIe PF之下的PCIe VF(或一定范围的VF)。这使得标准的PCIe兼容软件能够发现RVU PF和相关联的VF。注意,这种对软件的视图可以是对软件的错觉;不要求协处理器物理地驻留在物理PCI总线上/之下。
在本发明的一个实施例中,每个PF作为包括一个或多个功能(例如,被编号0、1、…、N-1)的“PCI”设备被呈现给软件,其中功能编号0是PF本身,并且功能编号1及以上是该特定PF之下的VF。因此,PF编号和功能编号的组合唯一地标识PF或VF。该唯一的标识符被命名为PF_FUNC。在另一实施例中,跨越一个或多个PF的一组PF_FUNC可以作为“PCI设备”被呈现给软件。可能的是,潜在地,所有RVU PF都可以作为“PCI设备”被呈现给软件。因此,针对具有一个或多个LF的每个功能块,管理软件可以将每个LF分配给PF_FUNC。换言之,管理软件可以将LF分配给PF或特定PF之下的VF。通常,PF和VF是PCI标准术语;LF、AF、PF_FUNC和插槽与本发明的实施例有关。
当来自一个功能块的多个LF被分配给相同的PF_FUNC时,每个LF被分配给PF_FUNC内的唯一“插槽”。功能块可以是:(a)无插槽块,这意味着其不具有LF,(b)单插槽块,这意味着来自块的至多一个LF可以被分配给PF_FUNC,或者(c)多插槽块,这意味着来自块的多个LF可以被分配给PF_FUNC。此外,来自一个或多个单插槽和/或多插槽功能块的LF可以被分配给相同的PF_FUNC。每个PF_FUNC的PF或VF软件驱动程序控制并使用被分配给PF_FUNC的所有LF的资源。这可以包括来自一个或多个功能块的LF。
除了每个LF的硬件资源,每个功能块通常具有共享的硬件资源。这些资源包括但不限于:DMA引擎、管理配置和状态寄存器等。这些共享的资源属于管理功能(AF)。在一个实施例中,管理软件可以将AF访问限于一个或多个PF或允许所有PF访问AF。其他实施例可以将AF访问硬分配给指定的PF、专用的“仅供AF”的PF或总是允许所有PF访问AF。在一个实施例中,针对每个PF,管理软件可以允许访问功能块子集的AF资源。例如,PF1可以访问功能块A和B的AF资源,而PF2可以访问AF资源B和C。
图2图示了用于实现本发明的一个实施例的示例性虚拟化处理***200。该框架可以被用来将硬件资源灵活地分配给物理和虚拟功能。RVU单元201提供抽象层,由此硬件资源被分配给物理功能单元(PF)和/或硬件虚拟功能单元(HWVF)。在一个实施例中,存在16个PF(PF0-PF15)和256个HWVF 203。应当注意,取决于特定的***设计规范,可以实现任何数目的PF和HWVF。该软件可以将一定范围的HWVF指派给一个PF。例如,可以由软件将HWVF0-HWVF2指派给PF0。如果HWVF0-HWVF2被灵活地指派给PF0,则它们被映射为PF0之下的VF0-VF2。下一范围的HWVF可以被指派给下一PF。例如,可以将HWVF3-HWVF4灵活地指派给PF1,在这种情况下,它们被映射为PF1之下的VF0-VF1。该过程对于将HWVF 203指派给PF 202是可重复的,以满足范围广泛的设计准则。因此,该特征实现了根据需求将硬件虚拟功能单元灵活地分配给物理功能单元。此外,该模型遵循广泛采用的PCIe标准。本发明赋予一个巨大的优势:不需要为了将软件变更为满足任何特殊的约束而具有独特的知识。
网络接口控制器(NIX)单元205被用来处置分组通信。NIX单元205包括一定范围的本地功能(例如,LF0-LFn)。NIX 205可以被用来:经由外部以太网和/或PCIe接口和/或经由内部回送接口来发送和接收分组。NIX 205可以被实现为支持多个LF的单插槽块。每个NIXLF支持一百万个或更多个发送队列、一百万个或更多个接收队列以及一百万个或更多个完成队列。每个接收队列可以经由SSO207或经由存储器完成队列来传递分组。此外,每个分组传输可以针对完成/错误通知来使用SSO 207和/或存储器完成队列。每个LF可以经由以太网端口、回送单元(LBK)或***DMA分组接口单元(SDP)中的任何一个来发送和接收分组。管理软件被用来将NIX LF提供给要求NIX功能性的每个PF或VF。
同样地,网络池指派器(NPA)206具有其自己的本地功能LF。NPA 206管理存储器池并且支持从软件、从(多个)RVU功能块和从其他协处理器中高效地指派和释放存储器指针。在一个实施例中,NPA 206是支持多LF的单插槽块。管理软件将NPA LF提供到要求NPA功能性的每个PF或VF。
调度、同步和排序单元(SSO)207具有一定数目的本地功能LF0-LFn。SSO单元在美国专利号US20130111000A1中被描述,并且以其整体通过引用并入本文。在一个实施例中,存在256个LF,其中每个LF是一个SSO组。工作由软件或任何其他RVU功能块(例如,NIX 205、CPT 209、TIM 208或另一协处理器)添加到SSO LF(即,组)。管理软件可以向给定的PF/VF提供零到所有的SSO 207LF。在每个PF/VF内,SSO LF被分配给从插槽0开始的、唯一的连续的插槽。为了高效地使用SSO 207,管理软件向相同的PF/VF提供至少一个SSO LF。SSO 207调度要由一个或多个核ARM处理器(AP)210-212执行的工作流。在一个实施例中,SSO单元207在两个RVU功能块SSO和SSOW之间被拆分。SSO是具有多达256个LF的多插槽块。SSOW是具有多达52个LF的多插槽块,其中每个LF是一个工作插槽。软件使用SSOW LF(即,工作插槽)来调度先前被添加到SSO LF(即,一个组)的工作。管理软件可以向给定的PF/VF提供零到所有的SSOW的LF(例如,52个)。在每个PF/VF内,SSOW LF被分配给从插槽0开始的、唯一的连续的插槽。为了高效地利用SSO 207,管理软件向相同的PF/VF提供至少一个SSO LF和至少一个SSOW LF。
经调度的计时器单元(TIM)208使得软件能够调度SSO工作队列条目,以在未来的时间提交给SSO 207。TIM单元208是具有多达256个LF的多插槽块,其中每个LF是单个计时器环。管理软件可以向给定的PF/VF提供零到所有的TIM的LF(例如,256个)。在每个PF/VF内,LF被分配给从插槽0开始的、唯一的连续的插槽。
密码加速器单元(CPT)209包括用以加速对称哈希、加密、模幂运算、纠错码和通用的公共密钥算法的微编码引擎。在一个实施例中,CPT单元209是支持六十四个LF的多插槽块。每个CPT LF支持单个指令队列。管理软件可以向给定的PF/VF提供零到所有的CPT的LF(例如,六十四个)。在每个PF/VF内,LF被分配给从插槽0开始的、唯一的连续的插槽。
因此,从软件的角度来看,软件确定其将需要的PF的数目以及在每个PF之下的对应VF的数目。然后,软件创建这些PF和VF,并且将实际的硬件资源分配给这些PF和VF。例如,在PF之下的每个PF或VF可以被分配单个NIX LF、单个NPA LF以及一个或多个SSO LF。单个NIX LF和单个NPA LF是足够的,因为它们是高度可缩放的(即,单个LF可以支持超过一百万个队列或存储器池)。管理软件程序负责提供。因此,运行控制该VF的软件的VF驱动程序可以访问来自NIX LF、NPA LF和SSO LF的资源集合。被分配在该VF之下的资源由单个软件驱动程序可用、控制和管理。因此,管理软件现在能够决定将要创建多少VF,并且也具有将这些资源直接指派给特定VF的能力,而不是创建和支持大量的SSO组并且将这些组硬分配给特定的RVU VF而不管SSO组是否将被使用。此外,该架构允许实现将一定数目的资源集合指派在每个功能块中。然后,管理软件可以执行用以创建单个VF的提供,该单个VF能够采用所有SSO资源。这些都可以由单个驱动程序控制。同样地,TIM和CPT单元向相同的PF或VF提供多个LF。这使得软件能够为特定PF或VF驱动程序混合且匹配特定应用所需的任何硬件资源。此外,软件可以在特定PF之下创建一个或多个VF,其中每个VF具有一个NIX LF;一个NPALF;并且创建仅具有SSO资源的不同的PF。实际的配置可以在固件中被预限定。在本质上,由HWVF和LF组成的这两个虚拟化抽象层使得虚拟化软件能够根据特定的软件应用要求,来将各种硬件功能和本地功能的集合灵活地分配给物理功能和虚拟功能,其中不同的软件应用可以具有被分配给其物理功能和虚拟功能的不同的硬件功能集合。这提供了大量的高效性、可缩放性和灵活性。
图3示出了根据本发明的一个实施例的RVU及其相关联的软件驱动程序的详细的图。每个RVU PCI设备包含一个PCIe SR-IOV物理功能。参见例如PF0 301、PF1 302和PF2303。对PFn的任何引用是指在第n个RVU PCI设备中的物理功能。每个PF可以被分配一定数目的功能块本地功能(LF),以在PF内提供不同的特征。例如,PF0 301被指定为管理PF并且包括RVUM AF、NIX AF、CPT AF、NPA AF、SSO AF、NPC AF、SSOW AF、NDC(0..2)AF以及TIM AF。PF1可以具有其自己的LF集合。在该示例中,PF1 302包括NIX LF、NPA LF、VF0之下的NIX LF和NPA LF以及VF1之下的NIX LF和NPA LF。同样地,PF2 302具有包括其NIX LF的VF0、NPALF、十六个SSO组LF(插槽0-15)、八个CPT LF(插槽0-7)、十六个SSOW工作插槽LF(插槽0-15)以及八个TIM LF(插槽0-7)。事实上,为了增强的灵活性,每个RVU PF可以具有多个相关联的PCIe SR-IOV虚拟功能(VF)。每个VF可以被分配一定数目的功能块LF,以在VF内提供不同的特征。
管理功能(AF)寄存器和中断是PF寄存器和中断的子集。AF寄存器提供RVU并且管理RVU功能块。RVU具有单个的、通用的AF寄存器集合。通常,管理软件通过PF0访问AF寄存器。在这样的配置中,针对PF1至PF15的PF驱动程序代表PF软件请求对AF寄存器的管理软件访问。它们不一定直接访问AF寄存器。通常,管理软件304负责提供每个RVU SR-IOV功能的功能性。通常,管理软件304还可以负责访问AF寄存器和处置AF中断。
如上所述,每个RVU功能块包含表示硬件资源集合的一定数目的本地功能(LF),例如,指令队列、分组队列、存储器池等。这些LF可以被分配给任何RVU PF或VF。LF提供相同的接口和功能性,而不管其被映射到物理功能还是虚拟功能。例如,NIX LF可以在PF或VF内提供一百万个发送/接收队列。管理软件304可以将来自不同RVU功能块的LF的组合分配给相同的PF或VF,使得单个PCIe功能提供多个RVU功能块的能力。这使得单个PF/VF软件驱动程序能够容易地与多个功能块交互。例如,管理程序(Hypervisor)PF驱动程序305能够与PF1302中的NIX和NPA LF直接交互。类似地,客户端OS VF驱动程序306能够与PF1 302的VF0中的NIX和NPA LF直接交互,并且ODP应用308与PF2 303的VF0中的NIX、NPA、CPT、TIM、SSO和SSOW LF交互。对于一些RVU功能块(例如,SSO 207、CPT 209和TIM 208),软件能够将来自相同功能块的多个LF(例如,多达256)分配给个体PF或VF,例如,以在单个PF/VF中提供多个CPT队列或TIM环。
当来自相同块的多个LF被分配给相同的PF或VF时,每个LF被分配给该PF或VF内的唯一的插槽。由单个LF表示的特定资源取决于功能块。对于每种RVU功能块类型,在将LF分配给PF/VF时,LF应当被分配给从零开始的连续插槽。例如,如果相同类型的四个LF被分配给PF/VF,则它们应当被分配给插槽0-3。
在一个实施例中,RVU具有五个不同类别的功能块。首先,仅供AF的无插槽块经由AF被访问。它们不具有可以被映射到PF/VF的任何LF,并且所有寄存器都驻留在AF中。接着,实用(utility)块具有多插槽本地功能,这些多插槽本地功能被静态地提供给每个RVU PF和VF。每个RVU PF和VF包含被分配给LMT插槽0-255的256个LMT LF。软件不需要提供这些LF。在单插槽块(例如,NIX和NPA)的情况下,LF可以表示硬件资源的可配置群。例如,单个NIX LF能够支持多达一百万个发送队列。对于多插槽块(例如,CPT 209、SSO 207、TIM208),每个LF通常表示最小的可配置单元。例如,CPT LF支持一个单个指令队列。块的多插槽性质允许多个队列、环等聚集到单个PF/VF中。
在一个实施例中,RVU主(RVUM)单元是第五类别的功能块,该第五类别的功能块提供所有RVU PCI设备的全局提供,并且管理PCI配置空间,包括MSI-X寄存器的处置、功能级别重置等。RVUM包含256个硬件虚拟功能(HWVF),其涵盖支持多达跨十六个RVU设备的256个VF所必须的硬件资源。软件通过将0-128个之间的HWVF分配给每个PF,来将VF提供给十六个PF中的每个PF。RVUM具有区分的PF和VF寄存器,而不是具有通用的LF寄存器。
在一个实施例中,大型原子存储单元(LMT)使得处理器核210-212能够发起对RVU功能块的大型原子存储。LMT是实用块的示例。LMT将256个LF自动地提供给每个RVU PF和VF。这确保了PF/VF驱动程序305-307在其地址空间内总是具有一定数目的LMT区域供用户进行LMTST操作。每个LF都包含用以支持对RVU功能块的多达128字节的大型原子存储操作的寄存器。它们可以被用来使指令进入CPT队列,或将一个或多个分组描述符提交给NIX205进行传输。
图4示出了示例PCIe功能布局。RVU创建并管理多达十六个PF。每个RVU设备属于分离的PCIe总线,并且每个总线包含在PCI功能0处的SR-IOV物理功能,以及在PCI功能1-255中的多达255个SR-IOV虚拟功能。每个PF可以经由配置寄存器RVU_PRIV_PF(x)_CFG[ENA]可选地被启用或禁用。当被禁用时,用于物理功能及其相关联的PCI设备的PCI配置空间是不可访问的。当PF被启用时,它可以可选地访问AF寄存器和中断,如由RVU_PRIV_PF(x)_CFG[AF_ENA]所确定的。例如,PF0能够访问AF寄存器,而PF2不能够访问AF寄存器。在该图中,PF1被禁用,因此,PF1和AF寄存器之间的路径被显示为虚线,以指示:如果PF1被启用,则它可以可选地访问AF寄存器。
在备选实施例中,每个RVU设备可以跨越多个连续的PCIe总线来支持附加的SR-IOV虚拟功能。在该场景中,第一PCIe总线包含在PCI功能0处的SR-IOV物理功能,以及在PCI功能1-255处的多达255个SR-IOV虚拟功能,并且其他PCIe总线包含与第一总线上的SR-IOV物理功能相关联的附加的SR-IOV虚拟功能。
在一些应用中,对于LF到LF的硬件通信,要求在不同功能块中的两个LF之间的硬件级别的通信。例如,网络接口块中的LF可以发起请求,以释放和指派去往/来自缓冲区指派器块的LF中的池的缓冲区。对于在源块中发起通信的每个LF,管理软件将LF分配在目的地块中。在一个实施例中,软件将PF_FUNC和可选的插槽分配在目的地块中,其映射到目的地块中的LF。在一些用例中,发起LF和目的地LF可以属于相同的PF_FUNC(即,由相同的PF或VF驱动程序控制)。在其他用例中,PF_FUNC将是不同的,这允许由不同驱动程序控制的、LF之间的硬件级别的通信。
对于交叉套接字的LF到LF的硬件通信,在一些应用中,要求在来自不同套接字中的、并且因此在不同的RVU之下的相同功能块的两个LF之间的硬件级别的通信。例如,一个套接字中的缓冲区指派器块可以释放和指派去往/来自另一套接字的缓冲区指派器LF中的池的缓冲区。对于在源套接字的功能块中发起通信的每个LF,管理软件将来自相同功能块的LF分配在目的地套接字中。在一个实施例中,软件将PF_FUNC和可选的插槽分配在目的地套接字中,其映射到目的地套接字中的功能块的LF。如果在目的地套接字中的所选择的LF具有多个硬件资源(例如,多个缓冲区池),则来自源套接字的通信消息可能需要以目的地LF内的特定资源为目标。在一个实施例中,两个套接字中的LF具有相同数目的硬件资源。管理软件将一个套接字中的每个资源选定为“本地”或“远程”,并且选定与另一套接字中的对应的编号相同的资源相反的指定。换言之,一个套接字中的每个远程资源都指向另一套接字中对应的编号相同的本地资源,反之亦然。当一个套接字中的LF接收到对远程资源的请求时,它将该请求转发给另一套接字中的对应本地资源(例如,通过选定PF_FUNC、可选插槽和资源编号的消息)。在另一相似的实施例中,管理软件在每个套接字中选择一定范围的资源作为远程资源。此外,通过为每个远程资源选定目的地套接字编号,可以将交叉套接字通信延伸到三个或更多个套接字。备选地,软件将套接字编号分配给支持交叉套接字通信的每个资源。如果其被分配的套接字编号与其所属的套接字匹配,则该资源为本地资源,否则为远程资源。
在一个实施例中,每个PF_FUNC(PF或VF)具有一个或多个唯一的物理地址范围(例如,PCI BAR)。BAR通常被用来访问经存储器映射的I/O,特别是由硬件实现的控制和状态寄存器(CSR)。BAR还可以被用来访问存储器(例如,非I/O)。每个BAR的尺寸是二的幂并且通常是固定的。基地址自然地与尺寸对准,并且可以是固定的或可编程的。BAR的偏移位被限定为用于在BAR内选择特定地址/偏移的较低地址位。对于被分配给PF_FUNC的每个LF,软件经由PF_FUNC的一个或多个BAR访问LF的CSR。例如,每个PF_FUNC中的BAR被用来访问被分配给PF_FUNC的所有LF的CSR。BAR的偏移位的预限定的子集标识功能块。如果功能块是单插槽的,则其余的偏移位选择特定的LF CSR。如果功能块是多插槽的,则BAR的偏移位的第二预限定子集标识LF插槽,并且其余的偏移位选择特定的LF CSR。
对于提供对管理CSR的访问的每个PF,软件经由PF的一个或多个BAR访问AF CSR。例如,PF中的BAR(除了上述的LF BAR之外)可以被用来访问所有AF CSR。BAR的偏移位的预限定的子集标识功能块。其余的偏移位选择功能块中的特定AF CSR。
在一个实施例中,RVU PF提供三个可发现的PCIe BAR。BAR 0用于AF寄存器。BAR 2用于每个PF的寄存器。当LF被映射到PF时,BAR 2还用于RVU功能块的LF寄存器。BAR 4被AF-PF邮箱所使用。RVU VF提供两个可发现的BAR。BAR 2用于针对被映射到给定的VF的LF的RVU功能块寄存器、RVUM提供的VF-PF邮箱寄存器和MSIX寄存器以及LMT块的LMTLINE和LMTCANCEL地址区域。BAR 4被VF-PF邮箱所使用。每个BAR区域都被划分在RVU功能块之间。地址偏移指示相对于BAR内的RVU功能块区域的开始的地址偏移。
在一个实施例中,对于PF BAR 0地址,下面的PF BAR 0表图示了PF BAR 0针对每个RVU功能块都具有一个区域。针对给定的RVU功能块,PF BAR 0中的寄存器地址可以被计算为:
uint64_t rvu_af_reg_addr(uint64_t pf_bar0,RVU_BLOCK_ADDR_E block_type,uint64_t reg_offset){
RVU_AF_ADDR_S af_addr={[BLOCK]=block_type,[ADDR]=reg_offset};
return pf_bar0+af_addr;
}
其中pf_bar0是在PCIe发现期间被找出的值,block_type选择RVU功能块,并且偏移从表中被确定。
Figure BDA0002270380820000131
在一个实施例中,对于PF BAR 2地址,下面的表示出了每个PF/VF BAR 2针对每个RVU功能块都具有一个区域,其中针对每个多插槽块具有附加的每个插槽的区域。针对给定的RVU功能块,PF/VF BAR 2中的寄存器的地址可以被计算为:
uint64_t rvu_lf_reg_addr(uint64_t bar2_base,RVU_BLOCK_ADDR_E block_type,uint64_t slot,uint64_t offset){
RVU_FUNC_ADDR_S lf_addr={[BLOCK]=block_type,[LF_SLOT]=slot,
[ADDR]=offset};
return bar2_base+lf_addr;
}
其中bar2_base是在PCIe发现期间找出的PF/VF BAR 2值,block_type选择RVU功能块,插槽对于单插槽块(NPA和NIX)为零或者对于多插槽块(CPT、SSO、SSOW和TIM)为LF插槽编号,并且偏移从表中被确定。具有RVU_PF_BAR2或RVU_PFVF_BAR2的CSR类型的地址表的所有寄存器都使用该寻址方案。注意,大多数PF/VF BAR2寄存器被称为LF BAR2寄存器,因为当LF被映射到PF或VF时,LF呈现相同的BAR2寄存器集合。还应当注意,RVU功能块LF被分配给针对每个功能块的、从零开始的、连续的LF插槽编号。例如,当将八个SSO LF和四个SSOW LF分配给VF时,SSO LF被分配给SSO插槽0-7,并且SSOW LF被分配给SSOW插槽0-3。
Figure BDA0002270380820000141
对于DMA转换,如果地址转换被支持并启用,则管理软件针对每个PF_FUNC(PF或VF)配置并管理DMA地址转换表。针对DMA限定了两种类型的存储器。LF存储器是由相关联的PF或VF驱动程序管理的存储器;AF存储器是由管理软件管理的存储器。当硬件执行去往或来自LF存储器的DMA时,其使用被分配LF的PF_FUNC的转换表。当硬件执行去往或来自AF存储器的DMA时,其使用指定PF的转换表。一个实施例使用PF编号0的转换表。另一实施例利用软件选择要被每个功能块的AF所使用的PF或VF转换表。
对于中断,LF中的硬件资源可以生成被传递到相关联的PF_FUNC的中断。同样地,每个功能块中的共享AF资源可以生成被传递到指定PF的中断。此处假设标准的PCI MSI-X机制用于中断传递。其他传递机制也是可能的。管理软件为每个PF_FUNC提供MSI-X表(即,MSI-X向量的表)。在一个实施例中,管理软件指派用于存储MSI-X表的连续存储器空间,并且为每个PF_FUNC的MSI-X表分配空间的子集。不同PF_FUNC可以具有不同的MSI-X表尺寸。能够生成中断的每个LF具有限定的MSI-X向量集合。当管理软件将来自功能块的LF分配给PF_FUNC时,其还将LF中的每个向量分配给PF_FUNC的MSI-X表中的向量编号。例如,软件将LF中的所有向量(被编号为0至N)分配给PF_FUNC的MSI-X表中的连续范围的向量编号(X至X+N)。AF中断被传递给指定的PF。功能块可以具有通过所限定的MSI-X向量集合来生成中断的共享AF资源。对于生成AF中断的每个功能块,管理软件将每个AF向量分配给所指定的PF的MSI-X向量表中的向量编号。在一个实施例中,软件将功能块中的所有AF向量(被编号为0至N)分配给PF的MSI-X表中的连续范围的向量编号(X至X+N)。如果地址转换被支持并启用,则使用相关联的PF_FUNC的转换表来转换每个MSI-X消息的地址。
在一个实施例中,RVU实现标准PCIe MSI-X中断,但依赖于存储器中的备份存储库来存储MSI-X表(具有地址、数据和控制字段)和挂起命中阵列。在一个实施例中,中断从多个功能块被灵活地分配给属于多个虚拟和物理功能的不同的PCIe MSI-X中断向量。在管理软件指派并配置RVU MSI-X备份存储库后,PF和VF驱动程序可以使用标准PCIe MSI-X容量结构来发现MSI-X中断控制寄存器。管理软件指派LLC/DRAM存储器区域,以充当用于所有RVU PF和VF的MSI-X表的备份存储库。存储器区域是单个连续的区域,其中对于RVU支持的每个中断,具有一个16字节RVU MSI-X向量结构的空间。管理软件在PF和VF之间划分备份存储区域,如下面的RVU MSI-X表备份存储库所示。
Figure BDA0002270380820000161
区域的开始地址写入RVU_AF_MSIXTR_BASE,并且RVU_PRIV_PF(x)_MSIX_CFG寄存器将表的各部分分配给每个PF及其相关联的VF。管理软件确保被分配给不同PF/VF的MSI-X表区域不重叠。除了划分MSI-X备份表之外,管理软件还将针对不同功能块的中断向量映射到针对每个PF和VF的特定中断向量。下面的表示出了针对PF0的示例映射。
Figure BDA0002270380820000171
如表中所示,PF0 MSI-X向量包括:
由RVU_AF_INT_VEC_E列举的RVUM AF中断
由block_AF_INT_VEC_E列举的针对每个RVU功能块的AF中断
由RVU_PF_INT_VEC_E列举的RVUM PF中断
由block_PF_INT_VEC_E列举的针对被可选地分配给PF0的任何LF的RVU功能块LF中断。
所有AF中断都映射到PF0。RVUM AF中断(由RVU_AF_INT_VEC_E列举)具有从向量0开始的固定的映射。对于其余的RVU功能块AF中断,管理软件使用block_PRIV_AF_INT_CFG[MSIX_OFFSET]写入针对每个RVU功能块的初始向量。
此外,每个PF包含由RVU_PF_INT_VEC_E列举的RVU PF中断集合,这些中断使用RVU_PRIV_PF(x)_INT_CFG[MSIX_OFFSET]来映射。
最后,PF可以可选地具有被映射到PF的、一定数目的RVU功能块LF。如果任何LF被映射到PF,那么管理软件使用适当的寄存器将相关联的LF中断(由block_LF_INT_VEC_E列举)映射到特定的向量,适当的寄存器如下所示:
CPT_PRIV_LF(x)_INT_CFG[MSIX_OFFSET]
NIX_PRIV_LF(x)_INT_CFG[MSIX_OFFSET]
NPA_PRIV_LF(x)_INT_CFG[MSIX_OFFSET]
SSO_PRIV_LF(x)_HWGRP_INT_CFG[MSIX_OFFSET]
SSOW_PRIV_LF(x)_HWS_INT_CFG[MSIX_OFFSET]
TIM_PRIV_LF(x)_INT_CFG[MSIX_OFFSET]
PF将仅具有针对已经被分配给它的那些LF的LF中断,例如,如果没有NIX LF被分配给PF,那么PF MSI-X中断将不包括NIX_LF_INT_VEC_E中断。
下面的表示出了针对RVU PF 1-15的MSI-X向量映射的示例。
Figure BDA0002270380820000181
与PF0不同,其他PF不包括任何AF中断。如所示,PF1-15包括:
由RVU_PF_INT_VEC_E列举的RVUM PF中断
由block_LF_INT_VEC_E列举的针对被可选地分配给PF的任何LF的RVU功能块LF中断。
RVUM PF中断和RVU功能块LF中断的映射对于PF 1-15和对于PF0是相同的。
下面的表示出了针对RVU VF的示例MSI-X向量映射。如表中所示,针对每个RVU VF的中断包括:
由RVU_VF_INT_VEC_E列举的RVUM VF中断
由block_LF_INT_VEC_E列举的针对被可选地分配给VF的任何LF的RVU功能块LF中断
Figure BDA0002270380820000191
RVU-VF中断(由RVU_VF_INT_VEC_E列举)的向量映射由RVU_PRIV_HWVF(x)_INT_CFG[MSIX_OFFSET]来确定。针对被分配给VF的任何RVU功能块LF的LF中断的向量映射与针对被分配给PF的LF相同地被映射。注意,上面的示例具有被分配给VF的两个CPT LF,并且因此存在两个CPT LF中断向量集合。管理软件确保每个PF/VF中由不同RVU功能块使用的MSI-X向量的范围不重叠。

Claims (26)

1.一种在处理***中用于对物理功能和虚拟功能灵活地编程的方法,包括:
限定多个虚拟功能;
限定一个或多个物理功能;
将所述虚拟功能的集合灵活地编程为对应于所述物理功能中的至少一个物理功能;
限定对应于一个或多个功能块的多个硬件资源;
将所述硬件资源中的至少一个硬件资源灵活地编程为被分配给所述虚拟功能或所述物理功能中的一个或多个功能。
2.根据权利要求1所述的处理***,包括一个以上硬件资源和一个以上物理功能。
3.根据权利要求2所述的处理***,其中所述物理功能遵循PCIe标准,并且管理功能的寄存器通过一个或多个物理功能的PCIe BAR区域被访问。
4.根据权利要求3所述的处理***,其中软件灵活地选择一个或多个物理功能来访问管理功能的寄存器。
5.根据权利要求1所述的处理***,其中针对被分配给虚拟功能或物理功能的硬件资源而被执行的DMA操作使用:
所述虚拟功能或所述物理功能的地址转换表;和/或
指定的物理功能的地址转换表。
6.根据权利要求1所述的处理***,还包括将一个或多个管理功能分配给至少一个物理功能。
7.根据权利要求6所述的处理***,其中分配一个或多个管理功能包括软件对所述分配进行灵活地编程。
8.根据权利要求7所述的处理***,其中被分配给虚拟功能或物理功能的硬件资源的所述寄存器通过所述虚拟功能或所述物理功能的PCIe BAR区域被访问。
9.根据权利要求8所述的处理***,其中:
所述PCIe BAR区域中的地址位的子集标识提供所述硬件资源的所述功能块;和/或
所述PCIe BAR区域中的所述地址位的子集标识被分配给所述硬件资源的地址插槽。
10.根据权利要求1所述的处理***,其中所述物理功能和所述虚拟功能遵循PCIe标准。
11.根据权利要求10所述的处理***,还包括将来自一个或多个功能块的中断灵活地分配给属于多个虚拟功能和/或物理功能的不同的PCIe MSI-X中断向量。
12.根据权利要求1所述的处理***,其中对所述虚拟功能的集合进行灵活地编程包括:
限定一个或多个范围的连续的虚拟功能;
将每个范围的虚拟功能分配给一个物理功能。
13.根据权利要求1所述的处理***,其中所述硬件资源与所述一个或多个功能块相关联,所述一个或多个功能块包括以下中的一个或多个:
网络接口控制器;
网络池指派器单元;
调度、同步和排序单元;
计时器单元;
密码加速器单元;
压缩/解压缩引擎;
表达式匹配引擎;和/或
RAID加速器单元。
14.根据权利要求1所述的处理***,其中本地功能包括指令队列、分组或工作队列、计时器环和或存储器池。
15.一种半导体设备,包括:
用于处理数据的多个硬件资源;
资源虚拟化单元电路,所述资源虚拟化单元电路耦合到所述多个硬件资源,以用于将多个虚拟功能灵活地分配给一个或多个物理功能,并且以用于将多个所述硬件资源灵活地分配给多个所述虚拟功能和所述物理功能;
多个处理器,所述多个处理器耦合到所述资源虚拟化单元,以用于通过所述多个虚拟功能和物理功能利用被灵活地分配的虚拟化硬件资源来处理所述数据。
16.根据权利要求15所述的半导体设备,其中所述物理功能和所述虚拟功能遵循PCIe标准。
17.根据权利要求15所述的半导体设备,其中来自一个或多个块的中断被灵活地分配给属于多个虚拟功能和物理功能的不同的PCIe MSI-X中断向量。
18.根据权利要求17所述的半导体设备,其中所述硬件资源包括以下中的多个本地功能:
网络接口控制器;
网络池指派器单元;
调度、同步和排序单元;
计时器单元;
密码加速器单元;
压缩/解压缩引擎;
表达式匹配引擎;和/或
RAID加速器单元。
19.根据权利要求18所述的半导体设备,还包括耦合到所述多个处理器的存储器,其中所述存储器存储管理软件,所述管理软件将所述多个硬件虚拟功能灵活地分配给物理功能,并且将本地功能灵活地分配给所述物理功能和所述虚拟功能。
20.一种处理***,包括:
用于处理数据的多个硬件资源;
资源虚拟化单元电路,所述资源虚拟化单元电路耦合到所述多个硬件资源,所述资源虚拟化单元电路限定多个虚拟功能以及一个或多个物理功能,其中所述虚拟功能的集合被灵活地编程为对应于所述物理功能中的至少一个物理功能,并且所述硬件资源中的至少一个硬件资源被灵活地分配给所述虚拟功能或所述物理功能中的一个或多个功能;
多个处理器,所述多个处理器耦合到所述资源虚拟化单元,以用于通过所述物理功能利用被灵活地分配的虚拟化硬件资源来处理所述数据。
21.根据权利要求20所述的***,其中所述物理功能和所述虚拟功能遵循PCIe标准。
22.根据权利要求21所述的***,其中来自一个或多个功能块的中断被灵活地分配给属于多个虚拟功能和物理功能的不同的PCIe MSI-X中断向量。
23.根据权利要求22所述的***,其中所述硬件资源包括以下中的多个本地功能:
网络接口控制器;
网络池指派器单元;
调度、同步和排序单元;
计时器单元;和/或
密码加速器单元;
压缩/解压缩引擎;
表达式匹配引擎;和/或
RAID加速器单元。
24.根据权利要求23所述的***,还包括耦合到所述多个处理器的存储器,其中所述存储器存储管理软件,所述管理软件将所述多个硬件虚拟功能灵活地分配给物理功能,并且将本地功能灵活地分配给所述物理功能和所述虚拟功能。
25.一种处理***,包括:
多个半导体设备,每个半导体设备包括:
(a)用于处理数据的多个硬件资源;
(b)资源虚拟化单元电路,所述资源虚拟化单元电路耦合到所述多个硬件资源,以用于将多个虚拟功能灵活地分配给一个或多个物理功能,并且以用于将多个所述硬件资源灵活地分配给多个所述虚拟功能和所述物理功能;
(c)多个处理器,所述多个处理器耦合到所述资源虚拟化单元,以用于通过所述多个虚拟功能和物理功能利用被灵活地分配的虚拟化硬件资源来处理所述数据;
在第一设备中的第一硬件资源和第二设备中的第二硬件资源之间的灵活关联;其中
所述第一硬件资源将由硬件或软件发起的操作请求转发给所述第二硬件资源;
所述第二硬件资源执行针对从所述第一硬件资源接收的请求的所述操作。
26.根据权利要求25所述的处理***,其中:
当所述第一硬件资源将操作请求转发给所述第一硬件资源时,所述第一硬件资源请求响应;
在执行所述请求后,所述第二硬件资源将操作响应发送给所述第一硬件资源;
第一硬件资源向所述请求发起方用信号通知所述操作的完成。
CN201911102878.5A 2018-11-13 2019-11-12 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配 Active CN111176829B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/189,119 US20200150993A1 (en) 2018-11-13 2018-11-13 Flexible resource assignment to physical and virtual functions in a virtualized processing system
US16/189,119 2018-11-13

Publications (2)

Publication Number Publication Date
CN111176829A true CN111176829A (zh) 2020-05-19
CN111176829B CN111176829B (zh) 2023-07-14

Family

ID=70550543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911102878.5A Active CN111176829B (zh) 2018-11-13 2019-11-12 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配

Country Status (2)

Country Link
US (1) US20200150993A1 (zh)
CN (1) CN111176829B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584514A (zh) * 2020-11-30 2022-06-03 慧与发展有限责任合伙企业 用于促进活跃的交换机中的动态硬件资源分配的方法和***

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294715B2 (en) 2019-08-28 2022-04-05 Marvell Asia Pte, Ltd. System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries
US11409553B1 (en) 2019-09-26 2022-08-09 Marvell Asia Pte, Ltd. System and method for isolating work within a virtualized scheduler using tag-spaces
US20220263770A1 (en) * 2021-02-18 2022-08-18 Intel Corporation Application-to-application resource reservation schemes for precision networking

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060704A1 (en) * 2003-09-17 2005-03-17 International Business Machines Corporation Managing processing within computing environments including initiation of virtual machines
US20080288661A1 (en) * 2007-05-16 2008-11-20 Michael Galles Method and system to map virtual i/o devices and resources to a standard i/o bus
CN101452424A (zh) * 2007-12-03 2009-06-10 国际商业机器公司 用于管理输入/输出虚拟化的方法和数据处理***
US20120265916A1 (en) * 2011-04-12 2012-10-18 International Business Machines Corporation Dynamic allocation of a direct memory address window
US20120284448A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Executing virtual functions using memory-based data in a pci express sr-iov and mr-iov environment
CN104808971A (zh) * 2014-01-24 2015-07-29 北京三星通信技术研究有限公司 网络应用程序管理器、方法、装置和移动终端
CN106095563A (zh) * 2015-04-27 2016-11-09 阿尔特拉公司 灵活的物理功能和虚拟功能映射
US20160353367A1 (en) * 2015-06-01 2016-12-01 Huawei Technologies Co., Ltd. System and Method for Virtualized Functions in Control and Data Planes
CN106796529A (zh) * 2014-10-03 2017-05-31 华为技术有限公司 通过利用商品型PCI交换机在PCIe结构中的CPU上使用未经修改的PCIe设备驱动程序来使用PCIe设备资源的方法
US20170277573A1 (en) * 2016-03-23 2017-09-28 Unisys Corporation Multifunction option virtualization for single root i/o virtualization
CN107430570A (zh) * 2015-03-27 2017-12-01 英特尔公司 具有SR‑IOV和xHCI‑IOV的附加安全执行环境
CN108139937A (zh) * 2015-10-13 2018-06-08 华为技术有限公司 多根i/o虚拟化***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191864B1 (en) * 2015-11-12 2019-01-29 Amazon Technologies, Inc. Standardized interface for storage using an input/output (I/O) adapter device
CN108023757B (zh) * 2016-11-03 2020-04-28 华为技术有限公司 管理网络切片实例的方法、装置和***
US11003616B1 (en) * 2017-06-27 2021-05-11 Amazon Technologies, Inc Data transfer using point-to-point interconnect
US10564872B2 (en) * 2018-06-29 2020-02-18 Western Digital Technologies, Inc. System and method for dynamic allocation to a host of memory device controller memory resources

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060704A1 (en) * 2003-09-17 2005-03-17 International Business Machines Corporation Managing processing within computing environments including initiation of virtual machines
US20080288661A1 (en) * 2007-05-16 2008-11-20 Michael Galles Method and system to map virtual i/o devices and resources to a standard i/o bus
CN101452424A (zh) * 2007-12-03 2009-06-10 国际商业机器公司 用于管理输入/输出虚拟化的方法和数据处理***
US20120265916A1 (en) * 2011-04-12 2012-10-18 International Business Machines Corporation Dynamic allocation of a direct memory address window
US20120284448A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Executing virtual functions using memory-based data in a pci express sr-iov and mr-iov environment
CN104808971A (zh) * 2014-01-24 2015-07-29 北京三星通信技术研究有限公司 网络应用程序管理器、方法、装置和移动终端
CN106796529A (zh) * 2014-10-03 2017-05-31 华为技术有限公司 通过利用商品型PCI交换机在PCIe结构中的CPU上使用未经修改的PCIe设备驱动程序来使用PCIe设备资源的方法
CN107430570A (zh) * 2015-03-27 2017-12-01 英特尔公司 具有SR‑IOV和xHCI‑IOV的附加安全执行环境
CN106095563A (zh) * 2015-04-27 2016-11-09 阿尔特拉公司 灵活的物理功能和虚拟功能映射
US20160353367A1 (en) * 2015-06-01 2016-12-01 Huawei Technologies Co., Ltd. System and Method for Virtualized Functions in Control and Data Planes
CN108139937A (zh) * 2015-10-13 2018-06-08 华为技术有限公司 多根i/o虚拟化***
US20170277573A1 (en) * 2016-03-23 2017-09-28 Unisys Corporation Multifunction option virtualization for single root i/o virtualization

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
VINCENZO ERAMO 等: "An Approach for Service Function Chain Routing and Virtual Function Network Instance Migration in Network Function Virtualization Architectures", 《IEEE/ACM TRANSACTIONS ON NETWORKING》, vol. 25, no. 4, pages 2008 - 2025 *
李帅 等: "基于单根I/O虚拟化的密码设备中断频率优化方法", 《计算机应用研究》, vol. 36, no. 9, pages 2798 - 2802 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584514A (zh) * 2020-11-30 2022-06-03 慧与发展有限责任合伙企业 用于促进活跃的交换机中的动态硬件资源分配的方法和***

Also Published As

Publication number Publication date
CN111176829B (zh) 2023-07-14
US20200150993A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
CN111176829B (zh) 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配
US11768698B2 (en) Mechanism to dynamically allocate physical storage device resources in virtualized environments
US9858241B2 (en) System and method for supporting optimized buffer utilization for packet processing in a networking device
US10936535B2 (en) Providing remote, reliant and high performance PCI express device in cloud computing environments
US9606838B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US9081612B2 (en) Virtual machine control method and virtual machine
US10572290B2 (en) Method and apparatus for allocating a physical resource to a virtual machine
CN108293041B (zh) 分布式***、资源容器的分配方法、资源管理器及应用控制器
KR102309798B1 (ko) Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
US10275558B2 (en) Technologies for providing FPGA infrastructure-as-a-service computing capabilities
CN111880750A (zh) 磁盘读写资源的分配方法、装置、设备及存储介质
KR20210095690A (ko) 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체
KR20190108038A (ko) 가상 환경에서의 물리적 스토리지 장치 자원을 동적으로 할당하는 메커니즘
CN113296926B (zh) 一种资源分配方法、计算设备及存储介质
CN106598696B (zh) 一种虚拟机之间数据交互的方法及装置
CN111158911A (zh) 一种处理器配置方法、装置、处理器及网络设备
EP3066568B1 (en) System and method for supporting efficient packet processing model and optimized buffer utilization for packet processing in a network environment
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN114253704A (zh) 一种分配资源的方法及装置
KR101634672B1 (ko) 네트워크 인터페이스 가상화 장치, 방법 및 이를 실행하기 위한 컴퓨터 프로그램
TW201621675A (zh) 具應用程式資訊感知的資料處理方法以及系統
US9489327B2 (en) System and method for supporting an efficient packet processing model in a network environment
CN114217943A (zh) 一种通信支撑环境的初始化方法
CN116974736A (zh) 一种设备虚拟化方法及相关设备
US20160321118A1 (en) Communication system, methods and apparatus for inter-partition communication

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
TA01 Transfer of patent application right

Effective date of registration: 20210223

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Kayo fukuboku

Applicant before: Cavium, Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant