CN103782280A - 用于图形处理的存储器复制引擎 - Google Patents
用于图形处理的存储器复制引擎 Download PDFInfo
- Publication number
- CN103782280A CN103782280A CN201280043520.XA CN201280043520A CN103782280A CN 103782280 A CN103782280 A CN 103782280A CN 201280043520 A CN201280043520 A CN 201280043520A CN 103782280 A CN103782280 A CN 103782280A
- Authority
- CN
- China
- Prior art keywords
- data
- memory copy
- copy engine
- gpu
- stored
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明中描述的实例性技术可针对图形处理单元GPU与系统存储器之间的交互。举例来说,所述GPU可包含存储器复制引擎,所述存储器复制引擎处置与存取已存储于或待存储于所述系统存储器中的数据有关的任务。另外,在一些实例中,所述存储器复制引擎可执行例如修改任务等额外任务以增加所述GPU的性能。
Description
技术领域
本发明涉及图形处理单元(GPU),且更明确地说,涉及GPU与存储器之间的交互。
背景技术
产生图形内容的装置通常包含图形处理单元(GPU)。GPU可处理图形数据以产生显示器上的像素的像素值。图形数据处理的部分可要求GPU存取其本地存储器或系统存储器。举例来说,图形数据的至少部分可存储于系统存储器中,且GPU可从系统存储器检索图形数据。
发明内容
一般来说,本发明描述用于存取存储于存储器中的图形数据的技术。在一些实例中,所述技术可包含独立于在图形处理单元(GPU)上执行一个或一个以上程序来执行数据修改任务。举例来说,本发明的技术可允许所述GPU将和存储器管理以及数据修改有关的任务与和数据处理有关的任务分离,并允许这些任务的独立执行。作为一个实例,本发明中描述的技术可允许所述GPU从存储器检索数据或将数据存储于存储器中,且与执行此些功能并行地执行一个或一个以上程序的指令。作为另一实例,本发明中描述的技术可允许所述GPU独立于所述指令的执行将所述被执行指令所利用的数据转换成更合适的形式。
在一个实例中,本发明描述一种设备,所述设备包含:可经由系统总线存取的系统存储器,以及图形处理单元(GPU)。所述GPU包含本地存储器、存储器复制引擎以及着色处理器。所述存储器复制引擎可操作以经由所述系统总线从所述系统存储器检索第一数据且将所述第一数据存储于所述本地存储器中,以及从所述本地存储器检索第二数据且经由所述系统总线将所述第二数据存储于所述系统存储器中。所述着色处理器可操作以从所述本地存储器检索所述第一数据,处理所述第一数据以产生所述第二数据,且将所述第二数据存储于所述本地存储器中。
在另一实例中,本发明描述一种方法,所述方法包含用图形处理单元(GPU)的存储器复制引擎经由系统总线从所述GPU外部的系统存储器检索第一数据以及用所述GPU的所述存储器复制引擎将所述第一数据存储于所述GPU的本地存储器中。所述方法进一步包含用所述GPU的着色处理器从所述本地存储器检索所述第一数据、用所述GPU的所述着色处理器处理所述第一数据以产生第二数据以及用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中。所述方法还包含用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据以及用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中。
在另一实例中,本发明描述一种设备,所述设备包含可经由系统总线存取的系统存储器以及处在所述系统存储器外部的图形处理单元(GPU)。所述GPU包含本地存储器。在此实例中,所述GPU还包含用于用所述GPU的存储器复制引擎经由所述系统总线从所述GPU外部的系统存储器检索第一数据的装置以及用于用所述GPU的所述存储器复制引擎将所述第一数据存储于所述本地存储器中的装置。所述GPU还包含用于用所述GPU的着色处理器从所述本地存储器检索所述第一数据的装置、用于用所述GPU的所述着色处理器处理所述第一数据以产生第二数据的装置以及用于用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中的装置。所述GPU进一步包含用于用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据的装置以及用于用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中的装置。
在另一实例中,本发明描述一种非暂时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体包含致使图形处理单元(GPU)用所述GPU的存储器复制引擎经由系统总线从所述GPU外部的系统存储器检索第一数据以及用所述GPU的所述存储器复制引擎将所述第一数据存储于所述GPU的本地存储器中的指令。所述指令进一步致使所述GPU用所述GPU的着色处理器从所述本地存储器检索所述第一数据、用所述GPU的所述着色处理器处理所述第一数据以产生第二数据以及用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中。所述指令还致使所述GPU用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据以及用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中。
一个或一个以上实例的细节陈述于附图和以下描述中。其它特征、目标和优势将从描述和附图以及从权利要求书中显而易见。
附图说明
图1是说明可操作以实施本发明的一个或一个以上方面的图形处理单元(GPU)的实例的框图。
图2是说明可并有图1中的GPU以实施本发明的一个或一个以上方面的计算装置的实例的框图。
图3是说明根据本发明的一个或一个以上方面的如图1中所示的GPU的实例性操作的流程图。
具体实施方式
一般来说,本发明涉及图形处理单元(GPU)与存储器(例如容纳GPU的装置的系统存储器)之间的交互。本发明的技术大体上适用于视频装置,例如媒体播放器、机顶盒、例如移动电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、显示装置、电视等。
图形处理系统大体上包含GPU和系统存储器。GPU包含着色处理器和本地存储器,有时可与GPU外部的其它处理器或甚至GPU的部分共享所述本地存储器。着色处理器(有时被称作着色器内核)可经配置以执行各种类型的图形相关程序,例如几何着色器、顶点着色器以及片段着色器。在一些实例中,除了与图形处理有关的程序之外,着色处理器还可经配置以执行其它程序。
举例来说,可针对快速且高效地并行执行多个任务来配置GPU。一些应用程序可将GPU的高效并行处理能力用于一般用途处理。就此意义来说,GPU可充当通用GPU(GPGPU)。在GPU的着色处理器上执行的用于一般用途处理的程序可被称作计算着色器。图形相关程序(例如顶点着色器、像素着色器以及片段着色器)以及一般用途处理程序(例如计算着色器)可被统称为着色程序,以表明此些程序是由GPU的着色处理器执行。换句话说,术语“着色程序”不应被视为仅限于执行图形相关功能的程序。
在本发明中描述的一些实例中,除了着色处理器和本地存储器之外,GPU还可包含存储器复制引擎。存储器复制引擎可实施为硬件、在硬件上执行的软件或其组合。存储器复制引擎可操作以处置从系统存储器检索数据以及将数据存储于系统存储器中的存储器相关任务。以此方式,可将与系统存储器的存储器管理有关的指令与不与存储器管理有关的指令分离。这可允许着色处理器执行着色程序的指令与存储器复制引擎执行用于将数据存储于系统存储器中或从系统存储器检索数据的指令并行地进行。指令的并行执行可指代着色处理器和存储器复制引擎同时执行指令,以及着色处理器对指令的执行与存储器复制引擎对指令的执行重叠。
可通过各种机构来控制由存储器复制引擎执行的任务。举例来说,命令处理器可调度存储器复制引擎和着色处理器的任务。或者,着色处理器可调度存储器复制引擎的任务。在一些其它实例中,GPU外部的装置(例如中央处理单元(CPU))可调度存储器复制引擎和着色处理器的任务。
在一些实例中,除了执行复制指令之外,存储器复制引擎还可执行其它指令。这些额外指令可被称作修改指令。作为两个实例,所述修改指令可将数据修改成着色程序可利用的更合适形式,或修改存储数据之处以便于存取。以此方式,使着色处理器进一步空闲下来执行算术运算,且可将其它操作卸下给存储器复制引擎。
图1是说明可操作以实施本发明的一个或一个以上方面的图形处理单元(GPU)10的实例的框图。GPU10的实例包含但不限于数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。如图1中所说明,GPU10可包含命令处理器12、固定功能的图形单元14、着色处理器16、本地存储器18、存储器复制引擎20以及存储器接口22。存储器接口22可实施为硬件组件、在硬件上执行的软件、在硬件上执行的固件或其任一组合。GPU10可包含为清楚起见而未在图1中说明的额外单元或模块。
GPU10可操作以实施各种类型的图形管线。举例来说,GPU10可实施与OpenGL ES2.0规范中描述的图形管线类似的图形管线,所述规范于2008年4月24日由科纳斯组织(Khronos Group)发布且为公众可获得的。作为另一实例,本发明的方面可实施于定义图形管线的DirectX(DX)10和11应用程序编程接口(API)中。图形管线可实施为在GPU10上执行的软件、在GPU10上执行的固件、在GPU10上形成的一个或一个以上硬件单元(例如固定功能的图形单元14)或其组合。GPU10也可实施其它类型的图形管线,且本发明的方面不应被视为限于OpenGL ES2.0规范或DX10和11API的图形管线。此外,可存在可由GPU10实施的其它类型的图形算法。举例来说,替代于OpenGL ES2.0以及DX10和11API或除了Open GL ES2.0以及DX10和11API之外,GPU10还可实施射线追踪。
除了实施图形管线之外,GPU10还可操作以实施非图形相关功能。举例来说,GPU10可经配置以支持大规模并行处理功能性,其适合于需要快速且高效地并行处理多个任务以产生显示器的相对大量像素的像素值的图形相关功能。对于一些非图形相关应用,可认为利用GPU10的此快速且高效并行处理是合意的。就此意义来说,GPU10可被视为可操作以执行图形相关和非图形相关功能的通用GPU(GPGPU)。如更详细地描述,这些图形相关和非图形相关功能可由在GPU10上执行的程序界定。
命令处理器12可为GPU10的控制器。举例来说,命令处理器12可调度将由着色处理器16和存储器复制引擎20执行的任务。作为一个实例,着色处理器16可对存储于系统存储器(未图示)中的数据块执行操作,例如算术运算。在此实例中,命令处理器12可指示存储器复制引擎20从系统存储器检索第一数据块且将第一数据块存储于本地存储器18中。命令处理器12可指示着色处理器16从本地存储器18检索第一数据块且对第一数据块执行功能。在一些实例中,在着色处理器16正对第一数据块执行操作时,命令处理器12可指示存储器复制引擎20从系统存储器检索第二数据块,此操作与着色处理器16对第一数据块执行操作并行进行。
举例来说,命令处理器12可被视为使由存储器复制引擎20和着色处理器16执行的任务管线化。举例来说,在存储器复制引擎20已完成对当前复制指令的执行之前,命令处理器12可指示存储器复制引擎20执行下一个复制指令(例如,从系统存储器检索数据或将数据存储到系统存储器)。在此实例中,在存储器复制引擎20完成当前复制指令之后,存储器复制引擎20准备好立即执行下一个复制指令。
在一些实例中,存储器复制引擎20可在完成存储器复制任务时向着色处理器16提供指示。举例来说,在着色处理器16正对当前数据块执行任务时,存储器复制引擎20可预先存储将由着色处理器16使用的下一个数据块。在此实例中,存储器复制引擎20可向着色处理器16指示下一个数据块已存储在本地存储器18中,且着色处理器16可从本地存储器18检索下一个数据块以进行处理。
以此方式,存储器复制引擎20可使其操作与着色处理器16的操作同步。举例来说,因为存储器复制引擎20在数据可供处理时向着色处理器16提供指示,所以着色处理器16可在数据可供检索之前不会尝试检索和处理数据。在着色处理器16等待来自存储器复制引擎20的指示时,此可潜在地致使着色处理器16保持闲置。然而,此闲置时间可少于着色处理器16处置所有存储器相关任务将会花费的时间量,因为在着色处理器16执行其算术运算时,存储器复制引擎20执行其复制指令。
在替代实例中,命令处理器12可监视存储器复制引擎20何时完成其任务,且向着色处理器16提供存储器复制引擎20完成其任务的指示。换句话说,命令处理器12可维持由着色处理器16执行的功能与由存储器复制引擎20执行的功能之间的恰当同步。
在一些替代实例中,着色处理器16可执行命令处理器12的功能,且在这些实例中,命令处理器12可能不是必需的。在一些其它替代实例中,GPU10可从外部装置(例如中央处理单元(CPU))接收调度信息。在这些实例中,命令处理器12可能不是必需的。然而,即使在这些替代实例中的任一者中,GPU10仍可包含命令处理器12以用于执行其它功能。并且,在这些替代实例中的任一者中,存储器复制引擎20可在它完成其任务时向着色处理器16提供指示,以使由着色处理器16执行的指令与由存储器复制引擎20执行的指令同步。
固定功能的图形单元14可为可经硬连线以执行特定任务的硬件单元。举例来说,固定功能的图形单元12可包含图元装配单元和光栅化单元中的一者或一者以上,但固定功能的图形单元14还可包含额外单元。固定功能的图形单元14的图元装配单元可基于从着色处理器16接收的顶点坐标来装配图元,例如三角形或其它类型的多边形。固定功能的图形单元14的光栅化单元可确定经装配多边形的线方程,且基于所确定的线方程来确定哪些像素驻留在经装配多边形内。固定功能的图形单元14的此类功能性可能不要求操作灵活性,且因此可经硬连线以执行特定功能。
鉴于固定功能的图形单元14可能不会提供操作灵活性,着色处理器16可提供大范围的操作灵活性。举例来说,着色处理器16(其也可被称作着色器内核)可操作以执行程序,例如图形相关和非图形相关程序两者。由着色处理器16执行的程序界定由着色处理器16执行的功能。
举例来说,着色处理器16可操作以执行图形相关程序,例如几何着色器、顶点着色器以及片段着色器。几何着色器接收单个多边形的图形数据且可将单个多边形分割成多个多边形。顶点着色器可从几何着色器接收所述多个多边形且对所接收的多边形的顶点执行功能,例如坐标变换和光源处理。片段着色器可确定在显示器上显示的像素的像素值。
在一些实例中,着色处理器16还可操作以执行非图形相关程序。举例来说,GPU10的大规模并行处理能力可促进对执行多个并行功能的某些类型的非图形相关程序的高效执行。这些类型的非图形相关程序可被称作计算着色器。术语“着色程序”可大体上指代在着色处理器16上执行的任何程序。举例来说,术语着色程序指代几何着色器、顶点着色器、片段着色器以及计算着色器。
着色程序(在着色处理器16上执行)对存储于系统存储器中的数据执行操作,例如算术运算。举例来说,着色处理器16可包含可编程以执行所要算术运算的多个算术逻辑单元(ALU)。术语“数据”用以指代例如像素值(例如色彩值、不透明度值或像素的其它此类属性)等图形相关数据,以及非图形相关数据(例如由计算着色器使用的数据)。系统存储器还可存储由着色程序产生的数据,例如算术运算的结果。系统存储器可以是在GPU10外部的存储器且需要系统总线24以进行数据存取。
根据本发明的方面,存储器复制引擎20可处置需要与系统存储器的交互的存储器相关任务。存储器复制引擎20可实施为硬件、在硬件上执行的软件或其组合。举例来说,作为非限制性实例,当实施为软件时,存储器复制引擎20可为执行非常具体的功能且根据OpenGL或OpenCL标准设计的程序。
出于说明目的,存储器复制引擎20在上下文中被描述为硬件单元。举例来说,存储器复制引擎20可形成为DSP、ASIC、FPGA或其它等效的集成电路。在一些实例中,存储器复制引擎20可形成为离散逻辑电路或离散模拟电路。上文关于硬件单元的实例是出于说明目的而提供且不应被视为具限制性。
作为一个实例,存储器复制引擎20可执行复制指令,例如从系统存储器检索数据或将数据存储于系统存储器中的指令。举例来说,存储器复制引擎20可执行指令以从系统存储器检索数据且将所检索到的数据存储于本地存储器18中以供在着色处理器16上执行的着色程序使用。存储器复制引擎20还可执行指令以检索存储于本地存储器18中的数据且将所检索到的数据存储于系统存储器中。
如图1中所说明,存储器复制引擎20可耦合到存储器接口22。存储器复制引擎20可经由存储器接口22从系统存储器检索数据或将数据存储于系统存储器中。就此意义来说,存储器接口22可充当GPU10的组件与系统存储器之间的中间装置。举例来说,存储器接口22可包含允许存储器接口22经由系统总线24输出数据且经由系统总线24接收数据的组件。
在本发明中描述的实例性技术中,着色处理器16可能够与存储器复制引擎20执行将数据存储到系统存储器或从系统存储器检索数据的指令并行地执行指令。举例来说,在存储器复制引擎20正执行将数据存储到系统存储器或从系统存储器检索数据的指令时,着色处理器16可执行指令。着色处理器16和存储器复制引擎20的并行执行可指代着色处理器16和存储器复制引擎20对指令的同时执行或重叠执行。
应理解,由着色处理器16和存储器复制引擎20执行的指令(并行地或以其它方式执行)无需为相同指令。一般来说,存储器复制引擎20可执行与存储器存取有关的指令,而着色处理器16可以不执行所述指令。并且,虽然本发明中描述的技术允许存储器复制引擎20和着色处理器16在同一时间执行指令,但本发明的方面不限于此。举例来说,存储器复制引擎20和着色处理器16无需在每个实例中都在同一时间执行指令。而是,存储器复制引擎20和着色处理器16能够在同一时间执行指令。
在一些实例中,因为存储器复制引擎20可执行将数据存储到系统存储器或从系统存储器检索数据的指令,所以着色处理器16可经配置以不从系统存储器检索数据或不将数据存储于系统存储器中。换句话说,在此实例中,存取系统存储器可完全从着色处理器16卸下,且此存取可仅由存储器复制引擎20执行。以此方式,在存储器复制引擎20检索并存储数据时,着色处理器16空闲下来执行着色程序。这样使着色处理器16无需执行数据检索或存储的指令,且空闲下来与由存储器复制引擎20执行的数据检索和存储功能同时地执行着色程序的指令。在替代实例中,着色处理器16仍有可能存取系统存储器。
在本发明的实例中,着色处理器16仍可执行用于将由着色程序产生的数据存储于本地存储器18中的指令以及用于从本地存储器18检索数据的指令。举例来说,存储器复制引擎20可执行与数据存储和检索有关的复制指令,且在存储器复制引擎20正执行此些复制指令时,着色处理器16可在同一时间(例如同时地)继续执行数据处理指令,例如着色程序的数据处理指令。数据处理指令的一个实例可为算术指令,因为此些指令大体上是用于对数据执行算术运算。
将与存取系统存储器有关的指令卸下给存储器复制引擎20可进一步提升GPU10的处理效率。举例来说,常规技术依赖于着色处理器16处置与存取存储器(例如,本地存储器18和系统存储器两者)有关的所有指令。举例来说,在这些常规技术中,着色处理器16将经由纹理提取管线耦合到存储器接口22。根据这些常规技术,着色处理器16将经由纹理提取管线和存储器接口22存取系统存储器。
然而,虽然着色程序的用于存取本地存储器18的指令可与着色程序的其它指令非同步地执行,但着色程序的用于存取系统存储器的指令不可非同步地执行。而是,在着色处理器16上,用于存取系统存取器的指令可与着色程序的其它指令同步地执行。对于用于存取系统存储器的指令,在常规技术中,在着色处理器16等待将数据存储到系统存储器上或从系统存储器检索数据时,着色处理器16可保持闲置,且无法执行其它指令。
借助于存储器复制引擎20,本发明中描述的技术可允许着色处理器16对用于数据的数据处理指令的执行与存储器复制引擎20对存储器复制指令的执行(例如系统存储器与GPU10之间的数据传送操作)并行地(例如,大体上同时地)进行,且性能增加,因为着色处理器16不再需要执行存储器复制指令。用于着色程序的指令的时间段(先前用于存储器复制指令)可空出来由着色处理器16用以执行用于执行实际算术运算的指令,例如执行数据处理指令。借助于存储器复制引擎20,在将数据复制到系统存储器中或从系统存储器检索数据时,着色处理器16不需要保持闲置且不会无法执行其它指令。而是,存储器复制引擎20处置这些任务,从而允许着色处理器16继续执行数据处理指令。
如所说明,存储器复制引擎20是与着色处理器16分离的独立处理单元,但着色处理器16有可能控制存储器复制引擎20。举例来说,虽然存储器复制引擎20和着色处理器16可形成于GPU10内,但存储器复制引擎20和着色处理器16不可形成于彼此之内。换句话说,在一些实例中,由存储器复制引擎20执行的功能是着色处理器16无需执行的功能。举例来说,着色处理器16仍可能够存取系统存储器以进行存储和检索;然而,在存储器复制引擎20执行此些任务的情况下,着色处理器16可无需执行此些任务。将由着色程序执行的算术运算局限于着色处理器16之内。与存取系统存储器有关的操作局限于存储器复制引擎20之内。在一些实例中,存储器复制引擎20可仅执行与存取系统存储器有关的功能;然而,如下文所描述,本发明的方面不限于此。
一般来说,存储器复制引擎20、着色处理器16以及本地存储器18彼此分离且处在GPU10的芯片上。举例来说,在GPU10为其自己的集成电路(例如,芯片)的情况下,存储器复制引擎20、着色处理器16以及本地存储器18为GPU10芯片的不同组件(例如,彼此分离且处于GPU10的芯片上)。在一些其它实例中,存储器复制引擎20和着色处理器16可彼此分离且为GPU10的部分;然而,本地存储器18可被与其它装置共享。
可存在各种方式来致使存储器复制引擎20执行上文描述的实例性功能。一般来说,用于致使存储器复制引擎20执行实例性功能的实例性技术可允许存储器复制引擎20将数据预先存储于本地存储器18中,使得在着色处理器16上执行的着色程序需要所述数据时,所述数据可供此些着色程序用于处理。举例来说,在着色处理器16利用顶点数据之前,存储器复制引擎20可能够顺序地将顶点数据存储于本地存储器18中。并且,在着色处理器16正执行其它指令时,用于致使存储器复制引擎20执行实例性功能的实例性技术可允许存储器复制引擎20将来自本地存储器18的数据存储于系统存储器中。
作为一个实例,命令处理器12可对由存储器复制引擎20执行的存储器复制指令与由着色处理器16执行的数据处理指令同时进行调度。举例来说,命令处理器12可致使存储器复制引擎20从系统存储器检索第一源数据块且将第一源数据块存储在本地存储器18中。数据块可为预定量的数据,例如,仅出于说明目的,作为一个实例,10个像素的属性值。源数据可被认为是从系统存储器检索的数据。
命令处理器12可接着致使着色处理器16从本地存储器18检索第一源数据块且处理所述第一源数据块以产生第一结果数据块。所述第一结果数据块可为在着色处理器16处理源数据块之后由着色处理器16产生的数据块。
在着色处理器16正处理第一源数据块时(例如,在同一时间),命令处理器12可致使存储器复制引擎20执行指令以从系统存储器检索第二源数据块且将第二源数据块存储于本地存储器18中。在着色处理器16完成对第一源数据块的处理之后,着色处理器16可接着将第一源数据块的处理结果(例如第一结果数据块)存储于本地存储器18中且立即开始处理来自本地存储器18的第二源数据块。以此方式,如果本地存储器18包含足够的存储能力来在同一时间存储从系统存储器检索到的数据(例如源数据)以及存储由着色处理器16处理的已处理数据(例如结果数据),那么在着色处理器16执行数据处理指令的同一时间,存储器复制引擎20可执行复制指令。以此方式,命令处理器12可对由存储器复制引擎20执行的存储器复制操作排队。
作为另一实例,着色处理器16可执行前一实例中描述的命令处理器12的实例性功能中的一些或全部。在这些实例中,命令处理器12可能不是必需的,因为着色处理器16可执行命令处理器12的此些功能。然而,如果命令处理器12需要用于执行其它任务,那么GPU10仍可包含命令处理器12。
举例来说,在着色处理器16正处理当前源数据块时,着色处理器16可向存储器复制引擎20发出指示存储器复制引擎20执行检索下一个源数据块的指令的命令。接着,在完成了对当前源数据块的处理之后,着色处理器16可将结果数据(例如当前源数据块的处理结果)存储于本地存储器18中,且正处理下一个块的源数据,存储器复制引擎20将所述下一个块的源数据预先存储于本地存储器18中。着色处理器16还可指示存储器复制引擎20从本地存储器18检索结果数据且将结果数据存储于系统存储器中。
作为又一实例,命令处理器12可操作为命令定序器。在此实例中,命令处理器12可从另一装置(例如中央处理单元(CPU))接收将由GPU10执行的指令。命令处理器12可将所接收的指令分割为将由着色处理器16执行的指令和将由存储器复制引擎20执行的指令。举例来说,命令处理器12可将所述指令分割为将由着色处理器16执行的算术运算和将由存储器复制引擎20执行的存储器交互操作。视情况地,命令处理器12可接着将用于执行算术运算的指令转发给着色处理器16且将用于执行存储器交互操作的指令转发给存储器复制引擎20。
举例来说,命令处理器12可将致使着色处理器16从本地存储器18检索数据块且处理所述数据的指令转发给着色处理器16。命令处理器12可将从系统存储器检索源数据块的指令转发给存储器复制引擎20,且着色处理器16和存储器复制引擎20可在同一时间执行其相应指令。以此方式,着色处理器16接下来将处理的源数据被预先存储于本地存储器18中。并且,命令处理器12可将从本地存储器18检索由着色处理器16所执行的操作产生的数据且将此些数据存储于系统存储器中的指令转发给存储器复制引擎20。
作为另一实例,另一装置(例如CPU)可将指令直接传输给着色处理器16和存储器复制引擎20中的每一者。举例来说,CPU可将和与系统存储器的交互有关的所有指令传输给存储器复制引擎20且将与算术运算有关的所有指令传输给着色处理器16。
在这些实例中,命令处理器12可能不是必需的,因为CPU可将指令直接提供给着色处理器16和存储器复制引擎20。然而,如果命令处理器12需要用于执行其它任务,那么GPU10仍可包含命令处理器12。
在前述实例(例如,其中GPU10包含命令处理器12或其中GPU10不包含命令处理器12)中,存储器复制引擎20可预先存储随后将由着色处理器16使用的数据。在一些实例中,存储器复制引擎20可向着色处理器16提供着色处理器16将使用的下一个数据已存储于本地存储器18中的指示,以使存储器复制引擎20和着色处理器16的指令同步。着色处理器16可接着从本地存储器18检索所预先存储的数据,处理所述数据,且产生作为所述数据的处理结果的结果数据。着色处理器16可接着将结果数据存储于本地存储器18中。在一些实例中,例如其中着色处理器16不再需要结果数据,存储器复制引擎20可从本地存储器18检索结果数据且将结果数据存储于系统存储器中。即使在随后的处理需要用到结果数据的情况中,存储器复制引擎20也有可能从本地存储器18检索结果数据且将结果数据存储于系统存储器中以释放本地存储器18上的存储空间。
本发明中描述的实例性技术在各种类型的系统中都可能是有益的。作为少许实例,本发明中描述的技术可应用于优化基于分仓(binning)的渲染、图像处理、边界区域复制(例如,相邻块或片的部分的复制)以及基于队列的通信。一般来说,本发明中描述的实例性技术可有益于需要GPU10与系统存储器之间的数据传送的任何着色处理器应用。
作为一实例,此类功能性可有益于执行对所产生的图像执行滤波操作的着色程序,但不应认为本发明的方面限于此。举例来说,执行滤波操作的着色程序可对所产生的图像以逐块或逐片基础执行此些滤波操作。在此实例中,在着色处理器16正对当前块或片执行任务时,存储器复制引擎20可预先存储下一个块或片。应理解,除了着色处理器16执行进行滤波操作的着色程序的情形之外,本发明的方面还可有益于其它情形。存储器复制引擎20预先存储数据的能力可有益于各种各样的不同类型的着色程序。
作为另一实例,当执行滤波操作时,在滤波要求时,存储器复制引擎20的功能性可允许除了源图像的下一个块或片之外还载入其相邻块或片的部分。在一些实例中,当着色程序需要将当前块或片外部的数据存储于本地存储器18中时,操作可导致冗余或增加的复杂性。存储器复制引擎20可不这样受到限制。举例来说,存储器复制引擎20可能够检索较大部分的数据,但没有冗余或增加的复杂性。
此外,在一些实例中,可要求这些着色程序载入具有矩形足迹的数据(例如,必须存储于本地存储器的形成矩形区域的存储位置中的数据)。可不要求存储器复制引擎20载入具有此些限制的数据。在一些实例中,存储器复制引擎20可经配置,使得它可能够载入具有非矩形足迹的数据。以此方式,存储器复制引擎20可减少冗余和复杂性。
虽然就存储器复制引擎20执行与存储系统存储器有关的任务描述了先前实例,但本发明的方面不限于此。在一些实例中,替代于执行与存取系统存储器有关的任务或除了执行与存取系统存储器有关的任务之外,存储器复制引擎20还可执行修改任务。修改任务可指代将已存储于系统中的数据或待存储于系统存储器中的数据修改成更合用的形式。修改任务还可指代修改存储数据的位置。
作为修改任务的其中存储器复制引擎20修改存储数据的位置的一个实例,存储器复制引擎20可收集和压缩数据。举例来说,可稀疏地装填在不同着色程序之间共享的数据。经稀疏装填的数据可指代在相对较大存储部分上存储的相对较少量的数据。在这些情况中,存储器复制引擎20可压缩数据,使得它不存储于系统存储器或本地存储器18的相对较大部分上。而是,经稀疏装填的数据可被重写到存储器的较小部分。数据的此压缩可允许存储器复制引擎20更快速地存取数据。并且,因为着色处理器16没有察觉到此类数据压缩,所以可能不需要修改着色程序的利用所述数据进行算术运算的指令。
作为其中存储器复制引擎20修改已存储于系统存储器中的数据或待存储于系统存储器中的数据的少许实例,存储器复制引擎20可将数据的线状块转换成数据的平铺块(tiled block)或反之亦然以便存储于本地存储器18中或存储于系统存储器中。存储器复制引擎20还可在矩阵的x、y方向上混洗数据,将红绿蓝(RGB)色彩转换成亮度和色度分量(YUV)色彩或反之亦然,将RGB或YUV格式编码成另一格式,以及对着色处理器16有用的任何其它修改。举例来说,存储器复制引擎20还可执行将存储于本地存储器18中的数据转换成某一其它着色程序可用的另一形式的修改指令。存储器复制引擎20还可在从系统存储器检索数据和将数据存储于本地存储器18中时封装或解封装压缩数据结构或图像格式,以及在从本地存储器18检索数据和将数据存储于系统存储器中时封装或解封装压缩数据结构或图像格式。
举例来说,计算着色器可为顶点着色器产生结果数据。然而,结果数据的数据格式对于顶点着色器来说可能不是恰当的格式。在此实例中,存储器复制引擎20可将来自计算着色器的结果数据的格式修改成适合于顶点着色器的格式。存储器复制引擎20还可修改存储数据之处(例如,将数据从本地存储器18内的一个位置复制到本地存储器18内的另一位置)。就性能来说,这可能是有益的,因为存储器复制引擎20可将数据放置于本地存储器18的某些位置中,着色处理器16可通过使用着色处理器16具有的对本地存储器18的快速存取模式来高效地存取所述位置。
作为更多实例,存储器复制引擎20还可执行修改任务,例如链接列表转换到线性格式、平面YUV转换到经填补YUV或反之亦然、经编码HDR(高动态范围)或RGB格式转换到FP16或FP32,添加或移除填补、数据对齐、压缩或解压缩数据、2D小波变换、数据结构剖析(例如列表和树形结构),等等。存储器复制引擎20还可提供数据的多个复本。举例来说,当将数据存储于系统存储器中时,存储器复制引擎20可存储所述数据的多个复本以保护所述数据免遭损毁。存在存储器复制引擎20可执行的修改任务的各种实例,所述实例是出于说明目的而提供,且本发明的方面不应被视为限于上述实例。
以此方式,可能曾由着色处理器16执行的修改指令中的一些可被卸下给存储器复制引擎20。这可允许着色处理器16仅执行例如算术运算等数据处理指令,且存储器复制引擎20可执行任何复制和修改任务。
本地存储器18可形成为高速缓存存储器、寄存器或可存储数据的任何形式。与从系统存储器检索数据或将数据存储于系统存储器中相比,GPU10的组件可能够更快速地且以较少功率消耗来从本地存储器18检索数据或将数据存储于本地存储器18中。举例来说,GPU10的组件可在不需要大量调度且不具有单独总线的情况下存取本地存储器18。然而,存取系统存储器可能需要可能是耗时的存取调度。举例来说,GPU10可能够在没有数据沿系统总线24传送的可用时间段期间存取系统存储器。经由系统总线24存取系统存储器可消耗功率。
此外,虽然本地存储器18被说明为在GPU10内部,但本发明的方面不限于此。在一些实例中,GPU10可为较大集成电路的部分。此集成电路可包含额外处理单元,例如显示处理器、视频处理器等等。在这些实例中,本地存储器18可潜在地在GPU10外部,且可充当集成电路内的各种处理单元的本地存储器。就此意义来说,本地存储器18可被视为共享本地存储器。然而,即使在这些实例中,与经由系统总线24存取系统存储器相比,GPU10的组件仍可能够更快速地且以较少功率消耗来存取本地存储器18。此外,在这些实例中的任一者中,GPU10仍可被视为包括本地存储器18,因为本地存储器18充当GPU10的本地存储器。举例来说,即使在本地存储器18在GPU10外部的情况下,从功能上来说,本地存储器18仍可被视为GPU10的部分,因为本地存储器18向GPU10的组件提供本地存储器存储和检索。
图2是说明可操作以实施本发明的一个或一个以上方面的装置26的实例的框图。装置26的实例包含但不限于视频装置,例如媒体播放器、机顶盒、例如移动电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。装置26可包含处理器28、图形处理单元(GPU)10、系统存储器30、收发器模块32、用户接口34、显示缓冲器36以及显示器38。
如图2中所说明,装置26的GPU10可与图1的GPU10相同或大体上类似。举例来说,GPU10包含存储器复制引擎20,所述存储器复制引擎与图1的存储器复制引擎20相同或大体上类似。举例来说,存储器复制引擎20可执行需要存取系统存储器30的任务,以及在一些实例中,执行数据格式化任务。为简明起见,在图2的实例中不进一步论述GPU10和存储器复制引擎20的实例性功能性。
处理器28可为装置26的中央处理单元(CPU)且可执行上文在图1中描述的CPU的功能。处理器28的实例包含但不限于DSP、通用微处理器、ASIC、FPGA或者其它等效的集成或离散逻辑电路。虽然处理器28和GPU10被说明为分离的单元,但是本发明的方面不限于此。在一些实例中,处理器28和GPU10可形成于共同的集成电路(IC)中。处理器28和GPU10可各自包含单个处理器内核或多个处理器内核。
装置26可包含为清楚起见而未展示于图2中的额外模块或单元。举例来说,在装置26为移动无线电话的实例中,装置26可包含扬声器和麦克风(其无一者展示于图2中)以实现电话通信,或者在装置26为媒体播放器的实例中,装置26可包含扬声器。此外,在装置26的每个实例中,展示于装置26中的各种模块和单元可能不是必需的。举例来说,在装置26为桌上型计算机或经装备以与外部用户接口或显示器接口连接的其它装置的实例中,用户接口34和显示器38可在装置26外部。
系统存储器30可为装置26的总存储器,但并非GPU10的本地存储器(例如本地存储器18)。举例来说,系统存储器30可存储由GPU10产生的数据,所述数据可被称作结果数据,因为所述结果数据可由GPU10的着色处理器16所执行的任务产生。类似地,系统存储器30可存储将由GPU10使用的数据,所述数据可被称作源数据,因为所述源数据可为GPU10的着色处理器16用来执行任务的数据。系统存储器30还可存储由GPU10的着色处理器16执行的着色程序的经预先编译和/或经编译代码。装置26的各种组件(例如处理器28和GPU10)可经由系统总线24存取系统存储器30。
系统存储器30的实例包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或者可用于存储呈指令或数据结构的形式的所要程序代码且可由计算机、处理器或GPU存取的任何其它媒体。在某一实例中,系统存储器30可包括一个或一个以上计算机可读存储媒体,例如计算机可读存储装置。举例来说,在一些实例性实施方案中,系统存储器30可包含致使处理器28和/或GPU10执行在本发明中归于处理器28和GPU10的功能的指令。
在一些实例中,系统存储器30可被视为非暂时性存储媒体。术语“非暂时性”可表明存储媒体不是体现于载波或传播信号中。然而,术语“非暂时性”不应被解释为表示系统存储器30是不可移动的。作为一个实例,系统存储器30可从装置26卸除且移动到另一装置。作为另一实例,存储装置(大体上类似于系统存储器32)可插入到装置26中。在某些实例中,非暂时性存储媒体可存储可随时间改变的数据(例如,在RAM中)。
用户接口34的实例包含但不限于轨迹球、鼠标、键盘以及其它类型的输入装置。用户接口34还可为触摸屏且可作为显示器38的部分并入。收发器模块32可包含允许装置26与另一装置或网络之间的无线或有线通信的电路。收发器模块32可包含调制器、解调器、放大器以及用于有线或无线通信的其它此类电路。
GPU10可输出将在显示器38上显示的图像的像素值。在一些实例中,GPU10可将像素值直接输出到显示器38。在一些替代实例中,GPU10可将图像的像素值输出到显示缓冲器36。显示缓冲器36可暂时存储图像的像素值,直到渲染了整个图像为止。显示缓冲器36可被视为图像帧缓冲器。显示缓冲器36可接着传输经渲染的图像以便在显示器38上显示。显示器38可包括液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
图3是说明根据本发明的一个或一个以上方面的GPU10的实例性操作的流程图。仅出于说明目的,参考图1和图2。
GPU10的存储器复制引擎20可经由系统总线24从GPU10外部的系统存储器30检索第一数据(40)。第一数据可为源数据,源数据指代存储于系统存储器30中的数据。存储器复制引擎20可将第一数据存储于本地存储器18中(42)。存储器复制引擎20可能不需要存取系统总线24以将第一数据存储于本地存储器18中。在一些实例中,存储器复制引擎20可修改第一数据且将经修改的第一数据存储于本地存储器中。
GPU10的着色处理器16可从本地存储器18检索第一数据(44)且可在不存取系统总线24的情况下这样做。着色处理器16可处理第一数据以产生第二数据(46)。举例来说,着色处理器16可执行着色程序的对第一数据执行算术运算以产生第二数据的指令。第二数据可被视为结果数据以表明它是由着色处理器16的操作产生的数据。着色处理器16可将第二数据存储于本地存储器18中(48)。在一些实例中,着色处理器16可能不能够存取系统存储器30,且仅存储器复制引擎20可能够存取系统存储器30,但本发明的方面不限于此。并且,在一些实例中,存储器复制引擎20可修改第二数据且将经修改的第二数据存储于系统存储器中。
存储器复制引擎20可从本地存储器18检索第二数据(50)。存储器复制引擎20可经由系统总线24将第二数据存储于系统存储器30中(52)。在一些实例中,如上文所描述,存储器复制引擎还可操作以修改数据。举例来说,存储器复制引擎20可将存储于本地存储器18中的第一数据修改成在着色处理器16上执行的着色程序可用的数据。作为另一实例,存储器复制引擎20可将存储于本地存储器18中的第二数据修改成在着色处理器16上执行的着色程序可用的数据。
在一个或一个以上实例中,所描述的功能可用硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一个或一个以上指令或代码而存储于计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可以是可由一个或一个以上计算机或一个或一个以上处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。以实例方式且并非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。上述内容的组合也应包含在计算机可读媒体的范围内。
可由一个或一个以上处理器来执行代码,例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可实施于各种各样的装置或设备中,包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。在本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示技术的装置的功能方面,而不一定要求通过不同硬件单元来实现。而是,如上所述,各种单元可组合在硬件单元中或由互操作硬件单元(包含如上所述的一个或一个以上处理器)的集合与合适的软件和/或固件共同提供。
已描述了各种实例。这些及其它实例属于所附权利要求书的范围内。
Claims (41)
1.一种设备,其包括:
系统存储器,其可经由系统总线存取;以及
图形处理单元GPU,其包括:
本地存储器;
存储器复制引擎,其可操作以经由所述系统总线从所述系统存储器检索第一数据且将所述第一数据存储于所述本地存储器中,以及从所述本地存储器检索第二数据且经由所述系统总线将所述第二数据存储于所述系统存储器中;以及
着色处理器,其可操作以从所述本地存储器检索所述第一数据,处理所述第一数据以产生所述第二数据,且将所述第二数据存储于所述本地存储器中。
2.根据权利要求1所述的设备,其中所述存储器复制引擎、所述着色处理器以及所述本地存储器彼此分离且处在所述GPU的芯片上。
3.根据权利要求1所述的设备,其中所述第一数据包括源数据,且所述第二数据包括由对所述源数据的处理产生的结果数据。
4.根据权利要求1所述的设备,其中所述存储器复制引擎实施为硬件或在硬件上执行的软件,且其中所述硬件与所述着色处理器分离且处在所述GPU的芯片上。
5.根据权利要求1所述的设备,其中所述着色处理器具有以下情况中的至少一者:不可操作以从所述系统存储器检索所述第一数据,以及不可操作以将所述第二数据存储于所述系统存储器中。
6.根据权利要求1所述的设备,其中所述着色处理器可操作以执行用于算术运算的指令以处理所述第一数据以便产生所述第二数据。
7.根据权利要求1所述的设备,其中所述存储器复制引擎进一步可操作以将存储于所述本地存储器中的所述第一数据修改成在所述着色处理器上执行的着色程序可用的数据。
8.根据权利要求1所述的设备,其中所述存储器复制引擎进一步可操作以将存储于所述本地存储器中的所述第二数据修改成在所述着色处理器上执行的着色程序可用的数据。
9.根据权利要求1所述的设备,其中所述设备包括以下各项中的至少一者:媒体播放器、机顶盒、无线手持机、个人数字助理PDA、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元以及平板计算装置。
10.根据权利要求1所述的设备,其中所述存储器复制引擎可操作以从所述系统存储器检索第三数据或将所述第三数据存储于所述系统存储器中,与此同时所述着色处理器从所述本地存储器检索第四数据、处理所述第四数据或将所述第四数据存储于所述本地存储器中。
11.根据权利要求1所述的设备,其中所述存储器复制引擎进一步可操作以向所述着色处理器指示所述存储器复制引擎完成了将所述第一数据存储于所述本地存储器中以及将所述第二数据存储于所述系统存储器中的至少一者。
12.根据权利要求1所述的设备,其中所述存储器复制引擎进一步可操作以修改所述第一数据,且其中所述存储器复制引擎可操作以存储所述第一数据包括所述存储器复制引擎可操作以将所述经修改的第一数据存储于所述本地存储器中。
13.根据权利要求1所述的设备,其中所述存储器复制引擎进一步可操作以修改所述第二数据,且其中所述存储器复制引擎可操作以存储第二数据包括所述存储器复制引擎可操作以将所述经修改的第二数据存储于所述系统存储器中。
14.一种方法,其包括:
用图形处理单元GPU的存储器复制引擎经由系统总线从所述GPU外部的系统存储器检索第一数据;
用所述GPU的所述存储器复制引擎将所述第一数据存储于所述GPU的本地存储器中;
用所述GPU的着色处理器从所述本地存储器检索所述第一数据;
用所述GPU的所述着色处理器处理所述第一数据以产生第二数据;
用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中;
用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据;以及
用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中。
15.根据权利要求14所述的方法,其中所述存储器复制引擎、所述着色处理器以及所述本地存储器彼此分离且处在所述GPU的芯片上。
16.根据权利要求14所述的方法,其中所述第一数据包括源数据,且所述第二数据包括由对所述源数据的处理产生的结果数据。
17.根据权利要求14所述的方法,其中所述着色处理器具有以下情况中的至少一者:不可操作以从所述系统存储器检索所述第一数据,以及不可操作以将所述第二数据存储于所述系统存储器中。
18.根据权利要求14所述的方法,其中处理所述第一数据以产生所述第二数据包括执行用于算术运算的指令以处理所述第一数据以便产生所述第二数据。
19.根据权利要求14所述的方法,其进一步包括:
用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第一数据修改成在所述着色处理器上执行的着色程序可用的数据。
20.根据权利要求14所述的方法,其进一步包括:
用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第二数据修改成在所述着色处理器上执行的着色程序可用的数据。
21.根据权利要求14所述的方法,其进一步包括:
用所述存储器复制引擎从所述系统存储器检索第三数据或将所述第三数据存储于所述系统存储器中;以及
同时用所述着色处理器从所述本地存储器检索第四数据、处理所述第四数据或将所述第四数据存储于所述本地存储器中。
22.根据权利要求14所述的方法,其进一步包括:
用所述存储器复制引擎向所述着色处理器指示所述存储器复制引擎完成了将所述第一数据存储于所述本地存储器中以及将所述第二数据存储于所述系统存储器中的至少一者。
23.根据权利要求14所述的方法,其进一步包括:
用所述存储器复制引擎修改所述第一数据,
其中用所述GPU的所述存储器复制引擎将所述第一数据存储于所述GPU的本地存储器中包括用所述存储器复制引擎将所述经修改的第一数据存储于所述GPU的本地存储器中。
24.根据权利要求14所述的方法,其进一步包括:
用所述存储器复制引擎修改所述第二数据,
其中用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中包括用所述GPU的所述存储器复制引擎经由所述系统总线将所述经修改的第二数据存储于所述系统存储器中。
25.一种设备,其包括:
系统存储器,其可经由系统总线存取;以及
图形处理单元GPU,其处于所述系统存储器外部,所述GPU包括:
本地存储器;
用于用所述GPU的存储器复制引擎经由所述系统总线从所述系统存储器检索第一数据的装置;
用于用所述GPU的所述存储器复制引擎将所述第一数据存储于所述本地存储器中的装置;
用于用所述GPU的着色处理器从所述本地存储器检索所述第一数据的装置;
用于用所述GPU的所述着色处理器处理所述第一数据以产生第二数据的装置;
用于用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中的装置;
用于用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据的装置;以及
用于用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中的装置。
26.根据权利要求25所述的设备,其中所述存储器复制引擎、所述着色处理器以及所述本地存储器彼此分离且处在所述GPU的芯片上。
27.根据权利要求25所述的设备,其中所述第一数据包括源数据,且所述第二数据包括由对所述源数据的处理产生的结果数据。
28.根据权利要求25所述的设备,其中所述着色处理器具有以下情况中的至少一者:不可操作以从所述系统存储器检索所述第一数据,以及不可操作以将所述第二数据存储于所述系统存储器中。
29.根据权利要求25所述的设备,其中所述用于处理所述第一数据以产生所述第二数据的装置包括用于执行用于算术运算的指令以处理所述第一数据以便产生所述第二数据的装置。
30.根据权利要求25所述的设备,其进一步包括:
用于用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第一数据修改成在所述着色处理器上执行的着色程序可用的数据的装置。
31.根据权利要求25所述的设备,其进一步包括:
用于用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第二数据修改成在所述着色处理器上执行的着色程序可用的数据的装置。
32.根据权利要求25所述的设备,其中所述设备包括以下各项中的至少一者:媒体播放器、机顶盒、无线手持机、个人数字助理PDA、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元以及平板计算装置。
33.根据权利要求25所述的设备,其进一步包括:
用于用所述存储器复制引擎从所述系统存储器检索第三数据或将所述第三数据存储于所述系统存储器中的装置;以及
用于同时用所述着色处理器从所述本地存储器检索第四数据、处理所述第四数据或将所述第四数据存储于所述本地存储器中的装置。
34.一种非暂时性计算机可读存储媒体,其包括致使图形处理单元GPU进行以下操作的指令:
用所述GPU的存储器复制引擎经由系统总线从所述GPU外部的系统存储器检索第一数据;
用所述GPU的所述存储器复制引擎将所述第一数据存储于所述GPU的本地存储器中;
用所述GPU的着色处理器从所述本地存储器检索所述第一数据;
用所述GPU的所述着色处理器处理所述第一数据以产生第二数据;
用所述GPU的所述着色处理器将所述第二数据存储于所述本地存储器中;
用所述GPU的所述存储器复制引擎从所述本地存储器检索所述第二数据;以及用所述GPU的所述存储器复制引擎经由所述系统总线将所述第二数据存储于所述系统存储器中。
35.根据权利要求34所述的非暂时性计算机可读存储媒体,其中所述存储器复制引擎、所述着色处理器以及所述本地存储器彼此分离且处在所述GPU的芯片上。
36.根据权利要求34所述的非暂时性计算机可读存储媒体,其中所述第一数据包括源数据,且所述第二数据包括由对所述源数据的处理产生的结果数据。
37.根据权利要求34所述的非暂时性计算机可读存储媒体,其中所述着色处理器具有以下情况中的至少一者:不可操作以从所述系统存储器检索所述第一数据,以及不可操作以将所述第二数据存储于所述系统存储器中。
38.根据权利要求34所述的非暂时性计算机可读存储媒体,其中所述致使所述GPU处理所述第一数据以产生所述第二数据的指令包括致使所述GPU执行用于算术运算的指令以处理所述第一数据以便产生所述第二数据的指令。
39.根据权利要求34所述的非暂时性计算机可读存储媒体,其进一步包括用于进行以下操作的指令:
用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第一数据修改成在所述着色处理器上执行的着色程序可用的数据。
40.根据权利要求34所述的非暂时性计算机可读存储媒体,其进一步包括用于进行以下操作的指令:
用所述GPU的所述存储器复制引擎将存储于所述本地存储器中的所述第二数据修改成在所述着色处理器上执行的着色程序可用的数据。
41.根据权利要求34所述的非暂时性计算机可读存储媒体,其进一步包括用于进行以下操作的指令:
用所述存储器复制引擎从所述系统存储器检索第三数据或将所述第三数据存储于所述系统存储器中;以及
同时用所述着色处理器从所述本地存储器检索第四数据、处理所述第四数据或将所述第四数据存储于所述本地存储器中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/227,363 | 2011-09-07 | ||
US13/227,363 US8941655B2 (en) | 2011-09-07 | 2011-09-07 | Memory copy engine for graphics processing |
PCT/US2012/050613 WO2013036358A1 (en) | 2011-09-07 | 2012-08-13 | Memory copy engine for graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103782280A true CN103782280A (zh) | 2014-05-07 |
CN103782280B CN103782280B (zh) | 2016-04-06 |
Family
ID=46705060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280043520.XA Active CN103782280B (zh) | 2011-09-07 | 2012-08-13 | 用于图形处理的存储器复制引擎 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8941655B2 (zh) |
EP (1) | EP2754055B1 (zh) |
JP (1) | JP5792391B2 (zh) |
KR (1) | KR101564859B1 (zh) |
CN (1) | CN103782280B (zh) |
ES (1) | ES2688353T3 (zh) |
HU (1) | HUE040473T2 (zh) |
WO (1) | WO2013036358A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107851004A (zh) * | 2015-08-17 | 2018-03-27 | 高通股份有限公司 | 针对通用寄存器(gpr)的寄存器溢出管理 |
CN109196488A (zh) * | 2016-06-24 | 2019-01-11 | 高通股份有限公司 | 用于基于处理器的系统中的压缩存储器行的预提取机制 |
CN110634097A (zh) * | 2017-04-17 | 2019-12-31 | 英特尔公司 | 具有附加上下文的图形系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924752B1 (en) | 2011-04-20 | 2014-12-30 | Apple Inc. | Power management for a graphics processing unit or other circuit |
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9390461B1 (en) * | 2012-05-08 | 2016-07-12 | Apple Inc. | Graphics hardware mode controls |
US10096079B2 (en) | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
US10176621B2 (en) * | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US10102603B2 (en) | 2013-06-10 | 2018-10-16 | Sony Interactive Entertainment Inc. | Scheme for compressing vertex shader output parameters |
US10062135B2 (en) * | 2013-07-31 | 2018-08-28 | National Technology & Engineering Solutions Of Sandia, Llc | Graphics processing unit management system for computed tomography |
US20150109315A1 (en) * | 2013-10-23 | 2015-04-23 | Nvidia Corporation | System, method, and computer program product for mapping tiles to physical memory locations |
US9612884B2 (en) * | 2014-12-04 | 2017-04-04 | Advanced Micro Devices, Inc. | Memory management in graphics and compute application programming interfaces |
US10223822B2 (en) * | 2016-12-22 | 2019-03-05 | Apple Inc. | Mid-render compute for graphics processing |
US10331532B2 (en) * | 2017-01-19 | 2019-06-25 | Qualcomm Incorporated | Periodic non-intrusive diagnosis of lockstep systems |
JP7080698B2 (ja) * | 2018-03-30 | 2022-06-06 | 株式会社デンソー | 情報処理装置 |
US11734873B2 (en) | 2019-12-13 | 2023-08-22 | Sony Group Corporation | Real-time volumetric visualization of 2-D images |
KR20230138777A (ko) * | 2022-03-24 | 2023-10-05 | 삼성전자주식회사 | 데이터 재구성가능한 스토리지 장치, 전자 시스템 및 그 동작방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101156176A (zh) * | 2005-10-25 | 2008-04-02 | 三菱电机株式会社 | 图像处理装置 |
US20100053180A1 (en) * | 2008-08-26 | 2010-03-04 | Matrox Graphics Inc. | Method and system for cryptographically securing a graphics system |
US20110210976A1 (en) * | 2009-09-16 | 2011-09-01 | Nvidia Corporation | Techniques for transferring graphics data from system memory to a discrete gpu |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7068272B1 (en) * | 2000-05-31 | 2006-06-27 | Nvidia Corporation | System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline |
US7053901B2 (en) | 2003-12-11 | 2006-05-30 | Nvidia Corporation | System and method for accelerating a special purpose processor |
US7821520B1 (en) | 2004-12-10 | 2010-10-26 | Nvidia Corporation | Fragment processor having dual mode register file |
US8427496B1 (en) * | 2005-05-13 | 2013-04-23 | Nvidia Corporation | Method and system for implementing compression across a graphics bus interconnect |
JP4439491B2 (ja) | 2006-05-24 | 2010-03-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US20100315421A1 (en) * | 2009-06-16 | 2010-12-16 | Disney Enterprises, Inc. | Generating fog effects in a simulated environment |
US20100332792A1 (en) * | 2009-06-30 | 2010-12-30 | Advanced Micro Devices, Inc. | Integrated Vector-Scalar Processor |
US8484647B2 (en) | 2009-07-24 | 2013-07-09 | Apple Inc. | Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU |
US8675003B2 (en) | 2009-09-09 | 2014-03-18 | Advanced Micro Devices, Inc. | Efficient data access for unified pixel interpolation |
-
2011
- 2011-09-07 US US13/227,363 patent/US8941655B2/en active Active
-
2012
- 2012-08-13 HU HUE12748636A patent/HUE040473T2/hu unknown
- 2012-08-13 KR KR1020147007769A patent/KR101564859B1/ko active IP Right Grant
- 2012-08-13 EP EP12748636.3A patent/EP2754055B1/en active Active
- 2012-08-13 CN CN201280043520.XA patent/CN103782280B/zh active Active
- 2012-08-13 WO PCT/US2012/050613 patent/WO2013036358A1/en active Application Filing
- 2012-08-13 ES ES12748636.3T patent/ES2688353T3/es active Active
- 2012-08-13 JP JP2014529730A patent/JP5792391B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101156176A (zh) * | 2005-10-25 | 2008-04-02 | 三菱电机株式会社 | 图像处理装置 |
US20100053180A1 (en) * | 2008-08-26 | 2010-03-04 | Matrox Graphics Inc. | Method and system for cryptographically securing a graphics system |
US20110210976A1 (en) * | 2009-09-16 | 2011-09-01 | Nvidia Corporation | Techniques for transferring graphics data from system memory to a discrete gpu |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107851004A (zh) * | 2015-08-17 | 2018-03-27 | 高通股份有限公司 | 针对通用寄存器(gpr)的寄存器溢出管理 |
CN107851004B (zh) * | 2015-08-17 | 2020-11-13 | 高通股份有限公司 | 用于在图形处理单元gpu上执行指令的方法和装置 |
CN109196488A (zh) * | 2016-06-24 | 2019-01-11 | 高通股份有限公司 | 用于基于处理器的系统中的压缩存储器行的预提取机制 |
CN110634097A (zh) * | 2017-04-17 | 2019-12-31 | 英特尔公司 | 具有附加上下文的图形系统 |
CN110634097B (zh) * | 2017-04-17 | 2024-02-23 | 英特尔公司 | 具有附加上下文的图形系统 |
US11954783B2 (en) | 2017-04-17 | 2024-04-09 | Intel Corporation | Graphics system with additional context |
Also Published As
Publication number | Publication date |
---|---|
CN103782280B (zh) | 2016-04-06 |
WO2013036358A1 (en) | 2013-03-14 |
EP2754055B1 (en) | 2018-06-27 |
EP2754055A1 (en) | 2014-07-16 |
KR20140053370A (ko) | 2014-05-07 |
US20130057562A1 (en) | 2013-03-07 |
HUE040473T2 (hu) | 2019-03-28 |
JP2014529831A (ja) | 2014-11-13 |
KR101564859B1 (ko) | 2015-10-30 |
ES2688353T3 (es) | 2018-11-02 |
US8941655B2 (en) | 2015-01-27 |
JP5792391B2 (ja) | 2015-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103782280B (zh) | 用于图形处理的存储器复制引擎 | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
US10089775B2 (en) | Automated graphics and compute tile interleave | |
EP2946364B1 (en) | Rendering graphics data using visibility information | |
US20140184623A1 (en) | REORDERING OF COMMAND STREAMS FOR GRAPHICAL PROCESSING UNITS (GPUs) | |
KR101630996B1 (ko) | 셰이더 동작의 동기화 | |
US10297003B2 (en) | Efficient saving and restoring of context information for context switches | |
CN105518742A (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
CN107038740B (zh) | 图形处理设备和执行图形管线的方法 | |
US11829439B2 (en) | Methods and apparatus to perform matrix multiplication in a streaming processor | |
CN107408311A (zh) | 混合2d/3d图形呈现 | |
CN104823220A (zh) | 用于图形处理的图形存储器加载掩模 | |
US9646359B2 (en) | Indefinite texture filter size for graphics processing | |
CN105247478A (zh) | 命令指令管理 | |
US9111370B2 (en) | Buffer display techniques | |
TW202219887A (zh) | 快速增量共享常數 | |
US20230169621A1 (en) | Compute shader with load tile |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |