用于视频解码的硬件运动补偿的制作方法

文档序号:7640862阅读:89来源:国知局
专利名称:用于视频解码的硬件运动补偿的制作方法
用于视频解码的硬件运动补偿
背景技术
国际标准化组织和国际电工技术委员会的运动图像专家组(MPEG)已 经研发了 MPEG-2标准,其能够以约3-15Mbps的比特率编码标准清晰度电 视,以约15-30Mbps的比特率编码高清晰度电视。此外,作为在其前身 MPEG-1基础上的提高,MPEG-2增加了多声道环绕声的音频编码。
与其近似的电视对等物相比,MPEG-2编码借助于在传输视频/音频信 号之前,在编码器端从视频/音频信号中去除冗余信息,来以更低的比特率 工作。随后在解码器端,可以将该冗余信息添加回去。MPEG-2比特率减小 方案依赖于具体的时间冗余度以及精神性视觉冗余度,以在观众基本上没 有觉察的情况下,减小视频/音频信号的比特率。时间冗余度可以指代并非 是独立的、而是与在同一视频帧内的以及在多个视频帧之间的相邻像素相 关的像素值。精神性视觉冗余度可以指代对于在观众眼睛的视野边缘和视 频拍摄变换周围处的细节、观众眼睛的限制。


图1示出了媒体处理系统的一个实施例。 图2示出了媒体处理子系统的一个实施例。 图3示出了硬件运动补偿驱动器的一个实施例。 图4示出了硬件运动补偿驱动器的一个实施例。 图5示出了逻辑流程的一个实施例。
具体实施例方式
描述了用于硬件运动补偿(HWMC)的直接宏块驱动器及其方法的各个 实施例。例如, 一个实施例包括HWMC图形显示设备驱动器及其操作的方 法。更具体而言, 一个实施例通过直接产生宏块指令并将其存储在专用缓 冲器中,来缓解在显示设备驱动器中的宏块数据分析的瓶颈。例如, 一个实施例包括与用于全部其它HWMC指令的DMA指令执行缓冲器相分离 的、独立的用于宏块指令的DMA指令执行缓冲器。宏块指令的生成以及与 其它HWMC指令的分离,还允许更好的利用专用图形处理单元(GPU),来 分担通用中央处理单元(CPU)的图形显示设备驱动器的处理器工作负担。
图l示出了系统的一个实施例。图1示出了媒体处理系统100的框图。 例如,在一个实施例中,媒体处理系统100可以包括多个节点。按照给定 的一组设计参数或性能约束所期望的,节点可以包括用于在媒体处理系统 100中处理和/或传输信息的任何物理或逻辑实体,并可以实现为硬件、软 件或其任何组合。尽管图1是以特定拓扑结构中有限数量的节点来示出的, 但可以理解,媒体处理系统100可以包括按照对于给定实现所预期的、在 任何类型的拓扑结构中的更多或更少的节点。实施例不限于该范围。
在各种实施例中,节点可以包括或被实现为计算机系统、计算机子 系统、计算机、应用设备、工作站、终端、服务器、个人计算机(PC)、膝上 型电脑、超便携膝上型电脑、手持计算机、个人数字助理(PDA)、电视、数 字电视、机顶盒(STB)、电话、移动电话、蜂窝电话、手持设备、无线接入 点、基站(BS)、用户站点(SS)、移动用户中心(MSC)、无线网络控制器(RNC)、' 微处理器、诸如专用集成电路(ASIC)之类的集成电路、可编程逻辑器件 (PLD)、诸如通用处理器,数字信号处理器(DSP)和/或网络处理器之类的处
理器、接口、输入/输出(i/o)设备(例如键盘、鼠标、显示器、打印机)、路
由器、集线器、网关、桥接器、交换机、电路、逻辑门、寄存器、半导体 器件、芯片、晶体管,或任何其它器件、机器、工具、器材、部件、或者 其组合。实施例不限于该范围。
在各种实施例中,节点可以包括或被实现为软件、软件模块、应用程 序、程序、子程序、指令集、计算码、词语、值、符号、或者其组合。可 以根据用于命令处理器执行特定功能的预先定义的计算机语言、方式或语 法来实现节点。计算机语言的实例可以包括C、 C++、 Java、 BASIC、 Perl、 Matlab、 Pascal、 Visual BASIC、汇编语言、机器码、用于处理器的微代码 等等。实施例不限于该范围。
在各种实施例中,媒体处理系统100可以根据一个或多个协议来传输、
管理或处理信息。协议可以包括用于管理在节点之间的通信的一组预先定义的规则或指令。协议可以由标准化组织颁布的一个或多个标准来定义, 标准化组织例如为国际电信联盟(ITU)、国际标准化组织(ISO)、国际电工 技术委员会(IEC)、电气和电子工程师学会(IEEE)、互联网工程任务组(IETF)、 运动图像专家组(MPEG)、等等。例如,所述实施例可以被布置为按照用于 媒体处理的标准来运行,所述用于媒体处理的标准例如为国家电视系统 委员会(NTSC)标准、逐行倒相制式(PAL)标准、MPEG-1标准、MPEG-2标 准、MPEG-4标准、地面数字视频广播(DVB-T)广播标准、ITU/IEC H.263 标准,其是用于低比特率通信的视频编码,2000年11月公布的ITU-T推荐 的H,263v3、和/或汀1;/正(11264标准,其是用于超低比特率通信的视频编 码,2003年5月公布的ITU-T推荐的H.264、等等。实施例不限于该范围。 在各种实施例中,媒体处理系统100的节点可以被布置为传输、管理 或处理不同类型的信息,例如媒体信息和控制信息。媒体信息的实例通常 可以包括表示对于用户有意义的内容的任何数据,例如语音信息、视频信 息、音频信息、图像信息、文本信息、数字信息、字母数字符号、图形、 等等。控制信息可以指的是表示对于自动化系统有意义的命令、指令或控 制字的任何数据。例如,控制信息可以用于通过系统发送媒体信息,以创 建在设备之间的连接、命令节点以预定方式处理媒体信息、等等。实施例 不限于该范围。
在不同实施例中,媒体处理系统100可以实现为有线通信系统、无线 通信系统、或二者的组合。尽管媒体处理系统100可以被示出为使用作为 实例的某种特定通信介质,但可以理解,在此论述的原理和技术可以用任 何类型的通信介质及其相关技术来实现。实施例不限于该范围。
例如,当实现为有线系统时,媒体处理系统100可以包括被布置为通 过一种或多种有线通信介质传输信息的一个或多个节点。有线通信介质的 实例可以包括电线、电缆、印刷电路板(PCB)、底板、交换结构(switch fabric)、半导体材料、双绞线、同轴电缆、光纤、等等。有线通信介质可以
用输入/输出(i/o)适配器连接到节点。i/o适配器可以被布置为以任何适合的
技术运行,以便用期望的一组通信协议、服务或操作过程来控制在节点之 间的信息信号。1/0适配器还可以包括适当的物理连接器,以将i/o适配器 与相应的通信介质相连接。1/0适配器的实例可以包括网络接口、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器、等等。实施例不限于 该范围。
例如,当实现为无线系统时,媒体处理系统100可以包括被布置为通 过一个或多个类型的无线通信介质传输信息的一个或多个无线节点。无线 通信介质的实例可以包括无线频谱的多个部分,例如通常的RP频谱,尤其 是超高频(UHF)频谱。无线节点可以包括适于通过指定的无线频谱传输信息 信号的部件和接口,例如一个或多个天线、无线发射器/接收器("收发器")、 放大器、滤波器、控制逻辑、天线、等等。实施例不限于该范围。
在各种实施例中,媒体处理系统100可以包括一个或多个媒体源节点 102-l-n。媒体源节点102-l-n可以包括能够向媒体处理节点106发出或传递 媒体信息和域控制信息的任何媒体源。更具体的,媒体源节点102-l-n可 以包括能够向媒体处理节点106发出或传递数字音频和/或视频(AV)信号的 任何媒体源。媒体源节点102-l-n的实例可以包括能够存储和/或传递媒体 信息的任何硬件或软件元件,例如数字多用途光盘(DVD)设备、家用录像系 统(VHS)设备、数字VHS设备、个人录像机、计算机、游戏控制台、光盘 (CD)播放器、计算机可读或机器可读存储器、数码相机、便携式摄像机、 视频监视系统、电话会议系统、电话系统、医学和测量仪器、扫描器系统、 复印机系统等。媒体源节点102-l-n的其它实例可以包括媒体发布系统,用 于向媒体处理节点106提供广播或流式的模拟或数字AV信号。媒体发布系 统的实例可以包括例如无线(OTA)广播系统、地面有线电视系统(CATV)、 卫星广播系统、等等。值得注意的是,媒体源节点102-l-n可以在媒体处理 节点106的内部或外部,这取决于给定的实现。实施例不限于该范围。
在各种实施例中,从媒体源节点102-l-n所接收的输入的视频信号可以 具有固有的格式,有时指的是视觉分辨率格式。视觉分辨率格式的实例包 括数字电视(DTV)格式、高清晰度电视(HDTV)、逐行扫描格式、计算机 显示格式、等等。例如,可以用范围在每帧480可见行到每帧1080可见行 之间的垂直分辨率格式和范围在每行640可见像素到每行1920可见像素之 间的水平分辨率格式来对媒体信息进行编码。例如,在一个实施例中,媒 体信息可以被编码为HDTV视频信号,具有720逐行扫描(720p)的视觉分 辨率格式,其指的是1280个水平像素和720个垂直像素(1280X720),或者1080隔行扫描(1080i),其指的是1920个水平像素和1080个垂直像素。 在另一个实例中,媒体信息可以具有与不同计算机显示格式相对应的视觉 分辨率格式,例如视频图形阵列(VGA)格式分辨率(640X480)、扩展图形阵 列(XGA)格式分辨率(1024X768)、超级XGA(SXGA)格式分辨率(1280X 1024)、超高XGA(UXGA)格式分辨率(1600X1200)等。实施例不限于该范 围。
在不同实施例中,媒体处理系统IOO可以包括媒体处理节点106,通过 一个或多个通信介质104-l-m连接到媒体源节点102-l-n。媒体处理节点106 可以包括如前所述的任何节点,其被布置为处理从媒体源节点102-l-n所接 收的媒体信息。在各种实施例中,媒体处理节点106可以包括或被实现为 一个或多个媒体处理设备,其包括处理系统、处理子系统、处理器、计 算机、器件、编码器、解码器、编码器/解码器(CODEC)、滤波器件(例如图 形縮放器件、解块滤波器件)、变换器件、娱乐系统、显示器或任何其它处 理结构。实施例不限于该范围。
在各种实施例中,媒体处理节点106可以包括媒体处理子系统108。媒 体处理子系统108可以包括处理器、存储器以及应用硬件和/或软件,其 被布置为处理从媒体源节点102-l-n所接收的媒体信息。例如,媒体处理子 系统108可以被布置为处理MPEG-2压縮的音频和/或视频信号,并执行如 以下详述的其它媒体处理操作。媒体处理子系统108可以向显示器110输 出处理过的媒体信息。实施例不限于该范围。
在各种实施例中,媒体处理节点106可以包括显示器110。显示器IIO 可以是能够显示从媒体源节点102-l-n所接收的媒体信息的任何显示器。显 示器110可以以给定格式分辨率显示媒体信息。例如,显示器110可以在 具有VGA格式分辨率、XGA格式分辨率、SXGA格式分辨率、UXGA格 式分辨率等的显示器上显示媒体信息。例如,在另一实施例中,媒体信息 可以被编码为HDTV视频信号,具有720逐行扫描(720p)的视觉分辨率格 式,其指的是720个垂直像素和1280个水平像素(720X 1280)。在再另一个 实施例中,媒体信息可以被编码为HDTV视频信号,具有1080隔行扫描 (1080i)的视觉分辨率格式,其指的是1080个垂直像素和1920个水平像素 (1080X 1920)。显示器的类型和格式分辨率可以根据给定的一组设计或性能约束而变化,并且实施例不限于该范围。
在通常的操作中,媒体处理节点106可以从一个或多个媒体源节点 102-l-n接收媒体信息。例如,媒体处理节点106可以从被实现为DVD播 放器的媒体源节点102-1接收媒体信息,该DVD播放器与媒体处理节点106 集成在一起。媒体处理子系统108可以从DVD播放器得到媒体信息,将媒 体信息由视觉分辨率格式转换为显示器110的显示分辨率格式,并用显示 器110再现媒体信息。
在各种实施例中,媒体处理节点106可以被布置为从一个或多个媒体 源节点102-l-n接收输入图像。输入图像可以包括从一个或多个视频图像导 出或与之相关的任何数据或媒体信息。在各种实施例中,输入图像可以包 括以下一种或多种图像数据、视频数据、视频序列、画面组、画面、图 像、区域、对象、帧、切片、宏块、块、像素、信号、等等。分配给像素 的值可以包括实数和/或整数。
在不同实施例中,媒体处理节点106可以被布置为用作用于MPEG-2 压縮的音频和/或视频(AV)信号的图形显示设备驱动器。更具体的, 一个实
施例的媒体处理节点可以通过直接产生宏块指令并将其存储在专用缓冲器 中,来缓解基于硬件的运动补偿帧间预测(HWMC)图形显示设备驱动器的宏 块数据分析瓶颈。例如, 一个实施例包括与用于全部其它HWMC指令的 DMA指令执行缓冲器相分离的、独立的用于宏块指令的DMA指令执行缓 冲器。宏块指令的生成以及与其它HWMC指令的分离,还允许更好的利用 专用图形处理单元(GPU),来分担图形显示设备驱动器的处理器工作负担。 例如,在一个实施例中,媒体处理节点106的媒体处理子系统108可 以被布置为包括与用于全部其它HWMC指令的DMA指令执行缓冲器相分 离的、独立的用于宏块指令的DMA指令执行缓冲器。宏块指令的生成以及 与其它HWMC指令的分离还允许更多的利用GPU,来分担图形显示设备 驱动器处理器工作量。媒体处理子系统108可以利用一个或多个预定义或 预定的数学函数来控制HWMC指令(例如,产生、通路、序列化和/或缓冲) 和输出(例如到显示器110),以改进媒体处理系统100的性能。可以参考图 2来更详细说明总体上的媒体处理系统100,具体而言是媒体处理子系统 108。图2示出了媒体处理子系统108的一个实施例。图2示出了媒体处理 子系统108的框图,其适用于参考图1所述的媒体处理节点106。然而实施 例不限于图2中给定的实例。
如图2所示,媒体处理子系统108可以包括多个元件。按照给定的一 组设计或性能约束所期望的, 一个或多个元件可以用一个或多个电路、部 件、寄存器、处理器、软件子程序、模块或其任何组合来实现。尽管作为 实例,图2示出了采用特定拓扑结构的有限数量的元件,但可以理解,按 照给定实现所期望的,在媒体处理子系统108中可以使用采用任何适合拓 扑结构的更多或更少的元件。实施例不限于该范围。
在各种实施例中,媒体处理子系统108可以包括处理器202。处理器 202可以用任何处理器或逻辑器件来实现,例如复杂指令集计算机(CISC) 微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、 实现多个指令集的组合的处理器、或其它处理器器件。例如,在一个实施 例中,处理器202可以实现为通用处理器,例如由加利福尼亚Santa Clara的 InteKO)公司所生产的处理器。处理器202还可以实现为专用处理器,例如控 制器、微控制器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、媒 体处理器、输入/输出(I/0)处理器、介质访问控制(MAC)处理器、无线基带 处理器、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)等。实施例不限 于该范围。
在一个实施例中,媒体处理子系统108可以包括耦合到处理器202上 的存储器204。按照给定实现所期望的,存储器204可以经由通信总线214 或通过在处理器202与存储器204之间的专用通信总线耦合到处理器202。 存储器204可以采用能够存储数据的任何机器可读或计算机可读介质来实 现,其包括易失性和非易失性存储器。例如存储器204可以包括只读存 储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速率 DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM (PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、 快擦式存储器(flash memory)、聚合物存储器,例如铁电聚合物存储器、双 向存储器(ovonic memory)、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁或光卡,或适于存储信息的任何其它类型的介质。值得注意的是,存储器204的某些部分或者全部可以与处理器202包含在 同一集成电路中,或者可替换地,存储器204的某些部分或者全部可以置 于在处理器202的集成电路外部的集成电路或其它介质上,例如硬盘驱动 器。实施例不限于该范围。
在各种实施例中,媒体处理子系统108可以包括收发器206。收发器 206可以是被布置为按照所期望的无线协议运行的任何无线发射器和/或接 收器。适合的无线协议的实例可以包括各种无线局域网(WLAN)协议,包括 IEEE 802.xx系列协议,例如IEEE 802.11a/b/g/n、正EE 802.16、 IEEE 802.20 等等。无线协议的其它实例可以包括各种无线广域网(WWAN)协议,例如, 采用通用分组无线业务(GPRS)的全球移动通信系统(GSM)蜂窝无线电话系 统协议、采用lxRTT的码分多址(CDMA)蜂窝无线电话通信系统、全球增 强型数据提升率(EDGE)系统、等等。无线协议的其他实例可以包括无线个 域网(PAN)协议,例如红外协议,其是来自蓝牙技术联盟(SIG)的协议系列的 一种协议,该协议系列包括蓝牙规范版本vl.O、 vl.l、 v1.2、 v2.0、具有增 强型数据速率(EDR)的v2.0,以及一个或多个蓝牙协议子集(Bluetooth profile)(在此共同称为"蓝牙规范")、等等。其它适合的协议可以包括超 宽带(UWB)、数字办公室(DO)、数字家庭、可信平台模块(TPM)、 ZigBee、 及其它协议。实施例不限于该范围。
在各种实施例中,媒体处理子系统108可以包括一个或多个模块。按
照给定的一组设计或性能约束所期望的,所述模块可以包括或实现为一个 或多个系统、子系统、处理器、器件、机器、工具、部件、电路、寄存器、 应用程序、程序、子程序、或者其任何组合。实施例不限于该范围。
例如,在一个实施例中,媒体处理子系统108可以包括HWMC模块 208。 HWMC模块208可以根据预定数学函数或算法,用于为GPU协调指 令的产生、通路、序列化和/或缓冲,来处理如上介绍的MPEG-2压縮的AV 信号。例如,预定数学函数或算法可以存储在任何适合的存储设备中,例 如存储器204、大容量存储装置210、以硬件实现的查询表(LUT)216、等等。 可以理解,HWMC模块208可以实现为由处理器202执行的软件、专用硬 件,或二者的组合。实施例不限于该范围。
在各种实施例中,媒体处理子系统108可以包括大容量存储设备210。大容量存储设备210的实例可以包括硬盘、软盘、光盘只读存储器 (CD-ROM)、可记录光盘(CD-R)、可重写光盘(CD-RW)、光盘、磁介质、磁 光介质、可移动存储卡或盘片、各类DVD设备、磁带设备、盒式磁带设备、 等等。实施例不限于该范围。
在各种实施例中,媒体处理子系统108可以包括一个或多个I/O适配器 212。1/0适配器212的实例可以包括:通用串行总线(USB)端口/适配器、IEEE 1394火线端口/适配器、等等。实施例不限于该范围。
在通常操作中,媒体处理子系统108可以从一个或多个媒体源节点 102-l-n接收媒体信息。例如,媒体源节点102-1可以包括连接到处理器202 上的DVD设备。可替换地,媒体源102-2可以包括存储器204,其存储数 字AV文件,例如以运动图像专家组(MPEG)编码的AV文件。HWMC模块 208可以用于从大容量存储设备216和/或存储器204接收媒体信息,处理 媒体信息(例如通过处理器202),并在存储器204、处理器202的高速缓存 或其组合上存储或缓冲媒体信息。参考由图3和4及图5的逻辑流程所示 的HWMC驱动器,可以理解HWMC模块208的操作。
图3示出了HWMC驱动器300。通常,对于MPEG-2 AV信号而言, 当前画面可以基于帧内离散余弦变换(DCT)编码系数和运动补偿帧间预测, 从先前画面转换得到。运动补偿帧间预测是逐个像素的渲染处理,其耗费 时间和处理器资源。例如,在MPEG-2视频编解码处理中,运动补偿帧间 预测可能占用约30%的总处理工作负担。
HWMC驱动器300可以包括或有权访问GPU 350。 GPU例如是由加利 福尼亚Santa Clara的Intel⑧公司生产的图形芯片组的一部分,其可以具有 基于硬件的运动补偿帧间预测的能力。HWMC是一种可以使GPU 350减小 处理器202的运动补偿帧间预测工作负担。这样,HWMC技术可以通过与 处理器202并行工作,来提高解码性能,例如或者是通过增加对于给定处 理器202使用量的每秒帧数,或者是通过减少对于给定每秒帧数的处理器 202使用量。
对HWMC驱动器300的输入包括DCT系数数据阵列和宏块参数数据 阵列。宏块参数由宏块类型、运动类型、运动矢量及其它宏块参数组合而 成,其全部都对渲染目标画面像素的GPU350有影响。HWMC驱动器300为AV编解码器305提供存储缓冲器,以逐个地写入宏块参数。HWMC驱 动器300还为视频编解码器305提供DCT原始数据缓冲器,以写入DCT 数据。例如,DCT数据可以包括一个画面的全部或者一部分,这取决于用 户想要解码一部分还是整体。在AV编解码器305完成将宏块数据和DCT 数据存储在缓冲器中之后,可以向GPU 350发出请求来开始HWMC处理。 这样,例如,处理器202被释放来解码下一画面或处理其它工作。
对于HWMC驱动器300而言,重要的是,注意在DCT数据和宏块数 据之间的区别。例如,DCT原始数据是标准,并可以被GPU350直接使用, 而无需考虑HWMC硬件实现。与此相反,宏块数据包含用于控制运动补偿 的全部参数,对于它来说,不同的HWMC硬件实现可能会具有不同的指令。 因此,宏块数据可以被HWMC驱动器300分析,以产生相对的依赖于硬件 的运动补偿指令或随后可以由GPU 350所处理的其它低级别表示。
更具体的,对于HWMC驱动器300而言,AV编解码器305将宏块和 DCT数据存储到由HWMC驱动器300提供的数据缓冲器中。核空间中的 宏块数据缓冲器325可以映射到用户空间中的宏块数据缓冲器320,并且随 着其在用户空间中的运行,AV编解码器305可以由此将宏块数据存储到用 户空间中的宏块数据缓冲器320中,以避免存储器复制。如所指出的,与 DCT数据不同,宏块数据由HWMC驱动器300在独立于平台的结构中定 义。因此,HWMC驱动器300通过从宏块数据缓冲器325读取每一个宏块 数据,可以分析宏块参数,来为GPU 350产生硬件宏块指令335(例如,在 指令生成器330中)。例如,硬件宏块指令335可以包括运动矢量和其它运 动补偿参数。指令生成器330还产生其它HWMC指令340,其可以包括例 如与硬件结构、HWMC状态管理、帧设置和缓冲器管理相关的指令。随后, 将硬件宏块指令335及其它HWMC指令340写入到GPU直接存储器存取 (DMA)指令执行缓冲器,用于GPU350读取和执行。
例如,对于1080i HD画面(隔行扫描的1920X1080视觉分辨率格式) 而言,宏块数据的大小约为200千字节。如所指出的,视频编解码器305 将宏块数据存储到宏块数据缓冲器325中,其映射到用户空间中的宏块数 据缓冲器320中。随后,HWMC驱动器300分析来自宏块数据缓冲器325 的宏块数据,指令生成器330在GPU DMA指令执行缓冲器345中产生用于由GPU 350执行的指令(例如,硬件宏块指令335和其它HWDMC指令 340)生成。然而,借助于指令生成器330的硬件宏块指令335产生,会占用 高达约95%的用于HWMC驱动器300的处理器202使用量。这样,硬件宏 块指令335的产生会是HWMC驱动器300的性能阻碍特征或"瓶颈"。
此外,对于HWMC驱动器300而言,不能对用户直接共享GPUDMA 指令执行缓冲器345,因为HWMC驱动器300的处理可能会被其它图形操 作打断。在此情况下,如果DMA指令执行缓冲器345被锁定,则其它图形 操作会被阻碍,这就有可能损害媒体处理系统IOO或其子系统。
图4示出了一个实施例的HWMC驱动器400。如相对于图3所指出的, 借助于指令生成器330的硬件宏块指令335产生,会是HWMC驱动器300 的性能阻碍特征或"瓶颈"。HWMC驱动器400包括用于缓解HWMC驱动 器300的宏块数据分析和宏块指令335产生的瓶颈的各种特征。
例如,HWMC驱动器400包括独立的GPUDMA指令缓冲器,用于独 立于GPU DMA指令执行缓冲器345的宏块指令420。因此,用于宏块指 令420的GPU DMA指令缓冲器存储硬件宏块指令335,而GPU DMA指 令执行缓冲器345存储其它HWMC指令340。此外,用于宏块指令420的 GPU DMA指令缓冲器可以映射到用户空间中,作为宏块数据缓冲器320。
在一个实施例中,GPU350能够进行硬件指令批量缓冲器执行。因此, GPU 350可以执行存储在GPU DMA指令执行缓冲器345中的其它HWMC 指令340,跳转到存储在用于宏块指令420的GPU DMA指令缓冲器中的硬 件宏块指令335,并批量执行它们,随后当完成时返回到其它HWMC指令 340。
此外,HWMC驱动器400包括从AV编解码器305到HWMC用户库 315的添加宏块410的函数调用,用于HWMC用户库315接受AV编解码 器305的关于宏块数据/参数的输入。在一个实施例中,HWMC用户库315 可以在不使用指令生成器330的情况下,直接产生硬件宏块指令335。随后, 可以将硬件宏块指令335可以在用户空间中的宏块数据缓冲器320与用于 宏块指令420的GPUDMA指令执行缓冲器之间进行映射。这样,HWMC 驱动器400可以缓解HWMC驱动器300的瓶颈(例如,指令生成器330产 生硬件宏块指令335及其它HWMC指令340)。换句话说,当HWMC驱动器400在HWMC用户库315中产生硬件宏块指令335并将其存储到用于宏 块指令420的GPU DMA指令执行缓冲器中时,HWMC驱动器400可以仅 配置GPU 350按照批量缓冲器指令执行来执行硬件宏块指令335。随后, 例如像函数调用, 一旦GPU 350按照批量缓冲器指令执行而执行了硬件宏 块指令335,则其可以返回到存储在GPU DMA指令执行缓冲器345中的其 他HWMC指令340。
另外,与用户对宏块数据缓冲器325进行写入相比,借助于添加宏块 410的函数调用将宏块指令335映射到用户空间(例如,到宏块数据缓冲器 320),还可以提供更为便利和对用户友好的接口。此外,由于实施例的 HWMC用户库315可以提供应用程序编程接口(API),因此AV编解码器305 可以更容易地从软件运动补偿变为硬件运动补偿。再进一步,与其它HWMC 指令340相比,硬件宏块指令335是更面向数据的。结果,与HWMC驱动 器300的方案相比,产生硬件宏块指令335的HWMC用户库315可以更易 于调试和维护。最后,如果希望的话,产生硬件宏块指令335的HWMC用 户库315可以使硬件宏块指令335的格式对用户公开,而无需公开HWMC 驱动器400的更多细节。
在一个实施例中,与HWMC驱动器300相比,HWMC驱动器400展 示了性能提高。例如,对于MPEG-2 1080i AV流而言,如在Intel GMCH 82854 SunsetValley开发部门所测试的,HWMC驱动器400展示了超过50%的性 能提高。更具体的,与HWMC驱动器300相比,在不增加例如处理器202 上的负担的情况下,与每秒15帧相比,实施例的HWMC驱动器400具有 每秒24帧的能力。
图5示出了一个实施例的逻辑流程。例如, 一旦AV编解码器305接收 到宏块和DCT数据,则在510中,利用一个函数调用将该宏块数据添加到 HWMC用户库315中。在520中,HWMC用户库315产生硬件宏块指令 335,在530中,将该硬件宏块指令335存储到宏块数据缓冲器320中。此 后,在540中,将存储在宏块数据缓冲器320中的硬件宏块指令335映射 到用于宏块指令420的GPU DMA指令执行缓冲器,GPU可以在550中从 该缓冲器执行硬件宏块指令335。
在此已阐明了许多具体细节,以提供对各个实施例的全面理解。然而,本领域技术人员会理解,在没有这些具体细节的情况下也能够实践各个实 施例。在其它例子中,没有详细描述公知的操作、部件和电路,以便不会 混淆对实施例的理解。可以理解的是,在此公开的具体结构和功能细节可 以是代表性的,并非必然限制实施例的范围。
还值得注意的是,对"一个实施例"或"实施例"的提及意思是指联 系该实施例所描述的特定特征、结构或特性包括在至少一个实施例中。短 语"在一个实施例中"在说明书中不同位置的出现并非必然全部指的是同 一实施例。
一些实施例可以采用可根据任何数量的因素而改变的结构来实现,所 述因素例如期望的计算速率、功率等级、耐热性、处理周期预算、输入 数据速率、输出数据速率、存储器资源、数据总线速度、以及其它性能约 束。例如,实施例可以用由通用或专用处理器所执行的软件来实现。在另 一个实例中,实施例可以实现为专用硬件。在再另一个实例中,实施例可 以以编程的通用计算机部件和定制的硬件部件的任何组合来实现。实施例 不限于该范围。
可以用一个或多个硬件元件来实现各种实施例。通常,硬件元件可以 指的是任何被布置为执行特定操作的硬件结构。例如,在一个实施例中, 硬件元件可以包括在衬底上制造的任何模拟或数字电气或电子元件。可以 用基于硅的集成电路(IC)技术来执行该制造,例如诸如互补金属氧化物半导
体(CMOS)、双极和双极CMOS(BiCMOS)之类的技术。硬件元件的实例可 以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容 器、电感器等)、集成电路、专用集成电斷ASIC)、可编程逻辑器件(PLD)、 数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导 体器件、芯片、微芯片、芯片组等。实施例不限于该范围。
可以用一个或多个软件元件来实现各种实施例。通常,软件元件可以 指的是被布置为执行特定操作的任何软件结构。例如,在一个实施例中, 软件元件可以包括适于由硬件元件(例如处理器)执行的程序指令和/或数 据。程序指令可以包括对于命令的组织列表,其中,命令包括以预定语法 排列的字、数值或符号,当其被执行时,可以使处理器执行一组相应的操
作。软件可以用编程语言来编写或编码。编程语言的实例可以包括C、C++、BASIC、 Perl、 Matlab、 Visual BASIC、 JAVA、 ActiveX、汇编语言、机器码 等。可以用任何类型的计算机可读介质或机器可读介质来存储软件。而且, 软件可以作为源代码或目标代码而存储在介质上。软件还可以作为压縮的
和/或加密的数据而存储在介质上。软件的实例可以包括任何软件部件、 程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软 件、中间件、固件、软件模块、例程、子程序、函数、方法、过程、软件
接口、应用程序编程接口(API)、指令集、计算码、计算机代码、代码段、
计算机代码段、字、数值、符号、或其任何组合。实施例不限于该范围。
可以用"耦合"和"连接"连同它们的派生词来描述一些实施例。应 理解的是,这些术语不是意图作为彼此的同义词的。例如, 一些实施例可 以用术语"连接"来描述,以指明两个或更多的元件彼此直接物理或电气 接触。在另一个实例中, 一些实施例可以用术语"耦合"来描述,以指明 两个或更多的元件是直接物理或电气接触的。然而,术语"耦合"还可以 意味着两个或更多的元件彼此没有直接接触,但仍共同操作或彼此相互作 用。实施例不限于该范围。
例如, 一些实施例可以用机器可读介质或产品来实现,所述机器可读 介质或产品可以存储一个指令或一组指令,所述一个指令或一组指令如果 由机器执行,可以使得机器执行根据这些实施例的方法和/或操作。这种机 器可以包括例如任何适合的处理平台、计算平台、计算设备、处理设备、 计算系统、处理系统、计算机、处理器等等,并可以用硬件和/或软件的任 意合适组合来实现。所述机器可读介质或产品可以包括例如任何适宜类型 的存储器单元、存储器设备、存储器产品、存储器介质、存储设备、存储 产品、存储介质和/或存储单元,例如存储器、可移动或不可移动介质、可 擦除或不可擦除介质、可写入或可再写入介质、数字或模拟介质、硬盘、
软盘、光盘只读存储器(CD-ROM)、可记录光盘(CD-R)、可重写光盘 (CD-RW)、光盘,磁介质,磁光介质,可移动存储卡或盘,各种数字多用 途光盘(DVD)、磁带、盒式磁带、等等。所述指令可以包括任何适宜类型的 代码,例如源代码、己编译的代码、已解释的代码、可执行代码、静态代 码、动态代码、等等。所述指令可以用任何适合的高级、低级、面向对象 的、可视化(visual)、编译的和/或解释的编程语言来实现,例如C、 C++、Java、 BASIC、 Perl、 Matlab、 Pascal、 Visual BASIC、汇编语言、机器代码 等。实施例不限于该范围。
除非特别表明不同意思,可以理解的是,诸如"处理"、"计算"、"运 算","判断"等之类的术语指的是计算机或计算系统,或类似的电子计算 设备的动作和/或处理,所述计算机或计算系统,或类似的电子计算设备将 被表示为在计算系统的寄存器和/或存储器内的物理量(例如电子的)的数 据,处理和/或变换为被类似地表示为在计算系统的存储器、寄存器或其它 这种信息存储、传输或显示设备内的物理量的其它数据。实施例不限于该 范围。
尽管己经如在此所述的说明了实施例的特定特征,但本领域技术人员 会想到许多变型、替换、变化及等价物。因此应理解所附权利要求意图覆 盖在实施例的真实精神内的全部这种变型和变化。
权利要求
1、一种设备,包括媒体处理节点,用于为图形处理单元产生用于宏块指令的直接存储器存取指令执行缓冲器和用于其它硬件运动补偿指令的直接存储器存取指令执行缓冲器。
2、 如权利要求1所述的设备,所述媒体处理节点包括硬件运动补偿模 块,所述硬件运动补偿模块将宏块数据添加到硬件运动补偿用户库中,并 且借助于所述硬件运动补偿用户库为所述图形处理单元产生硬件宏块指 令。
3、 如权利要求2所述的设备,所述硬件运动补偿模块还将用于所述图 形处理单元的所述硬件宏块指令存储到宏块数据缓冲器中,并将所述宏块 数据缓沖器中用于所述图形处理单元的所述硬件宏块指令映射到所述的用 于所述图形处理单元的宏块指令的直接存储器存取指令执行缓冲器。
4、 如权利要求3所述的设备,所述硬件运动补偿模块还借助于所述图 形处理单元,执行从所述的用于所述图形处理单元的宏块指令的直接存储 器存取指令执行缓冲器而来的所述硬件宏块指令。
5、 如权利要求4所述的设备,所述硬件运动补偿模块还借助于所述图 形处理单元,执行从所述的用于所述图形处理单元的其它硬件运动补偿指 令的直接存储器存取指令执行缓冲器而来的另 一硬件运动补偿指令。
6、 一种系统,包括 通信介质;以及媒体处理节点,用于为图形处理单元产生用于宏块指令的直接存储器 存取指令执行缓冲器和用于其它硬件运动补偿指令的直接存储器存取指令 执行缓沖器。
7、 如权利要求6所述的系统,所述媒体处理节点包括硬件运动补偿模 块,所述硬件运动补偿模块将宏块数据添加到硬件运动补偿用户库中,并 借助于所述硬件运动补偿用户库为所述图形处理单元产生硬件宏块指令。
8、 如权利要求7所述的系统,所述硬件运动补偿模块还将用于所述图 形处理单元的所述硬件宏块指令存储到宏块数据缓冲器中,并将所述宏块 数据缓冲器中用于所述图形处理单元的所述硬件宏块指令映射到所述的用 于所述图形处理单元的宏块指令的直接存储器存取指令执行缓冲器。
9、 如权利要求8所述的系统,所述硬件运动补偿模块还借助于所述图 形处理单元执行从所述的用于所述图形处理单元的宏块指令的直接存储器 存取指令执行缓冲器而来的所述硬件宏块指令。
10、 如权利要求9所述的系统,所述硬件运动补偿模块还借助于所述 图形处理单元执行从所述的用于所述图形处理单元的其它硬件运动补偿指 令的直接存储器存取指令执行缓冲器而来的另一硬件运动补偿指令。
11、 一种方法,包括将宏块数据添加到硬件运动补偿用户库;并且借助于所述硬件运动补 偿用户库为图形处理单元产生硬件宏块指令。
12、 如权利要求11所述的方法,还包括将用于所述图形处理单元的所 述硬件宏块指令存储到宏块数据缓冲器中。
13、 如权利要求12所述的方法,还包括将所述宏块数据缓冲器中用于 所述图形处理单元的所述硬件宏块指令映射到图形处理单元直接存储器存 取指令执行缓冲器。
14、 如权利要求13所述的方法,还包括借助于所述图形处理单元,执 行来自所述图形处理单元直接存储器存取指令执行缓冲器的所述硬件宏块指令。
15、 如权利要求14所述的方法,还包括借助于所述图形处理单元执行 来自另一图形处理单元直接存储器存取指令执行缓冲器的另一硬件运动补 偿指令。
16、 一种产品,包括机器可读存储介质,其包含指令,如果执行所述 指令,使系统能够将宏块数据添加到硬件运动补偿用户库,并借助于所述 硬件运动补偿用户库为图形处理单元产生硬件宏块指令。
17、 如权利要求16所述的产品,还包括指令,如果执行所述指令,则 使所述系统能够将用于所述图形处理单元的所述硬件宏块指令存储到宏块 数据缓沖器中。
18、 如权利要求17所述的产品,还包括指令,如果执行所述指令,则 使所述系统能够将所述宏块数据缓冲器中用于所述图形处理单元的所述硬 件宏块指令映射到图形处理单元直接存储器存取指令执行缓冲器。
19、 如权利要求18所述的产品,还包括指令,如果执行所述指令,则 使所述系统能够借助于所述图形处理单元执行来自所述图形处理单元直接 存储器存取指令执行缓冲器的所述硬件宏块指令。
20、 如权利要求19所述的产品,还包括指令,如果执行所述指令,则 使所述系统能够借助于所述图形处理单元执行来自另一 图形处理单元直接 存储器存取指令执行缓冲器的另一硬件运动补偿指令。
全文摘要
描述了一种用于高性能硬件运动补偿的直接宏块模式技术。一个实施例包括硬件运动补偿图形显示设备驱动器。更具体的,一个实施例借助于直接产生宏块指令并将其存储在专用缓冲器中,缓解了显示设备驱动器中的宏块数据分析瓶颈。例如,一个实施例包括与用于全部其它硬件运动补偿指令的直接存储器存取指令执行缓冲器相分离的、独立的用于宏块指令的直接存储器存取指令执行缓冲器。描述了其它实施例并要求其权利。
文档编号H04N7/36GK101310538SQ200680042704
公开日2008年11月19日 申请日期2006年12月14日 优先权日2005年12月30日
发明者Q·宋, W·刘, X·唐 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1