通过应用程序访问图形处理单元存储器的技术的制作方法

文档序号:6504550阅读:153来源:国知局
通过应用程序访问图形处理单元存储器的技术的制作方法
【专利摘要】这里公开了多个实施例,其可以允许应用程序直接访问图形处理单元存储器。一种装置和计算机实现方法,可以包括经由来自第一资源的链接访问第二资源的分配的图形处理单元存储器。可以将分配的图形处理单元存储器映射到中央处理单元的一个或多个页表。将来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序。
【专利说明】通过应用程序访问图形处理单元存储器的技术
【背景技术】
[0001]应用程序编程接口使软件程序能够彼此进行通信。通过使用动态链接库,应用程序编程接口可以执行诸如游戏编程和视频编程的多媒体任务。由于应用程序编程接口可以是平台独立的,所以它们允许程序员快速地访问三维图形和声音以创建计算机游戏,例如而不需要对计算机设备的基础硬件的特定知识。
[0002]计算平台可以创建一批应用程序编程接口。例如,Microsoft?公司提供了一批称为DirectX?的应用程序编程接口,其经常用于Microsoft?平台上的多媒体任务。DirectX?中的应用程序编程接口被设计为将来自图形处理单元存储器的数据复制到资源。然后应用程序可以经由资源访问所复制的数据。虽然此模式对于具有本地存储器的离散图形处理单元是有益的,但是此模式在集成式的图形处理单元中是浪费的。具有统一存储器结构的图形处理单元具有存储在相同存储器中的所有资源,因此资源的复制潜在地浪费存储器、性能和电力。因此,需要改善技术来解决这些和其他问题。
【专利附图】

