本发明专利技术公开一种用于向用户模式应用程序提供对加速处理设备计算资源的改进的访问的方法、系统和计算机程序产品。所公开的功能性允许用户模式应用程序向加速处理设备提供命令,而不需要内核模式转变以便存取统一环形缓冲区。替代地,应用程序各自具备其自己的缓冲区,所述加速处理设备硬件能够存取所述缓冲区以便处理命令。在完全操作系统支持下,用户模式应用程序能够以与CPU几乎相同的方式利用所述加速处理设备。
【技术实现步骤摘要】
【国外来华专利技术】图形计算进程调度
本专利技术大体上是针对计算系统。更具体来说,本专利技术是针对统一计算系统内部的计算部件。
技术介绍
对使用图形处理单元(GPU)来进行一般计算的渴望在最近由于GPU的示例性每单位功率性能和/或成本而变得更加显著。一般来说,GPU的计算能力已以超过对应中央处理器(CPU)平台的计算能力的速率增长。随着移动计算市场(例如,笔记本计算机、移动智能电话、平板计算机等)和其所必需的支持服务器/企业系统的蓬勃发展,这种增长已被用来提供指定品质的所需用户体验。因此,组合使用CPU和GPU来执行具有数据并行内容的工作量正在成为一项体积技术(volumetechnology)。然而,GPU传统上已在约束程序设计环境中进行操作,其可主要用于图形的加速。这些约束由以下事实而引起:GPU并不具有与CPU一样丰富的程序设计生态系统。因此,它们的使用已主要限于二维(2D)和三维(3D)图形以及少数前沿的多媒体应用,这些多媒体应用已被习惯地用于处理图形和视频应用程序设计接口(API)。随着多厂商支持的和标准API和支持工具的出现,GPU在传统应用中的限制已被扩展到传统图形的范围之外。虽然OpenCL和DirectCompute是有希望的开端,但是在创建允许将CPU和GPU组合来像CPU一样流畅地用于大多数程序设计任务的环境和生态系统方面仍存在着许多障碍。现有的计算系统常常包括多个处理装置。例如,一些计算系统包括在独立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU可能位于图形卡上)或在单个芯片封装中的CPU和GPU。然而,这两种布置仍包括与以下各项相关的重大挑战:(i)独立的存储系统、(ii)有效调度、(iii)提供进程之间的服务质量(QoS)保证、(iv)程序设计模型以及(v)编译至多个目标指令集体系结构(ISA)—全部都要同时使功耗降到最小。例如,离散的芯片布置迫使系统和软件体系结构设计者利用芯片间接口来使每一个处理器存取存储器。虽然这些外部接口(例如,芯片间接口)对用于配合异构型处理器的存储器等待时间和功耗具有负效应,但是独立的存储系统(即,独立的地址空间)和驱动器管理的共享存储器产生开销,所述开销对细粒卸荷(finegrainoffload)来说变得不可接受。离散芯片布置和单芯片布置两者都会限制能够发送至GPU来执行的命令的类型。举例来说,常常无法将计算命令(例如,物理或人工智能命令)发送至GPU来执行。存在这个限制是因为CPU可能相对快速地需要由这些计算命令执行的操作的结果。然而,由于当前系统中的向GPU分派工作的高开销以及这些命令可能必须排队等候首先执行其它先前发出的命令的事实,所以将计算命令发送至GPU所引发的等待时间常常是不可接受的。将GPU用于计算卸荷所面临的额外困难在于开发者可用以与GPU形成接口并且提供工作的软件工具。许多现存的软件工具被记住设计成具有GPU的图形能力,并且因此缺乏容易地向GPU提供非图形工作的能力。
技术实现思路
因此,所需要的是对GPU计算资源的可访问性的改进的支持。虽然GPU、加速处理单元(APU)以及通用用途的图形处理单元(GPGPU)是这个领域中常用的术语,但是表述“加速处理设备(APD)”被认为是更广义的表述。例如,APD是指硬件和/或软件的任何配合集合,与常规CPU、常规GPU、软件和/或其组合相比,所述任何配合集合以加速方式完成与加速图形处理任务、数据并行任务或嵌套数据并行任务相关的那些功能和计算。本专利技术的各种实施方案包括一种用于经由内核模式驱动器为应用程序分配APD工作队列、为所述应用程序分配计算进程控制块的方法和设备。计算进程控制块包括对工作队列的引用。所述方法和设备还包括由调度器选择计算进程控制块来执行,并且将来自由所述计算进程控制块所引用的工作队列的命令分派给APD。以下参照附图详细地描述本专利技术的额外特征和优点,连同本专利技术的各种实施方案的结构和操作。应该指出,本专利技术不限于本文所描述的具体实施方案。本文所提出的这类实施方案仅用于说明性目的。基于本文所包括的教义,一个或多个相关领域的技术人员将会明白额外的实施方案。附图说明并入本文并且形成本说明书的一部分的附图示出本专利技术的实施方案,并且与描述一起,进一步用于解释本专利技术的原理并且用于使相关领域技术人员能够制作并使用本专利技术。图1A是根据本专利技术的实施方案的处理系统的说明性方框图。图1B是图1A中所示的APD的说明性方框图。图2是图1B中所示的APD的较详细方框图。图3示出依赖于内核模式驱动器来向APD提交命令的数据流模型。图4示出将图3的数据流模型的概念应用于示例性Windows环境的额外数据流模型。图5示出根据本专利技术的实施方案的系统堆栈的示例性部件。图6示出根据本专利技术的实施方案的示例性数据流模型。图7示出根据本专利技术的实施方案的在运行时的体系结构的系统概观。图8是根据本专利技术的实施方案的示出对应用程序进行初始化的步骤的流程图。图9是示出应用程序提供命令来由APD执行的步骤的流程图。图10是根据本专利技术的实施方案的示出调度器调度APD命令的处理的步骤的流程图。图11是根据本专利技术的实施方案的示出在上下文切换中保存执行状态的步骤的流程图。图12是根据本专利技术的实施方案的示出基于软件的调度器能够向基于硬件的调度器提供引导的步骤的流程图。下文中参照附图详细地描述本专利技术的另外特征和优点以及本专利技术的各种实施方案的结构和操作。应注意,本专利技术不限于本文所描述的具体实施方案。本文中仅出于说明性目的来呈现这些实施方案。相关领域技术人员将基于本文中所含有的教义而明白额外实施方案。具体实施方式在以下详述中,对“一个实施方案”、“实施方案”、“示例实施方案”等的参考指示所描述的实施方案可以包括具体特征、结构或特点,但是每个实施方案可能并没有必要包括所述具体特征、结构或特点。此外,这类短语没有必要是指同一实施方案。另外,当结合一个实施方案描述具体特征、结构或特点时,所主张的是本领域技术人员知道结合无论是否被明确地描述的其它实施方案来实现这种特征、结构或特点。术语“本专利技术的实施方案”不要求本专利技术的所有实施方案都包括所论述的特征、优点或操作模式。在不脱离本专利技术的范围的情况下,可以设计出替代实施方案,并且可能并未详细描述或可能省略本专利技术的众所周知的元件,以免模糊本专利技术的相关细节。另外,本文所使用的术语仅出于描述具体实施方案的目的,而并不意图限制本专利技术。例如,如本文所使用,单数形式的“一个(种)”以及“所述”也意图包括复数形式,除非上下文另有明确指示。还将进一步理解的是,术语“包括”、“包括了”、“包含”和/或“包含了”在本文中使用时指明所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是并不排除一个或多个其它特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加。图1A是包括两个处理器(即,CPU102和APD104)的统一计算系统100的示例性图解。CPU102可以包括一个或多个单核或多核CPU。在本专利技术的一个实施方案中,系统100被形成在单个硅芯片或封装上,组合CPU102和APD104以提供统一的程序设计和执行环境。这个环境使得APD104能够像CPU102一样流畅地用于一些程序设计任务。然而,CPU102和APD104被形本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】2010.12.13 US 61/422,460;2011.11.04 US 13/289,2601.一种图形计算进程调度方法,其包括:响应于用户模式应用程序的请求,通过内核模式驱动器将工作队列分配给所述应用程序,其中所述工作队列能被加速处理设备直接存取;通过加速处理设备调度器选择所述应用程序以用于在所述加速处理设备内调度,其中来自处理器调度器的至少独立的指令被自动处理;以及在由所述加速处理设备存取时,分配不可分页的存储器分配以支持所述加速处理设备的至少页错误处理。2.如权利要求1所述的方法,其中所述工作队列包括用于所述应用程序的计算命令环形缓冲区。3.如权利要求1所述的方法,其进一步包括:将命令从所述应用程序转发至所述工作队列。4.如权利要求3所述的方法,其进一步包括:将所述命令存储在命令缓冲区中,其中将所述命令从所述应用程序转发至所述工作队列包括将所述命令从所述命令缓冲区转发至所述工作队列。5.如权利要求1所述的方法,其进一步包括:将与应用程序相关的所述工作队列登记在计算进程列表中,其中由所述加速处理设备调度器从所述计算进程列表选择所述工作队列来执行。6.如权利要求1所述的方法,其进一步包括:将用于先前应用程序的加速处理设备上下文数据存储在所述先前应用程序的对应上下文切换块中;以及从所述应用程序的对应上下文切换块恢复用于所述应用程序的加速处理设备上下文数据。7.如权利要求1所述的方法,其进一步包括:基于存储在计算进程控制块中的优先级信息来将一个或多个命令从由所述计算进程控制块引用的所述工作队列分派至所述加速处理设备。8.如权利要求1所述的方法,其中所述加速处理设备调度器被配置来作为所述内核模式驱动器的部件进行操作。9.如权利要求1所述的方法,其中所述加速处理设备调度器被配置来作为微处理器上的微码进行操作。10.如权利要求1所述的方法,其中所述加速处理设备调度器被配置来作为硬件逻辑电路进行操作。11.一种图形计算进程调度系统,所述系统包括:第一装置,用于响应于用户模式应用程序的请求,通过内核模式驱动器将工作队列分配给所述应用程序,其中所述工作队列能被加速处理设备直接存取;第二装置,用于通过加速处理设备调度器选择所述应用程序以用于在所述加速处理设备内调度,其中来自处理器调度器的至少独立的指令被自动处理;以及第三装置,用于在由所述加速处理设备存取时,分配不可分页的存储器分配以支持所述加速处理设备的至少页错误处理。12.如权利要求11所述的系统,其中工作队列包括用于所述应用程序的计算命令环形缓冲区。13.如权利要求11所述的系统,其进一步包括:第四装置,用于将命令从所述应用程序转发至所述工作队列。14.如权利要求13所述的系统,其进一步包括:第五装置,用于将所述命令存储在命令缓冲区中,其中将所述命令从所述...
【专利技术属性】
技术研发人员:杰弗里·G·程,马克·赫梅尔,伦德特·万多,保罗·布林勒,
申请(专利权)人:超威半导体公司,ATI科技无限责任公司,
类型:
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。