CN107977251A - 对在虚拟化系统中的共享寄存器的排他访问 - Google Patents

对在虚拟化系统中的共享寄存器的排他访问 Download PDF

Info

Publication number
CN107977251A
CN107977251A CN201610919623.8A CN201610919623A CN107977251A CN 107977251 A CN107977251 A CN 107977251A CN 201610919623 A CN201610919623 A CN 201610919623A CN 107977251 A CN107977251 A CN 107977251A
Authority
CN
China
Prior art keywords
gpu
initialization
past
group
virtual functions
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
CN201610919623.8A
Other languages
English (en)
Other versions
CN107977251B (zh
Inventor
刘凌飞
王晓伟
杰弗里·G·程
蒋楠
蒋一楠
格兰特·广文·杨
凯莉·齐塔鲁克
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.)
ATI Technologies ULC
Advanced Micro Devices Shanghai Co Ltd
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Shanghai Co Ltd
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 ATI Technologies ULC, Advanced Micro Devices Shanghai Co Ltd filed Critical ATI Technologies ULC
Priority to CN201610919623.8A priority Critical patent/CN107977251B/zh
Priority to US15/348,225 priority patent/US10198283B2/en
Publication of CN107977251A publication Critical patent/CN107977251A/zh
Application granted granted Critical
Publication of CN107977251B publication Critical patent/CN107977251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (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 (20)

1.一种方法,包括:
建立在客户虚拟机(VM)的虚拟功能(VF)和在图形处理单元(GPU)上的物理功能(PF)之间的通信通道;以及
在所述VF的初始化期间准予所述VF对一组共享GPU寄存器的排他访问。
2.如权利要求1所述的方法,还包括:
将用于请求所述VF的初始化的请求从所述VM的VF驱动器传输到所述PF。
3.如权利要求1所述的方法,其中所述通信通道使用获取-释放协议来开始并结束对所述一组共享GPU寄存器的排他访问。
4.如权利要求1所述的方法,还包括:
在所述VF的初始化之后执行从所述VF到以前初始化的VF的世界切换;以及
将GPU处理时间的循环分配到以前初始化的VF以处理累积命令。
5.如权利要求4所述的方法,其中GPU处理时间的所述循环在另外初始化新VF之前被分配到以前初始化的VF。
6.如权利要求4所述的方法,还包括:
查询最新完成的屏障指令并比较所述最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的VF是否变得挂起。
7.如权利要求4所述的方法,还包括:
将额外的等待时间分配到所述以前初始化的VF用于在触发超时发现和恢复(TDR)循环之前处理累积命令。
8.如权利要求1所述的方法,其中准予所述VF对一组共享GPU寄存器的排他访问包括在所述排他访问期间打开所述共享GPU寄存器的基址范围。
9.一种系统,包括:
服务器,所述服务器托管多个客户虚拟机(VM),其中所述服务器包括具有被分配到所述多个客户VM的资源的物理设备,以及此外其中为所述多个客户VM中的每个配置与所述物理设备相关的虚拟功能;以及
在所述物理设备中的一组共享寄存器,其中对所述一组共享寄存器的排他访问在所述虚拟功能的初始化过程期间被准予给所述虚拟功能。
10.如权利要求9所述的系统,其中所述物理设备包括具有一组共享GPU寄存器的图形处理单元(GPU)。
11.如权利要求9所述的系统,其中所述一组共享寄存器包括被打开以允许从所述虚拟功能直接通过到所述一组共享寄存器的基址范围。
12.如权利要求9所述的系统,还包括具有用于在新虚拟功能的初始化期间累积命令的命令缓冲器的以前初始化的虚拟功能(VF)。
13.如权利要求12所述的系统,其中所述命令缓冲器被查询以比较最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的VF是否变得挂起。
14.如权利要求13所述的系统,其中额外的等待时间被分配到所述以前初始化的VF用于在触发超时发现和恢复(TDR)循环之前处理累积命令。
15.如权利要求9所述的系统,其中从所述VF到以前初始化的VF的世界切换在所述VF的初始化之后被触发,以及GPU时间被分配到所述以前初始化的VF用于处理累积命令。
16.如权利要求15所述的系统,其中GPU时间在另外初始化新VF之前被分配到所述以前初始化的VF。
17.一种体现一组可执行指令的非暂时性计算机可读介质,所述一组可执行指令操纵处理器来:
建立在客户虚拟机(VM)的虚拟功能(VF)和在图形处理单元(GPU)上的物理功能(PF)之间的通信通道;以及
在所述VF的初始化期间准予所述VF对一组共享GPU寄存器的排他访问。
18.如权利要求17所述的非暂时性计算机可读介质,其中所述处理器:
在所述VF的初始化之后执行从所述VF到以前初始化的VF的世界切换;以及
将GPU时间分配到所述以前初始化的VF以处理累积命令。
19.如权利要求18所述的非暂时性计算机可读介质,其中所述处理器:
查询最新完成的屏障指令并比较所述最新完成的屏障指令与最新提交的屏障指令以确定所述以前初始化的VF是否变得挂起。
20.如权利要求19所述的非暂时性计算机可读介质,其中所述处理器:
在另外初始化新VF之前将GPU时间分配到所述以前初始化的VF。
CN201610919623.8A 2016-10-21 2016-10-21 对在虚拟化系统中的共享寄存器的排他访问 Active CN107977251B (zh)

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 true CN107977251A (zh) 2018-05-01
CN107977251B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020107405A1 (en) * 2018-11-30 2020-06-04 Intel Corporation Apparatus and method for efficient local display sharing for a virtualized graphics processor

Families Citing this family (8)

* Cited by examiner, † Cited by third party
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
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
US20220283840A1 (en) * 2021-03-05 2022-09-08 Vmware, Inc. Configuring 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

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659518A (zh) * 2002-04-16 2005-08-24 英特尔公司 虚拟计算机结构中控制寄存器访问虚拟化性能的改进
US20130174144A1 (en) * 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
US20130179884A1 (en) * 2009-10-08 2013-07-11 Advanced Micro Devices, Inc. Saving, Transferring and Recreating GPU Context Information Across Heterogeneous GPUs During Hot Migration of a Virtual Machine
US20130229421A1 (en) * 2012-03-02 2013-09-05 Ati Technologies Ulc GPU Display Abstraction and Emulation in a Virtualization System
US20140306972A1 (en) * 2008-11-13 2014-10-16 Xiaocheng Zhou Language Level Support for Shared Virtual Memory
CN104503825A (zh) * 2014-12-29 2015-04-08 西安电子科技大学 一种基于kvm混合式设备虚拟化方法
CN104583959A (zh) * 2012-09-25 2015-04-29 英特尔公司 允许处理器资源的虚拟化
US20160019078A1 (en) * 2014-07-16 2016-01-21 International Business Machines Corporation Implementing dynamic adjustment of i/o bandwidth for virtual machines using a single root i/o virtualization (sriov) adapter
US20160170789A1 (en) * 2014-12-16 2016-06-16 International Business Machines Corporation Implementing dynamic sriov virtual function resizing
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
JP2016146077A (ja) * 2015-02-09 2016-08-12 日本電気株式会社 計算機、通信制御方法および通信制御プログラム

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659518A (zh) * 2002-04-16 2005-08-24 英特尔公司 虚拟计算机结构中控制寄存器访问虚拟化性能的改进
US20140306972A1 (en) * 2008-11-13 2014-10-16 Xiaocheng Zhou Language Level Support for Shared Virtual Memory
US20130179884A1 (en) * 2009-10-08 2013-07-11 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
US20130229421A1 (en) * 2012-03-02 2013-09-05 Ati Technologies Ulc GPU Display Abstraction and Emulation in a Virtualization System
CN104583959A (zh) * 2012-09-25 2015-04-29 英特尔公司 允许处理器资源的虚拟化
US20160019078A1 (en) * 2014-07-16 2016-01-21 International Business Machines Corporation Implementing dynamic adjustment of i/o bandwidth for virtual machines using a single root i/o virtualization (sriov) adapter
US20160170789A1 (en) * 2014-12-16 2016-06-16 International Business Machines Corporation Implementing dynamic sriov virtual function resizing
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 华为技术有限公司 虚拟化方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020107405A1 (en) * 2018-11-30 2020-06-04 Intel Corporation Apparatus and method for efficient local display sharing for a virtualized graphics processor

Also Published As

Publication number Publication date
US10198283B2 (en) 2019-02-05
CN107977251B (zh) 2023-10-27
US20180113731A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
CN107977251A (zh) 对在虚拟化系统中的共享寄存器的排他访问
US10691363B2 (en) Virtual machine trigger
JP5323897B2 (ja) 仮想マシン・モニタと、acpi準拠ゲスト・オペレーティング・システムとの間の双方向通信のための方法、装置及びシステム
US9703951B2 (en) Allocation of shared system resources
ES2768277T3 (es) Función de interrupción de seguimiento de advertencias
US9081612B2 (en) Virtual machine control method and virtual machine
US8312175B2 (en) Virtual machine access to storage via a multi-queue IO storage adapter with optimized cache affinity and PCPU load balancing
US9697029B2 (en) Guest idle based VM request completion processing
US20110296406A1 (en) Hypervisor scheduler
JP2013516021A (ja) プロセッサコアのハイパーバイザ離隔
US7814496B2 (en) Method and system for replicating schedules with regard to a host controller for virtualization
WO2018039967A1 (zh) 虚拟机切换方法、装置、电子设备和计算机程序产品
TW201003526A (en) Lazy handling of end of interrupt messages in a virtualized environment
US20160328348A1 (en) Computer and computer i/o control method
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
JP6273034B2 (ja) 仮想化コンピューティング装置及び方法
US9715403B2 (en) Optimized extended context management for virtual machines
US20200334064A1 (en) Event guard for excessive virtual machine requests
KR102570943B1 (ko) PCIe 디바이스 및 그 동작 방법
CN112306624A (zh) 一种信息处理方法、物理机和pcie设备
CN110968392B (zh) 一种升级虚拟化模拟器的方法和装置
CN112306650A (zh) 虚拟机热迁移方法和通信设备
US20060005184A1 (en) Virtualizing management hardware for a virtual machine
AU2012366770B2 (en) Providing by one program to another program access to a warning track facility
WO2017012339A1 (zh) 资源管理方法及装置

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