CN107977251B - 对在虚拟化系统中的共享寄存器的排他访问 - Google Patents
对在虚拟化系统中的共享寄存器的排他访问 Download PDFInfo
- Publication number
- CN107977251B CN107977251B CN201610919623.8A CN201610919623A CN107977251B CN 107977251 B CN107977251 B CN 107977251B CN 201610919623 A CN201610919623 A CN 201610919623A CN 107977251 B CN107977251 B CN 107977251B
- Authority
- CN
- China
- Prior art keywords
- virtual function
- processing unit
- graphics processing
- new virtual
- function
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 115
- 238000012545 processing Methods 0.000 claims description 38
- 230000004888 barrier function Effects 0.000 claims description 30
- 239000000872 buffer Substances 0.000 claims description 6
- 230000006854 communication Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims 1
- 230000007175 bidirectional communication Effects 0.000 abstract description 4
- 230000003863 physical function Effects 0.000 description 80
- 238000013507 mapping Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
用于请求新虚拟功能(VF)的初始化的请求从所述新VF被发送到物理功能。控制物理功能和所述新VF建立双向通信通道,所述双向通信通道开始并结束VF对配置空间中寄存器的排他访问。所述物理功能使用定时控制来监控到由所述新VF进行的排他寄存器访问在预先确定时间段内完成。所述新VF只被准予预先确定时间段的排他访问以完成它的初始化过程。如果所述排他访问时期超时,则所述控制物理功能可终止所述VF以防止GPU停转。
Description
背景
相关技术的描述
计算机资源的虚拟化允许在不同的虚拟机(VM)之间的主机系统的物理资源的共享,虚拟机是物理计算资源的软件抽象。主机系统将它的某个数量的物理资源分配到每个VM,使得每个VM能够使用所分配的资源来执行应用,包括操作系统(被称为“客户操作系统”)。虚拟化技术使系统管理员能够将物理资源移动到虚拟域内。例如,物理主机系统可包括物理设备(诸如图形卡、存储器存储设备或网络接口设备),其当被虚拟化时包括在主机系统上执行的每个VM的相应的虚拟功能(VF)。因此,VF提供用于在物理设备和虚拟机之间发送并接收数据的渠道。
附图简述
图1是根据一些实施方案的用于托管虚拟机和虚拟功能的系统的方框图。
图2是示出根据一些实施方案的主机系统的实施方案的方框图。
图3是示出根据一些实施方案的在虚拟功能之间的世界切换的图。
图4是示出根据一些实施方案的用于准予对GPU寄存器的排他访问以进行VF初始化的示例方法的流程图。
详细描述
图1-4示出技术,其用于准予对在输入/输出设备诸如GPU上的寄存器的访问,用于初始化新虚拟功能(VF)并防止已经初始化的VF被诊断为挂起的,从而避免已经初始化的VF的不必要的重置。在一些实施方案中,将用于请求新VF的初始化的请求从新VF发送到物理功能。控制物理功能和新VF建立使用获取-释放协议来开始并结束VF对GPU中的硬件寄存器的排他访问的双向通信通道。物理功能使用定时控制来监控由新VF进行的排他寄存器访问,并确保排他访问在预先确定时间段内完成。在排他访问的预先确定时间段期间,GPU寄存器基址范围打开以允许VF直接通过(即无需中介驱动器或寄存器管理器而进行访问)到达GPU寄存器。进入的新VF只被准予预先确定时间段的排他访问以完成它的初始化过程。如果排他访问时期超时,则控制物理功能有终止VF的选择,以便防止延长的GPU停转。在一些实施方案中,在新虚拟功能完成初始化之后,GPU调度器触发在以经完成初始化的所有已经活动的VF(例如,以前初始化的VF)之间的世界切换,使得每个VF被分配GPU时间以处理任何累积命令。允许以前初始化的VF处理累积命令并执行已经调度的计算任务帮助防止VF被标记为不活动的或挂起的,从而避免VF的不必要的重置。
图1是根据一些实施方案的用于托管虚拟机和虚拟功能的处理系统100的方框图。系统100包括在主机系统上的存储器104中配置的多个虚拟机(VM)102。与VM 102共享来自主机系统的物理设备的资源。资源可包括(例如)来自GPU 106的图形处理器资源、来自CPU的中央处理单元资源、来自存储器的存储器资源、来自网络接口控制器的网络接口资源等。VM 102使用资源对各种数据(例如,视频数据、图像数据、文本数据、音频数据、显示数据、外围设备数据等)执行操作。在一个实施方案中,主机系统包括在VM 102当中被分配并被共享的多个资源。
处理系统100还包括被配置在存储器104中并管理VM 102的实例的管理程序108。管理程序108也被称为虚拟化管理器或虚拟机管理器(VMM)。管理程序108控制在VM 102和各种物理硬件设备诸如GPU 106之间的交互作用。管理程序108包括用于管理硬件资源的软件组件和用于虚拟化或仿真物理设备以提供如在本文对每个虚拟机102进一步描述的虚拟设备(诸如虚拟磁盘、虚拟处理器、虚拟网络接口或虚拟GPU)的软件组件。在一个实施方案中,每个虚拟机102是物理计算机系统的抽象,并可包括操作系统(OS),诸如可分别被称为客户OS和客户应用的Microsoft和应用,其中术语“客户”指示它是存在于VM内的软件实体。
VM 102通常被例示,意味着为每个VM 102创建单独的实例。虽然示出两个虚拟机(例如,VM(1)和VM(2)),本领域中的普通技术人员将认识到,主机系统可支持任何数量N的虚拟机。如所示,管理程序108提供两个虚拟机VM(1)和VM(2),每个客户虚拟机102提供虚拟环境,其中客户系统软件存在并操作。客户系统软件包括一般在客户OS的控制下的应用软件和VF设备驱动器110。
在各种虚拟化环境中,单根输入/输出虚拟化(SR-IOV)规范允许单个快速外部部件互连(PCIe)设备(例如,GPU 106)表现为多个单独的PCIe设备。具有SR-IOV能力的物理PCIe设备(诸如GPU106)可配置成表现为多个功能。如在本文使用的术语“功能”指具有由PCIe总线控制的访问的设备。SR-IOV使用物理功能(PF)和虚拟功能(VF)的概念来操作,其中物理功能是与PCIe设备相关的全特征功能。虚拟功能(VF)是在支持SR-IOV的PCIe设备上的功能。VF与PF相关并表示PCIe设备的虚拟化实例。每个VF具有它自己的PCI配置空间。此外,每个VF还与PF和其它VF共享在PCIe设备上的一个或多个物理资源。
在图1的示例实施方案中,SR-IOV规范实现图形处理单元106在虚拟机102当中的共享。GPU 106是具有物理功能112的PCIe设备。虚拟功能114从图形处理单元106的物理功能112得到,从而将单个物理设备(例如,图形处理单元106)映射到与客户虚拟机102共享的多个虚拟功能114。在一些实施方案中,管理程序108将虚拟功能114映射(例如,分配)到客户虚拟机102。在另一实施方案中,管理程序108授权虚拟功能114到GPU 106的PF驱动器116的分配。例如,VF(1)114被映射到VM(1)102,VF(2)114被映射到VM(2)102,依此类推。虚拟功能114以与物理GPU对操作系统出现的相同的方式对它们各自的虚拟机102的OS出现,且因此虚拟机102使用虚拟功能114,好像它们是硬件设备一样。
使用安装在虚拟机102的客户OS中的VF驱动器110来提供对虚拟功能114的驱动器支持。如在本文使用的,设备驱动器是基于计算机程序的组件,其配置机器并充当在物理设备和使用该设备的应用或操作系统之间的转换器。设备驱动器通常接受一般高级命令并将它们分成一系列低级、设备特定命令,如由正被驱动的设备所需的。VF驱动器110履行与典型设备驱动器相同的角色,除了它配置主机系统以提供在提供硬件仿真的虚拟功能114和在VM 102上运行的客户OS/应用软件之间的转换以外。每个VF驱动器110包括用于与GPU106的相应VF 114直接交互作用的一组指令。
相反,经由在管理程序108处实现的PF驱动器116来联系物理功能112。PF驱动器116管理GPU 106的功能,并负责配置共享的资源。PF驱动器116包含所有传统驱动器功能以提供对GPU 106的资源的访问。此外,PF驱动器116还可被调用以执行影响整个GPU106设备的操作。全局地影响所有VM 102的任何设备特定操作只从PF驱动器116被接受。为了确保这个排他性,在VM 102中的驱动器(例如,VF驱动器110)需要将控制操作传递到PF驱动器116。通常,VF 114只具有发送并接收数据的能力和执行重置自己的能力。每个单独的VF 114能够只重置自己而不是整个GPU 106。在另一实施方案中,VF 114不被允许重置自己。而是,PF112或PF驱动器116代表VF 114执行VF重置。在上面提到的能力之外,VF驱动器110与PF驱动器116通信以执行它的操作。
GPU 106还包括存储GPU 106的硬件配置数据的硬件寄存器。硬件寄存器中的一些通过配置空间118被访问,而其它寄存器从GPU硬件引擎被访问。硬件寄存器的全集合是物理功能112可访问的。相反,VF 114每个只实现PCIe配置空间寄存器的子集。GPU 106的硬件寄存器不能直接由VM 102访问。而是,VM 102经由VF 114访问配置空间118。在一个实施方案中,VF驱动器110通过标准基址寄存器(BAR)120访问配置空间118。BAR 120的内容跨每个VF 114以及物理功能112被复制。每个VF 114具有用于映射到在GPU 106的配置空间118中的硬件寄存器的存储器空间。VF驱动器110在寄存器上操作以实现它的功能,且VF 114表现为实际PCI设备。VF驱动器110绕过管理程序108,提供VM 102对GPU 106的VF 114的直接访问。在GPU 106处的VF 114从VF驱动器110接收I/O。因此,每个VF 114充当GPU 106的独立虚拟端口,并使用硬件寄存器来实现配置空间118的有限子集。
在一个实施方案中,硬件寄存器中的一些对每个VF 114被例示,而一些其它硬件寄存器由所有VF 114共享。在多个VF当中通过使用上下文保存和恢复来共享硬件寄存器中的一些以在每个功能之间切换并运行每个功能。因此,为了新VF的初始化,需要对配置空间118中的硬件寄存器的排他访问。如在本文使用的,“排他访问”指在VF 114的初始化期间的时间由仅仅一个虚拟功能可访问的GPU寄存器。当虚拟功能被初始化时,所有其它虚拟功能被暂停或否则置于中止状态中,其中虚拟功能及其相关虚拟机不消耗GPU 106资源。当暂停或中止时,VF/VM的当前状态和上下文被保存到存储器文件。在一些实施方案中,对硬件寄存器的排他访问允许新虚拟功能通过暂停其它运行功能来开始初始化。在创建之后,VF能够被直接分配I/O域。管理程序108通过将VF 114的配置空间寄存器映射到由管理程序呈递到VM的配置空间来将VF 114分配到VM 102。这个能力使VF 114能够共享GPU 106并执行I/O操作而没有CPU和管理程序软件开销。
图2是示出根据一些实施方案的用于托管虚拟机和虚拟功能的处理系统200的图。系统200包括在主机系统上的存储器204中配置的多个虚拟机(VM)202。与VM 202共享来自主机系统的物理设备(例如,GPU 206)的资源。处理系统200还包括被配置在存储器204中并管理VM 202的实例的管理程序208。管理程序208控制在VM202和各种物理硬件设备诸如GPU206之间的交互作用。虽然示出两个虚拟机(例如,VM(1)和VM(2)),本领域中的普通技术人员将认识到,主机系统可支持任何数量N的虚拟机。如所示,管理程序208提供两个虚拟机VM(1)和VM(2),每个客户VM 202提供虚拟环境,其中客户系统软件存在并操作。客户系统软件包括一般在VM 202上运行的客户OS的控制下的应用软件和VF设备驱动器210。
GPU 206是具有物理功能212的PCIe设备。虚拟功能214从图形处理单元206的物理功能212得到,从而将单个物理设备(例如,图形处理单元206)映射到与客户虚拟机202共享的多个虚拟功能214。在一些实施方案中,管理程序208将虚拟功能114映射(例如,分配)到客户虚拟机202。例如,VF(1)214被映射到VM(1)202,VF(2)214被映射到VM(2)202,依此类推。虚拟功能214以与物理GPU对操作系统出现的相同的方式对它们各自的虚拟机202的OS出现,且因此虚拟机202使用虚拟功能214,好像它们是硬件设备一样。
使用安装在虚拟机202的客户OS中的VF驱动器210来提供对虚拟功能214的驱动器支持。VF驱动器210履行与典型设备驱动器相同的角色,除了它配置主机系统以提供在提供硬件仿真的虚拟功能214和在VM 202上运行的客户OS应用软件之间的转换以外。每个VF驱动器210包括用于与GPU 206的相应VF 214直接交互作用的一组指令。
相反,在一些实施方案中,经由在管理程序208处实现的PF驱动器216来联系物理功能212。在其它实施方案中,PF驱动器216在特许的主机VM处实现并由管理程序208运行。PF驱动器216管理GPU 206的功能,并负责配置共享的资源。PF驱动器216包含所有传统驱动器功能以提供对GPU 206的资源的访问。此外,PF驱动器216还可被调用以执行影响整个GPU206设备的操作。全局地影响所有VM 202的任何设备特定操作应只从PF驱动器216被接受。为了实现此,在VM 202中的驱动器(例如,VF驱动器210)必须将控制操作传递到PF驱动器216。通常,VF 214只具有发送并接收数据的能力和执行重置的能力。重置只影响每个单独的VF 214而不是整个GPU 206。在另一实施方案中,VF 214不被允许重置自己。而是,PF 212或PF驱动器216代表VF 214执行VF重置。对于在VF重置或发送和接收数据之外的行动,VF驱动器210需要与PF驱动器216通信。
GPU 206还包括存储GPU 206的硬件配置数据的硬件寄存器。硬件寄存器中的一些通过配置空间218被访问,而其它寄存器从GPU硬件引擎被访问。PCIe配置空间寄存器的全集合是物理功能212可访问的。相反,VF 214每个只实现PCIe配置空间寄存器的子集。GPU206的硬件寄存器不能直接由VM 202访问。而是,VM 202经由VF214访问配置空间218。在一个实施方案中,VF驱动器210通过基址寄存器(BAR)220访问配置空间218。BAR 220的内容跨每个VF 214以及物理功能212被复制。每个VF 214具有用于映射到在GPU 206的配置空间218中的硬件寄存器的存储器空间。VF驱动器210在寄存器上操作以实现它的功能,且VF214表现为实际PCI设备。VF驱动器210绕过管理程序208,提供VM 202对GPU 206的VF 214的直接访问。在GPU 206处的VF 214从VF驱动器210接收I/O。因此,每个VF 214充当GPU 206的独立虚拟端口,并使用硬件寄存器来实现配置空间218的有限子集。
在一个实施方案中,硬件寄存器中的一些对每个VF 214被例示,而一些其它硬件寄存器由所有VF 214共享。在多个VF当中通过使用上下文保存和恢复来共享硬件寄存器中的一些以在每个功能之间切换并运行每个功能。因此,为了新VF的初始化,需要对配置空间218中的硬件寄存器的排他访问。在一些实施方案中,对硬件寄存器的排他访问允许新虚拟功能通过暂停其它运行功能来开始初始化。
如图2所示,VM(N)202的VF驱动器210通过VF(N)214将用于请求新虚拟功能(即,VF(N))的初始化的请求发送到物理功能212。控制物理功能212和VF(N)214建立使用获取-释放协议来开始并结束VF(N)对GPU 206中的硬件寄存器的排他访问的双向通信通道。获取-释放协议包括获取操作,使得控制物理功能212和VF(N)不允许存储器操作在它之前进行。获取操作保证只有VF(N)214能够更新寄存器。获取-释放协议还包括释放操作,使得控制物理功能212和VF(N)不允许在释放之前的存储器操作经过它而被延迟。因此,释放操作保证在访问被释放用于使不同的VF或PF使用之前寄存器被更新。在一些实施方案中,获取操作是将与VF/VM相关的值加载到寄存器内的加载。类似地,释放操作是将寄存器中的值存储到存储器的存储,维持寄存器可用于被获取。物理功能212使用时钟(CLK)222或其它类似的定时控制来监控到由VF(N)进行的排他寄存器访问在预先确定时间段内完成。在排他访问的预先确定时间段期间,GPU寄存器基址范围打开以允许VF(N)直接通过到达GPU寄存器。
在排他访问时间段期间,对访问GPU寄存器BAR 220的许可由中止当前正在GPU206上运行的VF的PF 212实现,使得GPU 206是闲置的,用于允许初始化VF执行它的排他访问。对硬件寄存器的排他访问允许新虚拟功能在其它运行的功能的暂停期间开始初始化。在创建之后,VF被直接分配I/O域。管理程序208通过将VF 214的配置空间寄存器映射到由管理程序呈递到VM的配置空间来将VF214分配到VM 202。在一些实施方案中,物理功能212通过确保来自VM 202的进入的请求很好地表现来作为安全措施操作。例如,如果新VF/VM开始初始化而不请求许可,则物理功能212或PF驱动器216禁用GPU寄存器访问能力。
在一些实施方案中,进入的新VF(例如,VF(N))只被准予预先确定时间段来完成它的初始化过程。如果排他访问时期超时,则控制物理功能212有终止VF的选择,诸如以防止延长的GPU停转。如果CLK 222超时,则PF 212或PF驱动器216通过重置VF(诸如通过发出功能级重置(FLR)命令)来终止排他访问。
图3是示出根据一些实施方案的在虚拟功能之间的世界切换的图。图3示出类似于前面在图1-2中所述的基于硬件的VM系统300。系统300在包括在主机系统上的存储器304中配置的多个VM 302。与VM 302共享来自主机系统的物理设备(例如,GPU 306)的资源。系统300还包括被配置在存储器304中并管理VM 302的实例的管理程序308。管理程序308控制在VM 302和各种物理硬件设备诸如GPU306之间的交互作用。虽然示出两个虚拟机(例如,VM(1)和VM(2)),本领域中的普通技术人员将认识到,主机系统支持任何数量N的虚拟机。如所示,管理程序308提供两个虚拟机VM(1)和VM(2),每个客户VM 302提供虚拟环境,其中客户系统软件存在并操作。客户系统软件包括一般在VM 302上运行的客户OS的控制下的应用软件和VF设备驱动器310。
GPU 306是具有物理功能312的PCIe设备。虚拟功能314从图形处理单元306的物理功能312得到,从而将单个物理设备(例如,图形处理单元306)映射到与客户虚拟机302共享的多个虚拟功能314。在一些实施方案中,管理程序308将虚拟功能314映射(例如,分配)到客户虚拟机302。在另一实施方案中,管理程序308授权虚拟功能314到GPU 306的PF驱动器316的分配。例如,VF(1)314被映射到VM(1)302,VF(2)314被映射到VM(2)302,依此类推。虚拟功能314以与物理GPU对操作系统出现的相同的方式对它们各自的虚拟机302的OS出现,且因此虚拟机302使用虚拟功能314,好像它们是硬件设备一样。
使用安装在虚拟机302的客户OS中的VF驱动器310来提供对虚拟功能314的驱动器支持。VF驱动器310履行与典型设备驱动器相同的角色,除了它配置主机系统以提供在提供硬件仿真的虚拟功能314和在VM 302上运行的客户OS/应用软件之间的转换以外。每个VF驱动器310包括用于与GPU 306的相应VF 314直接交互作用的一组指令。
相反,在一些实施方案中,经由在管理程序308处实现的PF驱动器316来联系物理功能312。在其它实施方案中,PF驱动器316在特许的主机VM处实现并由管理程序308运行。PF驱动器316管理GPU 306的功能,并负责配置共享的资源。PF驱动器316包含所有传统驱动器功能以提供对GPU 306的资源的访问。此外,PF驱动器316还能够被调用以执行影响整个GPU 306设备的操作。全局地影响所有VM 302的任何设备特定操作应只从PF驱动器316被接受。为了实现此,在VM 302中的驱动器(例如,VF驱动器310)必须将控制操作传递到PF驱动器316。通常,VF 314只具有发送并接收数据的能力和执行重置的能力。重置只影响每个单独的VF 314而不是整个GPU 306。在另一实施方案中,VF 314不被允许重置自己。而是,PF312或PF驱动器316代表VF 314执行VF重置。对于在VF重置或发送和接收数据之外的行动,VF驱动器310需要与PF驱动器316通信。
GPU调度器318在GPU 306中配置成管理GPU资源的分配以执行虚拟功能314的操作。在一个实施方案中,GPU PF驱动器316通过在VM 302之间的时间分片来管理并供给GPU306的GPU带宽。在另一实施方案中,GPU调度器318管理并供给GPU带宽。在如在本文讨论的SR-IOV虚拟化中,VF 314从GPU调度器318得到它们的时间片。然而,如关于图1-2讨论的,当新VF(例如,VF(N))请求对GPU寄存器的排他访问用于初始化时,其它VF-VM将不得到任何GPU时间来处理在它们各自的命令缓冲器320中的任何累积命令。相应地,当GPU调度器318检测到GPU 306正花费被允许数量的时间来执行特定的任务时,VM 302的客户OS将GPU过早地考虑为挂起的。VM 302的客户OS去VF驱动器310处以在开始超时检测和恢复(TDR)循环之前查询最新的屏障指令。
如图3所示,来自VM(1)302的客户OS的返回最新完成的屏障指令(例如,使用querycurrentfence命令)的调用将返回FENCE ID 1,其不同于最后提交的屏障指令FENCEID 2。类似地,来自VM(2)302的客户OS的返回它的最新完成的屏障指令的调用将返回FENCEID3,其不同于最后提交的屏障指令FENCE ID 4。这表示VF 314没有完成执行在命令缓冲器320内的命令以到达最新提交的屏障指令。然而,这不是由于GPU 306的挂起,而替代地是由于GPU调度器318在初始化新虚拟功能时没有分配时间片以处理累积命令。
在一个实施方案中,当系统300初始化新虚拟功能且一个或多个已经初始化的VF314具有悬而未决的屏障指令(其中最后提交的屏障的标识(ID)不匹配它的最后完成的屏障指令)时,VF驱动器310将分配额外的时间段以查看在命令缓冲器320内的累积命令是否将在新虚拟功能完成初始化之后被执行。如果VF被分配GPU时间片并完成执行累积命令,使得最后提交的屏障指令的ID匹配它的最后完成的屏障指令,则对那个VF将避免不必要的TDR循环。然而,如果额外的时间段结束且最后提交的屏障指令的ID仍不匹配它的最后完成的屏障指令,则GPU 306和/或VF 314被考虑为挂起的。此外,VF驱动器310将适当地开始TDR循环以重置VF。
在一些实施方案中,如果系统300具有待初始化的多于一个新VF,即使额外的时间段在TDR之前被分配,VF 314不适当地被识别为挂起的。如果VF驱动器310不能在所分配的时间段到期之前处理累积命令,VM 302的客户OS将最终触发TDR循环。通过给已经初始化的VF执行它的计算任务的GPU时间来避免不必要的TDR循环。例如,在新虚拟功能完成初始化之后,GPU调度器318触发在已经完成初始化的所有已经活动的VF 314之间的世界切换,使得每个VF314被分配GPU时间以在将最后完成的屏障指令ID报告回到客户OS之前处理任何累积命令。在世界切换期间,管理程序308使用PF配置空间寄存器来将GPU从一个VF(例如,VF(1))切换到另一VF(例如,VF(2))。
虽然本文讨论的实施方案主要在GPU的上下文中被描述,本领域中的普通技术人员将认识到,在不偏离本公开的范围的情况下,本文所述的原理通常可应用于计算系统的任何物理设备。
图4是示出根据一些实施方案的用于准予对GPU寄存器的排他访问以进行VF初始化的示例方法400的流程图。
在块402,在客户虚拟机的虚拟功能和图形处理单元(GPU)上的物理功能之间建立通信通道。在诸如关于图2所述的一个实施方案中,VM(N)202的VF驱动器110通过VF(N)214将用于请求新虚拟功能(即,VF(N))的初始化的请求发送到物理功能212。控制物理功能212和VF(N)214建立使用获取-释放协议来开始并结束VF(N)对配置空间218中寄存器的排他访问的双向通信通道。
在块404,在VF的初始化期间准予VF对一组共享的GPU寄存器的排他访问。在诸如关于图2所述的一个实施方案中,物理功能212使用时钟(CLK)222或其它类似的定时控制来监控到由VF(N)进行的排他寄存器访问在预先确定的时间段内完成。在排他访问时间段期间,用于访问GPU寄存器BAR 220的许可由中止当前正在GPU206上运行的VF的PF 212实现,使得GPU 206是闲置的,用于允许初始化VF执行它的排他访问。对硬件寄存器的排他访问允许新虚拟功能在其它运行的功能的暂停期间开始初始化。在创建之后,VF被直接分配I/O域。管理程序208通过将VF 214的配置空间寄存器映射到由管理程序呈递到VM的配置空间来将VF 214分配到VM 202。在一些实施方案中,物理功能212通过确保来自VM 202的进入的请求很好地表现来作为安全措施操作。例如,如果新VF/VM开始初始化而不请求许可,则物理功能212或PF驱动器216禁用GPU寄存器访问能力。
进入的新VF(例如,VF(N))只被准予预先确定时间段来完成它的初始化过程。如果排他访问时期超时,则控制物理功能212有终止VF的选择,诸如以防止延长的GPU停转。例如,PF 212或PF驱动器216通过重置VF(诸如通过发出功能级重置(FLR)命令)来终止排他访问。
在诸如关于图3所述的一些可选的实施方案中,额外的方法包括VM 302的客户OS去VF驱动器310处以在开始超时检测和恢复(TDR)循环之前查询最新的屏障指令。当系统300初始化新虚拟功能且已经初始化的VF 314中的一个或多个具有悬而未决的屏障指令(其中最后提交的屏障的标识(ID)不匹配它的最后完成的屏障指令)时,VF驱动器310将延迟在TDR之前将最后完成的屏障指令报告给客户OS以查看在命令缓冲器320内的累积命令是否将在新虚拟功能完成初始化之后被执行。如果VF被分配GPU时间片并完成执行累积命令,使得最后提交的屏障指令的ID匹配它的最后完成的屏障指令,则对那个VF将避免不必要的TDR循环。然而,如果额外的时间段结束且最后提交的屏障指令的ID仍不匹配它的最后完成的屏障指令,则GPU 306和/或VF 314被考虑为挂起的,并且VF驱动器310将适当地开始TDR循环以重置VF。
或者,如果系统300具有待初始化的多于一个新VF,即使额外的时间段在TDR之前被分配,VF 314不适当地被识别为挂起的。如果VF驱动器310不能在所分配的时间段到期之前处理累积命令,VM302的客户OS将最终触发TDR循环。通过给已经初始化的VF执行它的计算任务的GPU时间来避免不必要的TDR循环。例如,在新虚拟功能完成初始化之后,GPU调度器318触发在已经完成初始化的所有已经活动的VF 314之间的世界切换,使得每个VF 314被分配GPU时间以在将最后完成的屏障指令ID报告回到客户OS之前处理任何累积命令。在世界切换期间,管理程序308使用PF配置空间寄存器来将GPU从一个VF(例如,VF(1))切换到另一VF(例如,VF(2))。
在一些实施方案中,上面所述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括在非暂时性计算机可读存储介质上存储或否则有形地体现的一组或多组可执行指令。软件包括指令和某些数据,其当由一个或多个处理器执行时操纵一个或多个处理器来执行上面所述的技术的一个或多个方面。非暂时性计算机可读存储介质可包括(例如)磁盘或光盘存储设备、固态存储设备诸如闪存、高速缓冲存储器、随机存取存储器(RAM)或一个或多个其它非易失性存储器设备等。存储在非暂时性计算机可读存储介质上的可执行指令可以源代码、汇编语言代码、对象代码或由一个或多个处理器解释或以其它方式可执行的其它指令格式。
注意,不是上面在一般描述中所述的所有活动或要素都是需要的,特定的活动或设备的一部分可能不是需要的,以及除了所述的那些以外,一个或多个另外的活动也可被执行或要素被包括。仍然进一步地,活动被列出的顺序不一定是它们被执行的顺序。此外,参考特定的实施方案描述了概念。然而,本领域中的普通技术人员将认识到,在不偏离如在下面的权利要求中阐述的本公开的范围的情况下,可做出各种修改和改变。相应地,说明书和附图在说明性而不是限制性的意义上被看待,且所有这样的修改都意欲包括在本公开的范围内。
上面关于特定的实施方案描述了益处、其它优点和对问题的解决方案。然而,益处、优点、对问题的解决方案和可使任何益处、优点或解决方案出现或变得更突出的任何特征不应被解释为任何或所有权利要求的关键、所需或基本特征。而且,上面公开的特定实施方案仅仅是说明性的,因为所公开的主题可以用对受益于本文的教导的本领域中那些技术人员明显的不同但等效的方式被修改和实践。没有意欲对本文所示的构造或设计的细节进行任何限制,除了如在下面的权利要求中所述的以外。因此很明显,上面公开的特定实施方案可被改变或修改,且所有这样的变化被考虑为在所公开的主题的范围内。相应地,在本文寻求的保护如在下面的权利要求中阐述的。
Claims (17)
1.一种用于将处理时间分配到虚拟功能的方法,包括:
建立在客户虚拟机的新虚拟功能和在图形处理单元上的物理功能之间的通信通道;
在所述新虚拟功能的初始化期间准予所述新虚拟功能对一组共享图形处理单元寄存器的排他访问;
在所述新虚拟功能的初始化之后执行从所述新虚拟功能到在所述新虚拟功能的初始化之前在所述图形处理单元处执行的以前初始化的虚拟功能的世界切换;以及
将图形处理单元处理时间的循环分配到所述以前初始化的虚拟功能以处理累积命令。
2.如权利要求1所述的方法,还包括:
将用于请求所述新虚拟功能的初始化的请求从所述客户虚拟机的虚拟功能驱动器传输到所述物理功能。
3.如权利要求1所述的方法,其中所述通信通道使用获取-释放协议来开始并结束对所述一组共享图形处理单元寄存器的排他访问。
4.如权利要求1所述的方法,其中图形处理单元处理时间的所述循环在另外初始化第二新虚拟功能之前被分配到所述以前初始化的虚拟功能。
5.如权利要求1所述的方法,还包括:
查询最新完成的屏障指令并比较所述最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的虚拟功能是否变得挂起。
6.如权利要求1所述的方法,还包括:
将额外的等待时间分配到所述以前初始化的虚拟功能用于在触发超时发现和恢复(TDR)循环之前处理累积命令。
7.如权利要求1所述的方法,其中准予所述新虚拟功能对一组共享图形处理单元寄存器的排他访问包括在所述排他访问期间打开所述共享图形处理单元寄存器的基址范围。
8.一种用于将处理时间分配到虚拟功能的系统,包括:
服务器,所述服务器托管多个客户虚拟机,其中所述服务器包括具有被分配到所述多个客户虚拟机的资源的物理设备,以及此外其中为所述多个客户虚拟机中的每个配置与所述物理设备相关的虚拟功能;以及
在所述物理设备中的一组共享寄存器,其中对所述一组共享寄存器的排他访问在新虚拟功能的初始化过程期间被准予给所述新虚拟功能,以及此外其中从所述新虚拟功能到在所述新虚拟功能的初始化之前在所述物理设备处执行的以前初始化的虚拟功能的世界切换在所述新虚拟功能的初始化之后被触发,以及此外其中图形处理单元时间被分配到所述以前初始化的虚拟功能用于处理累积命令。
9.如权利要求8所述的系统,其中所述物理设备包括具有一组共享图形处理单元寄存器的图形处理单元。
10.如权利要求8所述的系统,其中所述一组共享寄存器包括被打开以允许从所述新虚拟功能直接通过到所述一组共享寄存器的基址范围。
11.如权利要求8所述的系统,其中所述以前初始化的虚拟功能包括用于在新虚拟功能的初始化期间累积命令的命令缓冲器。
12.如权利要求11所述的系统,其中所述命令缓冲器被查询以比较最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的虚拟功能是否变得挂起。
13.如权利要求12所述的系统,其中额外的等待时间被分配到所述以前初始化的虚拟功能用于在触发超时发现和恢复(TDR)循环之前处理累积命令。
14.如权利要求8所述的系统,其中图形处理单元时间在另外初始化第二新虚拟功能之前被分配到所述以前初始化的虚拟功能。
15.一种体现一组可执行指令的非暂时性计算机可读介质,所述一组可执行指令操纵处理器来:
建立在客户虚拟机的新虚拟功能和在图形处理单元上的物理功能之间的通信通道;
在所述新虚拟功能的初始化期间准予所述新虚拟功能对一组共享图形处理单元寄存器的排他访问;
在所述新虚拟功能的初始化之后执行从所述新虚拟功能到在所述新虚拟功能的初始化之前在所述图形处理单元处执行的以前初始化的虚拟功能的世界切换;以及
将图形处理单元时间分配到所述以前初始化的虚拟功能以处理累积命令。
16.如权利要求15所述的非暂时性计算机可读介质,其中所述处理器:
查询最新完成的屏障指令并比较所述最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的虚拟功能是否变得挂起。
17.如权利要求16所述的非暂时性计算机可读介质,其中所述处理器:
在另外初始化第二新虚拟功能之前将图形处理单元时间分配到所述以前初始化的虚拟功能。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610919623.8A CN107977251B (zh) | 2016-10-21 | 2016-10-21 | 对在虚拟化系统中的共享寄存器的排他访问 |
US15/348,225 US10198283B2 (en) | 2016-10-21 | 2016-11-10 | Exclusive access to shared registers in virtualized systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610919623.8A CN107977251B (zh) | 2016-10-21 | 2016-10-21 | 对在虚拟化系统中的共享寄存器的排他访问 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107977251A CN107977251A (zh) | 2018-05-01 |
CN107977251B true CN107977251B (zh) | 2023-10-27 |
Family
ID=61969477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610919623.8A Active CN107977251B (zh) | 2016-10-21 | 2016-10-21 | 对在虚拟化系统中的共享寄存器的排他访问 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10198283B2 (zh) |
CN (1) | CN107977251B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10229017B1 (en) * | 2015-10-01 | 2019-03-12 | EMC IP Holding Company LLC | Resetting fibre channel devices for failover in high availability backup systems |
US10761868B2 (en) * | 2016-12-23 | 2020-09-01 | Intel Corporation | Device-agnostic driver for virtual machines |
US10459751B2 (en) * | 2017-06-30 | 2019-10-29 | ATI Technologies ULC. | Varying firmware for virtualized device |
DE112018007635T5 (de) * | 2018-11-30 | 2021-04-01 | Intel Corporation | Vorrichtung und verfahren zur effizienten gemeinsamen nutzung einer lokalen anzeige für einen virtualisierten grafikprozessor |
US20220222127A1 (en) * | 2019-06-06 | 2022-07-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, apparatus and system for high performance peripheral component interconnect device resource sharing in cloud environments |
CN112148418A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于访问数据的方法、装置、设备和介质 |
US20200409732A1 (en) * | 2019-06-26 | 2020-12-31 | Ati Technologies Ulc | Sharing multimedia physical functions in a virtualized environment on a processing unit |
US20220188135A1 (en) * | 2020-12-10 | 2022-06-16 | Ati Technologies Ulc | Hardware-based protection of virtual function resources |
US20220197679A1 (en) * | 2020-12-18 | 2022-06-23 | Advanced Micro Devices (Shanghai) Co., Ltd. | Modifying device status in single virtual function mode |
US20220283839A1 (en) * | 2021-03-05 | 2022-09-08 | Vmware, Inc. | Direct access to hardware accelerator in an o-ran system |
US20240184623A1 (en) * | 2022-12-01 | 2024-06-06 | Ati Technologies Ulc | Job limit enforcement for improved multitenant quality of service |
US20240211309A1 (en) * | 2022-12-21 | 2024-06-27 | Ati Technologies Ulc | Multi-level scheduling for improved quality of service |
US20240211291A1 (en) * | 2022-12-27 | 2024-06-27 | Advanced Micro Devices, Inc. | Budget-based time slice assignment for multiple virtual functions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659518A (zh) * | 2002-04-16 | 2005-08-24 | 英特尔公司 | 虚拟计算机结构中控制寄存器访问虚拟化性能的改进 |
CN104503825A (zh) * | 2014-12-29 | 2015-04-08 | 西安电子科技大学 | 一种基于kvm混合式设备虚拟化方法 |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN105700826A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 虚拟化方法和装置 |
JP2016146077A (ja) * | 2015-02-09 | 2016-08-12 | 日本電気株式会社 | 計算機、通信制御方法および通信制御プログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8531471B2 (en) * | 2008-11-13 | 2013-09-10 | Intel Corporation | Shared virtual memory |
US8405666B2 (en) * | 2009-10-08 | 2013-03-26 | Advanced Micro Devices, Inc. | Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine |
US20130174144A1 (en) * | 2011-12-28 | 2013-07-04 | Ati Technologies Ulc | Hardware based virtualization system |
US9099051B2 (en) * | 2012-03-02 | 2015-08-04 | Ati Technologies Ulc | GPU display abstraction and emulation in a virtualization system |
US9569242B2 (en) * | 2014-07-16 | 2017-02-14 | International Business Machines Corporation | Implementing dynamic adjustment of I/O bandwidth for virtual machines using a single root I/O virtualization (SRIOV) adapter |
US9459905B2 (en) * | 2014-12-16 | 2016-10-04 | International Business Machines Corporation | Implementing dynamic SRIOV virtual function resizing |
-
2016
- 2016-10-21 CN CN201610919623.8A patent/CN107977251B/zh active Active
- 2016-11-10 US US15/348,225 patent/US10198283B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659518A (zh) * | 2002-04-16 | 2005-08-24 | 英特尔公司 | 虚拟计算机结构中控制寄存器访问虚拟化性能的改进 |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
CN104503825A (zh) * | 2014-12-29 | 2015-04-08 | 西安电子科技大学 | 一种基于kvm混合式设备虚拟化方法 |
JP2016146077A (ja) * | 2015-02-09 | 2016-08-12 | 日本電気株式会社 | 計算機、通信制御方法および通信制御プログラム |
CN105700826A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 虚拟化方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10198283B2 (en) | 2019-02-05 |
CN107977251A (zh) | 2018-05-01 |
US20180113731A1 (en) | 2018-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977251B (zh) | 对在虚拟化系统中的共享寄存器的排他访问 | |
US12061919B2 (en) | Dynamic I/O virtualization system having guest memory management for mapping virtual addresses using virtualization application programming interface (API) in guest kernal | |
US10691363B2 (en) | Virtual machine trigger | |
US10191759B2 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
US20180121366A1 (en) | Read/write request processing method and apparatus | |
WO2018119952A1 (zh) | 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
CN107491354B (zh) | 一种基于共享内存的虚拟机间通信方法及装置 | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
JP2015503784A (ja) | グラフィックス処理部における仮想マシン間の移行 | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
US20180088979A1 (en) | Virtual machine liveliness detection | |
US20200334064A1 (en) | Event guard for excessive virtual machine requests | |
KR20110094764A (ko) | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN113312141A (zh) | 用于虚拟机的虚拟串行端口 | |
US9021498B1 (en) | Adjusting pause-loop exiting window values | |
CN116324706A (zh) | 分离式存储器池分配 | |
US20230033583A1 (en) | Primary input-output queue serving host and guest operating systems concurrently | |
TWI733745B (zh) | 核心模式的虛擬機器(kvm)虛擬化下處理i/o請求的方法和裝置 | |
Kang et al. | Fault-tolerant Scheduler for Shareable Virtualized GPU Resource |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |