> On Thu, 11 Jul 2002, Kevin D. Kissell wrote:
> > I note that Ralf has, in fact, applied the fix to the
> > OSS CVS repository. I also note that "BARRIER"
> > is still defined to be a string of 6 nops. I would argue
> > (again) that those really, really ought to be ssnops,
> > and that if they *were* ssnops, one could probably
> > have fewer of them.
>
> Sorry for being ignorant, but what's the difference between nop and ssnop?
>
> I see that SSNOP is defined to be `sll zero,zero,1' in <asm/asm.h>, but that
> doesn't give me any clue.
SSNOPs are "super-scalar NOPs", which were first
invented (but not documented at the time) for the
R8000, which was the first superscalar MIPS
implementation. They wanted to be able to absorb
the standard "overhead" NOPS associated with
unfilled branch delay slots, etc, in the dual-issue
mechanism, but still have some means to handle
CP0 hazards such that it could be assured to force
a 1 cycle stall per instruction. While it wasn't officially
a part of the architecture until the late 1990's, the
convention was carried forward by the R5xxx
and R1xxxx families. There have been rumours of
superscalar MIPS processors that do not enforce
single-issue on SSNOPs, but I don't know of any
offhand, and the MIPS32/MIPS64 specs formalize
the definition.
Regards,
Kevin K.
|