Available in the following versions:
This text was created to gather into one place many of the practical things that have been beneficial as I have designed various types of digital machines. Many texts about computer design deal with the block diagram level of design, which is interesting and instructive only if a person has sufficient background to put real devices into the blocks. However, it has been my experience that not a sufficient amount of real constraints and real design information accompanies the information that many people learn about computer design and computer architecture. That is, the design of the components of the system -- the adders, the multipliers, the interface elements, and other hardware items -- is understood to some degree at the conceptual level, but often people are unable to match devices to the functions. Thus, this text is about real examples and real systems.
In an attempt to identify the concepts and put real devices and methods with them, some examples are selected from a variety of real machines, while other examples stand alone. Thus, in the discussion of the instruction sets, rather than select a single instruction set and use it as a model to follow, instruction types are described. Also, examples of instructions are selected from different processors to illustrate different methods of performing some operation. Thus, the inferences are, I hope, that there are many ways to accomplish an objective, and that a designer needs to weigh the use of the available resources (time, silicon, power, etc.) against the design objectives. The design methodology must permit different solutions to different problems, not modifications of a single solution to meet different system needs.
The emphasis is on designs that work. The design examples are done with various "flavors of" TTL, and this is done on purpose. The ideas presented can be tested in the lab with off-the-shelf components, and different designs can be tested quickly to ascertain correctness and feasibility. Many of the ideas presented using TTL building blocks can be extended to on-chip designs of computer systems. However, even when a CPU chip has been created, it must be interfaced with memory, buses, and other functional modules. For much of the currently available equipment, interfaces, and memory, this is accomplished with different forms of TTL. Hence the use of TTL devices.
It has been my experience that the concepts offered in this book can be most effectively adsorbed by examination of a number of different designs, done in different ways. For that reason, many designs are available in a separate volume, The Design Book: Techniques and Solutions for Digital Computer Systems. This book contains designs to demonstrate features of number systems, combinational and sequential systems, interfaces, and memory systems.
Although the emphasis of the text is TTL, the methods presented here will be applicable in different technologies as well. Rather than assume the existence of an adder or a multiplier, the mechanisms and tradeoffs are discussed. A multiplier can be designed in many ways, and different solutions lead to various ways to utilize resources. A microprogrammed shift and add algorithm is slower than a pipelined high speed algorithm, but uses fewer parts and power. The designer that is aware of both solutions can effectively select the one that will fit the requirements of the system. So different mechanisms are described in the various chapters, and real examples given of each, so that both the method and its application can be examined.
This text assumes that the reader has had a basic course in logic design, both combinational and sequential, and some experience with microprocessor architecture and interfacing. However, in Chapter 3 is a review of the fundamentals in the setting of the combinational design of arithmetic units. Also, Chapter 5 includes examples and methods for four different approaches to synchronous sequential design. Each of the methods has characteristics that will lead to application in different systems, and a designer who is cognizant of more than one way to do a design can benefit by finding the most appropriate solution for a particular problem. Again, rather than allude to the process of microprogramming or state machine design, specific examples and solutions are given.
One of the intents of this text is to provide real examples that draw together the skills and ideas that seem diverse and unrelated to some observers. One example of this is the discussion of number systems in Chapter 2. Although much of this material has been presented by the time a student gets to the computer design level, many students do not fully understand the limitations of number systems, and the range of effect that information representation decisions can have. Number systems take on real meaning when they are directly applied to a specific problem. Floating point numbers lose some of their mystique when examples of differing mechanisms are presented.
The information in Chapter 2 also highlights one of the problems of this type of a text. Although efforts have been made to be thorough, each of the topics presented could be expanded to include an entire text by itself. For example, whole books deal solely with computer arithmetic. For that reason, the information in this text should be used in conjunction with information in the areas of design for testability, operating systems, computer system performance evaluation, and networking, to name just a few of the applicable fields.
Another topic that is missing from this text concerns the use of computer tools to aid in the design/evaluation process. A number of schematic capture and simulation tools are very helpful in performing some of the design tasks presented in the text. Indeed, these tools can reduce some of the drudgery associated with producing the final product, as well as helping in the design process itself. However, the designer or system architect must not become too dependent upon the tools. If this dependence is pronounced, then perceived limitations may be provided by the tools, not by the technique or digital system itself.
L. Howard Pollard