×

Computer organization, design, and architecture. 4th ed. (English) Zbl 1141.68009

Boca Raton, FL: Chapman & Hall/CRC (ISBN 978-0-8493-0416-3/hbk; 978-0-8493-0417-0/ebook). xx, 763 p. (2008).
This is the comprehensive (almost 800 pages) handbook on fundamentals on computer logic, organization and architecture. Since this is the fourth edition the evolution of the text is mirrored in the topics covered. They are a mixture of classic fundamentals and more advanced topics. The book consists of 15 chapters and 2 appendices. The introductory chapter gives a general description of a digital computer system and outlines the terminology. The historical evolution of computers and hardware technologies is presented and performance measurement is explained. Chapter 2 is devoted to number systems and coding. It presents exhaustively the computer arithmetic, number representations, and IEEE floating-point standard. Various binary codes encountered in digital systems are discussed. Chapter 3 deals with fundamentals of combinational logic circuits. After the fundamentals of Boolean algebra, minimization of Boolean functions is described with emphasis on the Quine-McCluskey procedure. Basic functional blocks (adders, decoders, multiplexers) and small scale integrated circuits implementing combinational circuits are described. Timing properties are discussed. The next chapter discusses synchronous sequential circuits. Several basic types of flip-flops are characterized. Later, timing characteristics are discussed, and the constructs taking them into account, like Master-Slave and edge-triggered flip-flops, are shown. The next topics covered are analysis of synchronous sequential circuits (the process of determining the functional relation that exists between outputs, inputs and internal states) and design of circuits (deriving a logic diagram from the specification of the circuit’s requested behavior). Registers, which are more complex structures consisting of flip-flops, are described. Register transfer schemes and languages are briefly introduced using generic notation. The last section is devoted to programmable logic arrays. Chapter 5 introduces the basic structures of computers. A simple educational CPU with programming in assembler is described.
Next, fundamentals of low-level programming including subroutines, macros, linkers and loaders are discussed. Chapter 6 concentrates on hardware design of a simple computer. This chapter illustrates how the instructions are executed by hardware blocks such as ALU, I/O and control unit. The emphasis is put on microprogramming as a means for control unit implementation. Chapter 7 is devoted to input/output subsystems. It describes techniques used for transfer of information between the processor and different peripherals. After the presentation of the general I/O model and function, the interrupts and direct memory access are emphasized. Examples from real-world processors include details of Motorola 68000, Intel 21285 and Control Data 6600 I/O schemes. Chapter 8 focuses on processor registers, instruction sets and addressing modes. RISC and CISC architectures are compared. Examples of microprocessor instruction sets include Intel microprocessors. Three subsequent chapters contain comprehensive discussions of computer blocks, namely memory and storage, ALU and control unit.
Chapter 9 presents the memory hierarchy composed of RAM, CAM, sequential-access and direct access memory blocks. The techniques of speed enhancement include caching, paging and virtual memory schemes. Address extension and translation schemes used for memory management in several systems are presented. Chapter 10 is devoted to Arithmetic-Logic Unit enhancements. In order to increase operation efficiency, two techniques are used – pipelining and parallelism achieved by using multiple arithmetic and logic units. Practical examples include several systems including Control Data 6600 and Cray X-MP/4. In Chapter 11 control units are discussed under the aspects of speed, cost, complexity and flexibility. Hardwired control units are compared with microprogrammed control units. Pipelining as a technique for enhancing the performance is extensively described and illustrtaed by examples of four machines using pipelines (Sun Niagara, Motorola MC88100/88200, MIPS R10000 and Intel Itanium). Chapter 12 introduces parallelism in computer systems architecture. The discussion is organized according to the well-known Flynn classification based on multiplicity of instructions and data streams. Data-flow and systolic architectures are also treated. As an example system CRAY XT4 is described.
The next chapter covers the concept of embedded architectures. Cost-effective mass-produced embedded processors have architectures enabling real-time operation. The specific features of suitable operating systems are discussed. Two microcontrollers (8051 and Advanced RISC machine DS89C450) are described. Chapter 14 is an elementary introduction to computer networks. Selected problems of distributed processing and grid computing for very large scale computation problems are given. Chapter 15 briefly discusses performance evaluation. The most common analytical techniques for measuring performance and benchmarking are discussed. Moreover some remarks related to program optimization techniques and code optimization are given.
The book contains many problem exercises after each chapter. However, answers are not included. Literature is quoted at the end of each chapter. Great experience of the author in teaching is reflected in the text. Moreover, direct hints related to ACM/IEEE Computer Engineering and Computer Science Curricula are given. I am convinced that the book will serve well as a handbook for courses on the fundamentals of computer architecture and organization.

MSC:

68Mxx Computer system organization
68M07 Mathematical problems of computer architecture
68-01 Introductory exposition (textbooks, tutorial papers, etc.) pertaining to computer science
94C10 Switching theory, application of Boolean algebra; Boolean functions (MSC2010)
Full Text: DOI