用于2维数组处理的寄存器的制作方法

文档序号:6518336阅读:119来源:国知局
专利名称:用于2维数组处理的寄存器的制作方法
背景领域本发明一般涉及计算机系统,具体说,涉及处理器结构。
一些处理器设计为为多媒体操作提供它们的指令集结构(ISA)的扩展。例如,由PentiumII,PentiumIII,和CeleronTM处理器支持的MMXTM指令可从加里福尼亚州的Santa Clara市的因特尔公司购买,它可以实现对多媒体应用有用的各种功能,诸如数字信号处理,和音频视频处理。这些指令支持对多媒体和通信数据类型的“单指令多数据”(SIMD)操作。虽然这些指令的使用提供对预存在指令的组合的改进来执行一个给定的功能,以及个别MMXTM指令对某些类型的处理是有效的,但是对更快的多媒体处理仍然存在各种障碍。例如,基于块的图像的许多实现和视频处理算法(诸如联合图像专家组(JPEG)和运动图像专家组(MPEG)模式)导致存储在一组可作为为MMXTM指令的操作数访问的寄存器中存储的数据在数组数学运算期间被转置。然而,寄存器中间的数据的转置担负相当大的开销,从而减少了对多媒体处理的总的处理器的通过量。因此,为避免或减小这些延迟的任何技术都是处理器技术中的有价值的进步。
发明概述本发明的一个实施例是一个处理器,它具有存储数据数组的第一组寄存器,和连接到第一组的第二组寄存器,第二组寄存器存储数据数组的转置拷贝。
本发明的另一个实施例是一种由处理器为数组处理使用两组寄存器的方法。该方法包括在第一组寄存器中存储数据数组,第一组寄存器具有第一数目的寄存器,每一寄存器包括第一数目的存储单元,每一存储单元存储数组的一个元素,和数据数组转置到第二组寄存器,该第二组寄存器具有第二数目的寄存器,每一寄存器包括第二数目的存储单元。该方法还包括引用第一组寄存器中的一个来操作数据数组的一行,和引用第二组寄存器中的一个来操作数据数组的一列。
从下面对本发明的详细说明可以显见本发明的特征和优点,其中,

