当前位置: 首页 > 专利查询>ARM有限公司专利>正文

用于执行乘法累加运算的设备和方法技术

技术编号:5219591 阅读:406 留言:0更新日期:2012-04-11 18:40
提供用于执行乘法累加运算的数据处理设备及方法。该设备包括:数据处理电路,响应控制信号对至少一个输入数据元素执行数据处理操作。指令解码器电路响应将第一、第二输入数据元素和谓词值指定为输入操作数的谓词乘法累加指令,生成控制信号来控制数据处理电路通过下述来执行乘法累加运算:第一输入数据元素与第二输入数据元素相乘,以产生乘法数据元素;如果谓词值具有第一值,则通过将乘法数据元素与初始累加数据元素相加产生结果累加数据元素;如果谓词值具有第二值,则通过从初始累加数据元素减去乘法数据元素产生结果累加数据元素。

【技术实现步骤摘要】

本专利技术涉及一种用于执行乘法累加(MAC)运算的设备和方法。
技术介绍
乘法累加(MAC)运算在数据处理系统中是频繁使用的。MAC运算可以采用的形式 是A+B*C或A-B*C。乘法运算B*C典型地对于B和C的不同的值执行多次,其中,每次乘法 结果然后与运行累加值A相加(或从运行累加值A中减去)。专用MAC电路通常提供于数据处理系统内,用于对背对背(back-to-back)MAC运 算的性能进行优化。这种MAC电路可以提供于标量处理电路内,在此,乘法累加指令序列一 个接一个地执行,以执行所需的乘法累加运算迭代。然而,用于对这种运算的性能进行加速 的一种已知方法是采用SIMD (单指令多数据)方法。根据SIMD方法,多个数据元素并排地 放入寄存器内,然后在多个并行处理通道内对这些数据元素并行地执行所需的运算。考虑 到生成单个乘法累加结果所需的运算,据上述讨论应理解,需要多个分离的乘法运算,并且 通过使用SIMD数据处理电路,多个这种所需的乘法可以被并行执行,以增加乘法累加运算 的吞吐量。至于标量电路而言,在SIMD数据处理电路内,可以提供专用MAC电路,用于对乘 法累加运算的性能进行优化。频繁使用MAC运算的一类数字信号处理运算是滤波运算。当使用专用MAC单元时, 有可能相对较快地执行复数滤波运算。使用这种滤波运算的一个特定示例是当对接收到的 无线电信号与导频信号进行比较时,接收机将导频信号用作已知的基准信号。导频信号将 典型地在已知正幅度与已知负幅度之间交替,以限定已知的导频波形。当执行这种滤波运 算时,必须贯穿整个滤波运算执行乘法加法运算和乘法减法运算,其中,在任何特定时间点 的导频信号的形式确定是需要乘法加法运算还是需要乘法减法运算。当在标量MAC电路内搜索以执行这种运算时,将可能构建当被运行时执行所需运 算的乘法加法指令和乘法减法指令的序列。然而,关于所需的确切的乘法加法运算和乘法 减法运算序列的判断需要在编译时间而非运行时间进行,因此该序列可以仅对于特定导频 信号而被构建。这种方法因此缺少灵活性,并且从代码密度的观点来看并不是所期望的。更典型地,人们可能期望在SIMD MAC电路内执行这种滤波运算。在这些情况下, 可以发出乘法加法指令,以使得多个乘法加法运算在多通道处理内被并行执行,并且相似 地,可以发出乘法减法指令,以使得多个乘法减法运算在多个并行处理通道内被并行执行。 为了执行前述滤波运算,将典型地需要使用一种指令形式(例如乘法加法指令),然后按预 定时间间隔将导频信号的幅度编码为数据元素的矢量,即直接标识正幅度值和负幅度值二 者。这需要存储器中的很多空间来对导频信息进行编码,并且每次导频信号改变时,这些大 的信息矢量就将需要被重新计算。甚者,即使导频信号照旧,但导频信号的幅度因接收特性 的变化而改变,存储器内的矢量也将需要被重新编程。或者如果判断出试用并且使用乘法加法指令和乘法减法指令二者,则这将典型地 带来某些数据重排问题,并且还有代码密度问题。因此,虽然期望使用专用MAC电路来执行滤波运算,但难以使用已知的MAC技术来 高效地执行特定类型的滤波运算。当乘法数据元素(例如先前所指的元素C)之一大小恒定但仅符号改变(如实际 上对于先前所描述的导频信号的情况那样)时可以采用的一种替换方法将是在加法器单 元内执行加法和减法序列,随后将结果单次乘以恒定幅度值。在这些加法器单元内,已知的 是提供谓词加法/减法指令,这将根据指令中所提供的谓词值要么执行两个数的加法,要 么执行两个数的减法。虽然这种指令将为执行加法运算和减法运算序列提供灵活性,但对 于关于加法运算和减法运算序列的结果的背对背累加,加法器电路典型地在硬件上并未得 以优化,因此将不提供专用MAC电路将提供的性能。甚者,加法器单元内的运行累加值典型 地保存于与输入操作数相同大小的寄存器中,相应地,将绞尽脑汁地确保运行累加值不上 溢或者下溢,典型地,这样贯穿累加处理需要使用各种估计和移位类型运算,进一步影响了 性能。与之对照,在MAC单元中,累加值典型地保存于比输入操作数更大的寄存器中,由此 允许保留更高精度的累加值,而无上溢或下溢之风险。甚者,当使用加法器电路然后随之进 行所需的加法时,将需要执行分离乘法指令来执行所需的乘法,以完成滤波运算。相应地,通常人们认为不实际的是在分离加法器电路内进行搜索以执行这些滤 波运算,随后在分离乘法器电路内进行乘法。相应地,将期望提供一种技术,在需要乘法加法运算和乘法减法运算的可变序列 的情况下(例如先前描述的滤波运算的情况下),其使得乘法累加运算得以高效地在乘法 累加电路内执行。
技术实现思路
根据第一方面,本专利技术提供一种数据处理设备,包括数据处理电路,其响应于控 制信号而对至少一个输入数据元素执行数据处理操作;指令解码器电路,其耦合到所述数 据处理电路,并且响应于程序指令而生成所述控制信号;所述指令解码器电路响应于将第 一输入数据元素、第二输入数据元素和谓词值指定为输入操作数的谓词乘法累加指令,以 生成控制信号来控制所述数据处理电路通过下述步骤来执行乘法累加运算将所述第一输 入数据元素与所述第二输入数据元素相乘,以产生乘法数据元素;如果谓词值具有第一值, 则通过将乘法数据元素与初始累加数据元素相加来产生结果累加数据元素;以及如果谓词 值具有第二值,则通过从初始累加数据元素减去乘法数据元素来产生结果累加数据元素。根据本专利技术,提供一种谓词乘法累加指令,其当由指令解码器电路进行解码时,使 得所述数据处理电路根据指令所指定的谓词值的值执行乘法加法运算或乘法减法运算。通 过使用这些谓词乘法累加指令中的一个或多个,于是有可能以高效方式在专用MAC电路内 提供复数滤波运算。具体地说,关于是需要乘法加法运算还是需要乘法减法运算的判断可 以在运行时间而非编译时间进行,带来的是明显的代码密度改善。进而,使用谓词值可以减 少保存待相乘的输入数据元素的细节所需的存储器的量,尤其是在经过多个乘法累加运算 时数据元素之一以正号形式或负号形式被重新使用的情况下。并非必须分别为每一乘法累 加运算存储该数据元素的值,而是可以将数量(magnitude)存储在单个标量寄存器中,并 且可以为每一乘法累加运算提供分离的谓词值,以标识是需要加法还是减法,结果是更高 效地使用了存储器资源。本专利技术的方法使得能够在需要乘法加法运算和乘法减法运算的组合的情况下当 执行乘法累加运算序列时实现使用专用MAC单元的性能优势。当采用本专利技术的方法时,当 与已知的现有技术相比时,可以实现能耗方面的明显减少。在一个实施例中,所述数据处理电路还包括至少一个寄存器组(bank),用于存 储所述输入操作数,其中,所述谓词乘法累加指令标识包含所述谓词值的所述至少一个寄 存器组中的寄存器。可以提供专用谓词寄存器组,或者另外可以将所述谓词值存储在通用 寄存器组的寄存器内。虽然可以在标量处理电路内执行本专利技术一个实施例的谓词乘法累加指令,但在一 个实施例中,数据处理电路是SIMD数据处理电路,其提供N个并行处理通道,其中,N是大 于1的整数,所述SIMD数据处理电路响应于控制信号而在所述N个并行处理通道中的每一 个中并行执行数据处理操作。在这些实施例中,所述谓词乘法累本文档来自技高网
...

