The Scope of the Book
We wrote this book with the intention that it would be used in a firstª²level course on computer organization in computer science and computer engineering curricula. The book is selfª²contained, so that reading it requires only a basic knowledge of computer programming in a highª²level language. The breadth of material has been chosen to provide fundamental knowledge of computer information and basic digital logic. The depth of material has been chosen to provide students with a solid foundation for their future studies and a career as a computer professional.
One of the difficulties of writing a textbook on computer organization is the lack of universally accepted definitions for the terms "computer organization" and "computer architecture". Usually the two terms are distinguished conceptually in the research literature as follows: "computer architecture" refers to those attributes of a system visible to an assemblyª²language programmer. "Computer organization" refers to the functional units and their interconnections that realize the architecture. We prefer this understanding and consider "computer organization" as a lowerª²level hardwareª²oriented course, and "computer architecture" as a higherª²level systemª²oriented course. On the other hand, we understand that the disciplines of computer organization and computer architecture are interrelated so closely that it is difficult to clearly distinguish between them. We would rather treat the "hardware" in computer organization as a "logical" entity rather than a "physical" entity.
From the system point of view, a computer system can be conceived as an abstraction structured as a hierarchy of levels, and this conception has a major impact on the understanding of computer architecture and organization. Some textbooks about computer organization explicitly recognize the necessity of presenting the teaching material according to this hierarchy of levels, either topª²down or bottomª²up. This approach is especially suitable for teaching introductory courses to students with minimum background, i.e., students with no prior exposure of such a concept. However, most computer organization textbooks present the material according to the major functional blocks of a computer (CPU, memory, I/O, control unit, etc.) while still keeping in mind the overall hierarchical structure of a computer system. This latter approach has the advantage of concentrating on the theory and design of separate functional blocks of a computer and avoids creating too broad a scope for the course. Our book chooses the second approach and introduces the hierarchical structure of a computer system in Chapter 1. Thus students will know how to relate the contents of separate chapters to the overall structure of a computer.
COMPUTER ORGANIZATION£º PRINCIPLES£¬ANALYSIS£¬AND DESIGN Preface We assume a hierarchical model of six levels from top to bottom ¡ª higherª²level language, operating system, assembly language, conventional machine (or register transfer), microprogramming, and digital logic. If we attempts to differentiate between architecture and organization, then the higherª²level language and operating system levels are most suitably addressed in "architecture", and the conventional machine, microprogramming, and digitalª²logic levels are better addressed in "organization", while the assembly language level lies probably between the two.
With this understanding, we consider the following topics at the lower levels of the hierarchical model, all belonging to the scope of the book:
¤r Assembly language level(The lower end of this level deals with machine instructions and data as binary information and various operations on them):
ª²Machineª²level representation of data and information (Chapter 2).
ª²Complex arithmetic operations (Chapter 6).
ª²Instruction set architecture (Chapter 7).
¤r Conventional machine or registerª²transfer level (assembly level machine organization and functional organization, in which computer hardware is considered to be information storage and processing units interconnected in a datapath for the transfer of data and control information):
ª²Arithmeticª²logic unit (Chapter 5).
ª²Central processing unit (Chapter 8).
ª²Control unit (Chapter 9, part of hardwired control).
ª²Memory system organization (Chapter 10, primary memory).
ª²Interfacing and communication (Chapter 11, input/output).
¤r Microprogramming level (Chapter 9, part of microprogrammed control).
¤r Digital logic level (digital logic and digital systems, in which the aboveª²listed functional units are considered to be logic circuits and finiteª²state machines constructed from basic building blocks):
ª²Combinational logic (Chapter 3).
ª²Sequential logic (Chapter 4).
¤r Advanced computer organization (Chapter 12, pipelining).
The detailed information about the coverage of the book can be found in the last section entitled "summary" of each chapter.
Use of the Book
This book has resulted from our experiences in teaching a Computer Science course entitled "Introduction to Computer Organization". Generally speaking, a Computer Science curriculum such as ours does not have a special course on digital logic, but it may have a course entitled "Computer Systems". Such a course could include some concept of digital logic, but mostly teach assembly language programming or, at least, the basic concept of assembly languages as an important layer of a computer system. Therefore, this book does not advocate a specific assembly language for students to practice programming. However, we do include a chapter entitled "Instruction Set Architecture" which focuses on topics closely related to Computer Organization (such as instruction format, addressing modes, and instruction set design). Thus, we have deemphasized assembly languages and emphasized digital logic in this book. Furthermore, we treat the material on digital logic from the practical point of view, emphasizing its fundamental importance to the design of computer circuits and modules. Students must learn the analysis and design of these circuits and modules in the two introductory chapters on digital logic (Chapters 3 and 4). If condition (resources and class schedule) permits, they can even implement and test these circuits and modules using simulation software. This handsª²on experience would give students a sound basis for learning the material in later chapters related to the design of computers at the level of functional blocks.
This book¡äs subtitle emphasizes analysis and design in computer organization. However, we do not attempt to teach students to design a practical computer as a commercial product. Our goal is to strengthen the students¡ä understanding of the computer organization by way of analysis and design according to the methods taught in this book. Therefore, this book does not emphasize case studies of commerciallyª²available processors, because their complexity would prevent students from learning the basicª²level design methods. Our intend is to teach students the concepts and techniques of designing modern computers. We use a simplified version of a practical processor as an example, on which we can show the design methods of its datapath and control unit from the upper level of instruction set down to the basic level of logic circuits or microprogramming. In "learning by doing", students can not only design a simple processor, but also implement a "real" working model on a PC using an appropriate simulation software. Our teaching experience has demonstrated the effectiveness of this teaching method for Computer Science students, who can learn the inner workings of a modern computer without learning additional hardware courses.
To use this book in the different curricula of different majors, we make the following recommendations for teaching a oneª²semester course on computer organization:
For students who have not taken a course on digital logic:
A. All chapters except Chapter 12 can be covered, but some sections teaching special topics could be skipped ¡ª the dynamic characteristics of logic circuits (Section 3.5), the design of finiteª²state machine (Section 4.6), doubleª²precision arithmetic (Sections 6.2 and 6.4), CPU bitª²slice devices (Section 8.5), error detection and correction codes (Section 11.6.2), and bus standards except PCI (Sections 11.7.2 to 11.7.5).
B. To accommodate the basic contents of the book in a semester, each chapter can be taught with emphasis on selected basic topics such as the following: two¡äs complement representation and operations (Sections 2.3.2 and 2.4.2), combinational circuit design and implementation on adders and MSIs (Sections 3.13.4 and 3.6), clocked sequential circuit design and implementation on counters and MSIs (Sections 4.24.5), ALU design and implementation (Sections 5.2, 5.3, 5.4.1, 5.4.2 and 5.5.2), floatingª²point operations (Section 6.5), instruction format and addressing modes (Sections 7.1 and 7.2), CPU based on accumulator and generalª²purpose registers (Sections 8.3.1 and 8.4), the design of the operation chart and the microprogram flowchart according to the basic instruction cycles (Sections 9.4.19.4.3 and 9.5.39.5.4), memory hierarchy and main memory (Sections 10.1 and 10.2), and, finally, I/O accessing and I/O interfaces (Sections 11.311.5).
For students who have taken a course on digital logic:
C. Students can be taught (or asked to read on their own) the design examples from Chapters 3 and 4 (Sections 3.33.5 and Sections 4.34.5) to review selected topics. This gives an possibility to teach the optional or advanced topics that are listed above in A, as well as pipelining in Chapter 12.
D. The teaching of the regular topics listed above in B can be taught with more emphasis on design and implementation down to the level of logic circuits. If possible, laboratory activities should be incorporated.
Acknowledgments
We wish to express our thanks to many people who have provided encouragement, support, and help during the writing of this book. We would especially like to thank Dr. Christopher W. Hatfield for editing the text of the entire manuscript and consistently enhancing the clarity of the presentation of the material. We gratefully acknowledge Tsinghua University Press with its chief editors and acquisitions editor for their foresight and vision to initiate and guide the publishing of this book.
We wish to thank Dr. Henderson Yeung, the chair of Department of Computer Science at California State University, Fresno, U.S.A., for his constant support to the writing of this book. We also thank our student populations who provided important proving and enhancing grounds for the material of this book during many years of classª²testing of its earlier versions.
Since we have been busy in our regular teaching activities and had limited time in writing the book, this first edition of the book undoubtedly contains drawbacks and errors. Any comments and report of errors will be appreciated.
