每个周期的操作数 ARM Cortex CPU?
Posted
技术标签:
【中文标题】每个周期的操作数 ARM Cortex CPU?【英文标题】:Ops per cycle ARM Cortex CPUs? 【发布时间】:2015-02-20 18:06:25 【问题描述】:我需要 ARM 处理器每个周期可以执行的操作数,尤其是 Cortex-A7、Cortex-A9 和 Cortex-A15 的操作数。 我在网上找不到任何东西!
谢谢
编辑:我需要它来计算理论峰值性能。
【问题讨论】:
您认为什么是操作? 【参考方案1】:我还没有研究过整数,但是对于每个周期的单双浮点操作,这是我迄今为止提出的(来自 flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2、peak-flops-per-cycle-for-arm11-and-cortex-a7-cores-in-raspberry-pi-1-and-2 和 Cortex-A9 NEON Media Processing Engine Technical Reference Manual)。
Cortex-A7:
0.5 DP FLOPs/cycle:标量 VMLA.F64 每四个周期。 1.0 DP FLOPs/cycle:标量 VADD.F64 每个周期。 2.0 SP FLOPs/cycle:标量 VMLA.F32 每个周期。 2.0 SP FLOPs/cycle:2 宽 VMLA.F32 每隔一个周期。Cortex-A9:
1.5 DP FLOPs/cycle:标量 VMLA.F64 + 标量 VADD.F64 每隔一个周期。 4.0 SP FLOPs/cycle:2-wide VMLA.F32 每个周期。Cortex-A15:
2.0 DP FLOPs/cycle:标量 VMLA.F64(或 VFMA.F64)每个周期。 8.0 SP FLOPs/cycle:每个周期 4-wide VMLA.F32(或 VFMA.F32)。一个有趣的观察是,对于 Cortex-A7,Neon 浮点并不比 VFP 快。
【讨论】:
引用 Cortex-A7 的 1 DP FLOP/cycle 有点误导。一般来说,当人们在没有进一步上下文的情况下谈论 FLOP 时,其预期含义实际上是“对于乘法和加法的 50/50 混合”,因为这就是 GEMM 所做的(与 FFT 相距不远,尽管好的 FFT 通常会稍微加法-偏见)。 @StephenCanon,好点,我对此进行了辩论。我实际上在那里有 VMLA.F64,但将其删除。让我把它放回去。 @StephenCanon,我想知道我是否做出了错误的结论。我在nullprogram.com/blog/2015/07/10 上运行了代码,在我的 Raspberry Pi2 上使用 GCC 4.6 (raspian) 和 GCC 5.2 (arch) 时,Neon 的速度提高了大约两倍。我没有对时序进行稳健的测试(作者的时序数字有很大的误差),但它似乎大约是两倍,这意味着 Neon 比 Cortex-A7 上的 VFP 更快。请注意,到 10 月之前我几乎没有时间进行大量 SOing,所以在那之前我不会做出太多回应。【参考方案2】:只看最常见的地方。
你有它:http://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
【讨论】:
以上是关于每个周期的操作数 ARM Cortex CPU?的主要内容,如果未能解决你的问题,请参考以下文章