我在英特尔优化手册中寻找,对于 Skylake,我找不到在假设没有延迟的情况下离开执行端口后退出指令需要多长时间。
有人可以提供此信息或给我一个参考,我可以在哪里找到答案。此外,非常感谢您参考任何详细说明退休单元/流程如何工作及其延迟的文件/文件。
谢谢。
我在英特尔优化手册中寻找,对于 Skylake,我找不到在假设没有延迟的情况下离开执行端口后退出指令需要多长时间。
有人可以提供此信息或给我一个参考,我可以在哪里找到答案。此外,非常感谢您参考任何详细说明退休单元/流程如何工作及其延迟的文件/文件。
谢谢。
该问题的评论已经涵盖了退休率,这是指令一旦成为最旧的未退休指令就可以退休的吞吐量。对于最近的 Intel ( Skylake ),这似乎是每个线程每个周期至少 4 条指令,而在 AMD ( Ryzen ) 上每个核心至少有 8 条指令。
这个比率至少与其他瓶颈一样宽,例如重命名(最近的 Intel 为 4,最近的 AMD 为 5 或 6),因此它很少成为瓶颈并且很难直接测量,因为大多数测试会在你之前的其他东西上成为瓶颈达到最高退休率。
看起来这可能不是你的问题,因为你写道:
假设没有延迟,在离开执行端口后退出指令需要多长时间
目前尚不清楚您所说的“无延迟”是什么意思,但这是一个完全不同的问题 - 这需要多长时间取决于它前面有多少指令等待退休以及他们需要多长时间才能退休。我想在最坏的情况下,最旧的指令被停止(例如,DRAM 的长时间延迟未命中),然后任何较年轻的指令的退休可能需要 100 ns 或更多时间。也许这违反了您的“无延迟”规则?在一般情况下,一条指令必须等待所有较早的指令退出,即使事情顺利进行,这也可能需要很多周期。