微处理器中的紧缩加减运算制造技术

技术编号:2914113 阅读:187 留言:0更新日期:2012-04-11 18:40
微处理器对从寄存器堆(19)的指定源寄存器(REGA、REGB)的指定顶部(_T)或底部(_B)半字位置获得的半字运算数并行执行紧缩半字加法和减法运算,且此类运算的和与差结果被紧缩到指定目的地寄存器(DST_REG)的各自顶部和底部半字位置中。所述微处理器包含具有加法器电路的算术逻辑单元(ALU 11),所述加法器电路可选择性地分为独立的半字加法器(13、15),所述半字加法器可独立选择(ADDSUB_CTL_T、ADDSUB_CTL_B)以对所述选定半字运算数(OP_B_T、OP_A_T、OP_B_B、OP_AB)执行加法运算或减法运算。所述ALU的所述半字加法器经由在所述顶部和底部半字位置中间进行选择的一组多路复用器(21-26)从源寄存器存取所述运算数。还可提供具有对所述和与差结果的等分及饱和修改的运算。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术大体涉及计算机处理硬件中的指令处理和算术运算的执行,且涉及用于改进此类运算的执行效率的对此类处理硬件的特定修改。本专利技术更明确地说涉及尤其用于快速傅里叶变换和相关变换的实施中的蝶式运算。
技术介绍
如今多种应用(从音频和视频信号处理及多媒体压缩到汽车碰撞检测)在其算法中使用信号的离散变换。此类离散变换包含(例如)离散余弦变换和离散傅里叶变换,其通常需要以超过每秒几十兆位的数据速率实时执行,这不仅需要高时钟速率和快速处理器,而且还需要此类处理器进行的变换计算和数据处理的高效。离散变换运算通常可通过使用快速傅里叶变换(FFT)来有效地计算,所述FFT具有两个基本“特点”,即时间抽取(库利-图基(Cooley-Tukey))和频率抽取(桑德-图基(Sande-Tukey))。FFT的两个特点均包含所谓的“蝶式”计算作为基本计算元素。蝶式计算还用于其它变换(例如,沃尔什-哈德玛(Walsh-Hadamard))中和维特比(Viterbi)编码/解码算法中。因此,处理硬件中蝶式计算的有效执行在许多应用中具有重要价值。基本蝶式计算涉及复式运算数的实和虚分量的加法和减法两者。举例来说,在时间抽取FFT变体中,用于对复值a、b、ci、A和B执行一个蝶式运算的代表性伪码给定如下,其中Re()和Im()表示复值的各自实和虚分量:Re(tmp):=Re(b)Re(ci)-Im(b)Im(ci);Im(tmp):=Re(b)Im(ci)+Im(b)Re(ci);Re(A):=Re(a)+Re(tmp);Re(B):=Re(a)-Re(tmp);Im(A):=Im(a)+Im(tmp);Im(B):=Im(a)-Im(tmp);根据此计算,我们可以看到,对同一输入运算数发生加法和减法运算两次。如果计算中使用的定点运算数的精确度是微处理器的字长度的一半,且如果微处理器的ALU支持用于对紧缩半字操作的单指令多数据(SIMD)指令,那么微处理器可能-->用于在一个运算中执行加法和减法两者。举例来说,由ARM有限公司(在英国设立)提供的ARM11处理器具有可对紧缩数据同时执行半字加法和减法的指令。因此,指令SADDSUBX Rd、Rn、Rm和UADDSUBX Rd、Rn、Rm实行以下的各自有符号和无符号型式:Rd[31:16]:=Rn[31:16]+Rm[15:0]以及Rd[15:0]:=Rn[15:0]-Rm[31:16]。同样,指令SSUBADDX Rd、Rn、Rm和USUBADDX Rd、Rn、Rm实行以下的各自有符号和无符号型式:Rd[31:16]:=Rn[31:16]-Rm[15:0]以及Rd[15:0]:=Rn[15:0]+Rm[31:16]。然而,这些指令无法执行蝶式运算的加减运算,除非两个半字运算数被紧缩在同一寄存器中,这需要额外处理。第2004/0078404号美国专利申请公开案(Macy等人)描述一种处理器,其(尤其)可对第一运算数的四个紧缩数据元素(x3、x2、x1、x0)和第二运算数的四个紧缩数据元素(y3、y2、y1、y0)执行水平或内部加减运算,以产生包括四个紧缩数据元素(y2+y3、y1-y0、x2+x3、x1-x0)或者(y2-y3、y1+y0、x2-x3、x1+x0)的结果,以便使得可有效计算8点时间抽取沃尔什-哈德玛变换。还建议快速傅里叶变换的计算与SIMD乘法运算组合。第6,754,687号美国专利(Kurak、Jr等人)描述一种用于对二维数据矩阵有效计算反向离散余弦变换的处理系统。所述计算包含执行蝶式(BFLYS)指令,所述指令由对四个半字数据(四个紧缩16位运算数)或双字数据(两个32位运算数)的独立加法和减法运算组成。
技术实现思路
本专利技术提供一种执行紧缩半字加法和减法运算的方法,其中我们可指定使用哪些半字作为运算数,即使当其存储在不同源寄存器中时也如此。半字运算数可位于寄存器的顶部或底部部分或其它可寻址存储位置中。各自的和与差结果紧缩到指定目的地寄存器的各自顶部和底部部分中。加法和减法两者并行实行。还可提供具有对所述和与差结果-->的等分和有符号或无符号饱和修改的半字加法与减法运算。本专利技术还提供对微处理器的修改以实施此紧缩半字加法和减法运算。处理器的ALU可分为双半字加法器,且运算数可经由根据用于此运算的经解码指令而产生的多路复用器控制从指定源寄存器存取。半字加法器可经设定以在一个加法器中执行加法且在另一加法器中执行减法,来自这些加法器的和与差输出供应到目的地寄存器的各自顶部和底部部分。附图说明图1是根据本专利技术用于执行紧缩加减运算的微处理器硬件的相关部分的示范性实施的示意框图。图2是更详细展示用于在将结果存储在目的地寄存器中之前执行对紧缩加减结果的等分或饱和修改的图1的实施中的结果修改逻辑的示意框图。具体实施方式本专利技术提供一种用于加速通常用于执行快速傅里叶变换或其它类似变换的蝶式计算的若干部分的构件和方法。明确地说,对相同半字运算数的紧缩半字加法和减法运算可在微处理器中实施。术语“微处理器”意指包含加载存储(RISC)和存储器定向(CISC)两种结构的多种数据处理硬件,且包含通用处理器和专用处理器(例如,数字信号处理器)两者以及嵌入式处理器。可通过处理器的指令集内的相应指令向微处理器指示紧缩加减运算。示范性微处理器实施可包含32位字长度,其中计算中使用的定点数具有16位(半字)精确度和(1.15)格式,这意味着每一半字的最高有效位表示符号,而剩余15个次有效位是分数位。半字可紧缩到寄存器或存储器字的顶部和底部部分中,其中位[31:16]中的顶部部分是与位[15:0]中的底部部分分离的值。虽然在一些实例中将复值的实部和虚部放置到同一寄存器或存储器字的相应顶部和底部部分中可能看上去是便利的,但这并非绝对必需,从效率的观点来看甚至不合乎需要,因为为了保持实部和虚部合起来为一值在运算之后必需对数据改组。通常最好就是知道其在其可能被放置的任何字中的位置。本专利技术提供的灵活性允许执行紧缩加减运算,即使当半字运算数位于不同寄存器中时也如此。参看图1,可见微处理器的相关部分,其已经特别修改以有效地实施本专利技术。算术逻辑单元(ALU)11具有耦合在两个半字加法器13与15之间的多路复用器17。多路复用器17接收控制信号PROPAGATE_CARRY。当此控制信号等于1时,将来自底部半-->字加法器15的CARRY_OUT作为CARRY_IN供应到顶部半字加法器13,从而使组件13、15和17成为正常的全字加法器。然而,每当控制信号PROPAGATE_CARRY设定为零时,来自底部半字加法器15的CARRY_OUT未传播到顶部半字加法器13中。而是,顶部半字加法器13从多路复用器17接收零作为其CARRY_IN值。有效地,将PROPAGATE_CARRY设定为零使字加法器成为两个独立半字加法器13和15。此零控制设定是根据本专利技术执行紧缩半字加减运算时使用的设定。顶部和底部半字加法器13和15还接收各自控制信号ADDSUB_CTL_T和ADDSUB_CTL_B,其确定是否执行加法或减法,即是否将对相应的半字运算数输入OP_B_T或OP_B_B求补数。当任一或两个控制信号设定为零时,相关输入OP_本文档来自技高网
...

