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


----------