【问题标题】:which CPUs support MOVBE instruction?哪些 CPU 支持 MOVBE 指令?
【发布时间】:2011-07-11 21:29:12
【问题描述】:

有时 GCC 在使用 -march=atom 编译时会生成此指令。每个 Intel Atom CPU 是否都支持 MOVBE?

还有哪些其他处理器支持这条指令?我似乎无法在英特尔网站上找到此信息。请帮忙。

【问题讨论】:

  • Athlon X4 845 a.k.a Bulldozer 也有。
  • @jww:Athlon X4 845 是Excavator(最后一代 Bulldozer 系列),而不是 Bulldozer。 Steamroller 和更早的版本没有 MOVBE。 instlatx64.atw.hu 有 CPUID 列表和指令微基准,显示只有 Carrizo(挖掘机)CPU 拥有它,而不是该系列的早期版本。
  • @Peter - 我买了一台推土机。它就在我的地下室。
  • @jww:我非常怀疑这一点,除非 CPUID 支持但未报告它。 0x1E98220B & (1<<21) = 0。 (这是推土机上 CPUID 转储中的 CPUID.01H:ECX.MOVBE[bit 22],特别是 users.atw.hu/instlatx64/…)。我更倾向于相信来自 instlat 的 CPUID 转储,而不是你对地下室的记忆。

标签: assembly x86 endianness


【解决方案1】:

似乎所有 Atom 处理器都支持 MOVBE;无论如何,第一个也是最差的(Atom 230)可以。 (参见例如http://www.linuxquestions.org/questions/linux-hardware-18/proc-cpuinfo-output-816192/ 以获取证据。)我不相信任何非 Atom 英特尔处理器支持 MOVBE。无论如何,最近的 Core i7 处理器似乎没有(参见例如http://www.techsupportforum.com/forums/f108/i7-running-on-3-of-8-threads-522063.html 并搜索“movbe”以获取证据)。

您可以在运行时使用 CPUID 检测 MOVBE 支持。

【讨论】:

【解决方案2】:

此指令最初是英特尔® 凌动™ 处理器独有的。

英特尔方面:

英特尔® 编译器 11.0 允许您 以英特尔® 凌动™ 处理器为目标 使用 /QxSSE3_ATOM 或 -xSSE3_ATOM 编译器选项。这些选项 启用 movbe 的生成 这是独特的指令 英特尔® 凌动™ 处理器。

在其他微架构中(http://instlatx64.atw.hu/ 带有来自https://agner.org/optimize/ 的 uop 信息):

  • 主流英特尔:Haswell 及更高版本。包括 Haswell Xeon (Ex-xxxx v3)。
    解码为 2 或 3 uop,与 bswap + 加载或存储大致相同。
  • 主流 AMD:Excavator 和锐龙家族。 Steamroller 和更早的版本没有它。
    高效解码为单个 uop。

非主流 CPU:

  • 传统有序 Intel Atom:全部
  • Intel Silvermont 系列 Atom 故障:全部。高效解码为单个 uop。
  • AMD 捷豹。高效解码为单个 uop。

  • 英特尔至强融核:骑士登陆(基于 Silvermont)及更高版本。 (也许不在骑士的角落。)

【讨论】:

  • 现在 supported 也由 Haswell SoC 提供。
  • Intel Xeon E5-2640 也支持它。
  • @pchaigno:E5-2640 是 Sandybridge。仅 E5-2640 v3 及更高版本支持 MOVBE。
【解决方案3】:

基于/proc/cpuinfo,新的至强E3 XXXX v3也支持MOVBE

来源:

http://openbenchmarking.org/s/Intel%20Xeon%20E3-1230%20v3

【讨论】:

  • Xeon v3 是 Haswell 微架构,所以是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 2010-12-16
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2010-09-14
相关资源
最近更新 更多