用于在虚拟执行环境中进行高效的图形处理的装置和方法_3

文档序号:9756863阅读:来源:国知局
单元指令具有多达3个操作数,该3个操作数包括2个源操作数(srcO 722、srcl 722)以及一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中 一个目的地是隐含的。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中指令 操作码JJ12确定源操作数的数量。指令的最后的源操作数可以是随指令传递的立即值。
[0083] 在一个实施例中,基于操作码位字段而将指令分组以简化操作码解码740。对于8 位操作码,位4、5和6允许执行单元来确定操作码的类型。示出的精确操作码分组是示例 性的。在一个实施例中,移动和逻辑操作码分组742包括数据移动和逻辑指令(例如,mov、 cmp)。移动和逻辑分组742共享五个最重要的位(MSB),其中,移动指令是按照OOOOxxxxb 的形式(例如,〇x〇x),并且逻辑指令是是按照OOOlxxxxb的形式(例如,0x01)。流控制指令 分组744 (例如,call、jmp)包括按照00lOxxxxb形式(例如,0x20)的指令。混杂指令分组 746包括指令的混合,其包括按照OOllxxxxb形式(例如,0x30)的同步指令(例如,wait、 send)。并行数学指令组748包括按照OlOOxxxxb形式(例如,0x40)的逐个组件的算术指 令(例如,add、mul)。并行数学分组748跨数据通道并行地执行算术操作。向量数学分组 750包括按照OlOlxxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学分组执行 算术,例如关于向量操作数的点乘运算。
[0084] 图形管线-图8
[0085] 图8是图形处理器的另一个实施例的方框图,其中,图形处理器包括图形管线 820、媒体管线830、显示引擎840、线程执行逻辑850,以及渲染输出管线870。在一个实施例 中,图形处理器是在包括一个或多个通用处理核心的多核心处理系统中的图形处理器。通 过寄存器向一个或多个控制寄存器(未示出)写入或通过经由环形互连802发出至图形处 理器的命令来控制图形处理器。环形互连802将图形处理器耦合至其他处理组件,例如其 他图形处理器或通用处理器。来自环形互连的命令由命令流式传输器803解释,其中命令 流式传输器803向图形管线820或媒体管线830的多个的组件提供指令。
[0086] 命令流式传输器803引导顶点收取器805 (vertex fetcher)组件的操作,其中顶 点收取器805从存储器中读取顶点数据并且执行由命令流式传输器803提供的顶点处理命 令。顶点收取器805向顶点着色器807提供顶点数据,其中顶点着色器向每个顶点执行坐 标空间变换和点亮操作。顶点收取器805和顶点着色器807通过将执行线程经由线程分派 器831分派至执行单元852A、852B来执行顶点处理指令。
[0087] 在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集 的向量处理器的阵列。执行单元852A、852B具有专用于每个阵列或在阵列间被共享的附接 的L1高速缓存851。可以将高速缓存配置为数据高速缓存、指令高速缓存、或被分区以在不 同的分区中包含数据和指令的单个高速缓存。
[0088] 在一个实施例中,图形管线820包括用于执行对3D物体的硬件加速的曲面细分的 曲面细分组件。可编程外壳着色器811配置曲面细分操作。可编程的域着色器提供曲面细 分操作的后端评价。曲面细分器813在外壳着色器811的方向上运行并包含专用逻辑,其 中所述专用逻辑用于基于被提供为到图形管线820的输入的粗略几何模型而生成一组精 细几何物体。如果不使用曲面细分,则可以绕过曲面细分组件811、813、817。
[0089] 完整的几何物体可以通过几何着色器经由被分派到执行单元852A、852B的一个 或多个线程来处理,或者可以直接进行到剪裁器829。几何着色器对整个几何物体进行操 作,而不是像在图形管线的之前的阶段中那样对顶点或多个顶点进行操作。如果曲面细分 被禁用,则几何着色器819从顶点着色器807接收输入。如果曲面细分被禁用,则几何着色 器819可由几何着色器程序编程以运行几何曲面细分。
[0090] 在光栅化之前,顶点数据由剪裁器829处理,其中所述剪裁器是固定功能的剪裁 器或是具有剪裁和几何着色器功能的可编程的剪裁器。在一个实施例中,渲染输出管线870 中的光栅化程序873分派像素着色器以将几何物体转换成它们的每像素的表示。在一个实 施例中,像素着色器逻辑包含在线程执行逻辑850中。
[0091] 图形引擎具有互连总线、互连结构、或允许数据和消息在图形引擎的主要组件之 间传递的一些其他互连机制。在一个实施例中,执行单元852A、852B和关联的高速缓存 851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口 856互连以执行 存储器访问并与图形引擎的渲染输出管线组件进行通信。在一个实施例中,采样器854、高 速缓存851、858和执行单元852A、852B每个都具有单独的存储器访问路径。
[0092] 在一个实施例中,渲染输出管线870包含将基于顶点的物体转换成它们关联的基 于像素的表示的光栅化和深度测试组件873。在一个实施例中,光栅化逻辑包括用于运行 固定功能数据线光栅化和线光栅化的窗口器/掩蔽器单元。在一个实施例中,关联的渲染 和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操 作,尽管在一些实例中,与2D操作关联的像素操作由2D引擎841执行,或者在显示时使用 叠加显示平面而由显示控制器843来代替。在一个实施例中,共享的L3高速缓存875对所 有的图形组件可用,以允许在不使用主系统存储器的情况下共享数据。
[0093] 图形处理器媒体管线830包括媒体引擎337和视频前端834。在一个实施例中, 视频前端834接收来自命令流式传输器803的管线命令。然而,在一个实施例中,媒体管线 830包括单独的命令流式传输器。视频前端834在将命令发送到媒体引擎837之前处理媒 体命令。在一个实施例中,媒体引擎包括线程生成功能以生成用于经由线程分派器831分 派至线程执行逻辑850的线程。
[0094] 在一个实施例中,图形引擎包括显示引擎840。在一个实施例中,显示引擎840在 图形处理器外部,并经由环形互连802或一些其他互连总线或结构而与图形处理器耦合。 显示引擎840包括2D引擎841和显示控制器843。显示引擎840包含能够独立操作3D管 线的专用逻辑。显示控制器843与显示设备(未示出)耦合,其中所述显示设备可以是系 统集成的显示设备(如在膝上型计算机中),或者是经由显示设备连接器附接的外部显示 设备。
[0095] 图形管线820和媒体管线830可被配置以基于多个图形和媒体程序接口而执行 操作,并且不专用于任何一个应用编程接口(API)。在一个实施例中,图形处理器的驱动 程序软件将专用于特定的图形或媒体库的API调用转换成可以由图形处理器处理的命 令。在各个实施例中,对于开放图形语言(OpenGL)和由Khronos集团支持的开放计算语言 (OpenCL)、来自微软公司的Direct3D库、或者在一个实施例中OpenGL和D3D同时的支持。 也可以对开源计算机视觉库(OpenCV)提供了支持。如果可以进行从未来API的管线到图 形处理器的管线的映射,则也将支持具有兼容的3D管线的未来的API。
[0096] 图形管线程序-图9A-B
[0097] 图9A是示出了根据实施例的图形处理器命令格式的方框图,而图9B是示出了根 据实施例的图形处理器命令序列的方框图。图9A中的实线方框示出了通常包括在图形命 令中的组件,而虚线包括可选的或只包括在图形命令的子集中的组件。图9A的示例性图形 处理器命令格式900包括用于标识命令的目标客户902、命令操作代码(操作码)904、以及 命令的相关数据906的数据字段。在一些命令中也包括子操作码905和命令大小908。
[0098] 客户902指定了处理命令数据的图形设备的客户单元。在一个实施例中,图形处 理器命令解析器检查每个命令的客户字段以适应于对命令的进一步处理并将命令数据路 由至合适的客户单元。在一个实施例中,图形处理器客户单元包括存储器接口单元、植染单 元、2D单元、3D单元和媒体单元。每个客户单元具有处理命令的对应的处理管线。一旦由客 户单元接收到命令,客户单元就读取操作码904和子操作码905 (如果存在)以确定操作从 而执行。客户单元使用在命令的数据906字段中的信息来执行命令。对于一些命令来说, 期望明确的命令大小908以指定命令的大小。在一个实施例中,命令解析器基于命令操作 码自动地确定至少一些命令的大小。在一个实施例中,经由多个双字来使命令对齐。
[0099] 图9B中的流程图示出了示例命令序列910。在一个实施例中,以图形处理器的实 施例为特征的数据处理系统的软件或固件,使用示出的命令序列的版本以设置、执行、并终 止一组图形操作。为了示例性的目的示出并描述了示例命令序列,然而实施例不限于这些 命令或该命令序列。此外,命令可以作为命令序列中的批量命令而发出,使得图形处理器将 按照至少部分地同时的方式处理命令序列。
[0100] 示例命令序列910可以开始于用于使得任何活动的图形管线完成管线的当前待 完成的命令的管线清理(flush)命令。在一个实施例中,3D管线922和媒体管线924不同 时运行。执行管线清理以使得活动的图形管线完成任何待完成的命令。响应于管线清理, 图形处理器的命令解析器将暂停命令处理,直到活动的绘图引擎完成待完成的操作以及使 相关的读取高速缓存无效。可选地,可以将渲染高速缓存中被标记为"脏"的任何数据清理 到存储器中。管线清理命令912可以用于管线同步,或者可以在将图形处理器置于低功率 状态之前使用。
[0101] 当命令序列要求图形处理器在管线之间清楚地切换时,使用管线选择命令913。除 非环境是要同时为两个管线发出命令,否则仅在发出管线命令之前,在执行环境内要求一 次管线选择命令913。在一个实施例中,紧接在经由管线选择命令913的管线切换之前,要 求管线清理命令912。
[0102] 管线控制命令914配置图形管线以用于操作,并且管线控制命令914用于对3D管 线922和媒体管线924进行编程。管线控制命令914配置活动管线的管线状态。在一个实 施例中,管线控制命令914用于管线同步,并用于在处理批量的命令之前从活动管线内的 一个或多个高速缓存中清除数据。
[0103] 返回缓冲器状态命令916用于配置一组返回缓冲器以供相应的管线来写入数据。 一些管线操作要求对一个或多个返回缓冲器的分配、选择、或配置,其中,操作在处理过程 中将立即数据写入所述返回缓冲器中。图形处理器也使用一个或多个返回缓冲器以存储输 出数据并执行跨线程通信。返回缓冲器状态916包括选择返回缓冲器的大小和数量以供一 组管线操作使用。
[0104] 命令序列中剩余的命令基于针对操作的活动管线而不同。基于管线确定920,将命 令序列定制为开始于3D管线状态930的3D管线922,或开始于媒体管线状态940的媒体管 线 942。
[0105] 3D管线状态930的命令包括针对顶点缓冲器状态、顶点元素状态、常色状态、深度 缓冲器状态、以及在处理3D图元命令之前要被配置的其他状态变量的3D状态设置命令。这 些命令的值至少部分地基于在使用的特定的3D API来确定。如果将不使用特定的管线元 素,则3D管线状态930命令也可以选择性地禁用或跳过这些元素。
[0106] 3D图元932命令用于提交要被3D管线处理的3D图元。经由3D图元932命令传 递到图形处理器的命令和相关的参数被转发到图形管线中的顶点收取功能。顶点提取功能 使用3D图元932命令数据以生成顶点数据结构。顶点数据结构存储在一个或多个返回缓 冲器中。3D图元932命令用于经由顶点着色器而在3D图元上执行顶点操作。为了处理顶 点着色器,3D管线922将着色器执行线程分派到图形处理器执行单元。
[0107] 3D管线922经由执行934命令或事件触发。在一个实施例中,寄存器写入触发命 令执行。在一个实施例中,经由命令序列中的"go"或"kick"命令而触发执行。在一个实 施例中,使用管线同步命令来触发命令执行以穿过图形管线清理命令序列。3D管线将执行 对3D图元的几何处理。一旦操作完成,所得到的几何物体被光栅化并且像素引擎给所得到 的像素上色。这些操作也可以包括用于控制像素着色器和像素后端操作的额外的命令。
[0108] 当执行媒体操作时,示例命令序列910遵循媒体管线924路径。通常来说,对媒体 管线924编程的具体的使用和方式取决于将被执行的媒体或计算操作。在媒体解码的过程 中,特定的媒体解码操作可以被卸载(offload)至媒体管线。媒体管线也可以被跳过,并且 可以使用由一个或多个通用处理核心提供的资源来整体或部分地执行媒体解码。在一个实 施例中,媒体管线也包括通用图形处理器单元(GPGPU)操作的元素,其中图形处理器用于 使用(不明确地与图形原型的渲染相关的)计算着色器程序来执行sn?向量操作。
[0109] 按照与3D管线922相似的方式配置媒体管线924。一组媒体管线状态命令940在 媒体对象命令942之前被分派或被置于命令队列中。媒体管线状态命令940包括用于配置 媒体管线元素的数据,其中所述媒体管线元素将用于处理媒体对象。这包括用于在媒体管 线内配置视频解码和视频编码逻辑的数据,例如编码或解码格式。媒体管线状态命令940 也支持指向包含一批状态设置的"间接"状态元素的一个或多个指针的使用。
[0110] 媒体对象命令942提供指向用于由媒体管线处理的媒体对象的指针。媒体对象包 括存储器缓冲器,所述存储器缓冲器包括将被处理的视频数据。在一个实施例中,在发出媒 体对象命令942之前,所有媒体管线状态必须是有效的。一旦配置了管线状态并且媒体对 象命令942被排入队列,媒体管线924就经由执行934命令或等效的执行事件(例如,寄存 器写入)而触发。然后,由3D管线922或媒体管线924提供的操作可以对来自媒体管线 924的输出进行后期处理。
[0111] 图形软件构架-图10
[0112] 图10示出了根据实施例的数据处理系统的示例性图形软件构架。软件构架包括 3D图形应用程序1010、操作系统1020、以及至少一个处理器1030。处理器1030包括图形 处理器1032以及一个或多个通用处理器核心1034。图形应用程序1010和操作系统1020 每个都在数据处理系统的系统存储器1050中执行。
[0113] 在一个实施例中,3D图形应用程序1010包含一个或多个着色器程序,其中所述着 色器程序包括着色器指令1012。着色器语言指令可以是按照高级着色器语言的,例如高级
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1