CN101425175A - 着色器处理系统与方法 - Google Patents

着色器处理系统与方法 Download PDF

Info

Publication number
CN101425175A
CN101425175A CNA2008101780132A CN200810178013A CN101425175A CN 101425175 A CN101425175 A CN 101425175A CN A2008101780132 A CNA2008101780132 A CN A2008101780132A CN 200810178013 A CN200810178013 A CN 200810178013A CN 101425175 A CN101425175 A CN 101425175A
Authority
CN
China
Prior art keywords
thread
texture
tinter
performance element
logical block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008101780132A
Other languages
English (en)
Other versions
CN101425175B (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.)
Via Technologies Inc
Original Assignee
Via Technologies 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
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101425175A publication Critical patent/CN101425175A/zh
Application granted granted Critical
Publication of CN101425175B publication Critical patent/CN101425175B/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本发明提供着色器(shader)处理系统及方法的实施例。本发明的一个实施例包含一种可由图形处理器(GPU)中的一个多重线程的平行运算核心单元来执行的从属纹理(texture)读取方法。此方法包括从用以执行对应于第一线程的着色器运算的逻辑单元产生一个从属纹理读取要求;传送对应于该第一线程的与着色器计算和纹理采样相关的参数至纹理管线,同时保持该逻辑单元中对应于该第一线程的所有与着色器处理相关的其它信息。

Description

