乘积累加运算

✍ dations ◷ 2025-11-28 09:42:02 #乘积累加运算

乘积累加运算(英语:Multiply Accumulate, MAC)是在数字信号处理器或一些微处理器中的特殊运算。实现此运算操作的硬件电路单元,被称为“乘数累加器”。这种运算的操作,是将乘法的乘积结果和累加器 A 的值相加,再存入累加器:

若没有使用 MAC 指令,上述的程序可能需要二个指令,但 MAC 指令可以使用一个指令完成。而许多运算(例如卷积运算、点积运算、矩阵运算、数字滤波器运算、乃至多项式的求值运算)都可以分解为数个 MAC 指令,因此可以提高上述运算的效率。

MAC指令的输入及输出的数据类型可以是整数、定点数或是浮点数。若处理浮点数时,会有两次的数值修约(Rounding),这在很多典型的DSP上很常见。若一条MAC指令在处理浮点数时只有一次的数值修约,则这种指令称为“融合乘加运算”/“积和熔加运算”(fused multiply-add, FMA)或“熔合乘法累积运算”(fused multiply–accumulate, FMAC)。

融合乘加运算的操作和乘积累加的基本一样,对于浮点数的操作也是一条指令完成。但不同的是,非融合乘加的乘积累加运算,处理浮点数时,会先完成b×c的乘积,将其结果数值修约到N个比特,然后才将修约后的结果与寄存器a的数值相加,再把结果修约到N个比特;融合乘加则是先完成a+b×c的操作,获得最终的完整结果后方才修约到N个比特。由于减少了数值修约次数,这种操作可以提高运算结果的精度,以及提高运算效率和速率。

积和融加运算可以显著提升像是这些运算的性能和精度:

通常依靠积和融加运算来获取更精确的运算结果。然而,Kahan指出,如果不加思索地使用这种运算操作,在某些情况下可能会带来问题。像是平方差公式2 − 2,它等价于 ((×) − ×),若果x与y已知数值,使用积和融加运算来求结果,哪怕 = 时,因为在进行首次乘法操作时无视低位的有效比特,可能会使运算结果出错,如果是多步运算,第一步就出错则会连累后续的运算结果接连出错,比如前述的平方差求值后,再取结果的平方根,那么这个结果也会出错。

相关

  • 国际足球联合会国际足球联合会(法语:Fédération Internationale de Football Association;英语:International Federation of Association Football),简称国际足联(FIFA),是管理英式足球、室内五
  • 重摄取抑制剂再摄取抑制剂 (英语:reuptake inhibitor)(RI)是一种再摄取调节剂(英语:reuptake modulator),它可抑制由细胞膜转运体中介的神经传导物再摄取(英语:reuptake),进而增加胞膜外神经传导
  • 牟羽可汗牟羽可汗(?-780年),名移地健,又称作登里可汗、登里啰汩没蜜施颉咄登蜜施合俱录毗伽可汗,是回纥的可汗,在位期间相当于唐帝国唐代宗(李俶)在位时期。他是英武可汗(磨延啜可汗,葛勒可汗)之
  • 古希腊战争随着希腊黑暗时代的结束,人口显著增加的同时也恢复了都市文化,以及古希腊城邦的兴起。这些发展迎来了古代时期(公元前800-前480年)。就在这个时候,希腊人也开始组织城邦之间的战争
  • 泷川龟太郎泷川龟太郎(1865年-1946年),字资言,号君山。日本岛根县人,出身士族,是世界知名的汉学家,著有《史记会注考证》,是研究司马迁《史记》的经典权威作品。泷川龟太郎是日本战国时期的知名
  • 杰里迈亚·S·布莱克杰里迈亚·苏利文·布莱克(Jeremiah Sullivan Black,1810年1月10日-1883年8月19日),美国律师、政治家,曾任美国司法部长和美国国务卿。
  • 致福雷尔书简《致福雷尔书简》由阿博都巴哈所著,是其于1921年9月21日,对瑞士蚁学家、神经解剖学家与精神病学家奥古斯特·福雷尔的回信。在这份书简中,阿博都巴哈讨论了无机物世界、植物世
  • 徐之河徐之河(1917年5月-2021年2月10日),民建会员,浙江省江山县峡口镇王村人。曾任上海社会科学院原部门经济研究所所长、名誉所长。担任第六届、第七届全国政协社会科学界委员。1938年考入国立中央大学经济系,与邢慕寰、陈观烈、佟哲晖等为同学,1942年毕业。考取公派留美,在哥伦比亚大学、宾夕法尼亚大学沃顿商学院学习,取得MBA学位。回国后历任暨南大学、交通大学、上海财经学院、复旦大学教授。1959年调入上海市社会科学院经济研究所,后任所长、名誉所长。
  • 谭伊哲谭伊哲(?-),男,汉族,四川成都人,中国歌手、作曲家、音乐制作人。毕业于四川音乐学院。
  • 万峦佳和宫坐标:.mw-parser-output .geo-default,.mw-parser-output .geo-dms,.mw-parser-output .geo-dec{display:inline}.mw-parser-output .geo-nondefault,.mw-parser-output .geo-multi-punct{display:none}.mw-parser-output .longitude,.mw-parser-output .latitude{white-space:n