invlpg指令的时钟周期

问题描述 投票:0回答:2

我正在阅读有关英特尔奔腾处理器的documentation指令的invlpg,它说需要25个时钟周期。我认为这取决于实现(特定的CPU),而不取决于实际的指令集体系结构?还是该指令必须花费25个时钟周期才能运行,这也是指令集规范的一部分吗?

performance assembly x86 instruction-set cpu-cycles
2个回答
0
投票

文档说奔腾电脑花了25个时钟周期。指令在其他CPU上占用的时钟周期数可以更多或更少。指令的执行不属于指令集规范的一部分。


0
投票

该数字是任何ISA官方文档的not一部分,它只是性能数据,有人在Intel ISA文档的旧(当时)副本中进行了注释。

它来自某些随机的微体系结构,大概是P5 Pentium,在Tripod成为广泛使用的Web主机时与之相关,并且可以将其自身标记为文档。 (These days there are Pentium/Celeron CPUs只是同一代i3 / i5 / i7的简化版本,其中禁用了AVX和BMI1 / 2之类的东西。但是Pentium以前是指P5 microarchitecture。)

not,来自英特尔文档;它是由编译该HTML的人添加的。该格式类似于现代版本的Intel vol.2 x86 SDM指令集参考手册。例如,您可以在https://github.com/HJLebbink/asm-dude/wiki/INVLPGhttps://www.felixcloutier.com/x86/invlpg上找到该HTML的摘录。三脚架链接中顶部的编码/助记符/描述表具有相同的格式,但实际文本有所不同。同样,inc的文本(current Inteltripod)是相同的单词。

[[[是的,这是基于Intel vol.2手册的旧PDF-> HTML,并添加了P5周期和指令对信息](在该双发出不会将指令分解为微指令的有序管道)。同样,随着FLAGS更新部分变成了表格。

当调整诸如Skylake和Zen之类的现代微体系结构时,指令配对和周期计数信息完全无关紧要,但是您可以在inc中找到它:他的电子表格包含一张P5表格,以及后来的Intel,AMD ,以及通过微体系结构。 (另请参阅他的优化指南和microarch pdf以获取背景信息,以帮助您了解uops /端口/延迟/吞吐量信息。)Agner不会测试大多数内核指令,因此invlpg不在他的清单中。

Agner Fog's instruction tables显然不是英特尔的官方消息。作者的IDK信息来源。也许他们测试了自己。或是Intel有时会发布某些微架构的时序编号,例如作为其优化手册的一部分。这与x86 ISA手册完全不同,您不能依靠它来确保正确性。其他人已经发布了他们的测试结果。


指令性能的实验测试结果(端口,延迟和吞吐量的总和)的另一个好来源是http://faydoc.tripod.com/cpu/index.htm。>他们对https://uops.info/的测试表明其背对背吞吐量为〜在Skylake客户端上实际执行194个周期,在Nehalem上使用〜157,在Zen +和Zen2上使用〜126.25,以选择一些随机示例。但是它可能与其他指令更好地交织,在最新的Intel CPU上仅“使用” 47个前端微指令,因此如果后端在ROB / RS中有空间,则可以在12个周期内发出指令,也许让后面的指令在invlpg m8操作正在进行中。 (尽管如果要退出其微指令,需要花费100个以上的周期,这通常会使OoO exec停滞在总时间的一小部分。)

请记住,无序CPU上的指令性能不能用单个数字来表示;它不是一维

。性能分析不像将循环中所有指令的周期成本加起来一样简单,您必须分析它们之间如何重叠。或者对于复杂的情况,例如invlpg m8,请测量。
© www.soinside.com 2019 - 2024. All rights reserved.