【附图说明】
[0003]图1图示出系统的框图。
[0004]图2图示出多个应用程序编程接口的一个实施例。
[0005]图3图示出第一逻辑流程的一个实施例。
[0006]图4图示出第二逻辑流程的一个实施例。
[0007]图5图示出第三逻辑流程的一个实施例。
[0008]图6图示出系统的实施例。
[0009]图7图示出通信结构的实施例。
【具体实施方式】
[0010]实施例主要涉及存储器管理技术。一些实施例尤其涉及布置为允许应用程序直接访问图形处理单元存储器的存储器管理技术。在一个实施例中,例如,一组应用程序接口可以被设计或修改为允许应用程序访问存储在图形处理单元的存储器中的数据,无需首先将数据复制到另一个存储器单元。这减少了访问图形处理存储器所需要的存储器复制的次数,这导致更加有效的全面管理存储器。
[0011]计算平台可以包括多个处理单元,诸如中央处理单元和图形处理单元。中央处理单元通过执行基本的算术运算和逻辑运算来运行指令。图形处理单元操纵和更改存储器以加速创建能够输出到显示器的图像。图形处理单元和中央处理单元可以均包括存储区域。图形处理单元存储器可以包括从图形处理单元的存储区域分配且映射到图形处理单元的页表的物理存储器。可以使用资源来分配来自处理单元的存储器。
[0012]资源是在应用编程模型中创建且使用的存储区域或存储器单元。资源可以包括诸如数据结构或存储器阵列的存储装置。资源可以包括但不限于:顶点缓冲区、索引缓冲区、常量缓冲区、纹理以及着色程序资源。资源可以创建在存储器中。例如,资源可以创建在系统存储器、视频存储器或任何其他类型的存储器中。
[0013]应用程序可以利用资源来创建或更新多媒体信息。例如,应用程序可以用于对游戏和/或视频进行编程。应用程序可以使用一组应用程序接口以创建和/或访问包含应用程序所使用的多媒体信息的资源。例如,Microsoft?具有经常用于在Microsoft?平台上的多媒体应用程序的称作DirectX㊣的一批应用程序编程接口。尽管一些实施例可以通过示例的方式在DirectX?的上下文中进行描述,但是可以利用在本文描述的技术而修改任何应用程序编程接口。实施例不限于此上下文。
[0014]应用程序编程接口能够创建从中央处理单元存储器分配的资源。能够被中央处理单元直接访问的资源称为分段资源(staging resource)0可替代地,应用程序编程接口可以创建从图形处理单元存储器分配的资源。能够被图形处理单元直接访问的资源被称为非分段资源。
[0015]目前,当资源是从处理单元之一分配的存储器时,另一处理单元不能直接访问来自此资源的存储器数据。为了访问存储器数据,将存储器数据复制到新的资源。例如,DirectX?应用程序编程接口可以创建非分段资源。非分段资源可以存储来自图形处理单元存储器的信息。然而,应用程序不能访问非分段资源中所存储的来自图形处理单元存储器的存储器数据。而是,为了应用程序访问所存储的来自图形处理单元存储器的存储器数据,DirectX?应用程序编程接口可以创建分段资源。所存储的来自图形处理单元存储器的存储器数据可以复制到分段资源。然后应用程序能够通过中央处理单元访问分段资源中所存储的来自图形处理单元存储器的存储器数据。
[0016]在具有统一的存储器结构的集成式图形处理单元中,将图形处理单元存储器从一个资源复制到另一个资源是浪费的。因为所有的资源都存储在同一存储器中,所以将信息从一个资源复制到另一个资源浪费了图形处理单元周期和电力。
[0017]除了其他应用程序编程接口外,本文描述的实施例创建DirectX?的当前应用程序编程接口以允许应用程序直接访问图形处理单元存储器。当前,至少三个DirectX?应用程序编程接口用于允许应用程序访问图形处理单元存储器。三个应用程序编程接口是:
(I)创建资源应用程序编程接口 ;(2)资源复制应用程序编程接口 ;以及(3)映射分段资源应用程序编程接口。通过使用相同的应用程序名称以及向应用程序和应用程序编程接口提供新的功能,可改善应用程序编程模型,而对被设计为利用这种应用程序编程接口的应用程序(如果有的话)只有少量改变。程序员可以同一应用程序来创建程序,同时因为浪费了更少的资源而更有效地使用存储器,并且保存了电力。
[0018]因此,各实施例描述了修改现有的应用程序编程接口,以允许应用程序直接访问分配有图形处理单元存储器的非分段资源。通过修ftDirectX?应用程序编程接口,可以节省图形处理单元周期和电力,而无需程序员学习新的术语。在这里描述的实施例中,程序员在允许应用程序确定存储器结构并创建最有效地保持电力和性能的资源的同时,能够使用相同的应用程序名称和应用程序编程接口。
[0019]在实施例中,装置可以包括处理器电路和在处理器电路上操作的图形驱动器,以允许应用程序直接访问分配有图形处理单元存储器的资源。图形驱动器可以操作用于实施创建资源应用程序编程接口。创建资源应用程序编程接口可以从应用程序接收用于直接访问图形处理单元存储器的请求。基于来自应用程序的信息,图形驱动器可以指定第一资源和第二资源作为共享资源。第一资源可以包括例如分段资源。第二资源可以包括例如非分段资源。通过标记第一资源和第二资源为共享资源,图形驱动器可以表明被请求的应用程序直接访问分配有图形处理单元存储器的资源。
[0020]创建资源应用程序编程接口可以为第二资源分配图形处理单元存储器。然而,创建资源应用程序编程接口可以不为第一资源分配图形处理单元存储器。而是,图形驱动器可以操作以实施资源复制应用程序编程接口,以便在资源被指定为共享时在第一资源中创建指向第二资源的指针。
[0021]图形驱动器可以操作以实施映射分段资源应用程序编程接口,以跟随从第一资源至第二资源的分配的图形处理单元存储器的指针。图形驱动器可以进一步操作以实施映射分段资源编程接口,以将第二资源的分配的图形处理单元存储器映射到中央处理单元中的一个或多个页表,并且将图形处理单元存储器的虚拟地址从中央处理单元的一个或多个页表发送到应用程序。图形驱动器可以将具有图形处理单元存储器的虚拟地址的虚拟指针发送到应用程序。然后应用程序可以利用虚拟指针访问在图形处理单元存储器的虚拟地址处存储的数据。以这种方式,图形驱动器可以允许应用程序直接访问在图形处理单元存储器中存储的数据。
[0022]这里描述的实施例可以提供优于常规应用程序编程接口的多个优势。通过允许应用程序直接访问图形处理单元存储器,因为浪费很少资源所以存储器被更有效地使用。更有效的存储器分配可以提高应用程序速度。另外,允许应用程序直接访问图形处理单元存储器还可以保留电力,因为很少浪费图形处理单元周期。当系统在电池电源上运行时,因为其能够延长电池的寿命所以减少的电力消耗尤其有益。
[0023]现在参考附图,其中在全部附图中相似的附图标记用于指代相似的元件。在下面的描述中,为了说明的目的,列出了许多特定细节以便提供其全面的理解。然而,明显的是,在没有这些特定细节的情况下也能够实践新颖的实施例。在其他例子中,已知的结构和设备示出在框图形式中以便于其描述。本发明覆盖了落在所要求保护的主题的精神和范围内的所有改进、等同和替代。
[0024]图1图示出实施示例性计算平台的系统100。系统100可以包括表示为中央处理单元10的处理器电路、表示为图形处理单元120的处理器电路以及存储器125。
[0025]中央处理单元110可以通过执行基本算术和逻辑运算来执行指令。图形处理单元120可以操纵和更改存储器以加速创建用于输出至显示器的图像。
[0026]图形处理单元120可以包括图形处理单元存储器120-1。图形处理单元存储器120-1是从图形处理单元的存储器区域分配的物理存储器。图形处理单元存储器120-1可以映射到图形处理单元的页表。在实施例中,图形处理单元存储器120-1可以位于与图形处理单元120相同的模具或芯片上,或者图形处理单元存储器120-1可以与图形处理单元120分离但可对其进行访问。
[0027]应用程序130可以包括用于创建或更新多媒体的一个或多个功能。应用程序130可以用于对游戏(诸如三维游戏)和/或视频进行编程。例如,应用程序130可以包括任务或功能,例如但不限于二维纹理应用程序、三维纹理应用程序、音效应用程序以及着色应用程序。
[0028]系统100可以进一步包括图形驱动器140。在运行时,应用程序130可以调用图形驱动器140以呈现视频内容的帧155。应用程序130可以使用一个或多个应用程序编程接口 135来调用图形驱动器140。应用程序编程接口 135可以用于在应用程序130和图形驱动器140之间进行通信。
[0029]然后图形驱动器140可以处理帧155至显示器160的呈现。帧呈现可以涉及或可以不涉及图形处理单元120。系统100可以通过交流170或电池电源180来提供电力。系统100还可以与数字显示器160通信地耦合。
[0030]图2图示出被应用程序130调用的多个更新的应用程序编程接口的实施例。当前在一组DirectX?应用程序编程接口中使用的应用程序编程接口创建资源以存储来自图形处理单元120的信息,并且将所存储的信息提供给中央处理单元110。然而,应用程序130不能直接地访问分配有图形处理单元存储器120-1的这些资源。更新的应用程序编程接口 135被修改为工作在先前存在的DirectX?框架和/或其他平台内,例如但不限于OpenGL?,以创建允许应用程序130直接访问图形处理单元存储器120-1的资源。例如,更新的应用程序编程接口 135可以被使用并且与DirectXlO—起工作。更新的应用程序编程接口 135可以替换当前使用的常规应用程序编程接口。
[0031]在实施例中,应用程序130可以使用一个或多个更新的应用程序编程接口 135,以便与图形驱动器140通信。更新的应用程序编程接口 135可以包括更新的创建资源应用程序编程接口 205、更新的资源复制应用程序编程接口 210以及更新的映射分段资源应用程序编程接口 215。例如,这些更新的应用程序编程接口 135可以与DirectX?应用程序编程模型一起使用,以允许应用程序130直接访问图形单元处理存储器120-1。
[0032]例如,应用程序130可以请求使用更新的创建资源应用程序编程接口 205通过图形驱动器140来创建资源。更新的创建资源应用程序编程接口 205可以创建资源。
[0033]应用程序130可以发送多个请求到图形驱动器140,使得利用更新的创建资源应用程序编程接口 205创建多个资源。例如,每个更新的创建资源应用程序编程接口 205可以创建单个资源。对于待创建的两个资源来说,更新的创建资源应用程序编程接口 205可以被应用程序130调用两次。
[0034]图3图示出创建资源的逻辑流程300的一个实施例。其中包括的是代表用于执行所公开结构的新颖方案的示例性方法的一个或多个流程图。虽然,为了简单说明的目的,一个或多个方法在这里示出为流程图或程序图的形式,并且示出和描述为一系列动作,但是,应当理解和了解的是,方法不受动作顺序的限制,因为一些动作可以根据其以不同的顺序发生和/或与这里示出和描述的其他动作一起并发发生。例如,本领域技术人员将理解和了解的是,方法可以可替代地表示为一系列相关的状态或事件,例如在状态图中。而且,对于新颖的实施不是需要方法中图示出的所有动作。
[0035]在实施例中,逻辑流程300可以在框305处发送创建资源的请求。请求可以从应用程序130以应用程序编程接口 135的形式发送到图形驱动器140。在实施例中,可以创建两个不同的资源。应用程序130可以经由更新的创建资源应用程序编程接口 205发送第一请求以创建资源。例如,请求可以使图形驱动器140创建分段资源。分段资源是使用DirectX?—般创建的资源。目前,DirectX?中的分段资源存储来自图形处理单元120的数据,用于由中央处理单元110和应用程序130访问。
[0036]逻辑流程300可以在框310处确定是否专门地格式化初始化数据。由应用程序130发送到图形驱动器140的请求可以包括特殊格式化的初始化数据,以指示应用程序130正请求直接访问图形单元处理存储器120-1。例如,特殊格式化的数据可以包括具有一个或多个标记的数据、具有特定类型加密的数据、包头中的数据,或图形驱动器140确定应用程序130请求的访问类型所使用的其他方法。
[0037]在实施例中,当初始化数据没有被专门地格式化时,逻辑流程300可以在框315处为资源分配图形处理单元存储器。如上所述,图形处理单元存储器120-1可以是从图形处理单元的存储器区域分配并且能够映射到图形处理单元的页表的物理存储器。例如,在DirectX?应用程序编程模型中,当创建资源时,可以为资源分配来自图形处理单元120的存储器。如果初始化数据没有被特殊的格式化,那么资源的创建可以跟随为资源分配图形处理单元存储器120-1的当前过程,因为应用程序130不需要直接访问图形处理单元存储器 120-1。
[0038]当初始化数据被专门地格式化时,逻辑流程300可以在框320处确定资源是否是分段资源。图形驱动器140可以基于应用程序130的请求而创建分段资源或非分段资源。例如,利用更新的创建资源应用程序编程接口 205,可以使用DirectX?的框架创建分段资源。目前DirectX?创建分段资源以存储信息,诸如图形处理单元存储器。目前DirectX?允许分段资源由中央处理单元110访问。在另一示例中,利用更新的创建资源应用程序编程接口 205,使用DirectX?的框架创建非分段资源。在一个实施例中,非分段资源可以是创建的不是分段资源的资源。目前DirectX?默认创建非分段资源。目前,非分段资源被分配图形处理单元存储器120-1,并且大部分非分段资源不能被应用程序130直接访问。
[0039]当应用程序130将特殊格式化的初始化数据传送到图形驱动器140并且资源是分段资源时,逻辑流程300可以在框330处不为分段资源分配图形处理单元存储器120-1。不像目前的DirectX?创建资源应用程序处理接口,更新的创建资源应用程序编程接口 205可以确定初始化数据被专门地格式化,并因此停止分段资源被分配在图形处理单元存储器120-1中。通过中止图形处理单元存储器120-1的分配,分段资源可以用在随后的更新的应用程序编程接口 135中,以为应用程序130提供直接访问分配有图形处理单元存储器120-1的非分段资源。
[0040]逻辑流程300可以在框320处确定资源是非分段资源。应用程序130可以请求图形驱动器140创建非分段资源。应用程序130可以为图形驱动器140供应特殊格式化的初始化数据以创建非分段资源。
[0041]逻辑流程300可以在框325处为非分段资源分配图形处理单元存储器120_1。可以为非分段资源从图形处理单元存储器120-1分配物理存储器。更新的创建资源应用程序编程接口 205可以继续在分配图形处理单元存储器120-1的DirectX?中常规教导的过程。然而,在更新的创建资源应用程序编程接口 205中,只有非分段资源可以被分配图形处理单元存储器。
[0042]逻辑流程300可以在框327处将非分段资源的分配的图形处理单元存储器120_1映射到中央处理单元110页表。图形驱动器140可以向操作系统请求非分段资源是可锁定的,以使得非分段资源的分配的图形处理单元存储器120-1能映射到中央处理单元110页表。
[0043]逻辑流程300可以在框340处将具有特殊格式化的初始化数据的资源指定为共享资源。例如,应用程序130可以将第一请求发送至图形驱动器140,以创建分段资源。应用程序130可以将特殊格式化的初始化数据发送到图形驱动器140,以创建共享的分段资源。在另一个示例中,应用程序130可以将第二请求发送至图形驱动器140,以创建非分段资源。应用程序130可以将特殊格式化的初始化数据发送到图形驱动器140,以创建共享的非分段资源。通过将分段资源和非分段资源指定为共享的,图形驱动器能够使用分段资源和非分段资源以允许应用程序130直接访问图形处理单元的存储器120-1。
[0044]用于上述实施例的示例性伪代码可以如下:
[0045]
('reatcResource ()
{
//只在存在初始化数据时创建资源 If (ResonrceHasIniiiaHzaiionDaia ( ) <Sc<ScIsIniiializaUonDaiaExiension
[0046]``
【权利要求】
1.一种计算机实现的方法,包括: 经由来自第一资源的链接访问第二资源的分配的图形处理单元存储器; 将所述分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及将来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序。
2.根据权利要求1所述的计算机实现的方法,包括: 创建所述第一资源和第二资源以允许所述应用程序直接访问所述图形处理单元存储器,所述第一资源和所述第二资源包括数据结构。
3.根据权利要求1所述的计算机实现方法,包括: 为所述第二资源分配所述图形处理单元存储器。
4.根据权利要求1所述的计算机实现的方法,包括: 接收对于所述应用程序直接访问所述图形处理单元存储器的请求。
5.根据权利要求1所述的计算机实现的方法,所述第一资源包括分段资源,并且所述第二资源包括非分段资源。
6.根据权利要求1所述的计算机实现的方法,包括: 将所述第一资源和所述第二资源指定为共享资源。`
7.根据权利要求1所述的计算机实现的方法,包括: 当所述第一资源为分段资源时,中止为所述第一资源分配所述图形处理单元存储器。
8.根据权利要求1所述的计算机实现的方法,包括: 在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针以创建所述链接。
9.根据权利要求1所述的计算机实现的方法,包括: 接收来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址。
10.根据权利要求1所述的计算机实现的方法,包括: 基于读取和写入标记之一来确定是否清除所述图形处理单元存储器的高速缓存;以及 基于读取和写入标记之一来确定是否使所述图形处理单元存储器的高速缓存无效。
11.一种装置,包括: 处理器电路;以及 图形驱动器,其能够在所述处理器电路上操作以允许应用程序直接访问图形处理单元存储器,所述图形驱动器用以实施一个或多个应用程序编程接口,包括: 创建资源应用程序编程接口,用于 将第一资源和第二资源指定为共享资源,以及 为所述第二资源分配图形处理单元存储器; 资源复制应用程序编程接口,用于在所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针;或者映射分段资源应用程序编程接口,用于 跟随从所述第一资源至所述第二资源的分配的图形处理单元存储器的指针, 将所述第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,以及 将来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址发送到应用程序。
12.根据权利要求11所述的装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以确定用于所述第二资源的初始化数据是否被专门地格式化。
13.根据权利要求11所述的装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以确定用于所述第一资源的初始化数据是否被专门地格式化。
14.根据权利要求11所述的装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以中止为所述第一资源分配图形处理单元存储器。
15.根据权利要求11所述的装置,所述图形驱动器用以实施所述资源复制应用程序编程接口,以在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
16.根据权利要求11所述的装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以接收具有来自一个或多个中央处理单元页表的虚拟地址的虚拟指针。
17.根据权利要求11所述的装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以将具有所述虚拟地址的虚拟指针发送至应用程序。
18.根据权利要求11所述的装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以基于标记确定是否清除所述图形处理单元存储器的高速缓存。
19.根据权利要求11所述的装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以基于标记确定是否使所述图形处理单元存储器的高速缓存无效。
20.根据权利要求11所述的装置,所述第一资源包括分段资源,并且所述第二资源包括非分段资源。
21.根据权利要求11所述的装置,包括: 数字显示器,其可操作地耦合到所述处理器电路。
22.至少一种机器可读介质,其包括多条指令,响应于在计算设备上运行所述指令而使得所述计算设备用于: 从第一资源访问第二资源的分配的图形处理单元存储器; 将所述分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及 发送来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址。
23.根据权利要求22所述的至少一种机器可读介质,其包括多条指令,响应于在计算设备上运行所述指令而使得所述计算设备:创建所述第一资源和第二资源以允许应用程序直接访问所述图形处理单元存储器,所述第一资源和第二资源包括数据结构。
24.根据权利要求22所述的至少一种机器可读介质,其包括多条指令,响应于在计算设备上运行所述指令使得所述计算设备:接收对于应用程序直接访问所述图形处理单元存储器的请求。
25.根据权利要求22所述的至少一种机器可读介质,其包括多条指令,响应于在计算设备上运行所述指令而使得所述计算设备:在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针,以创建所述第一资源和所述第二资源之间的链接。
26.根据权利要求22所述的至少一种机器可读介质,其包括多条指令,响应于在计算设备上运行所述指令而使得所述计算设备:接收来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址。
27.—种系统,包括: 处理器电路; 数字显示器,其可操作地耦合到所述处理器电路;以及 图形驱动器,其在所述处理器电路上操作以允许应用程序直接访问图形处理单元存储器,所述图形驱动器用以实施一个或多个应用程序编程接口,包括: 创建资源应用程序编程接口,用于 将第一资源和第二资源指定为共享资源,以及 为所述第二资源分配所述图形处理单元存储器; 资源复制应用程序编程接口,用于在所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针;或者 映射分段资源应用程序编程接口,用于 经由来自所述第一资源的指针访问所述第二资源的分配的图形处理单元存储器, 将所述第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,以及 将来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址发送到应用程序。
28.根据权利要求27所述的系统,包括: 无线电接收器,其可操作地耦合到所述处理器电路。
29.根据权利要求27所述的系统,所述图形驱动器用以实施所述资源复制应用程序编程接口,以在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
30.根据权利要求27所述的系统,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以接收具有来自一个或多个中央处理单元页表的虚拟地址的虚拟指针。
【文档编号】G06F9/445GK103513984SQ201310248749
【公开日】2014年1月15日 申请日期:2013年6月21日 优先权日:2012年6月22日
【发明者】M·阿波达卡 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1