Front cover image for Computer organization and design : the hardware/software interface

Computer organization and design : the hardware/software interface

The performance of software systems is dramatically affected by how well software designers understand the basic hardware technologies at work in a system. Similarly, hardware designers must understand the far-reaching effects their design decisions have on software applications. For readers in either category, this classic introduction to the field provides a look deep into the computer. It demonstrates the relationships between the software and hardware and focuses on the foundational concepts that are the basis for current computer design
Print Book, English, ©1998
Morgan Kaufmann Publishers, San Francisco, Calif., ©1998
1 volume (various pagings) : illustrations (some color) ; 25 cm
9781558604285, 9781558604919, 1558604286, 155860491X
Computer Organization and Design, Second Edition Contents; Computer Organization and Design: The Hardware/Software Interface, Second Edition; by David A. Patterson and John L. Hennessy; Foreword; Worked Examples; Computer Organization and Design Online; Preface; 1 Computer Abstractions and Technology; 1.1 Introduction; 1.2 Below Your Program; 1.3 Under the Covers; 1.4 Integrated Circuits: Fueling Innovation; 1.5 Real Stuff: Manufacturing Pentium Chips; 1.6 Fallacies and Pitfalls; 1.8 Historical Perspective and Further Reading; 1.9 Key Terms; 1.10 Exercises; 2 The Role of Performance; 2.1 Introduction; 2.2 Measuring Performance; 2.3 Relating the Metrics; 2.4 Choosing Programs to Evaluate Performance; 2.5 Comparing and Summarizing Performance; 2.6 Real Stuff: The SPEC95 Benchmarks and Performance of Recent Processors; 2.7 Fallacies and Pitfalls; 2.8 Concluding Remarks; 2.9 Historical Perspective and Further Reading ; 2.10 Key Terms; 2.11 Exercises; 3 Instructions: Language of the Machine; 3.1 Introduction; 3.2 Operations of the Computer Hardware; 3.3 Operands of the Computer Hardware; 3.4 Representing Instructions in the Computer; 3.5 Instructions for Making Decisions; 3.6 Supporting Procedures in Computer Hardware; 3.7 Beyond Numbers; 3.8 Other Styles of MIPS Addressing; 3.9 Starting a Program; 3.10 An Example to Put It All Together; 3.11 Arrays versus Pointers; 3.12 Real Stuff: PowerPC and 80x86 Instructions; 3.13 Fallacies and Pitfalls; 3.14 Concluding Remarks; 3.15 Historical Perspective and Further Reading; 3.16 Key Terms; 3.17 Exercises; 4 Arithmetic for Computers; 4.1 Introduction; 4.2 Signed and Unsigned Numbers; 4.3 Addition and Subtraction; 4.4 Logical Operations; 4.5 Constructing an Arithmetic Logic Unit; 4.6 Multiplication; 4.7 Division; 4.8 Floating Point; 4.9 Real Stuff: Floating Point in the PowerPC and 80x86; 4.10 Fallacies and Pitfalls; 4.11 Concluding Remarks; 4.12 Historical Perspective and Further Reading; 4.13 Key Terms; 4.14 Exercises; 5 The Processor: Datapath and Control; 5.1 Introduction; 5.2 Building a Datapath; 5.3 A Simple Implementation Scheme; 5.4 A Multicycle Implementation; 5.5 Microprogramming: Simplifying Control Design; 5.6 Exceptions; 5.7 Real Stuff: The Pentium Pro Implementation; 5.8 Fallacies and Pitfalls; 5.9 Concluding Remarks; 5.10 Historical Perspective and Further Reading; 5.11 Key Terms; 5.12 Exercises; 6 Enhancing Performance with Pipelining; 6.1 an Overview of Pipelining; 6.2 A Pipelined Datapath; 6.3 Pipelined Control; 6.4 Data Hazards and Forwarding; 6.5 Data Hazards and Stalls; 6.6 Branch Hazards; 6.7 Exceptions; 6.8 Superscalar and Dynamic Pipelining; 6.9 Real Stuff: PowerPC 604 and Pentium Pro Pipelines; 6.10 Fallacies and Pitfalls; 6.11 Concluding Remarks; 6.12 Historical Perspective and Further Reading; 6.13 Key Terms; 6.14 Exercises; 7 Large and Fast: Exploiting Memory Hierarchy; 7.1 Introduction; 7.2 The Basics of Caches; 7.3 Measuring and Improving Cache Performance; 7.4 Virtual Memory; 7.5 A Common Framework for Memory Hierarchies; 7.6 Real Stuff: The Pentium Pro and PowerPC 604 Memory Hierarchies; 7.7 Fallacies and Pitfalls; 7.8 Concluding Remarks; 7.9 Historical Perspective and Further Reading; 7.10 Key Terms; 7.11 Exercises; 8 Interfacing Processors and Peripherals; 8.1 Introduction; 8.2 I/O Performance Measures: Some Examples from Disk and File Systems; 8.3 Types and Characteristics of I/O Devices; 8.4 Buses: Connecting I/O Devices to Processor and Memory; 8.5 Interfacing I/O Devices to the Memory, Processor, and Operating System; 8.6 Designing an I/O System; 8.7 Real Stuff: A Typical Desktop I/O System; 8.8 Fallacies and Pitfalls; 8.9 Concluding Remarks; 8.10 Historical Perspective and Further Reading; 8.11 Key Terms; 8.12 Exercises; 9 Multiprocessors; 9.1 Introduction; 9.2 Programming Multiprocessors; 9.3 Multiprocessors Connected by a Single Bus; 9.4 Multiprocessors Connected by a Network; 9.5 Clusters; 9.6 Network Topologies; 9.7 Real Stuff: Future Directions for Multiprocessors; 9.8 Fallacies and Pitfalls; 9.9 Concluding Remarks-Evolution versus Revolution in Computer Architecture; 9.10 Historical Perspective and Further Reading; 9.11 Key Terms; 9.12 Exercises; A Assemblers, Linkers, and the SPIM Simulator; A.1 Introduction; A.2 Assemblers; A.3 Linkers; A.4 Loading; A.5 Memory Usage; A.6 Procedure Call Convention; A.7 Exceptions and Interrupts; A.8 Input and Output; A.9 SPIM; A.10 MIPS R2000 Assembly Language; A.11 Concluding Remarks; A.12 Key Terms; A.13 Exercises; B The Basics of Logic Design; B.1 Introduction; B.2 Gates, Truth Tables, and Logic Equations; B.3 Combinational Logic; B.4 Clocks; B.5 Memory Elements; B.6 Finite State Machines; B.7 Timing Methodologies; B.8 Concluding Remarks; B.9 Key Terms; B.10 Exercises; C Mapping Control to Hardware; C.1 Introduction; C.2 Implementing Combinational Control Units; C.3 Implementing Finite State Machine Control; C.4 Implementing the Next-State Function with a Sequencer; C.5 Translating a Microprogram to Hardware; C.6 Concluding Remarks; C.7 Key Terms; C.8 Exercises; Glossary; Index
Authors' names reversed on cover.