CN101925877B - 对数据执行排列运算的装置与方法 - Google Patents

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

Info

Publication number
CN101925877B
CN101925877B CN200880125258.7A CN200880125258A CN101925877B CN 101925877 B CN101925877 B CN 101925877B CN 200880125258 A CN200880125258 A CN 200880125258A CN 101925877 B CN101925877 B CN 101925877B
Authority
CN
China
Prior art keywords
data
group
computing
sequence
data element
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200880125258.7A
Other languages
English (en)
Other versions
CN101925877A (zh
Inventor
D·H·塞姆斯
M·威尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
U Blox AG
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN101925877A publication Critical patent/CN101925877A/zh
Application granted granted Critical
Publication of CN101925877B publication Critical patent/CN101925877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • G06F7/26Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general the sorted data being recorded on the original record carrier within the same space in which the data had been recorded prior to their sorting, without using intermediate storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Circuits Of Receivers In General (AREA)

Abstract

提供一种用以处理数据的装置,所述装置包含处理电路,其具有用以执行排列运算的排列电路;寄存器组,其具有用以储存数据的多个寄存器;控制电路,其响应程序指令来控制处理电路去执行数据处理运算。所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽而产生控制信号以配置该排列电路来对输入操作数执行排列运算。该位屏蔽在该输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且该排列运算使得其保存该第一排序及该第二排序中的一个但改变该第一排序及该第二排序中的另一个。

Description

对数据执行排列运算的装置与方法
技术领域
本发明涉及一种装置与方法,用以对数据执行排列运算(permutation operation)。
背景技术
数据处理应用程序,例如信号处理应用程序,通常需要数据重新布置,以便在高数据率下执行。当数据处理被充分地加速时,例如,当使用单一指令多数据(SIMD)引擎时,则数据重新布置(例如排列)可能会变成在执行这些运算时的瓶颈。
在信号处理应用程序中(例如按无线电标准所使用的那些),排列的常见形式为去交织(de-interleave)运算以及交织(interleave)运算。为了在去交织的情形下分离两个或更多个信道或是在交织的情形下结合两个或更多个信道,而执行这些运算。一个实例为将数据信道从导频(pilot)信道(即控制信道)中分离。错误更正很常用于信号处理,以更正由于数据通过噪声通信信道传输时可能引起的错误。在错误更正处理期间,则通常会执行数据的打孔(puncturing)与去打孔(de-puncturing)。打孔被用来改变在数据率以及错误鲁棒性之间的取舍。该打孔运算涉及去交织这些数据信道并丢弃第二信道,而去打孔运算涉及用零值交织一个通信信道。
使用多个并行的蝶型排列网络来执行去交织运算已是众所周知的。例如,在2004年11月的第38届信号、系统及计算机的Asilomar年研讨会,Y.Hilewitz,Z.Shee与R Lee的公开物“Comparing FastImplementations of Bit Permutation Instructions”中,提出执行去交织运算的GRP指令如何在两个并行的蝶型网络中被实施。此公开物提及了GRP无法在蝶型或反蝶型网络上执行,但该二个反转的蝶型网络能用来将R位与L位并行分组。一个蝶型网络去交织第一信道,而另一蝶型网络去交织第二信道。然而,此技术不能用来执行交织运算,而仅能执行去交织运算。使用交叉式(cross-bar)配置去执行一般的排列指令亦为已知。然而,此交叉式网络涉及针对n-输入交叉矩阵(cross-bar)的n2次运算。因此,此种交叉式网络不是非常区域有效。
YANG X等人的“Fast subword permutation instructions usingomega and flip network stages”COMPUTER DESIGN,2000.PROCEEDINGS.2000 INTERNATIOINAL CONFERENCE ONAUSTIN,TX,USA 17-20 SEPT.2000,OS ALAMITOS,CA,USA,IEEECOMPUT.SOC,US,2000年9月17日(2000-09-17),15-22页,XP010520078 ISBN:978-0-7695-0801-6公开了一种在以omega理论和交换(flip)网络建模的可编程处理器中有效进行任意n位排列的方式。omflip指令可以以log n个指令执行n个子字的任意排列,其中子字从半字向下变化到单一位。每个omflip指令可以在单一循环中借助于非常有效的硬件实施完成。omflip指令增强了可编程处理器用来处理排他地使用子字排列的多媒体和安全应用的能力。
US 2002/108030A1公开了可用于在可编程处理器中执行的用来解决密码学、多媒体和其他应用中的问题的软件的排列指令。排列指令基于包括至少两个级的omega-flip网络,其中每个级可以执行omega网络级或flip网络级任一个的功能。来自源寄存器的位的初始序列被变换为的位的中间序列被限定。每个位的中间序列被用作到随后的排列指令的输入。排列指令被确定用于将初始源序列排列进入一个或多个位的中间序列知道获得期望的序列。位的中间序列由配置位确定。排列指令形成至少一个指令的排列指令序列。至多21gr/m排列指令被用在排列指令序列中,其中r是将被排列的k位子字的数目,m是在一个指令中运行的网络级的数目。排列指令可以用于将k位子字排列压缩进n位字,其中k可以是1、2、……、或n位,并且k*r=n。
因此,需要以更有效的方式提供加速数据排列运算。还需要能使用蝶型排列网络来执行交织运算。
发明内容
依据本发明的第一方面,提供用以处理数据的装置,所述装置包含:
处理电路,其用以执行数据处理运算,所述处理电路包含用以执行排列运算的排列电路;
寄存器组,其具有用以储存数据的多个寄存器;
控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;
其中所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽(bit-mask)而产生控制信号以配置所述排列电路对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数据;
其中对于所述位屏蔽的所有值,所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一个,但改变另一个,并且所述第一排序及所述第二排序中的一个的所述改变的排序包括反转排序。
本发明认为通过对输入操作数(该输入操作数包含具有第一排序的第一组数据元与具有第二排序的第二组数据元)执行排列运算,以及保存该第一及第二排序中的一个但改变该第一及第二排序中的另一个,可依据位屏蔽使用控制电路并产生控制信号以配置用于执行排列运算的排列电路而执行更有效率的排列运算。假定使得这样的排列运算得以执行的控制产生指令在配置该排列电路时提供较大的灵活性并且使排列运算能够以更区域有效的方式得以执行。这还改善了因以高数据率执行数据重新布置而使数据重新布置变为瓶颈的问题。该第一排序及该第二排序中的一个的该改变的排序包含反转排序。该两个排序的数据组中的一个的反转排序使得该两个数据组的数据可被容易地分开且根据该输入排序而易于重新排序。此外,该第二数据组的反转排序使该排列电路简化。
将认识到,该排列运算可为多个不同的排列运算中的任何一个,如简单重新排序或数据反转。然而,在一个实施例中,该排列运算是交织运算与去交织运算中的一个。这些运算通常在信号处理程序中被执行,而其依据本技术使用排列电路及控制电路的有效实施方案可以改善总处理量(processing throughput)。
将认识到,该控制产生指令能只用来配置排列电路以执行排列运算。可提供分离指令以实际上控制该排列电路以执行该排列运算。然而,在一个实施例中,该控制电路是响应于该控制产生指令来配置该排列电路及执行该排列运算。这提供了该排列运算的方便的实施方案。单一指令的使用可简化通常出现的运算的运行,从而允许程序代码更为精简。
将认识到,该输入操作数的数据元可为单一位的数据元,但在一个实施例中,该输入操作数的数据元包含多位的数据元。排列多位的数据元而非单一位的数据元,需要更少的存储器存取,故其更为有效率。
将认识到,该输入操作数或该排列运算可包含任一类型的输入操作数,如标量或标准向量。然而,在一个实施例中,该输入操作数包含比如来自多于一个通信信道的、包含数据的压缩向量(packedvector)。压缩向量的使用使该计算并行化,故可加快处理。
将认识到,针对该排列运算的该输入操作数可包含标量。类似地,该排列运算产生的输出可包含标量值。然而,在一个实施例中,该排列运算是对包含两个排序的数据组的输入向量数据来执行的,并且产生输出向量,其包含所述第一和第二组数据元中具有所保存的排序的一个以及所述第一和第二组数据元中具有改变的排序的另一个。向量处理减少了执行给定计算所需的存储器存取的数量,也因此改善了计算的效率。
将认识到,该输入向量可直接从存储器被填充。然而,在一个实施例中,该输入向量包含多个向量寄存器,且输出向量包含相应的多个向量寄存器。以这种方式使用寄存器使得数据可更容易地存取,故增加了计算的吞吐量。
将认识到,该位屏蔽可被数据处理装置储存于任何地方,比如在主存储器中。然而,在一个实施例中,该数据处理装置包含至少一个屏蔽寄存器以储存该位屏蔽。专用的屏蔽寄存器使得该排列运算实施起来更简单。
将认识到,该至少一个屏蔽寄存器可以以多个不同的方式中的任一种来进行配置以区分该第一组数据元与该第二组数据元。然而,在一个实施例中,该至少一个屏蔽寄存器使用零位以指示出该第一组数据元和该第二组数据元中的一个,以及使用一位以指示出该两组数据元中的另一个。在替换实施例中,该至少一个屏蔽寄存器是布尔寄存器。这些类型的屏蔽寄存器直接实施,故简化了数据处理装置的制作。
将认识到,假如排列电路能够执行排列运算,则该排列电路可采用多个不同形式中的任一个。然而,在一个实施例中,该排列电路包含蝶型网络(Butterfly Network),其被设置来依照各数据元对之间的蝶型连接而重新布置多个数据元。该排列电路实施为蝶型网络是特别有效率的,因其使得n-输入计算能够以log n级执行。这相较于例如需要n2级来进行n-输入计算的交叉式网络更有利。蝶型网络易于配置且有效地实施。该排列电路实施为蝶型网络允许为了执行交织运算及去交织运算二者而实施单一蝶型网络。这与先前已知的系统相比较更有利,在已知的系统中利用蝶型网络仅能执行去交织运算(不是交织)并且需要至少两个分开的网络来执行该去交织运算。使用单一蝶型网络的能力使得能够使用两个蝶型网络的功率的一半来执行计算。
将认识到,该蝶型网络可为原位(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包含与交织重新布置指令相关联的程序代码;
图10A示意地示出给定的去交织运算的恒定几何结构蝶型电路;
图10B示意地示出给定去交织运算的原位蝶型电路;以及
图11示意地示出图1的数据引擎100的虚拟机实施方案。
具体实施方式
图1示意地示出依据本发明实施例的数据处理装置的示意图。该装置包含数据引擎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样本是以x0,x1,x2来代表,而该信道1样本是以y0,y1,y2,y3及y4来代表。在此特例中,所述向量包含八个数据元,而每一个数据元为多位数据元。然而,该位屏蔽Vm包含共8个位,对应于该向量的8个数据元。该向量去交织指令VDTL对八数据元输入向量220进行操作,该八数据元输入向量220是读取自图1中的该SIMD寄存器组112,而图1中的该蝶型排列网络110是依据该位屏蔽210而进行配置的,使得作为排列的结果,信道0样本与信道1样本分开。因此,该输出向量230是压缩向量,其中依序输出信道0样本x0,x1及x2,而依相反顺序输出信道1样本y4,y3,y2,y1及y0。由此可看出该位屏蔽210具有对应于信道0的位值0,及具有对应于信道1的位值1。因此该位屏蔽210使该蝶型排列电路110能够为了执行该两个信道的分离而区别出信道0样本与信道1样本。
图2B示意地示出依据本发明实施例的向量交织指令VITL。该向量交织指令对包含信道0样本与信道1样本的八数据元输入向量222进行操作。在此情况下,信道0样本被连续地布置在输入向量Vn中,如信道1样本那样。该位屏蔽212指定应如何执行交织运算。尤其是,该输出向量Vd中的、对应于应放置信道0样本的地方的位置在相应的位屏蔽位置具有0,而在该输出向量中的、应放置信道1样本的位置在相应的位屏蔽位置具有值1。因此,该输出向量232具有与信道1数据元y0,y1,y2,y3及y4交织的信道0数据元x0,x1及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。一般来说,在n-输入蝶型网络中的级总数为log n,而交叉点的总数是n log n。这显著少于发生在n-输入交叉式网络(cross-bar network)中的n2个交叉点。因此,该蝶型网络的电路实施方案比标准的交叉式网络更区域有效。在图3的特殊例中,其总共有24个交叉点。在该蝶型网络的每一级中,对于每一输入,存在与其共享相同的两个可能的输出的另一个输入。这些成对的输入在此处将被表示为共享输入并且其相应的成对的输出为共享输出。在该蝶型网络中的这些共享对是使用单一位来配置的。例如,在该蝶型网络的第一级中,数据元输入对x0,y0为共享输入,其具有在其正下方的由第一级中的虚线交叉所指示的共享输出。在此情况下,在第一级结束时,数据输入单元x0及y0保持在其现有位置(即,它们沿垂直路径而行而非虚线交叉的路径)。然而,假如该蝶型网络被不同地配置,则这二个输入数据元就会交换位置。
在该蝶型网络的第二级320,输入数据元y0与第二级的输出处的输入数据元y0交换位置,且单元x2与y3也交换位置。注意在此情况下,第一级310涉及水平地位于输入与输出间的一个位置的潜在移位,而第二级涉及两个位置的水平地交换,及第三级涉及四个位置的水平地交换。在每一情况中,输入数据元可能在输出中保持相同的位置,正如其在相关的输入级中一样。由此可见,从输入级310开始,该八个数据元输入向量[x0,y0,y1,y2,x1,x2,y3,y4]对应于图2A中的该输入向量220,而在实施该去交织指令时所涉及的该排列的三个级,可通过在图3的该蝶型排列网络中沿从上到下被追踪,使得该第三级330的输出对应于图2A中的输出向量230。相反地,从图3中的该蝶型网络的下方开始然后从级330往回移动通过级320最后到级310对应于实施图2B中的向量交织指令VITL。
对应于图2A及图2B中的向量交织指令的控制位可通过注明在每一级中的全部数据交换是以实线标示出而无交换实际发生之处以虚线绘出而从图3的蝶型图导出。因此,由右至左读取控制位,级310的控制位是[0,1,0,0],级320的控制位是[0,1,1,0],而级330的控制位是[1,1,1,0]。注意该向量交织指令与该向量去交织指令是使用单蝶型排列网络来实施的。在先前已知的系统中,根本不知道使用蝶型网络来执行交织运算而且使用蝶型网络来执行去交织运算可以仅使用至少两个不同的如图4中的背对背或边对边的蝶型网络来实施。
图4示意地示出为何在先前已知的系统中被认为需要两个单独的蝶型网络执行去交织运算。图4示出用于信道0样本的第一蝶型网络400及用于信道1样本的第二蝶型网络450。为了与图2A所示的本发明实施例一致,使用相同的八单元交织的输入向量。然而,只有信道0样本是在第一蝶型网络400中,而信道1样本是示于第二蝶型网络450中。在先前已知的系统中,信道0样本与信道1样本的输出使得这两个信道样本的排序保存在输出上。尤其是,输入排序分别为x0,x1,x2及y0,y1,y2,y3,y4,而输出排序是相同的。对应于给定信道的数据元是连续地布置在输出中而非在输入中。
注意在图3a中,在蝶型图中的虚线表示交换,而实线表示交换正在执行。然而在图4、10A及01B的图中,全部线均为实线。在这些图示中,每一个实线交叉表示单元可被交换(依据该交叉),或依据输入控制位而留在相同位置。
图4的蝶型图示出每一情况中所需的产生输出向量的重新布置的三个级。从每个蝶型网络的级2的输出清楚这样的事实,即单一蝶型排列网络不能用于执行此去交织运算,其中表明在所需的数据元的输出位置中存在两个冲突(clash)410,420。尤其是,冲突410涉及具有在第一蝶型网络中最左边的位置的单元x0,其也被第二蝶型网络450中的数据元y1所需。类似地,来自蝶型网络400中的右边的第二数据元,即数据元X2,与被要求在与x2相同的输出位置以达到想要的输出向量的最后排序的信道1数据元Y3,在第二级的输出处产生冲突。比较图3与图4,可看出依据本技术实施该排列会得到改善的效率。通过允许信道1数据在输出中拥有反转排序,该计算可使用单一蝶型网络来实施。此外,交织及去交织运算可以被容易地且有效地执行。
图5A示意地示出对于八单元位屏蔽的情况的图1的控制产生器116的控制电路的特定实施例。该控制电路500的输出代表控制位ci[0],ci[1],ci[2]及ci[3]。该四个控制位对应于图3的蝶型排列网络的级“i”的配置位。依据8位屏蔽来生成控制位。该电路包含一组4个异或门(XOR门)502,504,506,508。屏蔽位m[0]与m[1]被输入到第一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的输出代表控制位ci[1]。控制位ci[0]直接对应于屏蔽位m[0]。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位屏蔽,其中n=2且初始输入屏蔽m=[1 1 0 0 1 1 1 0]
i=0                c0[ ]=[0 1 0 0]
下一级的输入屏蔽    m[ ]=[1 0 1 1 1 0 1 0]
i=1                c1[ ]=[0 1 1 0]
下一级的输入屏蔽    m[ ]=[1 1 0 1 0 1 1 0]
i=2                c2[ ]=[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。由此可看出由以上的输入屏蔽所产生的控制位的输出对应于四位控制值c0[ ]=[0,1,0,0]。
图5C示出在上述计算中对于i=1的输入屏蔽的值及输出控制位。在此情况下,输入屏蔽对应于m等于[10111010],即,相对于上面的级i等于0列出的输入位屏蔽。在级i=1处所产生的控制位为所示的c1[ ]=[0,1,1,0]。在此情况下,由于i=1(故满足i≤1的条件),到AND门510与512的控制相关的输入为1而不为0,但到AND门526的控制相关的输入为0。
图5D示出i=2的级计算,具有到每一个逻辑门的相应的输入及输出。在此情况下,输入位屏蔽m[ ]=[11010110],其为相对于上面的i=1列出的位屏蔽。在此级=2所产生的输出为控制位c2[]=[1,1,1,0]。在此情况下,由于i=2,到AND门510、512与526中的每一个的控制相关的输入为0(因为不满足i≤1的条件)。
图6示意地示出控制产生器116的控制电路在n=3的情形下,即对于16数据元输入向量与屏蔽的情况的替换实施方案。就图5A的电路而言,该电路包含XOR门与AND门的阵列。输出控制值依赖于屏蔽位与控制值(即i的值)两者。图1中的控制产生电路116实施下面的算法以计算下一个计算级所使用的输出屏蔽向量。
控制产生
输入    2n+1位屏蔽(m[2n+1-1]....m(0))
输出    2n位的(n+1)控制屏蔽,每个(Ci[2n-1]....Ci[0])
算法
    for  i=0,1,2,....n
    {
Ci[2n-1]....Ci[0]是由控制级电路产生的控制屏蔽
对于每个K=2n-1,...0,如果(Ci[K]则交换m[2K+1]和m[2K]
重新排序(m[2n+1-1]....m[0]←——(m[2n+1-1]m[2n+1-3]...m[1]
                              m[2n+1-2]m[2n+1-4]...m[0])
}
注意:这可通过循环m或通过连锁(chain)中间步骤电路n次而串行地实施。
                            7 6 5 4 3 2 1 0
例如:n=2    i=0,1,2    m=[1 1 0 0 1 1 1 0]给定
            3 2 1 0
对于i=0    给定C0[ ]=[0 1 0 0]
则仅C0[2]#0
∴交换m[5]和m[4]——→不改变
重新排序[m7 m6 m5 m4 m3 m2 m1 m0]
——→[m7 m6 m5 m4 m3 m2 m1 m0]
  [1 0 1 1 1 0 1 0]=级i=0时m输出的值
注意图6的电路可以以直接的方式扩展到2的任何屏蔽大小次方(any mask size of a power of two)。
图7提供依据本发明实施例的控制产生指令VDTLC以C程序语言表示的程序代码列表。控制产生指令VDTLC将32位的布尔值VBOOL16_T X0作为输入并且将VBOOL16_T X1作为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机器码),其包含虚拟机模拟运行的依据本技术的控制产生指令。若该虚拟机将在其上运行的通用处理器具有足够高的性能,则可达到实际的总处理量,而能够运行包括依照本技术的控制产生指令的现有的代码基础这样的优点可说明以此方式使用通用处理器是正确的。

Claims (19)

1.一种用以处理数据的装置,所述装置包含:
处理电路,其用以执行数据处理运算,所述处理电路包含用以执行排列运算的排列电路;
寄存器组,其具有用以储存数据的多个寄存器;
控制电路,其响应程序指令来控制所述处理电路去执行所述数据处理运算;
其中所述控制电路被设置成对控制产生指令作出响应,以依据位屏蔽而产生控制信号以配置所述排列电路对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数据;
其中根据所述位屏蔽的所有值,所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一个,但改变另一个,所述第一排序及所述第二排序中的一个的所述改变的排序包括反转排序,并且其中所述第一组和第二组数据元都包含储存于所述寄存器组内的数据。
2.如权利要求1中所述的装置,其中所述排列运算是交织运算及去交织运算中的一个。
3.如权利要求1中所述的装置,其中所述排列运算是在由所述控制产生指令配置所述排列电路之后由排列指令执行。
4.如权利要求1所述的装置,其中所述控制电路响应于所述控制产生指令来配置所述排列电路及执行所述排列运算。
5.如权利要求1中所述的装置,其中所述数据元包含多位数据元。
6.如权利要求1所述的装置,其中所述输入操作数包含压缩向量。
7.如权利要求1-6中任一项所述的装置,其中所述排列运算是对包含所述第一组和第二组数据元的数据的输入向量来执行的,并且产生数据的输出向量,其包含在所述第一组和第二组数据元中具有所保存的排序的一个以及在所述第一组和第二组数据元中具有改变的排序的另一个。
8.如权利要求7中所述的装置,其中所述输入向量包含多个向量寄存器,并且所述输出向量包含相应的多个向量寄存器。
9.如权利要求1所述的装置,其包含用于储存所述位屏蔽的至少一个屏蔽寄存器。
10.如权利要求9中所述的装置,其中所述至少一个屏蔽寄存器使用零位及一位以分别指示所述第一组数据元与所述第二组数据元中的一个以及另一个。
11.如权利要求9中所述的装置,其中所述至少一个屏蔽寄存器是布尔寄存器。
12.如权利要求1所述的装置,其中所述排列电路包含被设置来依照在数对所述数据元之间的蝶型连接而重新布置多个数据元的蝶型网络。
13.如权利要求12中所述的装置,其中所述蝶型网络是恒定几何结构网络,当所述多个数据元被允许移动时,在所述蝶型网络中所述蝶型连接保持固定。
14.如权利要求12中所述的装置,其中当所述多个数据元被允许移动时,所述蝶型连接保持固定。
15.如权利要求1所述的装置,其中所述第一组数据元及所述第二组数据元均具有不同数量的组成数据元。
16.如权利要求1所述的装置,其中所述两个排序的数据组分别对应于两个不同的通信信道。
17.如权利要求1所述的装置,其中所述数据处理装置是数字信号处理器。
18.如权利要求1所述的装置,其中所述数据处理装置是协同处理器。
19.一种使用数据处理装置来执行排列运算的方法,该数据处理装置包括用于执行数据处理运算的处理电路、具有用于储存数据的多个寄存器的寄存器组、以及响应程序指令来控制所述处理电路去执行所述数据处理运算的控制电路,所述处理电路包含用于执行排列运算的排列电路,所述方法包含下列步骤:
响应于控制产生指令,依据位屏蔽而产生控制信号以配置所述排列电路来对输入操作数执行排列运算,该输入操作数包含储存于所述寄存器组的一个或多个寄存器内的数据;
其中根据所述位屏蔽的所有值,所述位屏蔽在所述输入操作数中识别出具有第一排序的第一组数据元及具有第二排序的第二组数据元,并且其中所述排列运算保存所述第一排序及所述第二排序中的一个,但改变另一个,所述第一排序及所述第二排序中的一个的所述改变的排序包括反转排序,并且其中所述第一组和第二组数据元都包含储存于所述寄存器组内的数据。
CN200880125258.7A 2008-01-22 2008-11-26 对数据执行排列运算的装置与方法 Active CN101925877B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0801137.1A GB2456775B (en) 2008-01-22 2008-01-22 Apparatus and method for performing permutation operations on data
GB0801137.1 2008-01-22
PCT/GB2008/003948 WO2009092987A1 (en) 2008-01-22 2008-11-26 Apparatus and method for performing permutation operations on data

Publications (2)

Publication Number Publication Date
CN101925877A CN101925877A (zh) 2010-12-22
CN101925877B true CN101925877B (zh) 2014-04-23

Family

ID=39166156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880125258.7A Active CN101925877B (zh) 2008-01-22 2008-11-26 对数据执行排列运算的装置与方法

Country Status (11)

Country Link
US (1) US8423752B2 (zh)
EP (1) EP2235622B1 (zh)
JP (1) JP5279843B2 (zh)
KR (1) KR20100120154A (zh)
CN (1) CN101925877B (zh)
AT (1) ATE519154T1 (zh)
GB (1) GB2456775B (zh)
IL (1) IL206176A0 (zh)
MY (1) MY150315A (zh)
TW (1) TW200935304A (zh)
WO (1) WO2009092987A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120047344A1 (en) * 2010-08-17 2012-02-23 Sheaffer Gad S Methods and apparatuses for re-ordering data
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US20130305020A1 (en) 2011-04-01 2013-11-14 Robert C. Valentine Vector friendly instruction format and execution thereof
US20120254592A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
WO2013006030A1 (en) * 2011-07-06 2013-01-10 Mimos Berhad Apparatus and method for performing parallel bits distribution with bi-delta network
MY174802A (en) * 2011-07-12 2020-05-15 Mimos Berhad Apparatus and method of performing bit separation
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN108681465B (zh) * 2011-12-22 2022-08-02 英特尔公司 用于产生整数序列的处理器、处理器核及系统
CN104011670B (zh) * 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9354877B2 (en) 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
CN104011673B (zh) * 2011-12-30 2016-12-07 英特尔公司 向量频率压缩指令
US9098449B2 (en) 2013-03-15 2015-08-04 Analog Devices, Inc. FFT accelerator
US9639503B2 (en) 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
KR102122406B1 (ko) * 2013-11-06 2020-06-12 삼성전자주식회사 셔플 명령어 처리 장치 및 방법
WO2015089314A1 (en) 2013-12-11 2015-06-18 Mill Computing, Inc. Computer processor employing operand data with associated meta-data
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal
US9785437B2 (en) 2014-12-23 2017-10-10 Intel Corporation Method and apparatus for performing a vector bit reversal and crossing
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US9965275B2 (en) * 2015-07-31 2018-05-08 Arm Limited Element size increasing instruction
US10198264B2 (en) * 2015-12-15 2019-02-05 Intel Corporation Sorting data and merging sorted data in an instruction set architecture
US20170177355A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instruction and Logic for Permute Sequence
US11170294B2 (en) 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
CN109284823B (zh) * 2017-04-20 2020-08-04 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN108733352B (zh) * 2017-04-25 2021-06-11 上海寒武纪信息科技有限公司 支持向量排序的装置、方法及应用

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108030A1 (en) * 2000-05-05 2002-08-08 Lee Ruby B. Method and system for performing permutations using permutation instructions based on modified omega and flip stages
CN101064517A (zh) * 2006-04-28 2007-10-31 高维度有限公司 利用通道编码算法用于排列和解排列的网络

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673321A (en) * 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
JP3450788B2 (ja) * 2000-03-06 2003-09-29 松下電器産業株式会社 復号化装置および復号化処理方法
US6718492B1 (en) * 2000-04-07 2004-04-06 Sun Microsystems, Inc. System and method for arranging bits of a data word in accordance with a mask
US6922472B2 (en) * 2000-05-05 2005-07-26 Teleputers, Llc Method and system for performing permutations using permutation instructions based on butterfly networks
AU2001286383A1 (en) * 2000-05-05 2001-11-26 Ruby B. Lee A method and system for performing permutations with bit permutation instructions
US20030002474A1 (en) * 2001-03-21 2003-01-02 Thomas Alexander Multi-stream merge network for data width conversion and multiplexing
JP2002351858A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd 処理装置
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
KR100860660B1 (ko) * 2002-01-09 2008-09-26 삼성전자주식회사 통신시스템의 인터리빙 장치 및 방법
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7730292B2 (en) * 2003-03-31 2010-06-01 Hewlett-Packard Development Company, L.P. Parallel subword instructions for directing results to selected subword locations of data processor result register
US7660840B2 (en) * 2003-09-29 2010-02-09 Broadcom Corporation Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly
US7428564B2 (en) * 2003-11-26 2008-09-23 Gibb Sean G Pipelined FFT processor with memory address interleaving
US20060095485A1 (en) * 2004-10-30 2006-05-04 Moore George S System and method for permuting a vector
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US20070106881A1 (en) * 2005-11-08 2007-05-10 Stexar Corp. Bit-wise operation followed by byte-wise permutation for implementing DSP data manipulation instructions
US7868894B2 (en) * 2006-11-28 2011-01-11 International Business Machines Corporation Operand multiplexor control modifier instruction in a fine grain multithreaded vector microprocessor
US8285766B2 (en) * 2007-05-23 2012-10-09 The Trustees Of Princeton University Microprocessor shifter circuits utilizing butterfly and inverse butterfly routing circuits, and control circuits therefor
US8051239B2 (en) * 2007-06-04 2011-11-01 Nokia Corporation Multiple access for parallel turbo decoder

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020108030A1 (en) * 2000-05-05 2002-08-08 Lee Ruby B. Method and system for performing permutations using permutation instructions based on modified omega and flip stages
CN101064517A (zh) * 2006-04-28 2007-10-31 高维度有限公司 利用通道编码算法用于排列和解排列的网络

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Fast Bit Permutation Unit for Media Enhanced Microprocessors;Giorgos Dimitrakopoulos;《circuits and systems,ISCAS 2006》;20060521;40-52 *
Fast Subword Permutation Instructions Using Omega and Flip Network Stages;Yang;《computer design,2000,proceedings 2000 international conferences on Austin》;20000917;15-22 *
Giorgos Dimitrakopoulos.Fast Bit Permutation Unit for Media Enhanced Microprocessors.《circuits and systems,ISCAS 2006》.2006,40-52.
Yang.Fast Subword Permutation Instructions Using Omega and Flip Network Stages.《computer design,2000,proceedings 2000 international conferences on Austin》.2000,15-22.

Also Published As

Publication number Publication date
GB0801137D0 (en) 2008-02-27
JP5279843B2 (ja) 2013-09-04
US20090187746A1 (en) 2009-07-23
KR20100120154A (ko) 2010-11-12
US8423752B2 (en) 2013-04-16
EP2235622A1 (en) 2010-10-06
MY150315A (en) 2013-12-31
GB2456775B (en) 2012-10-31
JP2011510389A (ja) 2011-03-31
TW200935304A (en) 2009-08-16
IL206176A0 (en) 2010-12-30
CN101925877A (zh) 2010-12-22
WO2009092987A1 (en) 2009-07-30
ATE519154T1 (de) 2011-08-15
EP2235622B1 (en) 2011-08-03
GB2456775A (en) 2009-07-29

Similar Documents

Publication Publication Date Title
CN101925877B (zh) 对数据执行排列运算的装置与方法
Liang et al. Evaluating fast algorithms for convolutional neural networks on FPGAs
Johnsson Solving tridiagonal systems on ensemble architectures
CN105930902A (zh) 一种神经网络的处理方法、系统
CN105051679A (zh) 用于支持矢量排序算法和其他算法的具有树状结构的功能单元
CN107229463A (zh) 计算设备和相应计算方法
Faraji et al. An efficient crossover architecture for hardware parallel implementation of genetic algorithm
Bu et al. A design methodology for fixed-size systolic arrays
CN113330466A (zh) 涉及混合量子机器、量子信息技术的方面和/或其他特征的系统和方法
Cypher Theoretical aspects of VLSI pin limitations
JP4310500B2 (ja) 重要成分優先計算方式ならびに装置
JP2015503785A (ja) Fft/dftの逆順ソーティングシステム、方法およびその演算システム
Miller et al. Highly efficient exhaustive search algorithm for optimizing canonical Reed-Muller expansions of boolean functions
Guo et al. Automated framework for FPGA-based parallel genetic algorithms
Zhao et al. Graph partitioning for near memory processing
Nodine et al. I/O overhead and parallel VLSI architectures for lattice computations
Melnyk et al. Ordered access memory based programmable hardware accelerator parallel architecture
Liang et al. Parallel computation of standard competition rankings over a sorted array
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置
Robinson Complex graph algorithms
US20240111529A1 (en) Vector processing unit with programmable multicycle shuffle unit
US20230244484A1 (en) Bit-parallel vector composability for neural acceleration
Taheri Sarvetamin et al. A New Approach to Solve N-Queen Problem with Parallel Genetic Algorithm
Malita et al. Parallel RISC Architecture. A Functional Approach Based on Backus's FP language
Zhou et al. PipeFuser: Building Flexible Pipeline Architecture for DNN Accelerators via Layer Fusion

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SWITZERLAND U-BLOX HOLDING AG

Free format text: FORMER OWNER: ADVANCED RISC MACHINES LTD.

Effective date: 20150107

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150107

Address after: Swiss Tulsa

Patentee after: Ublox AG

Address before: Cambridge County

Patentee before: Advanced Risc Machines Ltd.