CN101441761B - 图形处理器单元管线中的条件执行位 - Google Patents

图形处理器单元管线中的条件执行位 Download PDF

Info

Publication number
CN101441761B
CN101441761B CN2008101351974A CN200810135197A CN101441761B CN 101441761 B CN101441761 B CN 101441761B CN 2008101351974 A CN2008101351974 A CN 2008101351974A CN 200810135197 A CN200810135197 A CN 200810135197A CN 101441761 B CN101441761 B CN 101441761B
Authority
CN
China
Prior art keywords
pixel
alu
execute bit
operand
data
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
CN2008101351974A
Other languages
English (en)
Other versions
CN101441761A (zh
Inventor
泰森·J·伯兰格
克雷格·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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN101441761A publication Critical patent/CN101441761A/zh
Application granted granted Critical
Publication of CN101441761B publication Critical patent/CN101441761B/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
    • 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
    • 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

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)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

本发明涉及图形处理器单元管线中的条件执行位。一种在图形处理器单元中的算术逻辑级包含若干算术逻辑单元(ALU)。将指令应用于包括与不同像素相关联的像素数据的多组操作数。条件执行位的值确定所述ALU如何处理一组操作数中的所述像素数据。

Description

图形处理器单元管线中的条件执行位
相关美国申请案
本申请案涉及T.博格兰(T.Bergland)等人于2007年8月15日申请的第11/893,499号美国专利申请案,标题为“在图形处理器单元管线中缓冲解串行化的像素数据”(Buffering Deserialized Pixel Data in a Graphics Processor Unit Pipeline)且代理人案号为NVID-P003219,该申请案转让给本发明的受让人,且其全文在此以引用的方式并入本文中。 
本申请案涉及T.博格兰(T.Bergland)等人于2007年8月15日申请的第11/893,622号美国专利申请案,标题为“图形处理器单元管线中的共用的可读取且可写入的总值”(Shared Readable and Writeable Global Values in a Graphics Processor Unit Pipeline)且代理人案号为NVID-P003476,该申请案转让给本发明的受让人,且其全文在此以引用的方式并入本文中。 
技术领域
本发明的实施例大体上涉及计算机图形。 
背景技术
近年来在计算机性能方面的进步已令图形系统能够使用个人计算机、家庭电子游戏计算机、手持装置等来提供更加真实的图形图像。在此类图形系统中,执行若干程序,以便将图元渲染或绘制到系统的屏幕。图元是图形的基本组成部分,例如是点、线、多边形等。所渲染的图像由这些图元的组合形成。可利用许多程序来执行三维(3-D)图形渲染。 
已经研发出专用的图形处理单元(GPU),以提高图形渲染程序的执行速度。GPU通常并入有一个或一个以上渲染管线。每一渲染管线包含若干经设计以用于高速执行图形指令/数据的基于硬件的功能单元。一般来说,将指令/数据馈送到管线前端,且计算出的结果出现在管线后端。GPU的基于硬件的功能单元、高速缓冲存储器、固件等经设计以对基本图元进行操作,并产生实时渲染的3-D图像。 
人们越来越关注于在例如手机、个人数字助理(PDA)和其它装置等便携或手持装置中渲染3-D图形图像。然而,便携或手持装置通常相对于例如台式计算机等更大的装置来说具有限制。举例来说,因为便携装置通常用电池供电,所以功率消耗成了人们关 注的一个问题。此外,由于其尺寸较小,所以便携装置内部的可用空间有限。需要在手持装置中在此类装置的限制内快速地执行真实的3-D图形渲染。 
发明内容
本发明的实施例提供用于在图形处理器单元管线中快速且高效地处理数据的方法和系统。 
用于一像素群组的像素数据沿着图形管线共同前进到算术逻辑单元(ALU)。在ALU中,以SIMD(单个指令、多个数据)的方式向一群组中的所有像素应用同一指令。举例来说,在给定的时钟循环中,指令将指定从用于所述像素群组中的第一像素的像素数据中选出的一组操作数。在下一时钟循环中,指令将指定从用于所述群组中的第二像素的像素数据中选出的另一组操作数,依此类推。根据本发明的实施例,一条件执行位与每一组操作数相关联。所述条件执行位的值确定ALU如何(是否)处理相应组的操作数。 
一般来说,如果一条件执行位被设置成不执行,那么ALU不对与所述条件执行位相关联的像素数据进行操作。更具体来说,在一个实施例中,如果条件执行位被设置成不执行,则ALU不锁存像素数据;此可通过将到ALU的输入触发器选通以使得所述触发器不在像素数据中计时来实现。因此,ALU不改变状态——ALU中的锁存器(触发器)保持处于其在前一时钟循环中所处的状态。通过不为触发器计时节省了功率,而且还因为对组合逻辑的输入保持不变且因此没有任何晶体管改变状态而节省了功率(触发器之所以不从一个状态过渡成另一个状态,是因为如果条件位被设置成不执行,那么操作数从一个时钟循环到下一时钟循环保持不变)。 
总的来说,在一像素群组上应用指令,但可能不必对所述群组中的每一像素均执行所述指令。为了在管线中维持适当的次序,向群组中的每一像素应用所述指令——针对群组中的每一像素选择一组操作数。然而,如果与一组操作数相关联的条件执行位被设置成不执行,那么ALU不对那些操作数进行操作——不对操作数执行相关联的指令,而是改为复制下游操作数。因此,不必对触发器计时,且不必切换组合逻辑,因而节省了功率。由此,本发明的实施例非常适合于手持和其它便携的用电池操作的装置中的图形处理(但本发明不限于在那些类型的装置上使用)。 
所属领域的技术人员在阅读了以下对各种图式中所说明的实施例的详细描述后,将认识到本发明的各种实施例的这些和其它目的和优点。 
附图说明
在附图各图中是以举例的方式而不是以限制的方式来说明本发明,且其中相同参考数字指代类似元件。 
图1是展示根据本发明一个实施例的计算机系统的组件的方框图。 
图2是展示根据本发明一个实施例的图形处理单元(GPU)的组件的方框图。 
图3说明根据本发明一个实施例的GPU管线中的级。 
图4说明根据本发明一实施例的一连串行的像素数据。 
图5是根据本发明一个实施例的GPU中的算术逻辑级的方框图。 
图6说明退出根据本发明一实施例的算术逻辑单元的像素数据。 
图7A说明根据本发明一个实施例的ALU的各个级中的像素数据。 
图7B说明根据本发明一实施例的ALU的各个级。 
图8是根据本发明一个实施例的用于处理像素数据的由计算机实施的方法的流程图。 
具体实施方式
现在将详细参看本发明的实施例,在附图中说明所述实施例的实例。虽然将结合这些实施例描述本发明,但将了解,这些实施例并不意欲将本发明限于这些实施例。相反,本发明意欲涵盖所附权利要求书所界定的本发明的精神和范围内可包含的替代方案、修改和等效物。此外,在对本发明实施例的以下详细描述中,为了提供对本发明的全面理解而阐述了许多具体细节。然而,所属领域的技术人员将认识到,可在没有这些具体细节的情况下实践本发明。在其它例子中,并未详细描述众所周知的方法、程序、组件和电路,以免不必要地模糊本发明实施例的各方面。 
在程序、步骤、逻辑区块、处理和对计算机存储器内的数据位的操作的其它符号表示方面呈现以下详细描述的一些部分。这些描述和表示是数据处理领域的技术人员用以最有效地向所属领域的其他技术人员传达其工作的主旨的手段。此处,程序、由计算机执行的步骤、逻辑区块、过程等大体上被设想成产生所要结果的自相一致的步骤或指令序列。所述步骤是要求对物理量进行物理操纵的步骤。通常(但不必要),这些量采用能够在计算机系统中存储、传送、组合、比较和以其它方式操纵的电信号或磁信号的形式。事实证明,将这些信号称为位、值、元素、符号、字符、项、数字等有时候较方便,主要原因是通用。 
然而,应牢记,所有这些和类似的术语将与适当的物理量相关联,而且只是应用于这些量的便利标记。如从以下论述将明白,除非另外明确声明,否则应了解,在本发明 各处,利用例如“确定”或“使用”或“设置”或“锁存”或“计时”或“识别”或“选择”或“处理”或“控制”等术语的论述是指代计算机系统(例如图1的计算机系统100)或类似的电子计算装置的动作和过程,所述动作和过程对表示为计算机系统的寄存器和存储器内的物理(电子)量的数据进行操纵并将其转换成以类似方式表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示装置内的物理量的其它数据。 
图1展示根据本发明一个实施例的计算机系统100。所述计算机系统包含根据本发明实施例的为特定的基于硬件和基于软件的功能性提供执行平台的基本计算机系统的组件。一般来说,所述计算机系统包括至少一个中央处理单元(CPU)101、系统存储器115和至少一个图形处理器单元(GPU)110。GPU可经由桥接组件/存储器控制器(未图示)耦合到系统存储器,或者可经由CPU内部的存储器控制器(未图示)直接耦合到系统存储器。GPU耦合到显示器112。一个或一个以上额外GPU可视情况而耦合到系统100,以便进一步提高其计算能力。GPU耦合到CPU和系统存储器。计算机系统可实施成(例如)台式计算机系统或服务器计算机系统,其具有耦合到专用图形渲染GPU的强大的通用CPU。在此实施例中,可包含添加外围总线、专用图形存储器、输入/输出(I/O)装置等的组件。类似地,计算机系统可实施成手持装置(例如手机等)或机顶视频游戏控制台装置。 
GPU可实施成离散组件、经设计以经由连接器(例如,图形加速端口插槽、外围组件互连Express插槽等)耦合到计算机系统的离散图形卡、离散集成电路电路小片(例如,直接安装在母板上)或包含在计算机系统芯片组组件(未图示)的集成电路电路小片内或PSOC(可编程芯片上系统)的集成电路电路小片内的集成的GPU。此外,可针对GPU包含本机图形存储器114以用于高带宽图形数据存储。 
图2展示说明根据本发明一个实施例的GPU110和图形存储器114的内部组件的图。如图2中所描绘,GPU包含图形管线210和耦合到如图所示的图形存储器的碎片数据高速缓冲存储器250。 
在图2的实例中,图形管线210包含若干功能模块。图形管线的三个此类功能模块(例如,程序定序器220、算术逻辑级(ALU)230和数据写入组件240)通过渲染从图形应用程序(例如,从图形驱动程序等)接收的图元而运作。功能模块220—240经由碎片数据高速缓冲存储器250存取信息,以用于渲染与图元有关的像素。碎片数据高速缓冲存储器充当用于存储在图形存储器(例如,帧缓冲存储器)中的信息的高速高速缓冲存储器。 
程序定序器通过控制图形管线的功能模块的操作而运作。程序定序器可与图形驱动 程序(例如在图1的CPU101上执行的图形驱动程序)交互,以便控制图形管线的功能模块接收信息、针对操作而自行配置和处理图元的方式。举例来说,在图2的实施例中,图形管线通过来自上游功能模块(例如,来自上游光栅器模块、来自设置模块或来自图形驱动程序)的共同输入260来接收图形渲染数据(例如图元、三角形条带等)、管线配置信息(例如模式设置、渲染轮廓等)和渲染程序(例如像素着色器程序、顶点着色器程序等)。输入260充当图形管线的功能模块之间的主要的碎片数据路径或管线。一般在管线前端接收图元,并在图元沿着管线从一个模块前进到下一模块时将图元逐渐渲染成所得的所渲染的像素数据。 
在一个实施例中,数据以基于包的格式在功能模块220—240之间前进。举例来说,图形驱动程序以数据包或像素包的形式将数据传输到GPU,所述数据包或像素包专门经配置以与管线的碎片管道通信路径交互并沿着所述路径传输。像素包通常包含关于像素群组或瓦片(例如,四个像素、八个像素、16个像素等)的信息和用于与所述像素有关的一个或一个以上图元的覆盖信息。像素包也可包含边带信息,所述边带信息使得管线的功能模块能够针对渲染操作自行配置。举例来说,像素包可包含配置位、指令、功能模块地址等,其可由管线的一个或一个以上功能模块用来针对当前的渲染模式等配置自身。除了像素渲染信息和功能模块配置信息之外,像素包还可包含对管线的功能模块进行编程以对像素执行着色器处理的着色器程序指令。举例来说,可沿着图形管线传输包括着色器程序的指令,并由一个或一个以上规定的功能模块来加载所述指令。一旦在渲染操作期间加载了所述指令,功能模块便可对像素数据执行着色器程序,以便实现所要的渲染效果。 
以此方式,图形管线的功能模块所实施的高度优化和高效的碎片管道通信路径不但可用来在功能模块(例如,模块220—240)之间传输像素数据,而且还可用来在功能模块之间传输配置信息和着色器程序指令。 
图3是展示根据本发明一个实施例的图形管线210中的选定级的方框图。图形管线可包含额外级,或者其可布置成与图3的实例不同。换句话说,虽然在图3的管线的背景下论述本发明,但本发明不限于此。 
在图3的实例中,光栅器310使用内插将三角形翻译成像素。在其各种功能中,光栅器接收顶点数据、确定哪些像素对应于哪个三角形,并确定需要对像素执行的着色器处理操作(例如色彩、纹理和雾化操作)以作为渲染的一部分。 
光栅器产生用于待处理的三角形的每一像素的像素包。一般来说,像素包是用来计算图形显示器的帧中的像素的像素值的例子的一组描述。像素包与每一帧中的每一像素 相关联。每一像素与以屏幕坐标表示的特定(x,y)位置相关联。在一个实施例中,图形系统渲染显示器屏幕的两个像素乘两个像素区域,其称为四边形。 
每一像素包包含处理所需的像素属性的有效负载(例如,色彩、纹理、深度、雾化、x和y位置等)和边带信息(数据获取级330提供的像素属性数据)。像素包可含有一行数据,或者其可含有多行数据。行总的来说是管线总线的数据部分的宽度。 
数据获取级获取用于像素包的数据。此数据可包含用于每一像素包的色彩信息、任何深度信息和任何纹理信息。在将像素包继续发送到下一级之前,将所获取的数据放置到一行像素数据中的适当域中,其在本文中可称为寄存器。 
成行的像素数据从数据获取级进入算术逻辑级230。在本实施例中,在每一时钟循环中,一行像素数据进入算术逻辑级。在一个实施例中,算术逻辑级包含四个ALU0、1、2和3(图5),其经配置以执行与三维图形操作有关的着色器程序,例如(但不限于)纹理组合(纹理环境)、模板、雾化、阿尔法混合、阿尔法测试和深度测试。每一ALU每个时钟循环中执行一指令,每一指令用于对对应于像素包的内容的操作数执行算术运算。在一个实施例中,要花费四个时钟循环在ALU中对一行数据进行操作,每一ALU具有四个循环的深度。 
算术逻辑级的输出去往数据写入级。数据写入级将管线结果存储在存储器(例如,图1和图2的图形存储器114或存储器115)中的写入缓冲器或帧缓冲器中。视情况,如果需要对数据进行进一步的处理,则可将像素包/数据从数据写入级重新循环回到算术逻辑级中。 
图4说明根据本发明一实施例用于一像素群组的一连串像素数据——即一系列成行的像素数据。在图4的实例中,所述像素群组包括四个像素的四边形:P0、P1、P2和P3。如上文所提及,可将用于一像素的像素数据被分成数据子组或数据行。在一个实施例中,可能每个像素有多达四行的数据。举例来说,行0包含四个像素数据的域或寄存器P0r0、P0r1、P0r2和P0r3(“r”指示行中的域或寄存器,且“R”指示行)。每一行可代表像素数据的一个或一个以上属性。这些属性包含但不限于z深度值、纹理坐标、细节水平、色彩和阿尔法。寄存器值可在算术逻辑级中的ALU执行的操作中用作操作数。 
边带信息420与每一行像素数据相关联。边带信息尤其包含识别或指向将要由ALU使用指令所识别的像素数据执行的指令的信息。换句话说,与行0相关联的边带信息尤其识别指令IO。指令可指定(例如)将要执行的算术运算的类型和哪些寄存器含有将要用作运算中的操作数的数据。
在一个实施例中,边带信息针对每行像素数据包含条件执行位。条件执行位的值对于每行像素数据可能不同,即使所述行与相同的像素相关联也是如此。可设置与一行像素数据相关联的条件执行位,以防对相关联的像素的操作数执行指令。举例来说,如果将与P0R0相关联的条件执行位设置成不执行,那么对于像素P0将不执行指令I0(但仍可对于群组中的其它像素执行)。下文中将结合图7A进一步描述条件执行位的功能。在一个实施例中,条件执行位在长度上是单个位。 
图5是根据本发明一个实施例的算术逻辑级230的方框图。图5中只展示了特定的元件;算术逻辑级可包含除了图5所展示且在下文中描述的元件之外的元件。 
随着每一新的时钟循环,一行像素数据连续地从数据获取级前进到管线的算术逻辑级。举例来说,行0在第一时钟上沿着管线前进,接着在下一时钟上是行1,依此类推。一旦将与特定像素群组(例如,四边形)相关联的所有行均加载到管线中,便可开始将与下一四边形相关联的行加载到管线中。 
在一个实施例中,将用于一像素群组(例如,四边形)中的每一像素的成行的像素数据与用于群组中的其它像素的成行的像素数据交错。举例来说,对于四个像素的群组、每个像素四行来说,像素数据采用以下次序沿着管线前进:用于第一像素的第一行(P0r0到P0r3)、用于第二像素的第一行(P1r0到P1r3)、用于第三像素的第一行(P2r0到P2r3)、用于第四像素的第一行(P3r0到P3r3)、用于第一像素的第二行(P0r4到P0r7)、用于第二像素的第二行(P1r4到P1r7)、用于第三像素的第二行(P2r4到P2r7)、用于第四像素的第二行(P3r4到P3r7),依次类推直到第十五行,其包含P3r12到P3r15。如上文所提及,可能对于每个像素有不到四个行。通过以此方式交错成行的像素包,可避免管线中发生停滞,且可提高数据处理量。 
因此,在本实施例中,每一时钟循环中将包含边带信息420的一行像素数据(例如,行0)传递到解串行化器510。在图5的实例中,解串行化器对成行的像素数据进行解串行化。如上所述,可将用于一像素群组(例如,四边形)的像素数据逐行地交错。此外,像素数据逐行地到达算术逻辑级。因此,不是逐位地执行本文中所称的解串行化;而是逐行地执行解串行化。如果图形管线有四个寄存器宽,且每个像素有四个行,那么解串行化器将像素数据解串行化成每个像素16个寄存器。 
在图5的实例中,解串行化器将用于一像素群组的像素数据发送到缓冲器0、1或2中的一者。将像素数据发送到缓冲器中的一者,同时由ALU对其它缓冲器中的一者中的像素数据进行操作,同时其余缓冲器中的已由ALU对其操作的像素数据由串行化器550串行化,并逐行地馈送到图形管线的下一级。一旦缓冲器排空,其便准备使用用 于下一像素群组的像素数据来填充(覆写);一旦缓冲器已被加载,则其含有的像素数据便准备被操作;且一旦缓冲器中的像素数据已经被操作,其便准备被排空(覆写)。 
包含用于一像素群组(例如,四边形0)的边带信息的像素数据到达算术逻辑级,接下来是包含用于下一像素群组(例如,四边形1)的边带信息的像素数据,接下来是包含用于下一像素群组(例如,四边形2)的边带信息的像素数据。 
一旦已将与特定像素相关联的所有行像素数据解串行化,便可由ALU对用于所述像素的像素数据进行操作。在一个实施例中,将相同指令应用于群组(例如,四边形)中的所有像素。ALU实际上是以SIMD(相同指令、多个数据)的方式在一像素群组上操作的管线化处理器。 
图6展示在任意选定的时钟循环0—15中退出ALU的像素结果。在时钟循环0—3中,与使用用于像素P0—P3的像素数据执行第一指令I0相关联的像素结果退出ALU。类似地,与使用用于像素P0—P3的像素数据执行第二指令I1相关联的像素结果退出ALU,依此类推。再次参看图4,指令IO与用于像素P0—P3的像素数据的行0像素数据相关联,指令I1与用于像素P0—P3的行1像素数据相关联,依此类推。因为在像素P0—P3上应用相同的指令,所以ALU以SIMD的方式操作。 
图7A展示流经根据本发明一个实施例的ALU的级的像素数据。在本实施例中,要花费四个时钟循环对像素数据的操作数进行操作——更具体来说,执行指令。实质上,每一ALU有四个管道级深。也参看图7B,在第一时钟循环期间,将用于第一像素的像素数据读取到ALU(ALU的级1)中。在第二和第三时钟循环期间,对像素数据执行计算(例如,在第二时钟循环中),可在乘法器中将操作数相乘,且在第三时钟循环中,可在加法器(ALU的级2和3)中将乘法器结果相加。在第四时钟循环(ALU的级4)期间,将像素数据写回到缓冲器或全局寄存器。此外,在第二时钟循环期间,将用于第二像素的像素数据读取到ALU中——所述数据跟在用于第一像素的像素数据行之后穿过ALU的其余级。此外,在第三时钟循环期间,将用于第三像素的像素数据读取到ALU中——所述数据跟在用于第二像素的像素数据之后穿过ALU的其余级。一旦ALU“准备完毕”,便如刚刚所描述的,用于一个像素的像素数据跟在用于另一像素的像素数据之后穿过ALU。 
如上所述,在一个实施例中,将源自每行的边带信息的相同指令应用于一群组(例如,四边形)中的所有像素。举例来说,在给定的时钟循环处,指令将指定从用于像素群组中的第一像素的像素数据中选出的一组操作数。在下一时钟循环中,所述指令将指定从用于群组中的第二像素的像素数据中选出的另一组操作数,依此类推。根据本发明 的实施例,源自每行的边带信息的条件执行位与每组操作数相关联。一般来说,如果将条件执行位设置成不执行,那么ALU不对与所述条件执行位相关联的操作数进行操作。 
图7A展示根据本发明一个实施例的ALU的每一级中的操作数组。举例来说,也参看图7B,在时钟循环N-1处,ALU的级1中的操作数组包含如指令I2所指定的用于像素P1的像素数据(在图中指示为P1.I2);级2正在对却是根据指令I2指定的从用于像素0的像素数据中选出的操作数组(P0.I2)进行操作;依此类推。在下一连续时钟循环N中,每一组操作数移动到下一ALU级;将要加载到ALU中的下一组操作数是P2.I2。 
在图7A的实例中,将与操作数P2.I2相关联的条件执行位设置成“不执行”。可通过着色器程序在图形管线顶部(前端)设置条件执行位。或者,可将条件执行位设置(或重设)成先前执行的指令的结果。 
因此,ALU不对操作数P2.I2进行操作。更具体来说,在一个实施例中,如果将条件执行位设置成不执行,则ALU不锁存操作数P2.I2。因此,已经对这些操作数进行操作的ALU的管道级不改变状态。因此,在时钟循环N处,ALU的级1和级2均含有相同数据(P1.12),因为触发器未被锁存且因此保持处于其在前一时钟循环N-1中所处的状态。因此,ALU的下游管道级中的组合逻辑并不转变,且不会不必要地消耗功率。 
在时钟循环N+1中,不切换ALU的级2中的组合逻辑,因为操作数与前一时钟循环中的相同。类似地,在时钟循环N+2中,不切换ALU的级3中的组合逻辑。在时钟循环N+3中,与级4相关联的触发器不改变状态,因为操作数组与前一时钟循环相同。 
即使条件执行位被设置成不针对操作数P2.I2执行,一组“无用的”操作数也有效地传播穿过其位置中的ALU。以此方式,维持穿过图形管线的数据的次序,且也维持ALU上的时序。 
一般来说,当将条件执行位设置成不执行时,ALU不对与条件执行位相关联的像素数据执行任何工作。实际上,条件执行位充当启用位——如果将所述位设置成不执行,那么数据触发器不被启用且将不俘获新输入的操作数。而是,触发器的输出保持其当前状态(当在前一时钟循环中俘获到数据时引入的状态)。在一个实施例中,这通过选通触发器的时钟来实现。如果将条件执行位设置成不执行,那么不对俘获到输入操作数的触发器进行计时——时钟信号不转变,且因此触发器未俘获到新数据。在一个实施例中,如果将条件执行位设置成不执行,则只有ALU的第一级中的触发器(图7B的锁存器710)不被计时;然而,本发明不限于此。也就是说,可在ALU的一个或一个以上级处 选通时钟。或者,不是选通时钟,而是可在条件执行位的控制下选通对触发器的数据输入。 
通过在不必要时不对ALU中的触发器进行计时来节省功率。也在ALU的组合逻辑中节省了功率,因为在逻辑中未发生任何切换行为,因为操作数在时钟之间是相同的。 
图8是根据本发明一个实施例的用于在图形处理器单元管线中处理像素数据的由计算机实施的方法的实例的流程图800。虽然在流程图中揭示了具体步骤,但这些步骤是示范性的。也就是说,本发明的实施例非常适合于执行流程图中提到的各种其它步骤或步骤的变化形式。可采用与所展示的次序不同的次序来执行流程图中的步骤。 
在方框810中,根据指令来执行算术运算。将相同的指令应用于不同组的像素数据操作数。每一组操作数与一像素群组(例如四边形的)中的相应像素相关联。条件执行位也与每一组操作数相关联。 
在方框820中,与一组操作数相关联的条件执行位的值用来确定是否将要将那些操作数加载到ALU中。更具体来说,如果将条件执行位设置成第一值(例如0或1),则将操作数加载到ALU中并由ALU操作,但如果将条件执行位设置成第二值(例如,分别是1或0),则不将操作数加载到ALU中或由ALU操作。 
总之,在一像素群组上应用指令,但可能没必要对用于群组中的每一像素的像素数据执行指令。为了在管线中维持适当的次序,将指令应用于群组中的每一像素——从用于群组中的每一像素的像素数据中选出一组操作数。然而,如果将与用于像素的一组操作数相关联的条件执行位设置成不执行,那么ALU不对用于所述像素的那些操作数进行操作。因此,不会不必要地对ALU触发器进行计时和切换,因而节省了功率。由此,本发明的实施例非常适合于手持和其它便携、用电池操作的装置以及其它类型的装置中的图形处理。 
已经出于说明和描述的目的而呈现了以上对本发明的具体实施例的描述。其并不期望是详尽的或者将本发明限制于所揭示的精确形式,且鉴于以上教示,许多修改和变化形式都是可能的。举例来说,本发明的实施例可在形式上或功能上不同于图2的GPU110的GPU上实施。之所以选择和描述了所述实施例,是为了最好地解释本发明的原理及其实践应用,因而使得所属领域的技术人员能够以适合于所预期的特定用途的各种修改来最好地利用本发明和各种实施例。希望本发明的范围由所附权利要求书及其等效物来界定。

