Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site brl-tgr.ARPA Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!genrad!panda!talcott!harvard!seismo!brl-tgr!tgr!droms@PURDUE.ARPA From: droms@PURDUE.ARPA (Ralph E Droms) Newsgroups: net.micro Subject: Re: Need a microprogramming consultant! Message-ID: <8917@brl-tgr.ARPA> Date: Mon, 4-Mar-85 14:36:43 EST Article-I.D.: brl-tgr.8917 Posted: Mon Mar 4 14:36:43 1985 Date-Received: Sat, 9-Mar-85 11:57:49 EST Sender: news@brl-tgr.ARPA Lines: 46 A microprogrammable CPU is one in which control points within the CPU are directly controlled by bits in the instruction word. For example, in a simple machine with two registers (e.g., A and B) connected by a bus, there would be a control bit (e.g., bit 3) in the instruction to gate register A onto the bus, another (bit 2) to gate register B onto the bus, a third (bit 1) to load register A from the bus and a fourth (bit 0)to load register B from the bus. So, to load register A from register B, the instruction would be 0110. Now, extend this to cover ALL the control points in a CPU - and give each one a separate bit in each instruction, and you have a horizontally microprogrammed CPU. But, the information in the instructions will be very sparse (i.e., there will be only a few control points turned on in each instruction). So, encode all the control points in binary and allow only one control point per instruction, and you have a vertically microprogrammed CPU. In practice, groups of mutually exclusive control points (in the above example, you really only want to gate either A or B onto the bus, but not both), are encoded in fields in the microinstruction, resulting in an architecture somewhere between vertical and horizontal microcode. How is microprogramming used? Microprogram storage is typically (although not always) fast and small. The usual practice is to code an emulator in microcode which executes a more "normal" instruction set. This instruction set may be patterned after an existing machine (allowing capture of existing software) or after a more "ideal" hypothetical machine (e.g. a pure stack-oriented architecture). For more detailed descriptions, see: Katzan, Harry. "Microprogramming Primer". McGraw-Hill Computer Science Series (1977). Mano, M. Morris. "Computer System Architecture" (ch. 7-9). Prentice-Hall, Inc. (1976). - Ralph Ralph Droms ihnp4!purdue!droms 445 MATH droms@purdue.arpa Dept. of Computer Science droms@purdue.csnet Purdue University West Lafayette, IN 47906 ----------