对数据执行排列运算的装置与方法

文档序号:6479429阅读:145来源:国知局
专利名称:对数据执行排列运算的装置与方法
技术领域
本发明涉及一种装置与方法,用以对数据执行排列运算(permutation operation)。
背景技术
数据处理应用程序,例如信号处理应用程序,通常需要数据重新布置,以便在高数 据率下执行。当数据处理被充分地加速时,例如,当使用单一指令多数据(SIMD)引擎时,则 数据重新布置(例如排列)可能会变成在执行这些运算时的瓶颈。在信号处理应用程序中(例如按无线电标准所使用的那些),排列的常见形式为 去交织(de-interleave)运算以及交织(interleave)运算。为了在去交织的情形下分离两 个或更多个信道或是在交织的情形下结合两个或更多个信道,而执行这些运算。一个实例 为将数据信道从导频(Pilot)信道(即控制信道)中分离。错误更正很常用于信号处理, 以更正由于数据通过噪声通信信道传输时可能引起的错误。在错误更正处理期间,则通常 会执行数据的打孔(puncturing)与去打孔(de-puncturing)。打孔被用来改变在数据率以 及错误鲁棒性之间的取舍。该打孔运算涉及去交织这些数据信道并丢弃第二信道,而去打 孔运算涉及用零值交织一个通信信道。使用多个并行的蝶型排列网络来执行去交织运算已是众所周知的。例如,在2004 年11月的第38届信号、系统及计算机的Asilomar年研讨会,Y. Hilewitz, Z. Shee与R Lee 的公开物"Comparing Fast Implementations of Bit Permutation Instructions,,中,提 出执行去交织运算的GRP指令如何在两个并行的蝶型网络中被实施。此公开物提及了 GRP 无法在蝶型或反蝶型网络上执行,但该二个反转的蝶型网络能用来将R位与L位并行分组。 一个蝶型网络去交织第一信道,而另一蝶型网络去交织第二信道。然而,此技术不能用来执 行交织运算,而仅能执行去交织运算。使用交叉式(cross-bar)配置去执行一般的排列指 令亦为已知。然而,此交叉式网络涉及针对η-输入交叉矩阵(cross-bar)的η2次运算。因 此,此种交叉式网络不是非常区域有效。因此,需要以更有效的方式提供加速数据排列运算。还需要能使用蝶型排列网络 来执行交织运算。

