【问题标题】:How long does the retire unit take in the reservation station to retire an instruction?退出单元在保留站中退出指令需要多长时间?
【发布时间】:2018-01-20 18:53:59
【问题描述】:

我在英特尔优化手册中寻找,对于 Skylake,我找不到在假设没有延迟的情况下离开其执行端口后退出指令需要多长时间。

谁能提供这些信息或给我一个参考,我可以找到答案。此外,非常感谢您参考任何详细说明退休单位/流程如何运作及其延迟的文件/文件。

谢谢。

【问题讨论】:

  • 我们将不胜感激。
  • 我不确定这有多重要。这只是指令延迟的一部分。
  • 看来您已经回答了您的问题 :) 一个 uops 需要一个周期才能退役,多个 uops 可以在给定的周期内退役(例如,P6 为 3,Netburst 为 4,SKL 可能为 6?)。退休只是将临时寄存器复制到架构寄存器中(或者更可能是重命名后者),Agner Fog 的microarchitecture guide 在第 81 页简要描述了它。我认为没有太多要说的,至少在公开场合。
  • @PeterCordes - 是的,我一直对退休率比其他瓶颈(如 RAT)高得多感到困惑。一个想法是更快地释放资源。想象一个场景,前端在一些有限的资源上停滞不前,比如加载/存储缓冲区或(不太可能)物理寄存器,并且退休“队列”有点满(这样的队列,AFAIK,实际上并不存在:它只是由执行指令组成的 ROB 的头部)。最老的 20 条指令或其他指令不会释放此资源,但较年轻的指令会释放。高退休率可以让您解放...
  • ... 资源更快,解除了前端的阻塞,这是这里的瓶颈。请注意,如果您将有限的资源视为“ROB 条目”,则此逻辑实际上不起作用,因为虽然更快的退休可以更快地释放“ROB 条目”,但它似乎从来没有真正重要(单线程),因为只要 ROB条目以 RAT 宽度释放,如果你走得更快似乎并不重要(因为前端不会成为条目的瓶颈)。但是,当您考虑加载/存储缓冲区时,它与 ROB 条目不是 1:1,这是有道理的。

标签: assembly architecture nasm cpu-architecture micro-architecture


【解决方案1】:

问题的 cmets 已经涵盖了退休率,这是指令一旦成为最旧的未退休指令就可以退休的吞吐量。对于最近的 Intel (Skylake),这似乎是每个线程每个周期至少 4 条指令,而在 AMD (Ryzen) 上,每个内核每个内核至少 8 条指令。

这个比率至少与其他瓶颈一样宽,例如重命名(最近的 Intel 为 4,最近的 AMD 为 5 或 6),因此它很少成为瓶颈并且很难直接测量,因为大多数测试都会在某些东西上遇到瓶颈否则在您达到最高退休率之前。

看起来这可能不是你的问题,因为你写道:

指令退出后需要多长时间 假设没有延迟的执行端口

不清楚您所说的“无延迟”是什么意思,但这是一个完全不同的问题 - 这需要多长时间取决于它前面有多少指令等待退休以及他们需要多长时间才能退休。我想在最坏的情况下,最旧的指令被停止(例如,DRAM 的长时间延迟未命中),然后任何较年轻的指令的退休可能需要 100 ns 或更长时间。也许这违反了您的“无延迟”规则?在一般情况下,一条指令必须等待所有较早的指令退出,即使事情进展顺利,也可能需要很多周期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 2018-03-12
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2021-02-20
    相关资源
    最近更新 更多