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