On 1/2/19 10:44 AM, Guy Sotomayor Jr wrote:
Also, recall that there are different forms of
micro-code: horizontal
and vertical. I think that IBM (in the S/360, S/370, S/390, z/Series)
uses the term micro-code for horizontal micro-code and millicode
for vertical microcode.
On the CDC STAR-100, "microcode" as such was a relatively recent concept
and the designers went overboard, mostly because of an ill-defined
customer base (hence, BCD and other commerical-class instructions, like
translate, edit and mark, etc.). The STAR is basically a RISC-type
vector architecture with a pile of microcoded instructions bolted on.
While this results in a great many instructions, many were used little.
It's hard to grasp that the same guy who designed the CDC 6400 (a RISC
architecture) also designed the STAR-100.
It's worth noting that all 256 8-bit opcodes are used; many are modified
by another 8-bit modifier quantity whose meaning varies greatly. In
effect, you have something closer to 1000 distinct instructions, if not
more.
For a compiler writer, or even an assembly coder, this was more of a
problem--which combination of instructions could be used to the greatest
effect? And why do I have to have the hardware manual on my desk to
look up instructions?
Subsequent embodiments of the architecture dropped a great many
microcoded instructions, with, as far as I can tell, no deleterious effect.
The manual for the STAR-100 hardware description is on bitsavers under
cdc/cyber/cyber_200 if you're curious.
Some earlier computers implemented additional instructions by
hard-coding subroutines whose entry address was determined by the
op-code of the instruction. Macro-coding, if you will.
--Chuck