By: anon (anon.delete@this.anon.com), November 14, 2012 7:25 am
Room: Moderated Discussions
Paul A. Clayton (paaronclayton.delete@this.gmail.com) on November 14, 2012 6:41 am wrote:
> anon (anon.delete@this.anon.com) on November 14, 2012 5:10 am wrote:
> [snip]
> > When it is said that the front-end handles simple reg,reg moves
> > and saves OOOE resources, what does this mean exactly?
> >
> > Presumably such instruction has to be at least tracked in the ROB somehow. So it may save a physical
> > register and an execution unit, but it's not entirely eliminated from OOOE part. Or am I way off base?
>
> A move that occurs immediately before an instruction which uses the destination of the move
> as a source/destination can effectively be fused with the later instruction. E.g.:
>
> mov R9 add R10
> can be transformed into:
>
> add R10
> which could occupy a single ROB entry. (Note that each instruction need not maintain a unique
> ROB entry; ISTR that POWER4 hold up to four instructions plus a branch in each ROB entry.)
>
> Unrestricted move elimination would be more complex. However, even if such requires a ROB entry, it removes
> the move from the dependence chain--zero-cycle move--(as well as saving a register, temporary use of a scheduler
> slot, execution unit use, and possibly register file reads). Avoiding execution saves power, of course.
Certainly, but in that case you could not exactly say it has avoided the OOOE engine, as you can with the above case.
> anon (anon.delete@this.anon.com) on November 14, 2012 5:10 am wrote:
> [snip]
> > When it is said that the front-end handles simple reg,reg moves
> > and saves OOOE resources, what does this mean exactly?
> >
> > Presumably such instruction has to be at least tracked in the ROB somehow. So it may save a physical
> > register and an execution unit, but it's not entirely eliminated from OOOE part. Or am I way off base?
>
> A move that occurs immediately before an instruction which uses the destination of the move
> as a source/destination can effectively be fused with the later instruction. E.g.:
>
> mov R9 add R10
> can be transformed into:
>
> add R10
> which could occupy a single ROB entry. (Note that each instruction need not maintain a unique
> ROB entry; ISTR that POWER4 hold up to four instructions plus a branch in each ROB entry.)
>
> Unrestricted move elimination would be more complex. However, even if such requires a ROB entry, it removes
> the move from the dependence chain--zero-cycle move--(as well as saving a register, temporary use of a scheduler
> slot, execution unit use, and possibly register file reads). Avoiding execution saves power, of course.
Certainly, but in that case you could not exactly say it has avoided the OOOE engine, as you can with the above case.



