买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】虚拟化加速处理装置的挂起检测_超威半导体公司;ATI科技无限责任公司_201710567201.3 

申请/专利权人:超威半导体公司;ATI科技无限责任公司

申请日:2017-07-12

公开(公告)日:2024-02-06

公开(公告)号:CN109254826B

主分类号:G06F9/455

分类号:G06F9/455;G06F9/48

优先权:

专利状态码:有效-授权

法律状态:2024.02.06#授权;2020.06.19#实质审查的生效;2019.01.22#公开

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

主权项:1.一种用于从虚拟化加速处理装置APD中的挂起恢复过来的方法,所述方法包括:在第一绘图调用结束之后且在第二绘图调用开始之前,由被配置为支持与当前功能相关联的第一虚拟机的管理程序外部的虚拟化调度器发出针对所述APD的所述当前功能停止所述APD上的操作的第一请求;由所述虚拟化调度器确定自从发出所述第一请求以来在超时周期已经流逝之后所述APD的操作尚未停止;响应于所述确定,向所述管理程序发出第一挂起中断信号;从处理程序接收复位所述当前功能的指令,其中,所述管理程序将所述第一挂起中断信号转发到虚拟化驱动程序,其中,所述虚拟化驱动程序响应于接收到所述第一挂起中断信号而执行所述处理程序;以及响应于复位所述当前功能的指令,通过所述APD复位所述当前功能。

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

权利要求: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复位。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.如权利要求10所述的APD,其中所述虚拟化调度器进一步被配置成:在针对所述当前功能将所述APD复位之后在所述第一虚拟机的引导下初始化所述当前功能。

百度查询: 超威半导体公司;ATI科技无限责任公司 虚拟化加速处理装置的挂起检测

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。