【问题标题】:How fair is a direct comparison of clock frequencies of an ARM and and x86 processor?直接比较 ARM 和 x86 处理器的时钟频率有多公平?
【发布时间】:2015-09-30 11:07:46
【问题描述】:

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

我知道 ARM (RISC) 架构是专门为帮助某些应用程序而开发的,而 x86 架构只是对遗留兼容性和解决方法的编译(无意抨击)。自然,了解更多关于应用程序的信息很重要,即哪些特定任务(以及指令)可能被执行得最多。让我们也抛开这些架构的不同版本。

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

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


² 为简单起见,我们假设他们同时拥有 32 位架构,但没有特定的 AMD 或 Intel 功能。

【问题讨论】:

  • 取决于特定的 CPU,真的:extremetech.com/extreme/… , extremetech.com/computing/… "x86" 主要针对非移动设备,其中电源(和热量)和尺寸不太重要。也就是说,i7 将超越任何当前的 ARM 处理器。但 Cortex A15 可以击败低功耗 Atom 产品。
  • 也就是说,在大多数情况下,它只是在同类设计中功耗和性能之间的权衡。
  • 在您开始尝试跨架构比较之前,前提已经存在很大缺陷 - 想想我拥有的一些大约 10 年历史的笔记本电脑,您能说 2.2GHz x86 是否比 1.4“更好”同一时代的 GHz x86?
  • 鉴于 ARM 部件都用于电池供电的设备,更有趣的问题可能是在这些设备上频繁执行的特定操作的功耗(8x8 DCT 可能是一个很好的例子,因为它被使用大量使用视频编解码器)。

标签: performance x86 arm comparison


【解决方案1】:

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

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

它们代表 Android 系统(Atom 原生 Intel 代码)、Raspberry Pi 2 A7 和使用 Linux Ubuntu 的基于 Intel/AMD 的 PC 的每 CPU 时钟 Hz 的操作百分比。

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

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

最后,我的最大 MFLOPS 测试,为英特尔编译了 SSE 指令,为 ARM 编译了 NEON,英特尔跃居前列。采用 AVX 指令的 Core i7 表现出高达 1147 MFLOPS/MHz。

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

                       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

【讨论】:

  • 感谢分享,不胜感激。 ;)
  • Coremark 试图将编译器排除在外。虽然它又是一个综合基准......
【解决方案2】:

不是真的。时钟频率如此之低的 x86 可能是低功耗设计,例如 Atom(尤其是前 Silvermont),或者是更有限的 x86 设计。现代台式机/笔记本电脑 x86 CPU 每个时钟可以做很多事情(每个时钟大约 4 条指令,除非分支错误预测、数据依赖性或执行端口争用)。如果您想在实际代码上获得桌面 CPU 的 IPC(每个周期的 insns)数字,请谷歌。

一个 CPU 可能在某些事情上更快,但在其他事情上却更慢,因为任务会强调此列表中的不同项目(我刚刚编造的):

  • 向量整数和/或 FP 数学吞吐量
  • 不可预测的分支(数据压缩)
  • 工作负载大小(缓存)
  • 主内存带宽
  • 缓存带宽
  • large-code-footprint(指令缓存/获取/分支预测缓冲区大小)
  • AES / CRC32C / SHA1(某些 CPU 中的硬件指令支持)。

如何实际比较

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

你不能玩 gcc,它的缓存占用相对于 其他的,强调分支预测器等。由于 SPEC 没有 包括浏览器或 GUI 基准,gcc 可能是最接近的 来实际测量智能手机的性能。

【讨论】:

  • 谢谢,我知道这不是一件小事,但我仍然希望至少在某种程度上可以预测它们的表现。由于第二部分,我将接受您的回答。 ;)
  • 指令发出率的度量值。 x86 作为微编码架构使事情变得更加复杂,所有现代部分都将程序流转换为内核实际执行的内核指令。毫不奇怪,每个人的发行率都不同。
  • 在当前的 Intel 设计中,大多数常见指令都解码为单个 uop。 cmptestadd 和其他人可以与jcc 组合成一个微指令。你说得对,每个周期谈论 4 个 insns 是一种简化。这取决于您运行的指令。
  • @artlessnoise:我可能误解了你的反对意见,但我们不是在谈论 gcc 生成的代码。它可能会更好地优化 x86 目标,但问题是 gcc 本身如何运行,而不是生成的代码有多快。我们谈论的是 SPECint spec.org/cpu2006/Docs/403.gcc.html 基准测试。您是否声称 gcc 的解析器和 x86 目标优化器的编写方式有利于 x86 主机而不是其他 CPU 架构?那个 RWT 引用正是这个上下文:如何比较 CPU 架构中的整数性能。
  • 所以重点是您可以在 一个时钟 内完成的工作是高度可变的,并且取决于您希望完成的工作。如果将手机与 PC 进行比较,内存带宽会大不相同。所以像网络浏览器/javascript这样的东西会很糟糕。如果 ARM CPU 是为基于平板电脑/笔记本电脑的设计而合成的,那么内存总线可能更宽/更好,并且可以与 PC 相媲美,因此我的投票很接近;对 SO 来说不是一个好问题。 ARM 可以在许多 种不同类型的设计中找到。将嵌入式 PC104 x86 板与手机进行基准测试更接近(但仍然不一样)。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2010-11-13
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多