CN102016926B - 具有混合精度指令执行的可编程串流处理器 - Google Patents

具有混合精度指令执行的可编程串流处理器 Download PDF

Info

Publication number
CN102016926B
CN102016926B CN200980114125.4A CN200980114125A CN102016926B CN 102016926 B CN102016926 B CN 102016926B CN 200980114125 A CN200980114125 A CN 200980114125A CN 102016926 B CN102016926 B CN 102016926B
Authority
CN
China
Prior art keywords
precision
data
data precision
instruction
performance element
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.)
Active
Application number
CN200980114125.4A
Other languages
English (en)
Other versions
CN102016926A (zh
Inventor
杜云
于春
焦国方
斯蒂芬·莫洛伊
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41001956&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN102016926(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN102016926A publication Critical patent/CN102016926A/zh
Application granted granted Critical
Publication of CN102016926B publication Critical patent/CN102016926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Generation (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及一种可编程串流处理器,其能够使用不同执行单元来执行混合精度(例如,全精度、半精度)指令。所述各种执行单元各自能够使用图形数据来在特定精度级别下执行指令。示范性可编程着色器处理器包括一控制器及多个执行单元。所述控制器经配置以接收供执行的指令及接收对所述指令的执行的数据精度的指示。所述控制器还经配置以接收单独转换指令,所述单独转换指令在经执行时将与所述指令相关联的图形数据转换到所述所指示的数据精度。当可操作时,所述控制器基于所述所指示的数据精度来选择所述执行单元中的一者。所述控制器接着使所述选定执行单元使用与所述指令相关联的所述图形数据以所述所指示数据精度执行所述指令。

Description

具有混合精度指令执行的可编程串流处理器
技术领域
本发明涉及图形处理,且更特定来说,涉及图形处理器架构。
背景技术
图形装置广泛用于渲染用于例如视频游戏、图形程序、计算机辅助设计(CAD)应用程序、模拟及视觉化工具、成像及其类似者等各种应用的二维(2-D)及三维(3-D)图像。图形装置可执行各种图形操作以渲染图像。所述图形操作可包括光栅化、模板及深度测试、纹理映射、着色(shading)及其类似者。3-D图像可用若干表面来建模,且可用多边形(例如,三角形)来近似每一表面。为渲染目的而用于表示3-D图像的三角形的数目视所述表面的复杂性以及所述图像的所要分辨率而定。
每一三角形可由三个顶点来界定,且每一顶点与各种属性(例如,空间坐标、色值及纹理坐标)相关联。当图形装置在渲染过程期间使用顶点处理器时,所述顶点处理器可处理所述各个三角形的顶点。每一三角形还由图片元素(像素)构成。当所述图形装置还(或单独地)在渲染过程期间使用像素处理器时,所述像素处理器通过确定每一三角形内的每一像素的分量的值来渲染所述三角形。
在许多情况下,图形装置可利用着色器处理器来执行某些图形操作,例如着色。着色为涉及照明及阴影的高复杂的图形操作。当执行渲染时,所述着色器处理器可能需要执行多种不同指令,且通常包括一个或一个以上执行单元以辅助这些指令的执行。举例来说,所述着色器处理器可包括算术逻辑单元(ALU)和/或初等函数单元(EFU)作为执行单元。常常,这些执行单元能够使用全数据精度电路来执行指令。然而,此电路可常常要求更多功率,且所述执行单元可占据由所述图形装置所使用的着色器处理器集成电路内的更多物理空间。
发明内容
大体上,本发明涉及图形装置的可编程串流处理器,所述可编程串流处理器能够使用不同执行单元来执行混合精度(例如,全精度、半精度)指令。举例来说,所述可编程处理器可包括一个或一个以上全精度执行单元以及一个或一个以上半精度执行单元。在接收到二进制指令及对所述指令的执行的数据精度的指示后,所述处理器即能够选择适当执行单元以用于在所指示的数据精度下执行接收到的指令。所述处理器可包含用于移动图形应用程序的基于指令的适应性串流处理器。
通过此做法,所述处理器可避免使用一个执行单元来执行具有各种不同数据精度的指令。结果,可减少或消除不必要的精度提升。另外,应用程序程序员在编写应用程序代码时可具有增大的灵活性。应用程序程序员可为不同应用程序指令指定不同数据精度级别,所述不同数据精度级别接着经编译成由所述处理器处理的一个或一个以上二进制指令。
在一个方面中,本发明是针对一种方法,其包括接收供在可编程串流处理器内执行的图形指令;接收对所述图形指令的执行的数据精度的指示;以及接收转换指令,所述转换指令在由所述处理器执行时将与所述图形指令相关联的图形数据转换到所指示的数据精度,其中所述转换指令不同于所述图形指令。所述方法进一步包括基于所述所指示的数据精度来选择所述处理器内的多个执行单元中的一者,以及使用所述选定执行单元以使用与所述图形指令相关联的图形数据来在所述所指示的数据精度下执行所述图形指令。
在一个方面中,本发明是针对一种计算机可读媒体,其包括用于使可编程串流处理器进行以下操作的指令:接收供在所述处理器内执行的图形指令;接收对所述图形指令的执行的数据精度的指示;以及接收转换指令,所述转换指令在由所述处理器执行时将与所述图形指令相关联的图形数据转换到所指示的数据精度,其中所述转换指令不同于所述图形指令。所述计算机可读媒体进一步包括用于使所述处理器进行以下操作的指令:基于所述所指示的数据精度来选择所述处理器内的多个执行单元中的一者,以及使用所述选定执行单元以使用与所述图形指令相关联的图形数据来在所述所指示的数据精度下执行所述图形指令。
在一个方面中,本发明是针对一种可编程串流处理器,其包括一控制器及多个执行单元。所述控制器经配置以接收供执行的图形指令及接收对所述图形指令的执行的数据精度的指示。所述控制器还经配置以接收转换指令,所述转换指令在由所述处理器执行时将与所述图形指令相关联的图形数据转换到所指示数据精度,其中所述转换指令不同于所述图形指令。当可操作时,所述控制器基于所指示的数据精度来选择所述执行单元中的一者。所述控制器接着使所述选定执行单元使用与所述图形指令相关联的图形数据在所指示数据精度下执行所述图形指令。
在另一方面中,本发明是针对一种计算机可读媒体,其包括用于使处理器进行以下操作的指令:分析图形应用程序的多个应用程序指令;以及对于指定执行的第一数据精度级别的每一应用程序指令,产生各自指示执行的所述第一数据精度级别的一个或一个以上对应经编译指令。所述计算机可读媒体包括用于使所述处理器进行以下操作的其它指令:产生一个或一个以上转换指令以在所述一个或一个以上经编译指令经执行时将图形数据从第二不同数据精度级别转换到所述第一数据精度级别。
在一个方面中,本发明是针对一种计算机可读数据存储媒体,其具有一个或一个以上第一可执行指令,所述一个或一个以上第一可执行指令在由可编程串流处理器执行时支持图形应用程序的一个或一个以上功能,其中所述第一可执行指令中的每一者指示其执行的第一数据精度级别。所述计算机可读数据存储媒体进一步包括一个或一个以上第二可执行指令,所述一个或一个以上第二可执行指令在由所述处理器执行时支持所述图形应用程序的一个或一个以上功能,其中所述第二可执行指令中的每一者指示其执行的不同于所述第一数据精度级别的第二数据精度级别。所述计算机可读数据存储媒体进一步包括一个或一个以上第三可执行指令,所述一个或一个以上第三可执行指令在由所述处理器执行时支持所述图形应用程序的一个或一个以上功能,其中所述第三可执行指令中的每一者在所述一个或一个以上第一可执行指令经执行时将图形数据从所述第二数据精度级别转换到所述第一数据精度级别。
在随附图式及以下描述中阐述本发明的一个或一个以上方面的细节。其它特征、目标及优点将从描述及图式以及从权利要求书而显而易见。
附图说明
图1为根据本发明的一方面说明可包括于图形处理系统内的各种组件的框图。
图2A为根据本发明的一方面说明包括可编程着色器处理器的示范性图形处理系统的框图。
图2B为根据本发明的一方面说明图2A中所示的着色器处理器的其它细节的框图。
图2C为根据本发明的一方面说明图2B中所示的执行单元及寄存器组的其它细节的框图。
图3为根据本发明的一方面说明可由图2A到图2B中所示的着色器处理器执行的示范性方法的流程图。
图4为根据本发明的一方面说明可用以产生待由图1中所示的串流处理器或由图2A到图2B中所示的着色器处理器执行的图形指令的编译器的框图。
具体实施方式
图1为根据本发明的一个方面说明可包括于图形处理系统内的各种组件的框图。此图形处理系统可为独立系统或可为例如计算系统或无线通信装置(例如,无线通信装置手持机)等较大系统的部分,或数码相机或其它视频装置的部分。图1中所示的示范性系统可包括一个或一个以上图形应用程序102A到102N、图形装置100,及外部存储器104。图形装置100可通信地耦合到外部存储器104及图形应用程序102A到102N中的每一者。在一个方面中,图形装置100可包括于一个或一个以上集成电路或芯片上。
图形应用程序102A到102N可包括各种不同应用程序,例如视频游戏、视频、相机,或其它图形或串流应用程序。这些图形应用程序102A到102N可同时运行且各自能够产生执行线程以实现所要结果。线程指示可用一个或一个以上图形指令的序列来执行的特定任务。线程允许图形应用程序102A到102N具有同时执行的多个任务且共享资源。
图形装置100从图形应用程序102A到102N接收线程且执行由这些线程指示的任务。在图1中所示的方面中,图形装置100包括可编程串流处理器106、一个或一个以上图形引擎108A到108N,及一个或一个以上存储器模块110A到110N。处理器106可执行各种图形操作(例如,着色),且可计算某些应用程序的超越初等函数。在一个方面中,处理器106可包含用于移动图形应用程序的基于指令的适应性串流处理器。图形引擎108A到108N可执行其它图形操作(例如,纹理映射)。存储器模块110A到110N可包括一个或一个以上高速缓冲存储器以存储用于处理器106及图形引擎108A到108N的数据及图形指令。
图形引擎108A到108N可包括执行各种图形操作(例如,三角形设置、光栅化、模板及深度测试、属性设置和/或像素内插)的一个或一个以上引擎。外部存储器104可相对于存储器模块110A到110N为大、较缓慢的存储器。在一个方面中,外部存储器104位于距图形装置100较远处(例如,芯片外)。外部存储器104存储可加载到存储器模块110A到110N中的一者或一者以上中的数据及图形指令。
在一个方面中,处理器106能够使用不同执行单元来执行混合精度(例如,全精度、半精度)图形指令,假定不同图形应用程序102A到102N可具有关于ALU精度、性能及输入/输出格式的不同要求。作为一实例,处理器106可包括一个或一个以上全精度执行单元以及一个或一个以上部分精度执行单元。所述部分精度执行单元可为(例如)半精度执行单元。处理器106可使用其执行单元来执行图形应用程序102A到102N中的一者或一者以上的图形指令。在接收到二进制指令(例如,来自外部存储器104或存储器模块110A到110N中的一者)且还接收到对所述图形指令的执行的数据精度的指示后,处理器106即可选择适当执行单元以用于使用图形数据来在所指示的数据精度下执行所接收到的指令。处理器106也可接收一单独转换指令,所述单独转换指令在经执行时将与所述图形指令相关联的图形数据转换到所指示的数据精度。在一个方面中,所述转换指令为不同于所述图形指令的单独指令。
图形数据可由图形应用程序102A到102N提供,或可从外部存储器104或存储器模块110A到110N中的一者检索,或可由图形引擎108A到108N中的一者或一者以上提供。通过基于所指示的数据精度在不同执行单元中选择性地执行指令,处理器106可避免使用单一执行单元来执行全精度指令及半精度指令两者。另外,图形应用程序102A到102N的程序员在编写应用程序代码时可具有增大的灵活性。举例来说,一应用程序程序员可为应用程序指令指定数据精度级别,所述数据精度级别接着经编译成通过处理器106处理的一个或一个以上二进制指令。处理器106基于与执行单元及二进制指令相关联的数据精度来选择适当执行单元来执行所述二进制指令。另外,必要时,处理器106可执行所接收到的转换指令以将与所述指令相关联的图形数据转换到所指示的数据精度。举例来说,如果所提供的图形数据具有不同于所指示的数据精度的数据精度,则处理器106可执行所述转换指令以将所述图形数据转换到所指示的数据精度,使得图形指令可通过所选定的执行单元执行。
图2A为根据一个方面说明包括可编程着色器处理器206的示范性图形处理系统的框图。在此方面中,图2A中所示的图形处理系统为图1中所示的更普通系统的示范性例示。在一个方面中,着色器处理器206为串流处理器。在图2A中,所述示范性系统包括各自通信地耦合到图形装置200的两个图形应用程序202A及202B。在图2A的实例中,图形应用程序202A为能够处理及管理图形成像像素数据的像素应用程序。在图2A的实例中,图形应用程序202B为能够处理及管理图形成像顶点数据的顶点应用程序。在一个方面中,图形像素应用程序202A包含像素处理应用程序,且图形顶点应用程序202B包含顶点处理应用程序。
在许多情况下,图形像素应用程序202A实施使用较低精度(例如,半精度)数据格式的许多功能,但其可实施使用较高精度(例如,全精度)数据格式的某些功能。图形像素应用程序202A也可指定像素数据的指令的以四元组为基础的执行。通常,图形顶点应用程序202B实施使用较高精度数据格式的功能,但可能不指定顶点数据的指令的以四元组为基础的执行。因此,不同应用程序(例如,应用程序202A及202B)及到图形装置200的对应API可指定不同数据精度要求。且,在给定应用程序202A或202B(及对应API)内,可指定混合精度指令的执行。举例来说,用于图形像素应用程序202A的着色语言可为待由着色器处理器206执行的着色器指令提供精度修改器。因此,某些指令可指定执行的一个精度级别,而其它指令可指定另一精度级别。图形装置200内的着色器处理器206能够以均匀方式来执行混合精度指令。
在一个方面中,着色器处理器206经由一个或一个以上应用程序接口或API(未图示)与图形应用程序202A及202B相互作用。举例来说,图形像素应用程序202A可经由第一API与着色器处理器206相互作用,且图形顶点应用程序202B可经由第二API与着色器处理器206相互作用。在一个方面中,第一API及第二API可包含一共同API。所述API可界定由图形应用程序202A及202B用以使图形装置200执行各种图形操作(包括可由着色器处理器206执行的着色操作)的一个或一个以上标准编程规范。
图形装置200包括着色器处理器206。着色器处理器206能够执行着色操作。着色器处理器206能够与图形像素应用程序202A交换像素数据,且进一步能够与图形顶点应用程序202B交换顶点数据。
在图2A的实例中,着色器处理器206还与纹理引擎208及高速缓存存储器系统210通信。纹理引擎208能够执行纹理相关操作,且还通信地耦合到高速缓存存储器系统210。高速缓存存储器系统210耦合到主存储器204。在一方面中,高速缓存存储器系统210包括指令高速缓冲存储器及数据高速缓冲存储器两者。指令和/或数据可从主存储器204加载到高速缓存存储器系统210中,接着使指令和/或数据可用于纹理引擎208及着色器处理器206。着色器处理器206可经由同步或非同步接口与外部装置或组件通信。
在一个方面中,着色器处理器206能够使用不同执行单元来执行混合精度图形指令。在此方面中,着色器处理器206包括一个或一个以上全精度执行单元以及一个或一个以上半精度执行单元。着色器处理器206可调用其执行单元以执行图形应用程序202A及202B中的一者或两者的图形指令。在接收到二进制指令(例如,来自高速缓存存储器系统210)且还接收到对所述指令的执行的数据精度的指示后,着色器处理器206即能够选择一适当执行单元以用于使用图形数据来在所指示的数据精度下执行所接收到的指令。图形像素应用程序202A可将(例如)像素数据提供到着色器处理器206,且图形顶点应用程序202B可将顶点数据提供到着色器处理器206。
着色器处理器也可接收一单独转换指令,所述单独转换指令在经执行时将与所述图形指令相关联的图形数据转换到所指示的数据精度。在一个方面中,所述转换指令为不同于所述图形指令的单独指令。
图形数据也可从主存储器204或高速缓存存储器系统210加载,或可由纹理引擎208提供。图形像素应用程序202A和/或图形顶点应用程序202B调用使着色器处理器206从高速缓存存储器系统210加载供执行的一个或一个以上二进制指令的执行线程。在一个方面中,每一经加载指令指示所述指令的执行的数据精度。另外,必要时,着色器处理器206可执行所接收到的转换指令以将与所述指令相关联的图形数据转换到所指示的数据精度。举例来说,如果所提供的图形数据具有不同于所指示的数据精度的数据精度,则着色器处理器206可执行所述转换指令以将所述图形数据转换到所指示的数据精度,使得图形指令可通过所选定的执行单元执行。通过基于所指示的数据精度在不同执行单元中选择性地执行指令,着色器处理器206可避免使用单一执行单元来执行全精度指令及半精度指令两者。
图2B为根据一个方面说明图2A中所示的着色器处理器206的其它细节的框图。在着色器处理器206内,定序器222从图形应用程序202A及202B接收线程,且将这些线程提供到线程调度器与现场寄存器224。在一个方面中,定序器222包含一多路复用器(MUX)。在一个方面中,定序器222确定应接受哪些线程,且也可为每一所接受的线程分配多重精度寄存器空间和/或其它资源。举例来说,定序器222可为半精度指令分配寄存器空间,且也可为全精度指令分配寄存器空间。
在一个方面中,从图形像素应用程序202A接收到的像素数据包括呈以像素四元组为基础的格式(即,每次四个像素)的属性信息。在此方面中,执行单元234每次可处理四个像素。在一个方面中,执行单元234可每次一个顶点地处理来自图形顶点应用程序202B的数据。
线程调度器224执行各种功能以对线程的执行进行调度及管理,且可控制线程的执行顺序。根据一个方面,对于每一线程,线程调度器224可确定所述线程所需的资源是否准备好,在用于所述线程的任何资源(例如,指令、寄存器堆或纹理读取)未准备好时将所述线程推到一休眠队列中,及在所述资源全部准备好时将所述线程从所述休眠队列移动到一活动队列。线程调度器224与加载控制单元226介接以便同步用于所述线程的资源。在一个方面中,线程调度器224为控制器225的部分。图2B展示控制器225的一实例。控制器225可控制与着色器处理器206内的指令及数据的处理有关的各种功能。在图2B的实例中,控制器225包括线程调度器224、加载控制单元226及主引擎220。在某些方面中,控制器225包括主引擎220、线程调度器224及加载控制单元226中的至少一者。
线程调度器224还管理线程的执行。线程调度器224从指令高速缓冲存储器230取得每一线程的指令、在必要时对每一指令进行解码,及执行对所述线程的流控制。线程调度器224选择供执行的活动线程、检查所述选定线程当中的读取/写入端口冲突,且在不存在冲突时将用于一个线程的指令发送到执行单元234,及将用于另一线程的指令发送到加载控制单元226。线程调度器224维持用于每一线程的程序/指令计数器,且随着执行指令或更改程序流而更新此计数器。线程调度器224还发出从指令高速缓冲存储器230取得缺失指令且移除所完成的线程的请求。
在一个方面中,线程调度器224与主引擎220相互作用。在此方面中,线程调度器224可将某些职责委托给主引擎220。在一个方面中,线程调度器224可对供执行的指令进行解码,或可维持用于每一线程的程序/指令计数器且随着执行指令而更新此计数器。在一个方面中,主引擎220设置指令执行的状态,且也可在指令执行期间控制状态更新序列。
指令高速缓冲存储器230存储用于所述线程的指令。这些指令指示待为每一线程执行的特定操作。每一操作可为(例如)算术运算、初等函数、存储器存取操作或另一形式的指令。在需要时,指令高速缓冲存储器230可经由加载控制单元226来加载有来自高速缓存存储器系统210或主存储器204(图2A)的指令。根据一个方面,这些指令为已从图形应用程序代码编译的二进制指令。每一二进制指令指示用于其在着色器处理器206内的执行的数据精度。举例来说,与所述指令相关联的指令类型可指示所述指令是全精度指令还是半精度指令。或,根据一个示范性方面,所述指令内的一特定旗标或字段可指示其是全精度指令还是半精度指令。线程调度器224可能能够对指令进行解码且确定每一指令的数据精度(例如,全精度或半精度)。线程调度器224可接着将每一指令路由到一能够在所指示数据精度下执行指令的执行单元。此执行单元从常数缓冲器232或寄存器组242加载指令执行所需的任何图形数据,在下文对常数缓冲器232或寄存器组242进行更详细描述。
在图2B中所示的方面中,执行单元234包括一个或一个以上全精度ALU(算术逻辑单元)236、一个或一个以上半精度ALU 240,及一执行超越初等运算的初等函数单元238。ALU 236及240可包括一个或一个以上浮点单元(其实现浮点计算)和/或一个或一个以上整数逻辑单元(其实现整数及逻辑运算)。在必要时,执行单元234在指令执行期间从常数缓冲器232或从寄存器组242载入数据(例如,图形数据)。全精度ALU236及半精度ALU 240两者能够执行算术运算(例如,加法、减法、乘法、倍增及累积等)且还能够执行逻辑运算(例如,AND、OR、XOR等)。根据一个方面,每一ALU单元可包含单一四元组ALU或四个标量ALU。当使用四个标量ALU时,可通过ALU并行地处理四个像素的属性。可使用一四元组ALU来并行地处理一像素或一顶点的四个属性。然而,全精度ALU 236使用全精度计算来执行指令,而半精度ALU 240使用半精度计算来执行指令。
初等函数单元238可计算超越初等函数(例如,正弦、余弦、倒数、对数、指数、平方根或反平方根),其广泛用于着色器指令中。初等函数单元238可通过在比使用简单指令来执行对初等函数的多项式近似所需的时间少得多的时间中计算所述初等函数来改善着色器性能。根据本发明的一个方面,初等函数单元238可能能够在全精度下执行指令,但也可能能够将计算结果转换到半精度格式。
加载控制单元226(在图2B中所示的示范性方面中,其为控制器225的部分)控制着色器处理器206内的各种组件的数据及指令的流。在一个方面中,加载控制单元226可将着色器处理器206的过多内部数据逐出到外部存储器(例如,高速缓存存储器系统210),且可从纹理引擎208和/或高速缓存存储器系统210取得外部资源(例如,指令、缓冲器或纹理数据)。加载控制单元226与高速缓存存储器系统210介接且使指令高速缓冲存储器230、常数缓冲器232(其可存储在图形应用程序202A和/或202B的指令执行期间所使用的均匀数据)及寄存器组242加载有来自高速缓存存储器系统210的数据及指令。加载控制单元226也可将来自寄存器组242的输出数据提供到高速缓存存储器系统210。寄存器组242可接收来自一个或一个以上执行单元234的输出数据,且可在执行单元234当中共享。加载控制单元226还与纹理引擎208介接。在某些情况下,纹理引擎208可经由加载控制单元226将数据(例如,纹理数据)提供到着色器处理器206,且在某些情况下,加载控制单元226可将数据(例如,纹理坐标数据)和/或指令(例如,取样器ID指令)提供到纹理引擎208。
在图2B的实例中,加载控制单元226还包括精度转换器228。因为写入到加载控制单元226中或读取出加载控制单元226的数据可具有不同数据精度(例如,全精度、半精度),所以加载控制单元226可能需要在将某些数据路由到不同组件(例如,到寄存器组242或到高速缓存存储器系统210)之前将其转换到不同数据精度级别。精度转换器228管理在加载控制单元226内的此数据转换。
在一个方面中,精度转换器228操作以在由着色器处理器206执行所接收到的转换指令后即将图形数据从一个精度级别转换到另一精度级别。当经执行时,转换指令将与一接收到的图形指令相关联的图形数据转换到所指示的数据精度。举例来说,所述转换指令可将半精度格式的数据转换到全精度格式,或将全精度格式的数据转换到半精度格式。
常数缓冲器232可存储在指令执行期间由执行单元234使用的常数值。寄存器组242存储来自执行单元234的所执行线程的临时结果以及最终结果。寄存器组242包括一个或一个以上全精度寄存器组244及一个或一个以上半精度寄存器组246。可通过加载控制单元226从寄存器组242读取最终执行结果。另外,分配器248也可从寄存器组242接收所执行线程的最终结果且将这些结果分配到图形顶点应用程序202B及图形像素应用程序202A中的至少一者。
图形应用程序(例如,应用程序202A及202B)可能需要使用不同精度级别来处理数据。举例来说,在一个方面中,图形顶点应用程序202B使用全精度数据格式来处理顶点数据,而图形像素应用程序202A使用半精度格式来处理像素数据。在一个方面中,图形像素应用程序202A使用半精度格式来处理某些信息,而使用全精度格式来处理其它信息。在来自图形顶点应用程序202B及图形像素应用程序202A的线程的执行期间,着色器处理器206接收及处理来自指令高速缓冲存储器230的针对执行使用不同数据精度级别的指令。
因此,在图2B中所示的方面中,线程调度器224识别所指示的或与从指令高速缓冲存储器230加载出的给定指令相关联的数据精度,且将所述指令路由到一适当执行单元。举例来说,如果将所述指令作为全精度指令(例如,经由指令类型或所述指令内所含有的字段/标头来指示)来解码,则线程调度器224能够将所述指令路由到全精度ALU236中的一者以供执行。来自全精度ALU 236的执行结果可存储于全精度寄存器组244中的一者或一者以上中且经由分配器248而提供回到图形应用程序(例如,图形顶点应用程序202B)。然而,如果来自指令高速缓冲存储器230的指令作为半精度指令由线程调度器224来解码,则线程调度器224能够将所述指令路由到半精度ALU 240中的一者以供执行。来自半精度ALU 240的执行结果可存储于半精度寄存器组246中的一者或一者以上中且经由分配器248而提供回到图形应用程序(例如,图形像素应用程序202A)。
图2C为根据一个方面说明图2B中所示的执行单元234及寄存器组242的其它细节的框图。如先前所描述,执行单元234包括各种不同类型的执行单元。在图2C的实例中,执行单元234包括一个或一个以上全精度ALU 236A到236N、一个或一个以上半精度ALU 240A到240N,及一个或一个以上初等函数单元238。每一全精度ALU 236A到236N能够使用数据来使用全精度计算来执行指令。在指令执行期间使用的输入数据可从全精度寄存器组244A到244N(在寄存器组242内)中的一者或一者以上检索。另外,在由全精度ALU 236A到236N执行指令期间所产生的计算结果可存储于全精度寄存器组244A到244N中的一者或一者以上内。
类似地,每一半精度ALU 240A到240N能够使用数据来使用半精度计算来执行指令。在指令执行期间使用的输入数据可从半精度寄存器组246A到246N中的一者或一者以上检索。另外,在由半精度ALU 240A到240N执行指令期间所产生的计算结果可存储于半精度寄存器组246A到246N中的一者或一者以上内。
如先前所描述,初等函数单元238能够执行全精度指令,但以半精度格式来存储结果。在一个方面中,初等函数单元238能够以全精度格式或半精度格式来存储结果数据。结果,初等函数单元238通信地耦合到全精度寄存器组244A到244N,且还通信地耦合到半精度寄存器组246A到246N。根据一个方面,初等函数单元238可从寄存器组242内的寄存器中的任一者检索中间数据且将最终结果数据存储到所述寄存器中的任一者。
另外,初等函数单元238包括精度转换器239。在初等函数单元238在全精度数据格式与半精度数据格式之间转换的那些情况下,其可使用精度转换器239来执行所述转换。举例来说,单元238可从半精度寄存器组246A加载输入图形数据且使用所述数据来执行全精度指令。精度转换器239可将所述输入数据从半精度格式转换到全精度格式。单元238可接着使用经转换的数据来执行全精度指令。如果结果数据将存储回到半精度寄存器组246A中,则精度转换器239可将结果数据从全精度格式转换到半精度格式,使得其可存储于半精度寄存器组246A中。或者,如果结果数据将存储于全精度寄存器组244A到244N中的一者中,则呈全精度格式的结果数据可直接存储于这些寄存器中的一者中。
线程调度器224(图2B)能够使二进制指令从指令高速缓冲存储器230加载且基于与所述指令相关联的数据精度来在执行单元234中的一者中执行。举例来说,线程调度器224可将全精度指令路由到全精度ALU 236A到236N中的一者或一者以上,且可将半精度指令路由到半精度ALU 240A到240N中的一者或一者以上。线程调度器224也可将初等指令路由到初等函数单元238以供执行。结果数据可存储于寄存器组242内的对应寄存器中。在一个方面中,全精度ALU 236A到236N、初等函数单元238与半精度ALU 240A到240N之间的数据转变经过寄存器组242。
在一个方面中,与每一全精度寄存器组244A到244N相比,每一半精度寄存器组246A到246N含有较小寄存器存储空间,且在集成电路上占据较小物理空间。因此,举例来说,与全精度寄存器组244A相比,半精度寄存器组246A含有较小寄存器存储空间且占据较小物理空间。在一个方面中,一个全精度寄存器组(例如,组244A)可含有与两个半精度寄存器组(例如,组合的组246A与246B)大体上相同量的寄存器空间,且占据与其大体上相同量的物理空间。
类似地,每一全精度ALU 236A到236N可比每一半精度ALU 240A到240N占据集成电路内的更多物理空间。另外,每一全精度ALU 236A到236N通常可使用比每一半精度ALU 240A到240N多的操作功率。因此,在某些方面中,可能需要限制所使用的全精度ALU及全精度寄存器组的数目,且增大所使用的半精度ALU及半精度寄存器组的数目,以便最小化集成电路大小且减少功率消耗要求。当着色器处理器206为例如移动或无线通信装置(例如,例如移动无线电电话或无线通信装置手持机)或数码相机或视频装置等具有某些功率约束的较小计算装置的部分时,这些方面可尤其适当或有益。
因此,在一个方面中,执行单元234可仅包括一个全精度ALU 236A,且寄存器组242可仅包括一个全精度寄存器组244A。在此方面中,执行单元234可进一步包括四个半精度ALU 240A到240D,而寄存器组242可包括四个半精度寄存器组246A到246D。结果,执行单元234可能能够并行地执行至少一个半精度指令及一个全精度指令。举例来说,所述四个半精度ALU 240A到240D可每次执行关于四个像素的属性的指令。根据一个方面,因为仅使用一个全精度ALU 236A,所以ALU 236A能够每次执行关于一个顶点的指令。结果,根据一个方面,着色器处理器206不需要利用顶点装填缓冲器以装填多个顶点的数据。在此情况下,可直接处理顶点的基于向量的属性数据,而无需将数据转换到标量格式。
在另一方面中,执行单元234可包括四个全精度ALU 236A到236D,且寄存器组242可包括四个全精度寄存器组244A到244D。在此方面中,执行单元234可进一步包括八个半精度ALU 240A到240H,而寄存器组242可包括八个半精度寄存器组246A到246H。结果,执行单元234能够并行地执行(例如)两个四元组上的两个半精度指令及一个四元组上的一个全精度指令。每一四元组或线程为四个像素或四个顶点的群组。
在另一方面中,执行单元234可包括四个全精度ALU 236A到236D,且寄存器组242可包括四个全精度寄存器组244A到244D。在此方面中,执行单元234进一步包括四个半精度ALU 240A到240H,而寄存器组242包括四个半精度寄存器组246A到246H。可使用全精度ALU 236A到236N、全精度寄存器组244A到244N、半精度ALU 240A到240N及半精度寄存器组246A到246N的各种其它组合。
在一个方面中,着色器处理器206可能能够使用线程调度器224以对全精度ALU236A到236N中的一者或一者以上及全精度寄存器组244A到244N中的一者或一者以上选择性地断电或停用。在此方面中,尽管着色器处理器206包括一个或一个以上集成电路内的各种全精度组件(例如,全精度ALU 236A到236N及全精度寄存器组244A到244N),但其可通过在不使用这些全精度组件中的一者或一者以上时对这些全精度组件中的一者或一者以上选择性地断电或停用来节省或减少功率消耗。举例来说,在某些情形下,着色器处理器206可确定这些组件中的一者或一者以上未被使用,假定所加载的各种二进制指令将由半精度ALU 240A到240N中的一者或一者以上执行。因此,在这些类型的情形下,着色器处理器206可对所述全精度组件中的一者或一者以上选择性地断电或停用以用于功率节省。以此方式,着色器处理器206可依据给定时间处所处理的指令的类型及数目而以动态为基础对一个或一个以上全精度组件选择性地断电或停用。
在一个方面中,着色器处理器206也可能能够使用线程调度器224以对半精度ALU240A到240N中的一者或一者以上及半精度寄存器组246A到246N中的一者或一者以上选择性地断电或停用。在此方面中,着色器处理器206可通过在不使用或不需要这些半精度组件中的一者或一者以上时对这些半精度组件中的一者或一者以上选择性地断电或停用来节省或减少功率消耗。
着色器处理器206可提供各种益处及优点。举例来说,着色器处理器206可提供高灵活及适应性接口以满足混合精度指令(例如,全精度指令及半精度指令)的执行的不同要求。着色器处理器206可通过在混合精度指令的执行期间避免不必要的精度提升来显著地减少功率消耗。(当着色器处理器206将数据从例如半精度格式等较低精度格式动态地转换到例如全精度格式等较高精度格式时,精度提升可发生。精度提升可能在着色器处理器206内需要额外电路,且也可使着色器核心处理花费额外时钟循环。)因为线程调度器224能够辨识与从指令高速缓冲存储器230加载的二进制指令相关联的数据精度,所以线程调度器224能够将所述指令路由到执行单元234内的适当执行单元(例如,全精度ALU 236A或半精度ALU 240A)以供执行。
着色器处理器206也可通过利用较少全精度组件及通过替代地利用更多半精度组件(例如,ALU及寄存器组)来减小寄存器组242中的总寄存器堆大小及执行单元234中的ALU大小。另外,着色器处理器206可通过增大处理能力来增大总系统性能。
鉴于与较低功率消耗及增大的性能有关的各种潜在益处,着色器处理器206可用于各种不同类型的系统或装置中,例如无线通信装置、数码相机装置、视频记录或显示装置、视频游戏装置,或其它图形及多媒体装置。这些装置可包括一显示器以使用着色器处理器206来呈现所产生的图形内容。在一个方面中,由着色器处理器206提供的精度灵活性允许其与各种装置(包括多媒体装置)一起使用,此可提供比某些其它图形应用程序低的精度计算或具有比某些其它图形应用程序低的功率要求。
图3为根据一个方面说明可通过图2A到图2B中所示的着色器处理器206执行的示范性方法的流程图。在此方面中,所述示范性方法包括动作300、302、303、306、308、310及312,且还包括决策点304。
在动作300中,着色器处理器206接收二进制图形指令及对所述指令的执行的数据精度的指示。举例来说,如先前所描述,线程调度器224可从指令高速缓冲存储器230(图2B)加载指令。在一个方面中,通过线程调度器224对指令进行解码提供关于所述指令的执行的数据精度的信息。举例来说,所述指令可为全精度指令或半精度指令。
在动作302中,着色器处理器206接收与所述二进制指令相关联的图形数据。举例来说,定序器222可从图形顶点应用程序202B接收顶点数据和/或可从图形像素应用程序202A接收像素数据。在某些情形下,加载控制单元226也可从高速缓存存储器系统210加载与所述指令相关联的图形数据。在动作303中,着色器处理器206进一步接收一转换指令,所述转换指令在经执行时将与所述二进制指令相关联的图形数据转换到所指示的数据精度。
在决策点304处,着色器处理器206确定所述指令是全精度指令还是半精度指令。如上所述,在一个方面中,线程调度器224可对所述指令进行解码且确定其是全精度指令还是半精度指令。
如果所述指令为全精度指令,则在动作306中,在必要时,着色器处理器206将任何接收到的图形数据从半精度格式转换到全精度格式。在某些情况下,所接收到的图形数据(如存储于高速缓存存储器系统210中或如从图形应用程序202A或202B处理)可具有半精度格式。在此情况下,将所述图形数据转换到全精度格式,使得其可在全精度指令的执行期间使用。在一个方面中,当接收到的转换指令由着色器处理器206执行时,加载控制单元226的精度转换器228可管理数据格式转换。在动作308中,着色器处理器206选择一全精度单元(例如,单元236A(图2C))以使用所述图形数据来执行所述二进制指令。
然而,如果所述指令为半精度指令,则在动作310中,在必要时,着色器处理器将任何数据从全精度格式转换到半精度格式。在一个方面中,当接收到的转换指令由着色器处理器206执行时,精度转换器228可管理数据格式转换。在动作312中,着色器处理器206接着选择一半精度单元(例如,单元240A(图2C))以使用所述图形数据来执行所述二进制指令。
图4为根据一个方面说明可用以产生待由图1中所示的串流处理器106或由图2A到图2B中所示的着色器处理器206执行的指令的编译器402的框图。在一个实例方面中,编译器402用以产生待由着色器处理器206执行的指令。在此方面中,应用程序开发者可使用编译器402来产生供着色器处理器206执行的二进制指令(代码)。着色器处理器206为图形装置200(图2A)的部分。应用程序开发者可存取供与图形装置200一起使用的应用程序开发平台,且可产生用于图形像素应用程序202A和/或图形顶点应用程序202B的应用级软件。此应用级软件包括图4中所示的图形应用程序指令400。图形应用程序指令400可包括通过符合或可转译成
Figure BPA00001249010100151
OpenVGTM或其它语言的高级着色语言所写的指令。在一个方面中,这些着色语言界定可用于开发编程代码以执行图形操作的一个或一个以上标准API。
编译器402可至少部分由处理器所执行的编译器软件支持以接收及处理源代码指令且编译这些指令以产生经编译指令(例如,呈二进制、可执行机器指令的形式)。因此,编译器402可由执行与所述编译器软件相关联的计算机可读指令的一个或一个以上处理器形成。在一个方面中,这些一个或一个以上处理器可为应用程序开发者所使用的应用程序开发平台的部分或实施于所述应用程序开发平台中。所述经编译指令可存储于一计算机可读数据存储媒体上以供一个或一个以上处理器(例如,串流处理器106或着色器处理器206)检索及执行。举例来说,本发明涵盖一种计算机可读数据存储媒体,其包括一个或一个以上第一可执行指令、一个或一个以上第二可执行指令及一个或一个以上第三可执行指令。
所述第一可执行指令在由处理器执行时可支持一图形应用程序的一个或一个以上功能。另外,所述第一可执行指令中的每一者可指示用于其执行的第一数据精度级别。所述第二可执行指令在由处理器执行时可支持所述图形应用程序的一个或一个以上功能。另外,所述第二可执行指令中的每一者可指示用于其执行的不同于所述第一数据精度级别的第二数据精度级别。所述第三可执行指令在由所述处理器执行时也可支持所述图形应用程序的一个或一个以上功能,其中所述第三可执行指令中的每一者在所述一个或一个以上第一可执行指令经执行时将图形数据从所述第二数据精度级别转换到所述第一数据精度级别
编译器402可能能够将图形应用程序指令400编译成二进制图形指令404,二进制图形指令404接着能够由着色器处理器206执行。着色器处理器206可从一数据存储媒体(例如,存储器或数据存储装置)检索这些指令,且执行这些指令以执行计算及其它操作来支持图形应用程序。图形应用程序指令400中的若干者可指定执行的特定数据精度级别。举例来说,某些指令可指定其使用全精度或半精度操作或计算。编译器402可经配置以应用规则406来在编译过程期间分析及剖析图形应用程序指令400且产生指示指令404的执行的数据精度级别的对应二进制指令图形404。
因此,如果图形应用程序指令400中的一者指定全精度操作或计算,则编译器402的规则406可产生二进制指令404中的为全精度指令的一者或一者以上。如果图形应用程序指令400中的另一者指定半精度操作或计算,则规则406产生二进制指令404中的为半精度指令的一者或一者以上。在一个方面中,二进制指令404各自可包括一指示所述指令为全精度指令还是半精度指令的‘操作码’。在一个方面中,二进制指令404各自可使用可由着色器处理器206进行解码的指令的另一预定义字段、旗标或标头内所含有的信息来指示所述指令的执行的数据精度。在一个方面中,可基于待执行的指令的类型来推断数据精度。
编译器402还包括能够产生在不同数据精度级别之间转换的二进制转换指令410的规则408。在编译期间,编译器402的这些规则408可确定此转换在二进制指令404的执行期间可为必要的。举例来说,规则408可产生转换指令410内的将数据从全精度格式转换到半精度格式的一个或一个以上指令。当着色器处理器206执行图形指令404内的半精度指令时,可能需要此转换。规则408也可产生转换指令410内的将数据从半精度格式转换到全精度格式的一个或一个以上指令,当着色器处理器206执行图形指令404内的全精度指令时,可能需要此转换。
根据一个方面,当编译器402的规则408产生转换指令410时,着色器处理器206可执行这些转换指令410以在对应图形指令404的执行期间管理数据精度转换。在此方面中,转换指令410的执行管理此精度转换,使得着色器处理器206未必需要使用某些硬件转换机制来将数据从一个精度级别转换到另一精度级别。转换指令410也可允许更有效地将数据传送到使用不同精度级别的ALU(例如,到全精度ALU 236及到半精度ALU 240)。
本文中所描述的组件及技术可以硬件、软件、固件或其任何组合来实施。描述为模块或组件的任何特征可一起实施于集成逻辑装置中或单独地实施为离散但可共同操作的逻辑装置。在各种方面中,这些组件可至少部分形成为一个或一个以上集成电路装置(其可共同地称作集成电路装置),例如集成电路芯片或芯片组。此集成电路装置可用于多种图形应用程序及装置中的任一者中。在一些方面中,举例来说,这些组件可形成例如无线通信装置手持机等移动装置的部分。
如果以软件来实施,则可至少部分通过计算机可读媒体来实现所述技术,所述计算机可读媒体包含在由一个或一个以上处理器执行时执行上文所描述的方法中的一者或一者以上的指令。计算机可读媒体可形成可包括封装材料的计算机程序产品的部分。计算机可读媒体可包含例如同步动态随机存取存储器(SDRAM)等随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、磁性或光学数据存储媒体。
另外或其它,所述技术可至少部分通过计算机可读通信媒体来实现,所述计算机可读通信媒体载运或传达呈指令或数据结构的形式且可由一个或一个以上处理器存取、读取和/或执行的代码。可将任何连接恰当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL),或例如红外、无线电及微波等无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL,或例如红外、无线电及微波等无线技术包括于媒体的定义中。以上各物的组合也应包括在计算机可读媒体的范围内。
所利用的任何软件可由一个或一个以上处理器来执行,例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”或“控制器”可指代上述结构中的任一者或适于实施本文中所描述的技术的任何其它结构。因此,本发明还涵盖包括实施本发明中所描述的技术中的一者或一者以上的电路的多种集成电路装置中的任一者。此电路可提供于单一集成电路芯片装置中或多个可共同操作的集成电路芯片装置中。
已描述本发明的各种方面。这些及其它方面在所附权利要求书的范围内。

Claims (41)

1.一种图形处理方法,其包含:
接收供在可编程串流处理器内执行的图形指令;
接收对所述图形指令的执行的数据精度的指示,其中所述数据精度的所述指示包含于所述图形指令内;
接收转换指令,所述转换指令先前已由编译器产生且在由所述处理器执行时将与所述图形指令相关联的图形数据转换到所指示数据精度,所述转换指令不同于所述图形指令;
基于所述所指示数据精度来选择所述处理器内的多个执行单元中的一者;以及
使用选定执行单元来使用与所述图形指令相关联的所述图形数据以所述所指示数据精度执行所述图形指令。
2.根据权利要求1所述的方法,其进一步包含:
接收与所述图形指令相关联的所述图形数据;
在所述选定执行单元执行所述图形指令期间产生具有所述所指示数据精度的计算结果;以及
将所述计算结果作为输出来提供。
3.根据权利要求1所述的方法,其中选择所述多个执行单元中的一者包含:
选择所述处理器内的第一组一个或一个以上执行单元中的一者,所述第一组一个或一个以上执行单元在所述所指示数据精度为第一数据精度时各自使用所述图形数据以所述第一数据精度执行指令;以及
选择所述处理器内的第二组一个或一个以上执行单元中的一者,所述第二组一个或一个以上执行单元在所述所指示数据精度为第二数据精度时各自使用所述图形数据以所述第二数据精度执行指令,所述第二数据精度不同于所述第一数据精度。
4.根据权利要求3所述的方法,其中所述第一数据精度包含全数据精度,且其中所述第二数据精度包含半数据精度。
5.根据权利要求1所述的方法,其中所述执行单元包括所述处理器内的第一组一个或一个以上执行单元,所述第一组一个或一个以上执行单元各自使用所述图形数据以第一数据精度执行指令,且所述执行单元进一步包括所述处理器内的第二组一个或一个以上执行单元,所述第二组一个或一个以上执行单元各自使用所述图形数据以不同于所述第一数据精度的第二数据精度执行指令。
6.根据权利要求5所述的方法,其中:
基于所述所指示数据精度来选择所述处理器内的所述多个执行单元中的一者包含选择所述第一组中的所述执行单元中的一者;且
使用所述选定执行单元来执行所述图形指令包含使用所述第一组中的所述选定执行单元来使用与所述图形指令相关联的所述图形数据以所述所指示数据精度执行所述图形指令。
7.根据权利要求6所述的方法,其进一步包含:
接收供在所述处理器内执行的第二图形指令;
接收对所述第二图形指令的执行的所述第二数据精度的指示,其中所述第二数据精度的所述指示包含于所述第二图形指令内;
接收第二转换指令,所述第二转换指令在由所述处理器执行时将与所述第二图形指令相关联的图形数据转换到所述所指示的第二数据精度,所述第二转换指令不同于所述第二图形指令;
基于所述所指示的第二数据精度来选择所述第二组中的所述执行单元中的一者;以及
使用所述第二组中的所述选定执行单元来使用与所述第二图形指令相关联的所述图形数据以所述所指示的第二数据精度执行所述第二图形指令。
8.根据权利要求1所述的方法,其中接收对所述图形指令的执行的所述数据精度的所述指示包含对所述图形指令进行解码以确定所述数据精度。
9.根据权利要求1所述的方法,其中使用所述选定执行单元来使用所述图形数据以所述所指示数据精度执行所述图形指令包含:
经由所述转换指令的执行将所述图形数据转换到所述所指示数据精度;以及
使用所述选定执行单元来使用经转换图形数据以所述所指示数据精度执行所述图形指令。
10.根据权利要求1所述的方法,其中与所述图形指令相关联的所述图形数据包含顶点图形数据及像素图形数据中的至少一者。
11.一种图形处理装置,其包含:
用于接收供在可编程串流处理器内执行的图形指令的装置;
用于接收对所述图形指令的执行的数据精度的指示的装置,其中所述数据精度的所述指示包含于所述图形指令内;
用于接收转换指令的装置,所述转换指令先前已由编译器产生且在由所述处理器执行时将与所述图形指令相关联的图形数据转换到所指示数据精度,所述转换指令不同于所述图形指令;
用于基于所述所指示数据精度来选择所述处理器内的多个执行单元中的一者的装置;以及
用于使用选定执行单元来使用与所述图形指令相关联的所述图形数据以所述所指示数据精度执行所述图形指令的装置。
12.根据权利要求11所述的装置,其中所述装置包含:
控制器,其经配置以:接收供在所述可编程串流处理器内执行的所述图形指令;接收对所述图形指令的执行的所述数据精度的所述指示;以及接收所述转换指令,所述转换指令在由所述处理器执行时将与所述图形指令相关联的所述图形数据转换到所述所指示数据精度;以及
所述处理器内的所述多个执行单元,
其中所述控制器经配置以基于所述所指示的数据精度来选择所述执行单元中的一者且使所述选定执行单元使用与所述图形指令相关联的所述图形数据以所述所指示数据精度执行所述图形指令。
13.根据权利要求12所述的装置,其中所述多个执行单元包括经配置而以所述所指示数据精度执行指令的第一执行单元及经配置而以不同于所述所指示数据精度的第二数据精度执行指令的第二执行单元,且其中所述控制器经配置以选择所述第一执行单元来使用所述图形数据以所述所指示数据精度执行所述图形指令。
14.根据权利要求12所述的装置,其中所述多个执行单元包括一个或一个以上全精度执行单元及至少四个半精度执行单元。
15.根据权利要求14所述的装置,其中当所述图形指令的执行的所述所指示数据精度包含全精度时,所述控制器经配置以选择所述全精度执行单元中的一者来使用所述图形数据执行所述图形指令。
16.根据权利要求14所述的装置,其中当所述图形指令的执行的所述所指示数据精度包含半精度时,所述控制器经配置以选择所述半精度执行单元中的一者来使用所述图形数据执行所述图形指令。
17.根据权利要求14所述的装置,其进一步包含:
至少一个全精度寄存器组,其用以在所述至少一个全精度执行单元执行指令时存储计算结果;以及
至少四个半精度寄存器组,其用以在所述至少四个半精度执行单元执行指令时存储计算结果。
18.根据权利要求12所述的装置,其中所述多个执行单元包括至少一个全精度执行单元及至少一个半精度执行单元,且其中当所述图形指令的执行的所述所指示数据精度包含半精度时,所述控制器经配置以切断对所述至少一个全精度执行单元的供电且使所述至少一个半精度执行单元使用所述图形数据来执行所述图形指令。
19.根据权利要求12所述的装置,其中所述处理器包含着色器处理器。
20.根据权利要求12所述的装置,其中所述装置包含无线通信装置手持机。
21.根据权利要求12所述的装置,其中所述装置包含一个或一个以上集成电路装置。
22.根据权利要求12所述的装置,其中所述处理器进一步经配置以:
接收与所述图形指令相关联的所述图形数据;
在所述选定执行单元执行所述图形指令期间产生具有所述所指示数据精度的计算结果;以及
将所述计算结果作为输出来提供。
23.根据权利要求12所述的装置,其中所述控制器经配置以:
选择所述处理器内的第一组一个或一个以上执行单元中的一者,所述第一组一个或一个以上执行单元在所述所指示数据精度为第一数据精度时各自使用所述图形数据以所述第一数据精度执行指令;以及
选择所述处理器内的第二组一个或一个以上执行单元中的一者,所述第二组一个或一个以上执行单元在所述所指示数据精度为第二数据精度时各自使用所述图形数据以所述第二数据精度执行指令,所述第二数据精度不同于所述第一数据精度。
24.根据权利要求12所述的装置,其中所述控制器经配置以对所述图形指令进行解码以确定所述数据精度。
25.根据权利要求12所述的装置,其中所述处理器进一步经配置以:
经由所述转换指令的执行将所述图形数据转换到所述所指示数据精度;以及
使用所述选定执行单元来使用经转换图形数据以所述所指示数据精度执行所述图形指令。
26.根据权利要求12所述的装置,其中与所述图形指令相关联的所述图形数据包含顶点图形数据及像素图形数据中的至少一者。
27.根据权利要求12所述的装置,其进一步包含
至少一个存储器模块,其耦合到所述处理器,
其中所述控制器经配置以从所述至少一个存储器模块接收供执行的所述图形指令。
28.一种图形处理方法,其包含:
由编译器分析图形应用程序的多个应用程序指令;
对于指定其执行的第一数据精度级别的每一应用程序指令,由所述编译器产生各自指示其执行的所述第一数据精度级别的一个或一个以上对应经编译指令;以及
由所述编译器产生一个或一个以上转换指令以在所述一个或一个以上经编译指令被执行时将图形数据从第二数据精度级别转换到所述第一数据精度级别,其中所述第二数据精度级别不同于所述第一数据精度级别。
29.根据权利要求28所述的方法,其中所述第一数据精度级别包含全数据精度级别,且其中所述第二数据精度级别包含半数据精度级别。
30.根据权利要求28所述的方法,其中产生所述一个或一个以上经编译指令包含产生在对应应用程序指令指定其执行的全数据精度级别时各自指示所述全数据精度级别的一个或一个以上经编译指令。
31.根据权利要求28所述的方法,其中产生所述一个或一个以上经编译指令包含产生在对应应用程序指令指定其执行的半数据精度级别时各自指示所述半数据精度级别的一个或一个以上经编译指令。
32.根据权利要求28所述的方法,其中所述一个或一个以上经编译指令各自包括预定义字段,所述预定义字段包括在所述对应应用程序指令指定其执行的所述第一数据精度级别时指示所述第一数据精度级别的信息。
33.根据权利要求28所述的方法,其进一步包含将所述一个或一个以上经编译指令存储于存储器中以供后续执行。
34.一种图形处理设备,其包含:
用于分析多个图形应用程序指令的装置;
对于指定其执行的第一数据精度级别的每一图形应用程序指令,用于产生各自指示其执行的所述第一数据精度级别的一个或一个以上对应经编译指令的装置;以及
用于产生一个或一个以上转换指令以在所述一个或一个以上经编译指令被执行时将图形数据从第二数据精度级别转换到所述第一数据精度级别的装置,其中所述第二数据精度级别不同于所述第一数据精度级别。
35.根据权利要求34所述的设备,其中所述第一数据精度级别包含全数据精度级别,且其中所述第二数据精度级别包含半数据精度级别。
36.根据权利要求34所述的设备,其中所述用于产生所述一个或一个以上经编译指令的装置包含用于产生在对应图形应用程序指令指定其执行的全数据精度级别时各自指示所述全数据精度级别的所述一个或一个以上经编译指令的装置。
37.根据权利要求34所述的设备,其中所述用于产生所述一个或一个以上经编译指令的装置包含用于产生在对应图形应用程序指令指定其执行的半数据精度级别时各自指示所述半数据精度级别的所述一个或一个以上经编译指令的装置。
38.根据权利要求34所述的设备,其中所述一个或一个以上经编译指令各自包括预定义字段,所述预定义字段包括在所述对应图形应用程序指令指定其执行的所述第一数据精度级别时指示所述第一数据精度级别的信息。
39.根据权利要求34所述的设备,其进一步包含用于将所述一个或一个以上经编译指令存储于存储器中以供后续执行的装置。
40.一种图形处理方法,其包含:
由编译器产生一个或一个以上第一可执行指令,其中所述一个或一个以上第一可执行指令在由可编程串流处理器执行时支持图形应用程序的一个或一个以上功能,其中所述第一可执行指令中的每一者指示其执行的第一数据精度级别;
由所述编译器产生一个或一个以上第二可执行指令,其中所述一个或一个以上第二可执行指令在由所述处理器执行时支持所述图形应用程序的一个或一个以上功能,其中所述第二可执行指令中的每一者指示其执行的不同于所述第一数据精度级别的第二数据精度级别;以及
由所述编译器产生一个或一个以上第三可执行指令,其中所述一个或一个以上第三可执行指令在由所述处理器执行时支持所述图形应用程序的一个或一个以上功能,其中所述第三可执行指令中的每一者在所述一个或一个以上第一可执行指令被执行时将图形数据从所述第二数据精度级别转换到所述第一数据精度级别。
41.根据权利要求40所述方法,其中所述第一数据精度级别包含全数据精度级别,且其中所述第二数据精度级别包含半数据精度级别。
CN200980114125.4A 2008-04-21 2009-04-21 具有混合精度指令执行的可编程串流处理器 Active CN102016926B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/106,654 US8633936B2 (en) 2008-04-21 2008-04-21 Programmable streaming processor with mixed precision instruction execution
US12/106,654 2008-04-21
PCT/US2009/041268 WO2009132013A1 (en) 2008-04-21 2009-04-21 Programmable streaming processor with mixed precision instruction execution

Publications (2)

Publication Number Publication Date
CN102016926A CN102016926A (zh) 2011-04-13
CN102016926B true CN102016926B (zh) 2014-01-08

Family

ID=41001956

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980114125.4A Active CN102016926B (zh) 2008-04-21 2009-04-21 具有混合精度指令执行的可编程串流处理器

Country Status (8)

Country Link
US (1) US8633936B2 (zh)
EP (1) EP2281277A1 (zh)
JP (1) JP5242771B2 (zh)
KR (1) KR101321655B1 (zh)
CN (1) CN102016926B (zh)
CA (1) CA2721396A1 (zh)
TW (1) TW201001328A (zh)
WO (1) WO2009132013A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8487450B2 (en) 2007-05-01 2013-07-16 Micron Technology, Inc. Semiconductor constructions comprising vertically-stacked memory units that include diodes utilizing at least two different dielectric materials, and electronic systems
US8553040B2 (en) * 2009-06-30 2013-10-08 Apple Inc. Fingerprinting of fragment shaders and use of same to perform shader concatenation
US8771064B2 (en) 2010-05-26 2014-07-08 Aristocrat Technologies Australia Pty Limited Gaming system and a method of gaming
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9195501B2 (en) 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US9465620B2 (en) * 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
US9760966B2 (en) * 2013-01-08 2017-09-12 Nvidia Corporation Parallel processor with integrated correlation and convolution engine
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures
US9389863B2 (en) * 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9588845B2 (en) * 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US9471305B2 (en) * 2014-05-09 2016-10-18 Samsung Electronics Co., Ltd. Micro-coded transcendental instruction execution
KR20160061701A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 서로 다른 정확도를 갖는 연산기들을 이용하여 데이터를 처리하는 방법 및 장치
EP3193235B1 (en) * 2014-12-12 2021-02-24 VIA Alliance Semiconductor Co., Ltd. Graphics processing system and power gating method thereof
US10489197B2 (en) 2015-06-01 2019-11-26 Samsung Electronics Co., Ltd. Highly efficient inexact computing storage device
KR102444240B1 (ko) 2015-07-29 2022-09-16 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US9652235B1 (en) 2015-11-24 2017-05-16 International Business Machines Corporation Method of synchronizing independent functional unit
US20170315807A1 (en) * 2016-05-02 2017-11-02 Oracle International Corporation Hardware support for dynamic data types and operators
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN107977227A (zh) * 2016-10-21 2018-05-01 超威半导体公司 包括不同指令类型的独立硬件数据路径的管线
CN108268940B (zh) * 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10417734B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10417731B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN107291420B (zh) 2017-06-27 2020-06-05 上海兆芯集成电路有限公司 整合算术及逻辑处理的装置
CN107315710B (zh) * 2017-06-27 2020-09-11 上海兆芯集成电路有限公司 全精度及部分精度数值的计算方法及装置
US11704125B2 (en) * 2018-02-13 2023-07-18 Cambricon (Xi'an) Semiconductor Co., Ltd. Computing device and method
US11455766B2 (en) * 2018-09-18 2022-09-27 Advanced Micro Devices, Inc. Variable precision computing system
CN111488176B (zh) * 2019-01-25 2023-04-18 阿里巴巴集团控股有限公司 一种指令调度方法、装置、设备及存储介质
US20220114096A1 (en) 2019-03-15 2022-04-14 Intel Corporation Multi-tile Memory Management for Detecting Cross Tile Access Providing Multi-Tile Inference Scaling and Providing Page Migration
US11823052B2 (en) * 2019-10-11 2023-11-21 Qualcomm Incorporated Configurable MAC for neural network applications
US11935175B2 (en) * 2022-04-07 2024-03-19 Huawei Technologies Co., Ltd. Apparatus, method, and computer-readable medium for image processing using variable-precision shading

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200519730A (en) * 2003-09-18 2005-06-16 Nvidia Corp High quality and high performance three-dimensional graphics architecture for portable handheld devices
CN101131768A (zh) * 2006-07-26 2008-02-27 辉达公司 图形管线中基于瓦片的精度的光栅化

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6297031A (ja) * 1985-10-23 1987-05-06 Nec Corp 仮数部のビツト数整合方式
JP2665392B2 (ja) 1990-09-27 1997-10-22 富士通株式会社 コンパイル処理方式
JP3295853B2 (ja) 1992-04-27 2002-06-24 富士通株式会社 コンパイル処理装置
JPH06297031A (ja) 1993-04-12 1994-10-25 Nippon Steel Corp 伸線方法
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US6044216A (en) * 1996-06-24 2000-03-28 Oracle Corporation Method and apparatus for implementing cursor variables for accessing data from database
US5953237A (en) * 1996-11-25 1999-09-14 Hewlett-Packard Company Power balancing to reduce step load
US5784588A (en) * 1997-06-20 1998-07-21 Sun Microsystems, Inc. Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions
GB0315844D0 (en) * 2003-07-04 2003-08-13 Transitive Ltd Method and apparatus for performing adjustable precision exception handling
JP4129981B2 (ja) 2004-04-02 2008-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、コンパイラプログラム、記録媒体、制御方法、及び中央処理装置
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
JP4786268B2 (ja) 2005-09-13 2011-10-05 株式会社東芝 コンパイル装置
CN101359284B (zh) 2006-02-06 2011-05-11 威盛电子股份有限公司 处理数个不同数据格式的乘法累加单元及其方法
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8421794B2 (en) 2007-03-23 2013-04-16 Qualcomm Incorporated Processor with adaptive multi-shader
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200519730A (en) * 2003-09-18 2005-06-16 Nvidia Corp High quality and high performance three-dimensional graphics architecture for portable handheld devices
CN101131768A (zh) * 2006-07-26 2008-02-27 辉达公司 图形管线中基于瓦片的精度的光栅化

Also Published As

Publication number Publication date
JP2011518398A (ja) 2011-06-23
KR101321655B1 (ko) 2013-10-30
JP5242771B2 (ja) 2013-07-24
CA2721396A1 (en) 2009-10-29
KR20110002098A (ko) 2011-01-06
CN102016926A (zh) 2011-04-13
TW201001328A (en) 2010-01-01
US8633936B2 (en) 2014-01-21
WO2009132013A1 (en) 2009-10-29
US20090265528A1 (en) 2009-10-22
EP2281277A1 (en) 2011-02-09

Similar Documents

Publication Publication Date Title
CN102016926B (zh) 具有混合精度指令执行的可编程串流处理器
US11442795B2 (en) Convergence among concurrently executing threads
CN101231585B (zh) 定义用于目标平台结构的并行处理操作方法
EP3489907B1 (en) Shader program execution techniques for use in graphics processing
CN109564699B (zh) 用于经优化光线追踪的装置和方法
CN109564700A (zh) 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN108475441B (zh) 光线追踪期间的详细级别选择
CN110187977A (zh) 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法
US10191724B2 (en) Compiler-based instruction scoreboarding
US20170372448A1 (en) Reducing Memory Access Latencies During Ray Traversal
CN108694081A (zh) 用于机器学习的快速数据操作和有限状态机
CN108734637A (zh) 图形控制流机制
CN109923519A (zh) 用于加速多核计算架构中的图形工作负荷的机制
CN108885796A (zh) 利用平面重复使用的降低精度的光线遍历
CN108693950A (zh) 处理器功率管理
US10409571B1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
CN115129370A (zh) 在计算架构中支持8位浮点格式操作数
CN110070477A (zh) 用于可缩放中断基础结构的方法和装置
CN109155077B (zh) 渐进渲染的体积光线追踪
CN113590198A (zh) 使用脉动阵列在并行计算机器中计算高效的跨通道运算
CN116166608A (zh) 运行时简档引导的工作负载执行
CN116069459A (zh) 使用可变命令列表的可编程gpu命令缓冲器
CN109564676A (zh) 管芯上曲面细分分配
CN117350911A (zh) 一种着色器输入数据的处理方法和图形处理装置
CN115409684A (zh) 图形处理中经压缩的z平面的存储与应用

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