处理器以及由处理器为矩阵处理使用两组寄存器的方法

文档序号:6381695阅读:202来源:国知局
专利名称:处理器以及由处理器为矩阵处理使用两组寄存器的方法
技术领域
本发明一般涉及计算机系统,具体说,涉及处理器结构。
背景技术
一些处理器设计为为多媒体操作提供它们的指令集结构(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寄存器mm012中,第一行的第一列存储在mm0的低单元中,第一行的最后一列存储在mm0的高单元中,图像数据的第二行存储在第二MMXTM寄存器mm120中,该第二行的第一列存储在mm1的低单元中,第二行的最后一列存储在mm1的高单元中,等等。
一旦数据如所示存储在MMXTM寄存器中,则处理器可以执行指令,每次一行有效操作该8×8矩阵。这一类型处理通常例如用于基于块的图像应用和其它应用中。例如,行0的所有数据可以使用单一MMXTM指令加到行3的数据上,如下所示。
PADDB MM0,MM3;把行0加到行3上并把结果存储到行0中。
然而,为一次一列操作8×8矩阵会出现问题,因为每一列的数据分布在8个MMXTM寄存器中间。例如,第一列的数据分别分布在mm012到mm714的低单元中间,最后一列数据分布在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寄存器mm012的数据可以自动地存储在VMX寄存器VM0到VM7的低单元中,来自第二MMXTM寄存器mm120的数据可以自动地存储在VMX寄存器的次最低单元中,等等。
回过来看图2,如果MMXTM寄存器用一个用图示P0,0到P7,7指示的8×8矩阵加载的话,则VMX寄存器可以由寄存器更新逻辑用转置的矩阵自动加载,如图5所示。为操作该矩阵的行元素,一个程序可以简单地引用一个或多个MMXTM寄存器mm012到nm714。然而,为操作该矩阵的列元素,一个程序可以代之以引用VMX寄存器vm024到vm726。因为MMXTM寄存器在处理器硬件中用VMX寄存器镜像,因此没有一致性问题。所有MMXTM指令都可以用任何一个寄存器组通过使用对所需要的适合的寄存器的引用来操作。不需对处理器的指令集进行改变,只有操作数引用可能在程序中改变。
本发明的实施例对现有处理器结构的一个优点是本发明为矩阵操作提供更大的平行性。这通过执行多个打包和解包指令避免了为列操作进行的费用大的转置而实现。
怎样使用本发明的一个例子是在许多视频处理方案中为处理8象素乘8象素块使用的离散余弦变换(DCT)。当前,为执行8×8DCT时,处理包括首先执行一个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产生为数据存储器62的数据。
本发明允许以更直觉的方式操作MMXTM寄存器。通过增加镜像寄存器组,可以简化任何基于块的算法的实现,并且它们的性能增加。可以从本发明得到好处的一些应用例子包括用于视频压缩算法的离散余弦变换(DCT),3维(3-D)图形算法中的矩阵变换,及其它。
虽然本发明参考图示实施例说明,但是该说明并不打算被解释为限制的意义。对熟悉本发明所属技术领域的人明显的对图示实施例以及本发明的其它实施例的各种修改都被视为在本发明的精神和范围之内。
权利要求
1.一种处理器,包括第一组存储第一数据矩阵的寄存器,具有第一数目的行和第一数目的列;第一数据矩阵中的第一元素,存储在第一行索引和第一列索引上;第二组存储第二数据矩阵的寄存器,具有第二数目的行和第二数目的列;第二数据矩阵中的第二元素,存储在等于第一列索引的第二行索引上,以及等于第一行索引的第二列索引上(第二元素此后称作第一元素的旋转配对);及修改第一元素的旋转配对的逻辑,以响应第一元素的任意修改。
2.权利要求1所述处理器,其中所述逻辑通过将第一元素的旋转配对设置为第一元素的新值,来响应第一元素值的任意变化。
3.权利要求2所述处理器,还包括通过将第一元素设置为第一元素的旋转配对的新值,来响应第一元素的旋转配对的值的任意变化的逻辑。
4.权利要求3所述处理器,其中第二数目的行大于或等于第一数目的列;且第二数目的列大于或等于第一数目的行。
5.权利要求4所述处理器,还包括引用存储的具有单一指令的第一或第二行数据矩阵中的元素的逻辑。
6.权利要求5所述处理器,其中第一组寄存器包括第一数目的寄存器,每个寄存器包括第一数目的存储单元;第二组寄存器包括第二数目的寄存器,每个寄存器包括第二数目的存储单元;及第二数目的存储单元大于或等于第一数目的寄存器。
7.权利要求6所述处理器,其中第一数目的寄存器等于第二数目的寄存器。
8.权利要求7所述处理器,其中第一组寄存器包括MMX寄存器,第一数目的寄存器是8,数据矩阵包括图像数据。
9.一种方法,包括存储具有在第一组寄存器中的第一行索引和第一列索引上的第一元素的第一数据矩阵;存储具有第二数目行和第二数目列的第二数据矩阵,第二矩阵具有在第二组寄存器中,在等于第一列索引的第二行索引上以及在等于第一行索引的第二列索引上的第二元素(第二元素此后称作第一元素的旋转配对);及修改第一元素的旋转配对,以响应第一元素的任意修改。
10.权利要求9所述方法,其中修改第一元素的旋转配对还包括将第一元素的旋转配对设置为第一元素的新值。
11.权利要求10所述方法,还包括将第一元素设置为第一元素的旋转配对的新值,以响应第一元素的旋转配对的任意修改。
12.权利要求11所述方法,其中第二数目的行大于或等于第一数目的列;及第二数目的列大于或等于第一数目的行。
13.权利要求12所述方法,还包括将数据矩阵存储在第一组寄存器中;将数据矩阵的转置存储在第二组寄存器中;引用第一组寄存器中之一来操作数据矩阵的一行;并引用第二组寄存器中之一来操作数据矩阵的一列。
14.权利要求13所述方法,还包括对存储在第二组寄存器中之一的列数据执行变换操作。
15.权利要求14所述方法,其中执行变换操作包括对存储在第二组寄存器中之一的列数据执行离散余弦变换。
16.权利要求15所述方法,其中第一组寄存器包括第一数目的寄存器,每个寄存器包括第一数目的存储单元,第二组寄存器包括第二数目的寄存器,每个寄存器包括第二数目的存储单元,第二数目的存储单元大于或等于第一数目的寄存器。
17.权利要求16所述方法,其中第一数目的寄存器等于第二数目的寄存器。
18.权利要求17所述方法,其中第一组寄存器包括MMX寄存器,第一数目的寄存器是8,数据矩阵包括图像数据。
19.一种系统,包括连接到存储器的处理器,该处理器包括第一组存储第一数据矩阵的寄存器,具有第一数目的行和第一数目的列;第一数据矩阵中的第一元素,存储在第一行索引和第一列索引上;第二组存储第二数据矩阵的寄存器,具有第二数目的行和第二数目的列;第二数据矩阵中的第二元素,存储在等于第一列索引的第二行索引上,以及等于第一行索引的第二列索引上(第二元素此后称作第一元素的旋转配对);及修改第一元素的旋转配对的逻辑,以响应第一元素的任意修改。
20.权利要求19所述系统,其中所述逻辑通过将第一元素的旋转配对设置为第一元素的新值,来响应第一元素值的任意变化。
21.权利要求20所述系统,还包括通过将第一元素设置为第一元素的旋转配对的新值,来响应第一元素的旋转配对的值的任意变化的逻辑。
22.权利要求21所述系统,其中第二数目的行大于或等于第一数目的列;且第二数目的列大于或等于第一数目的行。
23.权利要求22所述系统,还包括引用存储的具有单一指令的第一或第二行数据矩阵中的元素的逻辑。
24.权利要求23所述系统,其中第一组寄存器包括第一数目的寄存器,每个寄存器包括第一数目的存储单元,第二组寄存器包括第二数目的寄存器,每个寄存器包括第二数目的存储单元,且第二数目的存储单元大于或等于第一数目的寄存器。
25.权利要求24所述系统,其中第一数目的寄存器等于第二数目的寄存器。
26.权利要求25所述系统,其中第一组寄存器包括MMX寄存器,第一数目的寄存器是8,数据矩阵包括图像数据。
全文摘要
一个处理器具有至少两组寄存器。第一组存储数据矩阵,第二组存储该数据矩阵的转置拷贝。当修改第一组的任何行的任何部分时,也自动修改在第二组中的转置拷贝的列的相应部分。由处理器使用为矩阵处理的两组寄存器的方法包括存储数据矩阵到第一组寄存器,第一组寄存器具有第一数目的寄存器,每一寄存器包括第一数目的存储单元,每一存储单元存储矩阵的一个元素,和转置该数据矩阵到第二组寄存器,第二组寄存器具有第二数目的寄存器,每一寄存器包括第二数目的存储单元。该方法还包括引用第一组寄存器中的一个寄存器来操作数据矩阵的一行和引用第二组寄存器中的一个寄存器来操作数据矩阵的一列。
文档编号G06F9/30GK1532686SQ200410003820
公开日2004年9月29日 申请日期2000年6月26日 优先权日1999年7月26日
发明者G·K·陈, G K 陈 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1