P
Peter Dickerson
Nick Maclaren said:|> |>
|> >> PAL-code isn't microcode because it's essentially the same
instruction
|> >> set, processed through the same decoders and schedulers as the
externally
|> >> visible instruction set. It's a subroutine library.
|> >
|> > Is it called by a JSR instruction?
|>
|> Petty much. More like a system call.
I think that you meant "Not really"! It changes to kernel context
(well, roughly).
There were systems that had the equivalent that was more like a
subroutine - the Ferranti Atlas/Titan extracodes were done like that.
There are MASSIVE advantages to such a mechanism, because it can be
used to provide complex instruction emulation efficiently and
transparently without any of the scheduling or RAS problems that
come in if you have iffy PALcode.
Well, my very old Alpha architecture book calls the instruction CALL_PAL,
which has a 6-bit opcode (0) and 26 function code bits (what I might call an
abstract target address). The expectation from the opcode name is that after
it does whatever it does it will return to the instruction following the
CALL_PAL instruction. JSR, presumably jump-to-subroutine, is much the same.
The differences are in how the target address is determined and some state.
But then I'd say an INTn instruction on x86 is like a call too...
Peter