CN101053013B - 低功率可编程处理器 - Google Patents

低功率可编程处理器 Download PDF

Info

Publication number
CN101053013B
CN101053013B CN2005800147876A CN200580014787A CN101053013B CN 101053013 B CN101053013 B CN 101053013B CN 2005800147876 A CN2005800147876 A CN 2005800147876A CN 200580014787 A CN200580014787 A CN 200580014787A CN 101053013 B CN101053013 B CN 101053013B
Authority
CN
China
Prior art keywords
pixel
pixel packets
alu
packets
level
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
CN2005800147876A
Other languages
English (en)
Other versions
CN101053013A (zh
Inventor
爱德华·A·哈钦斯
布赖恩·K·安杰尔
保罗·金
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
Priority claimed from US10/845,714 external-priority patent/US7250953B2/en
Priority claimed from US10/846,106 external-priority patent/US7389006B2/en
Priority claimed from US10/846,110 external-priority patent/US7142214B2/en
Priority claimed from US10/846,334 external-priority patent/US7199799B2/en
Priority claimed from US10/846,226 external-priority patent/US7268786B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority claimed from PCT/US2005/016967 external-priority patent/WO2005114646A2/en
Publication of CN101053013A publication Critical patent/CN101053013A/zh
Application granted granted Critical
Publication of CN101053013B publication Critical patent/CN101053013B/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
    • 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
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

一种图形处理器具有一可编程算术逻辑单元(ALU)级,所述可编程算术逻辑单元(ALU)级能够对处理像素包进行标量算术操作。可采用改进动态范围的S1.8格式或一不同的数据格式格式化像素包中的操作数。可将所述图形处理器建构为可配置图形管线。在一种建构方案中,分配器耦合一图形管线的元件以允许响应于来自主机的命令而重新配置通过所述管线的像素包的处理流。可配置测试点选择器可用于监视所述图形管线的分接点的一选定子集,并对与分接点的所述子集的每一分接点相关联的至少一个状态的统计数字进行计数。可将像素分配为偶数像素或奇数像素,且接着使奇数和偶数像素的像素包交错以考虑ALU等待时间。在一种建构方案中,数据包触发所述图形管线的一元件以发现一识别符。

Description

低功率可编程处理器
技术领域
本发明一般来说涉及可编程处理器。更特定来说,本发明是针对用于图形应用的低功率可编程处理器。
背景技术
在多种电子游戏和其他应用中所关注的是三维图形图像的生成。常规上,用于产生场景的三维图象的步骤中的某些步骤包括产生将要显示的物体的三维模型。形成几何图元(例如三角形),所述几何图元和深度信息一起被映射到二维投影。呈现(绘图)图元包括对一图元的每个二维投影的插值参数,例如深度和色彩。
图形处理单元(GPU)在图形系统中常用于响应来自中央处理器的指令而产生三维图形。现代GPU通常利用图形管线来处理数据。图1是传统管线结构的现有技术图,所述管线结构是具有专用于执行特定功能的级的“深”管线。变换级105执行图元的几何计算,且还可执行剪辑操作。设置/光栅级110对图元光栅化。纹理寻址级115和纹理获取120级用于纹理映射。雾化级130建构一雾化算法(fog algorithm)。α测试级135执行α测试。深度测试级140执行深度测试以挑选遮挡像素。α混合级145执行α混色组合算法。存储器写入级150写入管线的输出。
图1所示的传统GPU管线结构通常经最优化以用于使用
Figure G2005800147876D00011
图形语言进行快速纹理化。深管线结构的好处在于其允许非常复杂的场景的快速高质量呈现。
人们越来越有兴趣在无线电话、个人数字助理(PDA)和其他设备中利用三维图形,这些设备中成本和功耗是重要的设计要求。然而,传统的深管线结构要求很大的芯片面积,从而导致超过预期的较多成本。另外,即使各个级执行相对很少的处理,深管线仍消耗很多功率。这是因为各级中的许多级无论其是否处理像素,都会消耗大约相同量的功率。
出于成本和功率考虑,图1所示的常规深管线结构不适合许多图形应用,例如在无线电话和PDA上建构三维游戏。
因此,需要的是一种适于图形处理应用而且具有降低的功率和尺寸要求的处理器结构。
发明内容
一种图形处理器包括一用于处理像素包的可编程算术逻辑单元(ALU)级。在ALU级中对像素包执行标量算术操作以建构图形功能。
一种对一像素执行一图形处理操作的方法的一个实施例包括:识别将要对像素包执行以建构图形功能的标量算术操作的一序列;针对所述像素产生复数个像素包,每一像素包包括将要作为标量算术操作序列中的操作数进行处理的像素属性的一子集;在至少一个ALU中,从所述像素包读取操作数;和根据用于执行标量算术操作序列的指令序列来执行标量算术操作。
一种图形处理器的一个实施例包括:一可编程ALU级,其具有用于处理像素包的至少一个ALU,每一ALU经编程以具有至少一个可能的标量算术操作的一集合,对一具有一相应当前指令的引入像素包执行所述标量算术操作的集合,其中对像素包执行一序列的算术操作以执行一图形处理功能。
附图说明
联系下文结合附图进行的详细描述可更完全地了解本发明,其中:
图1是三维图形的现有技术管线的图;
图2是根据本发明一个实施例的包括可编程图形处理器的集成电路的方框图;
图3是根据本发明一个实施例的可编程图形处理器的方框图;
图4说明根据本发明一个实施例的示范性像素包;
图5说明根据本发明一个实施例的像素包群组的成行像素包的示范性排列;
图6是根据本发明一个实施例的单个算术逻辑单元的方框图;
图7是根据本发明一个实施例的两个算术逻辑单元的序列的方框图;
图8是根据本发明一个实施例的可配置可编程图形处理器的方框图;
图9说明根据本发明一个实施例的像素包的行的交错;
图10是说明根据本发明一个实施例的具有配置寄存器的算术逻辑单元的方框图;和
图11是说明根据本发明一个实施例的可配置测试点选择器的方框图。
在附图的所有几张图中,类似参考数字表示对应的部件。
具体实施方式
图2是本发明一个实施例的方框图。可编程图形处理器205耦合到寄存器接口210、主机接口220和存储器接口,例如具有一图形存储器(未图示)(例如帧缓冲器)的用于存储器读/写操作的直接存储器存取(DMA)引擎230。主机接口220允许可编程图形处理器205从一主机接收用于产生图形图像的命令。举例来说,主机可将顶点数据、命令和程序指令发送到可编程图形处理器205。存储器接口(例如DMA引擎230)允许用图形存储器(未图示)执行读/写操作。寄存器接口210提供一接口用来与可编程图形处理器205的寄存器建立连接。
可编程图形处理器205可建构为系统290的一部分,系统290包括执行软件应用程序270的至少一个其他的中央处理单元260,其用作可编程图形处理器205的主机。示范性系统290(例如)可包含一手持单元,例如手机或个人数字助理(PDA)。举例来说,软件应用程序270可包括一用于在显示器295上产生图形图像的图形应用程序275。另外,如下文更详细描述,在某些实施例中软件应用程序270可包括图形处理器管理软件应用程序280,其用于执行与可编程图形处理器205相关联的管理功能,例如管线重新配置、寄存器配置以及测试。
在一个实施例中,可编程图形处理器205、寄存器接口210、主机接口220和DMA引擎230是形成于包括一主机的单个集成电路200上的嵌入式图形处理核心250的部分,所述单个集成电路200例如为形成于一包括使软件270驻存在存储器中的中央处理单元260的芯片上的集成电路200。或者,图形处理核心250可安置在第一集成电路上且CPU260安置在第二集成电路上。
图3是更详细说明根据本发明一个实施例的可编程图形处理器205的方框图。其包括设置级305、光栅级310、门监320、数据获取级330、算术逻辑单元(ALU)级340、数据写入级355和再循环路径360。在一个实施例中,可编程图形处理器205包括ALU350,ALU 350经配置以执行着色器程序来建构三维图形操作,例如纹理组合、雾化、α混合(例如色彩混合)、α测试(例如色彩测试)、Z深度测试,或其他着色算法。然而,在以下整个讨论中将了解,可编程图形处理器205也可经配置以执行其他类型的处理操作。
设置级305从一主机接收指令,例如运行于集成电路200上的软件应用程序。在一个实施例中,设置级305执行坐标(X形式)几何变换、剪辑和设置的功能。设置单元获取顶点信息(例如x、y、z、色彩和/或纹理属性)并应用用户定义的视图变换来计算每一几何图元(下文中描述为三角形,因为图元通常建构为三角形)的屏幕空间坐标,接着将所述坐标发送到光栅级310以描绘给定三角形。可包括顶点缓冲器308以提供由设置级305使用的顶点数据的缓冲。在一个实施例中,设置级305设置重心系数。在一个建构方案中,设置级305是支持32位IEEE浮点、SI5.16定点和封装的.8格式的浮点超大指令字(VLIW)机。
光栅级310从设置级205接收关于将要呈现(例如转换为像素)的三角形。在某些实施例中,指令RAM(未图示)可(例如)包括在光栅级310中以用于编程用于光栅级310的指令。光栅级310处理给定三角形的每一像素并确定作为呈现的部分的需要为像素计算的参数,例如计算色彩、纹理、α测试、α混合、z深度测试和雾化参数。在一个实施例中,光栅级310计算像素包的重心系数。在重心坐标系中,三角形中的距离是相对于其顶点来测量的。重心系数的使用减小了所需的动态范围,其允许使用比浮点计算需要更少功率的定点计算。
光栅级310针对将要处理的三角形的每一像素产生至少一个像素包。每一像素包包括处理所需的像素属性(例如色彩、纹理、深度、雾化、(x,y)位置)的有效负载的字段。另外,每一像素包具有相关的包括将对像素包执行的操作的指令序列的边频带信息。光栅级210中的指令区域(未图示)将指令分配到像素包。
图4说明一个像素的示范性像素包430和460。在一个实施例中,光栅级210将像素属性分割为两个或两个以上不同类型的像素包430和460,其中每一类型的像素包需要仅一特定类型指令起作用的像素属性数据的字段。如果(例如)对于特定处理操作仅需要对一像素的属性的子集进行操作,那么将像素数据分割为较小的工作单元减少了带宽要求,且还减少了处理要求。
每一像素包具有相关的边频带信息410和有效负载信息420。示范性边频带信息包括有效字段412、取消字段414、标记字段,和包括当前指令的指令字段416。示范性像素包430包括第一组(s,t)纹理坐标422和424字段以及雾化字段426。示范性像素包460包括色彩字段462,和第二组纹理坐标(s,t)464和466。在一个实施例中,每一像素包以定点表示法表示有效负载信息420。一具有用于像素属性的20位像素包尺寸的像素包中可包括的像素属性的实例包括:一个Z.I6十六位Z深度值;一个16位S/T纹理坐标和4位细节等级;一对色彩值,每一个色彩值具有8位精度;或具有五位的封装的5555 ARGB色彩,其中每一ARGB变量中各有一位。
像素包的边频带信息可包括像素的(x,y)位置。然而,在一个实施例中,光栅级310在其开始沿着扫描线走过一三角形的(x,y)原点产生一起始取值范围命令。起始取值范围命令的使用允许从像素包中省略(x,y)位置。起始取值范围命令将扫描线开始处的初始(x,y)位置通知其他实体(例如数据写入级355和数据获取级330)。可通过给定像素远离原点的像素数目来推断沿着扫描线的其他像素的(x,y)位置。在一个实施例中,数据写入级355和数据获取级330包括适于增加局部计数器的局部高速缓冲存储器,并基于其在取值范围起始命令之后对遇到的像素数目的计算来更新(x,y)位置。
参看图5,在一个实施例中,对于将要处理的每一像素,光栅级310产生像素包的至少一行510。在某些实施例中,每一行510具有界定所述行510的指令序列的共同边频带信息410。如果像素需要多于一行510,就将若干行510组织成随每一新的时钟周期连续处理的行的群组520。在一个实施例中,将80位像素数据分割为四个20位像素属性寄存器值,其中所述四个像素寄存器值针对像素界定像素包的一“行”510(R0、R1、R2和R3)。
光栅级310的迭代程序寄存器集区(未图示)具有对应的寄存器以支持像素包的行510。在一种建构方案中,光栅级310包括一支持多达4行像素包的寄存器集区。某些类型的像素包属性(例如纹理)可能需要高精度。相反,某些类型的像素包属性可能需要较低精度,例如色彩。寄存器集区可经配置以支持行510中每一像素包的高精度和低精度值。在一个实施例中,寄存器集区包括每行4个高精度和4个低精度透视校正迭代值,加上Z深度值。这允许(例如)软件指定迭代程序的精度以用于处理特定像素包属性。在一个实施例中,光栅级310包括一适于追踪纹理的整数部分的寄存器集区,从而作为数据包发送允许纹理的分数位。
光栅级310可(例如)从主机接收需要将对像素执行的操作的指令。作为响应,光栅级310产生具有相关指令序列的像素包的一个或一个以上行510,其中所述像素包行和指令经配置以执行所需的处理操作。如下文更详细地描述,在一个实施例中,ALU级340允许执行标量算术操作,其中操作数包括:像素包的行510中像素属性的预先选择的子集、常数值,和对像素包的先前计算临时存储的结果。
可将多种图形操作公式化为一个或一个以上标量算术操作。另外,可将多种向量图形操作公式化为复数个标量算术操作。因此将了解,本发明的可编程图形处理器205可经编程以对像素执行可表示为标量算术操作的序列的任何图形操作,例如雾化操作、色彩(α)混合、纹理组合、α测试或深度测试,例如
Figure G2005800147876D00051
Graphics System:A Specification (Version 1.2)中描述的操作,其内容以引用的方式并入本文。举例来说,响应于光栅级310检测将对像素执行的所需的图形处理功能(例如雾化操作),光栅级310可使用可编程映射表或映射算法来确定像素包和相关指令的分配以用于执行对像素建构图形功能所需的标量算术操作。例如可由图形处理器管理应用程序280编程所述映射。
再次返回到图3,在光栅级310穿过三角形的每一像素时,光栅级310产生用于进一步处理的像素包,所述像素包由门监320接收。门监320执行数据流控制功能。在一个实施例中,门监320具有相关的记分板325,其用于像素包的调度、负载平衡、资源分配和危险避免。记分板325追踪像素的进入和退出。进入门监320的像素包设置记分板,且在处理完成之后,在像素包排出可编程处理器205时记分板复位。作为说明性实例,如果紧凑显示器295具有128乘32像素的区域,那么记分板325可维持针对显示器的每一像素的表,以监视像素。
记分板325提供若干好处。举例来说,记分板325防止了三角形中的一个像素位于正在处理且在行进路线中的另一像素上方的危险。在一个实施例中,记分板325监视空闲状态并使用记分板信息来时钟关闭空闲单元。举例来说,如果没有有效像素,记分板325可关闭ALU以节省功率。如下文更详细描述,记分板325追踪能够由ALU 350处理的像素包以及具有取消位设置的像素包,使得像素包在没有有效处理的情况下流过ALU350。在一个实施例中,如果像素包再循环,那么记分板325就在到达用于所述像素包的下一指令的随后一轮中增加像素包的指令序列,例如,如果指令是用于第1轮上的雾化操作,就将指令迭代到第2轮上的α混合操作。
数据获取级330获取由门监320传递的像素包的数据。这可包括(例如)通过对像素包的每一行执行适当的色彩、深度或纹理数据读取来获取色彩、深度和纹理数据。数据获取级330可(例如)通过请求从存储器接口的读取(例如使用DMA引擎230读取帧缓冲器(未图示))来获取像素或纹元(texel)数据。在一个实施例中,数据获取级330还可管理一局部高速缓冲存储器,例如纹理/雾化高速缓冲存储器332、色彩/深度高速缓冲存储器334,和用于深度数据的Z高速缓冲存储器(未图示)。在将像素包发送到下一级之前,将获取的数据置于对应的像素包字段上。在一个实施例中,数据获取级330包括指令随机存取存储器(RAM),其具有用于存取像素包属性字段所需数据的指令。在某些实施例中,数据获取级330还执行Z深度测试。在此实施例中,数据获取级330使用一个或一个以上深度比较测试来比较像素包的Z深度值与存储的Z值。如果像素的Z深度值指示所述像素为遮挡的,就设置取消位。
像素包的行进入算术逻辑单元(ALU)级340用于处理。ALU级340具有包括至少一个ALU 350的一组ALU 350,例如ALU 350-0、350-1、350-2和350-3。虽然说明四个ALU 350,但视应用在ALU级340中可使用更多或更少的ALU 350。个别ALU 350读取用于像素包的至少一行510的当前指令,并建构任一指令来执行经编程以进行支持的标量算术操作。指令包括在每一ALU 350中,且可(例如)存储在局部指令RAM(图3中未图示)上。
每一ALU 350包括用于对第一操作数乘积(a*b)和第二操作数乘积(b*c)执行至少一个算术操作的指令,其中a、b、c和d为操作数且*为乘法运算。所述操作数中的某些或全部可对应于(例如)像素包的行510中的寄存器值属性。ALU 350还可具有作为常数或可软件载入的一个或一个以上操作数值。在某些实施例中,ALU可支持使用由对像素包的先前操作临时存储的结果。
在一个实施例中,每一ALU 350是可编程的。交叉开关(crossbar)(未图示)或其他可编程选择器可包括在ALU 350中以允许响应于来自软件(例如软件应用程序270)的指令来选择操作数和结果的目的地。举例来说,在一个实施例中,操作命令码可用于从像素包的行510中的任一寄存器值、临时值和常数值的属性中选择每一操作数(a、b、c、d)的来源。在此实施例中,操作命令还指示ALU 350将算术操作的结果发送到何处,例如用结果更新像素包,将结果保存为临时值,或用结果更新像素包并将结果保存为临时值。因此,举例来说,ALU可经编程以读取像素包中的特定属性作为操作数,并应用当前指令所指示的标量算术操作。操作命令码还可包括对操作数求补(例如计算1-x,其中x为读取值)、对操作数求反(例如计算-x,其中x为读取值)或对操作数或结果进行箝位的命令。操作命令码的其他实例可包括(例如)用于选择数据格式的命令。
由ALU 350执行的算术操作的实例是对像素包中的至少一个变量的(a*b)+(c*d)形式的标量算术操作,其中a、b、c和d是操作数且*操作为乘法运算。每一ALU 350优选还可经编程以执行其他数学操作,例如对操作数求补和对操作数求反。另外,在某些实施例中,每一ALU 350可计算(a*b,c*d)的最小和最大值,并执行逻辑比较(例如a*b等于、不等于、小于、或小于等于c*d时的逻辑结果)。
在某些实施例中,每一ALU 350还可包括基于测试(例如a*b与c*d的比较)来确定是否在取消字段414中产生一取消位的指令(例如,在a*b不等于c*d时取消,在a*b等于c*d时取消,在a*b小于c*d时取消,或在a*b大于等于c*d时取消)。可产生取消位的ALU操作的实例包括α测试,其中将一色彩值与一测试色彩值进行比较,例如表示式IF(alpha>alpha reference),then kill the pixel,其中alpha为色彩值,且alpha reference为参考色彩值。可产生取消位的ALU操作的另一实例为Z深度测试,其中将像素的Z值与具有同一位置的先前像素的至少一个Z值进行比较,如果深度测试指示所述像素是遮挡的,就取消所述像素。
在一个实施例中,如果像素包中设置了取消位,那么关于处理所述像素包,个别ALU350是被停用的。在一个实施例中,时钟选通机制用于在边频带信息中检测到取消位时停用ALU 350。因此,当针对像素包产生取消位时,在像素包传播通过ALU级340时,ALU 350不会在所述像素包上浪费功率。然而请注意,具有取消位设置的像素包仍向前传播,从而允许其被数据写入级355和记分板325考虑。这允许所有的像素包被记分板325考虑,即使是由取消位标记为不需要进一步ALU处理的那些像素包。在一个实施例中,如果像素的任一行510由取消位标记,同一像素的其他行510也被取消。这可(例如)通过在各级之间转发取消信息或通过一个或一个以上级追踪其中行510由取消位标记的像素来完成。在某些实施例中,一旦设置了取消位,那么仅像素包的行510的边频带信息410(包括所述取消位)传播到下一级。
ALU级340的输出到达数据写入级355。数据写入级355将经处理的像素包转换为像素数据,并将结果写到存储器接口(例如,经由DMA引擎230)。在一个实施例中,像素的写入值积累在写入缓冲器352中,且像素的积累的写入是成批写到存储器的。数据写入级355可执行的功能的实例包括色彩和深度回写(writeback)和格式转换。在某些实施例中,数据写入级355还可识别将取消的像素并设置取消位。
包括再循环路径360以将像素包再循环回到门监320。再循环路径360允许(例如)需要使用通过ALU级340一遍或一遍以上来执行的算术操作的序列的处理。数据写入级355指示对门监320退出的写入以用于记分板记分。
图6是示范性个别ALU 350的方框图。ALU 350具有输入总线605,其具有用于将像素包的行510接收到对应寄存器R0、R1、R2和R3中的数据总线。在方框620中说明一组示范性指令。在一个实施例中,ALU 350可经编程以从行510中读取四个20位寄存器值中的任一个,并从行510中选择一组操作数。另外,ALU 350可经编程以从寄存器(T)630中选择临时值作为操作数,例如每个ALU 350两个20位临时值,所述临时值是由先前结果保存的,如路径640所指示。ALU 350还可选择常数值(未图示)作为操作数,其也可由软件编程。在一个实施例中,多工器(MUX)645的第一级从像素包的行、任何临时值630和任何常数值(未图示)中选择操作数。可包括格式转换模块650以将操作数转换为适于算术计算单元670中ALU 350计算精度的所需数据格式。ALU 350包括用于允许在MUX 660的第二级中选择每一操作数或其补数的元件。将所得的四个操作数输入到标量算术计算单元670,其可执行两个乘法运算和一个加法运算。可使用箝位器680视需要将所得值箝位在所需范围(例如0到1.0)。像素包的行510通过总线690退出。
在一个实施例中,选定的像素包属性可为一个记号1.8(S1.8)格式。S1.8格式是具有8位分数的以2为基的数,其处于[-2到+2)的范围中。S1.8格式允许计算的较高的动态范围。举例来说,在处理照明的计算中,S1.8格式允许增加的动态范围,从而导致改进的实现。如果S1.8中执行的标量算术操作的结果必须在[0,1]的范围中,那么可对所述结果进行箝位以迫使所述结果处于范围[0,1]中。作为说明性实例,可以S1.8格式执行色彩数据的着色计算,并接着对结果进行箝位。请注意,在本发明的实施例中,不同类型的像素包可具有以不同格式表示的数据属性。举例来说,色彩数据可在第一类型的像素包中以S1.8格式表示,而(s,t)纹理数据可在第二类型的像素包中以高精度16位格式表示。在某些实施例中,由最高精度像素属性的位尺寸要求来设置像素包位尺寸。举例来说,因为纹理属性通常比色彩需要更高的精度,所以可设置像素包尺寸以表示具有高等级精度的纹理数据,例如16位纹理数据。S1.8格式的改进动态范围允许(例如)将一个以上色彩成分的数据有效封装为经选择以用于较高精度数据纹理数据的20位像素包尺寸,其需要(例如)16位用于纹理数据和4位细节等级(LOD)。举例来说,因为每一S1.8色彩成分需要10位,所以可将两个色彩成分封装为20位像素包。
图7说明示范性ALU级340,其包括配置为管线的一个以上ALU 350,其中两个或两个以上ALU 350链接在一起。如先前描述,个别ALU 350可经编程以从像素包中读取一个或一个以上操作数,从而产生算术操作的结果,并用所述结果更新像素包或临时寄存器。每一ALU可经分配以在将像素包的一行传递到下一ALU之前读取操作数,产生算术结果,并更新一个或一个以上像素包或临时值。
依照执行的处理操作、ALU等待时间和效率考虑,可以多种方式配置ALU级340中ALU 350之间的数据流。如先前描述,本发明允许每一ALU经编程以读取像素包的行中的选定操作数,并用结果更新选定的像素包寄存器。在一个实施例中,对于每一色彩通道(例如红、绿、蓝和α),ALU级340包括至少一个ALU 350。这允许(例如)负载平衡,其中ALU经配置以对像素包的行510并行操作(尽管由于管线操作而在不同的时间点操作)以执行类似或不同的处理任务。作为可如何编程ALU 350的一个实例,第一ALU 350-0可经编程以执行针对第一色彩成分的计算,第二ALU 350-1可经编程以执行针对第二色彩成分的操作,第三ALU 350-2可经编程以执行针对第三色彩成分的操作,且第四ALU 350-3可经编程以执行雾化操作。因此,在某些实施例中,对于像素包的行510,可对每一ALU 350分配不同的处理任务。另外,如下文更详细的描述,在某些实施例中,软件可配置ALU 350以选择ALU级340中ALU 350的数据流,包括ALU 350的执行次序。然而,因为数据流可配置,所以将了解,在某些实施例中,沿着ALU的链的数据流可经配置以使得一个ALU 350-0的结果更新一个或一个以上像素包寄存器,所述结果由随后的ALU 350-1读取作为操作数。
图8是具有可重新配置管线的可编程图形处理器205的一部分的实施例的方框图,其中通过各级的像素包的处理流可响应于软件命令来配置,例如来自图形处理器管理应用程序280的软件命令。耦合到各级的元件的个别输入和输出的分配器890和895允许重新配置像素包的处理流。所述级可包括(例如)数据拾取级830、数据写入级855和个别ALU 850,尽管将了解其他类型也可使用分配器890和895来重新配置。在某些实施例中,软件可动态重新配置通过所述级的像素包的处理流。因此优选利用同步技术来协调在从一个配置转换为另一配置期间处在行进路线中的像素包的数据流,即,执行一同步以使得在第一配置中希望处理的在行进路线中的像素包在配置改变为第二配置之前完成其处理。
在一个实施例中,数据获取级830、数据写入级855和个别ALU 850具有每一者连接到第一分配器890的个别输入,和每一者连接到第二分配器895的个别输出。每一分配器890和895可(例如)包含开关、交叉开关、路由器或MUX电路以选择到达数据获取级830、ALU 850和数据写入级855的引入像素包的分配流。分配器890和895确定通过数据获取级830、数据写入级855和个别ALU 850的引入像素包810的数据路径。信号输入892和894允许分配器890和895接收软件命令(例如来自运行于一CPU上的软件应用程序),以重新配置数据获取级830、数据写入级855和ALU 850之间的像素包的分配。重新配置的一个实例是分配ALU 850的执行次序。重新配置的另一实例是,如果确定数据获取级对于某一时间处理任务来说是不需要的,就对数据获取级830设旁路。作为重新配置的又一实例,可能需要改变数据获取级830耦合到ALU的次序。作为另一实例,可能需要对数据写入级855再排序。作为说明性实例,可能存在在数据获取之前对纹理坐标进行操作是更有效的情况,在此情况下,数据流经配置以使数据获取级830在ALU 850执行纹理操作之后接收像素包。因此,可重新配置管线的一个好处在于,软件应用程序可重新配置可编程图形处理器205以增加效率。
再次参看图5,如先前论述,光栅级310产生像素包的行510用于处理。可将行510进一步配置为行的群组520,例如四个行510的序列,所述行经传递以用于连续时钟周期中的处理。然而,可对像素包的行510执行的某些操作可能需要像素包的另一行的算术操作的结果。因此,在一个实施例中,光栅级310将像素包配置在行的群组520中以考虑数据依赖性。作为说明性实例,如果对一个像素包的纹理操作需要一个行中另一像素包的结果,就配置群组520以使得具有依赖性纹理操作的像素包被置于后行中。
参看图9,在一个实施例中,光栅级310将像素交替分配为奇数或偶数。将像素的每一行的对应寄存器(R0、R1、R2和R3)对应分配为偶数或奇数。接着利用一个或一个以上规则使偶数像素的像素包的偶数行905和奇数像素的奇数行910交错,以避免数据依赖性。隔行交错提供一额外的时钟周期以考虑ALU等待时间。因此,如果偶数像素的第0行需要两个时钟周期来产生偶数像素的第1行所需的结果,奇数像素的第0行的交错提供ALU等待时间所需的时间的额外时钟周期。作为说明性实例,考虑一多纹理操作,其中偶数像素的第0行为混合操作,且同一像素的第1行对应于需要第一混合操作的结果与第二纹理的混合。如果第一操作的ALU等待时间为两个时钟周期,那么交错允许混合操作的结果可用于具有混合操作的纹理。
在交错的实施例中,优选包括边频带信息以协调交错的数据流。举例来说,在一个实施例,每一像素包中的边频带信息包括一偶数/奇数字段以区别偶数与奇数行。每一ALU 350还可包括对应于用于偶数像素和奇数像素的临时寄存器的两组临时寄存器,以为偶数/奇数像素包提供适当的临时值。偶数/奇数字段用于选择适当组的临时寄存器,例如,为奇数像素选择偶数临时寄存器,而为偶数像素选择一组奇数临时寄存器。在一个实施例中,偶数与奇数像素共享常数寄存器以减少用于偶数与奇数像素的常数值的存储需要总量。在一个实施例中,软件主机可将临时寄存器设置在常数值持续一延长的时间段以模拟常数寄存器。虽然两个像素的交错是一种建构方案,但将了解,如果(例如)ALU等待时间相当于两个以上时钟周期,那么交错可进一步延长以使两个以上像素交错。使光栅级310交错像素包的一个好处在于,硬件考虑了ALU等待时间,从而减少了软件考虑假如(例如)光栅级310未交错像素那么将会发生的ALU等待时间的负担。
如先前讨论,在可配置管线中,可配置ALU 350中的数据流。举例来说,在硬件中,每一ALU 350可大体上相同。然而,特定ALU可经配置以在数据流中具有多于一个位置,例如一不同的执行次序。因此,在每一ALU 350中需要提供一识别符以指示其在数据流中的位置。可通过每一ALU 350的直接寄存器写入技术将识别符(例如)提供到每一ALU 350。然而,此方法具有需要显著的软件开销的缺点。因此,在一个实施例中,利用包技术触发需要配置信息的元件以发现所述元件在处理流中的相对位置并将对应的识别符写入局部寄存器中。
参看图10,在一个实施例中,ALU 350的寄存器地址空间可使用包初始化技术进行软件配置以将一识别(ID)发送到使用数据包的每一ALU 350。每一ALU 350可(例如)包括用于接收和转发数据包的常规网络模块。在一个实施例中,由软件应用程序起始ID包1010。ID包1010含有一初始ID码,例如一数字。将ID包1010注入图形管线中需要ID码的元件之前的一点处,接着将其传递到由当前管线配置界定的处理流的随后元件。在一个实施例中,第一ALU 350中的配置寄存器1020接收ID包,将ID码的当前值写入配置寄存器,并接着在将所述ID包传递到下一ALU之前增加所述ID包的ID码。继续此过程,其中每一随后的ALU 350将ID码的当前值写入其配置寄存器,并接着将具有递增的ID码的ID包传递到下一ALU。将了解,沿着数据流路径的其他级也可具有以类似方式设置的配置寄存器。举例来说,配置流中的元件也可包括数据获取级或数据写入级,所述级也具有通过读取ID包而设置的配置寄存器,且在将具有增加ID的ID包传递到配置流中的下一元件之前增加ID码。此形式的寄存器配置的一个好处在于,其要求在ALU 350单元之间没有硬件差异,从而允许对通过管线的数据流进行软件重新配置。因此举例来说,在一个实施例中,图形处理器管理应用程序280仅需要(例如)通过经由主机接口220发出一由ID包产生器1030接收的产生ID包1010的命令来产生初始ID包1010。
在替代实施例中,使用广播包技术将ID码写入配置寄存器以触发需要被写入配置寄存器以发现其ID的元件。在此实施例中,元件(例如ALU 350)可使用网络协议来发现其ID。广播包技术可用于(例如)其中管线被分支以允许管线的分支并行处理像素的实施例。
图11说明包括诊断监视能力的实施例。在一个实施例中,沿着图形处理器205的元件存在分接的序列,例如关于每一ALU 350和数据获取级330的分接。其他级同样也可包括分接。可配置测试点选择器1105适于允许响应于软件命令(例如来自图形处理器管理应用程序280的软件命令)来监视选定的分接,例如两个分接1120和1130。可(例如)使用多工器来建构可配置测试点选择器1105。在一个实施例中,包括至少一个路由器1110以用于每一选定的测试点的统计数字收集。在一个实施例中,由软件产生的仪表数据包提供关于要监视的分接的信息,并实现选定测试点的计数。另外,可包括仪器寄存器以基于管线的操作模式以选通统计数字收集的开和关(例如,可提供仪表寄存器以允许软件可实现特定类型图形操作的计数,例如当α混合操作发生时实现统计计数)。可配置测试点选择器1105的一个好处在于,其允许软件(例如图形处理器管理应用程序280)具有仅针对关注的测试点而收集的统计数据,从而降低了硬件复杂性和成本,同时仍允许软件分析可编程处理器205的特性的任何部分。可(例如)选择关注的测试点以收集与处理特定种类数据相关联的那些ALU 350(例如处理纹理数据的ALU 350)的统计数字。另外,对于例如α混合的特定图形操作,可实现统计数字收集。
在一个实施例中,可配置测试点选择器1105利用三线(three-wire)协议。具有有效的有效负载数据的每一元件(例如ALU 350-0)产生一有效信号,所述有效信号可(例如)向下流到下一元件(例如ALU 350-1)。准备接收有效负载的元件产生一就绪信号,所述就绪信号可(例如)向上流到前一元件。然而,如果一元件没有准备接收有效负载,所述元件就产生未就绪信号,所述未就绪信号可(例如)对应于未声明就绪信号。启用信号对应于为了(例如)通过经由对邻近正被监视的点而存储的监视启用控制位的管线式寄存器写入的软件控制进行监视而启用的元件。信号可经直接分接而远离产生所述信号的元件或接收这些信号的元件。
选定的分接点处的有效、就绪和未就绪信号可用于确定操作状态。转移状态对应于具有用于流向下游的数据的有效的有效负载(即,有效位设置)的时钟报时信号,和来自接收数据的下游区块中的一下游区块的就绪信号(例如在分接点1120处来自ALU-0的有效信号和在分接点1130处来自ALU-1的就绪信号)。等待状态对应于具有一有效的有效负载的时钟报时信号,因为下方的区块未准备接收数据,所以所述有效的有效负载被阻断(例如在分接点1120处来自ALU-0的有效信号和在分接点1130处来自ALU-1的未就绪信号)。在此实施例中,例如可通过对检测到转移状态和等待状态的时钟周期的数目进行计数来收集与选定的分接点相关的统计数字。
本发明的实施例提供有用于嵌入式图形处理器核心250的多种好处。在紧凑的低功率手持系统290的系统中,功率、空间和CPU能力可能相对有限。在一个实施例中,当不需要处理时,对ALU 350进行时钟选通(例如通过检测取消位),从而减少处理功率要求。另外,光栅级310仅需要产生进行处理的像素数据的子集的像素包,从而也减少了功率要求。可编程ALU级340比具有用于执行专用图形功能的专用级的常规管线需要更小的芯片面积,从而降低了成本。可将可编程处理器205建构为可由软件配置的区块,从而提供改进的效率。测试监视可经配置以测试测试点的子集,从而减少软件的带宽和分析要求。这些和其他先前描述的特征使得关注的可编程图形处理器205可用于嵌入式图形处理器核心250。
出于解释的目的,上述描述使用特定术语来提供本发明的彻底理解。然而所属领域的技术人员将了解,为实践本发明,特定细节是不需要的。因此,出于说明和描述的目的而提出本发明的特定实施例的上述描述。不希望它们是详尽的或将本发明限于所揭示的精确形式;显然,根据以上教示,许多修改和变化是可能的。为最好地解释本发明的原理及其实践应用而选择和描述实施例,因而它们使所属领域的其他技术人员可最好地利用本发明和具有适于预期特定用途的各种修改的各种实施例。希望随附权利要求书及其等效物界定本发明的范围。

Claims (14)

1.一种图形处理器,其包含:
一光栅级,其接收将被光栅化的图元的数据,所述光栅级针对将要处理的图元的每一像素产生复数个像素包,每一像素包包括用于识别将要处理的至少一个像素属性的有效负载信息,且具有用于识别将要对所述像素包执行的至少一个指令的一序列的相关边频带信息;和
一可编程算术逻辑单元级,其用于处理所述像素包,所述算术逻辑单元级包括至少一个算术逻辑单元,每一算术逻辑单元经编程以具有至少一个对一具有一相应当前指令的引入像素包执行的可能的标量算术操作的一集合;
其中对所述复数个像素包执行一序列的算术操作以执行一图形处理功能。
2.一种图形处理器,其包含:
至少一个级,其用于变换和设置将被光栅化的图元的顶点;
一光栅级,其接收将被光栅化的图元的数据,所述光栅级针对将要用一图形操作进行处理的图元的每一像素产生至少一行像素包,所述图形操作可表示为一序列的标量算术操作;
一门监,其包括一用于追踪像素包的所述处理的记分板;
一数据获取级,其用于获取每一行像素包的数据;
一算术逻辑单元级,其包含复数个用于处理每一所述行像素包的可编程算术逻辑单元,每一算术逻辑单元接收一输入行像素包并输出一输出行像素包,每一算术逻辑单元从一接收的行像素包中读取至少一个操作数,使用所述至少一个操作数执行一标量算术操作,产生一结果,并执行将所述结果写入一临时值和用所述结果更新所述输出行的一像素属性寄存器这两个操作中的至少一个操作;和
一数据写入级,其用于将从所述复数个算术逻辑单元接收的经处理像素包的像素数据写入存储器;
其中对所述复数个像素包执行一序列的算术操作以执行所述图形处理功能。
3.一种图形系统,其包含:
一中央处理器,其具有一图形软件模块;
一可编程图形处理器,其从所述图形软件模块接收图元的顶点信息并对指令进行编程以用于对所述可编程图形处理器的级进行编程,所述可编程图形处理器包含:
一光栅级,其响应于来自所述图形软件模块的指令而针对将要处理的每一像素产生复数个像素包,每一像素包包括识别将要处理的至少一个像素属性的有效负载信息,且具有识别将要对每一所述像素包执行的至少一个指令的相关边频带信息;和
一可编程算术逻辑单元级,其包括复数个经配置以用于处理所述像素包的算术逻辑单元,所述图形软件模块分配每一算术逻辑单元以从所接收的像素包中读取选定的操作数,响应于一当前指令而执行一标量算术操作以产生一结果,并执行用所述结果更新一像素属性寄存器和将所述结果存储为一临时值这两个操作中的至少一个;
其中对所述复数个像素包执行一序列的标量算术操作以对每一所述像素执行一图形处理功能。
4.一种嵌入式处理器,其包含:
一寄存器接口,其供一主机编程一图形核心的寄存器;
一主机接口,其供一主机与所述图形核心进行通信;
一存储器接口,其供所述图形核心读取和写入数据;
一可编程图形处理器,其安置在所述图形核心中,所述可编程图形处理器包含:
至少一个级,其用于设置和变换将被光栅化的图元的顶点;
一光栅级,其接收将被光栅化的图元的数据,所述光栅单元针对将用一图形操作进行处理的图元的每一像素产生一至少一行像素包,所述图形操作可表示为一序列的标量算术操作,每一像素包包括识别将要处理的至少一个像素属性的有效负载信息,且每一行具有识别将要对所述行的每一所述像素包执行的至少一个指令的相关信息;
一门监,其包括一用于追踪像素包的所述处理的记分板;
一数据获取级,其用于获取每一行像素包的数据;
一算术逻辑单元级,其包含复数个用于处理每一所述行像素包的可编程算术逻辑单元,每一算术逻辑单元接收一输入行像素包并输出一输出行像素包,每一算术逻辑单元从一接收的行像素包中读取至少一个操作数,使用所述至少一个操作数执行一标量算术操作,产生一结果,并执行将所述结果写入一临时值和用所述结果更新所述输出行的一属性寄存器这两个操作中的至少一个操作;和
一数据写入级,其用于将从所述复数个算术逻辑单元接收的经处理像素包的像素数据写入存储器;
其中对所述复数个像素包执行一序列的算术操作以执行所述图形处理功能。
5.一种对一像素执行一图形处理操作的方法,其包含:
对于将要对一像素执行的至少一个图形功能,识别可对像素包执行以建构所述至少一个图形功能的一序列的标量算术操作;
针对所述像素产生复数个像素包,每一像素包包括将被作为所述序列的标量算术操作中的操作数来处理的像素属性的一子集,所述复数个像素包具有一相关指令序列;
在至少一个算术逻辑单元中,从所述像素包中读取操作数;
在所述至少一个算术逻辑单元中,根据执行所述序列的标量算术操作的所述指令序列执行标量算术操作以用于建构所述至少一个图形功能。
6.一种对一像素执行一图形处理操作的方法,其包含:
对于将要对一像素执行的一图形功能,识别可对像素包执行以建构所述图形功能的一序列的标量算术操作;
针对将要在连续时钟周期中处理的所述像素产生至少一行像素包,每一像素包包括用于将被作为所述序列的标量算术操作中的操作数来处理的像素属性的一子集的至少一个字段,所述至少一行像素包具有一相关指令序列;
在复数个算术逻辑单元的每一者中,读取分配的操作数,所述分配的操作数中的至少一者是从一行像素包中的一像素包读取的一操作数;
在每一所述算术逻辑单元中,根据执行所述序列的标量算术操作的所述指令序列来对所述分配的操作数执行一标量算术计算以用于建构所述图形功能。
7.一种执行一图形处理操作的方法,其包含:
对复数个算术逻辑单元进行编程,以从一行像素包中读取选定的操作数,和响应于与所述行像素包相关联的一选定的当前指令来执行一选定的标量算术操作;
对于将要对一像素执行的至少一个图形操作,识别将要对所述像素的属性的一子集执行的至少一个对应的标量算术操作;
针对所述像素产生一行像素包,每一像素包包括多个用于与将被作为至少一个操作数来处理的所述像素相关联的至少一个属性的字段,所述像素包具有一指示将要执行的一序列的标量算术操作的相关当前指令;
在所述算术逻辑单元中,读取所述行像素包中的所述选定的操作数,并执行对应于所述相关当前指令的所述选定的标量算术操作。
8.一种对一像素执行图形处理操作的方法,其包含:
对于将要对一像素执行的至少一个图形功能,识别可对像素包执行以建构所述至少一个图形功能的标量算术操作;
针对将要处理的所述像素产生至少一行像素包,每一像素包包括用于将被作为操作数来处理的像素属性的一子集的至少一个字段,所述至少一行像素包具有一相关指令序列;
在复数个算术逻辑单元的每一者中,读取分配的操作数,所述分配的操作数的至少一者是从一行像素包中的一像素包读取的一操作数;
在每一所述算术逻辑单元中,根据所述指令序列来对所述分配的操作数执行一标量算术计算;
其中对于需要范围[0,1]中一结果的一选定的标量算术操作,以对应于具有一8位分数的范围在[-2,+2)之间的以2为基的操作数的一S1.8格式来格式化像素包的对应操作数,并将所述选定的标量算术操作的一结果箝位在所述范围[0,1]中;和
对于至少一个其他标量算术操作,以一不同的数据格式格式化对应的像素包。
9.一种对一像素执行一图形处理操作的方法,其包含:
对于将要对一像素的色彩成分执行的一第一图形功能,识别一用于建构所述第一图形功能的第一序列的标量算术操作,所述第一图形功能要求一标量算术操作具有一被箝位在所述范围[0,1]中的结果;
对于将要对与一像素相关联的纹理执行的一第二图形功能,识别一用于建构所述第二图形功能的第二序列的标量算术操作;
针对所述像素产生至少一行像素包,每一像素包具有长度为至少16位的一固定位尺寸,且包括用于将被作为操作数来处理的像素属性的一子集的至少一个字段,所述至少一行像素包具有一相关指令序列;
对于与所述第一图形功能相关联的每一像素包,以一S1.8格式封装至少两个色彩成分,所述S1.8格式对应于具有一8位分数的范围在[-2,+2)之间的以2为基的操作数;
对于与所述第二图形功能相关联的每一像素包,封装一需要多于8位的单个高精度纹理;
在复数个算术逻辑单元的每一者中,读取分配的操作数并根据所述指令序列对所述分配的操作数执行一标量算术计算;
其中对于所述第一图形功能,以所述S1.8格式选择色彩成分作为操作数并将一结果箝位在所述范围[0,1]中,而对于所述第二图形功能,以一精度高于8位的格式选择所述纹理作为一操作数。
10.一种图形处理器,其包含:
至少一个级,其用于设置和变换将被光栅化的图元的顶点;
一光栅级,其接收将被光栅化的图元的数据,所述光栅单元对于将要针对每一图形操作进行处理的图元的每一像素产生至少一行像素包,所述图形操作可表示为一序列的标量算术操作;
一门监,其包括一用于追踪像素包的所述处理的记分板;
一数据获取级,其用于获取每一行像素包的数据;
一算术逻辑单元级,其包含复数个用于处理每一所述行像素包的可编程算术逻辑单元,每一算术逻辑单元接收一输入行像素包并输出一输出行像素包,每一算术逻辑单元从一接收行像素包中读取至少一个操作数,使用所述至少一个操作数执行一标量算术操作,产生一结果,并执行将所述结果写入一临时值或用所述结果更新所述输出行的一像素包这两个操作中的至少一个操作;和
一数据写入级,其用于将从所述复数个算术逻辑单元接收的经处理像素包的像素数据写入存储器;
其中对所述复数个像素包执行一序列的算术操作以执行所述图形处理功能;
所述光栅级以一对应于具有一8位分数成分的一范围[-2,+2)中的操作数的一基于二的表示法的S1.8格式来格式化用于一第一类型的标量算术操作的像素包,且每一算术逻辑单元通过将一结果箝位在所述范围[0,1]中来处理所述第一类型的标量操作;
所述光栅级以一精度需要高于8位的格式来格式化用于一第二类型的标量算术操作的像素包。
11.一种图形处理器,其包含:
一光栅级,其接收将被光栅化的图元的数据,所述光栅级针对将要处理的图元的每一像素产生复数个像素包,每一像素包包括识别将要处理的至少一个像素属性的有效负载信息,且具有识别将要对每一所述像素包执行的至少一个指令的相关边频带信息;
一可编程算术逻辑单元级,其用于处理所述像素包,所述算术逻辑单元级包括复数个算术逻辑单元,每一算术逻辑单元具有至少一个对一具有一相应当前指令命令的引入像素包执行的可能的算术操作的一集合;
一数据获取级,其用于获取所述像素包的数据;
一数据写入级,其用于将从所述算术逻辑单元级接收的经处理像素包的像素数据写入存储器;
一第一分配器,其耦合到所述算术逻辑单元级、所述数据获取级和所述数据写入级的各自输入;和
一第二分配器,其耦合到所述算术逻辑单元级、所述数据获取级和所述数据写入级的各自输出;
所述第一分配器和所述第二分配器适于响应于来自一主机的一命令而重新配置通过所述数据获取级、所述算术逻辑单元级和所述算术逻辑单元写入级的像素包的一处理流。
12.一种操作一图形管线的方法,所述图形管线具有一用于产生像素包的光栅处理器、一用于获取像素包的数据的数据获取级、一具有至少一个用于对像素包执行标量算术操作的算术逻辑单元的算术逻辑单元级、一用于写入像素数据的数据写入级和耦合所述数据获取级、所述数据写入级和所述算术逻辑单元级的分配器,所述方法包含:
响应于第一命令,编程所述分配器以界定通过所述数据获取级、所述算术逻辑单元级和所述数据写入级的像素包的一第一处理流;和
响应于一第二命令,编程所述分配器以界定通过所述数据获取级、所述算术逻辑单元级和所述数据写入级的像素包的一第二流;
其中一软件主机可在复数个处理流的任一者中配置所述管线。
13.一种操作一图形管线的方法,所述图形管线具有一用于产生像素包的光栅处理器、一用于获取像素包的数据的数据获取级、一具有至少一个用于对像素包执行标量算术操作的算术逻辑单元的算术逻辑单元级、一用于写入像素数据的数据写入级和耦合所述数据获取级、所述数据写入级和所述算术逻辑单元级的分配器,所述方法包含:
从一软件主机接收一命令以重新配置从通过所述数据获取级、所述算术逻辑单元级和所述数据写入级的像素包的一第一处理流到通过所述数据获取级、所述算术逻辑单元级和所述数据写入级的像素包的一第二流的所述管线;和
调整所述分配器以重新配置从所述第一处理流到所述第二处理流的所述管线。
14.一种图形处理器,其包含:
一光栅级,其接收将被光栅化的图元的数据,所述光栅级针对将要处理的图元的每一像素产生复数个像素包,每一像素包包括识别将要处理的至少一个像素属性的有效负载信息,且具有识别将要对每一所述像素包执行的至少一个指令的相关边频带信息;
一可编程算术逻辑单元级,其用于处理所述像素包,所述算术逻辑单元级包括复数个算术逻辑单元,每一算术逻辑单元具有至少一个对一具有一相应当前指令命令的引入像素包执行的可能的算术操作的一集合;
一数据获取级,其用于获取所述像素包的数据;
一数据写入级,其用于将从所述算术逻辑单元级接收的经处理像素包的像素数据的写入存储器;
一第一分配器,其耦合到所述算术逻辑单元级、所述数据获取级和所述数据写入级的各自输入;和
一第二分配器,其耦合到所述算术逻辑单元级、所述数据获取级和所述数据写入级的各自输出;
所述第一分配器和所述第二分配器适于响应于来自一主机的一命令而重新配置通过所述数据获取级、所述算术逻辑单元级和所述算术逻辑单元写入级的像素包的一处理流;
其中所述算术逻辑单元级的每一算术逻辑单元适于接收由一软件识别起始的一识别包,每一算术逻辑单元将所述识别包的一识别符的一当前值写入一配置寄存器,使所述识别符递增,并将所述识别包转送到下一算术逻辑单元。
CN2005800147876A 2004-05-14 2005-05-13 低功率可编程处理器 Active CN101053013B (zh)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US10/845,714 US7250953B2 (en) 2004-05-14 2004-05-14 Statistics instrumentation for low power programmable processor
US10/846,097 US7091982B2 (en) 2004-05-14 2004-05-14 Low power programmable processor
US10/846,106 US7389006B2 (en) 2004-05-14 2004-05-14 Auto software configurable register address space for low power programmable processor
US10/845,714 2004-05-14
US10/846,110 US7142214B2 (en) 2004-05-14 2004-05-14 Data format for low power programmable processor
US10/846,110 2004-05-14
US10/846,097 2004-05-14
US10/846,334 2004-05-14
US10/846,334 US7199799B2 (en) 2004-05-14 2004-05-14 Interleaving of pixels for low power programmable processor
US10/846,106 2004-05-14
US10/846,226 US7268786B2 (en) 2004-05-14 2004-05-14 Reconfigurable pipeline for low power programmable processor
US10/846,226 2004-05-14
PCT/US2005/016967 WO2005114646A2 (en) 2004-05-14 2005-05-13 Low power programmable processor

Publications (2)

Publication Number Publication Date
CN101053013A CN101053013A (zh) 2007-10-10
CN101053013B true CN101053013B (zh) 2010-04-07

Family

ID=35308982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800147876A Active CN101053013B (zh) 2004-05-14 2005-05-13 低功率可编程处理器

Country Status (2)

Country Link
US (2) US7091982B2 (zh)
CN (1) CN101053013B (zh)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8711155B2 (en) 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8860722B2 (en) 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7389006B2 (en) * 2004-05-14 2008-06-17 Nvidia Corporation Auto software configurable register address space for low power programmable processor
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US9111368B1 (en) 2004-11-15 2015-08-18 Nvidia Corporation Pipelined L2 cache for memory transfers for a video processor
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7502029B2 (en) * 2006-01-17 2009-03-10 Silicon Integrated Systems Corp. Instruction folding mechanism, method for performing the same and pixel processing system employing the same
US8111264B2 (en) * 2006-03-30 2012-02-07 Ati Technologies Ulc Method of and system for non-uniform image enhancement
US7542046B1 (en) 2006-06-26 2009-06-02 Nvidia Corporation Programmable clipping engine for clipping graphics primitives
US7805589B2 (en) 2006-08-31 2010-09-28 Qualcomm Incorporated Relative address generation
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8547395B1 (en) * 2006-12-20 2013-10-01 Nvidia Corporation Writing coverage information to a framebuffer in a computer graphics system
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
US20090002368A1 (en) * 2007-06-26 2009-01-01 Nokia Corporation Method, apparatus and a computer program product for utilizing a graphical processing unit to provide depth information for autostereoscopic display
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US7886116B1 (en) * 2007-07-30 2011-02-08 Nvidia Corporation Bandwidth compression for shader engine store operations
US8441487B1 (en) 2007-07-30 2013-05-14 Nvidia Corporation Bandwidth compression for shader engine store operations
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8736624B1 (en) * 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8325203B1 (en) 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
WO2009091369A1 (en) * 2008-01-18 2009-07-23 Advanced Micro Devices Configurable shader alu units
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US7873066B2 (en) * 2009-01-26 2011-01-18 International Business Machines Corporation Streaming direct inter-thread communication buffer packets that support hardware controlled arbitrary vector operand alignment in a densely threaded network on a chip
US8629867B2 (en) * 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
GB2489278B (en) * 2011-03-24 2019-12-25 Advanced Risc Mach Ltd Improving the scheduling of tasks to be performed by a non-coherent device
US9691360B2 (en) * 2012-02-21 2017-06-27 Apple Inc. Alpha channel power savings in graphics unit
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
JP5720707B2 (ja) * 2013-02-13 2015-05-20 株式会社デンソー 通信システム及び通信ノード
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US10297001B2 (en) 2014-12-26 2019-05-21 Intel Corporation Reduced power implementation of computer instructions
US9978343B2 (en) 2016-06-10 2018-05-22 Apple Inc. Performance-based graphics processing unit power management
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
CN115951974B (zh) * 2023-03-10 2023-05-26 浙江宇视科技有限公司 Gpu虚拟机的管理方法、系统、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1278350A (zh) * 1997-10-31 2000-12-27 惠普公司 三维图象绘制装置及方法
US6333744B1 (en) * 1999-03-22 2001-12-25 Nvidia Corporation Graphics pipeline including combiner stages
US6628290B1 (en) * 1999-03-22 2003-09-30 Nvidia Corporation Graphics pipeline selectively providing multiple pixels or multiple textures
CN1465036A (zh) * 2001-06-21 2003-12-31 Hi股份有限公司 信息处理装置
CN1491402A (zh) * 2001-12-12 2004-04-21 ���ṫ˾ 图像处理装置及其方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228497A (en) 1977-11-17 1980-10-14 Burroughs Corporation Template micromemory structure for a pipelined microprogrammable data processing system
JPS58207152A (ja) 1982-05-28 1983-12-02 Nec Corp パイプライン演算装置テスト方式
US4860248A (en) 1985-04-30 1989-08-22 Ibm Corporation Pixel slice processor with frame buffers grouped according to pixel bit width
US4845666A (en) 1985-07-01 1989-07-04 Pixar Computer system for processing binary numbering format and determining the sign of the numbers from their two most significant bits
US4816913A (en) 1987-11-16 1989-03-28 Technology, Inc., 64 Pixel interpolation circuitry as for a video signal processor
US5230039A (en) * 1991-02-19 1993-07-20 Silicon Graphics, Inc. Texture range controls for improved texture mapping
US5611038A (en) 1991-04-17 1997-03-11 Shaw; Venson M. Audio/video transceiver provided with a device for reconfiguration of incompatibly received or transmitted video and audio information
JP2905640B2 (ja) * 1992-03-30 1999-06-14 シャープ株式会社 メモリインタフェイス装置
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
DE69229338T2 (de) 1992-06-30 1999-12-16 Discovision Ass Datenpipelinesystem
US5301272A (en) * 1992-11-25 1994-04-05 Intel Corporation Method and apparatus for address space aliasing to identify pixel types
US5684939A (en) * 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5778250A (en) 1994-05-23 1998-07-07 Cirrus Logic, Inc. Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline
US5710577A (en) 1994-10-07 1998-01-20 Lasermaster Corporation Pixel description packet for a rendering device
GB2298295B (en) 1995-02-23 2000-01-19 Sony Uk Ltd Data processing systems
EP0742670B1 (en) 1995-05-08 2002-04-03 The Box Worldwide, Inc. Interactive video system
JP3720094B2 (ja) 1995-10-18 2005-11-24 シャープ株式会社 データ駆動型情報処理装置
US5963209A (en) * 1996-01-11 1999-10-05 Microsoft Corporation Encoding and progressive transmission of progressive meshes
US5828402A (en) * 1996-06-19 1998-10-27 Canadian V-Chip Design Inc. Method and apparatus for selectively blocking audio and video signals
US5793386A (en) * 1996-06-28 1998-08-11 S3 Incorporated Register set reordering for a graphics processor based upon the type of primitive to be rendered
US5982457A (en) 1997-01-07 1999-11-09 Samsung Electronics, Co. Ltd. Radio receiver detecting digital and analog television radio-frequency signals with single first detector
US6072508A (en) * 1997-03-14 2000-06-06 S3 Incorporated Method and apparatus for shortening display list instructions
US6028613A (en) * 1997-03-20 2000-02-22 S3 Incorporated Method and apparatus for programming a graphics subsystem register set
US6725463B1 (en) 1997-08-01 2004-04-20 Microtune (Texas), L.P. Dual mode tuner for co-existing digital and analog television signals
US6157751A (en) 1997-12-30 2000-12-05 Cognex Corporation Method and apparatus for interleaving a parallel image processing memory
US6025854A (en) 1997-12-31 2000-02-15 Cognex Corporation Method and apparatus for high speed image acquisition
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
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
US6259461B1 (en) 1998-10-14 2001-07-10 Hewlett Packard Company System and method for accelerating the rendering of graphics in a multi-pass rendering environment
US6516032B1 (en) 1999-03-08 2003-02-04 Compaq Computer Corporation First-order difference compression for interleaved image data in a high-speed image compositor
US6731296B2 (en) 1999-05-07 2004-05-04 Broadcom Corporation Method and system for providing programmable texture processing
US6446155B1 (en) 1999-06-30 2002-09-03 Logitech Europe S. A. Resource bus interface
US6369738B1 (en) 1999-08-17 2002-04-09 Eric Swanson Time domain/frequency domain data converter with data ready feature
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6747660B1 (en) 2000-05-12 2004-06-08 Microsoft Corporation Method and system for accelerating noise
US6532515B1 (en) * 2000-08-02 2003-03-11 Ati International Srl Method and apparatus for performing selective data reads from a memory
JP4193990B2 (ja) * 2002-03-22 2008-12-10 ディーリング,マイケル,エフ. スケーラブルな高性能3dグラフィックス
US6980209B1 (en) 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
FR2848367A1 (fr) 2002-12-04 2004-06-11 Koninkl Philips Electronics Nv Systeme et procede de decouverte de services pouvant etre fournis par au moins deux sources de services distinctes
US6972803B2 (en) 2003-09-10 2005-12-06 Gennum Corporation Video signal format detector and generator system and method
US7250953B2 (en) 2004-05-14 2007-07-31 Nvidia Corporation Statistics instrumentation for low power programmable processor
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7142214B2 (en) 2004-05-14 2006-11-28 Nvidia Corporation Data format for low power programmable processor
WO2005114646A2 (en) 2004-05-14 2005-12-01 Nvidia Corporation Low power programmable processor
US7389006B2 (en) 2004-05-14 2008-06-17 Nvidia Corporation Auto software configurable register address space for low power programmable processor
US7268786B2 (en) 2004-05-14 2007-09-11 Nvidia Corporation Reconfigurable pipeline for low power programmable processor
US7199799B2 (en) 2004-05-14 2007-04-03 Nvidia Corporation Interleaving of pixels for low power programmable processor
US7265792B2 (en) 2004-07-01 2007-09-04 Xceive Corporation Television receiver for digital and analog television signals
US7388588B2 (en) * 2004-09-09 2008-06-17 International Business Machines Corporation Programmable graphics processing engine

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1278350A (zh) * 1997-10-31 2000-12-27 惠普公司 三维图象绘制装置及方法
US6333744B1 (en) * 1999-03-22 2001-12-25 Nvidia Corporation Graphics pipeline including combiner stages
US6628290B1 (en) * 1999-03-22 2003-09-30 Nvidia Corporation Graphics pipeline selectively providing multiple pixels or multiple textures
CN1465036A (zh) * 2001-06-21 2003-12-31 Hi股份有限公司 信息处理装置
CN1491402A (zh) * 2001-12-12 2004-04-21 ���ṫ˾ 图像处理装置及其方法

Also Published As

Publication number Publication date
US20050253861A1 (en) 2005-11-17
US20060152519A1 (en) 2006-07-13
US7969446B2 (en) 2011-06-28
US7091982B2 (en) 2006-08-15
CN101053013A (zh) 2007-10-10

Similar Documents

Publication Publication Date Title
CN101053013B (zh) 低功率可编程处理器
EP1759380B1 (en) Low power programmable processor
CN101091203B (zh) 图形处理系统和方法
US20080204461A1 (en) Auto Software Configurable Register Address Space For Low Power Programmable Processor
CN102176241B (zh) 使用统一着色器的图形处理结构
CN101449239B (zh) 具有算术及初等函数单元的图形处理器
CN103092772B (zh) 电路装置和高速缓存状态数据的方法
CN101221653B (zh) 用于图形处理单元的性能监测方法和系统
US8330765B2 (en) Rolling context data structure for maintaining state data in a multithreaded image processing pipeline
US20090187734A1 (en) Efficient Texture Processing of Pixel Groups with SIMD Execution Unit
US20090049276A1 (en) Techniques for sourcing immediate values from a VLIW
CN101114273A (zh) 在并行计算机上执行全收集操作的方法和系统
CN101512499A (zh) 相对地址产生
US7199799B2 (en) Interleaving of pixels for low power programmable processor
CN106575221A (zh) 用于simd执行引擎的非结构化控制流的方法和设备
CN102054265A (zh) 执行并行着色操作
CN103870213A (zh) 经由管线化的状态包触发性能事件捕获
US7268786B2 (en) Reconfigurable pipeline for low power programmable processor
US7250953B2 (en) Statistics instrumentation for low power programmable processor
CN109410136A (zh) 基于最短传递路径的匀色方法及处理装置
US7142214B2 (en) Data format for low power programmable processor
CN101441761A (zh) 图形处理器单元管线中的条件执行位
CN100568914C (zh) 基于s3c2440a的真彩色图像采集方法
Yang et al. RMSRM: real-time monitoring-based self-reconfiguration mechanism in reconfigurable PE array

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