Jump to content

Millicode

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Guy Harris (talk | contribs) at 22:42, 26 November 2015 (The chipset in the ES/9370 appears to have used millicode as well, even if IBM didn't call it that.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer architecture, Millicode is a higher level of microcode used to implement the instruction set of a computer. Millicode runs on top of the microcoded instructions and uses those instructions to implement more complex instructions visible to the user of the system. Implementation of Millicode requires a special processor mode called millimode that provides its own set of registers, and possibly its own special instructions invisible to the user.[1]

IBM invented both the concept and the term Millicode for the System/390 9672-G4 processor in 1997.[1] The following are cited as advantages of Millicode:[1]

  • More complex instructions can easily be constructed from several millicode instructions.
  • Construction of a compatible line of computer models with different performance is simplified.
  • Millicode instructions can bypass CPU cache to improve performance.
  • Instructions can update multiple storage locations without concern for being interrupted.
  • Millicode can execute instructions at a higher privilege level without involving the operating system.
  • Millicode can provide a complex instruction as if it were a subroutine, making user code smaller.

The microcode for the ES/9370 was similar to millicode, in that it was written as a combination of System/370 instructions and code that had access to special hardware features.[2]

See also

References

  1. ^ a b c Rogers, Bob (Sep–Oct 2012). "The What and Why of zEnterprise Millicode". IBM Systems Magazine.
  2. ^ Wilhelm Spruth (ed.). "7.2". Springer-Verlag. doi:10.0007/978-3-642-74916-2. ISBN 978-3-642-74918-6. {{cite book}}: Check |doi= value (help); Missing or empty |title= (help); Unknown parameter |titlel= ignored (help)