Controller Implementation


Any sufficiently advanced technology is indistinguishable from magic.
-Arthur C. Clarke

A man is known by the company he organizes.
-Ambrose Bierce



Introduction

In this, our final chapter, we examine alternative ways to implement a processor's control portion. In real machines, the control unit is often the most complex part of the design.

We study four alternative controller organizations. The first is based on classical finite state machines, using a Moore or Mealy structure. This approach is sometimes disparagingly called "random logic" control, to contrast it with more structured methods based on ROMs and other forms of programmable logic. The classical method is the only approach we used in Chapter 11.

The second method is called time state. It decomposes a single classical finite state machine into several simpler, communicating finite state machines. It is a strategy for partitioning a finite state machine that is well matched to the structure of processor controllers.

The third method makes use of jump counters, which we introduced in Chapter 10. This approach extensively uses MSI-level components like counters, multiplexers, and decoders to implement the controller.

The final method, microprogramming, uses ROMs to encode next states and control signals directly as bits stored in a memory. We examine three alternative microprogramming methods: branch sequencers, horizontal microprogramming, and vertical microprogramming. A branch sequencer encodes multiple next-state choices within the ROM. Horizontal microprogramming dedicates one ROM bit for each controller output. Vertical microprogramming carefully encodes the controller outputs to reduce the width of the ROM word. Any practical microprogramming approach includes some combination of these methods.

Table of Contents

1. Random Logic
2. Time State (Divide and Conquer)
3. Jump Counter
4. Branch Sequencers
5. Microprogramming
Chapter Review
Exercises

[Table of Contents] [Next] [Previous]


This file last updated on 07/16/96 at 04:34:26.
randy@cs.Berkeley.edu;