图形流水线的有效状态管理的制作方法

文档序号:6479274阅读:173来源:国知局
专利名称:图形流水线的有效状态管理的制作方法
技术领域
本发明涉及执行在计算机系统内的计算操作。
背景技术
图形处理单元(GPU)是一被专门设计成执行图形处理任务的专用集成电路 (ASIC)。GPU可例如执行终端用户应用所要求的图形处理任务,该终端用户应用例如为视频 游戏应用。于此例中,该终端用户应用与该GPU之间有数个软件层。该终端用户应用与应 用程序接口(API)交流。API允许该终端用户应用以标准化格式输出图形数据及命令,而不 是以依赖该GPU的格式输出图形数据及命令。数个类型的API市面有售,包括微软公司开 发的DirectX 以及硅谷图形公司开发的OpenGL 。该API与驱动器(driver)交流。该 驱动器将接收自该API的标准码翻译成该GPU理解的指令的原始格式。该驱动器典型地由 该GPU制造商写出。接着该GPU执行来自该驱动器的指令。许多GPU包括执行所述指令的图形流水线。图形流水线包括多个处理模块,所述 处理模块同时工作于一指令的不同阶段。流水线操作能使GPU利用存在于执行该指令所需 的所述阶段中的并行性。因此,GPU可在更短的时间周期内执行更多的指令。该图形流水线的输出依赖该图形流水线的状态。该图形流水线的状态依据状态 封包更新,所述状态封包即特定背景常量(context-specific constant)(例如纹理句柄 (texture handle)、着色常量(shader constant)、变换矩阵(transform matrix)等等), 其被该图形流水线局部存储。由于所述特定背景常量是局部保存,所以可被该图形流水线 快速存取。该图形流水线保存的状态封包的数量依赖于该GPU耦接(couple)的API。所述 状态封包与普通的API有关,所述状态封包可储存在相对小数量的寄存器内,例如8个寄存 器。然而,与普通的API不同,较新的API(例如DirectX 10)需要相对大数量的频繁背景 切换,所述切换关于该流水线的某些方面。与这些频繁背景切换有关的所述状态封包的数 量不能被普通图形流水线所保存的相对小数量寄存器所支持。处理与较新API有关的较大数量状态封包的潜在解决方案是仅仅增加该图形流 水线支持的状态封包的数量。然而,由于需要额外的寄存器以处理额外的状态封包,这种解 决方案将会显着增加晶片面积。此外,如果所述状态封包的数量超过该流水线的储存能力, 该图形流水线将会暂缓,因此,这种解决方案可能产生时间问题(timing issue)。另一潜在解决方案将尝试使用软件对增加的状态封包数量进行补偿。例如该驱动 器或该终端用户应用可尝试将发送给该GPU的工作重定序以减少状态改变数量(增加每一 状态改变所发送的工作)。然而这种解决方案具有至少两个缺点。第一缺点为,这种解决方 案仅对一些工作负荷(workload)(—些固有太多状态改变的工作负荷)起作用。第二缺点 为,这种解决方案显着增加该CPU检索及分类输入事务(inputtransaction)的工作负荷。综上所述,需要一种提供有效状态管理系统的方法及系统。

发明内容
透过提供一有效状态管理系统及其应用,本发明满足上述确定的要求。根据本发明一实施例,提出一执行状态依赖进程(state-cbpedentprocess)的基 于计算机的系统(computer-based system)。该基于计算机的系统包括命令处理器以及多 个处理模块。该命令处理器接收命令流内的命令,并管理响应于该命令流内的全局背景事 件的全局状态。该多个处理模块接收该命令流内的所述命令,并管理响应于该命令流内的 模块背景事件的各个模块状态。该多个处理模块依据该全局状态及所述各个处理模块的模 块状态在一数据流内的数据上执行进程。根据本发明另一实施例,提出一在一ASIC内执行状态依赖进程的方法。该方法包 括管理响应于一命令流内的全局背景事件的该ASIC的全局状态、以及分别管理响应于该 命令流内的模块背景事件的多个处理模块内的每一处理模块的模块状态。该多个处理模块 依据该全局状态及所述各个处理模块的模块状态在一数据流内的数据上执行进程。根据本发明的再一实施例,提出一有形计算机可读储存媒介,包括具体表现在软 件内的ASIC,其中,该ASIC执行状态依赖进程。该ASIC包括命令处理器以及多个处理模 块。该命令处理器接收命令流内的命令,并管理响应于该命令流内的全局背景事件的全局 状态。该多个处理模块接收该命令流内的所述命令,并管理响应于该命令流内的模块背景 事件的各个模块状态。该多个处理模块依据该全局状态及所述各个处理模块的模块状态在 一数据流内的数据上执行进程。以下参考附图详细描述本发明更多的特征及优点和本发明的各种实施例的结构 及操作。注意本发明并非限制于本文描述的所述特定实施例。本文介绍的所述实施例仅作 说明目的。依据本文包含的所述教导,本领域的技术人员将明了附加的实施例。


