By: anon (firstname.lastname@example.org), August 19, 2016 7:48 am
Room: Moderated Discussions
> A fused µop is a single µop in the scheduler, AFAICT - once fused, you have one µop forever.
I don't know, I seem to recall Agner Fog's uarch pdf saying that fused uops are still scheduled as two uops even though they stay in the ROB as a single entity (that was for Conroe though, it may have changed). Fused macroops are a single uop though.
> There's 60 µops waiting for a free execution unit (in the scheduler), and 192 µops waiting in the
> ROB. Thus, depending on how you wish to count it, you can consider the OOO window as 192 µops (the
> number of µops that have been decoded ready to execute, regardless of whether they're waiting on
> arguments or execution units), or 60 µops (the number of µops waiting on execution units).
I feel I'm nitpicking here, but uops in the 60-entry scheduler do not necessarily have their arguments ready, whereas uops in the ROB may in fact have executed. So I would really say that the OoO window is 60 uops (can't select between more than 60 uops). The ROB is just there to absorb latency and allow the OoO window to slide ahead while keeping things in-order somewhere. Does it make sense or am I just making up my own terminology?