【技术保护点】
一种数据处理设备,包括:数据处理电路,其响应于控制信号而对至少一个输入数据元素执行数据处理操作;指令解码器电路,其耦合到所述数据处理电路,并且响应于程序指令而生成所述控制信号;所述指令解码器电路响应于将第一输入数据元素、第二输入数据元素和谓词值指定为输入操作数的谓词乘法累加指令,以生成控制信号来控制所述数据处理电路通过下述步骤来执行乘法累加运算:将所述第一输入数据元素与所述第二输入数据元素相乘,以产生乘法数据元素;如果谓词值具有第一值,则通过将乘法数据元素与初始累加数据元素相加来产生结果累加数据元素;以及如果谓词值具有第二值,则通过从初始累加数据元素减去乘法数据元素来产生结果累加数据元素。

【技术特征摘要】
GB 2009-10-30 0919120.61.一种数据处理设备,包括数据处理电路,其响应于控制信号而对至少一个输入数据元素执行数据处理操作; 指令解码器电路,其耦合到所述数据处理电路,并且响应于程序指令而生成所述控制信号;所述指令解码器电路响应于将第一输入数据元素、第二输入数据元素和谓词值指定为 输入操作数的谓词乘法累加指令,以生成控制信号来控制所述数据处理电路通过下述步骤 来执行乘法累加运算将所述第一输入数据元素与所述第二输入数据元素相乘,以产生乘法数据元素; 如果谓词值具有第一值,则通过将乘法数据元素与初始累加数据元素相加来产生结果 累加数据元素;以及如果谓词值具有第二值,则通过从初始累加数据元素减去乘法数据元素来产生结果累 加数据元素。2.如权利要求1中所述的数据处理设备,还包括至少一个寄存器组,用于存储所述输入操作数,其中,所述谓词乘法累加指令标识包含 所述谓词值的所述至少一个寄存器组中的寄存器。3.如权利要求1中所述的数据处理设备,其中所述数据处理电路是SIMD数据处理电路,其提供N个并行处理通道,其中,N是大于1 的整数,所述SIMD数据处理电路响应于所述控制信号而在所述N个并行处理通道中的每一 个中并行执行数据处理操作;所述谓词乘法累加指令将形成第一矢量的多个所述第一输入数据元素指定为输入操 作数;所述指令解码器电路响应于所述谓词乘法累加指令而生成控制信号,以控制所述数据 处理电路在所述N个并行处理通道中的每一个中并行执行所述乘法累加运算,使得来自被 选择用于所述乘法累加运算的输入的所述第一矢量的第一输入数据元素依赖于其中该乘 法累加运算被执行的并行处理通道。4.如权利要求3中所述的数据处理设备,其中所述谓词乘法累加指令将形成第二矢量的多个所述第二输入数据元素指定为输入操 作数;以及来自被选择用于所述乘法累加运算的输入的所述第二矢量的所述第二输入数据元素 依赖于其中该乘法累加运算被执行的并行处理通道。5.如权利要求3中所述的数据处理设备,其中所述谓词乘法累加指令将标量第二输入数据元素指定为输入操作数,所述标量第二输 入数据元素于是在所述数据处理电路内被复制,以形成第二矢量;据此,同一第二输入数据元素用在其中所述乘法累加运算被执行的每一并行处理通道中。6.如权利要求3中所述的数据处理设备,其中所述谓词乘法累加指令将形成第三矢量的多个所述谓词值指定为输入操作数;以及 来自被选择用于所述乘法累加运算的输入的所述第三矢量的所述谓词值依赖于其中 该乘法累加运算被执行的并行处理通道。7.如权利要求6中所述的数据处理设备,其中,所述第三矢量指定N个谓词值,使得在 所述N个并行处理通道中的每一个内,所述乘法累加运算独立地被配置为执行乘法加法运 算或乘法减法运算。8.如权利要求1中所述的数据处理设备,其中,所述谓词乘法累加指令进一步将所述 初始累加数据元素指定为输入操作数。9.如权利要求1中所述的数据处理设备,其中,所述初始累加数据元素是预先确定的值。10.如权利要求9中所述的数据处理设备,其中,所述预先确定的值是零。11.如权利要求3中所述的数据处理设备,其中所述谓词乘法累加指令将形成第四矢量的多个所述初始累加数据元素指定为输入操 作数;以及来自被选择用于所述乘法累加运算的输入的所述第四矢量的所述初始累加数据元素 依赖于其中该乘法累加运算被执行的并行处理通道。12.如权利要求11中所述的数据处理设备,其中所述数据处理电路是SIMD数据处理电路,其提供N个并行处理通道,其中,N是大于1 的整数,所述SIMD数据处理电路响应于所述控制信号而在所述N个并行处理通道中的每一 个中并行执行数据处理操作;所述谓词乘法累加指令将形成第一矢量的多个所述第一输入数据元素指定为输入操 作数;所述指令解码器电路响应于所述谓词乘法累加指令而生成控制信号,以控制所述数据 处理电路在所述N个并行处理通道中的每一个中并行执行所述乘法累加运算,使得来自被 选择用于所述乘法累加运算的输入的所述第一矢量的第一输入数据元素依赖于其中该乘 法累加运算被执行的并行处理通道;并且其中所述谓词乘法累加指令将形成第二矢量的多个所述第二输入数据元素指定为输入操 作数;以及来自被选择用于所述乘法累加运算的输入的所述第二矢量的所述第二输入数据元素 依赖于其中该乘法累加运算被执行的并行处理通道,其中,所述第一矢量、第二矢量和第四...

【专利技术属性】
技术研发人员:DH赛姆斯M维尔德G拉里
申请(专利权)人:ARM有限公司
类型:发明
国别省市:GB[英国]

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

1