本书系统讨论计算机硬件系统的设计原理和设计方法,包括总体设计(即计算机系统结构)和部件设计(即计算机组成)。主要特点如下:\r\n\r\n ** 突出设计方法。本书以讲述计算机系统各个主要部件的设计方法为主线,系统阐述计算机组成与系统结构的各个方面,包括寄存器级设计、处理机设计、数据路径设计、控制器设计和存储系统设计等。通过学习本书,读者能够系统学习计算机硬件的分析方法和设计方法。\r\n\r\n ** 注重理论联系实际。全书的关键章节都有实例,通过介绍目前通用的和先进的计算机系统来具体阐述计算机组成与系统结构的各个方面。\r\n\r\n ** 内容系统、新颖。全书主要以横向方式组织教学内容,深入浅出地全面介绍计算机组成与系统结构的基本原理,而不是从头到尾具体介绍某一台计算机系统。这样可以使读者建立起计算机硬件系统的完整概念。\r\n\r\n ** 本书多年来已为世界上多所知名大学采用,可作为计算机科学、计算机工程及电子工程等专业本科生或一年级研究生相应课程的教材。本书也非常适于自学。\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
Preface \r\n\r\n 1 Computing and Computers \r\n\r\n 1.1 The Nature of Computing \r\n\r\n 1.1.1 The Elements of Computers \r\n\r\n 1.1.2 l.l.2 of Computers \r\n\r\n 1.2 The Evolution Of Computers \r\n\r\n 1.2.l The Mechanical Era \r\n\r\n 1.2.2 Electronic \r\n\r\n l.2.3 The Later Generations \r\n\r\n 1.3 The VLSI Era \r\n\r\n 1.3.1 Integrated Circuits \r\n\r\n 1.3.2 Processor \r\n\r\n 1.3.3 System Architecture \r\n\r\n 1.4 Summary \r\n\r\n 1.5 Problems \r\n\r\n 1.6 References \r\n\r\n \r\n\r\n 2 Design Methodology \r\n\r\n 2.1 System Design \r\n\r\n 2.1.1 System Representation \r\n\r\n 2.1.2 Design Process \r\n\r\n 2.1.3 The Gate Level \r\n\r\n 2.2 The Register Level \r\n\r\n 2.2.1 Register-Level Components \r\n\r\n 2.2.2 Prog Logic Devices \r\n\r\n 2.2.3 Register-Level Design \r\n\r\n 2.3 The Processor Level \r\n\r\n 2.3.1 Processor-Level Components \r\n\r\n 2.3.2 Processor-Level Design \r\n\r\n 2.4 Summary \r\n\r\n 2.5 Problems \r\n\r\n 2.6 References \r\n\r\n \r\n\r\n 3 Processor Basics \r\n\r\n 3.1 CPU Organization \r\n\r\n 3.1.1 Fundamentals \r\n\r\n 3.1.2 Additional Features \r\n\r\n 3.2 Data Representation \r\n\r\n 3.2.1 Basic Formats \r\n\r\n 3.2.2 Fixed-Point Numbers \r\n\r\n 3.2.3 Floating-Point Numbers \r\n\r\n 3.3 Instruction Sets \r\n\r\n 3.3.1 Instruction Formats \r\n\r\n 3.3.2 Instruction Types \r\n\r\n 3.3.3 Programming Considerations \r\n\r\n 3.4 Summary \r\n\r\n 3.5 Problems \r\n\r\n 3.6 References \r\n\r\n \r\n\r\n 4 Datapath Design \r\n\r\n 4.1 Fixed-Point Arithmetic \r\n\r\n 4.1.1 Addition and Subtraction \r\n\r\n 4.l.2 Multiplication / \r\n\r\n 4.1.3 Division \r\n\r\n 4.2 Arithmetic-Logic Units \r\n\r\n 4.2.l Combinational ALUs \r\n\r\n 4.2.2 Sequential ALUs \r\n\r\n 4.3 Advanced Topics \r\n\r\n 4.3.1 Floating-Point Arithmetic \r\n\r\n 4.3.2 Pipeline Processing \r\n\r\n 4.4 Summary \r\n\r\n 4.5 Problems \r\n\r\n 4.6 References \r\n\r\n \r\n\r\n 5 Control Design \r\n\r\n 5.1 Basic Concepts \r\n\r\n 5.1.l Introduction \r\n\r\n 5.l.2 Hardwired Control \r\n\r\n 5.l.3 Design Examples \r\n\r\n 5.2 Microprogrammed Control \r\n\r\n 5.2.l Basic Concepts \r\n\r\n 5.2.2 Multiplier Control Unit \r\n\r\n 5.2.3 CPU Control Unit \r\n\r\n 5.3 Pipeline Control \r\n\r\n 5.3.l Instruction Pipelines \r\n\r\n 5.3.2 Pipeline Performance \r\n\r\n 5.3.3 Superscalar Processing \r\n\r\n 5.4 Summary \r\n\r\n 5.5 Problems \r\n\r\n 5.6 References \r\n\r\n \r\n\r\n 6 Memory Organization \r\n\r\n 6.1 Memory Technology \r\n\r\n 6.l.l Memory Device Characteristics \r\n\r\n 6.1.2 Random Access Memories \r\n\r\n 6.1.3 Serial-Access Memories \r\n\r\n 6.2 Memory Systems \r\n\r\n 6.2.1 Multilevel Memories \r\n\r\n 6.2.2 Address Translation \r\n\r\n 6.2.3 Memory Allocation \r\n\r\n 6.3 Caches \r\n\r\n 6.3.1 Main Features \r\n\r\n 6.3.2 Address Mapping \r\n\r\n 6.3.3 Structure versus Performance \r\n\r\n 6.4 Summary \r\n\r\n 6.5 Problems \r\n\r\n 6.6 References \r\n\r\n \r\n\r\n 7 System Organization \r\n\r\n 7.1 Communication Methods \r\n\r\n 7.1.1 Basic Concepts \r\n\r\n 7.l.2 Bus Control \r\n\r\n 7.2 IO And System Control \r\n\r\n 7.2.1 Programmed IO \r\n\r\n 7.2.2 DMA and Interrupts \r\n\r\n 7.2.3 IO Processors \r\n\r\n 7.2.4 Operating Systems \r\n\r\n 7.3 Parallel Processing \r\n\r\n 7.3.l Processor-Level Parallelism \r\n\r\n 7.3.2 Multiprocessors \r\n\r\n 7.3.3 Fault Tolerance \r\n\r\n 7.4 Summary \r\n\r\n 7.5 Problems \r\n\r\n 7.6 References \r\n\r\n Index \r\n
\r\n
影印版序
《计算机组成与结构》(Computer Architecture and Organization)一书由美国Michigan大学计算机科学与电子工程系教授JohnP.Hayes编写. 本书系统讲述了计算机硬件系统的设计原理和设计方法, 既包括总体设计, 即计算机系统结构, 也包括部件设计, 即计算机组成.
现在影印的《计算机组成与结构》是1998年出版的第三版. 在新版教材中删去了程序设计. 二进制和数字逻辑等内容, 因为这些内容在先修课中已经学过了. 与前一个版本相比本书从内容上进行了全面更新, 更加突出基本概念, 实用性更强, 覆盖面更宽.
本书可作为计算机科学专业. 计算机工程专业及电子工程等专业本科生的教材, 也可作为相关专业低年级研究生的教材. 另外, 本书也非常适合自学. 实际上, 世界上许多著名大学把本书作为教材已经很多年.
1. 突出介绍设计方法. 写作本书的宗旨之一是系统而全面地介绍计算机硬件产品的设计方法. 全书以讲述计算机系统各个主要部件的设计方法为主线, 系统阐述计算机组成与系统结构的各个方面, 包括寄存器级设计. 处理机级设计. 数据路径设计. 控制器设计和存储系统设计等. 通过学习本书, 读者能够系统学习计算机硬件的分析方法和设计方法. 另外, 书中还介绍了在计算机硬件设计过程中用到的先进器件和先进的设计工具, 如可编程逻辑器件(PLD)和计算机辅助设计(CAD)工具等.
2. 注重理论联系实际. 全书的关键章节都有几个实例, 通过介绍目前通用的和先进的计算机系统来具体阐述计算机组成与系统结构的各个方面. 例如, 在本书中比较详细地介绍了Intel公司的Pentium处理机. PowerPC处理机. MIPS RX000处理机. Motolora公司的680×0处理机等.
3. 内容系统. 新颖. 全书主要以横向方式组织教学内容, 力求深入浅出地全面介绍计算机组成与系统结构的基本原理, 而不只是从头到尾具体介绍某一台计算机系统. 读者通过学习本书, 能够比较全面地掌握计算机硬件系统的基本概念. 基本原理. 基本组成与结构. 主要的分析方法和设计方法等. 由于计算机系统是一个复杂的系统, 读者通过学习“计算机组成与结构”这本书能够建立起计算机硬件系统的完整概念. 另外, 全书层次清晰. 语言流畅. 图表规范, 只要具备程序设计和数字逻辑电路等的基础知识, 完全可以通过自学来学习本书.
每章后面都有结论. 有大量很好的练习题及许多参考文献. 在结论中, 给出本章的重点. 采用的主要设计方法和使用的设计工具等. 读者通过做练习题和阅读相关参考文献, 能够更加深入地掌握本书的内容.
汤志忠教授
清华大学计算机科学与技术系
2001年7月
JOHN P. HAYES is a professor in the electrical engineering and computer science department at the University of Michigan, where he was the founding director of the Advanced Computer Architecture Laboratory. He teaches and conducts research in the areas of computer architecture; computer-aided design, verification, and testing; VLSI design; and fault-tolerant systems. Dr. Hayes is the author of two patents, more than 150 technical papers, and five books, including Layout Minimization for CMOS Cel
This book is about the design of computers; it covers both their overall design, or architecture, and their internal details, or organization. It aims to provide a comprehensive and self-contained view of computer design at an introductory level, primarily from a hardware viewpoint. The third edition of Computer Architecture and Organization is intended as a text for computer science, computer engineering, and electrical engineering courses at the undergraduate or beginning graduate levels; it should also be useful for self-study. This text assumes little in the way of prerequisites beyond some familiarity with computer programming, binary numbers, and digital logic. Like the previous editions, the book focuses on basic principles but has been thoroughly updated and has substantially more coverage of performance-related issues.
The book is divided into seven chapters. Chapter l discusses the nature and limitations of computation. This chapter surveys the historical evolution of computer design to introduce and motivate the key ideas encountered later. Chapter 2 deals with computer design methodology and examines the two major computer design levels, the register (or register transfer) and processor levels, in detail. It also reviews gate-level logic design and discusses computer-aided design (CAD) and performance evaluation methods. Chapter 3 describes the central processing unit(CPU), or microprocessor that lies at the heart of every computer, focusing on instruction set design and data representation. The next two chapters address CPU design issues: Chapter 4 covers the data-processing part, or datapath, of a processor, while Chapter 5 deals with control-unit design. The principles of arithmeticlogic unit (ALU) design for both fixed-point and floating-point operations are covered in Chapter 4. Both hardwired and microprogrammed control are examined in Chapter 5, along with the design of pipelined and superscalar processors. Chapter 6 deals with a computer's memory subsystem; the chapter discusses the principal memory technologies and their characteristics from a hierarchical viewpoint, with emphasis on cache memories. Finally, Chapter 7 addresses the overall organization of a computer system, including inter- and intrasystem communication, input-output (IO) systems, and parallel processing to achieve very high performance and reliability. Various representative computer systems, such as von Neumann's classic IAS computer, the ARM RISC microprocessor, the Intel Pentium, the Motorola PowerPC, the MIPS RXOOO, and the Tandem NonStop fault-tolerant multiprocessor, appear as examples throughout the book.
The book has been in use for many years at universities around the world. It contains more than sufficient material for a typical one-semester (15 week) course, allowing the instructor some leeway in choosing the topics to emphasize. Much of the background material in Chapter l and the first part of Chapter 2 can be left as a reading assignment, or omitted if the students are suitably prepared. The more advanced material in Chapter 7 can be covered briefly or skipped if desired without loss of continuity. The Instructor's Manual contains some representative course outlines.
This edition updates the contents of the previous edition and responds to the suggestions of its users while retaining the book's time-proven emphasis on basic concepts. The third edition is somewhat shorter than its predecessors, and the material is more accessible to readers who are less familiar with computers. Every section has been rewritten to reflect the dramatic changes that have occurred in the computer industry over the last decade. The main structural changes are the reorganization of the two old chapters on processor design and control design into three chapters: the new Chapters 3, 4, and 5; and the consolidation of the two old chapters on system organization and parallel processing in the new Chapter 7. The treatment of performance-related topics such as pipeline control, cache design, and superscalar architecture has been expanded. Topics that receive less space in this edition include gate-level design, microprogramming, operating systems, and vector processing. The third edition also includes many new examples (case studies) and end-of-chapter problems. There are now more than 300 problems, about 80 percent of which are new to this edition. Course instructors can obtain an Instructor's Manual, which contains solutions to all the problems, directly from the publisher.
The specific changes made in the third edition are as follows: The historical material in Chapter l has been streamlined and brought up to date. Gate-level design has been de-emphasized in Chapter 2, while the discussion of performance evaluation has been expanded. A new section on programmable logic devices (PLDs) has been added, and the role of computer-aided design (CAD) has been stressed. The old third chapter (on processor design) has been split into Chapter 3, "Processor Basics," and Chapter 4, "Datapath Design." Chapter 3 contains an expanded treatment of RISC and CISC CPUs and their instruction sets. It introduces the ARM and MIPS RX000 microprocessor series as major examples; the Motorola 680X0 series continues to be used as an example, however. The material on computer arithmetic and ALU design now appears in Chapter 4. The old chapter on control design, which is now Chapter 5, has been completely revised with a more practical treatment of hardwired control and a briefer treatment of microprogramming. A new section on pipeline control includes some material from the old Chapter 7, as well as new material on superscalar processing. Chapter 6 presents an updated treatment of the old fifth chapter on memory organization. Chapter 6 continues to present a systematic, hierarchical view of computer memories but has a greatly expanded treatment of cache memories. Chapter 7, "System Organization," merges material from the old sixth and seventh chapters. The sections on operating systems and parallel processing have been shortened and modernized.
The material for this book has been developed primarily for courses on computer architecture and organization that I have taught over the years, initially at the University of Southern California and later at the University of Michigan. I am grateful to my colleagues and students at these and other schools for their many helpful comments and suggestions.
As always, I owe a special thanks to my wife Terrie for proofreading assistance, as well as her never-failing support and love.
John P. Hayes