【问题标题】:What instruction set does the intel i7- 8705G use?intel i7-8705G使用什么指令集?
【发布时间】:2019-11-20 15:20:03
【问题描述】:

我需要将一些代码转换为英特尔 i7-8705G 的 ISA,但我不知道它使用的是哪个版本的 x86-64 ISA。

我想使用 Godbolt here 并从下拉列表中选择 ISA,但 x86-64 有多个版本。哪一个适合我的处理器?

我很惊讶地看到了几个版本。在英特尔网站上,它只是将其列为 64 位。 here

【问题讨论】:

  • i7-8705G is Kaby Lake G,所以使用gcc -O3 -march=skylake。大多数 i7-8xxx CPU 都是 Coffee Lake。没关系,差异仅在于 GPU 和制造调整;相同的 CPU 微架构。 (CFL has a working loop buffer (LSD) 除外,他们通过 SKL 和 KBL 的微码更新修复了导致他们禁用它的问题。)

标签: x86 intel instruction-set


【解决方案1】:

我需要将一些代码转换为英特尔 i7-8705G 的 ISA,但我不知道它使用的是哪个版本的 x86-64 ISA。

x86-64 ISA 没有版本。它是来自 8086 的指令集,具有大量可选扩展,其中(至少在理论上)这些扩展中的每一个都可能存在/不存在于任何(现有或未来)80x86 CPU 上,并且大多数扩展都被指示由CPUID 指令返回的一组大约 100 个标志作为存在/不存在。

为了理解所有可能性,GCC(它的-mtune-march 选项)根据英特尔为微架构提供的名称预定义了“CPU 名称”。对于 Intel i7-8705G,微架构是“Kaby Lake”。最新版本的 GCC 没有预定义 Kaby Lake 的名称;然而 Kaby Lake 是对英特尔之前称为 Skylake 的微架构的优化,而 GCC 确实具有预定义的名称“skylake”,因此这将是最好的选择(例如-march=skylake)。

注意:我在 Godbolt 上找不到任何架构的下拉列表,所以我想知道您是否感到困惑并正在考虑其他问题(编译器列表,其中每个编译器都有多个版本)。

【讨论】:

  • 感谢您的回答 :) 是的,我似乎对编译器版本感到困惑。我想我应该选择 x86-64 gcc 9.1
猜你喜欢
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2012-04-09
  • 2010-12-11
  • 2012-06-19
  • 2019-06-18
  • 1970-01-01
相关资源
最近更新 更多