ABB 07KT97 低成本的SMD硬件模块
所使用的模拟器还可以提供每个指令地址的执行计数。这提供了每个二进制文件中热循环被执行的迭代次数。每次迭代的浮点运算(FLOPs)是通过检查反汇编来计算的。如果进行静态分析,原始标量代码在热循环中有28个触发器。但是由于循环的一部分有时会被删除(对于这个输入数据集,4.5%的迭代),所以每次迭代的动态FLOPs为27.33。将每次迭代的FLOPs乘以迭代次数表明,每个二进制文件都在做相同的FP工作总量[6].
对原始标量代码进行矢量化以使用Neon将所需的指令数量减少了65%[7]。尽管执行了任何额外的指令,但由于vector Neon版本不再为非常远的对象或对象本身修剪计算。做一些无用的工作并丢弃结果仍然是有益的,因为Neon矢量代码比原始标量代码减少了63%的执行周期。
SVE版本保留了算法的计算修剪(使用预测),并且执行速度比矢量化Neon版本快26%。虽然通过预测修剪计算可能对执行的指令数量影响最小,但使用SVE提供了略有不同的指令组合,并导致更少更短的数据依赖链和改进的指令流。
有了详细的逐周期模拟输出,就可以比较每个可执行文件在热循环中花费的执行周期部分。模拟器提供每条指令被执行的次数,以及在成为机器中最老的指令(程序顺序)后等待退出的周期数。以下统计基于这些计数。
ABB BIO0003
ABB 2RCA013897A0002D
ABB 2RCA013836D
ABB DSDP150
ABB 57160001-GF
ABB PCD231B
ABB 3HHE025541R0101
ABB M063B
ABB IMDS003
ABB BCU-02
ABB 5SHX08F4502
ABB PFEA113-65
ABB 3BSE028144R0065
ABB PDP800
ABB ASE2UDC920AE01
ABB 3BHB022793R0001
ABB PPC380AE102
ABB HIEE300885R0102
ABB PPC380AE02
ABB NU8976A99
ABB HIER466665R0099/NU8976A
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。