我在这里查看 Agner Fog 的说明表,特别是在查看沙桥案例时,有一件事引起了我的注意。如果您查看 DIV 指令,您可以看到,例如,r64 DIV 指令最多可以解码 56 微指令!我的问题是:这是真的还是我误解了?
这是我什至没有想到的事情。我一直认为 2 个寄存器的整数除法仅在 1 uop 中解码。并认为该 uop 已发送到端口 0(例如在 Sandy Bridge)。
我认为这里发生的事情是:uop 被分派到 Port0 并在一些周期后完成。但是,由于流水线,每个周期可以将 1 个 div uop(或另一个需要 port0 的 uop)发送到该端口。但这完全打破了我的计划:需要在 56 个不同的周期中调度 56 个不同的微指令并占用 56 个 ROB 条目以仅执行 1 个整数除法?