发明内容
依据本发明的第一方面,提供用以处理数据的装置,所述装置包含处理电路,其用以执行数据处理运算,所述处理电路包含用以执行排列运算的排 列电路;寄存器组,其具有用以储存数据的多个寄存器;控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;其中所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽(bit-mask) 而产生控制信号以配置所述排列电路对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具 有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中 的一个,但改变另一个。本发明认为通过对输入操作数(该输入操作数包含具有第一排序的第一组数据 元与具有第二排序的第二组数据元)执行排列运算,以及保存该第一及第二排序中的一个 但改变该第一及第二排序中的另一个,可依据位屏蔽使用控制电路并产生控制信号以配置 用于执行排列运算的排列电路而执行更有效率的排列运算。假定使得这样的排列运算得以 执行的控制产生指令在配置该排列电路时提供较大的灵活性并且使排列运算能够以更区 域有效的方式得以执行。这还改善了因以高数据率执行数据重新布置而使数据重新布置变 为瓶颈的问题。将认识到,作为该排列运算结果的该输入操作数的该第一排序及该第二排序中的 一个的改变的排序可包含与该输入排序相关的多个不同的排序的改变中的任何一个。然而 在一种布置中,该第一排序及第二排序中的一个的该改变的排序包含反转排序。该两个排 序的数据组的一个的该反转排序,使得该两个数据组的数据可被容易地分开且根据该输入 排序而易于重新排序。此外,该第二数据组的反转排序使该排列电路简化。将认识到,该排列运算可为多个不同的排列运算中的任何一个,如简单重新排序 或数据反转。然而,在一个实施例中,该排列运算是交织运算与去交织运算中的一个。这些 运算通常在信号处理程序中被执行,而其依据本技术使用排列电路及控制电路的有效实施 方案可以改善总处理量(processing throughput) 将认识到,该控制产生指令能只用来配置排列电路以执行排列运算。可提供分离 指令以实际上控制该排列电路以执行该排列运算。然而,在一个实施例中,该控制电路是响 应于该控制产生指令来配置该排列电路及执行该排列运算。这提供了该排列运算的方便的 实施方案。单一指令的使用可简化通常出现的运算的运行,从而允许程序代码更为精简。将认识到,该输入操作数的数据元可为单一位的数据元,但在一个实施例中,该输 入操作数的数据元包含多位的数据元。排列多位的数据元而非单一位的数据元,需要更少 的存储器存取,故其更为有效率。将认识到,该输入操作数或该排列运算可包含任一类型的输入操作数,如标量或 标准向量。然而,在一个实施例中,该输入操作数包含比如来自多于一个通信信道的、包含 数据的压缩向量(packedvector)。压缩向量的使用使该计算并行化,故可加快处理。将认识到,针对该排列运算的该输入操作数可包含标量。类似地,该排列运算产生 的输出可包含标量值。然而,在一个实施例中,该排列运算是对包含两个排序的数据组的输 入向量数据来执行的,并且产生输出向量,其包含所述第一和第二组数据元中具有所保存 的排序的一个以及所述第一和第二组数据元中具有改变的排序的另一个。向量处理减少了 执行给定计算所需的存储器存取的数量,也因此改善了计算的效率。将认识到,该输入向量可直接从存储器被填充。然而,在一个实施例中,该输入向 量包含多个向量寄存器,且输出向量包含相应的多个向量寄存器。以这种方式使用寄存器 使得数据可更容易地存取,故增加了计算的吞吐量。将认识到,该位屏蔽可被数据处理装置储存于任何地方,比如在主存储器中。然而,在一个实施例中,该数据处理装置包含至少一个屏蔽寄存器以储存该位屏蔽。专用的屏 蔽寄存器使得该排列运算实施起来更简单。将认识到,该至少一个屏蔽寄存器可以以多个不同的方式中的任一种来进行配置 以区分该第一组数据元与该第二组数据元。然而,在一个实施例中,该至少一个屏蔽寄存器 使用零位以指示出该第一组数据元和该第二组数据元中的一个,以及使用一位以指示出该 两组数据元中的另一个。在替换实施例中,该至少一个屏蔽寄存器是布尔寄存器。这些类 型的屏蔽寄存器直接实施,故简化了数据处理装置的制作。将认识到,假如排列电路能够执行排列运算,则该排列电路可采用多个不同形式 中的任一个。然而,在一个实施例中,该排列电路包含蝶型网络(Butterfly Network),其被 设置来依照各数据元对之间的蝶型连接而重新布置多个数据元。该排列电路实施为蝶型网 络是特别有效率的,因其使得η-输入计算能够以log η级执行。这相较于例如需要η2级来 进行η-输入计算的交叉式网络更有利。蝶型网络易于配置且有效地实施。该排列电路实 施为蝶型网络允许为了执行交织运算及去交织运算二者而实施单一蝶型网络。这与先前已 知的系统相比较更有利,在已知的系统中利用蝶型网络仅能执行去交织运算(不是交织) 并且需要至少两个分开的网络来执行该去交织运算。使用单一蝶型网络的能力使得能够使 用两个蝶型网络的功率的一半来执行计算。将认识到,该蝶型网络可为原位(in-place)蝶型网络,其中数据元保持固定而该 蝶型会改变。然而,在一个实施例中,该蝶型网络是恒定的几何结构网络,当该多个数据元 被允许移动时,在该蝶型网络中,蝶型连接保持固定。将认识到,该第一与第二组数据元可各具有相同数量的组成数据元。然而,在一个 实施例中,该第一组数据元及第二组数据元具有不同数量的组成数据元。这提供了在实施 排列运算时的较大的灵活性,且允许执行更多种类的交织及去交织运算。将认识到,该第一组数据元及第二组数据元可包含来自单一源的数据。然而,在一 个实施例中,该第一组数据元及该第二组数据元分别对应两个不同的通信信道。通过促使 两个不同通信信道的交织及去交织,这允许有效率地处理通常出现的信号处理运算。将认识到,该数据处理装置可采取多种不同形式中的任一种,例如,该数据处理装 置可为中央处理单元(CPU)。然而,在一个实施例中,该数据处理装置是数字信号处理器。 在替换实施例中,该数据处理装置是协处理器。依据第二方面,本发明提供一种使用数据处理装置来执行排列运算的方法,该数 据处理装置包括用于执行数据处理运算的处理电路、具有用于储存数据的多个寄存器的寄 存器组、以及响应程序指令来控制所述处理电路去执行所述数据处理运算的控制电路,所 述处理电路包含用于执行排列运算的排列电路,所述方法包含下列步骤(i)响应于控制产生指令,依据位屏蔽而产生控制信号以配置所述排列电路来对 输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内 的数据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具 有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中 的一个,但改变另一个。依据第三方面,本发明提供一种虚拟机,其提供对用于处理数据的装置的模拟,所述装置包含用以执行数据处理运算的处理电路,该处理电路包含用于执行排列运算的排列电 路;寄存器组,其具有用于储存数据的多个寄存器;控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;其中所述控制电路被设置来响应于控制产生指令以依据位屏蔽而产生控制信号 以配置所述排列电路来对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器 组的一个或多个寄存器内的数据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具 有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中 的一个,但改变另一个。本发明的各个其他相应方面和特征在所附权利要求中限定。从属权利要求的特征 的组合可以与独立权利要求的特征适当地组合并且并不仅仅是如权利要求中明确阐述的 那样。


