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

文档序号:9756863阅读:来源:国知局
图形处理器300包括视频编码解码引擎306以用于 编码、解码、或将媒体转码为一个或多个媒体编码格式、从一个或多个媒体编码格式转码、 或在一个或多个媒体编码格式之间转码,其中一个或多个媒体编码格式包括但不限于运动 图像专家组(MPEG)格式(例如MPEG-2)、高级视频编码(AVC)格式(例如H. 264/MPEG-4 AVC)、和电影与电视工程师学会(SMPTE)421M/VC-1、以及联合图像专家组(JPEG)格式(例 如JPEG和动态JPEG格式)。
[0055] 在一个实施例中,图形处理器300包括用于执行包括例如位边界块传输的二维 (2D)光栅化操作的块图像传输(BLIT)引擎304。然而,在一个实施例中,2D图形操作是使 用图形处理引擎(GPE)370的一个或多个组件来执行的。图形处理引擎310是用于执行包 括三维(3D)图形操作和媒体操作在内的图形操作的计算引擎。
[0056] GPE 310包括用于执行例如使用对3D图元(primitive)形状(例如,矩形、三角形 等)起作用的处理函数来渲染三维图像和场景的3D操作的3D管线312。3D管线312包括 在元件内执行各种任务和/或向3D/媒体子系统315生成执行线程的可编程和固定的功能 元件。尽管3D管线312可以用于执行媒体操作,但是GPE 310的实施例也包括专用于执行 媒体操作(例如视频的后期处理和图像增强)的媒体管线316。
[0057] 在一个实施例中,媒体管线316包括用于执行一个或多个专门的媒体操作(例如, 代替或代表视频编码解码引擎306进行的视频解码加速、视频去隔行、视频编码加速)的固 定功能的或可编程的逻辑单元。在一个实施例中,媒体管线316另外包括用于生成线程以 供在3D/媒体子系统315上执行的线程生成单元。生成的线程执行对在包括在3D/媒体子 系统中的一个或多个图形执行单元上的媒体操作的计算。
[0058] 3D/媒体子系统315包括用于通过3D管线312和媒体管线316来执行生成的线 程的逻辑。在一个实施例中,管线向3D/媒体子系统315发送线程执行请求,其中3D/媒体 子系统315包括用于将多种请求仲裁并分派到可用的线程执行资源的线程分派逻辑。执行 资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子系 统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,子系统也 包括共享的存储器(包括寄存器和可寻址存储器)以用于在线程间共享数据并且用于存储 输出数据。
[0059] 3D/媒体处理-图4
[0060] 图4是图形处理器的图形处理引擎410的实施例的方框图。在一个实施例中,图 形处理引擎(GPE)410是图3中所示的GPE 310的一个版本。GPE 410包括3D管线412和 媒体管线416,其中的每个都可以不同于或相似于图3的3D管线312和媒体管线316的实 施。
[0061] 在一个实施例中,GPE 410与向GPE 3D和媒体管线412提供命令流的命令流式传 输器403耦合。命令流式传输器403耦合至可以是系统存储器、一个或多个内部高速缓存 存储器和共享的高速缓存存储器的存储器。命令流式传输器403接收来自存储器的命令, 并将命令发送至3D管线412和/或媒体管线416。3D和媒体管线通过经由在各自的管线 内的逻辑执行操作或通过将一个或多个执行线程分派至执行单元阵列414来处理命令。在 一个实施例中,执行单元阵列414是可扩展的,使得所述阵列基于GPE 410的目标功率和性 能等级而包括可变数量的执行单元。
[0062] 采样引擎430与存储器(例如,高速缓存存储器或系统存储器)和执行单元阵列 414耦合。在一个实施例中,采样引擎430为可扩展执行单元阵列414提供允许执行阵列 414从存储器中读取图形和媒体数据的存储器访问机制。在一个实施例中,采样引擎430包 括用于执行对媒体的专门的图像采样操作的逻辑。
[0063] 采样引擎430中的专门的媒体采样逻辑包括去噪/去隔行模块432、运动估计模块 434、以及图像缩放过滤模块436。去噪/去隔行模块432包括用于在解码的视频数据上执 行去噪或去隔行算法中的一个或多个算法的逻辑。去隔行逻辑将隔行的视频内容的交变场 结合成视频的单个帧。去噪逻辑从视频和图像数据中降低或移除数据噪声。在一个实施例 中,去噪逻辑和去隔行逻辑是运动自适应的,并基于在视频数据中检测到的运动量而使用 空间和时间过滤。在一个实施例中,去噪/去隔行模块432包括专用的运动检测逻辑(例 如,在运动估计引擎434内)。
[0064] 运动估计引擎434通过执行视频加速功能(例如,对视频数据的运动向量估计和 推测)而为视频操作提供硬件加速。运动估计引擎确定描述在连续的视频帧之间的图像数 据的变化的运动向量。在一个实施例中,图形处理器媒体解码编码器使用视频运动估计引 擎434以在宏块级对视频执行操作,否则使用通用处理器来执行该操作会是计算密集的。 在一个实施例中,运动估计引擎434通常对图形处理器组件可用以协助视频解码和敏感或 适应于视频数据内的运动的方向和幅度的处理功能。
[0065]图像缩放和过滤模块436执行图像处理操作以增强生成的图像和视频的视觉质 量。在一个实施例中,缩放和过滤模块436在将数据提供给执行单元阵列414之前,在采样 操作的过程中处理图像和视频数据。
[0066] 在一个实施例中,图形处理器引擎410包括为图形子系统提供访问存储器的额外 机制的数据端口 444。数据端口 444促成针对包括渲染目标写入、常量缓冲读取、暂存存储 器空间读取/写入、以及介质表面存取在内的操作的存储器访问。在一个实施例中,数据端 口 444包括用于缓存对存储器的访问的高速缓存存储器空间。高速缓存存储器可以是单个 数据高速缓存或是被分成多个子系统的多个高速缓存(例如,渲染缓冲高速缓存、常量缓 冲高速缓存等),其中这些子系统经由数据端口访问存储器。在一个事实例中,通过经由将 图形处理引擎410的每个子系统耦合的数据分发互而连交换消息,在执行单元阵列414中 的执行单元上执行的线程与数据接口进行通信。
[0067] 执行单元-图5-7
[0068] 图5是图形处理器的另一个实施例的方框图。在一个实施例中,图形处理器包括 环形互连502、管线前端504、媒体引擎537、以及图形核心580A-N。环形互连502将图形处 理器耦合至包括其他图形处理器或一个或多个通用处理器核心在内的其他处理单元。在一 个实施例中,图形处理器是集成在多核处理器系统内的许多处理器中的一个。
[0069] 图形处理器经由环形互连502接收批量的命令。传入的命令由管线前段504中的 命令流式传输器503解释。图形处理器包括用于经由图形核心580A-N来执行3D几何处理 和媒体处理的可扩展的执行逻辑。对于3D几何处理命令,命令流式传输器503将命令提供 给几何管线536。对于至少一些媒体处理命令,命令流式传输器503将命令提供给与媒体引 擎537耦合的视频前端534。媒体引擎537包括用于视频和图像后期处理的视频质量引擎 (VQE) 530,以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX) 533引 擎。几何管线536和媒体引擎537每个都为由至少一个图形核心580A提供的线程执行资 源生成执行线程。
[0070] 图形处理器包括以模块化的核心580A-N为特征的可扩展的线程执行资源,其中 核心580A-N(有时被称为核心片)中的每一个具有多个子核心550A-N、560A-N(有时被称 为核心子片)。图形处理器可以具有从580A到580N的任何数量的图形核心。在一个实施 例中,图形处理器包括至少具有第一子核心550A和第二核心子核心560A的图形核心580A。 在另一个实施例中,图形处理器是具有单个子核心(例如,550A)的低功率处理器。在一个 实施例中,图形处理器包括多个图形核心580A-N,其中每个图形核心都包括一组第一子核 心550A-N和一组第二子核心560A-N。该组第一子核心550A-N中的每个子核心至少包括第 一组执行单元552A-N和媒体/纹理采样器554A-N。在该组第二子核心560A-N中的每个子 核心都至少包括第二组执行单元562A-N和采样器564A-N。在一个实施例中,每个子核心 550A-N、560A-N共享一组共享资源570A-N。在一个实施例中,共享资源包括共享的高速缓 存存储器和像素操作逻辑。其他共享的资源也可以包括在图形处理器的各自实施例中。
[0071] 图6示出了包括在图形处理引擎的一个实施例中采用的处理元件的阵列的线程 执行逻辑600。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指 令高速缓存606、包括多个执行单元608A-N的可扩展执行单元阵列、采样器610、数据高速 缓存612、以及数据端口 614。在一个实施例中,所包括的组件经由链接到每个组件的互连 结构而互连。线程执行逻辑600包括通过指令高速缓存606、数据端口 614、采样器610、和 执行单元阵列608A-N中的一个或多个到存储器(例如,系统存储器或高速缓存存储器)的 一个或多个连接。在一个实施例中,每个执行单元(例如,608A)都是能够执行多个同时的 线程,并且能并行处理每个线程的多个数据元的单个的向量处理器。执行单元阵列608A-N 包括任何数量的单个的执行单元。
[0072] 在一个实施例中,执行单元阵列608A-N主要用于执行"着色"程序。在一个实施 例中,阵列608A-N中的执行单元执行包括对许多标准3D图形着色指令的本机支持的指令 集,使得以最小的转换而执行来自图形库(例如,Direct 3D和OpenGL)中的着色程序。执 行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像 素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。
[0073] 执行单元阵列608A-N中的每个执行单元都对数据元素的阵列进行操作。数据元 的数量是"执行大小"或是指令的通道数。执行通道是对数据元访问、掩码、以及指令内的 流控制的执行的逻辑单元。通道的数量可以独立于特定的图形处理器的物理ALU或FPU的 数量。执行单元608A-N支持整数和浮点数据类型。
[0074] 执行单元指令集包括单指令多数据(SMD)指令。可以将多种数据元作为打包的 数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各个元素。例如,当 对256位宽向量进行操作时,向量的256位被存储在寄存器中,并且执行单元对作为4个分 立的64位打包数据元素(四字(QW)大小数据元素)、8个分立的32位打包数据元素(二 字(DW)大小数据元素)、16个分立的16位打包数据元素(字(W)大小数据元素)、或32个 分立的8位数据元素(字节(B)大小数据元素)的向量进行操作。然而,不同的向量宽度 和寄存器大小是可能的。
[0075] -个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中以缓存 执行单元的线程指令。在一个实施例中,在线程执行的过程中,一个或多个数据高速缓存 (例如,612)被包括在高速缓存线程数据中。包括了采样器610以提供对3D操作的纹理采 样以及对媒体操作的媒体采样。在一个实施例中,采样器610包括用于在将所采样的数据 提供给执行单元之前,在进行采样的过程中处理纹理或媒体数据的专门的纹理或媒体采样 功能。
[0076] 在执行过程中,图形和媒体管线将线程初始化请求经由线程生成和分派逻辑发 送至线程执行逻辑600。线程执行逻辑600包括本地线程分派器604,该本地线程分派 器604仲裁来自图形和媒体管线的线程初始化请求,并且在一个或多个执行单元608A-N 上将请求的线程实例化。例如,几何管线(例如,图5的536)将顶点处理、曲面细分 (tessel lation)、或几何处理器线程分派至线程执行逻辑600。线程分派器604也可以处理 来自正在执行的着色器程序的运行时线程生成要求。
[0077] -旦一分组的几何物体被处理或光栅化为像素数据,就调用像素着色器602以进 一步计算输出信息并使得结果被写入输出表面(例如,色彩缓冲器、深度缓冲器、模板缓冲 器(stencil buffer)等)。在一个实施例中,像素着色器602计算跨光栅化物体被插值的 各个顶点属性的值。然后,像素着色器602执行API提供的像素着色器程序。为了执行像 素着色器程序,像素着色器602将线程经由线程分派器604分派至执行单元(例如,608A)。 像素着色器602使用采样器610中的纹理采样逻辑以访问存储在存储器中的纹理映射的纹 理数据。关于纹理数据和输入几何数据的算术操作计算每个几何片段的像素颜色数据,或 从进一步的处理中丢弃一个或多个像素。
[0078] 在一个实施例中,数据端口 614提供存储器访问机制以供线程执行逻辑600将处 理的数据输出至存储器,以用于在图形处理器输出管线上进行处理。在一个实施例中,数据 端口 614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612),以经由数据 端口来对存储器的数据进行缓存。
[0079] 图7是示出了根据实施例的图形处理器执行单元指令格式的方框图。在一个实施 例中,图形处理器执行单元支持具有多个格式的指令的指令集。实线方框示出了通常包括 在执行单元指令中的组成部分,而虚线方框包括可选的或只包括在指令的子集中的组成部 分。与一经处理便从指令解码而得到的微操作相反,由于是提供给执行单元的指令,所以描 述并示出的指令格式是宏指令。
[0080] 在一个实施例中,图形处理器执行单元本机地支持128位格式710中的指令。基于 选择的指令、指令选项、和操作数的数量,64位压缩指令格式730对于一些指令是可用的, 尽管一些选项和操作被限制在64位格式730中,但本机的128位格式710提供对所有指令 选项的访问。在64位格式730中可用的本机指令按照实施例而变化。在一个实施例中,使 用索引字段713中的一组索引值而将指令部分地压缩。执行单元硬件参考基于索引值的一 组压缩表并使用该压缩表进行输出以重构128位格式710的本机指令。
[0081] 对于每个格式,指令操作码712定义执行单元将执行的操作。执行单元跨每个操 作数的多个数据元素并行地执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元 素或图片元素的每个颜色通道而执行同时的加法操作。默认情况下,执行单元跨操作数的 所有数据通道而执行每个指令。指令控制字段712使能对特定的执行选项的控制,例如通 道选择(例如,推测)和数据通道次序(例如,搅拌(swizzle))。对于128位指令710,执 行大小字段716限制将会被并行执行的数据通道的数量。执行大小字段716不可用于64 位压缩指令格式730中。
[0082] 一些执行
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1