可编程图形处理单元计算核心的常量缓冲的方法和系统的制作方法

文档序号:6462210阅读:121来源:国知局
专利名称:可编程图形处理单元计算核心的常量缓冲的方法和系统的制作方法
技术领域
本发明是关于数据处理系统(data processing systerns),且特别是关于 可编程图形处玉里(programmable graphics process ing)的方法与系统。'背景技术计算机图形(computer graphics)是利用计算机技术生成画面、图像或者 其它绘画的、图示信息的工艺和科学。画面或图像的产生一般被称为渲染 (rendering)。通常而言,在三维(3D)计算机图形中, 一个场景(scene)中代 表物体表面的图元(geometry)会被转化为若干像素(图像的基本元素),储存 于一帧緩冲器,然后被显示在显示装置中。一些不同的坐标空间会被用于将一个场景中的物体转换成可以显示在显 示屏上的图像。例如,物体开始处于一个没有进行任何转换的模型空间。从 该才莫型空间,该物体的顶点(vertices)和标准量(normal s)可以通过j吏用 一个 或者多个模型转换器(model transform)来定位或定向以转换到世界空间或 世界坐标。进而,对具有世界坐标的模型做视野转换,来定义该模型相对于 相机的位置和方向。在该结果空间中,经常是指视觉空间或相机空间,以便 利各种操作,比如映射和剪切功能,以及进一步的转换。这些来自于视觉空间的进一步转换可以包含可编程着色程序的使用,比 如顶点着色、像素着色,和图元着色,这些转换可以在平行、多线程执行单 元池中被执行,以形成图形处理单元(GPU)的计算核心。着色器通常是指应用 于三维计算机图形中的程序,该着色器用于决定一个物体或者图像的最终表 面性质(surface properties)。每个物体或者一组物体可能具有与表面外观 相关的特定视觉属性(比如,材质、反射系数、形状、紋理等),以及与之相 关的操作;这些全部可称为该个物体或者一组物体的渲染内文。当对一个给 定的渲染内文的一个物体或者一组物体进行渲染时,着色器需利用常量数据 池(例如,存储于常量緩冲器中的特定内文常量)。举例而言,顶点着色器通常被应用于每个顶点,运行在可编程的顶点处 理器。该顶点着色器可以定义一个方法去计算向量空间的转换,并执行其它
计算。在计算向量空间的转换时,会用到各种常量。比如,顶点(x, y, z, w) 可通过使用一个常量(例如,COO, C01, C02, C03,…C33)矩阵(例如,4 x 4 矩阵)被转换成新的顶点(x, , y, , z, , w,)。这些常量通常存储在相应于 一个别执行单元的一个常量緩冲器中,该常量与一个或者更多三维物体的渲 染内文关联。
现有系统目前存在一个新的挑战,由于为了渲染定义在适当的渲染内文 中带有不同视觉属性的物体队列,该常量缓沖器的至少一部分需要频繁的更 新。通常而言,常量的更新需要"冲洗"整个包含与"旧"内文关联的数据 的常量緩冲器,然后载入与新内文关联的"新"常量。
而且,相应于该常量緩沖器的该执行单元,可能运转多线程,可能会在 冲洗该常量缓冲器的时候被延迟。即,该执行单元可能会在开始利用一组新 常量之前冲洗该多线程(例如,允许利用先前的常量完成处理)。因此,在运 行于多线程计算核心的着色器中做这种渲染内文转换(例如,从第 一 内文至第 二内文),可能会引起显著的表现力减低。

发明内容
本发明揭露了 一种用于可编程图形处理单元计算核心的常量緩冲的方 法,其特征在于包含以下步骤响应第一着色器操作,在常量緩沖器中接收 第一常量组,该第一常量组相应于第一渲染内文;响应第二着色器操作,在 该常量缓沖器中接收第二常量组,该第二常量组相应于第二渲染内文,而且 该第一常量组未被冲刷;更新内文地址转换表格,该内文地址转换表格将该 第一着色器操作或者该第二着色器操作的参考值匹配至该常量緩沖器的物理 地址,该第 一着色器操作或者该第二着色器操作用来执行该第 一常量组或该 第二常量组中的常量。
本发明还提供 一 种用于可编程图形处理单元计算核心的常量緩沖的系 统,其特征在于包含执行单元池控制逻辑单元;常量缓沖器;该常量緩冲 器和该执行单元池控制逻辑单元可以响应第 一着色器操作,接收相应于第一 渲染内文的第一常量组,和响应第二着色器操作,接收相应于第二渲染内文 的第二常量组,而且该第一常量组未被冲刷;以及常量緩冲控制器和内文地址转换表格,其中该常量緩冲控制器使用该内文地址转换表格将应用程序界 面空间中的常量的参考值,匹配至该常量緩沖器中的物理地址,该参考值是 由 一个或者多个该第 一着色器操作和该第二着色器操作所提供的。对于本领域技术人员而言,其它未包含在本发明下迷所揭露的内容与图 示中的系统、方法、特征或者优势为显而易见的,因此凡其它未脱离本发明 所揭示的精神下所完成的等效改变或修饰,均应包含在本发明的权利要求范 围内。