Claims (5)

1.一种图形处理器单元GPU管线,其包括:
多个算术逻辑单元ALU,其可操作以用于根据指令执行算术运算,其中将所述指令应用于多组包括像素数据的操作数,所述多组操作数中的每一组操作数与多个像素中的相应像素和相应的条件执行位相关联;且其中与所述多组操作数中的第一组操作数相关联的条件执行位的值确定所述ALU如何处理所述第一组操作数中的所述像素数据;其中所述多个像素包括一像素,所述像素包括用于所述像素的多个像素数据子组,其中与用于所述像素的一个像素数据子组相关联的第一条件执行位和与用于所述像素的另一像素数据子组相关联的第二条件执行位具有不同的值;
所述ALU还可操作以用于如果所述第一条件执行位设置成第一值,则对于用于所述像素的所述一个像素数据子组进行操作,以及如果所述第二条件执行位设置成第二值,则对于所述像素的所述另一像素数据子组不进行操作。
2.一种在图形处理器单元中的图形管线,所述管线包括:
数据获取级,用于获取用于像素包的数据,并在将像素包继续发送到下一级之前,将所获取的数据放置到一行像素数据中的适当域中;以及
多个算术逻辑单元ALU,其耦合到所述数据获取级,用于在连续的时钟循环中,执行第一指令识别用于所述ALU的第一操作数和用于所述ALU的第二操作数,其中所述第一操作数与第一像素和第一条件执行位相关联,且所述第二操作数与第二像素和第二条件执行位相关联,其中所述第一条件执行位的值确定所述ALU是否对所述第一操作数进行操作,且其中所述第二条件执行位的值确定所述ALU是否对所述第二操作数进行操作;
其中所述第一像素包括用于所述第一像素的多个像素数据子组,其中与用于所述第一像素的一个像素数据子组相关联的第三条件执行位和与用于所述第一像素的另一像素数据子组相关联的第四条件执行位具有不同的值;
所述ALU还用于如果所述第三条件执行位设置成第一值,则对于用于所述第一像素的所述一个像素数据子组进行操作,以及如果所述第四条件执行位设置成第二值,则对于用于所述像素的所述另一像素数据子组不进行操作。
3.根据权利要求2所述的图形管线,其中所述ALU包括多个触发器,其中所述第一条件执行位的所述值确定所述第一操作数是否由所述ALU锁存,且其中所述第二条件执行位的所述值确定所述第二操作数是否由所述ALU锁存。
4.根据权利要求3所述的图形管线,其中所述触发器包括选通的时钟,且所述第一和第二条件执行位控制所述选通的时钟。
5.根据权利要求2所述的图形管线,其中所述第一条件执行位的所述值是根据按照在时间上在所述第一指令之前的第二指令所执行的操作的结果而设置的。
CN2008101351974A 2007-08-15 2008-08-15 图形处理器单元管线中的条件执行位 Active CN101441761B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/893,620 2007-08-15
US11/893,620 US20090046105A1 (en) 2007-08-15 2007-08-15 Conditional execute bit in a graphics processor unit pipeline

Publications (2)

Publication Number Publication Date
CN101441761A CN101441761A (zh) 2009-05-27
CN101441761B true CN101441761B (zh) 2012-09-19

Family

ID=40362623

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101351974A Active CN101441761B (zh) 2007-08-15 2008-08-15 图形处理器单元管线中的条件执行位

Country Status (5)

Country Link
US (1) US20090046105A1 (zh)
JP (1) JP5435253B2 (zh)
KR (1) KR100980148B1 (zh)
CN (1) CN101441761B (zh)
TW (1) TWI484441B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US11145107B2 (en) 2019-11-04 2021-10-12 Facebook Technologies, Llc Artificial reality system using superframes to communicate surface data
US11430141B2 (en) * 2019-11-04 2022-08-30 Facebook Technologies, Llc Artificial reality system using a multisurface display protocol to communicate surface data
IT202100026552A1 (it) * 2021-10-18 2023-04-18 Durst Group Ag "Metodo e prodotto per la sintesi di dati di stampa e per la fornitura degli stessi ad una stampante"

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006196004A (ja) * 2005-01-13 2006-07-27 Sony Computer Entertainment Inc Simdプロセッサスライスの有効/無効の制御のための方法ならびに装置
CN1947156A (zh) * 2003-11-20 2007-04-11 Ati技术公司 使用统一着色器的图形处理结构

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620217A (en) * 1983-09-22 1986-10-28 High Resolution Television, Inc. Standard transmission and recording of high resolution television
US4648045A (en) * 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
US4901224A (en) * 1985-02-25 1990-02-13 Ewert Alfred P Parallel digital processor
US4700319A (en) * 1985-06-06 1987-10-13 The United States Of America As Represented By The Secretary Of The Air Force Arithmetic pipeline for image processing
JPS6280785A (ja) * 1985-10-04 1987-04-14 Toshiba Corp 画像記憶装置
US4862392A (en) * 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
JPH0823883B2 (ja) * 1987-07-02 1996-03-06 富士通株式会社 ビデオレート画像プロセッサ
US5185856A (en) * 1990-03-16 1993-02-09 Hewlett-Packard Company Arithmetic and logic processing unit for computer graphics system
JPH06318060A (ja) * 1991-07-31 1994-11-15 Toshiba Corp 表示制御装置
US5357604A (en) * 1992-01-30 1994-10-18 A/N, Inc. Graphics processor with enhanced memory control circuitry for use in a video game system or the like
US5600584A (en) * 1992-09-15 1997-02-04 Schlafly; Roger Interactive formula compiler and range estimator
JP2725546B2 (ja) * 1992-12-07 1998-03-11 株式会社日立製作所 デ−タ処理装置
US5392393A (en) * 1993-06-04 1995-02-21 Sun Microsystems, Inc. Architecture for a high performance three dimensional graphics accelerator
US5577213A (en) * 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
US5655132A (en) * 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5850572A (en) * 1996-03-08 1998-12-15 Lsi Logic Corporation Error-tolerant video display subsystem
US6173366B1 (en) * 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US6496537B1 (en) * 1996-12-18 2002-12-17 Thomson Licensing S.A. Video decoder with interleaved data processing
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5941940A (en) * 1997-06-30 1999-08-24 Lucent Technologies Inc. Digital signal processor architecture optimized for performing fast Fourier Transforms
US6118452A (en) * 1997-08-05 2000-09-12 Hewlett-Packard Company Fragment visibility pretest system and methodology for improved performance of a graphics system
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
US6862278B1 (en) * 1998-06-18 2005-03-01 Microsoft Corporation System and method using a packetized encoded bitstream for parallel compression and decompression
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6333744B1 (en) * 1999-03-22 2001-12-25 Nvidia Corporation Graphics pipeline including combiner stages
US6526430B1 (en) * 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US6351806B1 (en) * 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
US6466222B1 (en) * 1999-10-08 2002-10-15 Silicon Integrated Systems Corp. Apparatus and method for computing graphics attributes in a graphics display system
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US6557022B1 (en) * 2000-02-26 2003-04-29 Qualcomm, Incorporated Digital signal processor with coupled multiply-accumulate units
US6624818B1 (en) * 2000-04-21 2003-09-23 Ati International, Srl Method and apparatus for shared microcode in a multi-thread computation engine
JP2001338287A (ja) * 2000-05-25 2001-12-07 Nec Microsystems Ltd バッファ制御回路
US6806886B1 (en) * 2000-05-31 2004-10-19 Nvidia Corporation System, method and article of manufacture for converting color data into floating point numbers in a computer graphics pipeline
US6636223B1 (en) * 2000-08-02 2003-10-21 Ati International. Srl Graphics processing system with logic enhanced memory and method therefore
US6636221B1 (en) * 2000-08-02 2003-10-21 Ati International, Srl Graphics processing system with enhanced bus bandwidth utilization and method therefore
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
JP2002171401A (ja) * 2000-11-29 2002-06-14 Canon Inc 間引き演算命令を備えたsimd型演算装置
US6778181B1 (en) * 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US6947053B2 (en) * 2001-09-27 2005-09-20 Intel Corporation Texture engine state variable synchronizer
US7127482B2 (en) * 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations
US6924808B2 (en) * 2002-03-12 2005-08-02 Sun Microsystems, Inc. Area pattern processing of pixels
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US8036475B2 (en) * 2002-12-13 2011-10-11 Ricoh Co., Ltd. Compression for segmented images and other types of sideband information
JP4288461B2 (ja) * 2002-12-17 2009-07-01 日本電気株式会社 対称型画像フィルタ処理装置、プログラム、及びその方法
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US7030878B2 (en) * 2004-03-19 2006-04-18 Via Technologies, Inc. Method and apparatus for generating a shadow effect using shadow volumes
EP1759380B1 (en) * 2004-05-14 2011-11-16 NVIDIA Corporation Low power programmable processor
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7298375B1 (en) * 2004-05-14 2007-11-20 Nvidia Corporation Arithmetic logic units in series in a graphics pipeline
US7710427B1 (en) * 2004-05-14 2010-05-04 Nvidia Corporation Arithmetic logic unit and method for processing data in a graphics pipeline
US7280112B1 (en) * 2004-05-14 2007-10-09 Nvidia Corporation Arithmetic logic unit temporary registers
US7941645B1 (en) * 2004-07-28 2011-05-10 Nvidia Corporation Isochronous pipelined processor with deterministic control
US7525543B2 (en) * 2004-08-09 2009-04-28 Siemens Medical Solutions Usa, Inc. High performance shading of large volumetric data using screen-space partial derivatives
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US7412591B2 (en) * 2005-06-18 2008-08-12 Industrial Technology Research Institute Apparatus and method for switchable conditional execution in a VLIW processor
TWI289808B (en) * 2005-11-11 2007-11-11 Silicon Integrated Sys Corp Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US7477260B1 (en) * 2006-02-01 2009-01-13 Nvidia Corporation On-the-fly reordering of multi-cycle data transfers
US20070279408A1 (en) * 2006-06-01 2007-12-06 Intersil Corporation Method and system for data transmission and recovery
US7928990B2 (en) * 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1947156A (zh) * 2003-11-20 2007-04-11 Ati技术公司 使用统一着色器的图形处理结构
JP2006196004A (ja) * 2005-01-13 2006-07-27 Sony Computer Entertainment Inc Simdプロセッサスライスの有効/無効の制御のための方法ならびに装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2006196004A 2006.07.27