着色器处理系统与方法
技术领域
本发明与数据处理系统相关,尤其是与可编程的图形处理系统和方法相关。
背景技术
一般而言,3维(3D)计算机绘图是关于将3D物体的2D图像产生(提供)至显示屏幕上的技术,例如阴极射线管显示器(CRT)或液晶显示器(LCD)。物体可以由简单几何基元(primitive)所组成,例如由点、线段、三角形、或多边形所组成。而更复杂的物体可以通过一系列相连接的平面多边形(例如平面三角形)所组成并成像至显示器上。所有的几何基元都可由顶点组所描绘构成,例如坐标(x,y,z,w)即定义出一个点、一个线段的端点或一个多边形的角。
为了在计算机屏幕或其它显示器上,利用产生2D投像方式的显示数据组来代表3D基元,则基元的顶点群得通过一系列操作处理、或一系列图形成像的管线处理阶段(pipeline)。一般所称的管线仅是一系列的处理单元或阶段,其中前一阶段的输出即为下一阶段的输入。在图形处理单元的背景下,这些阶段包括例如逐一顶点的操作、基元配置操作、像素操作、纹理(texture)配置操作、描绘操作(rasterization)及片段(fragment)操作。
在典型图形显示系统中,一个图像数据库(image database)(例如指令列单(command list))可能储存了对场景中物体的描述。而这些物体是通过许多小多边形所描述出来的,覆盖拼凑出该物体的表面,与使用磁砖覆盖住一面墙或其它表面的方式一样。每一个多边形皆由一连串的顶点坐标(x,y,z模型坐标)、表面纹理特性(例如:颜色、纹理、亮度等等)、也可由每一个顶点相对于表面的法向量来描述出。具有复杂曲面的3D物体,通常使用三角形或四边形的多边形,而后者可再解构成一对三角形。
转换引擎(transformation engine)因应使用者所选择输入的视角对物体坐标进行转换。此外,使用者可指定视野(field of view)、图像的尺寸、所视空间的后端(back end of the viewing volume)来决定是否要包含/消除背景。
一旦选择了所视区域,裁剪逻辑单元(clipping logic)就会消除(eliminate)位于所视区域之外的多边形(例如三角形)及裁剪(clip)那些跨越所视区域内外的多边形。这些被裁剪的多边形对应于位在所视区域的新边界之内的多边形。接着,多边形的顶点即以对应于所视屏幕的坐标(x,y坐标)及每一个顶点的深度值(z坐标)的形式被传送至下一阶段。在一般系统中,下一阶段就是打光模型(lighting model)。在某些实施例中,打光模型也可放在裁剪逻辑单元之前。接着,多边形及其颜色值及被传送至描绘器(rasterizer)上。
对每一个多边形而言,描绘器定义出哪些像素位在多边形上,并尝试将深度值(z值)写入深度缓冲器(depth buffer)中。描绘器产生空白的像素,并将正在处理的多边形的像素深度值(z值)与已写入深度缓冲器的像素深度值相互比较。倘若新多边形像素的深度值较小,表示此像素位于已写入画帧缓冲器(frame buffer)的多边形前,则此像素的值就取代深度缓冲器内的值,因为新的多边形遮盖了先前已处理过并写入深度缓冲器的多边形。此程序会不断重复直到所有多边形皆被描绘并且其深度值皆被测试过。
接着,抓取相关的纹理值并附加到多边形的可见像素上。纹理值可能伴随从顶点颜色内插所得(interpolated)的颜色值。像素处理阶段接着将所有的值融合成最终的像素值,并写入画帧缓冲器内。此时,图像控制器就会依描绘顺序将架构缓冲的内容逐一扫描线地呈现至显示器上。
如以上背景知识,图1显示出图形处理器系统中固定功能图形管线的某些零组件的功能流程图。而不同系统中,图形管线的零组件可能不同,且可以多种方式呈现。主机10(或在主机上运作的图形应用程序接口(API))可通过命令流处理器(command stream processor)12产生指令列单。而指令列单包含一系列的图形指令及数据,用以呈现「环境」至图形显示器。图形管线中的零组件可能操作在指令列单的数据或指令上,用以呈现在图形显示器的屏幕上。
解析器(parser)14可从命令流处理器12接收指令,并通过数据解析来解读指令,将定义图形基元的数据沿着图形管线传送或传入。值得注意的是,在某些系统中,命令流处理器12可包含解析的功能。图形基元可通过位置数据(例如x,y,z,w坐标)、打光及纹理信息而被定义。对每一个基元来说,这些信息可由解析器14从命令流处理器12取得,并传给顶点着色器16。如所已知,顶点着色器16可对从指令列单收到的图形数据执行多种不同的转换。而数据可从世界坐标(world coordinates)被转换至模型视角坐标(modelview coordinates)、投影坐标(projection coordinates)并最后至屏幕坐标(screen coordinates)。上述顶点着色器16所执行的功能性处理过程为已知,因此不需要多做赘述。随后,图形数据可被传递至描绘器18上,即如上述所言的方式操作。
之后对基元内的每一个像素执行一个z检测20(深度检测)。z检测的执行包含将现在的z值(也就是现在基元的某一个给定像素的z值)与在对应的像素位置所储存的z值做比较。原先储存的z值提供了该给定的像素位置先前所呈现的基元的深度值。如果现在的z值所表示的深度比原先储存的z值更接近观看者的眼睛,则以现在的z值取代原先储存的z值,并且以现在的图形信息(也就是颜色)取代位于画帧缓冲器24中对应像素位置的颜色信息(像素着色器22所判定的)。倘若现在的z值所表示的深度没有比原先储存的z值更接近观看者的眼睛,则画帧缓冲器及z缓冲器(深度缓冲器)的内容都不需被替换,即表示先前所呈现的像素位于现在的像素之前。对于图形基元中被呈现并判定为较原先储存的画素更接近观看者眼睛的新画素而言,与该基元相关的信息皆被传递至像素着色器22上,用来决定每一个被判定为更接近现在视野点的像素的颜色信息。像素着色器22也传递纹理坐标及其它信息至先进先出(first-in first-out,以下简称FIFO)缓冲器26中,此FIFO缓冲器26于进行纹理处理时提供数据给纹理单元28。
管线内图形数据的复杂度与强度(magnitude)显示出管线的低效率、延迟、及瓶颈会严重地连累管线的执行力。举例而言,其中一种潜在的瓶颈与一般所谓的从属读取(dependent read)相关,其牵涉到由像素着色器22与包含FIFO缓冲器26和纹理单元28的纹理管线所构成的回路。一般来说,当像素着色器22要执行纹理取样时,许多信息需要从像素着色器22被交换至FIFO缓冲器26,接着被传送至纹理单元28,最后又被传回至像素着色器22。也就是当像素着色器22已切换至其它工作或其它线程以隐藏与从属读取相关的延迟因素时,FIFO缓冲器26可作为延迟高速缓存(latency cache)或缓冲器来储存所有信息。在收到纹理数据后,上述信息及纹理数据就被回传给像素着色器22以回复像素处理。
被传送至FIFO缓冲器26的信息可能包含取样请求(sample request)的回传地址(例如于完成从属读取时的回传地址)、纹理坐标、像素屏蔽、工作识别字以及对应于某线程及数据处理程序的寄存器(registers)的内容。
已知系统与方法中用来处理关于像素着色器22内从属读取请求的信息的一种方式是利用软件(例如:驱动器软件)或描绘器硬件将像素分成许多批次(batches)。像素(例如:2×2像砖(tile)或其它形式)是在像素着色器22的输入处被接收。像素着色器22的第一部分(也就是在第一从属读取请求之前)就执行在这些像素上,接着上述信息被传送至包含FIFO缓冲器26与纹理单元28的纹理管线中。在等待纹理管线完成先前像素的第一批次从属读取请求时,像素着色器22可继续处理在其输入所收到的其它像素。然而到达在某个门坎或容量时,像素着色器22停止接收新像素,并结束一个批次。此批次会在由像素着色器22、FIFO缓冲器26与纹理单元28组成的封闭循环中循环数次(即从属读取传递),直到这批次内所有像素皆完成了所有从属读取,以及线程(thread)也被完成(像素着色器处理程序完成了给定的批次)。
已知的系统与方法利用软件(驱动程序)来决定出每一批次的尺寸以避免死结(dead-lock)。例如,如果一个FIFO缓冲器26的总储存量为3000单位(位或字节),每一个像素(例如2×2像砖或其它粒状(granularity))需要8个单位来储存暂时寄存器的内容,2个单位给第一次传递的从属读取纹理坐标,15个单位用来储存寄存器的内容,5个单位给坐标。举例而言,一批次的尺寸设定为3000/最大值(所需的第一次传递储存量、第二次传递储存量、...等)=3000/最大值(8+2,15+5,...等)=50像素。在此例子中,倘若超过50像素被允许进入了循环,当这些像素开始制造出比第二次传递可承担还更多的数据时,系统就会锁住。适当的FIFO缓冲器配置另一个要面临的挑战就是,像素数据的尺寸不同,及/或平行的像素着色器22可能正在处理多个像素数据型态的不同物体,因此在使用公共延迟FIFO寄存器的情况下,每一个请求可能需要保存不同数量的条目(entry)。
已知的系统与方法仅支持固定次数的从属读取传递,例如通过适当地设定传递控制寄存器来限制传递次数(例如最多4次)。然而随着图形处理技术更进一步复杂化,API及/或应用程序可以支持无限次数的从属读取传递与动态控制流(flow),如同动态分支(branch)、循环、子程序(subroutine)(数据从属码分支(data dependent code branch))。所以需要更精密的硬件控制逻辑单元来支持更为复杂的图形软件及其它先进的从属读取特色。
发明内容
本发明的实施例提供着色器处理系统与方法。
本发明的一个实施例,包含一种在具有多重线程的平行运算核心的图形处理单元中执行从属纹理读取的方法。此实施例的方法也包括从用以执行着色器运算的执行单元逻辑单元产生与第一线程相关的一个从属纹理读取请求,以及传送对应于该第一线程的与着色器运算和纹理取样相关的多个参数至纹理管线,同时保持对应于该第一线程的与着色器处理相关的其它信息。
本发明的另一个实施例,包括位于图形处理单元的多重线程的平行运算核心中的执行单元逻辑单元,该执行单元逻辑用来执行对应于第一线程的着色器运算,以及用来产生一个对应于该第一线程的从属纹理读取请求。该系统还包含一个纹理管线,用来从执行单元逻辑单元接收对应于该第一线程的与着色器运算和纹理取样相关的多个参数,而执行单元逻辑也被用来储存对应于该第一线程的所有与着色器处理相关的其它信息。
本发明提供了一种在多重线程的图形处理单元中执行从属纹理读取的方法,包括:从用以执行着色器运算的执行单元逻辑单元产生与第一线程相关的一个从属纹理读取请求;传送对应于该第一线程的与着色器运算和纹理取样相关的多个参数以及该执行单元逻辑单元的识别字至纹理管线;从该纹理管线接收对应于该从属纹理读取的纹理数据至该执行单元逻辑单元;以及利用该纹理数据在该执行单元逻辑单元内执行该第一线程。
本发明还提供了一种着色器处理系统,包含:执行单元逻辑单元,存在于图形处理单元的多重线程的平行运算核心中,该执行单元逻辑单元用来执行对应于第一线程的着色器计算,该执行单元逻辑包含:数据路径单元,用来产生与该第一线程相关的从属读取请求,以及公共寄存器文件,用来接收对应于该从属读取请求的纹理数据;以及纹理管线,用来自该执行单元逻辑单元接收对应于该第一线程的与着色器运算和纹理取样相关的多个参数以响应该从属读取请求,该纹理管线包含先进先出缓冲器用来接收执行单元识别字与线程识别字以提供该纹理数据。
本发明还提供了一种图形处理单元,包括:多重线程的平行运算核心,包括多个执行单元,该等执行单元的每一个包括:执行单元逻辑单元,包括:数据路径单元,用来执行对应于第一线程的一或多个着色器运算,该数据路径单元还被用来产生对应于该第一线程的从属纹理读取请求;仲裁逻辑单元,用来从该执行单元逻辑单元的该数据路径单元接收信号,以搁置该第一线程;一或多个线程状态寄存器,用以储存与着色器运算和纹理取样相关的一或多个参数,以及与着色器处理相关的其它信息;以及公共寄存器文件,用以接收纹理数据;以及纹理管线,包含:先进先出缓冲器,用来于该第一线程搁置期间接收执行单元识别字及一线程识别字,并提供线程启动请求以解除该第一线程的搁置;以及纹理抓取和过滤器单元,用以于该第一线程搁置期间从该线程状态寄存器接收该纹理坐标与一纹理描述字,并提供该纹理数据至该公共寄存器文件,其中,该执行单元逻辑单元用以传送对应于该第一线程的与着色器运算和纹理取样相关的该参数至该纹理管线,同时保持该线程状态寄存器中对应于该第一线程的与着色器处理相关的该其它信息。
通过以下详尽的说明,搭配所附图例,上述本发明的系统、方法、特色及优点将更为清楚。
附图说明
通过以下图示可以更为了解着色器处理系统与方法。在这些图标中的组件尺寸不一定要照图缩放,重点是在系统与方法的原则上。此外,参考标号指出各对应图上的部分。
图1为本发明一实施例的固定功能图形处理系统的区块或组成的功能流程图。
图2为本发明一实施例用以实现着色器处理系统与方法的图形处理系统的高阶方块图。
图3为本发明另一实施例用以实现着色器处理系统与方法的图形处理系统的高阶方块图。
图4为说明图2、3的图形处理系统的部分组成的方块图。
图5为图4中运算核心的执行单元池(execution unit pool)的一个实施例方块图。
图6为图5中运算核心的执行单元的一个实施例方块图。
图7为本发明一实施例的着色器处理系统的方块图。
图8为图7中着色器处理系统所实施的着色器处理方法的一实施例流程图。
图9为图7中着色器处理系统所实施的着色器处理方法的另一个实施例流程图。
[主要元件标号说明]
10:主机(图形应用程序接口)
12、406:命令流处理器
14:解析器
16、401:顶点着色器
18:描绘器
20:z检测
22、405:像素着色器
24:画帧缓冲器
26:先进先出缓冲器
28:纹理单元
200、200a、200b、200c:着色器处理系统
202:运算核心
204:纹理管线
214:图形处理单元
300:图形处理系统
302:显示装置
304:显示接口单元
306:区域存储器
310:存储器接口单元
318:总线接口单元
322:芯片组
324:系统存储器
326:中央处理器
328:驱动软件
402:纹理过滤单元
403:几何着色器
404:像素封装器
408:写回单元
410:纹理地址产生器
412:图形管线
414:执行单元池控制单元及顶点/串流高速缓存
502:执行单元输入
504:执行单元输出
504a:执行单元偶输出
504b:执行单元奇输出
506:存储器存取单元
508:二级高速缓存
510:存储器接口仲裁器
514:执行单元池
520a、520b、520c、520d、520e、520f、520g、520h:执行单元
604:指示高速缓存控制器
606:线程控制器
608:常数缓冲器
610:公共寄存器文件
612:执行单元数据路径
614:执行单元数据路径先进先出缓冲器
616:述词寄存器文件
618:纯量寄存器文件
620:数据输出控制器
624:线程工作接口
700:执行单元逻辑单元
702:数据路径单元
704:仲裁单元
706:线程控制槽或状态寄存器
710:纹理抓取与过滤单元
712:纹理抓取延迟先进先出缓冲器
714:程序计数器
716:状态寄存器
718:堆栈指针
A、B、C、D、E、F、G、X:输入端口
H、1、J2、K1、K2、M1、M2、N、W:输出端口
具体实施方式
本发明揭露着色器处理系统与方法的不同实施例。其中一个着色器处理系统的实施例包括位于具有多重线程的平行运算核心的图形处理单元(GPU)内的一或多个执行单元,该执行单元与固定功能纹理逻辑单元(例如纹理过滤单元、纹理地址产生器)和先进先出(FIFO)缓冲器或高速缓存相互合作,其中纹理逻辑单元与FIFO缓冲器在此合称为纹理管线。某些实施例可能包含不只一条纹理管线。每一个执行单元包括储存与像素着色器处理有关的绘制内文(rendering-context)相关信息的内部储存单元(internal storage)。在本发明的实施例中,纹理取样的从属读取是通过提供与着色器运算与纹理取样的相关参数至纹理管线来实现,同时保持每一执行单元的内部储存单元的绘制内文相关信息。简言之,如上所述,本发明实施例以执行单元为基础的控制架构取代了已知架构中通过传递控制寄存器来控制的固定数目传递,为了后续工作可被执行,已知架构无效率地浪费了许多指令以将所有绘制内文信息和纹理取样的相关参数从固定功能像素着色器交换至纹理管线。而本发明实施例的优点包括降低循环次数与读/写频宽,因此可达成实质上无限次的从属读取以及低延迟效能(low latency performance)。
图2为本发明一或多个实施例的绘图处理系统所实现的着色器处理系统和方法(在此统称着色器处理系统200)的高阶方块图。如图2所示,在某些方面与先前技术(图1)相似,而这两张图的比较就可说明所揭露本发明实施例的进步点。简言之,图2揭露了一个图形处理单元214(以下简称GPU)。GPU214包括一个单一硬件元件,此单一硬件元件包含一个具有共享的执行单元集区(pool of execution unit)的运算核心202(也称为软件可编程核心处理单元),其中每一个执行单元皆被用来处理像素着色、顶点着色与几何着色的运算。其中一个实施例中,着色器处理系统200被分布至多个执行单元和纹理管线204。在某些实施例中,着色器处理系统200也可具备其它的组件。
运算核心202包括数个相似的执行单元,每一个执行单元皆可用来处理多重线程。在一给定时间,某些执行单元(或某些线程)可被用来执行像素着色操作,而其它执行单元(或线程)被用来执行几何着色及/或顶点着色操作。这些执行单元的配置和动态重配置可以依工作负载、堆积量和/或需求为基础来执行。也就是说,当着色操作请求产生时,未在使用中的执行单元(或线程)即可被用来执行该操作。当执行单元(或他们的资源)为不可取得时(例如,已被用来执行运算),系统则可能会对这些执行单元或他们的资源执行更为明智的调度。
在描述完着色器处理系统200的高阶实施例后,其所在环境的实施例描述如下。图3为一个可实现着色器处理系统200的图形处理系统300实施例的方块图。在某些实施例中,图形处理器系统300可配置成为一个计算机系统。图形处理器系统300可包含一个由显示接口单元(display interfaceunit,以下简称DUI)304所驱动的显示装置302以及区域存储器(localmemory)306(其可含有显示缓冲器、纹理缓冲器、指令缓冲器、画帧缓冲器等等)。区域存储器306也可与画帧缓冲器或储存单元替换称呼。区域存储器306通过一或多个存储器接口单元(memory interface unit,以下简称MIU)310耦接至图形处理单元(GPU)214。在一实施例中,MIU 310、GPU 214和DIU 304皆耦接至与外围元件快速互连(以下简称PCI-E)兼容的总线接口单元(bus interface unit,以下简称BIU)318。在其中一个实施例中,BIU318可利用一个图形地址重映表(graphics address remapping table,GART),而其它存储器重映机制也可在其它实施例中被使用。GPU 214包括了着色器处理系统200。尽管本实施例中着色器处理系统显示为GPU214的一个组件,着色器处理系统200可包含图形处理系统300内一或多个其它的或不同的组件。
BIU 318耦接至芯片组322(例如北桥芯片组)或切换器。芯片组322包括接口电子装置用以增强从中央处理单元(CPU)326(在此也可称为主机处理器)来的信号,以及将往返于系统存储器324的信号与往返于输入/输出(I/O)装置(未显示)的信号分离。虽然本发明使用PCI-E总线通讯协议,其余的连接及/或通讯方式可在其它实施例中使用于中央处理器326和GPU214间(例如:PCI、私有(proprietary)高速总线...等)。系统存储器324也包括驱动软件328,其用以通过CPU 326将命令组或指令传递至GPU 214的寄存器。
除此之外,额外的图形处理单元也在其它的实施例中通过PCI-E总线通讯协议通过芯片组322耦接至图3的组件中。在其中一个实施例中,图形处理系统300可能包含图3内所有组件,而在其它实施例中,也可能包含比图3较少或不同甚或较多(例如耦接到芯片组322的南桥芯片组)的组件。
图4显示图3中一实施例的GPU 214内部分组件的方块图。虽然图4的没有显示出图形处理机制的所有组件,但是所绘示的组件应足以使本领域技术人员了解与此图形处理器相关的功能及结构。在此可编程处理环境的中心为一个多成执行单元运算核心202,负责处理不同的指示,并包括分散在执行单元内的着色器处理系统的至少一部分。不同类型的着色器可被执行或对应至该运算核202,包含顶点着色器401、几何着色器403和像素着色器405。在其中一个实施例中,着色器逻辑单元包含运算核心202内一或多个执行单元以及顶点着色器401、几何着色器403和像素着色器405之中的一或多个。对多重发布(multi-issue)的处理器而言,运算核心202能在一个频率周期(clock cycle)内处理多重指令。
如同图4所示,GPU 214的相关组件包括运算核心202、纹理过滤单元402、像素封装器(pixel packer)404、命令流处理器406、写回(write-back)单元408、纹理地址产生器410。在其中一个实施例中,纹理管线204(如图2所示)包含纹理过滤单元402、纹理地址产生器410、以及其它未显示的控制器与高速缓存,详述如下。图4还包含执行单元(以下简称EU)池控制单元414,其包含一个顶点高速缓存及/或一个串流高速缓存(stream cache)。在某些实施例中,运算核心202和EU池控制单元414的一些或全部功能可被结合成单一单元(例如运算核心202可能包含EU池控制单元的部分或全部功能)。
运算核心202从多个组件接收输入,并输出至其它组件。例如如图4所示,纹理过滤单元402包含纹理管线204的一部分输出,提供纹理像素(Texel)数据至运算核心202的执行单元线程寄存器(输入A、B)。在其它实施例中,纹理数据以512位数据方式提供,不过并不限于此方式。像素封装器404提供像素着色器(PS)输入至运算核心202(输入C、D),同样以512位数据方式。此外,像素封装器404向EU池控制单元414请求新的像素着色器工作(例如当新的像素群组到达像素封装器404以在着色器单元做进一步处理时),而EU池控制单元414提供所指定的执行单元辨识子(例如数字)和线程辨识子(例如数字)至像素封装器404。关于像素封装器404更详细的功能信息可以在USPN 2005/0093873和USPN 2005/0093872中找到,在此同时也参考以上两篇。既然纹理过滤单元402为已知技术,就不再赘述。虽然图4的像素和像素封包(packet)为512位数据封包,本领域技术人员应能理解包装的尺寸在不同实施例中可不一,取决于GPU214的效能特性。
命令流处理器406提供三角形顶点索引至EU池控制单元414。在图4的实施例中,分别传送8组32位的索引,总共有256位。EU池控制单元414从串流高速缓存收集顶点着色器的输入,并传送数据至运算核心202(输入E)。EU池控制单元414也同时收集几何着色器输入并提供这些输入至运算核心202(输入F)。EU池控制单元414还控制一个EU输入502(图5)与一个EU输出504(图5)。换言之,EU池控制单元414控制了运算核心202的输入与输出。
运算核心202提供像素着色器的输出(输出J1、J2)至写回单元408。如已所知,像素着色器的输出包括红/绿/蓝/alpha(R/G/B/A)信息。根据本发明实施例所揭露的数据结构,像素着色器输出可能是两条512位数据串流。当然在某些实施例中,也可使用其它位宽。
与像素着色器输出相似,运算核心202输出包含UVRQ信息的纹理坐标(输出K1、K2)至纹理地址产生器410。纹理地址产生器410包含纹理管线204的输入口。纹理地址产生器410从执行从属纹理读取的执行单元(图5)内对应的着色器逻辑单元接收带有纹理叙述子(T#)的纹理坐标(TC),以及执行单元识别字和线程识别字。纹理地址产生器410发布纹理描述请求(T#Req)至运算核心202(输入X)的一个二级(以下简称L2)高速缓存508,而运算核心202的L2高速缓存508将纹理描述数据(T#数据)及纹理坐标输出至纹理地址产生器410(输出W)。纹理地址产生器410可产生对应于纹理抓取(texture fetch)的地址,并将执行单元识别字与线程识别字传送至纹理抓取通道(图7的区块710)。纹理抓取信道将抓取的纹理数据及执行单元识别字、线程识别字回传给纹理过滤单元402。纹理过滤单元402利用这些信息将纹理像素写入适当的执行单元线程寄存器内。
图形管线412还包括了固定功能逻辑单元(例如包括三角形配置单元(triangle set-up unit,TSU)、跨砖产生器(span-tile generator,STG)...等)。
其它相对于纹理管线204的输入、输出将在图6中做讨论。虽然UVRQ、RGBA以512位方式显示,但对于其它的实施例而言此参数是可以有所不同的。在图4的实施例中,总线分成两条512位信道,每一条信道拥有4个像素的128位RGBA颜色值和128位UVRQ纹理坐标。
运算核心202的L2高速缓存508和EU池控制单元414也相互交换512位顶点高速缓存溢出数据(spill data)。此外,两个512位顶点高速缓存写入从运算核心202输出(输出M1、M2)至EU池控制单元414以利后续控管。
在描述完关于运算核心202和其相关组件间的数据交换后,图5显示在运算核心202内多个组件的区块图。在图中可看到运算核心202含有一个存储器存取单元(memory access unit)506,通过存储器接口仲裁器(memoryinterface arbiter)510耦接至L2高速缓存508。
L2高速缓存508从EU池控制单元414接收顶点高速缓存溢出(vertexcache spill)(输入G),并提供顶点高速缓存溢出(输出H)给EU池控制单元414。此外,L2高速缓存508从纹理地址产生器410接收纹理叙述子请求(输入X),并提供纹理叙述子数据给(输出W)纹理地址产生器410,以响应所接收到的请求。
存储器接口仲裁器510提供一个控制接口给区域图像存储器(localvideo memory)(例如位于区域存储器306内的画帧缓冲器)。举例来说,BIU318通过一个PCI-E总线提供接口给系统。存储器接口仲裁器510和BIU 318提供接口给存储器306和L2高速缓存508之间。在某些实施例中,L2高速缓存508通过存储器存取单元506连接至存储器接口仲裁器510和BIU 318。存储器存取单元506将L2高速缓存508和其它区块的虚拟存储器地址转化成物理(physical)存储器地址。
存储器接口仲裁器510提供存储器存取(例如读/写存取)给L2高速缓存508,例如指令/内容/数据/纹理的抓取、直接存储器存取(例如加载(load)/储存)、暂时储存存取的索引、寄存器溢出(register spill)、顶点高速缓存内容溢出等等。
运算核心202也包含执行单元池514,执行单元池514内有多个执行单元(EU)520a-520h(在此合称或可分别称为520,除非以下有特别的区分目的)。在一个实施例中,着色器处理系统200至少有某一部分是实现于每个执行单元520之中。也就是说,在部分实施例中,着色器处理系统200包含每一个执行单元520与其它组件,例如纹理管线204(图2)、EU池控制单元414的逻辑单元...等。每一个执行单元520皆可在一个频率周期内处理多重指令。因此,EU池514在其峰值(peak)时,可同时处理多重线程。EU池514的这些执行单元520和其同时协力的处理能力,将详述如下。虽然图5的实施例有8个执行单元520(EU0-EU7),但实际数目并不限于8,可依情况有所增减。
运算核心202还包含EU输入502和EU输出204,分别用来提供输入至EU池514和接收从EU池514的输出。EU输入502和EU输出504可为交错闩(crossbar)、总线或其它已知的输入机制。
EU输入502从EU池控制单元514接收顶点着色器输入(输入E)和几何着色器输入(输入F),并提供此信息给EU池514好让不同的执行单元520处理。此外,EU输入502还接收像素着色器输入(输入C、D)和纹理像素封包(输入A、B),并传送这些封包至EU池514好让不同的执行单元520处理。EU输入502也从L2高速缓存508(L2读取)接收信息,并依需要提供给EU池514。
图5实施例的EU输出504分成偶输出504a和奇输出504b。相似于EU输入502,EU输出504可为交错闩、总线或其它结构。EU偶输出504a处理偶数EU520a、520c、520e、520g的输出,而EU奇输出504b就处理奇数EU520b、520d、520f、520h的输出。总归来说,这两个EU输出504a、504b接收从EU池514来的输出,例如UVRQ和RGBA。这些输出可被指回L2高速缓存508,或从运算核心202通过端口J1、J2输出至写回单元408或通过端口K1、K2输出至纹理地址产生器410。
在进一步描述EU池514的执行单元520之前,有关图2、4、5结构背景下执行单元流程的简短总结如下。EU池514与EU池控制单元414(此处EU池514与EU池控制单元414可合称为EU池控制逻辑单元)的执行单元流程一般包括几个层级:绘制内文层级(rendering-context level)、线程或工作层级,以及指令或执行层级。在属于绘制内文的工作开始之前,此绘制内文信息会从EU池控制逻辑单元传递至特定的执行单元520。举例来说,绘制内文信息可包括着色器类型、输入/输出寄存器的数量、指令起始地址、输出对应表、顶点识别字和在对应的常数缓冲器(constant buffer)内的常数。每一个执行单元520可同时储存多个工作或线程(例如32条线程)。每一条线程根据程序计数器(program counter)抓取指令。EU池控制单元414将一条线程指定至对应的执行单元520内的某一空线程槽。在线程开始后,由顶点高速缓存或其它组件、模块(依据着色器类型)所提供的数据就被放在公共寄存器文件或缓冲器(详述如下)中。
一般而言,运算核心202利用可编程的顶点着色器401、几何着色器403、像素着色器405(在某些实施例中,这些着色器可共享相同的指令组外加部分依需要而定的指令。)。与其将这些组件的功能以设计与指令集不同、各自独立的固定功能着色器来实现,本发明的这些操作是由EU池单元520a-520h利用统一的指令组所执行。在设计上每一个执行单元520皆为相同的,并且可针对可操作来编程。在一实施例中,每一个执行单元520都可同时执行多重线程。由顶点着色器401、几何着色器403和像素着色器405所产生的不同着色工作,皆被传送至对应的执行单元520。
随着产生不同的工作,EU池控制单元414处理这些工作将其指定至各执行单元520内的空闲线程。在完成工作后,EU池控制单元414还管理相关线程的释出。EU池控制单元414负责将顶点着色器、几何着色器、像素着色器的工作指定给各个执行单元520的线程,并记录相关的工作和线程。更明确地说,EU池控制单元414为所有执行单元520维持线程和存储器的资源表(未特别绘示)。EU池控制单元414特别确认哪一条线程已被指定工作并被占据、哪一条线程已结束并被释出、有多少公共寄存器文件存储器寄存器被占据、及每一个执行单元还有多少可用空间。
于是,当一个工作被指派给一个执行单元(例如520a)时,EU池控制单元414就会将该线程标示为忙碌,并将全部可用的公共寄存器存储器减去针对每一条线程的寄存器文件使用量(footprint)的适当数量。使用量是根据顶点着色器401、几何着色器403、像素着色器405的状态来判定。甚者,每一个着色器类型或阶段(stage)都可能具备不同大小的使用量。例如,顶点着色器线程可能需要10个公共寄存器文件,而像素着色器线程可能仅需5个这样的寄存器。
当线程完成了所指定的工作时,运作这条线程的执行单元520就传送一个适当的信号至EU池控制单元414。EU池控制单元414就会更新资源表,并标记该条线程为空闲,以及将被释放的寄存器文件空间加回总线程公共临时文件空间的可用空间。当所有线程都为忙碌或所有公共寄存器文件存储器皆已被配置时(或者当剩下的寄存器空间过小而无法负载额外的线程时),执行单元520就被认定为满载状态,而EU池控制单元414就不会再指定任何线程至该执行单元。
线程控制器(图6的区块606)可被包含在每一个执行单元520内,并负责管理或标示每一条线程的状态为执行中或空闲。
在上述环境的背景下,接着是对于执行单元520a的实施例的描述,以及纹理管线204包含着色器处理系统200的实施例。图6绘示一个执行单元520a内部分组件的方块图,其它的执行单元520也包含相似的功能与结构。执行单元520a包含指示高速缓存控制器604、线程控制器606、常数缓冲器608、公共寄存器文件(common register file,以下简称CRF)610、EU数据路径(以下简称EUDP)612、EUDP FIFO缓冲器614、述词寄存器文件(predicateregister file,以下简称PRF)616、纯量寄存器文件(scalar register file,以下简称SRF)618、数据输出控制器(data out controller)620以及线程工作接口624。执行单元520a从EU输入502接收输入,并提供输出至EU输出504。
线程控制器606对整个执行单元520a提供控制功能,包括管理每一条线程及决策功能(例如判定线程要如何被执行)。EUDP 612包含执行不同计算功能的逻辑单元,例如浮点(floating point)逻辑单元、整数算数逻辑单元(arithmetic logic unit,ALU)、移位逻辑单元(shift logic),等等。
数据输出控制器620有将处理结束的数据移至连接于EU输出504的特定组件的功能,例如顶点高速缓存414、写回单元408等等。EUDP 612将「工作结束」的信息传递至数据输出控制器620,以示意工作的完成。数据输出控制器620包含「已完成的工作」的储存空间(例如32个输入)以及数个写入端口(write port)。数据输出控制器620从储存空间选出工作,并根据着色器内文从CRF 610读取寄存器位置的所有输出数据,再传送数据至EU输出504。线程工作接口624将已在执行单元520a内完成的工作识别字传送至EU池控制单元414。也就是说,工作识别字可供EU池控制单元414辨识在特定执行单元(例如520a)的线程资源为闲置的且可指派新工作。
于本发明的一个实施例中,常数缓冲器608可分成16个区块,每一个区块有16个槽,每个槽内有128位水平向量常数。着色器可利用运算子(operand)和索引(index)存取一个常数缓冲槽,其中索引可为暂时寄存器的内容,例如一个32位无正负整数或32位立即无正负整数常数(immediate unsignedinteger constant)。
指令高速缓存控制器604是线程控制器606的一个接口。当有线程控制器读取请求时(例如从指令存储器抓取可执行的着色器代码),指令高速缓存控制器604就会通过查询标签表(tag table)(未显示)来执行命中/未命中(以下简称hit/miss)检定。命中(hit)表示请求的指令已在指令控制器604的高速缓存内;未命中(miss),正要从L2高速缓存508或存储器306抓取所请求的指令。在一个实施例中,当命中发生时,倘若无其它来自EU输入502的请求的话,指示高速缓存控制器604就同意该请求;这是因为指示高速缓存控制器604的指示高速缓存有1RW端口的限制,而EU输入502拥有较高的优先权。相反地,未命中发生的情况是,当L2高速缓存508内有可替代区块,且搁置请求EUDP FIFO缓冲器614尚有空间时,则指令高速缓存控制器604会同意该请求。在一个实施例中,指令高速缓存控制器604的高速缓存内有32组,一组4区块。每一个区块带有一个2位的状态信号,用以表示无效(invalid)、加载中(loading)、有效(valid)这3态。一个区块在加载2数据前为「无效」,当等待L2数据时为「加载中」,加载L2数据后为「有效」。
述词寄存器文件(predicate register file,PRF)616是从EUDP 612被读出和写入。EU输入502作为数据进入执行单元520a的接口。在一个实施例中,EU输入502包括一个8条目(8-entry)的FIFO缓冲器用来缓冲进来的数据。EU输入502也有将数据传递至指令高速缓存控制器604的指令高速缓存和常数缓冲器608的功能。EU输入502同时也维持着色器内文(shadercontext)。
EU输出504是从执行单元520a输出数据至顶点高速缓存414、L2高速缓存508和写回单元408的接口。在一个实施例中,EU输出504包含一个4条目的FIFO缓冲器用来接收被仲裁的请求,以及用来替EU池控制单元414缓冲数据。EU输出504还有许多功能,例如仲裁来自指令高速缓存的读取请求、数据外部写入请求(data out write request)的请求和EUDP写入/读取请求的请求。
CRF 610被用来储存输入、输出和暂时数据。在一个实施例中,CRF 610包含带有一个128×128位寄存器文件的1R+1W和1RW端口的8储存组(banks)。该1R+1W端口被EUDP 612用于因指令执行衍生的读取和写入存取。储存组0、2、4、6被偶数线程共享,储存组1、3、5、7被奇数线程共享。线程控制器606对来自不同线程的指示作配对,并确保CRF存储器不会有读取或写入储存组的冲突存在。
1RW端口被EU输入502和数据输出控制器620用来加载初始的线程输入数据和将最终线程输出写入至EU池控制单元数据缓冲、L2高速缓存514或其它模块。EU输入502和EU输出504共享1RW输入/输出(I/O)端口,在一实施例中写入的优先权高于读取。当将数据加载CRF 610时,此512位的输入数据会进入4个不同的储存组以避免冲突,伴随输入数据的还有2位的信道索引与512位的排列基准地址(aligned base address)以识别输入数据的起始储存组。举例来说,若假设线程基准的储存组偏移量为0,起始信道索引为1,则从最低有效位(lea stsignificant bit,LSB)起算的第一批次128位就被加载储存组1,下一批次则进入储存组2...依此类推,最后是储存组0。值得注意的是,线程识别的两个LSB皆被用来产生储存组偏移,以使每一个线程的起始储存组位置随机化。
线程辨识子以及CRF寄存器索引可被用来建构一个独特的逻辑地址,用于CRF610读/写数据时的卷标配对(tag match)。例如,地址可排成128位,也就是CRF储存组的宽度。可以利用CRF寄存器索引的8位和线程辨识子的5位来产生独特的13位地址。每一条1024位线都有卷标,而每一条在线都有2个512位条目(字(word))。每个字都跨存于4个储存组,且CRF的2位LSB都被加入当前线程的储存组偏移内以产生储存组选择。
基于EU池控制单元414记录了CRF610的存储器使用状况,且确保在添加新的工作至执行单元520a之前有足够的空间,标签配对架构允许不同线程的寄存器共享CRF610以达到存储器的良好运用。
对于当前的线程,目的CRF索引会与CRF寄存器的尺寸做比对。在线程控制器606开始该条线程以及着色器执行之前,输入数据被预期应该已存在CRF 610内。而在线程执行结束后,数据输出控制器620就会从CRF 610读取输出数据。
虽然EU池控制单元414自行根据工作指派信息来计算执行单元520a可以运行多少条线程(等同于一批次(batch)的尺寸),每一个顶点着色器、几何着色器、像素着色器的每一条线程的总线程储存容量则是由编译器(例如GPU编译器)所提供。EU池控制单元414的调度功能可以用来作为记录(bookkeeping)。顶点着色器、几何着色器、像素着色器间的工作调度和负载平衡由EU池控制单元414所控制,且在执行期间为随机,并取决于EU池控制单元414的调度器指派多少工作(线程)至每一个执行单元520a(例如顶点着色器、几何着色器、像素着色器的线程的尺寸可能都不同)。由于多重着色器阶段(也就是顶点着色器、几何着色器、像素着色器的阶段)内的动态负载平衡与共享统一着色器单元的特性,通过软件计算一批次(batch)的大小就显得更为复杂且困难。既然这些着色器阶段可共享执行单元520和纹理管线204,顶点着色器、几何着色器、像素着色器工作的数量与纹理请求模式(pattern)之间的比例在硬件运作期间的任一特定时间点为完全或实质上地随机。因此软件无法如同具有固定功能单元的已知系统一般可在编译期间做任何配置。
以上已描述过包含先前一或多个实施例的着色器处理系统200的至少一部分的执行单元520a,图7的方块图描绘了着色器处理系统200的一个实施例,此实施例在此称为着色器处理系统200a。尽管在此只有显示一个执行单元520(例如EU520a),然而本领域技术人员应可理解事实上可以利用EU池514内的多个执行单元520。请连带参考图6,本实施例的着色器处理系统200a包括执行单元逻辑单元700(例如EU池控制逻辑单元)和纹理管线204。执行单元逻辑单元700包含数据路径单元702(例如对应至每一个执行单元520的EUDP 612)、仲裁单元704(此处也为仲裁逻辑单元)、线程控制槽或状态寄存器706(例如线程控制器606的线程0状态寄存器、线程1状态寄存器...等)、公共寄存器文件(CRF)610(例如储存着色器暂存档CRF610、PRF616和SRF618中与运算相关的数据)。纹理管线204包括纹理抓取与过滤单元710(此处也为纹理抓取通道);其中纹理抓取与过滤单元710包含纹理过滤单元402(图4)、纹理抓取延迟FIFO缓冲器712和纹理地址产生器410(图4)。
在一个实施例中,在从属纹理读取的操作期间,执行单元逻辑单元700的状态寄存器706内有一部分信息包含程序计数器714、一或多个状态寄存器706的内容、对应于一或多个现行或延迟的线程的堆栈指针(stackpointer)718。此外在从属纹理读取操作期间执行单元逻辑单元700还包含与从属纹理读取相关并储存于CRF610的计算信息。
在一或多个着色器指令的执行期间,从属纹理请求通常产生于数据路径单元702内。数据路径单元702通知仲裁单元704搁置现行的线程,并起始线程辨识子和执行单元辨识子(EU#)的传送以导引纹理数据,并作为对应于发给纹理抓取延迟FIFO缓冲器712的线程启动请求的回传地址。数据路径单元702传送纹理坐标和纹理描述字至纹理抓取与过滤单元710,而纹理抓取与过滤单元710根据上述机制提供纹理数据至CRF 610。在CRF 610接收到纹理数据的时候,仲裁单元704从纹理抓取延迟FIFO缓冲器712接收线程启动请求,以移除线程的闲置状态。
根据上述从属纹理读取操作的结构与功能,任何本领域技术人员应该可以理解图8的着色器处理方法200b的实施例。着色器处理方法200b包含自用来执行对应于第一线程的着色器运算的逻辑单元(例如执行单元逻辑单元700)产生一个从属纹理读取请求(步骤802);通知仲裁逻辑单元(例如仲裁单元704)以搁置该第一线程(步骤804);传送对应于该第一线程的与着色器运算和纹理取样相关的参数至纹理管线204,同时保存前述逻辑单元700内对应于该第一线程的所有其它与着色器处理相关的信息(步骤806);从纹理管线204接收纹理数据(步骤808);从纹理管线204接收线程启动请求(步骤810);移除该第一线程的搁置以响应线程启动请求(步骤812);利用纹理数据执行该第一线程(步骤814)。
在一个实施例中,与着色器运算和纹理取样相关的参数包括执行单元识别字、线程识别字、纹理坐标、纹理描述字和纹理管线204的述词像素屏蔽。执行单元识别字和线程识别字用来作为取样请求(sample request)的回传地址。其它停留或保存在执行单元逻辑单元700内的着色器处理信息包括与绘制内文(rendering-context)相关的信息,例如程序计数器、堆栈指针、堆栈、线程状态寄存器和着色器寄存器的内容。举例而言,这些其它信息可被储存于一或多个线程状态寄存器706和CRF 610内。CRF 610可为一或多个线程储存CRF 610内一或多个剩余暂时寄存器、SRF 618的纯量寄存器、PRF 616的述词寄存器的内容,以及常数索引(indexing constant)和暂时寄存器存取所用的地址寄存器的内容。这些寄存器可包含与运算相关的数据。线程状态寄存器706可为一或多个线程储存程序计数器(PC)714、状态寄存器716和执行单元520内的每一条线程的堆栈指针718的内容。应注意的是有些状态寄存器直接被配置在线程控制器606,及/或在任何寄存器文件的预先定义位置内。
根据以上描述,任何一个本领域技术人员应可轻易理解图9较简要的着色器处理方法实施例200c。着色器处理方法实施例200c包括自用来执行对应至第一线程的着色器运算的逻辑单元(例如执行单元逻辑单元700)产生一个从属纹理读取请求(步骤902);传送对应于该第一线程的与着色器运算和纹理取样相关的参数至纹理管线204,同时保存前述逻辑单元700内对应于该第一线程的所有其它与着色器处理相关的信息(步骤904);从纹理管线204接收纹理数据(步骤906);利用纹理数据执行该第一线程(步骤908)。
在图8、9中的任何描述与方块应被理解为表示包含用以实现处理过程中特定逻辑功能或步骤的一或多个可执行的指令的程序码的模块、片段或部分,而替代的实施方式也被纳入本发明实施例的范围内,其中的功能不一定需按照所示的顺序执行,本领域技术人员也可依功能而以目前实质上依序或反序的方式。此外,尽管在此提出示范性的脉络,但应了解此处所描述的不同方式并非用来限定于这些结构,其它结构亦可适用这些实施例的方法。
如上述,着色器处理系统200(例如,包含着色器处理系统200a和方法200b、200c)可实施为硬件、软件、固件或以上的组合。在某些实施例中,着色器处理系统200是实现于硬件及固件中,包含以下熟知技术的组合:具有针对数据信号而实现逻辑功能的逻辑门的离散逻辑电路、具备适当逻辑门组合的特殊用途集成电路(application specific integrated circuit,ASIC)、可编程门阵列(programmable gate array,PGA)、场可编程门阵列(fieldprogrammable gate array,FPGA)...等。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,于不脱离本发明的精神和范围内,当可做各种的更动与润饰,故本发明的保护范围当视所附的权利要求范围所界定者为准。

Claims (17)

1.一种在多重线程的图形处理单元中执行从属纹理读取的方法,包括:
从用以执行着色器运算的执行单元逻辑单元产生与第一线程相关的一个从属纹理读取请求;
传送对应于该第一线程的与着色器运算和纹理取样相关的多个参数以及该执行单元逻辑单元的识别字至纹理管线;
从该纹理管线接收对应于该从属纹理读取的纹理数据至该执行单元逻辑单元;以及
利用该纹理数据在该执行单元逻辑单元内执行该第一线程。
2.根据权利要求1所述的方法,其中接收该纹理数据的步骤还包括储存该纹理数据连同该第一线程的识别字至该执行单元逻辑单元的一个寄存器文件。
3.根据权利要求1所述的方法,其中产生该从属读取请求的步骤还包括从该执行单元逻辑单元中用以对该纹理数据执行各种运算的一个数据路径单元产生该从属纹理读取请求。
4.根据权利要求1所述的方法,其中与着色器运算及纹理取样相关的该些参数还包括平行运算系统中的一或多个执行单元的识别字、线程识别字、述词像素屏蔽、一或多个纹理坐标和一纹理描述子。
5.根据权利要求1所述的方法,还包括保持该执行单元逻辑单元中对应于该第一线程的所有与着色器处理相关的其它信息,其中与着色器处理相关的该其它信息包括程序计数器、堆栈指针、对应于像素着色器的工作序号识别字、对应于顶点着色器和几何着色器的目标顶点快取线地址、以及公用临时文件、一或多个纯量寄存器、一或多个述词寄存器与一或多个地址寄存器其中的一或多个暂时寄存器的内容。
6.根据权利要求1所述的方法,还包括由该执行单元的一个仲裁逻辑单元搁置该第一线程以响应该从属读取请求。
7.根据权利要求6所述的方法,还包括从该纹理管线接收线程启动请求至该仲裁逻辑单元以响应该纹理数据的接收。
8.根据权利要求7所述的方法,还包括解除该第一线程的搁置以响应该线程启动请求。
9.一种着色器处理系统,包含:
执行单元逻辑单元,存在于图形处理单元的多重线程的平行运算核心中,该执行单元逻辑单元用来执行对应于第一线程的着色器计算,该执行单元逻辑包含:
数据路径单元,用来产生与该第一线程相关的从属读取请求,以及
公共寄存器文件,用来接收对应于该从属读取请求的纹理数据;以及
纹理管线,用来自该执行单元逻辑单元接收对应于该第一线程的与着色器运算和纹理取样相关的多个参数以响应该从属读取请求,该纹理管线包含先进先出缓冲器用来接收执行单元识别字与线程识别字以提供该纹理数据。
10.根据权利要求9所述的着色器处理系统,其中该执行单元逻辑单元还被用来储存对应于该第一线程的所有与着色器处理相关的其它信息。
11.根据权利要求9所述的着色器处理系统,其中该数据路径单元还被用来利用该纹理数据执行该第一线程。
12.根据权利要求9所述的着色器处理系统,其中该执行单元逻辑单元还包含一或多个第一线程状态寄存器,该执行单元逻辑单元从该第一线程状态寄存器传送与着色器运算和纹理取样相关的该其它参数,其中该其它参数包含该平行运算核心的执行单元的线程识别字、述词像素屏蔽、一或多个纹理坐标以及一纹理描述子之中的一或多个。
13.根据权利要求9所述的着色器处理系统,其中该执行单元逻辑单元还包含用来储存与着色器处理相关的其它信息的一或多个第二线程状态寄存器,该其它信息包含程序计数器、堆栈指针、对应于像素着色器的工作序号识别字、对应于顶点着色器及几何着色器的目标顶点快取线地址、以及公共寄存器文件、一或多个纯量寄存器文件、一或多个述词寄存器文件与一或多个地址寄存器文件其中之一或多个暂时寄存器的内容。
14.根据权利要求9所述的着色器处理系统,其中该执行单元逻辑单元还包含仲裁逻辑单元,用来接收来自该数据路径逻辑单元的信号以搁置该第一线程,以响应该从属读取请求。
15.根据权利要求14所述的着色器处理系统,其中该纹理管线还包括纹理抓取及过滤单元,用来从该执行单元逻辑单元接收一或多个纹理坐标与一纹理描述子,并于该第一线程搁置期间提供纹理数据至该执行单元逻辑单元的该公共寄存器文件。
16.根据权利要求14所述的着色器处理系统,其中该先进先出缓冲器在该第一线程搁置期间还用来接收该执行单元识别字及该线程识别字,并接续提供线程启动请求以解除该第一线程的搁置。
17.根据权利要求14所述的着色器处理系统,其中该仲裁逻辑单元还用来接收线程启动请求以回复该第一线程的搁置。
18.根据权利要求17所述的着色器处理系统,其中该仲裁逻辑单元还用来解除该第一线程的搁置,以响应该线程启动请求。
19.一种图形处理单元,包括:
多重线程的平行运算核心,包括多个执行单元,该等执行单元的每一个包括:
执行单元逻辑单元,包括:
数据路径单元,用来执行对应于第一线程的一或多个着色器运算,该数据路径单元还被用来产生对应于该第一线程的从属纹理读取请求;
仲裁逻辑单元,用来从该执行单元逻辑单元的该数据路径单元接收信号,以搁置该第一线程;
一或多个线程状态寄存器,用以储存与着色器运算和纹理取样相关的一或多个参数,以及与着色器处理相关的其它信息;以及
公共寄存器文件,用以接收纹理数据;以及
纹理管线,包含:
先进先出缓冲器,用来于该第一线程搁置期间接收执行单元识别字及一线程识别字,并提供线程启动请求以解除该第一线程的搁置;以及
纹理抓取和过滤器单元,用以于该第一线程搁置期间从该线程状态寄存器接收该纹理坐标与一纹理描述子,并提供该纹理数据至该公共寄存器文件,
其中,该执行单元逻辑单元用以传送对应于该第一线程的与着色器运算和纹理取样相关的该参数至该纹理管线,同时保持该线程状态寄存器中对应于该第一线程的与着色器处理相关的该其它信息。
CN2008101780132A 2007-12-06 2008-12-08 着色器处理系统与方法 Active CN101425175B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/951,867 2007-12-06
US11/951,867 US8174534B2 (en) 2007-12-06 2007-12-06 Shader processing systems and methods

Publications (2)

Publication Number Publication Date
CN101425175A true CN101425175A (zh) 2009-05-06
CN101425175B CN101425175B (zh) 2012-03-21

Family

ID=40615770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101780132A Active CN101425175B (zh) 2007-12-06 2008-12-08 着色器处理系统与方法

Country Status (3)

Country Link
US (1) US8174534B2 (zh)
CN (1) CN101425175B (zh)
TW (1) TWI428852B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937556A (zh) * 2009-06-29 2011-01-05 英特尔公司 纹理采样
CN102135916A (zh) * 2010-10-15 2011-07-27 威盛电子股份有限公司 同步方法以及图形处理系统
CN102549547A (zh) * 2009-10-09 2012-07-04 微软公司 纹理的自动运行时标识
CN102576470A (zh) * 2009-10-09 2012-07-11 微软公司 用于纹理获取装载的自动实时着色器修改
CN102598061A (zh) * 2009-09-03 2012-07-18 先进微装置公司 具有多个着色器引擎的处理单元
CN103608848A (zh) * 2011-06-17 2014-02-26 超威半导体公司 使用着色器处理器的实时片上纹理解压缩
CN104050627A (zh) * 2013-03-15 2014-09-17 英特尔公司 线程机制的条件结束
CN104915191A (zh) * 2014-03-14 2015-09-16 英特尔公司 图形处理器中的连接组件标记
CN105118089A (zh) * 2015-08-19 2015-12-02 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置
CN105321142A (zh) * 2014-06-27 2016-02-10 英特尔公司 经由计算流水线进行的采样、错误管理和/或上下文切换
CN106415492A (zh) * 2014-05-30 2017-02-15 苹果公司 用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器
CN106537460A (zh) * 2014-08-15 2017-03-22 英特尔公司 针对多阶段像素着色的自动划分技术
CN107111890A (zh) * 2014-10-17 2017-08-29 高通股份有限公司 使用基于点积的固定功能逻辑的光线‑盒相交测试
CN108804219A (zh) * 2017-04-28 2018-11-13 超威半导体公司 多计算核中的灵活着色器导出设计
CN110050294A (zh) * 2016-12-22 2019-07-23 超威半导体公司 对压缩资源的着色器写入
CN110494837A (zh) * 2017-04-07 2019-11-22 微软技术许可有限责任公司 使用高优先级队列进行墨水渲染
CN111913816A (zh) * 2020-07-14 2020-11-10 长沙景嘉微电子股份有限公司 Gpgpu中簇的实现方法、装置、终端及介质

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162615B1 (en) * 2000-06-12 2007-01-09 Mips Technologies, Inc. Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch
US8111259B1 (en) 2006-07-06 2012-02-07 Marvell International Ltd. Image processing apparatus having context memory controller
US9177368B2 (en) * 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8654134B2 (en) * 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US8514233B2 (en) * 2009-01-23 2013-08-20 Advanced Micro Devices, Inc. Non-graphics use of graphics memory
TWI401602B (zh) 2009-07-06 2013-07-11 Nat Univ Tsing Hua 處理器之使用暫存器檔案的溢出方法
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8607234B2 (en) * 2009-07-22 2013-12-10 Empire Technology Development, Llc Batch scheduling with thread segregation and per thread type marking caps
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8624910B2 (en) * 2009-09-23 2014-01-07 Nvidia Corporation Register indexed sampler for texture opcodes
US8619087B2 (en) * 2009-10-06 2013-12-31 Nvidia Corporation Inter-shader attribute buffer optimization
US8643655B2 (en) * 2009-11-12 2014-02-04 Nvidia Corporation Method and system for communicating with external device through processing unit in graphics system
GB2478909B (en) * 2010-03-19 2013-11-06 Imagination Tech Ltd Demand based texture rendering in a tile based rendering system
US8514232B2 (en) * 2010-06-28 2013-08-20 International Business Machines Corporation Propagating shared state changes to multiple threads within a multithreaded processing environment
US8587602B2 (en) 2010-08-16 2013-11-19 Microsoft Corporation GPU texture tile detail control
WO2012147364A1 (en) * 2011-04-28 2012-11-01 Digital Media Professionals Inc. Heterogeneous graphics processor and configuration method thereof
US20130042080A1 (en) * 2011-08-12 2013-02-14 Samsung Electronics Co., Ltd. Prevention of race conditions in library code through memory page-fault handling mechanisms
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
KR20130123645A (ko) * 2012-05-03 2013-11-13 삼성전자주식회사 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
US9652815B2 (en) 2012-09-11 2017-05-16 Nvidia Corporation Texel data structure for graphics processing unit programmable shader and method of operation thereof
US9881391B2 (en) 2013-10-02 2018-01-30 Microsoft Technology Licensing, Llc Procedurally defined texture maps
CN103995725B (zh) * 2014-04-24 2018-07-20 深圳中微电科技有限公司 在cpu上执行像素着色器的程序转换方法及装置
US9881351B2 (en) 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
US9786026B2 (en) 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
CN104933752B (zh) * 2015-06-29 2018-08-07 上海兆芯集成电路有限公司 一种计算机系统、图形处理单元及其图形处理方法
CN105513003B (zh) * 2015-12-11 2018-10-26 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器统一染色器阵列体系结构
US10387988B2 (en) * 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10089708B2 (en) * 2016-04-28 2018-10-02 Qualcomm Incorporated Constant multiplication with texture unit of graphics processing unit
US10360034B2 (en) * 2017-04-18 2019-07-23 Samsung Electronics Co., Ltd. System and method for maintaining data in a low-power structure
US10552321B2 (en) 2017-08-04 2020-02-04 Microsoft Technology Licensing, Llc Flexible buffer sizing in graphics processors
US10580151B2 (en) * 2017-12-05 2020-03-03 Qualcomm Incorporated Tile-based low-resolution depth storage
KR20190090614A (ko) * 2018-01-25 2019-08-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN108958921B (zh) * 2018-07-19 2023-06-20 南京军微半导体科技有限公司 Gpu中一种染色片段调度管理的硬件加速实现方法
CN110223214B (zh) * 2019-06-10 2023-04-11 西安芯瞳半导体技术有限公司 一种降低纹理单元访问量的方法、装置及计算机存储介质
US11551398B2 (en) * 2019-11-15 2023-01-10 Advanced Micro Devices, Inc. Light volume rendering
CN110930493A (zh) * 2019-11-21 2020-03-27 中国航空工业集团公司西安航空计算技术研究所 一种gpu纹素并行获取方法
CN113345067B (zh) * 2021-06-25 2023-03-31 深圳中微电科技有限公司 一种统一渲染方法、装置、设备和引擎

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9011743D0 (en) 1990-05-25 1990-07-18 Plessey Telecomm Data element switch
US5361385A (en) * 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
US5949424A (en) * 1997-02-28 1999-09-07 Silicon Graphics, Inc. Method, system, and computer program product for bump mapping in tangent space
JP4228455B2 (ja) * 1999-03-04 2009-02-25 株式会社セガ 画像処理方法及び画像処理装置
US6731296B2 (en) * 1999-05-07 2004-05-04 Broadcom Corporation Method and system for providing programmable texture processing
US6392655B1 (en) * 1999-05-07 2002-05-21 Microsoft Corporation Fine grain multi-pass for multiple texture rendering
US6437788B1 (en) * 1999-07-16 2002-08-20 International Business Machines Corporation Synchronizing graphics texture management in a computer system using threads
US6456291B1 (en) * 1999-12-09 2002-09-24 Ati International Srl Method and apparatus for multi-pass texture mapping
US6433789B1 (en) * 2000-02-18 2002-08-13 Neomagic Corp. Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine
US6724394B1 (en) * 2000-05-31 2004-04-20 Nvidia Corporation Programmable pixel shading architecture
US6784895B1 (en) * 2000-10-17 2004-08-31 Micron Technology, Inc. Programmable multiple texture combine circuit for a graphics processing system and method for use thereof
US6850244B2 (en) * 2001-01-11 2005-02-01 Micron Techology, Inc. Apparatus and method for gradient mapping in a graphics processing system
US6781588B2 (en) * 2001-09-28 2004-08-24 Intel Corporation Texture engine memory access synchronizer
US20030076320A1 (en) * 2001-10-18 2003-04-24 David Collodi Programmable per-pixel shader with lighting support
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US6954204B2 (en) * 2002-07-18 2005-10-11 Nvidia Corporation Programmable graphics system and method using flexible, high-precision data formats
US6933945B2 (en) * 2003-03-31 2005-08-23 Sun Microsystems, Inc. Design for a non-blocking cache for texture mapping
US7069387B2 (en) * 2003-03-31 2006-06-27 Sun Microsystems, Inc. Optimized cache structure for multi-texturing
US7038678B2 (en) * 2003-05-21 2006-05-02 Nvidia Corporation Dependent texture shadow antialiasing
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US7245302B1 (en) * 2003-10-30 2007-07-17 Nvidia Corporation Processing high numbers of independent textures in a 3-D graphics pipeline
US6897871B1 (en) * 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7027062B2 (en) * 2004-02-27 2006-04-11 Nvidia Corporation Register based queuing for texture requests
US7454599B2 (en) * 2005-09-19 2008-11-18 Via Technologies, Inc. Selecting multiple threads for substantially concurrent processing
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US7692660B2 (en) * 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US7876329B2 (en) * 2007-09-10 2011-01-25 Via Technologies, Inc. Systems and methods for managing texture data in a computer
US7999819B2 (en) * 2007-11-20 2011-08-16 Via Technologies, Inc. Systems and methods for managing texture descriptors in a shared texture engine

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937556B (zh) * 2009-06-29 2013-09-18 英特尔公司 用于执行纹理采样的方法、装置和系统
CN101937556A (zh) * 2009-06-29 2011-01-05 英特尔公司 纹理采样
CN102598061B (zh) * 2009-09-03 2016-05-04 先进微装置公司 具有多个着色器引擎的处理单元
CN102598061A (zh) * 2009-09-03 2012-07-18 先进微装置公司 具有多个着色器引擎的处理单元
CN102549547A (zh) * 2009-10-09 2012-07-04 微软公司 纹理的自动运行时标识
CN102576470A (zh) * 2009-10-09 2012-07-11 微软公司 用于纹理获取装载的自动实时着色器修改
CN102576470B (zh) * 2009-10-09 2014-12-03 微软公司 用于纹理获取装载的自动实时着色器修改
CN102135916A (zh) * 2010-10-15 2011-07-27 威盛电子股份有限公司 同步方法以及图形处理系统
CN103608848A (zh) * 2011-06-17 2014-02-26 超威半导体公司 使用着色器处理器的实时片上纹理解压缩
US11043010B2 (en) 2011-06-17 2021-06-22 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10510164B2 (en) 2011-06-17 2019-12-17 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN103608848B (zh) * 2011-06-17 2017-03-15 超威半导体公司 使用着色器处理器的实时片上纹理解压缩
CN104050627B (zh) * 2013-03-15 2017-07-21 英特尔公司 线程机制的条件结束
CN104050627A (zh) * 2013-03-15 2014-09-17 英特尔公司 线程机制的条件结束
CN104915191A (zh) * 2014-03-14 2015-09-16 英特尔公司 图形处理器中的连接组件标记
CN104915191B (zh) * 2014-03-14 2019-02-22 英特尔公司 图形处理器中的连接组件标记
CN106415492A (zh) * 2014-05-30 2017-02-15 苹果公司 用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器
US10747519B2 (en) 2014-05-30 2020-08-18 Apple Inc. Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit
CN106415492B (zh) * 2014-05-30 2020-04-07 苹果公司 用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器
CN105321142A (zh) * 2014-06-27 2016-02-10 英特尔公司 经由计算流水线进行的采样、错误管理和/或上下文切换
CN105321142B (zh) * 2014-06-27 2019-04-02 英特尔公司 经由计算流水线进行的采样、错误管理和/或上下文切换
CN106537460A (zh) * 2014-08-15 2017-03-22 英特尔公司 针对多阶段像素着色的自动划分技术
CN106537460B (zh) * 2014-08-15 2019-11-08 英特尔公司 针对多阶段像素着色的自动划分技术
CN107111890A (zh) * 2014-10-17 2017-08-29 高通股份有限公司 使用基于点积的固定功能逻辑的光线‑盒相交测试
CN107111890B (zh) * 2014-10-17 2018-10-30 高通股份有限公司 使用基于点积的固定功能逻辑的光线-盒相交测试
CN105118089B (zh) * 2015-08-19 2018-03-20 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置
CN105118089A (zh) * 2015-08-19 2015-12-02 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置
CN110050294A (zh) * 2016-12-22 2019-07-23 超威半导体公司 对压缩资源的着色器写入
CN110494837A (zh) * 2017-04-07 2019-11-22 微软技术许可有限责任公司 使用高优先级队列进行墨水渲染
CN110494837B (zh) * 2017-04-07 2023-05-02 微软技术许可有限责任公司 使用高优先级队列进行墨水渲染
CN108804219A (zh) * 2017-04-28 2018-11-13 超威半导体公司 多计算核中的灵活着色器导出设计
CN108804219B (zh) * 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计
CN111913816A (zh) * 2020-07-14 2020-11-10 长沙景嘉微电子股份有限公司 Gpgpu中簇的实现方法、装置、终端及介质

Also Published As

Publication number Publication date
CN101425175B (zh) 2012-03-21
TW200926050A (en) 2009-06-16
US8174534B2 (en) 2012-05-08
TWI428852B (zh) 2014-03-01
US20090147017A1 (en) 2009-06-11

Similar Documents

Publication Publication Date Title
CN101425175B (zh) 着色器处理系统与方法
CN105630441B (zh) 一种基于统一染色技术的gpu系统
CN101371247B (zh) 用于图形处理器的并行阵列结构
CN101124613B (zh) 片段着色管线中增加按比例缩放性的图形处理子系统及方法
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
CN104025181B (zh) 用于去耦合采样的基于分类的块延迟着色体系结构
US7447873B1 (en) Multithreaded SIMD parallel processor with loading of groups of threads
EP2126690B1 (en) On-demand multi-thread multimedia processor
US7594095B1 (en) Multithreaded SIMD parallel processor with launching of groups of threads
US11481950B2 (en) Real-time hardware-assisted GPU tuning using machine learning
TWI437507B (zh) 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法
US10055883B2 (en) Frustum tests for sub-pixel shadows
CN101877116A (zh) 绘图处理单元、执行单元以及工作管理方法
CN103885752A (zh) 多线程处理单元中可编程的混合
CN103886634A (zh) 利用每像素着色器线程的高效超级采样
CN103793893A (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
CN103793876A (zh) 分布式拼接式进行高速缓存
EP1725989A1 (en) Register based queuing for texture requests
US10255075B2 (en) System, method, and computer program product for managing out-of-order execution of program instructions
CN103810743A (zh) 在上游着色器中设置下游渲染状态
CN104050705A (zh) 处置光栅操作中的post-z覆盖数据
CN101178806B (zh) 计算机中管理纹理数据的系统与方法
US11429534B2 (en) Addressing cache slices in a last level cache
CN103870213A (zh) 经由管线化的状态包触发性能事件捕获
CN101271584A (zh) 可编程图形处理单元计算核心的常量缓冲的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant