CN101061460A - 用于混移运算的微处理器设备和方法 - Google Patents

用于混移运算的微处理器设备和方法 Download PDF

Info

Publication number
CN101061460A
CN101061460A CN200580039646.XA CN200580039646A CN101061460A CN 101061460 A CN101061460 A CN 101061460A CN 200580039646 A CN200580039646 A CN 200580039646A CN 101061460 A CN101061460 A CN 101061460A
Authority
CN
China
Prior art keywords
vector
indices
parameter
instruction
input
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.)
Granted
Application number
CN200580039646.XA
Other languages
English (en)
Other versions
CN101061460B (zh
Inventor
科内利斯·H·范贝尔凯
巴拉克瑞南·斯瑞尼瓦桑
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN101061460A publication Critical patent/CN101061460A/zh
Application granted granted Critical
Publication of CN101061460B publication Critical patent/CN101061460B/zh
Expired - Fee Related 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Abstract

本发明涉及一种微处理器设备,包括具有功能矢量处理器单元的矢量处理器结构,所述功能矢量处理器单元包括用于存储多个索引矢量的第一存储器装置和处理装置,所述功能矢量处理器单元被配置用于接收处理指令和要处理的至少一个输入矢量,所述第一存储器装置被配置用于根据处理指令向处理装置提供所述多个索引矢量之一,以及处理装置被配置用于响应所述指令来产生至少一个输出矢量,所述输出矢量具有根据所提供的所述一个索引矢量重新设置的所述至少一个输入矢量的元素。所述功能矢量处理器单元还包括:预处理装置,配置用于在根据处理过的索引矢量产生所述至少一个输出矢量之前,接收参数并且依据所述参数来对所述一个索引矢量的元素进行处理。本发明还涉及一种利用该功能矢量处理单元对矢量进行处理的方法。

Description

用于混移运算的微处理器设备和方法
技术领域
本发明涉及一种微处理器设备,包括具有至少一个功能矢量处理器单元的矢量处理器结构,所述功能矢量处理器单元包括用于存储多个索引矢量(index vector)的存储器装置和处理装置,所述功能矢量处理器单元被配置用于接收处理指令和要处理的至少一个输入矢量,所述存储器装置被配置用于根据处理指令,向处理装置提供所述多个索引矢量之一,以及处理装置被配置用于响应所述指令来产生至少一个输出矢量,所述输出矢量具有根据所提供的所述一个索引矢量重新设置的至少一个输入矢量的元素。相应地,本发明涉及一种用于处理矢量的方法,包括步骤:接收处理指令和要处理的至少一个输入矢量;在第一存储器装置中存储多个索引矢量;根据处理指令选择所述多个索引矢量之一;以及响应所述指令,产生至少一个输出矢量,所述输出矢量具有根据所提供的所述一个索引矢量重新设置的所述至少一个输入矢量的元素。
背景技术
几十年来,很好地建立了在下文中称作矢量处理器的微处理器设备和方法。代替或除了由仅采用标量处理器结构的微处理器所提供的标量指令,矢量处理器提供矢量指令集(与以上矢量或并行结构相反)。典型地,每一个指令规定了包含多个数据字或矢量元素的运算数矢量,该运算数矢量的长度(矢量元素的个数)、以及要应用的运算。矢量处理的优势在于,代替针对单个数据字的连续运算,允许在所述矢量指令之一内,同时针对全部矢量进行运算,从而提高了计算速度。例如,通过单个存储器存取,矢量处理器将从外部存储器连续地得到全部矢量,然后将连续地对矢量进行运算,最后通过另一单个存取连续地存储回外部存储器。因此,矢量处理是一种单指令多数据(SIMD)并行处理技术。通过使用矢量寄存器结构,甚至可以进一步地提高计算速度,所述矢量寄存器结构允许处理器在靠近处理器的其他功能单元的集成矢量寄存器中保持中间结果,从而减小了临时存储需求、内部指令等待时间等。
存在许多不同类型的矢量指令,可以将其中的一些分类为:矢量-矢量指令,规定了针对一个或多个矢量的运算,例如对矢量进行移位或混移(shuffle)、或者对两个或更多矢量进行逐元素地加、减、乘或除;矢量-标量指令,规定了针对矢量和标量的运算,例如标量乘积;矢量-标量指令(矢量-减小),规定了针对一个或更多矢量的运算,并且传递诸如矢量积之类的标量;以及矢量-存储器指令,规定了加载和存储运算以在外部存储器和集成矢量寄存器之间传送数据。依据任务,甚至可以实现更复杂的指令,例如,规定了根据矢量产生阵列的阵列运算等。此外,规定了针对矢量的逻辑运算的指令也是可能的。在近来的发展中,将多个矢量指令封装在单个指令字中并且并行地执行,从而,再一次提高了处理速度。该处理类型称作非常长指令字(VLIW)并行处理技术。
所有这些指令由相应的功能单元(FU)来执行。例如,称作矢量存储单元(VMU)的对矢量-存储器指令负责的FU包含:集成的矢量寄存器,以及用于接收和执行矢量-存储器指令的处理装置。根据如下所述的指令,这些处理装置将所请求的矢量元素从外部存储器加载到它的矢量寄存器中,或将矢量元素存储到外部存储器中。通常,VMU是与处理器外部的“外部世界”相连的唯一FU。在支持VLIW的矢量处理器中集成了附加的指令分布单元(IDU),用于接收非常长指令字,并使指令继续或分发至其他功能单元。
存在多个矢量-存储器指令,允许处理器根据在外部存储器中对矢量元素进行寻址的不同存取模式来对存储器进行存取。如果矢量元素在存储器中是全部邻近的,即组成所请求的矢量的数据字位于相邻的存储器地址中,那么从一组存储体中得到矢量是容易的任务。该存取通常称作单位-步幅存取。在一些情况下,通过有限的恒定位移,把将要得到的数据字在存储器中分离。这称作步幅存取或步幅-n存取,其中n表示两个相邻矢量元素之间存储器地址的距离。在这种情况下,所述指令还规定了步幅n,以便允许VMU在单个存储器存取中得到全部数据。
然而,有时候将要从存储器加载作为矢量的元素的数据字、和/或将要存储回存储器的数据字没有通过恒定的位移进行均匀地分离,而是位于(预计算的)存储器中的任意位置和/或按照任意顺序。此外,外部存储器的所述P个存储体的顺序通常与矢量元素的检索/传递顺序不相匹配。为了允许处理器对在单个矢量-存储器指令中任意分布的元素数据进行存取,VMU必须还具有表示其中存储了矢量元素的全部存储器位置的地址。这是通过矢量-存储器指令来实现的,称作“收集-指令”,提供了包含地址元素的地址矢量。因此,提供所谓的“分散-指令”(另一个矢量-存储器指令),允许处理器根据在单个存储器存取中给定的地址矢量来将矢量元素存储至存储器。
在当数据字位于存储器中任意位置时的情况下,要求在开始的段落中描述的功能单元(在下文中也称作混移单元SFU)对从存储器获得的数据元素进行重新设置。对混移单元进行编程包括向混移单元提供包含“混移图案”的上述索引矢量。在混移图案中的每一个元素规定了源元素的位置。在图1中,给出了收集指令的说明。其中,第一寄存器110提供存储器的起始地址(100)。第二寄存器120提供将要加载的矢量的长度(4)。例如,混移图案或索引矢量130在位置1处指定值4。因此,必须将输入(矢量)的元素4的内容复制到输出矢量150的位置1,在这种情况下输入的元素4是起始地址之后存储器140中的第四个元素,输出矢量150是由程序所请求的矢量,等等。
在可选的混移方案中,代替如在以上示例中指定源位置,将提供矢量内部元素的目的地位置。然而,这不是普遍的。
在分散或收集运算中,由地址矢量中的地址元素的最低有效位来确定适当的混移图案,以及更精确地,输入到SFU中的处理指令。例如,在其他应用中,根据软件代码,可以来要求按照比特反转的地址顺序来读取FFT输入块的(P大小的)段,混移图案由代码来直接确定。在上述矢量处理器的情况下,将多个混移图案存储在专用混移存储器装置中的混移处理装置附近。在图2中示意性地给出了SFU的公知硬件实现的示例。SFU 200包括P个多路复用器212、214、...、216的阵列210,每一个多路复用器均具有用于要处理的输入矢量240的P个输入,并且具有用于索引矢量或混移图案的已赋值元素的一个输入。根据输入指令222从混移存储器220中选择混移图案(例如,从地址矢量或用于输入矢量元素的重新设置的程序代码中提取),以便获得所请求的输出矢量250。可选的实现可能基于开关矩阵等。
在通过SFU重新设置了地址矢量元素之后,通过VMU得到数据字,然后,再次进行重新设置,以便遵照所请求地址的位置。再次,可以从地址元素的最低有效位中获得适合的混移图案。
按照这种方式,可以应用根据在先计算的混移图案的混移,从而以适当的顺序获得数据。典型地,几乎没有混移图案满足给定的应用(例如分散或收集存储器存取或计算机代码),假设可以无需修改地重新使用用于存储体的存取图案。然而,如果此种限制提高,则混移图案的数目将显著增加,或者混移图案不得不在旋转运算之后,等等。前者可能导致许多附加的存储器业务量,后者花费了附加的运算周期,因此花费了计算速度。
发明内容
因此,本发明的一个目的在于改进上述微处理器,以便使混移配置图案的数目最小化,而不会引起计算速度的降低。
根据本发明的第一方面,该目的通过在开始段落中描述的矢量处理器来实现,其中,所述功能矢量处理器还包括:预处理装置,配置用于在根据处理过的索引矢量产生所述至少一个输出矢量之前,接收参数并且依据所述参数对所述一个索引矢量的元素进行处理。
包括该预处理装置的、具有FU(例如SFU)的矢量处理器结合了根据规定的混移图案的数据(或地址)矢量中的混移元素的功能,以及另一对由所述参数(优选地为标量值)表示的数据矢量进行处理的功能。尽管在现有技术硬件实现的情况下,混移运算和另一数据处理(重新排序等)要求两个连续的步骤和两个开关网络,每一个开关网络均具有本身的控制或两个网络重新使用,根据本发明的混移和另一数据处理可以在单个步骤中进行,并且可以将所述控制结合到单个控制步骤中。即,因为实际上对索引矢量本身进行处理,并且索引矢量和参数(象在许多结构中那样)在输入数据矢量之前到达一个或多个时钟周期,所以可以提前执行索引矢量的处理。最后,可以在单个时钟周期中执行以已(预)处理过的索引矢量为基础的数据矢量的混移。根据本发明的矢量处理器可以用于加速一大类算法,具体地结合了分散-收集存储器存取,从而保持附加的存储器业务量处于较低级别。
索引矢量的(预)处理通常可以是针对索引矢量和参数或标量值的任意算术或逻辑运算。通过采用本发明,原理上,甚至也可以在单个步骤中执行比特-处理运算。在上下文中,比特-处理运算表示结合宽带媒体处理器(1996年8月,IEEE Micro,36-38页,“Micro Unity’s MediaProcessor Architecture”)描述的运算。这些通用化的切换指令按照不同方式改变了矢量元素的设置。从而,在单个指令中执行了许多一般要求的重新设置,并且甚至可以通过三个指令的序列获得任意的重新设置。组-混移、组-混合(swizzle)、组-提取、组-压缩、组-沉积、组-合并-沉积、组-去除、组-移位、以及组-旋转运算是此种单个指令运算的一些示例。根据特定指令(明确地规定了重新设置的“程度”)的紧邻字段对几个参数进行解码。例如,在组-混移指令的情况下,三个指令参数通常规定了对矢量进行混移的大小(以比特为单位)、矢量的大小和混移的程度。在其他指令中,可以减小参数的特定数目。
根据构成了第一方面的另一发展的本发明第二方面,所述功能矢量处理器单元的还包括用于存储多个参数的第二存储器装置,所述第二存储装置被配置用于根据处理指令,向所述预处理装置提供所述参数之一。这些第二存储器装置还称作偏移存储器。
当作为标量值的参数不是编译时间常数时,这可能是有用的。与矢量单元并行运算的标量处理单元可以计算这些“偏移”,并且将其存储在所示偏移存储器中。
根据构成第一或第二方面另一发展的本发明第三方面,所述预处理装置被配置用于接收具有符号的标量值作为参数,并且依据所述标量值和所述符号来处理所述索引矢量的元素。
这允许更多个所得到的索引矢量,而无需提高预处理功能的数目。
根据构成第一至第三方面的任一发展的本发明第四方面,所述预处理装置被配置用于对所述一个索引矢量的每一个元素和所述参数的执行模加法。
根据该方面对所述一个索引矢量进行处理包括:向每一个元素添加常数值模数P(优选地为矢量的长度),这导致了针对数据矢量的组合的混移和旋转运算。在这些情况下,在下文中参数或标量值也称作旋转偏移(L)。该实施方式考虑了,在典型的应用中使用的混移图案是相关的,并且通常是前一个混移图案的旋转。应注意:在许多应用中,还连续多次地重复使用旋转偏移。因此,具体地,通过将旋转功能集成到SFU中,可以将附加的存储器运输量保持处于较低级别。在旋转运算情况下,将这些第二存储器装置称作旋转偏移存储器。
在根据第四方面的模加法和根据第三方面的带符号标量值的组合中,例如,带负标号的L可以表示右旋转方向,带正符号的L可以表示左旋转方向,以及L=0表示输入矢量的0旋转(如果出现,则无需重新加载旋转偏移存储器)。输入矢量的旋转是混移的特定情况。因此,可以通过对混移图案[0,1,2,...,P]的预处理获得的混移图案[L,L+1,L+2,...,P-1,0,1,...,L-1]来指定旋转了多个+L位置(L<P)的左旋转,所述混移图案[0,1,2,...,P]将每一个输入矢量元素映射到相同位置上的处理过的输出矢量中。更精确地,预处理过的混移图案可以表示为[(0+L)模P,(1+L)模P,(2+L)模P,...、(P+L)模P]。由于根据本发明的SFU使索引矢量或混移图案的元素(预)递增了旋转偏移L的值(注意,该预递增必须进行模P运算),所以可以显著地减小混移存储装置中单独的索引矢量的数目(即减小因子P),而无需经历计算速度的降低。
根据构成了第一至第三方面的任一发展的本发明第五方面,所述预处理装置被配置用于执行所述一个索引矢量的每一个元素与所述参数的饱和相加(saturated addition)。
索引矢量元素与参数或标量值的该饱和相加导致了针对输入数据或地址矢量的组合混移或移位运算。左/右移位L个位置可以理解成是左/右旋转的特殊情况,其中将右侧或左侧(依据移位方向)的L个空闲位置用预设常数填充,例如值0。这是通过用所述饱和相加/相减来代替模相加/相减来实现的,其中源索引(source-index)值-1和P-1指的是预设常数。-1的值表示目标寄存器中相应元素中的元素不应该被重写。因此,索引值可以在-1至P-1的范围内变化。
根据构成了第一至第三方面的任一发展的本发明第六方面,所述预处理装置配置用于针对所述一个索引矢量的每一个元素与所述参数执行“异或”运算。
这种利用输入(数据)矢量的后续混移运算的针对索引矢量的运算可以用于实现将在下面解释的“蝶形混移”运算。蝶形混移广泛地用于象FFT、DCT和FHT(快速哈达马变换)的内核中。在这些内核中,蝶形运算的(步长)大小或增量通常随着阶段而变化。因为增量是直接由在每一个索引矢量元素上执行的“异或”运算的运算数的标量输入值来确定的,所以根据本发明的这一方面的实施方式是有利的。否则,每当蝶形的大小变化导致更多的数据业务量时,必须加载新的混移图案。
根据本发明的第七方面,以上目的还通过在开始段落中所述的方法来实现,其中,在产生所述最小一个输出矢量的步骤之前,执行接收参数和依据所述参数对所述一个索引矢量的元素进行处理的另外步骤。
主要应用领域是矢量处理,因为其例如应用于CVP(研究)中,参见在World Wireless Congress 2003,在OnDSP(PS-Dresden,formerlySystemonic),以及在EVP(PS’DSP Innovation Centre)中,C.H.(Kees)vanBerkel,Patrick P.E.Meuwissen,Nur Engin,and S.Balakrishnan,“CVP:AProgrammable Co Vector Proceessor for 3G Mobile Baseband Processing”。以上发明可以对多个信号处理内核进行显著地加速。这对于(靠近)存储器范围和具有不规则存取图案的应用尤为如此。示例包括:视频编解码、FFT、格式转换、交错存取等。
附图说明
根据结合附图的优选实施例的以下描述,本发明的以上和其他目的、特征和优势将变得显而易见,其中:
图1示出了技术发展水平的混移单元的功能(无需预旋转);
图2是示出了混移单元(SFU)的技术发展水平实施方式的方框图;
图3是示出了根据本发明的具有预旋转能力的FU实施方式的方框图;
图4是示出了根据图3的FU的控制的方框图;
图5是从Golay相关器的实施方式中提取的程序代码的一部分;
图6示出了根据图5代码的存储器存取的说明;
图7是通过针对快速傅立叶变换(FFT)的比特反转存取的程序代码来应用组合的混移和旋转功能的另一个示例;
图8示出了针对32点FFT存储器存取图案的比特反转排列(permutation);以及
图9A和图9B示出了具有在相同的32元素输入矢量上执行的不同大小的两个蝶形混移运算。
具体实施方式
具有如图3示意性所示的根据本发明实施例的预旋转能力的FU 300包括处理装置,并且更精确地,包括示出为并行设备的P个多路复用器312、314、...、316的阵列310,但是可以通过更少(下至一个)的设备和串行的处理步骤来实现。每一个多路复用器均具有与输入矢量320的P个元素相对应的P个输入。将另一输入提供给索引矢量或混移图案的已赋值元素,所述索引矢量或混移图案的已赋值元素是根据输入指令322从FU 300的存储装置(混移存储器320)中选择的。然而,在将索引矢量元素输入到多路复用器312、314、316之前,由预处理装置(更精确地,由包括多(P)个模加法器的组合器360)对所述索引矢量元素进行模相加。旋转的方向和幅度由标量输入332来确定。例如,从地址矢量或程序代码中提取输入指令322和标量输入332。在对索引矢量本身进行处理之后,将它输入用于将输入矢量340混移到多路复用器阵列310中,以便获得所请求的输出矢量350。
图4的方框图以更加一般的方式示出了可以通过单个控制步骤来启动由FU执行的输入数据或地址矢量440的组合混移和数据处理(旋转、平移、蝶形等运算)。预处理装置460接收混移图案430和标量输入432,并且向处理装置410输出单个指令矢量。该指令矢量包含预处理过的混移图案。
从Golay相关器的实施方式中提取根据图5的程序代码的部分。例如,将Golay相关器用于第三代移动技术中,使用基本同步代码(PSC)的分级相关序列来进行小区搜索。这只是示出了无数示例中的一个,这些示例示出了在软件应用中使用的混移图案与存储器存取相关,以及甚至经常是前一个混移图案的连续多次重新使用的旋转偏移的旋转。在该示例中,通过四次存储器存取(read1至read4)得到8个(复数)元素的矢量,从而因为旋转偏移等于2,所以在第四次递增之后,存取矢量(假设//已对齐)在ptr处被再次对齐。
根据图5代码的存储器存取如图6所示。其中,在左边示出存储器610、620、630、640中的两个连续矢量位置,以及在右边的611、621、631、641示出来自存储器的相应输出(来自SFU观点的输入矢量)。在存储器输出以下直接示出最终的混移-旋转数据矢量612、622、632、642。为了简化和更好地理解,输入矢量的处理是简单旋转(plain rotation)。简单旋转意味着在第一存储器存取(read1)中无需重新设置,这可以使用具有与他们的位置相等的索引矢量来实现,并且每一个下面的存储器存取要求旋转。具体地:无需混移的用于第一存储器存取的混移图案[7,6,5,4,3,2,1,0]导致第一输出矢量612具有与从存储器610获得的相同顺序的元素。然后,对相同的混移图案(使用中)与标量值6进行模8求和,从而提供混移图案[5,4,3,2,1,0,7,6]。该预处理过的混移图案使从存储器存取(read2)获得的输入数据矢量621向左旋转两个元素,以便获得输出数据矢量622。在下一个步骤中,对初始的混移图案[7,6,5,4,3,2,1,0]与标量值4进行模8求和,从而提供混移图案[3,2,1,0,7,6,5,4]。该混移图案用于将通过下一存储器存取(read3)获得的输入矢量631进行混移和(实际上简单的)旋转至具有向左旋转4个元素的输出矢量632。并且使用通过初始混移图案和标量值2的模求和得到的混移图案[1,0,7,6,5,4,3,2],对通过存储器存取(read4)获得的最终的输入矢量641向左旋转6个元素。这得到了输出矢量642。在该具体应用中,由于根据本发明矢量处理器,作为四个单独的混移图案的替代,将单个混移图案与适合的“旋转”值一起使用。
通常公知的是:在许多快速傅立叶变换(FFT)实施方式中,在执行FFT之前进行输入数据阵列的比特反转排列。同样公知的是:可以使用混移功能来实现比特反转排列。在这种比特反转中,利用诸如图7所示的permute_bitrev函数,将输入数据按照二进制标准(即,以比特反转顺序)进行重新设置。假设该示例中的输入由两个阵列的复数数据组成,一个包含实部,而另一个包含虚部。然而在示例矢量处理器中,将输入数据存储作为具有实部和虚部的复数的单个阵列,每一个复数存储在相邻的存储器位置中。因此,执行复数阵列的排列。图7中的函数bitrev()返回如图8的最左列所示的数字。
在图8中,示出了32点FFT的比特反转存取图案,以及如何根据利用了预旋转的混移运算的本发明对它进行改进。在支持如前所述的“收集”运算的体系结构中可以非常有效地实现比特反转。关于图8,假设矢量可以容纳最多8个复数数据元素,并且存储体(矢量索引)的数目是8,其中存储体中的存储器位置可以存储一个复数数据元素。所述存取图案由(矢量数目,存储体数目)元组组成。另外假设通过所示方式的DMA控制器,在存储器中设置数据项目。如果采用了数据的未用过的存储器组织,那么如果每一个存储体具有单个端口,则图8中详细示出的存取图案将导致存储体冲突。例如,如图8中的第一和第二虚线之间所示的第一组比特反转存取使用对存储体0(矢量索引=0)的四次存取,以及对存储体4(矢量索引=4)的四次存取。因此,将要求对存储器的串行存取,这导致了低效地使用可用的存储器带宽。
在这种情况下,组织数据的更智能的方式是通过一个存储体对连续的矢量元素的起始地址进行旋转。那么,这将包括对如下表1所示的数据进行回绕(wrapping around),以便将数据写入矢量中。
表1:偏移输入数据以避免32点FFT比特反转方案中的存储体冲突
 矢量元素数字
矢量0  0  1  2  3  4  5  6  7
矢量1  7  0  1  2  3  4  5  6
矢量2  6  7  0  1  2  3  4  5
矢量3  5  6  7  0  1  2  3  4
矢量4  4  5  6  7  0  1  2  3
矢量5  3  4  5  6  7  0  1  2
矢量6  2  3  4  5  6  7  0  1
矢量7  1  2  3  4  5  6  7  0
矢量8  0  1  2  3  4  5  6  7
利用如表1所示的数据组织,可以无存储体冲突地得到具有在特定存取中示出的矢量索引的全部数据项目。因此,针对每一次存取,可以使用存储器的完整带宽。然而,由存储器系统返回的数据将不得不进行重新设置,以获得按照如图8所示的数据元素的期望顺序的矢量。例如,使用参考图8详细描述的信源编码方案,针对比特反转存取的混移图案将是:针对第一组(矢量号=0)的[0,2,1,3,4,6,5,7]、针对下一组(矢量号=1)的[2,4,3,5,6,0,7,1]、以及后续的[1,3,2,4,5,7,6,0]、[3,5,4,6,7,1,0,2]。应注意,如果我们将阵列分成矢量块,则混移图案中的全部数字将递增比特反转块数。在示例中,具有可以从0开始接续编号的四个块。那么,块编号将是0,1,2,3。那么,比特反转后的块编号将是0,2,1,3。这是对于混移图案中的每一个元素的精确递增。该增量实现了混移过的数据的旋转。对于不同数目的点(2次幂)的FFT,可以实行类似的方案。
本发明的另一个实施例利用了如图9A和图9B所示的组合蝶形和混移运算。在这些示例中采用了32个元素的输入矢量911。实际上,应用了简单蝶形运算。换句话说,在该实例中最初从混移存储器提供的索引矢量(未示出)具有内容[31,30,...、1,0],该内容将输入矢量的每一个元素映射到输出矢量中的相同位置。也可以使用任意其他初始混移图案(或索引矢量)。然而,在对输入矢量进行混移之前,对索引矢量进行预处理。更精确地,根据图9A,相应的预处理装置执行二进制级别的索引矢量的每一个元素的“异或”运算。从而,在图9A的情况下的第二运算数是输入标量值一。因此,索引矢量的“异或”运算导致输入(数据)矢量成对地交换位置。因为每一个输入矢量元素只跳一个位置,所以在这种情况下在输入矢量上执行的蝶形运算的大小或增量是1。
根据图9B,运算数值等于4。因此,通过执行每一个索引矢量元素的比特图案的“异或”运算,以及随后将输入矢量混移8,形成了每一个均包含4个连续的矢量元素的输入矢量元素块,并且成对地交换位置。因为每一个输入矢量元素跳4个位置,所以在这种情况下在输入矢量上执行的蝶形运算的大小是4。
本发明的使用不局限于存储器存取、FFT、DCT或FHT应用。可以将其应用于任意种类的应用,并且对于(重新)使用可以由一个或几个随后的算法或逻辑运算,从在前应用的图案推断出的混移图案的应用来说是尤为有利的。因此,可以向根据本发明的、包括具有至少一个功能矢量处理器单元的微处理器设备配备几个不同的和/或相同的预处理装置,所述预处理装置配置用于接收相同的和/或不同的参数或标量值,并且用于随后和/或并行地处理索引矢量的元素。在几个参数的情况下,可以根据单个或不同的指令对其进行解码,和/或可以从相同的或不同的第二存储器装置中得到。

Claims (10)

1.一种微处理器设备,包括具有至少一个功能矢量处理器单元的矢量处理器结构,所述至少一个功能矢量处理器单元包括用于存储多个索引矢量的第一存储器装置和处理装置,所述功能矢量处理器单元被配置用于接收处理指令和要处理的至少一个输入矢量,所述第一存储器装置被配置用于根据所述处理指令,向所述处理装置提供所述多个索引矢量之一,以及所述处理装置被配置用于响应所述指令来产生至少一个输出矢量,所述输出矢量具有根据所提供的所述一个索引矢量重新设置的所述至少一个输入矢量的元素,从而所述功能矢量处理器单元还包括:预处理装置,配置用于在根据处理过的索引矢量产生所述至少一个输出矢量之前,接收参数并且依据所述参数对所述一个索引矢量的元素进行处理。
2.根据权利要求1所述的微处理器设备,
其中,所述功能矢量处理单元还包括第二存储器装置,用于存储多个参数,所述第二存储器装置被配置用于根据所述处理指令,向所述预处理装置提供所述多个参数之一。
3.根据权利要求1所述的微处理器设备,
其中,所述预处理装置被配置用于接收具有符号的标量值作为参数,并且依据所述标量值和所述符号来处理所述索引矢量的元素。
4.根据权利要求1所述的微处理器设备,
其中,所述预处理装置被配置用于执行对所述一个索引矢量的每一个元素与所述参数的模相加。
5.根据权利要求1所述的微处理器设备,
其中,所述预处理装置被配置用于执行对所述一个索引矢量的每一个元素与所述参数的饱和相加。
6.根据权利要求1所述的微处理器设备,
其中,所述预处理装置被配置用于针对所述一个索引矢量的每一个元素与所述参数执行“异或”运算。
7.一种用于处理矢量的方法,包括步骤:
接收处理指令和要处理的至少一个输入矢量,在第一存储器装置中存储多个索引矢量;
根据处理指令,选择所述多个索引矢量之一;
响应所述指令,产生至少一个输出矢量,所述输出矢量具有根据所提供的所述一个索引矢量重新设置的所述至少一个输入矢量的元素,
所述方法的特征在于,在产生所述至少一个输出矢量的步骤之前的其它步骤:
接收参数;以及
依据所述参数,对所述一个索引矢量的元素进行处理。
8.根据权利要求7所述的方法,
其中,对所述一个索引矢量的元素进行处理的所述步骤包括:索引矢量的每一个元素与所述参数的模相加。
9.根据权利要求7所述的方法,
其中,对所述一个索引矢量的元素进行处理的所述步骤包括:索引矢量的每一个元素与所述参数的饱和相加。
10.根据权利要求7所述的方法,
其中,对所述一个索引矢量的元素进行处理的所述步骤包括:针对所述索引矢量的每一个元素与所述参数的“异或”运算。
CN200580039646.XA 2004-09-21 2005-09-14 用于混移运算的微处理器设备和方法 Expired - Fee Related CN101061460B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP04104559.2 2004-09-21
EP04104559 2004-09-21
PCT/IB2005/053019 WO2006033056A2 (en) 2004-09-21 2005-09-14 Micro processor device and method for shuffle operations

Publications (2)

Publication Number Publication Date
CN101061460A true CN101061460A (zh) 2007-10-24
CN101061460B CN101061460B (zh) 2011-03-30

Family

ID=35385641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200580039646.XA Expired - Fee Related CN101061460B (zh) 2004-09-21 2005-09-14 用于混移运算的微处理器设备和方法

Country Status (4)

Country Link
EP (1) EP1794671A2 (zh)
JP (1) JP2008513903A (zh)
CN (1) CN101061460B (zh)
WO (1) WO2006033056A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101978350A (zh) * 2008-03-28 2011-02-16 英特尔公司 用于实现高效同步和并行归约操作的向量指令
CN102354300A (zh) * 2010-10-15 2012-02-15 威盛电子股份有限公司 存取方法以及共享存储器系统
CN103189837A (zh) * 2011-10-18 2013-07-03 松下电器产业株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008126041A1 (en) * 2007-04-16 2008-10-23 Nxp B.V. Method of storing data, method of loading data and signal processor
EP2674855B1 (en) 2012-06-14 2016-11-23 Telefonaktiebolaget LM Ericsson (publ) An element selection unit and a method therein
US9639503B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
US9830151B2 (en) * 2014-12-23 2017-11-28 Intel Corporation Method and apparatus for vector index load and store
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal
US10379855B2 (en) * 2016-09-30 2019-08-13 Intel Corporation Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
DE102017207876A1 (de) * 2017-05-10 2018-11-15 Robert Bosch Gmbh Parallelisierte Verarbeitung
US20200050452A1 (en) * 2018-08-11 2020-02-13 Intel Corporation Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order
CN114297138B (zh) * 2021-12-10 2023-12-26 龙芯中科技术股份有限公司 向量混洗方法、处理器及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1304086B (zh) * 1999-12-13 2010-06-16 凌阳科技股份有限公司 可提升资料存取效率的微控制器结构
AU2001249122A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Processing architecture having field swapping capability
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7162607B2 (en) * 2001-08-31 2007-01-09 Intel Corporation Apparatus and method for a data storage device with a plurality of randomly located data
CN1246770C (zh) * 2003-02-13 2006-03-22 上海交通大学 具有取模地址运算的数字信号处理器

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513905B2 (en) 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
CN103970506B (zh) * 2008-03-28 2017-07-14 英特尔公司 用于实现高效同步和并行归约操作的向量指令
CN101978350A (zh) * 2008-03-28 2011-02-16 英特尔公司 用于实现高效同步和并行归约操作的向量指令
CN101978350B (zh) * 2008-03-28 2014-06-11 英特尔公司 用于实现高效同步和并行归约操作的向量指令
US9678750B2 (en) 2008-03-28 2017-06-13 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
CN102354300A (zh) * 2010-10-15 2012-02-15 威盛电子股份有限公司 存取方法以及共享存储器系统
CN102354300B (zh) * 2010-10-15 2015-01-07 威盛电子股份有限公司 存取方法以及共享存储器系统
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
CN103189837B (zh) * 2011-10-18 2016-12-28 松下知识产权经营株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
US9292286B2 (en) 2011-10-18 2016-03-22 Panasonic Intellectual Property Management Co., Ltd. Shuffle pattern generating circuit, processor, shuffle pattern generating method, and instruction sequence
CN103189837A (zh) * 2011-10-18 2013-07-03 松下电器产业株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality

Also Published As

Publication number Publication date
CN101061460B (zh) 2011-03-30
WO2006033056A2 (en) 2006-03-30
EP1794671A2 (en) 2007-06-13
WO2006033056A3 (en) 2006-10-26
JP2008513903A (ja) 2008-05-01

Similar Documents

Publication Publication Date Title
CN101061460B (zh) 用于混移运算的微处理器设备和方法
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
EP3893123B1 (en) Hardware accelerated machine learning
US7640284B1 (en) Bit reversal methods for a parallel processor
US7836116B1 (en) Fast fourier transforms and related transforms using cooperative thread arrays
CN100480997C (zh) 选择可实质同时处理的多重线程的系统与方法
CN109964203B (zh) 数据并行计算设备的排序
CN1914592B (zh) 执行具有单元大小控制的紧缩数据操作的方法和设备
US20140149480A1 (en) System, method, and computer program product for transposing a matrix
CN108765247A (zh) 图像处理方法、装置、存储介质及设备
CN111783933A (zh) 一种对深度卷积神经网络计算加速的、结合主存储器的数据载入装置的硬件电路设计及方法
CN112446471B (zh) 基于异构众核处理器的卷积加速方法
CN116521611A (zh) 一种深度学习处理器的泛化架构设计方法
US20100211749A1 (en) Method of storing data, method of loading data and signal processor
US6694407B1 (en) Cache memory with data transfer control and method of operating same
CN112988621A (zh) 一种张量数据的数据载入装置及方法
Song et al. Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores
Zaynidinov et al. Comparative analysis of the architecture of dual-core blackfin digital signal processors
CN111522776B (zh) 一种计算架构
CN112434255A (zh) 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
Ibrahim et al. Collaborative Acceleration for FFT on Commercial Processing-In-Memory Architectures
Bilardi et al. Network-oblivious algorithms
CN110766150A (zh) 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置
Fantozzi et al. Translating submachine locality into locality of reference

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20080404

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

Effective date of registration: 20080404

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110330

Termination date: 20110914