图1是一组根据现有技术的MMXTM寄存器的示意图;图2是存储图像数据的8象素乘8象素块的该组MMXTM寄存器的示意图;图3是存储图像数据转置的8象素乘8象素块的该组MMXTM寄存器的示意图;图4是根据本发明的一个实施例连接到MMXTM寄存器组的一个虚拟MMXTM寄存器组的示意图;图5是存储图像数据转置的8象素乘8象素块的虚拟MMXTM寄存器组的示意图;图6是一个系统的示意图,该系统具有一个处理器,它具有按照本发明的一个MMXTM寄存器组和一个虚拟MMXTM寄存器组的示意图。
发明详述本发明的一个实施例包括一种为扩展MMXTM寄存器为用于2维(2-D)数组运算更加有效的方法和装置。
说明书中对本发明的“一个实施例”的参考意味着结合该实施例说明的一种特定的特征、结构或特性至少被包含在本发明的一个实施例中。这样,在本说明书中不同地方出现的短语“在一个实施例中”不一定所有都指同一个实施例。
当执行一个指令时,一个处理器通常引用一个或多个寄存器操作数。对于MMXTM指令,寄存器操作数可以是称为MMXTM寄存器的一组或多组特殊的寄存器。图1是一组根据现有技术的MMXTM寄存器的示意图。在图1所示的寄存器组10中,有8个MMXTM寄存器,标以mm012到mm714。在其它实施例中,寄存器的数目可以多于或少于8个。每一寄存器包括多个数据单元,从所示低单元16到高单元18排序。在一个实施例中,一个单元包括一个字节。在其它实施例中,一个单元可以包括一个字、一个双字、或其它存储单元。在至少一个已知系统中,每个MMXTM寄存器的单元数目(例如字节)是8,虽然在其它系统中可以使用其它单元数目。为使用MMXTM寄存器有效实现SIMD多媒体处理,要被处理的数据应该这样排列,使得多个相关的数据项排列在单一MMXTM寄存器中。例如,假定一个8象素乘8象素的图像数据块在MMXTM寄存器中如图2所示排列,每一象素值P(i,j)表示一个单元,总寄存器组表示一个数组。8象素乘8象素块可以是一个较大图像的一部分。在该例中,该图像数据块的第一行存储在第一MMXTM寄存器mm0 12中,第一行的第一列存储在mm0的低单元中,第一行的最后一列存储在mm0的高单元中,图像数据的第二行存储在第二MMXTM寄存器mm1 20中,该第二行的第一列存储在mm1的低单元中,第二行的最后一列存储在mm1的高单元中,等等。
一旦数据如所示存储在MMXTM寄存器中,则处理器可以执行指令,每次一行有效操作该8×8数组。这一类型处理通常例如用于基于块的图像应用和其它应用中。例如,行0的所有数据可以使用单一MMXTM指令加到行3的数据上,如下所示。
PADDB MM0,MM3;把行0加到行3上并把结果存储到行0中。
然而,为一次一列操作8×8数组会出现问题,因为每一列的数据分布在8个MMXTM寄存器中间。例如,第一列的数据分别分布在mm0 12到mm7 14的低单元中间,最后一列数据分布在mm0到mm7的高单元中间。为继续增加使用MMXTMSIMD处理的好处,必须如图3所示转置8×8数组。数组转置在数学中公知。在转置后,第一MMXTM寄存器mm012存储数据原来的第一列,原来第一列的第一行存储在低单元16中,原来第一列的最后一列存储在高单元18中,如图所示。相似地,其它MMXTM寄存器如所示存储8×8数组的列。
虽然8×8数组的转置可以使用公知的打包和解包指令执行,但是这一处理效率很低并且引起相当高的处理开销。一般,对于一个8×8数组的转置处理通过执行4×4数组的转置实现,每一转置对PentiumIII处理器需要至少12个处理周期。这样,仅为转置该数据至少使用64个周期,以便可以使用一个MMXTM指令来操作一个给定列的8个元素。
本发明的实施例通过在处理器中提供另一组寄存器帮助多媒体处理通过一系列打包和解包指令克服了转置MMXTM寄存器中数据的需要。在本发明的实施例中,在处理器结构中设计一个等价的“镜像”MMXTM寄存器组。该寄存器组可以叫作虚拟MMXTM寄存器组,或VMX组。图4是根据本发明的一个实施例连接到MMXTM寄存器的虚拟MMXTM寄存器组的示意图。在一个实施例中,在MMXTM寄存器组10中的MMXTM寄存器的数目和在VMX寄存器组22中提供的VMX寄存器的数目相同。另外,在一个实施例中,VMX寄存器的数目大于或等于在每一寄存器中的单元数目(取决于实现,单元是字节,字,双字,或其它存储单元)。VMX寄存器组22存储来自MMXTM寄存器组中的转置的数组数据并当MMXTM寄存器组中的任何寄存器的任何单元被更新时通过寄存器更新逻辑23可以自动地更新。因此,MMXTM寄存器组10的一行的加载自动导致VMX寄存器组22的一列加载。例如,来自第一MMXTM寄存器mm0 12的数据可以自动地存储在VMX寄存器VM0到VM7的低单元中,来自第二MMXTM寄存器mm1 20的数据可以自动地存储在VMX寄存器的次最低单元中,等等。
回过来看图2,如果MMXTM寄存器用一个用图示P0,0到P7,7指示的8×8数组加载的话,则VMX寄存器可以由寄存器更新逻辑用转置的数组自动加载,如图5所示。为操作该数组的行元素,一个程序可以简单地引用一个或多个MMXTM寄存器nm0 12到nm7 14。然而,为操作该数组的列元素,一个程序可以代之以引用VMX寄存器vm0 24到vm7 26。因为MMXTM寄存器在处理器硬件中用VMX寄存器镜像,因此没有一致性问题。所有MMXTM指令都可以用任何一个寄存器组通过使用对所需要的适合的寄存器的引用来操作。不需对处理器的指令集进行改变,只有操作数引用可能在程序中改变。
本发明的实施例对现有处理器结构的一个优点是本发明为数组操作提供更大的平行性。这通过执行多个打包和解包指令避免了为列操作进行的费用大的转置而实现。
怎样使用本发明的一个例子是在许多视频处理方案中为处理8象素乘8象素块使用的离散余弦变换(DCT)。当前,为执行8×8 DCT时,处理包括首先执行一个1×8的列变换,转置8×8数组,执行另一个1×8列变换,然后再次转置该结果以得到DCT系数。当前在Pentium类处理器上运行的最优化的DCT需要大约300个周期的处理。在这一数量中,大约100个周期用于执行为8×8数组的转置操作。这样,本发明的实现为DCT处理产生大约30%的改善。对逆DCT可以实现相似的性能增益。虽然这里讨论的是DCT的例子,但是本发明的实施例可以对任何数组操作都有用,包括在各种图像和视频压缩算法中使用的那些。
虽然上面在2维(2-D)数组的意义上讨论本发明,但是该概念可以适用于3维或更多维。例如,可以在处理器的设计中包括一个第三寄存器组来存储数组数据的其它转置。
图6是包括具有按照本发明的实施例的MMXTM寄存器组和虚拟MMXTM寄存器组的处理器的系统的示意图。系统50可以包括连接到存储器54的处理器52。处理器52包括在该技术中公知的各种部件,为清楚起见其中许多在图6中省略。指令存储器56存储可以引用一个或者多个MMXTM寄存器10或一个或多个VMX寄存器22的指令。当MMXTM寄存器改变时寄存器更新逻辑23协调自动更新VMX寄存器22。多路转接器(MUX)58从MMXTM寄存器或VMX寄存器中的一个为给算术逻辑单元(ALU)60的输入选择数据。ALU产生为数据存储器52的数据。
本发明允许以更直觉的方式操作MMXTM寄存器。通过增加镜像寄存器组,可以简化任何基于块的算法的实现,并且它们的性能增加。可以从本发明得到好处的一些应用例子包括用于视频压缩算法的离散余弦变换(DCT),3维(3-D)图形算法中的数组变换,及其它。
虽然本发明参考图示实施例说明,但是该说明并不打算被解释为限制的意义。对熟悉本发明所属技术领域的人明显的对图示实施例以及本发明的其它实施例的各种修改都被视为在本发明的精神和范围之内。
权利要求
1.一种处理器,包括第一组寄存器,该第一组寄存器存储数据数组;和连接到第一组寄存器的第二组寄存器,第二组寄存器存储数据数组的转置拷贝。
2.权利要求1所述处理器,另外包括当在第一组寄存器中的数组的任何部分被修改时自动更新在第二组寄存器中的数据数组的转置拷贝的逻辑。
3.权利要求2所述处理器,其中,在第一组寄存器中的数组的行的修改自动导致在第二组寄存器中的数组的转置拷贝的列的相应修改。
4.权利要求1所述处理器,其中,第一组寄存器包括第一数目的寄存器,每一寄存器包括第一数目的存储单元,第二组寄存器包括第二数目的寄存器,每一寄存器包括第二数目的存储单元,并且第二数目的存储单元大于或等于第一数目的寄存器。
5.权利要求4所述处理器,其中,第一数目的寄存器等于第二数目的寄存器。
6.权利要求5所述处理器,其中,第一组寄存器包括MMXTM寄存器,第一数目的寄存器是8,数据数组包含图像数据。
7.权利要求1所述处理器,其中,处理器执行引用第一组寄存器中的一个寄存器的指令来操作数据数组的一行和执行引用第二组寄存器中的一个寄存器的指令来操作数据数组的一列。
8.一种由处理器使用为数组处理的两组寄存器的方法,包括存储数据数组到第一组寄存器,该第一组寄存器包括第一数目的寄存器,每一寄存器包括第一数目的存储单元,每一存储单元存储数组的一个元素;数据数组转置到第二组寄存器,该第二组寄存器包括第二数目的寄存器,每一寄存器包括第二数目的存储单元;引用第一组寄存器中的一个寄存器来操作数据数组的一行;引用第二组寄存器中的一个寄存器来操作数据数组的一列。
9.权利要求8所述方法,另外包括当在第一组寄存器中的数组的任何部分被修改时自动更新在第二组寄存器中转置的数据数组。
10.权利要求9所述方法,另外包括修改在第一组寄存器中的数组的行和自动修改在第二组寄存器中的转置数组的相应列。
11.权利要求8所述方法,另外包括对存储在第二组寄存器中的一个寄存器中的列数据执行变换操作。
12.权利要求11所述方法,其中,执行变换操作包括对存储在第二组寄存器中的一个寄存器中的列数据执行离散余弦变换操作。
13.权利要求8所述方法,其中,第二数目的存储单元大于或等于第一数目的寄存器。
14.权利要求8所述方法,其中,第一数目的寄存器等于第二数目的寄存器。
15.权利要求8所述方法,其中,第一组寄存器包括MMXTM寄存器,第一数目的寄存器是8,数据数组包含图像数据。
16.一种系统,包括存储器;连接到存储器的处理器,该处理器包括第一组寄存器,该第一组寄存器存储数据数组;连接到第一组寄存器的第二组寄存器,该第二组寄存器存储数据数组的转置拷贝。
17.权利要求16所述系统,其中处理器另外包括当在第一组寄存器中的数组的任何部分被修改时自动更新在第二组寄存器中的数据数组的转置拷贝的逻辑。
18.权利要求17所述系统,其中,在第一组寄存器中的数组的行的修改自动导致在第二组寄存器中的数组的转置拷贝的列的相应修改。
19.权利要求16所述系统,其中,第一组寄存器包括第一数目的寄存器,每一寄存器包括第一数目的存储单元,第二组寄存器包括第二数目的寄存器,每一寄存器包括第二数目的存储单元,并且第二数目的存储单元大于或等于第一数目的寄存器。
20.权利要求19所述系统,其中,第一数目的寄存器等于第二数目的寄存器。
21.权利要求20所述系统,其中,第一组寄存器包括MMXTM寄存器,第一数目的寄存器是8,数据数组包含图像数据。
22.权利要求16所述系统,其中,处理器执行引用第一组寄存器中的一个寄存器的指令来操作数据数组的一行和执行引用第二组寄存器中的一个寄存器的指令来操作数据数组的一列。
23.一种由处理器使用为图像数据数组的离散余弦变换(DCT)处理的两组寄存器的方法,包括存储数组到第一组寄存器,该第一组寄存器包括第一数目的寄存器,每一寄存器包括第一数目的存储单元,每一存储单元存储数组的一个元素;数组转置到第二组寄存器,该第二组寄存器包括第二数目的寄存器,每一寄存器包括第二数目的存储单元;至少部分引用第二组寄存器中的一个寄存器执行DCT处理来操作数组的一列。
24.权利要求23所述方法,另外包括当在第一组寄存器中的数组的任何部分被修改时自动更新在第二组寄存器中转置的数据数组。
25.权利要求23所述方法,另外包括修改第一组寄存器中的数组的行和自动修改第二组寄存器中的转置数组的相应列。
全文摘要
一个处理器具有至少两组寄存器。第一组存储数据数组,第二组存储该数据数组的转置拷贝。当修改第一组的任何行的任何部分时,也自动修改在第二组中的转置拷贝的列的相应部分。由处理器使用为数组处理的两组寄存器的方法包括存储数据数组到第一组寄存器,第一组寄存器具有第一数目的寄存器,每一寄存器包括第一数目的存储单元,每一存储单元存储数组的一个元素,和转置该数据数组到第二组寄存器,第二组寄存器具有第二数目的寄存器,每一寄存器包括第二数目的存储单元。该方法还包括引用第一组寄存器中的一个寄存器来操作数据数组的一行和引用第二组寄存器中的一个寄存器来操作数据数组的一列。
文档编号G06F9/302GK1365463SQ00810883
公开日2002年8月21日 申请日期2000年6月26日 优先权日1999年7月26日
发明者G·K·陈 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1