直接比较 ARM 和 x86 处理器的时钟频率有多公平?

How fair is a direct comparison of clock frequencies of an ARM and and x86 processor?

我想知道,如果我有一个 ARM 处理器 (1GHz) 和一个 x86 处理器² (1GHz) 而没有关于它们的其他信息,是否可以给出一个关于它们中哪一个可能表现更好的一般性陈述执行一些任意(复杂)的应用程序。

我知道 ARM (RISC) 体系结构是专门为帮助某些应用程序而开发的,而 x86 体系结构只是遗留兼容性和变通办法的汇编(无意抨击)。自然地,了解更多关于应用程序的信息很重要,即哪些特定任务(以及指令)可能最常执行。我们也把这些架构的不同版本放在一边。

因此我的问题是:拥有这两个时钟频率为 1GHz 的未指定处理器,是否有可能给出一个有根据的猜测,哪个会表现更好(即会更快地执行一般但复杂的应用程序)。

第二个注意事项:如果不可能(这是我的假设),至少需要比较哪些通用参数——除了将应用程序的汇编代码与体系结构的相应指令集进行比较之外?


² 为简单起见,我们假设它们都具有 32 位架构并且没有特定的 AMD 或 Intel 功能。

不是真的。时钟频率如此低的 x86 可能是像 Atom(尤其是前 Silvermont)这样的低功耗设计,或者是限制更多的 x86 设计。现代 desktop/laptop x86 CPUs 每个时钟可以执行很多操作(每个时钟大约 4 条指令,排除分支预测错误、数据相关性或执行端口争用)。 Google 如果你想要桌面的 IPC(每个周期的 insns)数字 CPUs 在真实代码上。

一个 CPU 可能对某些事情更快,但对其他事情来说更慢,对于强调此列表(我刚刚编造的)上不同项目的任务:

  • 向量整数and/or FP 数学吞吐量
  • 不可预测的分支(数据压缩)
  • 工作负载大小(缓存)
  • 主存带宽
  • 缓存带宽
  • large-code-footprint(指令cache/fetch/branch-prediction缓冲区大小)
  • AES / CRC32C / SHA1(部分 CPU 中的硬件指令支持)。

如何实际比较

查看来自 SPECint2000 或 SPECint2006 的 gcc 基准测试结果。如今,构成整个 SPECint 套件的其他基准通常被认为没有用。 (source - Realworldtech forum discussion。是的,他同意的 "Linus" 是 Linux 成名的 Linus Torvalds。)

You can't game gcc, it has a fairly large cache footprint relative to the others, stresses the branch predictor, etc. Since SPEC doesn't include browser or GUI benchmarks, gcc is probably the closest you can come to actually measuring smartphone performance.

不,一点也不公平。就像比较任意两辆随机车辆的任何特定性能指标(最高速度、某些赛道上的单圈时间、里程、舒适度、安全性等)一样,仅仅是因为它们都有相同数量的车轮。仅根据车辆的车轮数量和品牌名称(而非型号)进行预测并不是一个真正有趣的比较。

以下是我的 32 位 GCC 基准测试的比较 - 在​​我的网站上阅读更多内容::

http://www.roylongbottom.org.uk/

它们代表 Android 系统(Atom 原生 Intel 代码)、Raspberry Pi 2 A7 和 Intel/AMD 基于 PC 使用 Linux Ubuntu。

首先来自带有微小循环的 Whetstone 基准测试,其中 Intel 和 ARM 可能非常相似。

接下来是具有 L2 缓存速度依赖性的 Linpack 基准测试,其中后来的技术显示出改进。

最后,我的最大 MFLOPS 测试,使用为英特尔编译的 SSE 指令和为 ARM 编译的 NEON,英特尔领先。带有 AVX 指令的 Core i7 展示了每 MHz 高达 1147 MFLOPS。

注意结果可能取决于编译器发行版本。

                       Whetstone                 Linpack      Max
                        Float Functions  Integer    Float    Float

    Cortex-A9              22      1.7      124       17       95
    Cortex-A15             18      1.7      102       47      241
    Qualcomm 800           27      1.5      146       33
    Atom Z3745             30      1.7      182       22

    Cortex-A7              27      0.9      126       13       86

    Atom N455              19      0.7       63       12      110
    Athlon 64              28      1.6      113       42
    Phenom II              28      1.6      136       49      500
    Core 2 Duo             31      1.6      238       41      600
    Core i7 4820K          31      1.8      224       65      630