[发明专利]SIMD相乘和水平归约运算在审
申请号: | 201680040946.8 | 申请日: | 2016-07-11 |
公开(公告)号: | CN107835992A | 公开(公告)日: | 2018-03-23 |
发明(设计)人: | 艾瑞克·韦恩·马胡林 | 申请(专利权)人: | 高通股份有限公司 |
主分类号: | G06F17/16 | 分类号: | G06F17/16;G06F9/00 |
代理公司: | 北京律盟知识产权代理有限责任公司11287 | 代理人: | 杨林勳 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | simd 相乘 水平 运算 | ||
技术领域
本发明的各方面涉及减小某些相乘和水平归约运算的计算复杂性且增大其效率。更具体地说,示范性方面涉及相乘和水平归约运算的单指令多数据(SIMD)实施方案。
背景技术
单指令多数据(SIMD)指令可用于处理采用数据并行性的系统。举例来说,当需要对数据向量的两个或更多个数据元素执行同一或共同任务时,存在数据并行性。可通过使用单个SIMD指令而非使用多个指令来对两个更多个数据元素并行地执行共同任务,所述单个SIMD指令限定待对对应的多个SIMD通道中的多个数据元素执行的相同指令。
SIMD指令可用于实施数字信号处理的某些功能,例如卷积、数字滤波器、离散傅里叶变换(DFT)、离散余弦变换(DCT)等,其中通过对应的系数加权或乘以一系列信号样本,且对结果进行累加或求和。因此,SIMD指令可用于执行乘法和水平归约运算来实施这些功能。举例来说,一个向量的数据元素可乘以另一向量中提供的对应的系数值,从而产生乘积项的所得向量,其可在后续运算中加在一起或归约以提供所要相乘和水平归约结果。
举例来说,设想用于对三个项执行相乘和水平归约运算的SIMD运算。第一向量运算数可具有三个数据元素X、Y和Z,且第二向量运算数可具有对应的三个系数c1、c2和c3。可通过以下方式实施SIMD运算:使用三个乘法器来并行计算第一向量中的数据元素与第二向量中对应的系数的乘积,即,X*c1、Y*c2和Z*c3,且接着在累加器(例如,其包含压缩器和加法器)中将所述乘积加在一起或将其“归约”以获得结果X*c1+Y*c2+Z*c3。
在数字信号处理中遇到的一些情况下,系数中的一个(例如,c3)可能是“1”,基于所涉及的计算的性质,所述系数中的一个也可能是“1”的隐式值。举例来说,为“1”的系数可以是可在应用于信号样本的系数的滑动窗口中发生的归一化值。
经配置以支持SIMD运算的处理器可具有支持某一数目的并行运算的功能性。所支持的所述数目的并行运算可以是常规实施方案中的二的幂。举例来说,在用于实施上文SIMD运算的常规处理器中可能有用以并行执行两个乘法的两个乘法器可供使用,且所述乘法器具有水平归约两个元素(例如,四个乘法的乘积或输出)的能力。
参考图1A,展示常规SIMD逻辑100支持两个并行乘法,随后是两个乘积项的水平归约。因此,可使得数据元素X和Y以及对应的系数c1和c2可供第一SIMD指令102使用,其中逻辑100并行执行X*c1和Y*c2的计算,且将乘积项X*c1和Y*c2相加或归约以获得第一结果(未具体说明)。接着,第二SIMD指令104接收具有对应的系数1的其余数据元素Z。然而,为了利用可供使用的逻辑,计算虚拟项。如所展示,计算乘积项Z*1和虚拟项Q*0,其中实际上,Q*0仅仅是任何项与0的乘法运算,其得到0。还计算Z*1+Q*0的和以完成相乘和水平归约运算。为了充分利用可供使用的逻辑100,常规实施方案涉及Z与1的乘法以及Q与0的乘法连同后续加法/归约过程,这产生增大的功率消耗。
可实施上文SIMD运算的另一常规处理器可具有四个乘法器以水平地归约四个元素(例如,四个乘法的乘积)的能力。举例来说,参考图1B,展示可存在于此类常规处理器中的SIMD逻辑101。SIMD逻辑101可支持四个并行的乘法,随后是四个乘积项的水平归约。在这种情况下,可使用SIMD指令106,其接收三个数据元素X、Y和Z以及对应的系数c1、c2和c3。然而,同样要执行Q*0的虚拟计算以利用第四乘法器,且实际上执行水平归约以计算X*c1+Y*c2+Z*1+Q*0。
因此,在由SIMD逻辑100和101表示的利用可供使用的SIMD逻辑和归约通道的这两个常规实施方案中,因使用乘法器计算项Z*1和Q*0以及使用累加器、压缩硬件、加法器等计算所述项的后续归约而引发不必要的功率消耗。
因此,需要避免SIMD相乘和水平归约运算中的低效率和功率/计算资源损耗。
发明内容
举例来说,示范性方面涉及数字滤波器中实施的相乘和水平归约运算。接收单指令多数据(SIMD)指令,其包括:第一向量,其包括M+C个被乘数元素,其中M和C是正整数;以及第二向量,其包括M+C个对应的乘数元素,其中所述C个乘数元素具有值1。使用处理器中的M个乘法器执行M个被乘数元素与对应的M个乘数元素的M个乘法以产生M个乘积,所述M个乘数元素并不包含其值为1的C个乘数元素。其对应的C个乘数元素具有值1的所述C个被乘数元素被加到所述M个乘积或与所述M个乘积竖直累加。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于高通股份有限公司,未经高通股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680040946.8/2.html,转载请声明来源钻瓜专利网。