CN109254826B - 虚拟化加速处理装置的挂起检测 - Google Patents

虚拟化加速处理装置的挂起检测 Download PDF

Info

Publication number
CN109254826B
CN109254826B CN201710567201.3A CN201710567201A CN109254826B CN 109254826 B CN109254826 B CN 109254826B CN 201710567201 A CN201710567201 A CN 201710567201A CN 109254826 B CN109254826 B CN 109254826B
Authority
CN
China
Prior art keywords
apd
current function
virtualized
request
hypervisor
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
Application number
CN201710567201.3A
Other languages
English (en)
Other versions
CN109254826A (zh
Inventor
安东尼·阿莎罗
蒋一楠
安迪·宋
阿哈迈德·M·阿布德尔克哈利克
王晓伟
西德尼·D·福特斯
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 Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
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 Inc filed Critical ATI Technologies ULC
Priority to CN201710567201.3A priority Critical patent/CN109254826B/zh
Priority to US15/663,499 priority patent/US11182186B2/en
Publication of CN109254826A publication Critical patent/CN109254826A/zh
Application granted granted Critical
Publication of CN109254826B publication Critical patent/CN109254826B/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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • G06F2009/45562Creating, deleting, cloning 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/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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Image Generation (AREA)

Abstract

本发明提供用于从虚拟化加速处理装置(“APD”)中的挂起恢复过来的技术。在虚拟化方案中,向不同的虚拟机指派不同的“时间切片”,在所述时间切片中使用所述APD。当时间切片到期时,所述APD停止当前VM的操作且开始另一VM的操作。为了停止所述APD上的操作,虚拟化调度器发送使所述APD闲置的请求。所述APD通过完成工作并闲置而作出响应。如果所述APD的一个或多个部分在超时到期之前未完成此闲置过程,那么发生挂起。响应于所述挂起,虚拟化调度器向管理程序告知已经发生挂起。所述管理程序执行所述APD上的功能层级复位,并且向所述VM告知已经发生所述挂起。所述VM通过停止向所述APD发出命令并且针对所述功能重新初始化所述APD而作出响应。

Description

虚拟化加速处理装置的挂起检测
背景技术
计算机虚拟化是在计算机***的不同虚拟实例之间共享单组硬件的技术。每个实例(虚拟机(“VM”))认为它拥有整个硬件计算机***,但实际上,计算机***的硬件资源是在不同VM之间共享的。虚拟化(包括除了CPU、***存储器等之外的装置的虚拟化)正在不断地进步。
附图说明
通过结合附图借助实例给出的以下描述,可以得到更详细的理解,附图中:
图1是其中可以实施本公开的一个或多个特征的示例性装置的框图;
图2说明根据实例与虚拟化相关的装置和加速处理装置的细节;
图3是示出在图2中所说明的图形处理管线的额外细节的框图;
图4是说明根据实例与挂起检测和校正相关的图1的装置的特征的框图;以及
图5是根据实例用于检测加速处理装置上的功能的挂起并且对那个挂起作出响应的方法的流程图。
具体实施方式
提供用于从虚拟化加速处理装置(“APD”)中的挂起恢复过来的技术。在于APD上实施的虚拟化方案中,向不同的虚拟机指派不同的“时间切片”,在所述时间切片中使用所述APD。当时间切片到期时,APD停止当前虚拟机(“VM”)的操作且开始另一VM的操作。为了停止APD上的操作,虚拟化调度器发送使所述APD闲置的请求。APD通过完成工作并闲置而作出响应。如果APD的一个或多个部分在超时到期之前未完成此闲置过程,那么发生挂起。响应于所述挂起,虚拟化调度器向管理程序告知已经发生挂起。管理程序执行APD上的虚拟功能-功能层级复位,并且向所述VM告知已经发生挂起。在虚拟功能–功能层级复位完成之后,VM通过停止向APD发出命令并且针对所述功能重新初始化APD而作出响应。
图1是其中可以实施本公开的一个或多个特征的示例性装置100的框图。装置100可以包括(例如)计算机、游戏装置、手持装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102(其还可以被称为“主机处理器”)、存储器104、存储装置106、一个或多个输入装置108和一个或多个输出装置110。装置100还可以任选地包括输入驱动器112和输出驱动器114。应理解,装置100可以包括在图1中未示出的额外组件。
在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一裸片上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。在各种替代方案中,存储器104位于与处理器102相同的裸片上,或者与处理器102分开地定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM,或缓存。
存储装置106包括固定或可移除的存储装置,例如硬盘驱动器、固态驱动器、光盘,或闪存驱动器。输入装置108包括(但不限于)键盘、小键盘、触摸屏、触摸垫、检测器、麦克风、加速度计、陀螺仪、生物识别扫描仪,或网络连接(例如,用于传输和/或接收无线IEEE802信号的无线局域网卡)。输出装置110包括(但不限于)显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线,或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且准许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且准许处理器102将输出发送到输出装置110。应注意,输入驱动器112和输出驱动器114是任选的组件,且在不存在输入驱动器112和输出驱动器114的情况下,装置100将以相同的方式操作。输入驱动器112和输出驱动器114完全以硬件实施、完全以在可编程硬件上执行的软件实施,或者实施为硬件和软件的组合。输出驱动器114包括耦合到显示装置118的加速处理装置(“APD”)116。APD被配置成从处理器102接受计算命令和图形渲染命令、处理那些计算和图形渲染命令,且向显示装置118提供像素输出以供显示。在各种实例中,显示装置118是与远程协议结合使用以经由网络连接提供显示的物理装置或模拟装置。如下文进一步详细描述,APD 116包括被配置成根据单指令多数据(“SIMD”)范式执行计算的一个或多个并行处理单元。因此,虽然各种功能性在本文描述为是由APD 116执行或与APD 116结合执行,但在各种替代方案中,被描述为由APD 116执行的功能性另外或替代地由具有类似能力的其他计算装置执行,所述其他计算装置不由主机处理器(例如,处理器102)驱动且被配置成向显示装置118提供图形输出。举例来说,预期根据SIMD范式执行处理任务的任何处理***可以被配置成执行在本文所描述的功能性。替代地,预期不根据SIMD范式执行处理任务的计算***会执行在本文所描述的功能性。
处理器102被配置成支持虚拟化方案,其中多个虚拟机在处理器102上执行。每个虚拟机(“VM”)对于在那个VM中执行的软件“看似”为完全“真实”的硬件计算机***,但实际上包括可以与其他虚拟机来共享装置100的虚拟化计算环境。虚拟化可以完全以软件支持、部分以硬件且部分以软件支持,或者完全以硬件支持。APD 116支持虚拟化,意味着可以在于处理器102上执行的多个虚拟机之间共享APD 116,其中每个VM“认为”所述VM具有真实硬件APD 116的整个所有权。
图2说明根据实例与虚拟化相关的装置100和APD 116的细节。处理器102支持多个虚拟机。专用的主机虚拟机202不是与客人VM 204一样的“通用”VM,而是执行对APD 116的虚拟化的支持以供客人VM 204使用。管理程序206提供对虚拟机的虚拟化支持,其包括广泛多种功能,例如管理指派给虚拟机的资源、繁殖和杀死虚拟机、处置***调用、管理对***装置的访问、管理存储器和页表以及各种其他功能。
APD 116通过允许在虚拟机之间对APD 116的基于时间的共享而支持虚拟化。在APD 116上,将主机VM 202映射到物理功能208,且将客人VM 204映射到虚拟功能210。“物理功能”实质上是高速***组件互连(“PCIe”)标准中的寻址参数。更具体来说,物理功能允许涉及耦合到PCIe互连构造的装置的通信以指定所述装置的特定物理功能,使得所述装置能够根据特别指派给那个物理功能的功能性来处置通信。在一个实例中,物理功能与例如APD116等图形处理装置上的定期图形渲染相关联。在本文,描述单个物理功能,但本公开的教导适用于一个以上物理功能是有效的APD 116。
虚拟功能是PCIe标准的特征,所述特征有助于硬件虚拟化并且还充当PCIe标准中的寻址参数。通常,一组虚拟功能与特定物理功能相关联。向每个虚拟机指派不同的虚拟功能,其中管理程序206管理VM 204与虚拟功能之间的相关性。虚拟功能与虚拟机204之间的此相关性在图2的***中大多是存在的,除了主机VM 202能够访问物理功能208以及不同虚拟功能210中的任一者之外。在那个意义上,主机VM 202充当APD虚拟化的一种“主人虚拟机”。在一些***中,不存在主机VM 202,其中替代地通过管理程序206执行在本文所描述的主机VM 202的功能(这是为什么在管理程序206中以点线说明GPU虚拟化驱动程序121的原因)。
如上文描述,物理功能和虚拟功能是PCIe中的寻址参数,其中跨PCIe作出的事务指定或既定用于特定虚拟功能和/或物理功能,且处理器102或APD 116相应地作出响应(注意,经由PCIe进行寻址的一些方式未明确地指定虚拟功能或物理功能;例如,经由PCIe的事务可以通过存储器地址而不是明确通过功能来路由,在明确通过功能来路由中,装置隐式地理解哪一功能与特定存储器地址相关联)。处理器102经由存储器映射机构将特定VM的事务引导到APD 116的适当虚拟功能。更具体来说,当虚拟机访问APD 116时,将用于作出那个访问的存储器地址从客人物理地址转换为***物理地址。通过存储器映射机构将所使用的特定***物理地址映射到APD 116的特定虚拟功能,且因此经由映射信息将作出的事务路由到APD 116和适当的虚拟功能。
通过在不同的虚拟机之间对APD 116的操作进行时间划分来实现在不同的虚拟机之间共享APD 116。虚拟化调度器212执行此任务,从而通过在指派给当前虚拟机的执行时间流逝时从那个虚拟机的工作进行切换来调度新的虚拟机进行操作。虽然在不同的虚拟机之间共享APD 116,但每个虚拟机都感觉它具有真实硬件APD 116的个别实例。虽然术语“虚拟功能”和“物理功能”是指PCIe标准的寻址参数,但因为这些功能映射到不同的VM,所以指派给特定虚拟机的APD 116的逻辑实例在本文还将被称作虚拟功能或物理功能。换句话说,本公开可以使用术语(例如)“虚拟功能执行任务”(或物理功能)或“在虚拟功能上或为虚拟功能执行操作”(或物理功能),且应将此术语解读为是指APD 116在指派给与那个特定虚拟或物理功能相关联的VM的时间切片内执行那个任务,或者代表与那个特定虚拟或物理功能相关联的VM。
主机VM 202和客人VM 204具有操作***120。主机VM 202具有管理应用123和GPU虚拟化驱动程序121。客人VM 204具有应用126、操作***120和GPU驱动程序122。这些元件控制处理器102和APD 116的操作的各种特征。
如上所述,主机VM 202为客人VM 204配置APD 116中的虚拟化的多个方面。因此,主机VM 202包括支持例如管理应用123和GPU虚拟化驱动程序121等其他元件的执行的操作***120。在各种实现方式中,GPU虚拟化驱动程序121是传统的图形驱动程序,其还包括用于针对虚拟化来配置APD 116的多个方面的功能性。在其他实现方式中,GPU虚拟化驱动程序121与图形驱动程序分开,且因此不是与APD 116通信并且向APD 116发送图形渲染(或其他)命令的传统的图形驱动程序。而是,GPU虚拟化驱动程序121与APD 116通信以针对虚拟化来配置APD 116的各个方面。在一个实例中,GPU虚拟化驱动程序121管理与时间切片机制相关的参数以用于在不同的VM之间共享APD 116,从而控制参数,例如在每个时间切片中有多少时间、如何在不同虚拟功能之间执行切换,以及其他方面。管理应用123执行一个或多个任务以用于管理虚拟化,且/或其涉及来自两个或更多个不同客人VM 204的数据。在一个实例中,主机VM 202通过管理应用123执行桌面合成功能,其中桌面合成功能具有对来自不同客人VM 204的所渲染的帧的访问权并且将那些帧合成为单个输出视图。
客人VM 204包括操作***120、GPU驱动程序122和应用126。操作***120是可以在处理器102上执行的任何类型的操作***。GPU驱动程序122是APD 116的“原生”驱动程序,原因在于GPU驱动程序122为在上面运行GPU驱动程序122的客人VM 204控制APD 116的操作,将例如图形渲染任务等任务或其他工作发送到APD 116以进行处理。原生驱动程序可以是GPU的装置驱动程序的未经修改或稍微修改过的版本,其将存在于基本的非虚拟化计算***中。
虽然将GPU虚拟化驱动程序121描述为包括在主机VM 202内,但在其他实现方式中,GPU虚拟化驱动程序121替代地包括在管理程序206中。在此类实现方式中,主机VM 202可能不存在,且主机VM 202的功能性可以由管理程序206执行。
主机VM 202和客人VM 204的操作***120执行虚拟化环境中的操作***的标准功能性,例如与硬件通信、管理资源和文件***、管理虚拟存储器、管理网络堆栈以及许多其他功能。GPU驱动程序122通过(例如)向软件(例如,应用126)提供应用编程接口(“API”)以访问APD 116的各种功能性来控制用于任何特定客人VM 204的APD 116的操作。驱动程序122还包括适时编译器,其编译程序以供APD 116的处理组件(例如,在下文进一步详细论述的SIMD单元138)执行。对于任何特定客人VM 204,GPU驱动程序122控制APD 116上的与那个客人VM 204相关的功能性,但对于其他VM不进行控制。
APD 116执行选定功能的命令和程序,例如可以适合于并行处理的图形操作和非图形操作。APD 116可以用于执行图形管线操作,例如像素操作、几何计算,且基于从处理器102接收的命令而向显示装置118渲染图像。APD 116还基于从处理器102接收的命令而执行不与图形操作直接相关的计算处理操作,例如与视频、物理模拟、计算流体动力学或其他任务相关的操作。命令处理器213从处理器102(或另一来源)接受命令,且将与那些命令相关联的任务委派给APD 116的各种元件,例如图形处理管线134和计算单元132。VM使用门铃存储器214经由门铃机构向APD 116告知用于执行的新的任务。
APD 116包括计算单元132,所述计算单元132包括一个或多个SIMD单元138,所述一个或多个SIMD单元138被配置成在处理器102的请求下根据SIMD范式以并行方式执行操作。SIMD范式是其中多个处理元件共享单个程序控制流单元和程序计数器且因此执行相同程序但能够使用不同数据来执行那个程序的SIMD范式。在一个实例中,每个SIMD单元138包括十六个分道,其中每个分道与SIMD单元138中的另一分道同时执行相同指令但可以使用不同数据来执行那个指令。如果不是所有分道都需要执行给定指令,那么可以通过断言来关闭分道。还可以使用断言以分歧的控制流来执行程序。更具体来说,对于具有条件性分支的程序或其中控制流是基于由个别分道执行的计算的其他指令,分道的断言对应于当前不在执行的控制流路径,且不同控制流路径的连续执行允许任意的控制流。
计算单元132中的基本执行单元是工作项目。每个工作项目表示将在特定分道中并行地执行的程序的单个实例化。工作项目可以作为“波前”在单个SIMD处理单元138上同时执行。一个或多个波前包括在“工作组”中,所述工作组包括被指定成执行相同程序的工作项目的集合。可以通过执行构成工作组的波前中的每一者来执行工作组。在替代方案中,在单个SIMD单元138上循序地执行波前,或者在不同的SIMD单元138上部分或完全并行地执行波前。波前可以被视为可以在单个SIMD单元138上同时执行的工作项目的最大集合。因此,如果从处理器102接收的命令指示特定程序并行化到所述程序无法在单个SIMD单元138上同时执行的程度,那么将那个程序分解为在两个或更多个SIMD单元138上并行化或在相同SIMD单元138上串行化(或在需要时并行化且串行化)的波前。调度器136被配置成执行与在不同计算单元132和SIMD单元138上调度各种波前相关的操作。
由计算单元132提供的并行性适合于图形相关操作,例如像素值计算、顶点转换和其他图形操作。因此,在一些情况下,从处理器102接受图形处理命令的图形管线134向计算单元132提供计算任务以并行地执行。
计算单元132还用于执行不与图形相关或者不执行为图形管线134的“正常”操作的部分(例如,为了对针对图形管线134的操作所执行的处理进行增补而执行的定制操作)的计算任务。应用126或在处理器102上执行的其他软件向APD 116传输界定此类计算任务的程序以供执行。
虚拟化调度器212管理在不同的虚拟机之间对APD 116的时间共享。在每个时间切片中,虚拟化调度器212准许与那个时间切片相关联的虚拟机的工作在APD 116中进行。门铃存储器214存储门铃,所述门铃是针对特定虚拟机已经准备好在APD 116上执行工作的指示。门铃机制相对于当前安排成APD 116上的工作的虚拟机异步地操作。这意味着在当于APD 116上执行除了曾将门铃放置在门铃存储器214中的VM之外的VM的任务时特定虚拟机可以将门铃放置在门铃存储器214中。
APD 116上的虚拟化如下工作。虚拟化调度器212管理APD 116上的用于共享APD116的VM(主机VM 202和客人VM 204)的时间切片。虚拟化调度器212跟踪所述时间切片,当用于特定VM的时间切片已经到期且开始具有下一个时间切片的VM的工作时,停止APD 116上的工作。因此,虚拟化调度器212在具有将在APD 116上执行的工作的不同VM之间进行切换。
为了开始与特定VM相关联的特定时间切片的工作,虚拟化调度器212致使命令处理器213从由特定VM的门铃存储器214指定的地址获取用于图形处理管线134和/或用于通用计算工作的命令。命令处理器213随后致使APD 116执行那些命令。应注意,功能性未在虚拟化的上下文中具体描述的APD 116的另一部分如上文描述而工作,且好像没有发生虚拟化一样来执行由命令处理器213获取的命令。举例来说,图形处理管线134响应于由命令处理器213获取的图形渲染命令来执行与图形渲染相关的操作。对于与图形处理管线134相关联的图形渲染命令中的至少一些图形渲染命令和/或对于通用计算操作,SIMD调度器136根据由命令处理器213处理的命令而产生和管理用于在计算单元132的SIMD单元138上执行的波前。在实例中,命令是在图形处理管线134的其他设施中使用特定像素着色器程序来渲染特定一个几何形状的命令。图形处理管线134通过图形处理管线134的各个级(例如,输入汇编器级302、外壳着色器级306、镶嵌器级308等)处理所述几何形状,且在像素着色器级316处,致使在SIMD单元138上使用特定像素着色器来处理所述几何形状。SIMD调度器136管理和调度用于执行的像素着色器的波前。
图3是示出在图2中所说明的图形处理管线134的额外细节的框图。图形处理管线134包括各自执行特定功能性的多个级。所述级表示图形处理管线134的功能性的细分。每个级部分地或完全地实施为在计算单元132中执行的着色器程序,或者部分地或完全地实施为在计算单元132外部的固定功能非可编程硬件。
输入汇编器级302从用户填充的缓冲器(例如,在由处理器102执行的软件(例如,应用126)的请求下填充的缓冲器)读取原始数据,并且将所述数据汇编为基元以供管线的剩余部分使用。输入汇编器级302可以基于在用户填充的缓冲器中包括的原始数据而产生不同类型的基元。输入汇编器级302将经汇编的基元格式化以供管线的其余部分使用。
顶点着色器级304处理由输入汇编器级302汇编的基元的顶点。顶点着色器级304执行各种每顶点操作,例如变换、蒙皮、变形和每顶点照明。变换操作包括用于变换顶点的坐标的各种操作。这些操作包括建模变换、视角变换、投影变换、透视分割和视口变换中的一者或多者。在本文,此类变换被视为修改对其执行变换的顶点的坐标或“位置”。顶点着色器级304的其他操作修改除了坐标之外的属性。
顶点着色器级304被部分地或完全地实施为将在一个或多个计算单元132上执行的顶点着色器程序。顶点着色器程序是由处理器102提供并且是基于由计算机程序员预先编写的程序。驱动程序122编译此类计算机程序以产生具有适合于在计算单元132内执行的格式的顶点着色器程序。
外壳着色器级306、镶嵌器级308和域着色器级310一起工作以实施镶嵌,所述镶嵌通过细分基元而将简单基元转换为更复杂的基元。外壳着色器级306基于输入基元而产生用于镶嵌的补块。镶嵌器级308产生补块的一组样本。域着色器级310计算与补块的样本相对应的顶点的顶点位置。外壳着色器级306和域着色器级310可以实施为着色器程序以在计算单元132上执行。
几何形状着色器级312逐基元地执行顶点操作。几何形状着色器级312可以执行多种不同类型的操作,包括例如点冲刺扩展、动态粒子***操作、毛发-翅片生成、阴影体积生成、单遍渲染到立方体图、每基元材料交换以及每基元材料设置等操作。在一些情况下,在计算单元132上执行的着色器程序执行几何形状着色器级312的操作。
光栅化器级314接受并且光栅化简单的基元和所产生的上游。光栅化是由确定哪些屏幕像素(或子像素样本)被特定基元覆盖组成。通过固定功能硬件执行光栅化。
像素着色器级316基于在上游产生的基元和光栅化的结果而计算屏幕像素的输出值。像素着色器级316可以应用来自纹理存储器的纹理。通过在计算单元132上执行的着色器程序来执行像素着色器级316的操作。
输出合并级318接受来自像素着色器级316的输出并且合并那些输出,从而执行例如z测试和α混合等操作以确定屏幕像素的最终色彩。
再参看图2,当虚拟化调度器212确定具有当前在APD 116上执行的工作的VM的时间切片已经到期时,虚拟化调度器致使APD 116完成那个工作而不接受任何新的工作(例如,不接受由存储在门铃存储器214中的门铃指向的新的任务,而是完成在图形处理管线134和/或计算单元138中已经“在进行中”的任务)。完成任务涉及允许完成当前在APD 116中在进行中的工作并且将最终输出值写出到目标存储器位置。举例来说,为了图形渲染,将把输出像素写入到帧缓冲器(或其他渲染目标)。(注意,可能会出现停顿,其中当前在APD116中执行的工作完成不了或者要花费极长的时间来完成)。替代地,不完成任务,可以保存任务的状态并且当功能/VM再次取得APD 116上的“轮流”时再次恢复。主机VM 202和/或另一实体中的虚拟化调度器212、GPU虚拟化驱动程序121、管理应用123可以独立地工作或进行协作来处置停顿。
在已经完成特定VM的工作之后,虚拟化调度器212继续移动到用于下一个VM的时间切片,从而致使命令处理器213基于门铃存储器214的内容而获取那个VM的任务,且在图形处理管线134上和/或直接在计算单元132中(例如,对于通用计算)执行那些任务。停止已经到期的时间切片的工作的执行并且开始下一个VM的工作的此过程不断向不同的VM提供对APD 116的时间共享。
一个VM的工作的执行与另一VM的工作的执行之间的转变在本文被称作“虚拟化上下文切换”。除了停止一个VM的工作且开始另一VM的工作之外,虚拟化上下文切换还涉及保存被切换掉的VM的状态并且加载被切换到的VM的状态。一般来说,状态包括自始至终存储的或APD 116的管理针对APD 116执行的工作流的方面的值。在各种实例中,状态可以包括存储在寄存器中的值,所述值控制如何渲染图形、如何执行SIMD工作、如何执行着色器以及控制APD 116上的操作的各种其他方面。保存状态涉及将来自使用中的位置的状态(其中状态值实际上对APD 116的操作有影响)写入到VM的保存状态位置。加载状态涉及将来自VM的保存状态位置的状态加载到使用中的位置。
如上文描述,当特定功能的时间切片到期时,APD 116执行虚拟化上下文切换,其中APD 116从执行当前功能的工作切换为执行后续功能的工作。在此切换中涉及许多任务,且一个任务包括停止当前功能的工作且开始后续功能的工作。停止工作涉及防止命令处理器213获取/发出新的命令、允许已经为当前功能分派的工作在APD 116中完成、保存当前功能的状态、加载后续功能的状态,以及致使命令处理器213执行用于APD 116上的后续功能的命令。虚拟化调度器212是请求在APD 116中停止那个工作的实体。
允许已经为当前功能分派的工作在APD 116中完成包括:向APD 116传输“闲置”命令,所述命令是让APD 116完成未解决的工作且在适当时停止进一步处理的请求。对于图形工作,停止的“适当”时间是在绘图调用之间的边界处。更具体来说,其中在APD 116中执行图形渲染工作的一种方式是让VM经由“绘图调用”来请求待渲染的对象,其中每个绘图调用指定待渲染的某一几何形状。停止的一个“适当”时间是于在图形处理管线134中完成一个绘图调用的工作之后并且于在图形处理管线134中开始后续绘图调用的工作之前。可以替代地使用停止工作的其他点。举例来说,对于通用计算工作,当计算着色器的特定实例(例如,工作组)已经完成执行时,工作可以停止。应注意,在一些情况下,发出闲置命令是不必要的,如同APD 116提前完成工作(在时间切片结束之前),APD 116向虚拟化调度器212告知APD 116是闲置的。
在一些情况下,来自虚拟化调度器212的针对当前功能停止APD 116中的工作的请求(“闲置”命令)导致挂起。更具体来说,来自APD 116的停止工作的请求是一种“软”命令,原因在于所述请求最终得到服从,但直到特定一组进行中的工作被认为完成或至少经过保存以供稍后完成才得到服从。此事实意味着在发出停止工作请求与APD 116实际上停止工作之间存在某一延迟。在一些情形中,此延迟非常长。如果所述延迟长于超时阈值,那么APD116被视为“挂起”。
图4是说明根据实例与挂起检测和校正相关的装置100的特征的框图。在图4中说明装置100的许多元件,图4还说明挂起检测和校正单元402以及挂起定时器404,以上两者被说明为包括在虚拟化调度器212内。挂起检测和校正单元402以及挂起定时器404可以通过硬件、软件或使用其任何组合来实施。
虚拟化调度器212的挂起检测和校正单元402在虚拟化上下文切换期间检查挂起,且响应于检测到此类挂起而执行校正动作。使用挂起定时器404来完成检测所述挂起。更具体来说,挂起检测和校正单元402结合请求在APD 116上停止工作而开始挂起定时器404上的倒计时。如果挂起定时器404指示特定阈值时间量已经流逝且APD 116尚未确认在APD116中实际上已经停止工作,那么挂起检测和校正单元402认为已经发生挂起。如果挂起检测和校正单元402检测到在挂起定时器404到达阈值时间值之前已经按照请求在APD 116中完成工作,那么认为不会发生挂起,且虚拟化调度器212正常进行,从而致使针对后续功能执行工作。
在挂起检测和校正单元402检测到挂起的情况下,挂起检测和校正单元402致使发生若干事件来对挂起作出响应。更具体来说,挂起检测和校正单元402经由中断信号向管理程序206通知已经针对特定功能发生挂起。此中断信号致使管理程序206中断处理器102上的其他操作并且在APD 116上执行与虚拟化上下文切换挂起相关联的处理程序。处理程序向APD 116发出虚拟功能-功能层级复位(“VF FLR”)请求,并且还向与挂起功能相关联的VM告知发生复位。
响应于接收到虚拟功能-功能层级复位请求,APD 116针对挂起功能执行虚拟功能-功能层级复位。一般来说,虚拟功能-功能层级复位将指定虚拟功能的状态设定回到预初始化状态,使得停止为那个虚拟功能执行工作,并且使得对应的虚拟机可以再次初始化那个虚拟功能。虚拟功能-功能层级复位尤其中断APD 116中的进行中的工作,且还包括清除APD 116中的虚拟功能的状态和数据,使得可以重新初始化所述功能。被清除的状态的实例包括在虚拟化上下文切换期间保存的状态、进入命令缓冲器中的指针、SIMD单元138的指令指针以及APD 116执行所涉及的其他状态。
响应于管理程序206向VM告知APD 116发生复位,VM停止向APD 116发出命令。另外,VM重新初始化曾复位的虚拟功能。此初始化涉及向管理程序206请求并且获得对APD116的专门访问,其中专门访问意味着VM能够直接访问APD 116的特征,例如寄存器等。通过专门访问,VM设定各种寄存器的值并且执行其他初始化功能。在完成初始化之后,VM放弃对APD 116的专门访问。
图5是根据实例用于检测APD 116上的功能的挂起并且对那个挂起作出响应的方法的流程图。虽然相对于图1至图4的***来描述图5的操作,但应理解,具有如所说明或者以任何其他技术上可行的次序的步骤的由任何***执行的方法500属于本公开的范围。
如所示,方法500开始于步骤502,其中虚拟化调度器212确定当前功能的时间切片已经到期,且因此请求APD 116停止当前功能的工作。在步骤504,虚拟化调度器212确定APD116是否在超时持续时间之前按照请求停止工作。超时持续时间是在其之后如果APD 116尚未按照请求停止工作便认为已经发生挂起的时间周期。如果APD 116在超时持续时间之前停止工作,那么方法500前进到步骤512,且如果APD 116在超时持续时间之前未停止工作,那么方法500前进到步骤506。
在步骤506,虚拟化调度器212向管理程序206传输挂起通知中断,从而向管理程序206告知已经针对所述功能发生挂起。管理程序206将此通知转发到GPU虚拟化驱动程序121。响应于此通知,GPU虚拟化驱动程序121从在处理器102上运行的其他软件抢占执行,且针对虚拟功能挂起执行处理程序。处理程序指令APD 116复位挂起功能,且向与挂起功能相关联的VM通知所述功能已经挂起。响应于接收到那个指令,在步骤508,APD 116将挂起功能复位。
响应于在VM处从GPU虚拟化驱动程序121接收到功能被挂起的通知,那个VM的GPU驱动程序停止针对挂起功能向APD 116发出命令,且当APD 116已经复位时,在步骤510重新初始化那个VM的所述功能。重新初始化包括清除驱动程序软件状态、重新编程发动机(即,APD 116)设定,且向GPU虚拟化驱动程序121通知重新初始化已经完成。在步骤510之后,方法500前进到步骤512–APD 116执行另一功能的工作。
应理解,基于本文公开内容,许多变化是可能的。举例来说,虽然在本文已经将PCIe描述为特定互连构造,但可以替代地使用任何其他技术上可行的互连构造。虽然特征和元件在上文以特定组合进行描述,但是每个特征或元件可以在不具有其他特征和元件的情况下单独使用,或者在具有或不具有其他特征和元件的情况下以各种组合来使用。
可以在通用计算机、处理器或处理器核心中实施所提供的方法。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心联合的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可以通过使用经处理的硬件描述语言(HDL)指令的结果以及包括网表的其他中间数据(所述指令能够存储在计算机可读介质上)来配置制造过程而制造所述处理器。此类处理的结果可以是集成电路布图设计,其随后用于半导体制造过程中来制造实施本公开的特征的处理器。
本文提供的方法或流程图可以实施于计算机程序、软件或固件中,其并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行。非暂时性计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、磁性介质,例如内部硬盘和可装卸盘、磁光介质,以及光学介质,例如CD-ROM盘和数字多功能盘(DVD)。

Claims (20)

1.一种用于从虚拟化加速处理装置APD中的挂起恢复过来的方法,所述方法包括:
在第一绘图调用结束之后且在第二绘图调用开始之前,由被配置为支持与当前功能相关联的第一虚拟机的管理程序外部的虚拟化调度器发出针对所述APD的所述当前功能停止所述APD上的操作的第一请求;
由所述虚拟化调度器确定自从发出所述第一请求以来在超时周期已经流逝之后所述APD的操作尚未停止;
响应于所述确定,向所述管理程序发出第一挂起中断信号;
从处理程序接收复位所述当前功能的指令,其中,所述管理程序将所述第一挂起中断信号转发到虚拟化驱动程序,其中,所述虚拟化驱动程序响应于接收到所述第一挂起中断信号而执行所述处理程序;以及
响应于复位所述当前功能的指令,通过所述APD复位所述当前功能。
2.如权利要求1所述的方法,进一步包括:
在针对所述当前功能将所述APD复位之后,在所述第一虚拟机的引导下初始化所述当前功能。
3.如权利要求1所述的方法,其中:
响应于确定将要发生虚拟化上下文切换而执行发出所述针对所述当前功能停止所述APD上的操作的第一请求。
4.如权利要求3所述的方法,其中确定将要发生所述虚拟化上下文切换包括:确定指派给所述当前功能的时间切片已经流逝。
5.如权利要求1所述的方法,其中:
所述针对所述当前功能停止所述APD上的操作的第一请求包括完成所述当前功能的工作并且在完成所述工作之后使所述APD的处理元件闲置的请求。
6.如权利要求1所述的方法,其中针对所述当前功能将所述APD复位包括:
将所述当前功能置于其中所述当前功能准备好被初始化的状态。
7.如权利要求6所述的方法,其中针对所述当前功能将所述APD复位进一步包括:
迫使所述APD上的所述当前功能的操作停止,并且清除所述当前功能的状态。
8.如权利要求1所述的方法,进一步包括:
响应于接收到所述第一挂起中断信号,由所述管理程序向所述第一虚拟机发出挂起通知。
9.如权利要求8所述的方法,进一步包括:
响应于接收到所述挂起通知,由所述第一虚拟机停止向所述APD发出命令。
10.一种处理装置,所述装置包括:
处理器,所述处理器被配置成执行多个虚拟机和被配置为支持与当前功能相关联的所述多个虚拟机中的第一虚拟机的管理程序;以及
虚拟化加速处理装置APD,所述虚拟化加速处理装置与所述处理器通信,所述虚拟化APD被配置成:
支持一个或多个功能,所述功能对应于在所述处理器上执行的所述多个虚拟机中的不同虚拟机;
在第一绘图调用结束之后且在第二绘图调用开始之前,由所述APD的虚拟化调度器发出针对所述APD的当前功能停止所述APD上的操作的第一请求;
由所述虚拟化调度器确定自从发出所述第一请求以来在超时周期已经流逝之后所述APD的操作尚未停止;
响应于所述确定,向所述管理程序发出第一挂起中断信号;
从处理程序接收复位所述当前功能的指令,其中,所述管理程序将所述第一挂起中断信号转发到虚拟化驱动程序,其中,所述虚拟化驱动程序响应于接收到所述第一挂起中断信号而执行所述处理程序;以及
响应于复位所述当前功能的所述指令,通过所述APD复位所述当前功能。
11.如权利要求10所述的处理装置,其中所述APD进一步被配置成:
在针对所述当前功能将所述APD复位之后在所述第一虚拟机的引导下初始化所述当前功能。
12.如权利要求10所述的处理装置,其中:
所述APD被配置成响应于确定将要发生虚拟化上下文切换而发出所述针对所述当前功能停止所述APD上的操作的第一请求。
13.如权利要求12所述的处理装置,其中:
所述APD被配置成通过确定指派给所述当前功能的时间切片已经流逝而确定将要发生所述虚拟化上下文切换。
14.如权利要求10所述的处理装置,其中:
所述针对所述当前功能停止所述APD上的操作的第一请求包括完成所述当前功能的工作并且在完成所述工作之后使所述APD的处理元件闲置的请求。
15.如权利要求10所述的处理装置,其中所述APD被配置成通过以下操作而针对所述当前功能将所述APD复位:
将所述当前功能置于其中所述当前功能准备好被初始化的状态。
16.如权利要求15所述的处理装置,其中所述APD进一步被配置成通过以下操作而针对所述当前功能将所述APD复位:
迫使所述APD上的所述当前功能的操作停止,并且清除所述当前功能的状态。
17.如权利要求10所述的处理装置,其中:
所述处理器被配置成执行所述管理程序,所述管理程序被配置成响应于接收到所述第一挂起中断信号而向所述第一虚拟机发出挂起通知。
18.如权利要求17所述的处理装置,其中所述第一虚拟机进一步被配置成:
响应于接收到所述挂起通知而停止向所述APD发出命令。
19.一种加速处理装置APD,所述加速处理装置包括:
多个计算单元,和图形处理管线;以及
虚拟化调度器,所述虚拟化调度器被配置成:
针对一个或多个功能而支持所述计算单元和所述图形处理管线上的工作,所述功能对应于在处理器上执行的多个虚拟机中的不同虚拟机;
在第一绘图调用结束之后且在第二绘图调用开始之前,发出针对所述APD的当前功能停止所述APD上的操作的第一请求;
确定自从发出所述第一请求以来在超时周期已经流逝之后所述APD的操作尚未停止;
响应于所述确定,向被配置成支持与所述当前功能相关联的所述多个虚拟机中的第一虚拟机的管理程序发出第一挂起中断信号;
从处理程序接收复位所述当前功能的指令,其中,所述管理程序将所述第一挂起中断信号转发到虚拟化驱动程序,其中,所述虚拟化驱动程序响应于接收到所述第一挂起中断信号而执行所述处理程序;以及
响应于复位所述当前功能的指令,通过所述APD复位所述当前功能。
20.如权利要求19所述的APD,其中所述虚拟化调度器进一步被配置成:
在针对所述当前功能将所述APD复位之后在所述第一虚拟机的引导下初始化所述当前功能。
CN201710567201.3A 2017-07-12 2017-07-12 虚拟化加速处理装置的挂起检测 Active CN109254826B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710567201.3A CN109254826B (zh) 2017-07-12 2017-07-12 虚拟化加速处理装置的挂起检测
US15/663,499 US11182186B2 (en) 2017-07-12 2017-07-28 Hang detection for virtualized accelerated processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710567201.3A CN109254826B (zh) 2017-07-12 2017-07-12 虚拟化加速处理装置的挂起检测

Publications (2)

Publication Number Publication Date
CN109254826A CN109254826A (zh) 2019-01-22
CN109254826B true CN109254826B (zh) 2024-02-06

Family

ID=64999608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710567201.3A Active CN109254826B (zh) 2017-07-12 2017-07-12 虚拟化加速处理装置的挂起检测

Country Status (2)

Country Link
US (1) US11182186B2 (zh)
CN (1) CN109254826B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10672095B2 (en) 2017-12-15 2020-06-02 Ati Technologies Ulc Parallel data transfer to increase bandwidth for accelerated processing devices
US20220197679A1 (en) * 2020-12-18 2022-06-23 Advanced Micro Devices (Shanghai) Co., Ltd. Modifying device status in single virtual function mode
US20230206379A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Inline suspension of an accelerated processing unit
WO2023225991A1 (en) * 2022-05-27 2023-11-30 Intel Corporation Dynamic establishment of polling periods for virtual machine switching operations
CN116450306B (zh) * 2022-09-26 2023-12-26 宁德时代新能源科技股份有限公司 任务调度方法、装置、设备、存储介质及产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262038A (zh) * 2010-12-13 2013-08-21 超威半导体公司 图形计算进程调度

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
US8458429B2 (en) * 2006-12-31 2013-06-04 Texas Instruments Incorporated Memory controller idle mode
US10521265B2 (en) * 2008-09-19 2019-12-31 Microsoft Technology Licensing, Llc Coalescing periodic timer expiration in guest operating systems in a virtualized environment
JP6040101B2 (ja) * 2013-05-31 2016-12-07 株式会社日立製作所 ストレージ装置の制御方法、ストレージ装置及び情報処理装置
US10289437B2 (en) * 2014-01-07 2019-05-14 Red Hat Israel, Ltd. Idle processor management in virtualized systems via paravirtualization
US20150263776A1 (en) * 2014-03-11 2015-09-17 Hewlett-Packard Development Company, L.P. Protective cover for a device
GB201406392D0 (en) * 2014-04-09 2014-05-21 Advanced Risc Mach Ltd Data processing systems
GB2525003B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
GB2525002B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data processing systems
US9690495B2 (en) * 2015-11-03 2017-06-27 International Business Machines Corporation Emulating memory mapped I/O for coherent accelerators in error state

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103262038A (zh) * 2010-12-13 2013-08-21 超威半导体公司 图形计算进程调度

Also Published As

Publication number Publication date
US20190018699A1 (en) 2019-01-17
US11182186B2 (en) 2021-11-23
CN109254826A (zh) 2019-01-22

Similar Documents

Publication Publication Date Title
CN109254826B (zh) 虚拟化加速处理装置的挂起检测
EP3646177B1 (en) Early virtualization context switch for virtualized accelerated processing device
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
CN108463804B (zh) 自适应上下文切换
KR102510524B1 (ko) 조합된 월드-공간 파이프라인 셰이더 스테이지
US20220058048A1 (en) Varying firmware for virtualized device
US10509666B2 (en) Register partition and protection for virtualized processing device
CN108140233B (zh) 一种用于数据处理的方法和设备
US10545800B2 (en) Direct doorbell ring in virtualized processing device
US10453243B2 (en) Primitive level preemption using discrete non-real-time and real time pipelines
JP2020513631A (ja) アウトオブオーダキャッシュリターン
JP2021504828A (ja) 処理ユニットにおけるワークロードの正確な停止及び再開
US20230205608A1 (en) Hardware supported split barrier
US20210089423A1 (en) Flexible multi-user graphics architecture
US20220179784A1 (en) Techniques for supporting large frame buffer apertures with better system compatibility
CN115803770A (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