本发明的一些实施例会详细描述如下。然而,除了详细描述外,本发明 还可以广泛地在其它的实施例中施行,且本发明的范围不受限定,其以权利 要求的范围为准。再者,在本说明书中,各元件的不同部分并没有依照尺寸 绘图。某些尺度与其它相关尺度相比已经被夸张,以提供更清楚的描述宜对 发明的理解。图1绘示了一运行常量缓沖系统和方法的图形处理器系统的实施例的 模块图。图2绘示了一常量緩冲系统的处理环境的实施例的模块图。图3绘示了图2所显示的处理环境的逻辑图形管线的一部分的模块图。图4绘示了图2所显示的处理环境的部分组成的模块图。图5绘示了一程序的实施例,该程序揭示了图形处理单元编译器的方法,用于从应用程序界面(API)空间映射常量至图形处理单元(GPU)存储器空间和 i内部(芯片上)常量緩冲器。图6A-6B绘示了一常量緩冲系统实施例的部分组成的模块图。图7绘示了一常量緩沖方法的实施例的流程图。图8进一步绘示了如图6B所示的常量内文表格模块图。图9A-9B绘示了如图6A-6B所示的常量緩冲系统所利用的各种表格的模块图。
具体实施方式
本发明揭示应用于图形处理单元中多线程、平行计算核心的每一个执行 单元的常量緩沖系统和方法。该常量緩沖系统能够在着色程序线程利用目前或现存于该緩沖器的内文数据渲染在先物体的同时,更新常量缓冲器为与新 的被渲染物体相关的新内文数据。该常量緩冲器能够在不因重新下载常量而 延迟计算核心执行单元的情况下进行更新。即,相较于现有系统随着每个渲 染内文的改变而冲洗常量緩沖器(从该緩沖器中完全沖洗掉该"旧"的常量, 由此可以有空间去下载新的常量),该常量系统能够使用来自于超过一个渲染 内文的相同的或者不同的着色器同步进行常量处理。
因此不同于传统系统,在本发明实施例中常量的改变不会给速度和效率 施加负担。尤其,如下描述的常量緩沖系统在更新或者改变常量的同时,也 能够执行在先的常量。即,执行不同内文常量的多个着色程序是在同步处理 通道中进行, 一个通道相应于在先内文常量而至少一个其它通道相应于新的 内文常量。通过常量緩冲系统来完成常量的更新或者替换可以使着色执行模 块流畅的进行常量替换程序,以提升计算的效率。
渲.染内文通常是指一个或多个物体的特定视觉属性,例如,表面的外观 (材质、反射系数、外型、紋理等等),或者与之相关的操作。渲染内文的处 理包括利用一组常量的着色器着色操作。渲染内文的改变可能牵涉执行另一 组常量的同一着色器,或者执行另一组常量的其它着色器。这些常量可以被 各种着色程序用于执行计算,例如,转换、加亮或者其它计算。每个常量由 一相应的渲染内文识別子来被着色器识别,使得常量緩冲器能够维持多个内 文的常量,并且被运行于各个执行单元的着色器程序所利用。
在一个实施例中,常量緩冲系统包含常量緩冲器、常量緩冲控制器、和 内文地址转换表格。如下的进一步解释中,常量緩沖器包含相应于一个或多 个渲染内文的常量的预定大小的数据槽,包含现有常量和更新后或新的常量。 对使用内文地址转换表格中的每一个渲染内文,该常量緩沖器控制器维持这 些常量的逻辑索引。即,常量緩沖控制器比对给定渲染内文的常量的着色器 参考值(例如内文识别子)与常量緩冲器的物理地址。如此构造避免了覆写地 址空间的需要或者当常量緩沖器中存在多个内文时执行的延迟。
本发明实施例的另外的特征还包含,在把与新的被渲染物体相关的内文 数据更新至着色器常量緩沖器的同时,在该常量緩冲器中的现存内文数据可 用于渲染在先物体的着色程序线程,而不必为常量的重新载入而延迟计算核
心执行单元;映射与来自不同应用程序界面(API)的不同内文相关的常量至图 形处理单元(GPU)存储器和内部的(在芯片上的)常量緩沖器;管理第一内文对该常量緩沖器的常量存取;在该内部常量緩沖器中有足够的空间(可用的常量模块)时,管理第二内文对该常量緩冲器的常量存取;监控常量的使用状态并 生成一个可分配给新的即将来到的内文常量的可用常量緩冲器区块的列表; 以及常量緩冲器槽中新的常量的分配和对内文地址转换表格的更新,该内文 地址转换表格提供从位于GPU的计算核心的一个或者多个着色器程序中使用 常量的通路。以下将简单描述一实施例的图形计算器系统的环境和相应的组件,本领 域技术人员应可以知道所揭露的系统和方法也可以扩展到其它处理环境中。图1绘示了运行常量缓冲系统200和方法的图形处理器系统100的实施 例的模块图。如图所示,常量緩冲器系统200被集成于计算核心中的每一个 执行单元。在一些实施例中,图形处理器系统100可以为计算机系统。图形 处理器系统100可以包含显示装置102,其被显示介面单元(以下简称DIU) 104 所驱动,本地存储器106(例如,可以包含显示緩沖器、帧缓冲器、紋理緩沖 器、命令緩冲器等等)。本地存储器106也可以称为帧緩沖器或者存储单元。 本地存储器106经过一个或者多个存储界面单元(以下简称MIU) 110耦接至图 形处理单元(以下简称GPU) 114, MIUllO、 GPU114以及DIU104是耦接至外围 装置互连高速(per ipheral component interconnect express,以下简称PCIE) 总线协议兼容的总线接口单元(bus interface unit,以下简称BIU)118。在 一个实施例中,BIU118可以应用图形地址对照表(Graphics Address Remapping Table, GART),尽管也可以应用其它存储器映射机制。GPU114包 括如下所述的常量緩沖系统200。在一些实施例中,尽管常量緩冲系统200 显示为GPU114的一个组件,常量緩冲系统200包含图形处理器系统100的一个或者多个额外的组件。BIU118耦接至芯片组122(例如,北桥芯片组)或者开关。芯片组122包 含界面电子元器件以加强来自中心处理单元(以下简称CPU) 126 (也指这里的 主处理器)的信号,以及从这些信号中分离出来自于系统存储器124的信号和 来自于输入/输出装置的信号(此处未绘出)。尽管PCIE总线协议已经描述了 , 在CPU126和GPL'114之间的其它连接方式或者交换方式也会被应用于一些实 施例中(例如,PCI、外围高速总线)。系统存储器124也包含驱动软件128, 其利用CPU126与GPU114的緩存器交流指令组或者命令,以及应用程序界面 空间130,在此常量是被存储器映射或者常量緩冲器映射,该常量由在GPU114上的编译器115所映射,以下会做进一步的说明。额外的图形处理单元可以被用于一些实施例中,例如通过芯片组122耦 接至如图l所示的组件上,其中芯片组122是通过PCIE总线协议。在某个实 施例中,图形处理器系统100可以包含图1中所示的所有元件,或者在一些 实施例中包含较图1而言更少的或者不同的元件,甚且,在一些实施例中, 额外的组件可以被利用,例如耦接至芯片组122的南桥芯片组。请参考图2,其描绘了一实施例的常量緩沖系统200的模块图。尤其, 如图所示的GPU114包含了图形处理器202。图形处理器202包含编译器115、 多重执行单元(multiple execution unit,EU)、计算核心204 (也称为软件可 编程核心处理单元)。在一个实施例中,计算核心2(H包含分布于一个或者多 个执行单元的常量缓沖系统200 。图形处理器202也包含执行单元池 (execution unit pool, EUP)和顶点/码流缓冲单元206 (也可称为EU池控制 单元206)和具有固定功能逻辑的图形管线208(例如,包含三角形设立单元 (triangle set-up unit, TSU)、跨距—像砖生成器(span-tile generator, STG)) 的图形管线,以下详述。计算核心204包含多重执行单元池,以满足与各种着 色器程序相关的着色器任务的计算要求,包含顶点着色器、几何着色器、或 者像素着色器,为该图形管线208处理数据。在一个实施例中,通过与计算 核心204中的一个或者多个着色器合作可以实现常量缓冲系统200的功能。 关于实施例中图形处理器202的通常描述已经完成,下面将描述该常量緩冲 系统200的某些特别的实施例。常量緩冲系统200可以被用于硬件、软件、固件或者其以上的一个结合。 在一个实施例中,常量緩冲系统200是在硬件加固件系统中执行的,也包括 在此技术领域中所众所周知的技术及以下所述技术的任意结合 一具有逻辑 门的离散逻辑电路,可以依照数据信号来完成逻辑功能, 一个具有适当集成 的逻辑门的特定应用集成电路(ASIC), —可编程逻辑门阵列(PGA), —场域可 编程逻辑门阵列(FPGA)等等。请参考图3,其描述了逻辑图形管线208的实施例的模块图。在一些实 施例中可以包含在图3中额外的或者较少的组件。例如,以下描述的每个模 型可以包含它们自己内部的一个或者多个寄存器(没有显示在图3),由与该 寄存器共同定位的一模型或者与其它不同的模型共享。除此之外,各种緩冲 (例如,深度高速緩沖存储器,又称Z-高速缓沖存储器;颜色高速緩沖存储器,又称D-高速緩冲存储器;紋理高速缓冲存储器,又称T-高速緩冲存储器 等等)可以根据熟知的管线工艺被实现。尤其,在图3中显示的组件包含一个 图形管线208的基本组件,图形管线208整体或者部分与常量緩沖系统200 合作。第一组件是输入合成器302,其利用索引緩沖器,主要抓取来自存储 器300的所有的顶点数据,并且集合图元以在计算核心204中做进一步的处 理。存储器300在其它的子存储器之外还包含本地存储器106,其它的子存 储器可以是例如EU池控制单元206的码流和顶点高速緩冲存储器(后者一般 被用做为了合成几何图元的顶点数据的来源)。该图元一旦被合成,就会被传 送至顶点着色器304。顶点着色器304通过执行例如转换、表面处理(skinning) 和亮度(lighting)操作来处理顶点数据。用来执行上述一个或多个计算的常 量由常量緩冲系统200中的一个常量緩沖器所提供,由编译器115在编辑期 间生成的特殊指令执行预载。这之后,顶点着色器304传送数据至几何着色 器306中。几何着色器306接收一个完整图元的顶点作为输入,并输出形成 一个单独的拓朴的多个顶点,比如一个三角形的条带、 一个线性条带或者一 个点列表等等。几何着色器306也该常量緩沖系统200的常量緩沖器中接收 常量,并可以被用于进一步的执行各种演算法,比如镶嵌图形、阴影生成等。 几何着色器306然后把信息输出至光栅器(rasterizer) 308,其用于进行剪 裁、图元建立和决定何时及如何激发像素着色器310。像素着色器310被每 一个被该图元覆盖的像素所激发。像素着色器310也接收来自于常量緩冲系 统200中常量緩沖器的常量,并执行插补和其它操作以共同确定将要输出至 存储器300中的回复单元的像素的颜色。如图3所示的各种组件的机能操作 通过 一 系列的状态寄存器进行组织或控制,该状态寄存器用于设定固定图形 硬件单元和计算核心204的功能,如下所述。在描述完毕计算核心204中为执行单元生成任务的组件之后,请参考图 4。图4绘示了图形处理器202的实施例的模块图。图4中并未显示用于图形 处理的所有组件,但对于一个本领域技术人员来说是足够充分的去理解与图 形处理器相关的功能和工艺。在该可编程化处理环境的中心是计算核心204, 其处理各种指令,当然也包含常量緩冲系统200。各种类型的着色器程序可 以被执行或者映射至计算核心204,包括顶点着色器304,几何着色器306以 及像素着色器310。计算核心204,为多重处理器,能够在单一时钟周期内处 理多种指令。如图4所示,与图形处理器202相关的组件包含计算核心204 、紋理过 滤单元402、像素打包器404、命令码流处理器406、回复单元408、和紋理 地址生成器410,还有EU池控制单元206, EU池控制单元206中也包含顶点 高速緩沖存储器和码流高速緩冲存储器。如图4所示,纹理过滤单元402提 供紋理元素数据至计算核心204 (输入A和B)。在一些实施例中,紋理元素数 据是512位的数据。像素打包器404提供像素着色器输入至计算核心204 (输 入C和D),也以512位的数据格式。另外,像素打包器404向EU池控制单 元2 06要求像素着色任务,EU池控制单元206提供像素打包器404的指定的 EU编号和线程编号。因为像素打包器和紋理过滤单元均为本领域已知技术, 这里略过不做进一步讨论。同时图4显示了像素和紋理元素信息包,该些数 据包都是512位的数据信息包,在一些实施例中,根据图形处理器202的表 现属性,信息包的尺寸可以变化。命令码流处理器406提供三角形顶点索引至EU池控制单元206,在图4 所示的实施例中,该索引是256位的。EU池控制单元206从码流高速緩冲存 储器中合成顶点着色器输入并发送数据至计算核心204 (输入E)。 EU池控制 单元206也合成几何着色器输入和提供这些输入信息至计算核心204 (输入 F)。 一般来说,EU池控制单元206控制计算核心204对应的输入流和输出流。在处理过程中,计算核心204提供像素着色器输出(输出Jl和J2)至回 复单元408。像素着色器输出包括颜色信息,例如红/绿/蓝/alpha(RGBA)信 息,其为本领域已知技术。该像素着色器输出被提供为两个512位的数据码流。其它宽度位也可以在一些实施例中应用。与像素着色器输出的方式类似,计算核心2 04输出包含UVRQ信息的紋理 坐标(输出Kl和K2)至紋理地址生成器410。紋理地址生成器410发出紋理描 述符请求C^ Re.q)至计算核心204 (输入为X)的L2高速缓冲存储器422,该 L2高速緩冲存储器422输出(输出W)紋理描述符数据(T# data)至紋理地址生 成器410。 L2高速緩沖存储器422和EU池控制单元206也互相转移512位的 顶点高速緩沖存储器溢出数据。两个512位顶点高速緩沖存储器的书写均是 计算核心204的输出(输出Ml和M2)至EU池控制单元206做进一步的处理。 因为各种关于紋理地址生成器410的例子和回复单元408均为本领域中的已 知技术,所以这里不做赘述。同时如同所示的UVRQ和RGBA信息均为512位, 但在一些实施例中这个参数也是可以变化的。在图4所示的实施例中,总线是被分为两个512位的通道,每个通道都有128位的RGBA颜色和128位对应 这四个像素的UVRQ的紋理坐标。图形管线208包含固定功能的图形处理。为了响应来自于驱动软件128 的命令,例如绘示三角形,顶点信息会被传送至计算核心204的顶点着色器 304进行顶点转换。尤其,把物体从物体空间转换至工作空间或者屏幕空间 成为若干三角形。这些三角形被从计算核心204传送至在图形管线208中的 三角形建立单元(以下筒称TSU)412,该图形管线208用于合成图元,也执行 已知的任务,例如边界框生成、拣选、边界功能生成等其它已知功能。TSU412 传送数据至图形管线208的跨距(span)和像砖(tile)生成器单元,其提供了 像砖生成功能,这里的物体被分割成若干像砖(例如,8*8, 16*16等)。接着 这些像砖被传送至另一个固定功能单元来执行深度处理(例如Z值处理),例 如高水平的Z值拒绝,在高水平处理中使用较低水平处理更少的位。基于接 收的紋理和管线数据的像素着色器功能性表现,该Z值又被传回至计算核心 204的像素着色器310。计算核心204再将处理过的数据传送至图形管线的目 的单元。该目的单元用于在多个高速緩沖存储器中的值需要更新之前,执行 alpha测试和纸模测试。计算核心204包含一个执行单元池(execution unit pool, EUP) 414,其 在一实施例中包含一个或者多个执行单元(以下简称EU) 42 0a至420h (这里共 同称为EU420)。每个EU420包含控制逻辑单元和本地存储器,如下所述。而 且每个EU420能够在单一的时钟周期内处理多个指令。因此,EU池414,在 它的峰值时,可以同时或者基本上同时处理多个线程。虽然在这个实施例同 时应用8个EU420,如图4所示(标示为EU0-EU7),在一些其它的实施例中, EU的数量不必限制为8个,可多可少。每个执行单元420包含常量緩冲系统 200的一个实施例,以下详述。在一些实施例中,少于全部执行单元420的 执行单元可以与常量緩沖系统200合并。进而,在一些实施例中,常量緩沖 系统200的组件可以被分配在一个或多个图形处理器202的组件中,包括在 EU池控制单元206中的逻辑单元。L2高速缓沖存储器422从EU池控制单元206接收顶点高速緩沖存储器 溢出(输入G),并提供顶点高速緩冲存储器溢出(输出H)至EU池控制单元206。 另夕卜,L2高速緩沖存储器422从乡文理地址生成器410接收纹理描述符请求T并 Req(输入X),并提供紋理描述符数据T并data(输出W)至紋理地址生成器410,以响应接收到的请求。计算核心204也包含存储器存取单元(MXU) 426,其通过存储器界面仲裁 器424耦接至L2高速緩冲存储器422。该存储器界面仲裁器424提供控制界 面至本地存储器(例如,帧緩冲器和本地存储器106) 。 BIU118通过,例如PCIE 总线,提供界面至图形处理系统。存储器界面仲裁器424和BIU118提供存储 器和L2高速緩沖存储器422之间的界面。在一些实施例中,L2高速緩冲存 储器422.通过存储器存取单元426连接至存储器界面仲裁器424和BIU118。 存储器存取单元426将来自L2高速緩冲存储器422和其它模块的虛拟存储器 地址转换至物理存储器地址。存储器界面仲裁器424为L2高速緩沖存储器422提供存储器存取(例如 读取或者写入),抓取指令、常量、数据、紋理,引导存储器存取(例如,下 载、存储),暂时存储器存取的索引,寄存器溢出,顶点高速高速緩沖存储器 内文溢出等。其它没有显示但是可以被本领域技术人员理解的组件,包含纵横器 (crossbars)或者总线,用于输入和输出数据的转移,寄存器,及可供EU420 处理的其它组件。EU池414中的执行单元流通常包含几个等级, 一个是渲染内文等级,线 程或任务等级,以及一指令或者执行等级。在任意给定时间,在每个执行单 元420中会有多个渲染内文,该内文由一个位标记或其它机制所辨识。渲染 内文(或者说是渲染内文信息)在属于该内文的任务开始前,从EU池控制单元 206被传送。渲染内文信息包含着色类型、输入/输出寄存器的数量、指令开 始地址、输出映射表、顶点辨识子,以及对应的常量緩冲器中的常量。EU池 414中的每个执行单元420同时存储多个任务或者线程(例如在一些实施例 中,32个线程)。在一实施例中,每个线程根据程序计数器抓取一个指令。EU池控制单元206为任务的整体调度器,并在执行单元420中使用数据 驱动方法而分配合适的线程(例如,顶点、像素、几何信息包)。例如,EU池 控制单元206分配一个线程至EU池414中对应的执行单元420空线程槽中的 一个。来自顶点高速緩沖存储器或者其它组件或模型的数据被放置于普通寄 存器缓冲器,在线程执行开始后。通常而言,图形处理器202的一个实施例利用了可编程顶点着色器304、 几何图元着色器306和像素着色器310。相较于将这些组件的功能或者操作分别实现为具有不同设计和指令集的固定功能单元,这些搡作可以由包含执行单元420a、 420b…420n的EU池414以统一的指令集来执行。这些执行单 元420中的每一个为相同的设计而且可编程操作。在一个实施例中,每个执 行单元420能够进行同时多线程操作。顶点着色器304,几何着色器306,和 像素着色器310产生的多个着色器任务均被传送至分别的执行单元420来执 行。当个别任务产生时,EU池控制单元206处理任务的分配至多个执行单元 中的可用的线程。当任务完成时,EU池控制单元206进一步管理相关线程的 释放。在这点上,EU池控制单元206负责分配顶点着色器,几何着色器和像 素着色器任务至多个执行单元420的线程,而且,执行任务和线程的相关"薄 记"(bookkeeping)。尤其,EU池控制单元206为所有的执行单元420维持 一个关于线程和存储器的资源表。EU池控制单元206尤其知道哪一个线程已 经被分配了任务和被占用,哪一个线程已经在线程终止后被释放,多少个共 同登记文档存储寄存器被占用,和对于每个执行单元,有多少个自由空间可 用。除此之外,当一个任务被分配至一个执行单元(例如,420a), EU池控制 单元206将会标注该线程为忙碌,以及将可用的普通寄存器文件存储器的总 数减去每个线程恰当的寄存器文件足迹(f oot pr i n t)的总数。该足迹由顶点着 色器3(M、几何着色器306以及像素着色器310的状态所设置和决定。而且, 每个着色器阶段都有不同的足迹尺寸。例如,顶点着色器线程可以要求10个 普通寄存器文件登记,而像素着色器线程可能只要求5个普通寄存器文件寄 存器。当一个线程完成了它的指定任务,运行该线程的执行单元420发送恰当 的信号至EU池控制单元206。 EU池控制单元206相对地,更新它的资源列表 以标示该线程为自由,并增加总线程普通寄存器文件空间的数量至可用空间。 当所有的线程都忙或者所有的普通寄存器文件存储器已经被分配(或者寄存 器空间太小以至于不能维持一个额外的线程),则执行单元4 2 0被认为已满, EU池控制单元206将不再分配任何额外的或者新的线程至那个执行单元。在每个执行单元的内部也提供了 一线程控制器,该线程控制器负责管理 或者标示线程为可用或者不可用。在描述完图形处理器202的体系后,下面将描述从API空间130至常量緩冲系统200的常量供应,如何由常量緩冲系统200管理用于多个渲染内文 的常量。如图5所示,其描述了从API空间130映射常量至常量緩沖系统200 可存取的存储器的一个实施例方法200a的模块图。该API空间130包含多个 常量模块502a至502n(例如,在一个实施例中是16个),每个模块都包含 4000(4k)个常量。在一个实施例中,每个模块502都由一个常量模块数来识 别(例如C并0、 C#l,等等),包含优先级504,其随着数字的降低而增加(例如, C#0有最高的优先级)。优先级504可被用于决定常量模块将被下载(例如, C#0可以被下载至快速常量通路506)的路径(快速通道506或者是慢速通道 508)。快速通道506实现在计算核心EUs420上(例如,通过EU数据通路EUDP 514),并提供快速通道给常量(一个周期的延迟)。快速通道506包含与常量 緩沖器510和内文地址转换表格512同时运行多个内文相关的操作。慢速通道5 08利用芯片外部存储器(例如,本地存储器106)和L2高速缓 沖存储器422来实现,常量通过存储器阶层被下载至寄存器文件。通过慢速 通道508存取常量会花费几个周期。GPU编译器115根据一个或多个规则映射常量至快速通道5 06和慢速通 道508。例如,对于在芯片常量緩沖器510中一拥有足够空间的限制数量的 非索引常量,编译器115通过快速通道506映射此种常量。对于可索引常量, 编译器115通过慢速通道508映射此常量。对于大量的非索引常量模块,编 译器115可以在快速通道506和慢速通道508间分裂路径。以下是常量緩冲系统200的一个实施例,如图6A-6B所共同绘示。在一 个实施例中,常量緩沖系统200包含执行单元数据路径(execution unit data path,以下简称EUDP) 514、常量緩沖控制器602、常量緩沖器510、两个内文 地址转换表格512a、 512b、 一输入界面(crossbar或xbar) 604、和EU池控 制逻辑单元605。尽管这里绘示了利用两个内文地址转换表格512a, 512b显 示相应的两个渲染内文,常量緩冲系统200的某些实施例可以有不同数量的 内文地址转换表格512,以相应于相同或者不同的渲染内文数量。输入界面 604可以被用作一个纵横器或者总线或者本领域技术人员所能想到的等同物。EUDP514包含算数逻辑单元和其它用于指令解码,操作数读取,分支计 算,指令计算,开关/逻辑,下载/存储,及其它处理功能的逻辑单元。常量 緩沖器510通过两个端口 (例如两个128位的读取端口)耦接至EUDP514并且通过一个端口 (例如,512位的写入端口)耦接至输入界面604。常量緩冲系统 控制器602耦接至EUDP514,内文地址转换表格512a, 512b,常量缓沖器510, 和输入界面604。在一个实施例中,常量緩沖器510被分为多个模块(例如,图6B中数据 模块6Q6,每个都被标示为常量数据模块0、常量数据模块1,等等)每个模 块606包含多个用于存储常量的槽。例如,在一个实施例中,常量緩沖器510 可以作为被分为16个模块606的256*128 2R1W緩沖器,每个模块606都包 含个128位水平向量常量的槽。在一个实施例中,在常量緩沖510中的"自 由,,或者可用(例如,可写入)数据槽被分配用于下载新的常量。通常而言, 用于处理特定渲染紋理的着色程序所使用的槽比所指定的要少,因此该自由 空间可以被用于下载与其它渲染内文相关的新的常量。内文地址转换表格 512a, 512b被更新为新常量的地址,通过新的内文着色程序(EU池或者着色 ID614)识别或者索引。换言之,内文地址转换表格512a、 512b,维持由着色 程序内文识别子所寻址的常量的物理索引。内文地址转换表格512a、 512b转 换逻辑索引至常量緩沖器510的物理地址。每个渲染内文有它们自己的地址 转换表格(例如,第一渲染内文的内文0地址转换表格512a和第二渲染内文 的内文1地址转换表格512b),其为常量将逻辑着色器常量空间(例如,API 空间130)映射至常量緩沖器510的物理定位。在一个实施例中,内文地址转 换表格512a、 512b,包含了 一常量緩沖器物理地址的16个条目和四个最大位 (MSBs)。任何实际的内文可以利用专门的有效遮蔽标签608在两个或者更多 的内文之间分享。如上所述,常量緩冲器510中的每个模块606中存在多个槽(例如,16 个),可以在每个着色器管线阶段(例如,顶点着色器304、几何着色器306、 或像素着色器310)被激活。在一个实施例中,对于映射至常量緩冲器510的 常量,跨越多个常量緩冲器槽的索引是不被允许的,如果索引范围不超出槽 的尺寸,则在槽的内部作索引是可能的。如果给定常量緩冲器槽的数量,可 索引常量c并可以作为任意着色器操作的一个操作数,如同着色器中一个可索 引的只可读取寄存器。在着色编码中,c并寄存器通常被宣告为语义名字,而 且这些在着色器中的名字与在着色器外的常量緩沖器槽的名字相匹配。 一个 c弁寄存器是一个常量缓沖器槽的占位符。在一实施例中,常量緩沖槽可以利 用下面的句法在着色器中被存取c# [index]以作为着色器指令的操作数 (1)这里的"index"可以包含暂时寄存器,该暂时寄存器包含一 32位无符 号的整数, 一直接的32位无符号整^lt常量,例如,在下面的虛拟编码"mov rO, c3[6]"中,该运算包含从常量緩冲器槽3移动元素6至r0。着色器中的常量緩冲器槽(c并register)的宣告包含以下信息或者处理 过程(a)宣告常量緩沖器510的尺寸(例如,用一个特別的标志标示允许未 知长度);(b)着色器指示常量緩冲器510是仅通过字面的偏移量或者着色器 所计算的偏移量值被存取;和(c)着色器中cf与其它相关cf的宣告出现的顺 序定义常量缓沖器槽的优先级,从最高优先级开始。在一实施例中,超出常 量緩冲器510边界的存取会导致返回0值。分配至常量緩冲槽的优先级可协助硬件最大化的利用任何存在的常量数 据存取通道或机制。在一些实施例中,不担保带有高优先级的常量緩冲槽总 是比带有低优先级的常量緩冲槽快。例如,依据相关的緩沖器被宣告的性质, 一个高优先级的常量缓冲器槽也可能产生相比较于一个较低优先级的常量緩 冲器槽较低的表现。例如,在某一实施例中某些任意尺寸的快速常量随机存 取存储器(RAM)对于被着色器宣告为高优先级的常量緩沖器槽可能会不够大, 但对于被宣称为低优先级的常量缓冲器槽却足够大。类似的实施例可能没有 选择只能为大量的、高优先级的常量存储器槽使用标准的纹理或者存储下载 通道(可能恰好相反的高速緩沖器的行为),同时将最低优先级的常量緩沖器 槽放置在常量随机存取存储器。在常量緩沖系统200的一个实施例中,每个着色器管线阶段可能下载总 共256个常量至常量缓冲器510中。假设每16个模块中有16个槽,常量可 以被分割为16组。因此,在从一个内文转移至另一个内文时,可以有两个内 文同时运行在一个执行单元420上。在一个实施例中,两个内文的常量总数 不超过256个。如果两个内文的常量超过256个(或者无论对于一个给定的常 量緩冲器所预设的槽的最大数量),EU池控制逻辑单元605不会下载第二个 内文直到在先的一个内文已经完成(根据着色器编码中的指示,编译器115安 排EU池控制逻辑单元6 05硬件以提供必要的下载功能)。请注意在一些实施 例中,编译器115不需要知道所有状况,尽管编译器115可能在常量緩冲器 510中分配较少的常量给某一个着色器,如果编译器115已经知道了在特定 的应用程序中 一起运行的着色器的组合。编译器115宣告哪些常量要预载至常量緩沖器510中。例如, 一个宣告 可以提供常量緩冲器510中的模块4(常量64-79)使用API空间130的C#10 偏移量16-31。此宣告也可以被解释为要求常量64-79是来自C#10常量 16-31。在一个实施例中,着色器常量槽(C的中所有的模块都被基本上同时预 载至常量緩冲器510,以确保合适的间接的寻址操作。在执行单元420开始内文处理之前,EU池控制逻辑单元605根据着色器 宣告预载常量緩沖器510。 EU池控制逻辑单元605也解析在何处放置来自两 个不同内文的常量和下载内文地址转换表格512a、 512b。 EU池控制逻辑单元 605也通过有效屏蔽位608追踪16个常量槽中的哪一个在使用中。在一个实 施例中,如果常量緩冲器510不能为一个新的内文完成下载,则EU池控制逻 辑单元605将不会开始新的内文直到旧的内文完成为止。为了在常量緩沖器510中定位一个常量,常量緩冲控制器602使用内文 地址转换表格512a、 512b。在一个实施例中,当常量緩冲控制器602接收到 一个常量索引(例如, 一个8位常量索引),常量緩沖控制器602使用该请求 线程中的内文ID610(例如,1位)去选择两个16*4位内文地址转换表格512&、 512b中的一个,并利用常量索引C井中4个最高位(MSB)去寻找一常量物理緩 冲器索引的最上面的4个位,并增加至该常量数字中最低的4个位(LSB)。如果每个指令中的两个读.取已被执行,例如,两个常量被用于指令中的两个来 源(例如,ADD dst、 CMindexl]、 C并[index2])。如前所述,如果两个内文均可以被供给至常量緩冲器510,则常量緩沖 系统200能够使两个或者更多个常量内文同时运行。例如,常量可被在同一 个着色器管线阶段的两个连续的内文分享,因此,在不重新载入整个常量緩 冲器510的情况下,就可以使得小量的常量改变被更新。在某一执行单元420 中,当主要常量内文被完成处理,次要内文被交换至主要的槽,并且EU池控 制逻辑单元605开始将下一个可用内文的常量推动更新至已经释放了的次要 内文槽内。于上描述了常量緩冲系统200的各种特征,以下描述相应的常量緩冲系 统方法200b,如图7所示。EU池控制逻辑605单元发送一个命令用主要内文 的内文地址转换表格(512a、 512b)中的地址位来初始化第二内文的内文地址 转换表格(512a、 512b)(步骤702)。 EU池控制逻辑单元605发送更新后的常 量和模块索引(步骤704)。常量緩沖控制器602在常量緩冲器510中搜索一个自由(无效)的模块606 (步骤7 06),并将緩沖器地址的4位MSBs填入模块 索引所指定的对应的内文地址转换表格512a、 512b中的条目(步骤708)。受 影响的条目的有效屏蔽位608被更新至常量内文表612中(步骤710)。有效 屏蔽位608为一个位代表一个内文,因此,每个常量数据模块606包含2个 或者更多的有效屏蔽608位,被置于常量内文表612 (包含EU常量存储器队 列),并且被当作标签附在每个常量数据模块606上。例如,对于在常量緩冲 器510中16个数据模块606,存在一个16*2位的标签。然后,执行单元420 准备接收使用新常量内文的任务(步骤712)。图8绘示了常量内文表612的一个实施例。常量内文表612包含两个条 目822和824,每个条目都包含一个1位内文ID 610、 一个3位EU池着色器 内文ID614、和一个16位常量緩冲器有效屏蔽位608。该3位EU池着色器 内文ID 614确定在EU池414中着色器管线阶段和常量内文。16位有效屏蔽 位608指示当前内文中有效的常量模块条目。当一个新内文在执行单元420中产生,EU池控制逻辑单元605利用常量 内文表612发送一个命令来初始化内文地址转换表512a、 512b,并且提供次 要内文的有效屏蔽位608到常量内文表612的主要内文槽。在更新的常量模 块到达执行单元42Q时,常量緩冲控制器602利用伴随而来的索引去查找内 文地址转换表512a、 512b中緩沖器地址的4MSBs,并使用该地址去定位在常 量内文表612中的有效屏蔽位608并标示为无效。之后,在常量緩沖器510 中选择可用的模块槽,以及将该緩冲器地址的4MSBs记录在上述常量索引所 指示的内文地址转换表512a、 512b中的位置。根据这4各MSBs,当前内文 的有效屏蔽位6 Q 8中的对应位被标示为有效。图9A-9B包含EU池控制逻辑单元605所使用或者集成的表。图9A中所 示的EUP常量地址表900为位于存储器中的常量模块对应的12位存储地址 902,并且EUP常量地址表900为从本地存储器106下至芯片上常量緩沖器 510的常量数据载入提供地址,该常量緩沖器510位于计算核心204的EU420。 当从命令码流处理器(CSP) 406或者像素打包器404接收到一个新的常量更新 时,EU池控制逻辑单元605检查相应的着色器阶段的第二内文是否可获得以 对常量作更新。请参考图9B,其绘示了常量参考表910,包含参考计数器904用于内文 的着色器程序事件对常数的使用。当一个新的事件被载入至EU420时,此参考计数器904增加,当该着色器事件终止时,此参考计数器904减少。尤其, 常量参考表910中的计数器904追踪着色器常量内文等待处理的任务数量。 当一个新的任务增加时,常量参考表910中的计数器904增加,当任务完成 后,计数器904减少。当计数器904为0时,EU池控制逻辑单元605被告知 该内文的所有任务已经完成,并且EU池414^fe冲刷。当主要常量内文被冲刷 出EU池414,次要内文被交换至主要槽,而次要槽可以接收命令码流处理器 406或者像素打包器404的下一个更新。当一个任务被安排至执行单元420, 此任务相应的着色器常量内文ID61Q与目标执行单元4 2 0现存的内文ID作比 对。如果匹配,此任务被发送至该目标执行单元420,否则, 一个常量下载 程序被触发以预载常量至目标执行单元。这里描述的流程图表中任何处理描述符或者模块应该理解为范例模型、 片段,或编码部分,在这个处理流程中可以包含一个或者更多的为执行特别 逻辑功能或步骤的可执行的指令,并且任何可替代的执行也被包含在本发明 揭露系统或方法的范围内,也包含依赖于其所具有的功能是本领域技术人员 可以理解的实质的并发或者相反的指令。应该强调,上面提到的实施例仅仅是可能执行中的一些例子。在不脱离 本发明原则的基础上,还会有更多的变形和修改。本发明范围内的所有类似 的修改和变形将由本发明的权利要求所限定。
权利要求
1. 一种用于可编程图形处理单元计算核心的常量缓冲的方法,其特征在于包含以下步骤响应第一着色器操作,在常量缓冲器中接收第一常量组,该第一常量组相应于第一渲染内文;响应第二着色器操作,在该常量缓冲器中接收第二常量组,该第二常量组相应于第二渲染内文,而且该第一常量组未被冲刷;以及更新内文地址转换表格,该内文地址转换表格将该第一着色器操作或者该第二着色器操作的参考值匹配至该常量缓冲器的物理地址,该第一着色器操作或者该第二着色器操作用来执行该第一常量组或该第二常量组中的常量。
2、 根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量 ,緩冲的方法,其中该第 一着色器操作和该第二着色器操作可以被该计算核心中可执行多线程的一个着色器所执行,或者被多个可执行多线程的着色器分 别执行。
3、 根据权利要求2所述的一种用于可编程图形处理单元计算核心的常量 緩冲的方法,其中接收该第二常量组的同时也包含未停止执行该第 一着色器 操作的接收。
4、 根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量 緩沖的方法,其进一步包含,决定是否将该第一常量组和该第二常量组中的 常量映射至存储器或緩冲器。
5、 根据权利要求4所述的一种用于可编程图形处理单元计算核心的常量 緩冲的方法,其中接收该第一常量组和该第二常量组包含响应该决定,选择 通过存储器映射、緩冲器映射或者存储器和緩冲器映射的结合来接收。
6、 根据权利要求5所述的一种用于可编程图形处理单元计算核心的常量 緩沖的方法,其中存储器映射和緩冲器映射进一步包含,对于緩沖器映射, 从应用程序界面空间映射该些常量至该常量緩沖器,或者对于存储器映射, 从应用程序界面空间映射该些常量至图形处理单元存储器。
7、 根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量 緩冲的方法,其进一步包含,决定是否该常量緩沖器有足够的空间去接收该第二常量组。
8、 根据权利要求7所述的一种用于可编程图形处理单元计算核心的常量 緩沖的方法,其中决定该常量緩冲器是否有足够的空间去接收该第二常量组 的步骤还包括,决定是否有可用的常量緩冲器模块。
9、 根据权利要求1所述的一种用于可编程图形处理单元计算核心的常量 緩冲的方法,其进一步包含监视常量使用。
10、 根据权利要求9所述的一种用于可编程图形处理单元计算核心的常 量緩冲的方法,其中监视常量使用的步骤还包括.产生和维持自由常量緩冲 器模块的一个表,该表用于分配该第二常量组。
11、根据权利要求IO所述的一种用于可编程图形处理单元计算核心的常 量緩冲的方法,其进一步包含为该第二常量组分配该常量緩沖器中的多个槽。
12、 一种用于可编程图形处理单元计算核心的常量緩冲的系统,其特征 在于包含执行单元池控制逻辑单元;常量緩冲器,该常量緩冲器和该执行单元池控制逻辑单元可以响应第一 着色器操作,接收相应于第一渲染内文的第一常量组,和响应第二着色器操 作,接收相应于第二渲染内文的第二常量组,而且该第一常量组未被冲刷; 以及常量缓沖控制器和内文地址转换表格,其中该常量緩冲控制器使用该内 丈地址转换表格将应用程序界面空间中的常量的参考值,匹配至该常量緩冲 器中的物理地址,该参考值是由一个或者多个该第一着色器操作和该第二着 色器橾作所提供的。
13、 根据权利要求12所述的用于可编程图形处理单元计算核心的常量緩 沖系统,其中该第 一着色器操作和该第二着色器操作经由在该计算核心中可 执行多线程的顶点着色器、几何着色器和像素着色器其中的一个被执行,或 者分别被其中的两个所执行。
14、 根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓 冲系统,其进一步包含编译器,该编译器与该执行单元池控制逻辑单元合作, 决定是否将该第一常量组和该第二常量组中的这些常量从应用程序界面空间 映射至图形处理单元存储器、该常量緩冲器,或映射至图形处理单元存储器 与该常量緩沖器两者的结合。
15、 根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓冲系统,其中该常量緩沖控制器用于检索和分配在该常量緩冲器中的自由模 块,使得为该常量緩冲器可以存储该第二常量组的常量,同时保持该常量緩 冲器中该第一常量组中的常量。
16、 根据权利要求12所述的用于可编程图形处理单元计算核心的常量缓 沖系统,其进一步包含一个常量内文表,该常量内文表包含多个有效屏蔽, 其中该执行单元池控制逻辑单元通过使用该有效屏蔽来确定该常量緩沖器中 哪些槽处于使用中,其中该常量内文表经由该执行单元池控制逻辑单元被更新。
全文摘要
本发明揭露了一种用于可编程图形处理单元计算核心的常量缓冲的方法,其特征在于包含以下步骤响应第一着色器操作,在常量缓冲器中接收第一常量组,该第一常量组相应于第一渲染内文;响应第二着色器操作,在该常量缓冲器中接收第二常量组,该第二常量组相应于第二渲染内文,而且该第一常量组未被冲刷;更新内文地址转换表格,该内文地址转换表格将该第一着色器操作或者该第二着色器操作的参考值匹配至该常量缓冲器的物理地址,该第一着色器操作或者该第二着色器操作用来执行该第一常量组或该第二常量组中的常量。与现有系统相比较,本发明能够同步进行常量处理,该常量可以是使用来自于超过一个渲染内文的相同的或者不同的着色器。
文档编号G06T15/00GK101271584SQ20081009166
公开日2008年9月24日 申请日期2008年4月11日 优先权日2008年4月11日
发明者阳 焦, 约翰·柏拉勒斯, 苏奕荣 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1