【技术保护点】
一种处理器电路,其适于对一对选定运算数执行紧缩半字加法和减法运算,所述处理器电路包括: 算术逻辑单元(ALU),其具有加法器电路,所述加法器电路可选择性地分为两个半字加法器,每一半字加法器可独立选择以对在所述半字加法器的各自运算数输入 处接收的运算数执行加法或减法运算,所述ALU可存取具有拥有顶部和底部半字存储位置的一组可选择寄存器的寄存器堆,所述ALU的所述半字加法器的输出可选择性地耦合到所述寄存器堆中的指令指定的目的地寄存器的各自顶部和底部半字存储位置;以及 一 组多路复用器,其耦合在所述寄存器堆与所述ALU的所述半字加法器的所述运算数输入之间,所述组多路复用器经配置以响应于指令确定的控制信号从所述寄存器堆的所指定第一源寄存器的所指定顶部或底部半字选择第一运算数输入,且从所述寄存器堆的所指定第二源寄存器的所指定顶部或底部半字选择第二运算数输入,所述所指定第二源寄存器未必与所述所指定第一源寄存器相同。

【技术特征摘要】
【国外来华专利技术】US 2006-2-13 11/352,7111.一种处理器电路,其适于对一对选定运算数执行紧缩半字加法和减法运算,所述处理器电路包括:算术逻辑单元(ALU),其具有加法器电路,所述加法器电路可选择性地分为两个半字加法器,每一半字加法器可独立选择以对在所述半字加法器的各自运算数输入处接收的运算数执行加法或减法运算,所述ALU可存取具有拥有顶部和底部半字存储位置的一组可选择寄存器的寄存器堆,所述ALU的所述半字加法器的输出可选择性地耦合到所述寄存器堆中的指令指定的目的地寄存器的各自顶部和底部半字存储位置;以及一组多路复用器,其耦合在所述寄存器堆与所述ALU的所述半字加法器的所述运算数输入之间,所述组多路复用器经配置以响应于指令确定的控制信号从所述寄存器堆的所指定第一源寄存器的所指定顶部或底部半字选择第一运算数输入,且从所述寄存器堆的所指定第二源寄存器的所指定顶部或底部半字选择第二运算数输入,所述所指定第二源寄存器未必与所述所指定第一源寄存器相同。2.根据权利要求1所述的处理器电路,其中所述组多路复用器包含第一组多路复用器,其响应于顶部/底部控制信号以用于在来自所述指定第一和第二源寄存器的顶部和底部半字运算数之间进行选择。3.根据权利要求2所述的处理器电路,其中所述组多路复用器进一步包括第二组多路复用器,其响应于半字/全字控制信号以用于在来自所述指定第一和第二源寄存器的半字与全字运算数之间进行选择。4.根据权利要求1所述的处理器电路,其中所述ALU包含耦合在底部半字加法器的进位输出与顶部半字加法器的进位输入之间的多路复用器,所述多路复用器响应...

【专利技术属性】
技术研发人员:龙尼彼得森埃里克K雷诺厄于温斯特伦
申请(专利权)人:爱特梅尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利