所述附图包含在本文内并形成该说明书的一部分,所述附图与该描述一起阐述本 发明,进一步担任解释本发明的原理并使本领域技术人员能制造及使用本发明。图1描绘一阐述一范例系统的方块图,该范例系统包括根据本发明一实施例的 GPU ;图2描绘一阐述图1的GPU特征的方块图;图3描绘一阐述包含在图1的GPU内的图形流水线细节的方块图;以及图4描绘一表,该表阐述根据本发明一实施例的全局状态及模块状态的管理。从以下提出的结合附图的实施方式中,本发明的特征及优点将变得更明了。于所 述附图中,相同的参考符号始终识别相关的元件。于所述图式内,相同的参考数字大体标示 相同的、功能相似及/或结构相似的元件。对应参考数字内的该最左数位标示元件首次出 现其中的该图式。
具体实施例方式I.概述本发明提供一用于复杂ASIC的有效状态管理系统及其应用。在以下详细描述中, 关于〃 一个实施例(one embodiment)",“ 一实施例(anembodiment)“,“ 一具体实施例
5(an example embodiment)“等等表明该所述实施例可包括特定特征、结构或特色,但每一 实施例可不必然包括该特定特征、结构或特色。而且,这样的短语不必然涉及相同实施例。 此外,当结合一实施例描述特定特征、结构或特色时,我们认为在本领域的技术人员的知识 内能够结合其他实施例以变更这样的特征、结构或特色,不论所述实施例是否被明确描述。为阐述目的而非做为限制,根据本发明实施例的有效状态管理系统在本文中从 GPU的角度描述,该GPU根据该GPU的图形流水线的全局状态与模块状态执行绘图命令流 (steam of draw command)。然而,需明白的是这样的有效状态管理系统可应用于其他类型 的系统,所述其他类型的系统根据所述各个系统的状态执行命令流。根据本文所述,本领域 技术人员将了解如何在其他类型系统内实施本发明的实施例。如上所述,根据本发明一实施例的有效状态管理系统独立管理一图形流水线的 全局状态及模块状态。该全局状态包括预定数量的可能的全局状态(possible global state),例如,8个可能的全局状态。所述模块状态各自包括预定数量的可能的模块状态,例 如2、4、8、16、32、64或一些其他数量的可能的模块状态。对于每一模块,所述可能的模块状 态的数量可能不同。该全局状态可相当于与不能频繁改变的场景内所描绘的特征有关的绘 画常量,例如该场景内的光线方向。所述模块状态可相当于与该频繁改变的场景内所描绘 的特征有关的绘画常量,例如该场景所描绘的由于风所导致的草吹动的方向。如本文所使用,该术语“模块(block),,指包含在ASIC、CPU的执行流水线、及/或 GPU的图形流水线内的处理模块。这样的处理模块可包括但并非限制于算术逻辑单元、乘 法/除法单元、浮点单元、色彩缓冲器、顶点着色器(vertex shader)、像素着色器、限幅单 元(clippingimit)、Z缓冲器、或本领域技术人员明了的一些其他处理模块。由于根据本发明的实施例的图形流水线独立管理全局状态及模块状态,这样的图 形流水线可执行绘图命令,该绘图命令是以比普通图形流水线更大数量的不同值为基础。 例如普通图形流水线可典型地执行一基于多达8个不同值的绘图命令。相反地,根据本发 明的一实施例的图形流水线可执行一基于多达例如256个不同值的绘图命令。该全局状态被一命令处理器(co_and processor,简称CP)管理。该CP保持一全 局状态已使用位(globe-state dirty bit)及一全局状态识别(ID)位。该全局状态已使 用位标示该图形流水线的该全局状态是否需要更新。该全局状态ID位标示该图形流水线 的全局状态。一全局背景事件(globe context event)后,该全局状态ID位递增。全局背 景事件是一输入(数据)流(例如数据封包)内的事件,该输入流标示该全局状态待被更 新(to be updated)。该全局状态已使用位由于一绘图呼叫(draw call)而被清除。所述模块状态被该图形流水线的所述各个模块管理。该图形流水线内的每一模 块保存一模块状态已使用位及一模块状态ID位。该模块状态已使用位标示一模块的该模 块状态是否应该更新。符合一模块的该模块状态ID位标示那个模块的模块状态。在一模 块背景事件上,若下一模块状态更新符合那个模块,一模块的模块状态ID位递增。模块背 景事件是该输入(数据)流(例如数据封包)内的事件,该输入流标示一模块状态待被更 新。于一实施例中,该图形流水线内的模块根据该下一模块状态更新(next block state update)的地址区间确定该下一模块状态更新符合该模块。与该全局状态已使用位相似,该 模块状态已使用位由于一绘图呼叫而被清除。一有效状态管理系统可表达在计算机系统内,该计算机系统包括GPU。以下更详细描述这样的有效状态管理系统的一范例硬件实施及其操作。还描述这样的有效状态管理系 统的软件实施。II.有效状态管理系统的一范例硬件实施如上所述,根据本发明一实施例的有效状态管理系统可实施在一 ASIC内,该ASIC 执行一命令流。为阐述目的,并非限制,这样的有效状态管理系统是从一范例图形流水线角 度描述,该图形流水线包括在一计算机系统内,以下详细描述该计算机系统。A.范例计算机系统概述图1是根据一实施例的计算机系统100的方块图。系统100包括中央处理单元 (CPU) 102、图形处理单元(GPU) 110,且可选择地包括协同处理器(coprocessor) 112。此外, 计算机系统100包括系统存储器104,该系统存储器104可被CPU 102,GPU 110以及协同处 理器112存取。GPU 110以及协同处理器112通过总线114与CPU 102及系统存储器104 交流。总线114可以是使用在计算机系统内的任何类型总线,包括但并非限制于周边元件 扩展接口(PCI)总线、加速图形接口(AGP)总线以及高速周边元件扩展接口(PCIE)总线。 GPU 110及协同处理器112透过执行某些特殊功能帮助CPU 102,GPU 110及协同处理器 112执行所述特殊功能通常比CPU 102以软件形式执行所述特殊功能快。协同处理器112 可包括但并非限制于浮点协同处理器、GPU、联网协同处理器以及本领域技术人员明了的其 他类型的协同处理器及处理器。系统100还包括第一局部存储器106及第二局部存储器108。第一局部存储器106 耦接至GPU 110以及也耦接至总线114。第二局部存储器108耦接至协同处理器112并也 耦接至总线114。第一及第二局部存储器106、108分别对GPU 110及协同处理器112有效 以便提供尽可能更快的存取某些数据(例如频繁使用的数据),如果所述数据储存在系统 存储器104内的话。于一实施例中,GPU 110及协同处理器112与CPU 102 一起并行解码指令,并且仅 执行那些为它们准备的指令。于另一实施例中,CPU102将为GPU 110及协同处理器112准 备的指令发送至各自的命令缓冲器。例如,图2描绘一阐述一实施例的方块图,于该实施例中,CPU102将为GPU 110准 备的指令发送至一命令缓冲器202。命令缓冲器202可位于例如系统存储器104内或可为 耦接至总线114的独立存储器。如图2所示,GPU 110包括程序机204以及图形流水线206。 程序机204从命令缓冲器202取回指令。程序机204转送所述指令至图形流水线206内的 一命令处理器。以下详细描述图形流水线206。B.范例图形流水线图3描绘一方块图,该方块图阐述根据本发明一实施例的图形流水线206的细节。 如图3所示,图形流水线206包括命令处理器(CP) 310、寄存器总线管理器(register bus manager,简称RBM) 320、数据总线传送(data bus transfer,简称DBT)模块330、模块A 340a、模块B 340b、模块C 340c、以及模块D 340d。以下详细描述所述元件中的每一元件。CP 310接收例如来自程序机204的命令流内的命令,所述命令包括绘图命令、全 局状态更新以及模块状态更新。于一实施例中,每一命令包括寄存器地址。于该实施例中, 可根据包括在该命令内的该地址是否落在预定地址范围内,将一命令解析(parse)为绘图 命令、全局状态更新或模块状态更新。然而,本发明并非限制于该实施例。本领域技术人员将明了在不悖离本发明的精神及范畴下可使用解析命令的其他机制。CP 310还保存二已使用位(1)全局管理已使用(GMD)位312以标示全局状态更 新是否已被接收;(2)模块管理已使用(BMD)位314以标示模块状态更新是否已被接收。透 过例如上电成(power up as)逻辑1,GMD位312及BMD位314将已使用(组(set))上电。 透过一绘图命令清除该二位。CP 310还管理写进图形流水线206的模块340的寄存器的全局状态数量。为管理 全局状态数量,CP 310管理全局状态识别(ID),该全局状态识别(ID)标示图形流水线206 的该全局状态。该全局状态ID的范围从0变化至图形流水线206所承受的全局状态最大 数量,例如8个全局状态。当GPU 110被上电,该全局状态ID被设置处于0状态。如下详 细所述,一全局背景事件被接收以及一新的全局状态写进图形流水线206之后,该全局状 态ID递增。图形流水线206(例如模块D340d)内的一最后的模块发送一脉冲回至CP 310 之后,一全局状态ID被释放(且之后可被重新使用)。例如,CP 310可将该全局状态ID从 0递增至1,但全局状态ID 0不能被重新使用直到该最后模块发送一脉冲回至CP 310标示 与全局状态ID 0相对应的该背景已结束。CP 310耦接至RBM 320。CP 310写所述绘图命令、所述全局状态更新及所述模块 状态更新至RBM 320。如下详细所述,分配给图形流水线206的全局状态数量由CP 310管理。RBM 320耦接至DBT模块330。RBM 320写所述绘图命令、所述全局状态更新及所 述模块状态更新至DBT模块330。如下详细所述,分配给图形流水线206的模块状态数量由 RBM 320及所述各个模块340共同管理。DBT模块330透过数据总线380及寄存器总线(控制总线)390耦接至模块A 340a、模块B 340b、模块C 340c以及模块D 340d。数据总线380提供输入(数据)流至模 块340。模块A 340a到模块D 340d以串接链方式(daisy chain manner)耦接至数据总线 380。也就是说模块A 340a在该输入流内的数据上执行进程,接着将该数据发送至模块B 340b;模块B 340b在该输入流内的该数据上执行进程,接着将该数据发送至模块C 340c; 模块C 340c在该输入流内的该数据上执行进程,接着将该数据发送至模块D 340d;以及模 块D 340d在该输入流内的该数据上执行进程,接着将该数据输出作为图形流水线206的输 出。模块D 340d在一给定全局背景的该数据上执行进程之后,模块D 340d发送一脉冲回至 CP 310以标示与该给定全局背景相关的该全局状态ID可被重新分配。除提供一输入(数 据)流之外,数据总线380提供全局背景事件及模块背景事件给模块340。于一实施例中, 数据总线380是一百位宽。寄存器总线390提供命令给模块340,所述命令包括绘图命令、全局状态更新以及 模块状态更新。一绘图命令根据分配给该绘图命令的该全局状态及该(所述)模块状态指 示模块340在自数据总线380接收的该数据上执行绘图。全局状态更新被写进所述各个模块保持的局部寄存器。如图3所述,模块A 340a 写所述全局状态更新至寄存器文件A 342内的寄存器;模块B 340b写所述全局状态更新至 寄存器文件B 352内的寄存器;模块C 340c写所述全局状态更新至寄存器文件C 362内的 寄存器;以及模块D 340d写所述全局状态更新至寄存器文件D 372内的寄存器。模块状态更新仅仅被写至图形流水线206内特定模块。例如寄存器总线390上的
8一模块状态更新可仅为模块B 340b准备。于该实施例中,仅模块B 340b将会写该模块状 态更新至寄存器文件B 352内的一寄存器内。所有其他模块将不会写该模块状态更新至它 们各自保持的局部寄存器文件内的寄存器。于一实施例中,一模块状态更新包括地址。于 该实施例中,每一模块340根据该模块状态更新的地址决定其是否应该写该模块状态更新 至它的局部寄存器文件。然而,本领域技术人员将明了在不悖离本发明的精神及范畴下,可 使用决定特定模块是否应该写一模块状态更新至它的局部寄存器的其他机制。给定图形流水线206结构,以下详细描述其操作。III.有效状态管理系统的范例操作如上所述,图形流水线206独立管理全局状态更新及模块状态更新,因此,使图形 流水线206能够根据相对大数量的不同绘图常量执行绘图命令。首先,介绍全局管理状态 及模块管理状态的概述。接着,介绍一限制分配该图形流水线206的全局状态及模块状态 数量的范例方式。最后,介绍一系列范例事件以阐述根据本发明一实施例的有效状态管理 系统的操作。A.全局及模块管理状态转变CP 310管理全局状态更新。如果CP 310检测到该命令流内的一全局状态更新 以及如果图形流水线206内有可被写的全局状态寄存器,CP 310将执行以下功能(i)设 置GMD位312 (如果GMD位312还未被设置);(ii)发送一全局背景事件(即“Global_ Context.Done")给RBM320,RBM 320在数据总线380上提供该全局背景事件;(iii)递增 该全局状态ID位;(iv)写给在CP 310内的GBL_C0PY_STATE寄存器;以及(ν)发送该全 局状态更新给RBM 320,RBM 320在寄存器总线390上提供该全局状态更新。然而,如果CP 310检测到该命令流内的一全局状态更新,但图形流水线206内没有可用的全局状态寄存 器,前述写给该GBL_C0PY_STATE寄存器暂缓直到一背景可用。GMD位312被用于标示一背 景已为了这组状态被滚动。如果BMD位314未被设置且CP 310检测到该命令流内的模块状态更新,CP310将 设置BMD位314,发送被所述模块状态更新跟随的Bl0Ck_C0ntext_D0ne事件。由CP 310及 各个的模块340保存的所述已使用位被设置成标示一背景已为了这组状态被滚动。如果没 有可用的模块状态寄存器,该目标模块(例如模块B 340b)若不再接收寄存器更新,则该目 标模块(例如模块B 340b)为不能恢复空闲负责。藉由章节III. C所提供的一系列范例事件进一步阐述该全局及模块管理状态转 变的操作。B.管理分配给本发明一实施例的图形流水线的全局状态及模块状态的数量。分配给图形流水线206的全局状态数量由CP 310管理,但是,分配给图形流水线 206的模块状态数量由RBM 320及所述各个模块340共同管理。现在详细描述管理全局状 态及模块状态数量的机制。CP 310不断地写绘图命令及模块状态更新给RBM 320。然而,如果所分配的全局 状态数量小于图形流水线206所承受的全局状态最大数量,CP 310仅写全局状态更新给 RBM 320。即,分配给图形流水线206的全局状态数量由CP 310管理。RBM 320不断地写绘图命令及全局状态更新给DBT模块330。然而,如果所分配的 模块状态数量小于图形流水线206的模块340所承受的模块状态的最大数量,RBM 320仅写模块状态更新给DBT模块330。DBT模块330根据接收自模块340的信号决定模块状态数 量是否小于该最大数量。即,RBM 320及所述各个模块340管理分配给图形流水线206的 模块状态更新数量。如上所述,RBM 320及模块340共同起作用以调节(throttle)写进图形流水线 206的模块状态更新数量。如图3所述,模块340分别透过迹线344、354、364及374连接至 RBM 320。只要分配给所述模块的模块状态数量小于每一模块的模块状态的最大数量,RBM 320写模块状态更新给DBT模块330,DBT模块330依次(in turn)写所述模块状态更新至 寄存器总线390。然而如果一个模块340的模块更新数量达到那个模块的模块状态最大数 量,那个模块不返回“空闲(free) ”信号给RBM 320。因此,RBM 320暂缓直到先前发布的绘 图命令完成执行以及分配给那个绘图命令的该模块状态(或所述模块状态)被解除分配。C. 一系列范例事件图4描绘表400,表400阐述图形流水线206如何响应于一系列范例事件。如图4 所示,表400包括8列。第一列410包括行号(linenumber),所述行号列举所接收到的该一 系列事件。第二列420包括CP 310所接收的并被写至寄存器总线390的范例事件。第三 列430包括该提供在数据总线380上的输入(数据)流。第四列440标示CP 310的GMD 位312的状态。第五列450包括CP 310的BMD位314的状态。第六列460包括全局状态 ID,该全局状态ID标示图形流水线206的全局状态。第七列470标示一模块已使用位的状 态及模块A 340a的模块背景标志位。以及第八列480标示模块A 340a的一模块状态ID。 第七列470及第八列480阐述模块A 340a如何响应于该一系列范例事件。本领域技术人 员将了解模块B 340b、模块C 340c、模块D 340d以与模块A 340a相同的方式运行。现详 细描述由第一列410内的行号所列举的该一系列事件。参考表400第一列410,如第四列440及第五列450所分别描述,行1阐述GMD位 312及BMD位314是被上电已使用(power up dirty)(即逻辑1)。此外,第七列470阐述 模块A 340a的已使用位也被上电已使用(及逻辑1)。于行2及3内,一模块状态及一全局 状态被分别接收。所述状态写(state write)不能引起任何状态改变。于行4 内,一 Draw_Initiator_in_Context_(Ctx)_0 命令被接收。如第四列 440、 第五列450及第七列470分别所述,这个绘图命令清除GMD位312、BMD位314以及由模块 A 340a管理的该已使用位。该绘图命令被执行在数据总线380上所提供的数据上。第三列 430标示这个数据包括顶点/像素矢量(vertex/pixel vectors)。于行5内,Global_Context_Done命令被接收。这个命令标示全局背景0已经结 束。因此,该全局背景事件(Ctx Done Event)被提供在数据总线380上以指示图形流水线 206内的模块340该全局背景0已经结束。于一实施例内,该背景完成事件是一数据封包。于行6内,一写GBL_C0PY_STATE命令被接收。这个命令标示一个新全局状态将被 写进图形流水线206的所述寄存器。由于这个命令,如第四列440所标示,GMD位312被设 置。此外,如第六列460所标示,该全局状态ID位被递增至1以标示图形流水线206正进 入一新的全局状态。于行7内,与全局背景1相对应的该全局状态更新被接收且被写进图形流水线206 的所述寄存器。于行8内,DraW_Initiat0r_in_CtX_l命令被接收。这个绘图命令清除先前设置的
10唯一的已使用位,即第四列440所述的GMD位312。与行4所接收的Draw_Initiator_in_ Ctx_0相似,该Draw_Initiator_in_Ctx_l命令被执行在数据总线380上携带(carry)的顶
点/像素矢量上。于行9内,一 Block_Context_Done事件被接收。这个命令标示所述模块背景中的 一个模块背景已被完成。因此,BMD位314被设置(如第五列450所述)且一模块背景事件 (Blk_Ctx_Done_Event)被提供在数据总线380上。如第七列470所标示,模块A 340a检测 这个事件,但并不初始设置它的已使用位。模块A 340a不初始设置其已使用位是因为仍然 未确定这个模块事件是否与模块A 340a相对应。这个模块事件可与图形流水线206内的 任一模块340相对应。于行10内,一模块状态(BloCk_State)(包括BlkA状态)命令被接收,该命令标 示这个模块事件与模块A 340a相对应。因此,分别如第七列470及第八列480所标示,模 块A 340a设置它的已使用位并递增它的状态ID。如上所述,于一实施例中,该命令流内的 所述命令包括地址,且由于该BloCk_State的地址落入与模块A 340a相对应的预定地址范 围,模块A 340a决定该BloCk_State应该被写进寄存器文件A 342内的一寄存器。于行11内,Gl0bal_C0nteXt_D0ne命令被接收。这个命令标示全局背景1已结束。 因此,一全局背景事件(Ctx_D0ne_Event)被提供在数据总线380上,以指示图形流水线206 内的模块340全局背景1已结束。于行12内,写GBL_C0PY_STATE命令被接收,与行6所接收的写GBL_C0PY_STATE 命令相似,该接收在行12内的命令标示一新的全局状态将被写进图形流水线206的所述寄 存器。由于这个命令,如第四列440所标示,GMD位312被设置。此外,如第六列460所标 示,该全局状态ID位被递增至2,以标示图形流水线206正进入一个新的全局状态。于行13内,与全局背景2相对应的该全局状态更新被接收且写进图形流水线206 的所述寄存器。于行14内,DraW_Initiat0r_in_CtX_2命令被接收,这个绘图命令清除先前设置 的所述已使用位,所述已使用位即分别如第四列440、第五列450及第七列470所述的GMD 位312、BMD位314以及由模块A 340a管理的该已使用位。与行4所接收的Draw_Initiator_ in_Ctx_0 及行 8 所接收的 Draw_Initiator_in_Ctx_l 相似,该 Draw_Initiator_in_Ctx_2 命令被执行在提供于数据总线380上的顶点/像素矢量上。于行15内,Block_Context_Done事件被接收。这个命令标示所述模块背景中的 一个模块背景已完成。因此,BMD位314被设置(如第五列450所述),且一模块背景事件 (Blk_Ctx_Done_Event)被写进数据总线380。如第七列470所标示,模块A 340a检测这个 事件,但并不初始设置它的已使用位。于行16内,模块状态(BloCk_State)(非BlkA状态)命令被接收,该命令标示这 个模块事件与模块A 340a不对应。因此,分别如第七列470及第八列480所标示,模块A 340a不设置其已使用位,也不递增它的状态ID。于一实施例中,因为这个BloCk_State的 地址没有落入与模块A 340a相对应的预定地址范围,模块A 340a决定这个BloCk_State 不应该被写入寄存器文件A 342内的一寄存器。于行17内,另一 DraW_Initiat0r_in_CtX_2命令被接收,这个绘图命令清除先前 设置的所述已使用位,所述已使用位即分别如第四列440、第五列450及第七列470所述的
11GMD位312、BMD位314以及由模块A 340a管理的该已使用位。与先前接收的其他Draw_ Initiator命令相似,这个Draw_Initiator_in_Ctx_2命令被执行在于数据总线380上携带
的顶点/像素矢量上。以与上述相似方式接收及处理附加事件。需注意上面介绍的该一系列范例事件仅 作为说明目的,并非以此限制本发明。IV.有效状态管理系统的范例软件应用除了 GPU 110的硬件应用之外,GPU 110也可被具体表现在所处理的软件内,例如 配置用以存储该软件的计算机可用(即可读)媒介(例如计算机可读程序代码)内。该 程序代码促使本发明的实施例实现,包括以下实施例(i)本文所揭示的所述系统及技术 (例如管理全局状态更新及模块状态更新)的所述功能;(ii)本文所揭示的所述系统及技 术的制造(例如GPU 110的制造);或(iii)本文所揭示的所述系统及技术的功能及制造 的组合。例如,这可透过使用一般的编程语言(例如C或C++)、包括Verilog HDL, VHDL, Altera HDL(AHDL)等的硬件描述语言(HDL)、或其他可获得的编程及/或图表捕捉工具 (schematiccapture tool)(例如电路捕捉工具)来完成。该程序代码可被任何已知计算机可读媒介处理,该任何已知计算机可读媒介包括 半导体、磁碟、光碟(例如CD-ROM,DVD-ROM)并作为具体表现在一计算机可使用(即可读) 传播媒介(例如载波或包括数字的(digital)、光的或以模拟为基础(analog-based)的媒 介的任何其他媒介)内的一计算机数据信号。就这点而论,该代码可通过通讯网络传播,所 述通讯网络包括互连网(internet)。需了解所述实现的功能及/或上述系统及技术所提供 的结构可被表现在一核心(例如GPU核心)内,该核心被具体表现在程序代码内并可被转 变成硬件以作为集成电路产品一部分。V.结论需明白的是该实施方式章节(并非发明说明(Summary)及摘要(Abstract)章节) 意图被使用以解释权利要求。该发明说明及摘要章节可阐明如发明人所周密考虑的本发明 的一个或多个但并非全部具体实施例,因此,并非意图以任何方式限制本发明及附加的权 利要求。
权利要求
一种用以执行状态依赖进程的基于计算机的系统,该系统包括命令处理器,该命令处理器接收命令流内的命令,并管理响应于该命令流内的全局背景事件的全局状态;以及多个处理模块,所述处理模块接收该命令流内的所述命令,并管理响应于该命令流内的模块背景事件的各个模块状态,其中,每一处理模块分别依据该全局状态及所述各个处理模块的模块状态在数据流内的数据上执行进程。
2.如权利要求1所述的系统,其中,第一处理模块管理第一数量的模块状态,第二处理 模块管理第二数量的模块状态,其中,该第一数量不等于该第二数量。
3.如权利要求1所述的系统,还包括接口模块,该接口模块管理每一处理模块的计数器,该计数器与所述各个处理模块内 储存的若干状态相对应,且如果任何处理模块的计数器超过一阈值,该接口模块暂缓该命 令流内的所述命令。
4.如权利要求1所述的系统,其中,该命令处理器管理与该全局状态相对应的全局状 态计数器,且如果该全局状态计数器超过一阈值,该命令处理器暂缓该命令流内的所述命 令。
5.如权利要求1所述的系统,其中,该命令处理器仅在接收到空闲信号后重新分配第 一全局状态,该空闲信号来自该多个处理模块中最终的处理模块。
6.如权利要求1所述的系统,其中,该基于计算机的系统包括图形处理单元。
7.一种在专用集成电路ASIC内执行状态依赖进程的方法,该方法包括管理该ASIC的全局状态,该全局状态响应于命令流内的全局背景事件;分别管理多个处理模块内的每一处理模块的模块状态,该模块状态响应于该命令流内 的模块背景事件;以及依据该全局状态及该各个处理模块的模块状态,在该多个处理模块的每一处理模块内 的数据流内的数据上执行进程。
8.如权利要求7所述的方法,其中,分别管理响应于该命令流内的模块背景事件的多 个处理模块内的每一处理模块的模块状态包括管理第一处理模块内的第一数量的模块状态以及第二处理模块内的第二数量的模块 状态,其中,该第一数量不等于该第二数量。
9.如权利要求7所述的方法,还包括管理每一处理模块的计数器,该计数器与所述各个处理模块内储存的若干状态相对 应;以及如果任何处理模块的计数器超过一阈值,暂缓该命令流内的所述命令。
10.如权利要求7所述的方法,其中,管理响应于命令流内的全局背景事件的该ASIC的 全局状态包括管理与该全局状态相对应的全局状态计数器;以及如果该全局计数器超过一阈值,暂缓该命令流内的所述命令。
11.如权利要求7所述的方法,其中,管理响应于命令流内的全局背景事件的该ASIC的 全局状态包括仅在接收到空闲信号后重新分配第一全局状态,该空闲信号来自该多个处理模块内的最终的处理模块。
12.—种有形计算机可读储存媒介,包括具体表现在软件内的ASIC,其中该ASIC执行 状态依赖进程,该ASIC包括命令处理器,该命令处理器接收命令流内的命令,并管理响应于该命令流内的全局背 景事件的全局状态;以及多个处理模块,所述处理模块被配置以接收该命令流内的所述命令并管理响应于该命 令流内的模块背景事件的各个模块状态,其中,每一处理模块分别依据该全局状态及该各 个处理模块的模块状态在数据流内的数据上执行进程。
13.如权利要求12所述的有形计算机可读储存媒介,其中,第一处理模块管理第一数 量的模块状态,第二处理模块管理第二数量的模块状态,其中,该第一数量不等于该第二数 量。
14.如权利要求12所述的有形计算机可读储存媒介,其中,该ASIC还包括接口模块,该接口模块管理每一处理模块的计数器,该计数器与所述各个处理模块内 储存的若干状态相对应,且如果任何处理模块的计数器超过一阈值,该接口模块暂缓该命 令流内的所述命令。
15.如权利要求12所述的有形计算机可读储存媒介,其中,该命令处理器管理与该全 局状态相对应的全局状态计数器,且如果该全局状态计数器超过一阈值,该命令处理器暂 缓该命令流内的所述命令。
16.如权利要求12所述的有形计算机可读储存媒介,其中,该命令处理器仅在接收到 空闲信号后重新分配第一全局状态,该空闲信号来自该多个处理模块内最终的处理模块。
17.如权利要求12所述的有形计算机可读储存媒介,其中,该ASIC包括图形处理单元。
18.如权利要求12所述的有形计算机可读储存媒介,其中,该ASIC被具体表现在硬件 描述语言软件内。
19.如权利要求12所述的有形计算机可读储存媒介,其中,该ASIC被具体表现在 Verilog硬件描述语言软件及VHDL硬件描述语言软件其中之一内。
全文摘要
本发明提供一种复杂ASIC的有效状态管理系统及其应用。在一实施例中,基于计算机的系统执行依赖状态进程。该基于计算机的系统包括命令处理器(CP)以及多个处理模块。该命令处理器接收命令流内的命令,并管理响应于该命令流内的全局背景事件的全局状态。该多个处理模块接收该命令流内的所述命令,并管理响应于该命令流内的模块背景事件的各个模块状态。每一处理模块分别依据该全局状态及该各个处理模块的模块状态在一数据流内的数据上执行进程。
文档编号G06T1/20GK101918982SQ200880122341
公开日2010年12月15日 申请日期2008年12月23日 优先权日2007年12月26日
发明者M·曼特, R·E·麦克拉里 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1