Also Published As

Publication number Publication date
TWI484441B (zh) 2015-05-11
KR20090017980A (ko) 2009-02-19
KR100980148B1 (ko) 2010-09-03
TW200917157A (en) 2009-04-16
JP5435253B2 (ja) 2014-03-05
JP2009080797A (ja) 2009-04-16
US20090046105A1 (en) 2009-02-19
CN101441761A (zh) 2009-05-27

Similar Documents

Publication Publication Date Title
CN101091203B (zh) 图形处理系统和方法
CN1954338B (zh) 取消位图形处理系统和方法
EP1759380B1 (en) Low power programmable processor
US7969446B2 (en) Method for operating low power programmable processor
US8775777B2 (en) Techniques for sourcing immediate values from a VLIW
WO2015043527A1 (zh) 电子设备性能的测试方法及装置
US10255075B2 (en) System, method, and computer program product for managing out-of-order execution of program instructions
US20080204461A1 (en) Auto Software Configurable Register Address Space For Low Power Programmable Processor
CN101441761B (zh) 图形处理器单元管线中的条件执行位
US8681173B2 (en) Device, system, and method for improving processing efficiency by collectively applying operations
Kim et al. Homogeneous stream processors with embedded special function units for high-utilization programmable shaders
US7199799B2 (en) Interleaving of pixels for low power programmable processor
US8314803B2 (en) Buffering deserialized pixel data in a graphics processor unit pipeline
Yan et al. Optimizing power consumption of mobile games
TWI427552B (zh) 圖形處理器管線內之共享可讀取與可寫入全域值
US20050253855A1 (en) Statistics instrumentation for low power programmable processor
US20050253862A1 (en) Data format for low power programmable processor
Ghoshal Computer Architecture and Organization: From 8085 to Core2Duo & Beyond
Soyata Understanding GPU Hardware Architecture
JP2019030744A5 (zh)
US8856499B1 (en) Reducing instruction execution passes of data groups through a data operation unit
AbuJokha CPU SIMULATOR
Dale et al. Small-scale reconfigurability for improved performance and double-precision in graphics hardware
Mrochuk Low power real time 3D rendering on an embedded SIMD processor
Lau et al. 18-545: OpenGL Graphics Acelerator

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