CN103513984B - 通过应用程序访问图形处理单元存储器的技术 - Google Patents

通过应用程序访问图形处理单元存储器的技术 Download PDF

Info

Publication number
CN103513984B
CN103513984B CN201310248749.3A CN201310248749A CN103513984B CN 103513984 B CN103513984 B CN 103513984B CN 201310248749 A CN201310248749 A CN 201310248749A CN 103513984 B CN103513984 B CN 103513984B
Authority
CN
China
Prior art keywords
resource
processing unit
graphics processing
unit memory
application program
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.)
Expired - Fee Related
Application number
CN201310248749.3A
Other languages
English (en)
Other versions
CN103513984A (zh
Inventor
M·阿波达卡
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN103513984A publication Critical patent/CN103513984A/zh
Application granted granted Critical
Publication of CN103513984B publication Critical patent/CN103513984B/zh
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/10Technologies improving the efficiency by using switched-mode power supplies [SMPS], i.e. efficient power electronics conversion e.g. power factor correction or reduction of losses in power supplies or efficient standby modes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

这里公开了多个实施例,其可以允许应用程序直接访问图形处理单元存储器。一种装置和计算机实现方法,可以包括经由来自第一资源的链接访问第二资源的分配的图形处理单元存储器。可以将分配的图形处理单元存储器映射到中央处理单元的一个或多个页表。将来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序。

Description

通过应用程序访问图形处理单元存储器的技术
背景技术
应用程序编程接口使软件程序能够彼此进行通信。通过使用动态链接库,应用程序编程接口可以执行诸如游戏编程和视频编程的多媒体任务。由于应用程序编程接口可以是平***立的,所以它们允许程序员快速地访问三维图形和声音以创建计算机游戏,例如而不需要对计算机设备的基础硬件的特定知识。
计算平台可以创建一批应用程序编程接口。例如,公司提供了一批称为的应用程序编程接口,其经常用于平台上的多媒体任务。中的应用程序编程接口被设计为将来自图形处理单元存储器的数据复制到资源。然后应用程序可以经由资源访问所复制的数据。虽然此模式对于具有本地存储器的离散图形处理单元是有益的,但是此模式在集成式的图形处理单元中是浪费的。具有统一存储器结构的图形处理单元具有存储在相同存储器中的所有资源,因此资源的复制潜在地浪费存储器、性能和电力。因此,需要改善技术来解决这些和其他问题。
附图说明
图1图示出***的框图。
图2图示出多个应用程序编程接口的一个实施例。
图3图示出第一逻辑流程的一个实施例。
图4图示出第二逻辑流程的一个实施例。
图5图示出第三逻辑流程的一个实施例。
图6图示出***的实施例。
图7图示出通信结构的实施例。
具体实施方式
实施例主要涉及存储器管理技术。一些实施例尤其涉及布置为允许应用程序直接访问图形处理单元存储器的存储器管理技术。在一个实施例中,例如,一组应用程序接口可以被设计或修改为允许应用程序访问存储在图形处理单元的存储器中的数据,无需首先将数据复制到另一个存储器单元。这减少了访问图形处理存储器所需要的存储器复制的次数,这导致更加有效的全面管理存储器。
计算平台可以包括多个处理单元,诸如中央处理单元和图形处理单元。中央处理单元通过执行基本的算术运算和逻辑运算来运行指令。图形处理单元操纵和更改存储器以加速创建能够输出到显示器的图像。图形处理单元和中央处理单元可以均包括存储区域。图形处理单元存储器可以包括从图形处理单元的存储区域分配且映射到图形处理单元的页表的物理存储器。可以使用资源来分配来自处理单元的存储器。
资源是在应用编程模型中创建且使用的存储区域或存储器单元。资源可以包括诸如数据结构或存储器阵列的存储装置。资源可以包括但不限于:顶点缓冲区、索引缓冲区、常量缓冲区、纹理以及着色程序资源。资源可以创建在存储器中。例如,资源可以创建在***存储器、视频存储器或任何其他类型的存储器中。
应用程序可以利用资源来创建或更新多媒体信息。例如,应用程序可以用于对游戏和/或视频进行编程。应用程序可以使用一组应用程序接口以创建和/或访问包含应用程序所使用的多媒体信息的资源。例如,具有经常用于在平台上的多媒体应用程序的称作的一批应用程序编程接口。尽管一些实施例可以通过示例的方式在的上下文中进行描述,但是可以利用在本文描述的技术而修改任何应用程序编程接口。实施例不限于此上下文。
应用程序编程接口能够创建从中央处理单元存储器分配的资源。能够被中央处理单元直接访问的资源称为分段资源(staging resource)。可替代地,应用程序编程接口可以创建从图形处理单元存储器分配的资源。能够被图形处理单元直接访问的资源被称为非分段资源。
目前,当资源是从处理单元之一分配的存储器时,另一处理单元不能直接访问来自此资源的存储器数据。为了访问存储器数据,将存储器数据复制到新的资源。例如,应用程序编程接口可以创建非分段资源。非分段资源可以存储来自图形处理单元存储器的信息。然而,应用程序不能访问非分段资源中所存储的来自图形处理单元存储器的存储器数据。而是,为了应用程序访问所存储的来自图形处理单元存储器的存储器数据,应用程序编程接口可以创建分段资源。所存储的来自图形处理单元存储器的存储器数据可以复制到分段资源。然后应用程序能够通过中央处理单元访问分段资源中所存储的来自图形处理单元存储器的存储器数据。
在具有统一的存储器结构的集成式图形处理单元中,将图形处理单元存储器从一个资源复制到另一个资源是浪费的。因为所有的资源都存储在同一存储器中,所以将信息从一个资源复制到另一个资源浪费了图形处理单元周期和电力。
除了其他应用程序编程接口外,本文描述的实施例创建的当前应用程序编程接口以允许应用程序直接访问图形处理单元存储器。当前,至少三个应用程序编程接口用于允许应用程序访问图形处理单元存储器。三个应用程序编程接口是:(1)创建资源应用程序编程接口;(2)资源复制应用程序编程接口;以及(3)映射分段资源应用程序编程接口。通过使用相同的应用程序名称以及向应用程序和应用程序编程接口提供新的功能,可改善应用程序编程模型,而对被设计为利用这种应用程序编程接口的应用程序(如果有的话)只有少量改变。程序员可以同一应用程序来创建程序,同时因为浪费了更少的资源而更有效地使用存储器,并且保存了电力。
因此,各实施例描述了修改现有的应用程序编程接口,以允许应用程序直接访问分配有图形处理单元存储器的非分段资源。通过修改应用程序编程接口,可以节省图形处理单元周期和电力,而无需程序员学习新的术语。在这里描述的实施例中,程序员在允许应用程序确定存储器结构并创建最有效地保持电力和性能的资源的同时,能够使用相同的应用程序名称和应用程序编程接口。
在实施例中,装置可以包括处理器电路和在处理器电路上操作的图形驱动器,以允许应用程序直接访问分配有图形处理单元存储器的资源。图形驱动器可以操作用于实施创建资源应用程序编程接口。创建资源应用程序编程接口可以从应用程序接收用于直接访问图形处理单元存储器的请求。基于来自应用程序的信息,图形驱动器可以指定第一资源和第二资源作为共享资源。第一资源可以包括例如分段资源。第二资源可以包括例如非分段资源。通过标记第一资源和第二资源为共享资源,图形驱动器可以表明被请求的应用程序直接访问分配有图形处理单元存储器的资源。
创建资源应用程序编程接口可以为第二资源分配图形处理单元存储器。然而,创建资源应用程序编程接口可以不为第一资源分配图形处理单元存储器。而是,图形驱动器可以操作以实施资源复制应用程序编程接口,以便在资源被指定为共享时在第一资源中创建指向第二资源的指针。
图形驱动器可以操作以实施映射分段资源应用程序编程接口,以跟随从第一资源至第二资源的分配的图形处理单元存储器的指针。图形驱动器可以进一步操作以实施映射分段资源编程接口,以将第二资源的分配的图形处理单元存储器映射到中央处理单元中的一个或多个页表,并且将图形处理单元存储器的虚拟地址从中央处理单元的一个或多个页表发送到应用程序。图形驱动器可以将具有图形处理单元存储器的虚拟地址的虚拟指针发送到应用程序。然后应用程序可以利用虚拟指针访问在图形处理单元存储器的虚拟地址处存储的数据。以这种方式,图形驱动器可以允许应用程序直接访问在图形处理单元存储器中存储的数据。
这里描述的实施例可以提供优于常规应用程序编程接口的多个优势。通过允许应用程序直接访问图形处理单元存储器,因为浪费很少资源所以存储器被更有效地使用。更有效的存储器分配可以提高应用程序速度。另外,允许应用程序直接访问图形处理单元存储器还可以保留电力,因为很少浪费图形处理单元周期。当***在电池电源上运行时,因为其能够延长电池的寿命所以减少的电力消耗尤其有益。
现在参考附图,其中在全部附图中相似的附图标记用于指代相似的元件。在下面的描述中,为了说明的目的,列出了许多特定细节以便提供其全面的理解。然而,明显的是,在没有这些特定细节的情况下也能够实践新颖的实施例。在其他例子中,已知的结构和设备示出在框图形式中以便于其描述。本发明覆盖了落在所要求保护的主题的精神和范围内的所有改进、等同和替代。
图1图示出实施示例性计算平台的***100。***100可以包括表示为中央处理单元10的处理器电路、表示为图形处理单元120的处理器电路以及存储器125。
中央处理单元110可以通过执行基本算术和逻辑运算来执行指令。图形处理单元120可以操纵和更改存储器以加速创建用于输出至显示器的图像。
图形处理单元120可以包括图形处理单元存储器120-1。图形处理单元存储器120-1是从图形处理单元的存储器区域分配的物理存储器。图形处理单元存储器120-1可以映射到图形处理单元的页表。在实施例中,图形处理单元存储器120-1可以位于与图形处理单元120相同的模具或芯片上,或者图形处理单元存储器120-1可以与图形处理单元120分离但可对其进行访问。
应用程序130可以包括用于创建或更新多媒体的一个或多个功能。应用程序130可以用于对游戏(诸如三维游戏)和/或视频进行编程。例如,应用程序130可以包括任务或功能,例如但不限于二维纹理应用程序、三维纹理应用程序、音效应用程序以及着色应用程序。
***100可以进一步包括图形驱动器140。在运行时,应用程序130可以调用图形驱动器140以呈现视频内容的帧155。应用程序130可以使用一个或多个应用程序编程接口135来调用图形驱动器140。应用程序编程接口135可以用于在应用程序130和图形驱动器140之间进行通信。
然后图形驱动器140可以处理帧155至显示器160的呈现。帧呈现可以涉及或可以不涉及图形处理单元120。***100可以通过交流170或电池电源180来提供电力。***100还可以与数字显示器160通信地耦合。
图2图示出被应用程序130调用的多个更新的应用程序编程接口的实施例。当前在一组应用程序编程接口中使用的应用程序编程接口创建资源以存储来自图形处理单元120的信息,并且将所存储的信息提供给中央处理单元110。然而,应用程序130不能直接地访问分配有图形处理单元存储器120-1的这些资源。更新的应用程序编程接口135被修改为工作在先前存在的框架和/或其他平台内,例如但不限于,以创建允许应用程序130直接访问图形处理单元存储器120-1的资源。例如,更新的应用程序编程接口135可以被使用并且与DirectX10一起工作。更新的应用程序编程接口135可以替换当前使用的常规应用程序编程接口。
在实施例中,应用程序130可以使用一个或多个更新的应用程序编程接口135,以便与图形驱动器140通信。更新的应用程序编程接口135可以包括更新的创建资源应用程序编程接口205、更新的资源复制应用程序编程接口210以及更新的映射分段资源应用程序编程接口215。例如,这些更新的应用程序编程接口135可以与应用程序编程模型一起使用,以允许应用程序130直接访问图形单元处理存储器120-1。
例如,应用程序130可以请求使用更新的创建资源应用程序编程接口205通过图形驱动器140来创建资源。更新的创建资源应用程序编程接口205可以创建资源。
应用程序130可以发送多个请求到图形驱动器140,使得利用更新的创建资源应用程序编程接口205创建多个资源。例如,每个更新的创建资源应用程序编程接口205可以创建单个资源。对于待创建的两个资源来说,更新的创建资源应用程序编程接口205可以被应用程序130调用两次。
图3图示出创建资源的逻辑流程300的一个实施例。其中包括的是代表用于执行所公开结构的新颖方案的示例性方法的一个或多个流程图。虽然,为了简单说明的目的,一个或多个方法在这里示出为流程图或程序图的形式,并且示出和描述为一系列动作,但是,应当理解和了解的是,方法不受动作顺序的限制,因为一些动作可以根据其以不同的顺序发生和/或与这里示出和描述的其他动作一起并发发生。例如,本领域技术人员将理解和了解的是,方法可以可替代地表示为一系列相关的状态或事件,例如在状态图中。而且,对于新颖的实施不是需要方法中图示出的所有动作。
在实施例中,逻辑流程300可以在框305处发送创建资源的请求。请求可以从应用程序130以应用程序编程接口135的形式发送到图形驱动器140。在实施例中,可以创建两个不同的资源。应用程序130可以经由更新的创建资源应用程序编程接口205发送第一请求以创建资源。例如,请求可以使图形驱动器140创建分段资源。分段资源是使用一般创建的资源。目前,中的分段资源存储来自图形处理单元120的数据,用于由中央处理单元110和应用程序130访问。
逻辑流程300可以在框310处确定是否专门地格式化初始化数据。由应用程序130发送到图形驱动器140的请求可以包括特殊格式化的初始化数据,以指示应用程序130正请求直接访问图形单元处理存储器120-1。例如,特殊格式化的数据可以包括具有一个或多个标记的数据、具有特定类型加密的数据、包头中的数据,或图形驱动器140确定应用程序130请求的访问类型所使用的其他方法。
在实施例中,当初始化数据没有被专门地格式化时,逻辑流程300可以在框315处为资源分配图形处理单元存储器。如上所述,图形处理单元存储器120-1可以是从图形处理单元的存储器区域分配并且能够映射到图形处理单元的页表的物理存储器。例如,在应用程序编程模型中,当创建资源时,可以为资源分配来自图形处理单元120的存储器。如果初始化数据没有被特殊的格式化,那么资源的创建可以跟随为资源分配图形处理单元存储器120-1的当前过程,因为应用程序130不需要直接访问图形处理单元存储器120-1。
当初始化数据被专门地格式化时,逻辑流程300可以在框320处确定资源是否是分段资源。图形驱动器140可以基于应用程序130的请求而创建分段资源或非分段资源。例如,利用更新的创建资源应用程序编程接口205,可以使用的框架创建分段资源。目前创建分段资源以存储信息,诸如图形处理单元存储器。目前允许分段资源由中央处理单元110访问。在另一示例中,利用更新的创建资源应用程序编程接口205,使用的框架创建非分段资源。在一个实施例中,非分段资源可以是创建的不是分段资源的资源。目前默认创建非分段资源。目前,非分段资源被分配图形处理单元存储器120-1,并且大部分非分段资源不能被应用程序130直接访问。
当应用程序130将特殊格式化的初始化数据传送到图形驱动器140并且资源是分段资源时,逻辑流程300可以在框330处不为分段资源分配图形处理单元存储器120-1。不像目前的创建资源应用程序处理接口,更新的创建资源应用程序编程接口205可以确定初始化数据被专门地格式化,并因此停止分段资源被分配在图形处理单元存储器120-1中。通过中止图形处理单元存储器120-1的分配,分段资源可以用在随后的更新的应用程序编程接口135中,以为应用程序130提供直接访问分配有图形处理单元存储器120-1的非分段资源。
逻辑流程300可以在框320处确定资源是非分段资源。应用程序130可以请求图形驱动器140创建非分段资源。应用程序130可以为图形驱动器140供应特殊格式化的初始化数据以创建非分段资源。
逻辑流程300可以在框325处为非分段资源分配图形处理单元存储器120-1。可以为非分段资源从图形处理单元存储器120-1分配物理存储器。更新的创建资源应用程序编程接口205可以继续在分配图形处理单元存储器120-1的中常规教导的过程。然而,在更新的创建资源应用程序编程接口205中,只有非分段资源可以被分配图形处理单元存储器。
逻辑流程300可以在框327处将非分段资源的分配的图形处理单元存储器120-1映射到中央处理单元110页表。图形驱动器140可以向操作***请求非分段资源是可锁定的,以使得非分段资源的分配的图形处理单元存储器120-1能映射到中央处理单元110页表。
逻辑流程300可以在框340处将具有特殊格式化的初始化数据的资源指定为共享资源。例如,应用程序130可以将第一请求发送至图形驱动器140,以创建分段资源。应用程序130可以将特殊格式化的初始化数据发送到图形驱动器140,以创建共享的分段资源。在另一个示例中,应用程序130可以将第二请求发送至图形驱动器140,以创建非分段资源。应用程序130可以将特殊格式化的初始化数据发送到图形驱动器140,以创建共享的非分段资源。通过将分段资源和非分段资源指定为共享的,图形驱动器能够使用分段资源和非分段资源以允许应用程序130直接访问图形处理单元的存储器120-1。
用于上述实施例的示例性伪代码可以如下:
返回参照图2,在应用程序130请求更新的创建资源应用程序编程接口205两次后,应用程序130可以请求更新的资源复制应用程序编程接口210。如同更新的创建资源应用程序编程接口205一样,更新的资源复制应用程序编程接口210可以是已知的应用程序编程接口。由于资源复制应用程序编程接口是已知的应用程序编程接口,所以应用程序130可以向图形驱动器140请求更新的资源复制应用程序编程接口210,而无需对常规操作有任何变化。然而,不像目前的资源复制应用程序编程接口那样,更新的资源复制应用程序编程接口210可以允许:当分段资源和非分段资源被指定为共享的时,应用程序130直接访问图形处理单元存储器120-1。例如,通过使用更新的资源复制应用程序编程接口210,可以使用的框架来复制资源。教导复制资源。如果分段资源和非分段资源没有被指定为共享的,那么更新的资源复制应用程序编程接口210可以继续中常规教导的过程以复制资源。然而,如果分段资源和非分段资源被指定为共享的,则更新的资源复制应用程序编程接口210可以创建分段资源和非分段资源之间的链接。被链接的资源可以用于为应用程序130提供直接访问图形处理单元存储器120-1。
图4图示出根据本发明实施例的将分段资源绑定到非分段资源的逻辑流程400的一个实施例。逻辑流程400可以代表由这里描述的一个或多个实施例执行的一些或所有的操作。在图4中图示出的实施例中,逻辑流程400可以在框405处请求图形驱动器140复制资源之一。应用程序130可以经由应用程序编程接口发送请求以复制至少一个资源。应用程序130可以请求复制分段资源和/或非分段资源。
在实施例中,逻辑流程400可以在框410处确定资源是否被指定为共享的。资源可以是在更新的创建资源应用程序编程接口205期间创建的分段资源和非分段资源。如上所述,分段资源和非分段资源可以被应用程序130指定为共享的。在一些实施例中,资源可以基于特殊格式化的初始化数据而被指定为共享的。
当资源没有被指定为共享的时,逻辑流程400可以在框415处复制一个或多个资源。例如,资源的复制可以是用于资源复制应用程序编程接口的当前或常规过程。如果资源没有被指定为共享的,那么资源复制应用程序编程接口可以继续复制资源的常规操作。例如,可以如用于资源复制应用程序编程接口的常规过程一样复制非分段资源。
当资源被指定为共享的时,逻辑流程400可以在框420处创建资源之间的链接。取代复制资源,可以由链接绑定资源。在实施例中,资源可以指的是源资源和目标资源。图形驱动器140可以创建源资源和目标资源之间的链接。换句话说,图形驱动器140可以绑定源资源和目标资源。例如,分段资源可以是源资源而非分段资源可以是目标资源。图形驱动器140可以创建分段资源和非分段资源之间的链接,以绑定分段资源或非分段资源。在可替代示例中,分段资源可以是目标资源而非分段资源可以是源资源。图形驱动器140可以创建非分段资源和分段资源之间的链接。
可以通过存储指向代表资源的数据结构的指针来创建链接。例如,图形驱动器140可以包括代表分段资源和非分段资源的数据结构。分段资源的数据结构可以存储指向非分段资源的数据结构的指针。指针可以在后面用在更新的映射分段资源应用程序编程接口215中。通过创建资源之间的链接,分段资源可以绑定到非分段资源。换句话说,通过分段资源,应用程序130经由指针可以直接访问被分配图形处理单元存储器120-1的非分段资源。结果是,通过分段资源和非分段资源之间的链接,应用程序130可以直接访问图形处理单元存储器120-1。
用于上述实施例的示例性伪代码可以为如下:
返回参照图2,应用程序130可以请求更新的映射分段资源应用程序编程接口215。如同更新的创建资源应用程序编程接口205和更新的资源复制应用程序编程接口210一样,更新的映射分段资源应用程序编程接口215可以是已知的应用程序编程接口。因为映射分段资源应用程序编程接口是已知的应用程序编程接口,所以应用程序130可以在保持与可应用的图形编程语言兼容的同时,向图形驱动器140请求更新的映射分段资源应用程序编程接口215。
使用更新的映射分段资源应用程序编程接口,图形驱动器140可以确定资源是否被指定为共享。如果资源没有被指定为共享,则分段资源可以如常规映射分段资源应用程序编程接口中教导的那样被映射。如果资源被指定为共享,则不像不允许应用程序直接访问图形处理存储器单元130的目前的映射分段资源应用程序编程接口那样,更新的映射分段资源应用程序编程接口215可以允许应用程序直接访问图形处理存储器单元130。更新的映射分段资源应用程序编程接口215可以使用来自分段资源的链接,以将非分段资源映射到中央处理单元110的一个或多个页表。图形驱动器可以返回包含虚拟指针的数据结构。虚拟指针可以包括至图形处理单元存储器120-1的虚拟地址。通过将非分段资源映射到一个或多个中央处理单元110页表,应用程序130可以直接访问图形处理单元存储器120-1。
图5图示出其中请求更新的映射分段资源应用程序编程接口315的逻辑流程500的一个实施例。逻辑流程500可以代表由这里描述的一个或多个实施例执行的一些或全部操作。在实施例中,逻辑流程500可以在框505处接收请求以将至分段资源的虚拟地址提供给中央处理单元110。类似于更新的创建资源应用程序编程接口205和更新的资源复制应用程序编程接口210,更新的映射分段资源应用程序编程接口215可以被应用程序130调用。应用程序130可以从图形驱动器140请求至图形处理单元存储器120-1的虚拟地址。
在实施例中,逻辑流程500可以在框510处确定资源是否被指定为共享。如在更新的创建资源应用程序编程接口205中所描述的,当应用程序130请求直接访问图形处理单元存储器120-1时,资源可以被指定为共享。应用程序130可以确定在映射分段资源时所述分段资源是否是共享的。
如果资源没有被指定为共享,那么逻辑流程500可以在515框处将为分段资源分配的图形处理单元存储器120-1映射到中央处理单元110页表。例如,将为分段资源分配的图形处理单元存储器120-1映射到中央处理单元110的一个或多个页表,可以是用于当前映射分段资源应用程序编程接口的常规过程。当资源未被指定为共享时,将为分段资源分配的图形处理单元存储器120-1映射到中央处理单元110页表上,这在应用程序130不请求直接访问图形处理单元存储器120-1时是足够的。例如,计算***可以包括离散的存储器,并且复制分配的图形处理单元存储器120-1不会浪费资源或电力。
在将为分段资源分配的图形处理单元存储器120-1映射到中央处理单元110页表之后,逻辑流程500可以在框517处返回虚拟指针。如上所述,因为资源未被指定为共享,所以可以发生映射分段资源应用程序编程接口的正常操作并且可以返回虚拟指针。虚拟指针可以允许应用程序130读取分配给分段资源的图形处理单元存储器120-1。然而,虚拟指针不允许应用程序130直接访问图形处理单元存储器130。
当资源被指定为共享时,逻辑流程500可以在框520处跟随从分段资源至非分段资源的链接。例如,可以使用在更新的资源复制应用程序编程接口210期间创建的链接,并且可以跟随从分段资源至非分段资源的链接。如上所述,分段资源可以包括至非分段资源的指针,并且非分段资源可以分配有图形处理单元存储器120-1。
逻辑流程500可以在框525处将非分段资源的分配的图形处理单元存储器130映射到中央处理单元110页表。图形驱动器140可以将非分段资源的分配的图形处理单元存储器130映射到中央处理单元110的页表。由于为映射而被正常调用的分段资源是空的并且链接至非分段资源,所以会发生非分段资源的映射。由于资源被指定为共享,所以更新的映射分段资源应用程序编程接口215可以从分段资源链接至非分段资源。非分段资源可以包括分配的图形处理单元存储器130。
作为映射的结果,逻辑流程500可以在框530处返回包括虚拟指针的数据结构。返回包括虚拟指针的数据结构可以允许应用程序130直接访问图形处理单元存储器120-1。来自中央处理单元110的虚拟指针可以包括图形处理单元存储器120-1的虚拟地址。例如,图形驱动器140可以从中央处理单元110返回图形处理单元存储器120-1的虚拟地址。作为包括虚拟地址的虚拟指针的结果,应用程序130可以直接访问图形处理单元存储器120-1。
当图形处理单元存储器120-1的格式不同于中央处理单元存储器110时,可能需要数据结构,以便使中央处理单元110向应用程序130提供图形处理单元存储器120-1的适当地址。例如,图形处理单元120可以包括分片式(tiled)存储器。所以为了使中央处理单元110允许应用程序直接从图形处理单元存储器120-1进行读取,包括虚拟指针的数据结构是必需的。
例如,在创建资源应用程序编程接口205中,对非分段资源可以分配图形处理单元存储器120-1。然而,应用程序130不直接访问非分段资源,直到在更新的资源复制应用程序编程接口210处在分段资源和非分段资源之间形成链接。当更新的映射分段资源应用程序编程接口215被应用程序130请求时,跟随从分段资源至非分段资源的链接,并且能够将非分段资源的分配的图形处理单元存储器120-1映射到一个或多个中央处理单元页表。中央处理单元110可以向应用程序130返回图形处理单元存储器120-1的虚拟地址。通过允许应用程序130直接访问图形处理单元存储器120-1,可以减少电力和资源消耗。
在实施例中,更新的映射分段资源应用程序编程接口215可以包括图形驱动器140,以确定是否需要清除和/或无效图形处理单元高速缓存。在实施例中,图形处理单元120可以具有存储数据的图形处理单元高速缓存,以使得数据可以被快速地访问。在实施例中,是否需要清除和/或无效图形处理单元高速缓存的确定可以发生在更新的映射分段资源应用程序编程接口215的开始。在可替代实施例中,是否需要清除和/或无效图形处理单元高速缓存的确定可以发生在跟随从分段资源至非分段资源的链接之前。在又一个可替代实施例中,是否需要清除和/或无效图形处理单元高速缓存的确定可以发生在更新的映射分段资源应用程序编程接口215结束时。
应用程序130可以使用读和/或写标记来告知图形驱动器140是否需要清除和/或无效任何图形处理单元高速缓存。例如,图形驱动器140可以清除图形处理单元写入高速缓存以确保数据被从图形处理单元存储器120-1移除。如上所述,图形处理单元存储器120-1是从图形处理单元的存储器区域分配并且能够映射到的图形处理单元的页表中的物理存储器。例如,图形驱动器140可以使图形处理单元高速缓存无效,以保持高速缓存一致性。保持图形处理单元高速缓存的高速缓存一致性可以确保下次图形处理单元读取高速缓存时数据将不会过时。
用于上述实施例的示例性伪代码可以为如下:
图6图示出可以适用于实施本公开的图1的***的***600的实施例。在实施例中,***600可以并入个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板电脑、触控板、便携式计算机、手持计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合式蜂窝电话/PDA、电视机、智能设备(例如智能电话、智能平板或智能电视机)、移动互联网设备(MID)、信息发送设备、数据通信设备等。
可以使用硬件元件、软件元件或两者的组合来实施各种实施例。硬件元件的例子可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、应用程序专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的例子可以包括软件部件、程序、应用程序、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序编程接口、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或者其任意组合。确定实施例是否是使用硬件元件和/或软件元件来实施可以根据任意数量的因素而改变,例如期望的计算速率、功率等级、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能限制。
在实施例中,***600包括耦合到显示器620的平台602。平台602可以接收来自内容设备的内容,所述内容设备例如为内容服务设备630或内容传送设备640或其他类似内容源。可以使用包括一个或多个导航特征件的导航控制器650与例如平台602和/或显示器620交互。这些部件中的每一个将在下面更加详细地描述。
在实施例中,平台602可以包括芯片组605、处理器610、存储器612、存储装置614、图形子***615、应用程序616和/或无线电618的任意组合。芯片组605可以提供处理器610、存储器612、存储装置614、图形子***615、应用程序616和/或无线电618之间的互相通信。例如,芯片组605可以包括能够提供与存储装置614互相通信的存储装置适配器(未图示出)。
处理器610可以实施为复杂指令集计算机(CISC)处理器或简化指令集计算机(RISC)处理器、x86指令集可兼容处理器、多核或任何其他微处理器或中央处理单元。在实施例中,处理器610可以包括双核处理器、双核移动处理器等等。
存储器612可以实施为易失性存储器设备,诸如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。
存储装置614可以实施为非易失性存储设备,诸如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附连式存储设备、闪存、电池备份SDRAM(同步DRAM)和/或网络可访问存储设备。在实施例中,存储装置614可以包括例如当包括多个硬盘时用于提高对重要数字媒体的存储性能增强保护的技术。
图形子***615可以执行图像的处理,诸如用于显示的静态图像或视频。图形子***615可以例如是图形处理单元(GPU)120或视觉处理单元(VPU)。模拟或数字接口可以用于通信地耦合图形子***615和显示器620。例如,接口可以是高清晰度多媒体接口、显示器端口、无线HDMI和/或无线HD兼容技术中的任意一种。图形子***615可以集成入处理器610或者芯片组605。图形子***615可以是通信地耦合到芯片组605的独立卡。
这里描述的图形和/或视频处理技术可以以各种硬件结构形式来实施。例如,图形和/或视频功能可以集成到芯片组内。可替代的,可以使用离散式图形和/或视频处理器。作为又一个实施例,图形和/或视频功能可以通过通用处理器来实施,包括多核处理器。在又一个实施例中,功能可以实施在消费者电子设备中。
无线电618可以包括使用各种适合的无线通信技术来传送和接收信号的一个或多个无线电。例如,无线电可以包括无线电接收器。这种技术可以涉及跨过一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个人局域网(WPAN)、无线城域网(WMAN)、蜂窝网络以及卫星网络。在跨过这些网络的通信中,无线电618可以根据任何版本的一个或多个适用标准运行。
在实施例中,显示器620可以包括任意电视机类型监视器或显示器。显示器620可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类似电视机的设备和/或电视机。显示器620可以是数字的或模拟的。在实施例中,显示器620可以是全息显示器。而且,显示器620可以是能接收视觉投射的透明表面。这种投射可以传递各种形式的信息、图像和/或对象。例如,这种投射可以是用于移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用程序616的控制下,平台602可以在显示器620上显示用户接口622。
在实施例中,内容服务设备630可以是任意国家、国际和/或独立服务的主机,从而例如经由因特网对于平台602是可访问的。内容服务设备630可以耦合到平台602和/或显示器620。平台602和/或内容服务设备630可以耦合到网络660,以将媒体信息通信到网络660和从网络660通信媒体信息(例如,发送和/或接收)。内容传送设备640也可以耦合到平台602和/或显示器620。
在实施例中,内容服务设备630可以包括有线电视盒、个人计算机、网络、电话、能够传送数字信息和/或内容的网络激活设备或应用程序,以及能够经由网络660或直接地单向或双向地在内容提供者与平台602和/显示器620之间通信内容的任何其他类似设备。将理解的是,内容可以经由网络660与***600中的任何一个部件和内容提供者单向和/或双向地通信。内容的示例可以包括任意媒体信息,例如包括视频、音乐、医疗和游戏信息等等。
内容服务设备630接收诸如有线电视节目的内容,包括媒体信息、数字信息和/或其他内容。内容提供者的示例可以包括任意有线或***或无线电或因特网内容提供者。所提供的示例并不意在限制本发明的实施例。
在实施例中,平台602可以接收来自具有一个或多个导航特征件的导航控制器650的控制信号。例如,控制器650的导航特征件可以用于与用户接口622交互。在实施例中,导航控制器650可以是定点设备,其可以是允许用户输入空间(例如连续的和多维的)数据到计算机中的计算机硬件部件(尤其是人机接口设备)。诸如图形用户界面(GUI)、电视机和监视器的许多***允许用户使用身体姿势来控制和提供数据给计算机或电视机。
通过在显示器上显示的指针、光标、聚焦环或其他视觉指示器的移动,控制器650的导航特征件的移动可以被仿效在显示器(例如显示器620)上。例如,在软件应用程序616的控制下,位于导航控制器650上的导航特征件例如可以被映射到用户接口622上显示的虚拟导航特征件。在实施例中,控制器650可以不是分离的部件而是集成入平台602和/或显示器620。然而,实施例不限于这里示出或描述的元件或上下文。
在实施例中,驱动器(未示出)可以包括这样的技术:能够使用户在初始启动后(例如被激活时)利用碰触按钮立即打开和关闭例如电视机的平台602。程序逻辑可以允许平台602在平台被关闭时使内容流向媒体适配器或其他内容服务设备630或内容传送设备640。另外,芯片组605可以包括用于支持例如5.1环绕声音频和/或高清晰度6.1环绕声音频的硬件和/或软件。驱动器可以包括用于集成式图形平台的图形驱动器。在实施例中,图形驱动器可以包括***部件互连(PCI)高速图形卡。
在各种实施例中,***600中示出的任意一个或多个部件可以被集成。例如,平台602和内容服务设备630可以被集成,或者平台602和内容传送设备640可以被集成,或者平台602、内容服务设备630以及内容传送设备640可以被集成。在各种实施例中,平台602和显示器620可以是一个集成单元。例如,显示器620和内容服务设备630可以被集成,或者显示器620和内容传送设备640可以被集成。这些示例不意在限制本发明。
在各种实施例中,***600可以被实施为无线***、有线***或者两者的组合。当实施为无线***时,***600可以包括适用于在无线共享媒介上进行通信的部件和接口,例如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享媒介的示例可以包括无线频谱的一部分,如RF频谱等等。当实施为有线***时,***600可以包括适用于在有线通信媒介上进行通信的部件和接口,例如输入/输出(I/O)适配器、将相应的有线通信介质连接到I/O适配器的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等等。有线通信媒介的示例可以包括导线、线缆、金属引线、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴线缆、光纤等等。
平台602可以建立一个或多个逻辑或物理通道以通信信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表用于用户的内容的任意数据。内容的示例可以包括例如来自语音对话的数据、视频会议、流视频、电子邮箱(“email)消息、语音邮箱消息、字母数字符号、图形、图像、视频、文本等等。来自语音对话的数据可以例如是话语信息、静默时段、背景噪声、舒适噪声、音调等等。控制信息可以指代表用于自动化***的命令、指令或控制语言的任意数据。例如,控制信息可以用于通过***路由媒体信息,或者指示节点以预定方式处理媒体信息。然而,实施例不限于图6中示出或描述的元件或上下文。
图7图示出适用于实施前述各种实施例的示例性通信结构700的框图。通信结构700包括各种常见的通信元件,如发射器、接收器、收发器、无线电、网络接口、基带处理器、天线、放大器、滤波器,等等。然而,实施例不限于由通信结构700实施。
如图7所示,通信结构700包括一个或多个客户端702和服务器704。客户端702和服务器704可操作地连接到一个或多个相应客户端数据存储装置708和服务器数据存储装置710,采用客户端数据存储装置708和服务器数据存储装置710来存储相应客户端702和服务器704本地的信息,诸如信息记录程序和/或相关联的上下文信息。
客户端702和服务器704可以使用通信框架706在彼此之间通信信息。通信框架706可以实现任意已知的通信技术和协议。通信框架706可以实施为分组交换网络(例如,诸如因特网的公网、诸如企业内部网的私人网络等等)、电路交换网络(例如公用电话交换网)、或者分组交换网络和电路交换网络的组合(具有适合的网关和转换器)。
可以使用硬件元件、软件元件或者两者的组合来实施各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、应用程序专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括软件部件、程序、应用程序、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序编程接口、指令集、计算代码、计算机编码、代码段、计算机代码段、字、值、符号、或其任意组合。确定实施例是否是使用硬件元件和/或软件元件来实施可以根据任意数量的因素而改变,诸如期望的计算速率、功率等级、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能限制。
一些实施例可以使用表述“一个实施例”或“实施例”与它们的派生词一起进行描述。这些术语意思是结合实施例描述的特定特征、结构或特点包括在至少一个实施例中。说明书中多个地方出现的短语“在一个实施例中”并不必然都指同一个实施例。此外,一些实施例可以使用表述“耦合”和“连接”与它们的派生词一起进行描述。这些术语并不必然旨在彼此是同义词。例如,一些实施例可以使用术语“连接”和/或“耦合”来进行描述以指出两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可以指两个或更多个元件彼此不直接接触,而是彼此互相合作或交互。
需要强调的是,提供了本公开的摘要来允许读者快速地确定技术公开的本质。与该理解一起提出的是,其将不用于解释或限制权利要求书的范围或含义。另外,在前面的详细描述中,可以看出为了简化本公开的目的而将各种特征集合在单独的实施例中。本公开的此方法并不被解释为反映要求保护的实施例需要的特征多于在每个权利要求中明确记载的。而是,作为下面权利要求的反映,发明的主题存在少于单个公开实施例的所有特征。因而,下面的权利要求由此合并入详细描述中,其中每个权利要求独自作为单独的实施例。在所附的权利要求书中,术语“包括(including)”和“其中(in which)”分别用作相应术语“包含(comprising)”和“其中(wherein)”的易懂英语的等同词。而且术语“第一”、“第二”、“第三”等仅用作标签,而不旨在对其对象施加数字要求。
上面已经描述的包括所公开结构的示例。当然,不可能描述部件和/或方法的每一个能想到的组合,但是本领域技术人员可以认识到,许多另外的组合和置换是可能的。因此,新颖的结构旨在包含落在所附权利要求的精神和范围内的所有更改、改进和变型。
在一些实施例中,计算机实现方法可以包括:经由来自第一资源的链接访问第二资源的分配的图形处理单元存储器;将分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及将来自中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序。
在实施例中,第一和第二资源可以被创建以允许应用程序直接访问图形处理单元存储器,第一和第二资源包括数据结构。可以为第二资源分配图形处理单元存储器。可以接收请求用于应用程序直接访问图形处理单元存储器。第一资源可以包括分段资源而第二资源可以包括非分段资源。第一和第二资源可以被指定为共享资源。当第一资源是分段资源时,可以中止为第一资源分配图形处理单元存储器。在第一资源的数据结构中可以存储至第二资源的数据结构以创建链接的指针。可以接收来自中央处理单元的一个或多个页表中的图形处理单元存储器的虚拟地址。基于读取和写入标记中的一个可以确定是否清除图形处理单元存储器的高速缓存,并且基于读取和写入标记中的一个可以确定是否使图形处理单元存储器的高速缓存无效。
在各种实施例中,装置可以包括处理器电路和在处理器电路上操作的图形驱动器以允许应用程序直接访问图形处理单元存储器。图形驱动器可操作以实施一个或多个应用程序编程接口,包括:创建资源应用程序编程接口,用于指定第一资源和第二资源为共享资源,并且为第二资源分配图形处理单元存储器;资源复制应用程序编程接口,用于在第一资源和第二资源是共享资源时在第一资源中创建至第二资源的指针;或者映射分段资源应用程序编程接口,用于跟随从第一资源至第二资源的分配的图形处理单元存储器的指针,将第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,并且将图形处理单元存储器的虚拟地址从中央处理单元的一个或多个页表发送到应用程序。
在一些实施例中,图形驱动器可以操作以实施创建资源应用程序编程接口,以用于确定用于第二资源的初始化数据是否被专门地格式化。图形驱动器可以操作以实施创建资源应用程序编程接口,以确定用于第一资源的初始化数据是否被专门地格式化。图形驱动器可以操作以实施创建资源应用程序编程接口,以中止为第一资源分配图形处理单元存储器。图形驱动器可以操作以实施资源复制应用程序编程接口,以在第一资源的数据结构中存储至第二资源的数据结构的指针。图形驱动器可以操作以实施映射分段资源应用程序编程接口,以从一个或多个中央处理单元页表接收具有虚拟地址的虚拟指针。图形驱动器可以操作以实施映射分段资源应用程序编程接口,以发送具有虚拟地址的虚拟指针至应用程序。图形驱动器可以操作以实施映射分段资源应用程序编程接口,以基于标记确定是否清除图形处理单元存储器的高速缓存。图形驱动器可以操作以实施映射分段资源应用程序编程接口,以基于标记确定是否使图形处理单元存储器的高速缓存无效。所述装置可以包括可操作地耦合到处理器电路的数字显示器。
在实施例中,装置可以包括用于执行如下方法的部件:创建第一资源和第二资源;为第二资源分配图形处理单元存储器;创建第一资源和第二资源之间的链接;将第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及从中央处理单元的一个或多个页表接收图形处理单元存储器的虚拟地址。在实施例中,***可以包括数字显示器和配置为执行如下方法的装置:创建第一资源和第二资源;为第二资源分配图形处理单元存储器;创建在第一资源和第二资源之间的链接;将第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及从中央处理单元的一个或多个页表接收图形处理单元存储器的虚拟地址。
在一些实施例中,***可以包括处理器电路、可操作地耦合到处理器电路的数字显示器,以及在处理器电路上操作的图形驱动器以允许应用程序直接访问图形处理单元存储器。图形驱动器可操作以实施一个或多个应用程序编程接口,包括:创建资源应用程序编程接口,用于将第一资源和第二资源指定为共享资源,并且为第二资源分配图形处理单元存储器;资源复制应用程序编程接口,用于在第一资源和第二资源是共享资源时,在第一资源中创建至第二资源的指针;或者映射分段资源应用程序编程接口,用于经由来自第一资源的指针访问第二资源的分配的图形处理单元存储器,将第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,并且将图形处理单元存储器的虚拟地址从中央处理单元的一个或多个页表发送到应用程序。***可以包括可操作耦合到处理器电路的无线电接收器。图形驱动器可以操作以实施资源复制应用程序编程接口,以在第一资源的数据结构中存储至第二资源的数据结构的指针。图形驱动器可以操作以实施映射分段资源应用程序编程接口,以从一个或多个中央处理单元页表接收具有虚拟地址的虚拟指针。

Claims (32)

1.一种计算机实现的方法,包括:
指定第一资源和第二资源作为共享资源;
为所述第二资源分配图形处理单元存储器;
当所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针;
跟随从所述第一资源至所述第二资源的分配的图形处理单元存储器的指针;
将所述分配的图形处理单元存储器映射到中央处理单元的一个或多个页表;以及
将来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序。
2.根据权利要求1所述的计算机实现的方法,包括:
创建所述第一资源和第二资源以允许所述应用程序直接访问所述图形处理单元存储器,所述第一资源和所述第二资源包括数据结构。
3.根据权利要求1所述的计算机实现的方法,包括:
接收对于所述应用程序直接访问所述图形处理单元存储器的请求。
4.根据权利要求1所述的计算机实现的方法,所述第一资源包括分段资源,并且所述第二资源包括非分段资源。
5.根据权利要求1所述的计算机实现的方法,包括:
当所述第一资源为分段资源时,中止为所述第一资源分配所述图形处理单元存储器。
6.根据权利要求1所述的计算机实现的方法,其中,所述指针的创建包括:
在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
7.根据权利要求1所述的计算机实现的方法,包括:
接收来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址。
8.根据权利要求1所述的计算机实现的方法,包括:
基于读取和写入标记之一来确定是否清除所述图形处理单元存储器的高速缓存;以及
基于读取和写入标记之一来确定是否使所述图形处理单元存储器的高速缓存无效。
9.一种计算装置,包括:
处理器电路;以及
图形驱动器,其能够在所述处理器电路上操作以允许应用程序直接访问图形处理单元存储器,所述图形驱动器用以实施一个或多个应用程序编程接口,包括:
创建资源应用程序编程接口,用于
将第一资源和第二资源指定为共享资源,以及
为所述第二资源分配图形处理单元存储器;
资源复制应用程序编程接口,用于在所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针;以及
映射分段资源应用程序编程接口,用于
跟随从所述第一资源至所述第二资源的分配的图形处理单元存储器的指针,
将所述第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,以及
将来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址发送到应用程序。
10.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以确定用于所述第二资源的初始化数据是否被专门地格式化。
11.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以确定用于所述第一资源的初始化数据是否被专门地格式化。
12.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述创建资源应用程序编程接口,以中止为所述第一资源分配图形处理单元存储器。
13.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述资源复制应用程序编程接口,以在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
14.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以接收具有来自一个或多个中央处理单元页表的虚拟地址的虚拟指针。
15.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以将具有所述虚拟地址的虚拟指针发送至应用程序。
16.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以基于标记确定是否清除所述图形处理单元存储器的高速缓存。
17.根据权利要求9所述的计算装置,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以基于标记确定是否使所述图形处理单元存储器的高速缓存无效。
18.根据权利要求9所述的计算装置,所述第一资源包括分段资源,并且所述第二资源包括非分段资源。
19.根据权利要求9所述的计算装置,包括:
数字显示器,其可操作地耦合到所述处理器电路。
20.一种计算机实现的装置,包括:
用于指定第一资源和第二资源作为共享资源的模块;
用于为所述第二资源分配图形处理单元存储器的模块;
用于当所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针的模块;
用于跟随从所述第一资源至所述第二资源的分配的图形处理单元存储器的指针的模块;
用于将所述分配的图形处理单元存储器映射到中央处理单元的一个或多个页表的模块;以及
用于将来自所述中央处理单元的一个或多个页表的图形处理单元存储器的虚拟地址发送到应用程序的模块。
21.根据权利要求20所述的装置,包括:
用于创建所述第一资源和第二资源以允许应用程序直接访问所述图形处理单元存储器的模块,所述第一资源和第二资源包括数据结构。
22.根据权利要求20所述的装置,包括:
用于接收对于所述应用程序直接访问所述图形处理单元存储器的请求的模块。
23.根据权利要求20所述的装置,所述第一资源包括分段资源,并且所述第二资源包括非分段资源。
24.根据权利要求20所述的装置,包括:
用于当所述第一资源为分段资源时,中止为所述第一资源分配所述图形处理单元存储器的模块。
25.根据权利要求20所述的装置,其中,所述指针的创建包括:
在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
26.根据权利要求20所述的装置,包括:
用于接收来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址的模块。
27.根据权利要求20所述的装置,包括:
用于基于读取和写入标记之一来确定是否清除所述图形处理单元存储器的高速缓存模块;以及
用于基于读取和写入标记之一来确定是否使所述图形处理单元存储器的高速缓存无效的模块。
28.一种计算***,包括:
处理器电路;
数字显示器,其可操作地耦合到所述处理器电路;以及
图形驱动器,其在所述处理器电路上操作以允许应用程序直接访问图形处理单元存储器,所述图形驱动器用以实施一个或多个应用程序编程接口,包括:
创建资源应用程序编程接口,用于
将第一资源和第二资源指定为共享资源,以及
为所述第二资源分配所述图形处理单元存储器;
资源复制应用程序编程接口,用于在所述第一资源和所述第二资源为共享资源时,在所述第一资源中创建至所述第二资源的指针;以及
映射分段资源应用程序编程接口,用于
经由来自所述第一资源的指针访问所述第二资源的分配的图形处理单元存储器,
将所述第二资源的分配的图形处理单元存储器映射到中央处理单元的一个或多个页表,以及
将来自所述中央处理单元的一个或多个页表的所述图形处理单元存储器的虚拟地址发送到应用程序。
29.根据权利要求28所述的计算***,包括:
无线电接收器,其可操作地耦合到所述处理器电路。
30.根据权利要求28所述的计算***,所述图形驱动器用以实施所述资源复制应用程序编程接口,以在所述第一资源的数据结构中存储至所述第二资源的数据结构的指针。
31.根据权利要求28所述的计算***,所述图形驱动器用以实施所述映射分段资源应用程序编程接口,以接收具有来自一个或多个中央处理单元页表的虚拟地址的虚拟指针。
32.至少一种机器可读介质,其包括多条指令,所述多条指令响应于被在计算设备上执行而使得所述计算设备执行根据权利要求1-8中的任意一项所述的方法。
CN201310248749.3A 2012-06-22 2013-06-21 通过应用程序访问图形处理单元存储器的技术 Expired - Fee Related CN103513984B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/530,250 2012-06-22
US13/530,250 US9864638B2 (en) 2012-06-22 2012-06-22 Techniques for accessing a graphical processing unit memory by an application

Publications (2)

Publication Number Publication Date
CN103513984A CN103513984A (zh) 2014-01-15
CN103513984B true CN103513984B (zh) 2017-11-07

Family

ID=48463744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310248749.3A Expired - Fee Related CN103513984B (zh) 2012-06-22 2013-06-21 通过应用程序访问图形处理单元存储器的技术

Country Status (3)

Country Link
US (2) US9864638B2 (zh)
EP (1) EP2677427B1 (zh)
CN (1) CN103513984B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304730B2 (en) 2012-08-23 2016-04-05 Microsoft Technology Licensing, Llc Direct communication between GPU and FPGA components
US10073783B2 (en) * 2016-11-23 2018-09-11 Advanced Micro Devices, Inc. Dual mode local data store
CN107911739A (zh) * 2017-10-25 2018-04-13 北京川上科技有限公司 一种视频获取方法、装置、终端设备及存储介质
US11461869B2 (en) 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
US20220164303A1 (en) * 2020-11-25 2022-05-26 Intel Corporation Optimizations of buffer invalidations to reduce memory management performance overhead

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1666182A (zh) * 2002-05-08 2005-09-07 英特尔公司 用于在主机处理器和图形处理器之间优化存储器共享的方法和***
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913230A (en) * 1997-01-07 1999-06-15 Richardson; John J. Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US5914727A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. Valid flag for disabling allocation of accelerated graphics port memory space
US6842180B1 (en) * 2000-09-20 2005-01-11 Intel Corporation Opportunistic sharing of graphics resources to enhance CPU performance in an integrated microprocessor
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7065630B1 (en) * 2003-08-27 2006-06-20 Nvidia Corporation Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device
US7117310B2 (en) * 2004-02-18 2006-10-03 Lsi Logic Corporation Systems and methods for cache synchronization between redundant storage controllers
US7805587B1 (en) * 2006-11-01 2010-09-28 Nvidia Corporation Memory addressing controlled by PTE fields
US8514233B2 (en) * 2009-01-23 2013-08-20 Advanced Micro Devices, Inc. Non-graphics use of graphics memory
TWI457940B (zh) * 2009-05-15 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1666182A (zh) * 2002-05-08 2005-09-07 英特尔公司 用于在主机处理器和图形处理器之间优化存储器共享的方法和***
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源

Also Published As

Publication number Publication date
CN103513984A (zh) 2014-01-15
EP2677427A1 (en) 2013-12-25
US10558496B2 (en) 2020-02-11
US20130342552A1 (en) 2013-12-26
US9864638B2 (en) 2018-01-09
US20180293106A1 (en) 2018-10-11
EP2677427B1 (en) 2017-07-12

Similar Documents

Publication Publication Date Title
CN104471540B (zh) 通过统一存储器架构的存储器共享
CN104583979B (zh) 动态物理存储器分区技术
US20200356500A1 (en) Data processing performance enhancement for neural networks using a virtualized data iterator
CN103513984B (zh) 通过应用程序访问图形处理单元存储器的技术
CN104583933B (zh) Gpu和fpga组件之间的直接通信的方法和***
CN105408855B (zh) 识别电子图像中的内容
CN103370689B (zh) 跨环境应用兼容
CN105684037B (zh) 图形处理单元
CN105814579B (zh) 沙盒应用数据重定向至数据中心
US7793268B2 (en) Method, system, and program product for composing a virtualized computing environment
CN108415978A (zh) 用户标签存储方法、用户画像计算方法及计算设备
CN107025183A (zh) 共享虚拟存储器
CN108737325A (zh) 一种多租户数据隔离方法、装置及***
CN104380256A (zh) 用于虚拟化与计算机***关联的硬件资源的方法、***和执行代码段
CN104346224B (zh) 使用组页面错误描述符来处理上下文切换和进程终止
CN106843715A (zh) 用于远程化的应用的触摸支持
JP6532981B2 (ja) 持続的ノードフレームワーク
CN103927216B (zh) 用于管理虚拟装置的方法和***
CN107408052A (zh) 共享对象层级上的二进制转换
CN108093292A (zh) 用于管理缓存的方法、装置及***
CN107733984A (zh) 一种推送锁屏信息的方法、终端及计算机可读存储介质
KR20140101370A (ko) 자율형 네트워크 스트리밍 기법
CN103593184B (zh) 图像显示***及图像显示方法
CN109509242B (zh) 虚拟对象面部表情生成方法及装置、存储介质、电子设备
CN107580722A (zh) 具有对应于各个数据流的直接存储器存取引擎的高斯混合模型加速器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171107

Termination date: 20210621