现在仅通过举例的方式参考附图描述本发明的实施例,附图中图1示意地示出依据本发明实施例的数据处理装置;图2A、2B示意地示出依据本技术的向量去交织指令及向量交织指令;图3示意地示出由图1的蝶型排列网络在实施图2A、2B的向量交织指令VITL及 向量去交织指令VDTL时执行的一系列排列;图4示意地示出在先前已知的系统中为何需要两个单独的蝶型网络来实施去交 织运算;图5A示意地示出在八元件的位屏蔽的例子中控制产生器116的控制电路的特定 实施例;图5B表示控制值i等于0及输入屏蔽(input mask) m等于[11001110]的情况;图5C示出在上述计算中对于该输入屏蔽的值及对于控制级i = 1的输出控制位;图5D示出i = 2的级计算,其具有与每一个逻辑门相对应的输入及输出;图6示意地示出用于16位屏蔽的实例的控制产生电路;图7提供依据本发明实施例的控制产生指令VDTLC的以C程序语言表示的程序代 码列表;图8是实例去交织指令的程序代码列表;图9包含与交织重新布置指令相关联的程序代码;图IOA示意地示出给定的去交织运算的恒定几何结构蝶型电路;图IOB示意地示出给定去交织运算的原位蝶型电路;以及图11示意地示出图1的数据引擎100的虚拟机实施方案。
具体实施例方式图1示意地示出依据本发明实施例的数据处理装置的示意图。该装置包含数据
7引擎100,其具有蝶型排列网络110 ;SIMD寄存器112 ;屏蔽寄存器组114 ;以及控制产生器 116。该数据处理装置进一步包含置于该数据引擎外部的数据存储器120、控制器130以及 指令存储器140。该蝶型排列网络110对输入样本执行排列运算,这些输入样本包含具有多个自 SIMD寄存器112中读取的多位数据元的压缩(packed)向量。SIMD寄存器均为32倍的16 位单元宽。排列运算的输入向量是用数对寄存器(即64*16位的单元)来一次执行的。排 列的结果会被写回该SIMD寄存器组112中。数据引擎100的处理电路响应于从该指令存 储器140中读取的程序指令的运行来执行数据处理运算。该控制器130将那些指令转换成 控制该数据引擎100的处理电路以执行数据处理运算的控制信号。然而,该蝶型排列网络 110进一步受到该数据引擎100中的该控制产生器电路116所产生的控制信号的控制。尤其是,该控制产生器116会依据自32位屏蔽寄存器组114中读取的输入位屏蔽 而产生用来配置该蝶型排列网络110的控制信号。该控制产生器电路116输出产生的控制 信号,及将它们储存于该屏蔽寄存器组114中。控制信号进而自该屏蔽寄存器组114被读 取,并且在适当时间提供给蝶型网络以执行相关的排列运算。排列运算的结果向量是“压缩”向量,包含64*16位数据元。被该屏蔽寄存器组 114施加于该控制产生器电路116的位屏蔽用来在输入向量中识别出具有第一排序的第一 组数据元及具有第二排序的第二组数据元。比如,该第一组数据元可对应于第一通信信道 的数据,而该第二组数据元对应于第二通信信道。由于排列运算是使用数对32*16位的寄 存器来执行的,因此该控制产生器116读取两个32位的屏蔽寄存器以取得识别在所排列的 64个单元中的两个数据组所需的64个屏蔽位。由该控制产生器116产生的控制信号配置 该蝶型网络以使得对输入向量执行的排列运算保存该第一排序及该第二排序中的一个但 改变另一个。在SIMD寄存器及在该屏蔽寄存器中的数据值可从外部数据存储器120中被 读入。该控制产生器电路116所输出的特定控制信号将依据多个可能的屏蔽向量中的哪一 个作为输入被供给该控制产生器电路116而改变。排列网络110对包含总共32个16位数 据元的压缩向量进行操作。图2A、2B示意地示出依据本技术的向量去交织指令及向量交织指令。图2A示意地示出向量去交织指令,其依据位屏蔽Vm将包含多个数据元的输入向 量Vn重新布置于包含信道0样本及反转的信道1样本的输出向量Vd中。该信道0样本是 以xO,xl, x2来代表,而该信道1样本是以y0,yl, y2, y3及y4来代表。在此特例中,所述 向量包含八个数据元,而每一个数据元为多位数据元。然而,该位屏蔽Vm包含共8个位,对 应于该向量的8个数据元。该向量去交织指令VDTL对八数据元输入向量220进行操作,该 八数据元输入向量220是读取自图1中的该SIMD寄存器组112,而图1中的该蝶型排列网 络110是依据该位屏蔽210而进行配置的,使得作为排列的结果,信道0样本与信道1样本 分开。因此,该输出向量230是压缩向量,其中依序输出信道0样本xO,xl及x2,而依相反 顺序输出信道1样本y4,y3,y2,yl及y0。由此可看出该位屏蔽210具有对应于信道0的 位值0,及具有对应于信道1的位值1。因此该位屏蔽210使该蝶型排列电路110能够为了 执行该两个信道的分离而区别出信道0样本与信道1样本。图2B示意地示出依据本发明实施例的向量交织指令VITL。该向量交织指令对包 含信道O样本与信道1样本的八数据元输入向量222进行操作。在此情况下,信道0样本
8被连续地布置在输入向量Vn中,如信道1样本那样。该位屏蔽212指定应如何执行交织运 算。尤其是,该输出向量Vd中的、对应于应放置信道0样本的地方的位置在相应的位屏蔽 位置具有0,而在该输出向量中的、应放置信道1样本的位置在相应的位屏蔽位置具有值1。 因此,该输出向量232具有与信道1数据元y0,yl, y2, y3及y4交织的信道0数据元xO, xl及x2。在图2B的输出向量232的情形下,由左至右读取该向量,信道0样本以升序被布 置,如信道1样本那样。这可对照向量去交织运算的输出向量230,在输出向量230中由左 至右读取的情形下,信道0样本是以升序被布置,而信道1样本是以降序被布置。然而,在 图2A与图2B中,信道0数据元的排序是保存在该输入向量Vn与该输出向量Vd之间的,而 信道1样本的排序在该输入向量Vn与该输出向量Vd之间被反转。虽然信道1样本的排序 在输出上相对于输入排序被反转,但其通常直接反转信道1样本的排序,以在该二个信道 的分离之后一次取得整个向量(或寄存器)的输入排序。在此特定实例实施例中,该位屏 蔽寄存器是布尔值(即判定(predicate))的寄存器。然而,在替换实施例中,该位屏蔽寄 存器可为普通寄存器。在图1的布置中,该屏蔽寄存器组114是特殊的判定寄存器组,其寄 存器包含每线道(perlane)单一位。图3示意地示出由图1中的蝶型排列网络110在实施图2A、2B的向量交织指令 (VITL)及向量去交织指令(VDTL)时所执行的一系列排列。蝶型网络具有一些使其适于用 来执行数据排列的有吸引力的性质。在此情况下,该蝶型网络具有八个输入数据元,而该排 列可被拆成三个单独的级(stage):第一级310,第二级320,以及第三级330。一般来说, 在η-输入蝶型网络中的级总数为log n,而交叉点的总数是η log η。这显著少于发生在 η-输入交叉式网络(cross-bar network)中的η2个交叉点。因此,该蝶型网络的电路实施 方案比标准的交叉式网络更区域有效。在图3的特殊例中,其总共有24个交叉点。在该蝶 型网络的每一级中,对于每一输入,存在与其共享相同的两个可能的输出的另一个输入。这 些成对的输入在此处将被表示为共享输入并且其相应的成对的输出为共享输出。在该蝶型 网络中的这些共享对是使用单一位来配置的。例如,在该蝶型网络的第一级中,数据元输入 对x0,y0为共享输入,其具有在其正下方的由第一级中的虚线交叉所指示的共享输出。在 此情况下,在第一级结束时,数据输入单元x0及y0保持在其现有位置(即,它们沿垂直路 径而行而非虚线交叉的路径)。然而,假如该蝶型网络被不同地配置,则这二个输入数据元 就会交换位置。在该蝶型网络的第二级320,输入数据元y0与第二级的输出处的输入数据元y0交 换位置,且单元x2与y3也交换位置。注意在此情况下,第一级310涉及水平地位于输入与 输出间的一个位置的潜在移位,而第二级涉及两个位置的水平地交换,及第三级涉及四个 位置的水平地交换。在每一情况中,输入数据元可能在输出中保持相同的位置,正如其在相 关的输入级中一样。由此可见,从输入级310开始,该八个数据元输入向量[X(l,y0, y2, X1, X2, y3,y4]对应于图2A中的该输入向量220,而在实施该去交织指令时所涉及的该排列 的三个级,可通过在图3的该蝶型排列网络中沿从上到下被追踪,使得该第三级330的输出 对应于图2A中的输出向量230。相反地,从图3中的该蝶型网络的下方开始然后从级330 往回移动通过级320最后到级310对应于实施图2B中的向量交织指令VITL。对应于图2A及图2B中的向量交织指令的控制位可通过注明在每一级中的全部数 据交换是以实线标示出而无交换实际发生之处以虚线绘出而从图3的蝶型图导出。因此,由右至左读取控制位,级310的控制位是W,1,0,0],级320的控制位是W,1,1,0],而级 330的控制位是[1,1,1,0]。注意该向量交织指令与该向量去交织指令是使用单蝶型排列 网络来实施的。在先前已知的系统中,根本不知道使用蝶型网络来执行交织运算而且使用 蝶型网络来执行去交织运算可以仅使用至少两个不同的如图4中的背对背或边对边的蝶 型网络来实施。图4示意地示出为何在先前已知的系统中被认为需要两个单独的蝶型网络执行 去交织运算。图4示出用于信道0样本的第一蝶型网络400及用于信道1样本的第二蝶型 网络450。为了与图2A所示的本发明实施例一致,使用相同的八单元交织的输入向量。然 而,只有信道0样本是在第一蝶型网络400中,而信道1样本是示于第二蝶型网络450中。 在先前已知的系统中,信道0样本与信道1样本的输出使得这两个信道样本的排序保存在 输出上。尤其是,输入排序分别为劝^1^2及70,71,72,73,74,而输出排序是相同的。对 应于给定信道的数据元是连续地布置在输出中而非在输入中。注意在图3a中,在蝶型图中的虚线表示交换,而实线表示交换正在执行。然而在 图4、IOA及OlB的图中,全部线均为实线。在这些图示中,每一个实线交叉表示单元可被交 换(依据该交叉),或依据输入控制位而留在相同位置。图4的蝶型图示出每一情况中所需的产生输出向量的重新布置的三个级。从每 个蝶型网络的级2的输出清楚这样的事实,即单一蝶型排列网络不能用于执行此去交织运 算,其中表明在所需的数据元的输出位置中存在两个冲突(clash)410,420。尤其是,冲突 410涉及具有在第一蝶型网络中最左边的位置的单元xO,其也被第二蝶型网络450中的数 据元yl所需。类似地,来自蝶型网络400中的右边的第二数据元,即数据元X2,与被要求在 与x2相同的输出位置以达到想要的输出向量的最后排序的信道1数据元Y3,在第二级的输 出处产生冲突。比较图3与图4,可看出依据本技术实施该排列会得到改善的效率。通过允 许信道1数据在输出中拥有反转排序,该计算可使用单一蝶型网络来实施。此外,交织及去 交织运算可以被容易地且有效地执行。图5A示意地示出对于八单元位屏蔽的情况的图1的控制产生器116的控制电路 的特定实施例。该控制电路500的输出代表控制位(^^)],(^[1],(^[2]及(^[3]。该四个控 制位对应于图3的蝶型排列网络的级“i”的配置位。依据8位屏蔽来生成控制位。该电路 包含一组4个异或门(X0R门)502,504,506,508。屏蔽位m
与m[l]被输入到第一 XOR 门502,屏蔽位m[2]与m[3]被输入到XOR门504,屏蔽位m[4]与m[5]被输入到XOR门506, 以及屏蔽位m[6]与m[7]被输入到XOR门508。XOR门502的输出连同依据控制值i是否小于或等于1的输入一起供应给AND门 510。AND门510的输出被供应给第二 XOR门522与第三XOR门532。XOR门532的输出代 表控制位4[1]。控制位Ci
直接对应于屏蔽位40]。XOR门522的第二输入对应于XOR 门504的输出。XOR门522的输出连同依据控制位i是否小于或等于0的输入一起供应给 AND门526。AND门526的输出连同该屏蔽位m[4] —起作为输入供应给XOR门534。XOR门 534的输出对应于控制位Ci [2]。AND门526的输出也被作为输入供应给另一个XOR门529,该XOR门529的输出没 有被使用。AND门526的输出进一步供应给XOR门528,而其输出连同屏蔽位m[6] —起又 被供应给另一个XOR门536。此XOR门536的输出对应于控制位Ci [3]。XOR门506的输出连同依据控制位i是否小于或等于1的输入一起供应给AND门512。AND门512的输出既 被用作XOR门528的输入又被用作XOR门524的输入。因此,控制电路500包含多个XOR门及多个AND门,使得输出控制位既依赖于屏蔽 位又依赖于控制值i。现在将在图5B、5C与5D的实例中提供图5A中电路的每一级处的各 值的特定实例。实例输入2n+1位屏蔽,其中η = 2目.初始输入屏蔽m = [110 0 1110]
i = 0
c0[ ] =
下一级的输入屏蔽 m[ ] = [1 0 1 1 1 0 1 0]
i = 1
c,[ ] =
下一级的输入屏蔽 m[ ] = [1 1 0 1 0 1 1 0]
i = 2
![ ] = [1 1 1 0]下一级的输入屏蔽 m[ ] = [1 0 0 1 1 1 1 0]图5B表示控制位i = 0而输入位屏蔽m等于[11001110]的情形。每一个逻辑门 的逻辑输出是在图5B的图中示出。在此情况下,由于i = 0 (且满足i < 1),到AND门510、 512与526的控制相关的输入都采用值1而非值0。由此可看出由以上的输入屏蔽所产生 的控制位的输出对应于四位控制值cQ[ ] =
。图5C示出在上述计算中对于i = 1的输入屏蔽的值及输出控制位。在此情况下, 输入屏蔽对应于m等于[10111010],S卩,相对于上面的级i等于0列出的输入位屏蔽。在 级i = 1处所产生的控制位为所示的C1 [ ] =
o在此情况下,由于i = 1(故满 足i彡1的条件),到AND门510与512的控制相关的输入为1而不为0,但到AND门526 的控制相关的输入为0。图5D示出i = 2的级计算,具有到每一个逻辑门的相应的输入及输出。在此情况 下,输入位屏蔽111[ ] = [11010110],其为相对于上面的i = 1列出的位屏蔽。在此级=2 所产生的输出为控制位C2 [ ] = [1,1,1,0]o在此情况下,由于i = 2,到AND门510、512与 526中的每一个的控制相关的输入为0 (因为不满足i ( 1的条件)。图6示意地示出控制产生器116的控制电路在η = 3的情形下,即对于16数据 元输入向量与屏蔽的情况的替换实施方案。就图5Α的电路而言,该电路包含XOR门与AND 门的阵列。输出控制值依赖于屏蔽位与控制值(即i的值)两者。图1中的控制产生电路 116实施下面的算法以计算下一个计算级所使用的输出屏蔽向量。控制产生MA 2n+1 位屏蔽(m[2n+1-l]....m(0))mi 2n 位的(η+l)控制屏蔽,每个(Ci [2n_l] · · · · CjO])算法for i = 0,1,2,____η{Ci^n-I].. . . Ci
是由控制级电路产生的控制屏蔽对于每个仄二?“-丨,…^,如果(Ci [K]则交换m[2K+l]和m[2K]重新排序(m[2n+1-l]....m
<--(m[2n+1-l]m[2n+1-3]. . . m[l]m[2n+1-2]m[2n+1_4]. . .m
)
}注意这可通过循环m或通过连锁(chain)中间步骤电路η次而串行地实施。76543210例如η= 2 i = 0,1,2 m = [1 1 0 0 1 1 1 0]给定3 2 10对于i = 0 给定 CQ[ ] = W 1 0 0]则仅C。[2] #0.·.交换 m[5]和 m[4]--^不改变重新排序[m7 m6 m5 m4 m3 m2 Hi1 m0]-- · [m7 m6 m5 m4 m3 m2 Hi1 m0][丄ο丄丄丄ο丄o]=级土 = ο时 !输出的值注意图6的电路可以以直接的方式扩展到2的任何屏蔽大小次方(any mask size of a power of two) 0图7提供依据本发明实施例的控制产生指令VDTLC以C程序语言表示的程序代码 列表。控制产生指令VDTLC将32位的布尔值VB00L16_T XO作为输入并且将VB00L16_T Xl 作为64位的位屏蔽,且产生包含用于配置图1的蝶型排列网络110的控制位的输出。此程 序代码实施上述的控制产生算法,该算法涉及交换某些屏蔽位以及重新排序该屏蔽,以产 生下一计算级的输入屏蔽。图8是与去交织重新布置指令特别相关的程序代码列表。图9是与交织重新布置指令相关的程序代码列表。为了实施图2A与图2B所示的每一个重新布置操作,可使用单一原子(atomic)程 序指令。可替代地,两个或更多个程序指令的组合可用来基于给定的输入向量产生所需的 输出向量。特别地,在所述实施例中,单独的控制产生指令用来产生控制信号,而随后的重 新布置指令用来执行交织重新布置或去交织重新布置。将认识到,在替换实施例中,该控制 产生与该交织或去交织运算可组合在单一程序指令中。示意地示于图3中的蝶型网络仅为一个实例布置。前述的控制信号产生产生控制 信号以用于恒定几何结构的蝶型中。在恒定几何结构的蝶型排列网络中,相同对单元始终 被交换,但这些单元自身被移动以产生不同的输出。在替换实施例中,使用数据元在其中保 持固定的快速傅利叶变换(FFT)型的蝶型排列网络,但为了执行该重新布置,这些蝶型连 接自身会改变。图10A示意地示出对于给定的去交织运算的恒定几何结构的蝶型电路,而图10B 示出对于相同去交织运算的原位蝶型电路。由此可看出每一个级的控制信号在图10A与图 10B中均相同,但是在两图中每一个级所执行的交换不相同。图10A与图10B的电路是相同 的,即,它们具有相同的连接,但具有不同的物理二维布局。然而,以图10A的布置而言,存 在仅使用门的第一层以及以三次循环再使用它们三次的选择。一般来说,控制信号对于这 两个电路而言具有不同顺序,但对于所示实例的特定组的控制值而言情况并非如此。虽然上述技术可以由运行包括上述指令的一系列本地指令的硬件来执行,但将认 识到在替换实施例中,这种指令可能被运行于虚拟机环境中,其中指令对于虚拟机来说是 本地的,但该虚拟机由在具有不同本地指令集的硬件上执行的软件来执行。该虚拟机环境可提供模拟完整的指令集的完整的虚拟机环境或可以是部分的,例如仅一些指令,包括本 技术的指令,由硬件留滞而由部分虚拟机来模拟。更具体而言,上述的控制产生指令可作为完整或部分虚拟机的本地指令来被运 行,与虚拟机连同其下面的硬件平台一起相结合运作,以提供上述处理电路和控制电路。图11示意地示出图1中的数据引擎100的虚拟机的实施方案。该布置包含被布 置来模拟数据引擎100的运作的虚拟机1100。虚拟机1100 (例如,模拟ARM处理器或数据 引擎)被布置来接收机器码(例如,ARM机器码),其包含虚拟机模拟运行的依据本技术的 控制产生指令。若该虚拟机将在其上运行的通用处理器具有足够高的性能,则可达到实际 的总处理量,而能够运行包括依照本技术的控制产生指令的现有的代码基础这样的优点可 说明以此方式使用通用处理器是正确的。
权利要求
一种用以处理数据的装置,所述装置包含处理电路,其用以执行数据处理运算,所述处理电路包含用以执行排列运算的排列电路;寄存器组,其具有用以储存数据的多个寄存器;控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;其中所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽而产生控制信号以配置所述排列电路对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一个,但改变另一个。
2.如前述权利要求中任一项所述的装置,其中所述第一排序及第二排序中的一个的所 述改变的排序包含反转排序。
3.如权利要求1中所述的装置,其中所述排列运算是交织运算及去交织运算中的一个。
4.如权利要求1或2中所述的装置,其中所述排列运算是在由所述控制产生指令配置 所述排列电路之后由排列指令执行。
5.如前述权利要求中任一项所述的装置,其中所述控制电路响应于所述控制产生指令 来配置所述排列电路及执行所述排列运算。
6.如权利要求1中所述的装置,其中所述数据元包含多位数据元。
7.如前述权利要求中任一项所述的装置,其中所述输入操作数包含压缩向量。
8.如前述权利要求中任一项所述的装置,其中所述排列运算是对包含所述第一组和第 二组数据元的数据的输入向量来执行的,并且产生数据的输出向量,其包含在所述第一组 和第二组数据元中具有所保存的排序的一个以及在所述第一组和第二组数据元中具有改 变的排序的另一个。
9.如权利要求8中所述的装置,其中所述输入向量包含多个向量寄存器,并且所述输 出向量包含相应的多个向量寄存器。
10.如前述权利要求中任一项所述的装置,其包含用于储存所述位屏蔽的至少一个屏 蔽寄存器。
11.如权利要求10中所述的装置,其中所述至少一个屏蔽寄存器使用零位及一位以分 别指示所述第一组数据元与所述第二组数据元中的一个以及另一个。
12.如权利要求10中所述的装置,其中所述至少一个屏蔽寄存器是布尔寄存器。
13.如前述权利要求中任一项所述的装置,其中所述排列电路包含被设置来依照在数 对所述数据元之间的蝶型连接而重新布置多个数据元的蝶型网络。
14.如权利要求13中所述的装置,其中所述蝶型网络是恒定几何结构网络,当所述多 个数据元被允许移动时,在所述蝶型网络中所述蝶型连接保持固定。
15.如权利要求13中所述的装置,其中当所述多个数据元被允许移动时,所述蝶型连 接保持固定。
16.如前述权利要求中任一项所述的装置,其中所述第一组数据元及所述第二组数据元均具有不同数量的组成数据元。
17.如前述权利要求中任一项所述的装置,其中所述两个排序的数据组分别对应于两 个不同的通信信道。
18.如前述权利要求中任一项所述的装置,其中所述数据处理装置是数字信号处理器。
19.如前述权利要求中任一项所述的装置,其中所述数据处理装置是协同处理器。
20.一种使用数据处理装置来执行排列运算的方法,该数据处理装置包括用于执行数 据处理运算的处理电路、具有用于储存数据的多个寄存器的寄存器组、以及响应程序指令 来控制所述处理电路去执行所述数据处理运算的控制电路,所述处理电路包含用于执行排 列运算的排列电路,所述方法包含下列步骤(i)响应于控制产生指令,依据位屏蔽而产生控制信号以配置所述排列电路来对输入 操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数 据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第 二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一 个,但改变另一个。
21.一种计算机程序产品,其包含用于控制计算机以执行如权利要求20中所述的方法 的计算机程序,所述计算机程序包含至少一个控制产生指令。
22.—种虚拟机,其提供对用于处理数据的装置的模拟,所述装置包含用以执行数据处理运算的处理电路,该处理电路包含用于执行排列运算的排列电路;寄存器组,其具有用于储存数据的多个寄存器;控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;其中所述控制电路被设置来响应于控制产生指令以依据位屏蔽而产生控制信号以配 置所述排列电路来对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的 一个或多个寄存器内的数据;其中所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第 二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一 个,但改变另一个。
全文摘要
提供一种用以处理数据的装置,所述装置包含处理电路,其具有用以执行排列运算的排列电路;寄存器组,其具有用以储存数据的多个寄存器;控制电路,其响应程序指令来控制处理电路去执行数据处理运算。所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽而产生控制信号以配置该排列电路来对输入操作数执行排列运算。该位屏蔽在该输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且该排列运算使得其保存该第一排序及该第二排序中的一个但改变该第一排序及该第二排序中的另一个。
文档编号G06F9/315GK101925877SQ200880125258
公开日2010年12月22日 申请日期2008年11月26日 优先权日2008年1月22日
发明者D·H·塞姆斯, M·威尔德 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1