Computer Architecture
A Quantitative Approach, Second Edition
- 1st Edition - November 2, 1995
- Latest edition
- Authors: John L. Hennessy, David A. Patterson
- Language: English
"Once in a great while, a landmark computer-science book is published. Computer Architecture: A Quantitative Approach, Second Edition, is such a book. In an era of fluff computer… Read more
Purchase options
"Once in a great while, a landmark computer-science book is published. Computer Architecture: A Quantitative Approach, Second Edition, is such a book. In an era of fluff computer books that are, quite properly, remaindered within weeks of publication, this book will stand the test of time, becoming lovingly dog-eared in the hands of anyone who designs computers or has concerns about the performance of computer programs.
" - Robert Bernecky, Dr. Dobb's Journal, April 1998Computer Architecture: A Quantitative Approach was the first book to focus on computer architecture as a modern science. Its publication in 1990 inspired a new approach to studying and understanding computer design. Now, the second edition explores the next generation of architectures and design techniques with view to the future.
A basis for modern computer architectureAs the authors explain in their preface to the Second Edition, computer architecture itself has undergone significant change since 1990. Concentrating on currently predominant and emerging commercial systems, the Hennessy and Patterson have prepared entirely new chapters covering additional advanced topics:* Advanced Pipelining: A new chapter emphasizes superscalar and multiple issues.* Networks: A new chapter examines in depth the design issues for small and large shared-memory multiprocessors.* Storage Systems: Expanded presentation includes coverage of I/O performance measures.* Memory: Expanded coverage of caches and memory-hierarchy design addresses contemporary design issues.* Examples and Exercises: Completely revised on current architectures such as MIPS R4000, Intel 80x86 and Pentium, PowerPC, and HP PA-RISC.
Distinctive presentationThis book continues the style of the first edition, with revised sections on Fallacies and Pitfalls, Putting It All Together and Historical Perspective, and contains entirely new sections on Crosscutting Issues. The focus on fundamental techniques for designing real machines and the attention to maximizing cost/performance are crucial to both students and working professionals. Anyone involved in building computers, from palmtops to supercomputers, will profit from the expertise offered by Hennessy and Patterson.
- ForewordPrefaceAcknowledgments1 Fundamentals of Computer Design
- 1.1 Introduction1.2 The Task of a Computer Designer1.3 Technology and Computer Usage Trends1.4 Cost and Trends in Cost1.5 Measuring and Reporting Performance1.6 Quantitative Principles of Computer Design1.7 Putting It All Together: The Concept of Memory Hierarchy1.8 Fallacies and Pitfalls1.9 Concluding Remarks1.10 Historical Perspective and ReferencesExercises
- 2.1 Introduction2.2 Classifying Instruction Set Architectures2.3 Memory Addressing2.4 Operations in the Instruction Set2.5 Type and Size of Operands2.6 Encoding and Instruction Set2.7 Crosscutting Issues: The Role of Compilers2.8 Putting It All together: The DLX Architecture2.9 Fallacies and Pitfalls2.10 Concluding RemarksHistorical Perspective and ReferencesExercises
- 3.1 What is Pipelining?3.2 The Basic Pipeline for DLX3.3 The Major Hurdle of Pipelining-Pipeline Hazards3.4 Data Hazards3.5 Control Hazards3.6 What Makes Pipelining Hard to Implement?3.7 Extending the DLX Pipeline to Handle Multicycle Operations3.8 Crosscutting Issues: Instruction Set Design and Pipelining3.9 Putting It All Together: The MIPS R4000 Pipeline3.10 Fallacies and Pitfalls3.11 Concluding Remarks3.12 Historical Perspective and ReferencesExercises
- 4.1 Instruction-Level Parallelism: Concepts and Challenges4.2 Overcoming Data Hazards with Dynamic Scheduling4.3 Reducing Branch Penalties with Dynamic Hardware Prediction4.4 Taking Advantage of More ILP with Multiple Issue4.5 Compiler Support for Exploiting ILP4.6 Hardware Support for Extracting More Parallelism4.7 Studies of ILP4.8 Putting It All Together: The PowerPC 6204.9 Fallacies and Pitfalls4.10 Concluding Remarks4. 11 Historical Perspective and ReferencesExercises
- 5.1 Introduction5.2 The ABCs of Caches5.3 Reducing Cache Misses5.4 Reducing Cache Miss Penalty5.5 Reducing Hit Time5.6 Main Memory5.7 Virtual Memory5.8 Protection and Examples of Virtual Memory5.9 Crosscutting Issues in the Design of Memory Hierarchies5.10 Putting It All Together: The PowerPC 6205.11 Fallacies and Pitfalls5.12 Concluding Remarks5.13 Historical Perspective and ReferencesExercises
- 6.1 Introduction6.2 Types of Storage Devices6.3 Buses-Connecting I/O Devices to CPU/Memory6.4 I/O Performance Measures6.5 Reliability, Availability, and RAID6.6 Crosscutting Issues: Interfacing to an Operating System6.7 Designing an I/O System6.8 Putting It All Together: UNIX File System Performance6.9 Fallacies and Pitfalls6.10 Concluding Remarks6.11 Historical Perspective and ReferencesExercises
- 7.1 Introduction7.2 A Simple Network7.3 Connecting the Interconnection Network to the Computer7.4 Interconnection network Media7.5 Connecting More Than Two Computers7.6 Practical Issues for Commercial Interconnection Networks7.7 Examples of Interconnection Networks7.9 Internetworking7.10 Putting it All Together: An ATM Network of Workstations7.11 Fallacies and Pitfalls7.12 Concluding Remarks7.13 Historical Perspective and ReferencesExercises
- 8.1 Introduction8.2 Characteristics of Application Domains8.3 Centralized Shared-Memory Architectures8.4 Distributed Shared-Memory Architectures8.5 Synchronization8.6 Models of Memory Consistency8.7 Crosscutting Issues8.8 Putting It All Together: The SGI Challenge Multiprocessor8.9 Fallacies and Pitfalls8.10 Concluding Remarks8.11 Historical Perspective and ReferencesExercises
- A.1 IntroductionA.2 Basic Techniques of Integer ArithmeticA.3 Floating PointA.4 Floating-Point MultiplicationA.5 Floating Point-AdditionA.6 Division and RemainderA.7 More on Floating-Point ArithmeticA.8 Speeding Up integer AdditionA.9 Speeding Up integer Multiplication and DivisionA.10 Putting It All togetherA.11 Fallacies and PitfallsA.12 Historical Perspective and ReferencesExercises
- B.1 Why Vector Processors?B.2 Basic Vector ArchitectureB.3 Two Real-World Issues: Vector Length and StrideB.4 Effectiveness of Compiler VectorizationB.5 Enhancing Vector PerformanceB.6 Putting It All Together: Performance of Vector ProcessorsB.7 Fallacies and PitfallsB.8 Concluding RemarksB.9 Historical Perspective and ReferencesExercises
- C.1 IntroductionC.2 Addressing Modes and Instruction FormatsC.3 Instructions: The DLX SubsetC.4 Instructions: Common Extensions to DLXC.5 Instructions Unique to MIPSC.6 Instructions Unique to SPARCC.7 Instructions Unique to PowerPCC.8 Instructions Unique to PA-RISCC.9 Concluding RemarksC.10 References
- D.1 IntroductionD.2 80x86 Registers and Data Addressing ModesD.3 80x86 Integer OperationsD.4 80x86 Floating-Point OperationsD.5 80x86 Instruction EncodingD.6 Putting It All together: Measurements of Instruction Set UsageD.7 Concluding RemarksD.8 Historical Perspective and References
- E.1 Implementation Issues for the Snooping Coherence ProtocolE.2 Implementation Issues in the Distributed Directory Protocol
- Edition: 1
- Latest edition
- Published: November 2, 1995
- Language: English
JH
John L. Hennessy
DP