By: Jouni Osmala (josmala.delete@this.cc.hut.fi), February 4, 2013 11:15 pm
Room: Moderated Discussions
> Compare and NOPify: there is a a permanent eight (or four or ...) bits mask associated with the
> next eight (or four or ...) instructions to execute (in the pipeline), and each following assembly
> instruction can be replaced by a NOP (No OPeration) at any time - in the pipeline only.
> So you have test instructions like:
> if (R5 if (R1 == R2) replace by NOP the following and the third following assembly instruction.
> At first, the compiler can just put jumps in the instruction which may be NOPed,
> but a more clever compiler would also put other comparisons or anything else.
> The bit mask of assembly instructions to replace by NOP is obviously shifted by one each times the processor
> execute the next instruction (even NOP), and instructions are not by default replaced by NOP.
Almost decade ago I defined architecture with instead of mask it counted the skips and nullified. What I figured out during the exercise that register renaming becomes a problematic with this kind of instructions. I think the conditional move instruction brings
most of the benefits with far less problems.
> If anybody think of setting a patent on this one, the inventor name is "etienne_lorrain@yahoo.fr"...
And I believe someone must of figured it out long before me too, and came to same conclusion: if you want to do register renaming you don't do this.
> next eight (or four or ...) instructions to execute (in the pipeline), and each following assembly
> instruction can be replaced by a NOP (No OPeration) at any time - in the pipeline only.
> So you have test instructions like:
> if (R5 if (R1 == R2) replace by NOP the following and the third following assembly instruction.
> At first, the compiler can just put jumps in the instruction which may be NOPed,
> but a more clever compiler would also put other comparisons or anything else.
> The bit mask of assembly instructions to replace by NOP is obviously shifted by one each times the processor
> execute the next instruction (even NOP), and instructions are not by default replaced by NOP.
Almost decade ago I defined architecture with instead of mask it counted the skips and nullified. What I figured out during the exercise that register renaming becomes a problematic with this kind of instructions. I think the conditional move instruction brings
most of the benefits with far less problems.
> If anybody think of setting a patent on this one, the inventor name is "etienne_lorrain@yahoo.fr"...
And I believe someone must of figured it out long before me too, and came to same conclusion: if you want to do register renaming you don't do this.