cpuid:报告的微架构似乎模棱两可
cpuid: reported micro-architecture seems ambiguous
Ubuntu 20.04 LTS。注意 (unknown type)
报告:
$ cpuid | less
CPU 0:
vendor_id = "GenuineIntel"
version information (1/eax):
processor type = primary processor (0)
family = 0x6 (6)
model = 0xe (14)
stepping id = 0xd (13)
extended family = 0x0 (0)
extended model = 0x9 (9)
(family synth) = 0x6 (6)
(model synth) = 0x9e (158)
(simple synth) = Intel Core (unknown type) (Kaby Lake / Coffee Lake) {Skylake}, 14nm
.
.
.
(uarch synth) = Intel Coffee Lake {Skylake}, 14nm
(synth) = Intel Xeon E-2200 (Coffee Lake R0) {Skylake}, 14nm
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz
stepping : 13
microcode : 0xea
cpu MHz : 3400.000
cache size : 16384 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
. . .
那么这个处理器是什么?卡比?咖啡?还是天湖?我问是因为我正在做 PMU 编程。我想确保根据架构做正确的事情。
这是 cpuid
命令的 http://www.etallen.com/cpuid.html 版本,而不是 msr-tools
软件包的一部分。
根据 Intel's web site,“Intel(R) Xeon(R) E-2278G”是 Coffee Lake,因为您的 cpuid
shell 命令从其他 CPUID 信息,可能包括品牌字符串。
具体来说,according to wikichip,它是 Coffee Lake E(“客户端”内核的 Xeon-badged 版本)的 Coffee Lake Refresh 迭代,因此是 Coffee Lake ER。
作为 Coffee Lake 意味着 IA 内核在微体系结构上与 Skylake(和 Kaby Lake)相同,尽管它具有更新的 GPU 和额定速度更高的内存控制器。
对于 CPU 内核,改进只是硅工艺 (14nm++) 的改进。
除了一些针对 Meltdown、L1TF 或其他相关漏洞的硬件修复。并且可能改进 Spectre 缓解措施。但尚未修复需要在微代码或 JCC 勘误表中禁用 LSD(循环缓冲区)的错误,因此这两个性能问题仍然 self-inflicted 其微代码即使在极端情况下也能确保正确性。
据我所知,PMU 硬件在 SKL、KBL 和 CFL 中是相同的,除了可能(?)一些勘误表已修复。我假设事件 ID 都是相同的。
理解command-linecpuid
输出:
version information (1/eax):
... family/model/stepping/...
(simple synth) = Intel Core (unknown type) (Kaby Lake / Coffee Lake) {Skylake}, 14nm
我 猜测 这就是说 family/model/stepping 和 extended-model/family 字段不区分 KBL 和 CFL(因此类型未知) ,但确实暗示其中之一。 {Skylake}
提醒您 KBL 和 CFL 都是 Skylake 的迭代。
“(未知类型)”可能表示它不知道它是 i3/5/7/9 还是 Pentium 或 Celeron。
在我的 i7-6700k Skylake 台式机上,我明白了。来自 cpuid version 20170122
来自旧的 Arch Linux AUR 安装,它在 CPU 本身发布后仍然超过一年,它可能比你拥有的版本更旧。
version information (1/eax):
processor type = primary processor (0)
family = Intel Pentium Pro/II/III/Celeron/Core/Core 2/Atom, AMD Athlon/Duron, Cyrix M2, VIA C3 (6)
model = 0xe (14)
stepping id = 0x3 (3)
extended family = 0x0 (0)
extended model = 0x5 (5)
(simple synth) = Intel Core i3-6000 / i5-6000 / i7-6000 / Pentium G4000 / Celeron G3900 / Xeon E3-1200 (Skylake), 14nm
所以是的,(简单的合成器)可能是它能够从那片叶子中的东西而不是品牌字符串中预测出来的。
从最新版本的工具,version 20220224
,
version information (1/eax):
processor type = primary processor (0)
family = 0x6 (6)
model = 0xe (14)
...
(family synth) = 0x6 (6)
(model synth) = 0x5e (94)
(simple synth) = Intel Core (unknown type) (Skylake-H R0) {Skylake}, 14nm
...
(uarch synth) = Intel Skylake {Skylake}, 14nm
(synth) = Intel Core i*-6000 (Skylake-H R0) {Skylake}, 14nm
所以 (unknown type)
看起来完全正常,这只是英特尔在 i3/5/7.
中没有改变系列、型号、步进数字的结果
您的 Ubuntu 20.04 LTS 中的 cpuid
版本似乎确实了解 Coffee Lake。也许还不够新,无法了解 Coffee Lake Refresh,因为您的“R0”代表您的,与我的 Skylake 的“R0”相同(不是“刷新”;没有CPU 的 t 个新迭代作为 Skylake 发布。他们在 SKL 之后直接转移到 Kaby Lake。)
无论如何,您的 cpuid
版本最终会根据各种信息对您的 CPU 进行正确且完全准确的描述。
(synth) = Intel Xeon E-2200 (Coffee Lake R0) {Skylake}, 14nm
我不确定 cpuid
R0 的确切含义。也许是“修订版 0”,如果它不知道“Coffee Lake Refresh”,这将是有意义的。我想知道更新的 cpuid
是否会报告 R1 或拼出“刷新”?
不愧是Coffee Lake家族的E-22xx系列Xeon。 CPU 核心与 Skylake 基本相同,采用 14nm(++) 工艺制造。 IDK 如果英特尔在 CFL 和 CFL-refresh 之间的内核内部进行了任何调整,那么对于它进行编程,您拥有所需的所有信息。
其他“R”实例出现在 CPUID 输出中,表示“注册商标”,例如品牌字符串 Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz
中的“Intel(R) Xeon(R)”,Linux 通过具有不同 ECX 输入的 CPUID 机器指令的 the EAX=0017h leaf 直接从 CPU 中拉出。但我认为 R0 可能被用来表示“第一次迭代”(第 0 次刷新?),因为它不仅仅是复制像“Xeon(R)”这样的字符串。
Ubuntu 20.04 LTS。注意 (unknown type)
报告:
$ cpuid | less
CPU 0:
vendor_id = "GenuineIntel"
version information (1/eax):
processor type = primary processor (0)
family = 0x6 (6)
model = 0xe (14)
stepping id = 0xd (13)
extended family = 0x0 (0)
extended model = 0x9 (9)
(family synth) = 0x6 (6)
(model synth) = 0x9e (158)
(simple synth) = Intel Core (unknown type) (Kaby Lake / Coffee Lake) {Skylake}, 14nm
.
.
.
(uarch synth) = Intel Coffee Lake {Skylake}, 14nm
(synth) = Intel Xeon E-2200 (Coffee Lake R0) {Skylake}, 14nm
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz
stepping : 13
microcode : 0xea
cpu MHz : 3400.000
cache size : 16384 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
. . .
那么这个处理器是什么?卡比?咖啡?还是天湖?我问是因为我正在做 PMU 编程。我想确保根据架构做正确的事情。
这是 cpuid
命令的 http://www.etallen.com/cpuid.html 版本,而不是 msr-tools
软件包的一部分。
根据 Intel's web site,“Intel(R) Xeon(R) E-2278G”是 Coffee Lake,因为您的 cpuid
shell 命令从其他 CPUID 信息,可能包括品牌字符串。
具体来说,according to wikichip,它是 Coffee Lake E(“客户端”内核的 Xeon-badged 版本)的 Coffee Lake Refresh 迭代,因此是 Coffee Lake ER。
作为 Coffee Lake 意味着 IA 内核在微体系结构上与 Skylake(和 Kaby Lake)相同,尽管它具有更新的 GPU 和额定速度更高的内存控制器。
对于 CPU 内核,改进只是硅工艺 (14nm++) 的改进。
除了一些针对 Meltdown、L1TF 或其他相关漏洞的硬件修复。并且可能改进 Spectre 缓解措施。但尚未修复需要在微代码或 JCC 勘误表中禁用 LSD(循环缓冲区)的错误,因此这两个性能问题仍然 self-inflicted 其微代码即使在极端情况下也能确保正确性。
据我所知,PMU 硬件在 SKL、KBL 和 CFL 中是相同的,除了可能(?)一些勘误表已修复。我假设事件 ID 都是相同的。
理解command-linecpuid
输出:
version information (1/eax): ... family/model/stepping/... (simple synth) = Intel Core (unknown type) (Kaby Lake / Coffee Lake) {Skylake}, 14nm
我 猜测 这就是说 family/model/stepping 和 extended-model/family 字段不区分 KBL 和 CFL(因此类型未知) ,但确实暗示其中之一。 {Skylake}
提醒您 KBL 和 CFL 都是 Skylake 的迭代。
“(未知类型)”可能表示它不知道它是 i3/5/7/9 还是 Pentium 或 Celeron。
在我的 i7-6700k Skylake 台式机上,我明白了。来自 cpuid version 20170122
来自旧的 Arch Linux AUR 安装,它在 CPU 本身发布后仍然超过一年,它可能比你拥有的版本更旧。
version information (1/eax):
processor type = primary processor (0)
family = Intel Pentium Pro/II/III/Celeron/Core/Core 2/Atom, AMD Athlon/Duron, Cyrix M2, VIA C3 (6)
model = 0xe (14)
stepping id = 0x3 (3)
extended family = 0x0 (0)
extended model = 0x5 (5)
(simple synth) = Intel Core i3-6000 / i5-6000 / i7-6000 / Pentium G4000 / Celeron G3900 / Xeon E3-1200 (Skylake), 14nm
所以是的,(简单的合成器)可能是它能够从那片叶子中的东西而不是品牌字符串中预测出来的。
从最新版本的工具,version 20220224
,
version information (1/eax):
processor type = primary processor (0)
family = 0x6 (6)
model = 0xe (14)
...
(family synth) = 0x6 (6)
(model synth) = 0x5e (94)
(simple synth) = Intel Core (unknown type) (Skylake-H R0) {Skylake}, 14nm
...
(uarch synth) = Intel Skylake {Skylake}, 14nm
(synth) = Intel Core i*-6000 (Skylake-H R0) {Skylake}, 14nm
所以 (unknown type)
看起来完全正常,这只是英特尔在 i3/5/7.
您的 Ubuntu 20.04 LTS 中的 cpuid
版本似乎确实了解 Coffee Lake。也许还不够新,无法了解 Coffee Lake Refresh,因为您的“R0”代表您的,与我的 Skylake 的“R0”相同(不是“刷新”;没有CPU 的 t 个新迭代作为 Skylake 发布。他们在 SKL 之后直接转移到 Kaby Lake。)
无论如何,您的 cpuid
版本最终会根据各种信息对您的 CPU 进行正确且完全准确的描述。
(synth) = Intel Xeon E-2200 (Coffee Lake R0) {Skylake}, 14nm
我不确定 cpuid
R0 的确切含义。也许是“修订版 0”,如果它不知道“Coffee Lake Refresh”,这将是有意义的。我想知道更新的 cpuid
是否会报告 R1 或拼出“刷新”?
不愧是Coffee Lake家族的E-22xx系列Xeon。 CPU 核心与 Skylake 基本相同,采用 14nm(++) 工艺制造。 IDK 如果英特尔在 CFL 和 CFL-refresh 之间的内核内部进行了任何调整,那么对于它进行编程,您拥有所需的所有信息。
其他“R”实例出现在 CPUID 输出中,表示“注册商标”,例如品牌字符串 Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz
中的“Intel(R) Xeon(R)”,Linux 通过具有不同 ECX 输入的 CPUID 机器指令的 the EAX=0017h leaf 直接从 CPU 中拉出。但我认为 R0 可能被用来表示“第一次迭代”(第 0 次刷新?),因为它不仅仅是复制像“Xeon(R)”这样的字符串。