ARM 处理器中的乘法、累加与浮点运算
1. 乘法与累加在重要应用中的作用
在 3D 图形领域,若将点表示为 4D 向量 [x, y, z, 1],那么缩放、旋转、剪切和反射等仿射变换都可以用 4x4 矩阵来表示。多个这样的变换可以组合成一个单一矩阵。要将对象转换到场景中,就需要对对象的每个顶点进行矩阵乘法运算。运算速度越快,视频游戏中渲染一帧的速度也就越快。
在神经网络里,每一层神经元的计算都是先进行矩阵乘法,再应用非线性函数,其中矩阵乘法占据了大部分工作量。大多数神经网络有很多层神经元,每层都需要进行矩阵乘法。矩阵的大小与变量数量和神经元数量相关,因此矩阵维度通常达到数千。对象识别或语音翻译的速度取决于矩阵乘法的速度,也就是乘加运算的速度。
由于这些重要应用,ARM 处理器在硅片上为乘加运算分配了大量资源。
2. 累加指令
ARM 32 位指令集中有大量的乘加指令,常见的如下:
- MLA{S} Rd, Rn, Rm, Ra
- SMLAL{S} RdLo, RdHi, Rn, Rm
- SMLA Rd, Rn, Rm, Ra
- SMLAD{X} Rd, Rn, Rm, Ra
- SMLALD{X} RdLo, RdHi, Rn, Rm
- SMLAL RdLo, RdHi, Rn, Rm
- SMLAW Rd, Rn, Rm, Ra
- SMLSD{X} Rd, Rn, Rm, Ra
- SMLSD{X} RdLo, RdHi, Rn, Rm
- SMMLA{R} Rd, Rn, Rm, Ra
- SMMLS{R} Rd
超级会员免费看
订阅专栏 解锁全文
1617

被折叠的 条评论
为什么被折叠?



