每个周期的操作数 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?的主要内容,如果未能解决你的问题,请参考以下文章

ARM Cortex A9的流水线介绍

stm32 DSP指令的周期

你能帮我理解 ARM Cortex-A9 上的缓存行为吗?

ARM Cortex M4(或M3)上的周期计数器?

STM32Cortex-ACortex-RCortex-MSecurCore

ARM Cortex-A72 CPU All In One