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

Computer organization and design : the hardware/software interface

David A. Patterson (Author), John L. Hennessy (Author)
The classic textbook for computer systems analysis and design, 'Computer Organization and Design', has been thoroughly updated to provide a new focus on the revolutionary change taking place in industry today: the switch from uniprocessor to multicore microprocessors
Print Book, English, ©2009
Fourth edition View all formats and editions
Morgan Kaufmann Publishers, Burlington, MA, ©2009
Textbooks
1 volume (various pagings) : illustrations ; 24 cm + 1 CD-ROM (4 3/4 in.)
9780123744937, 9780080877594, 0123744938, 0080877591
232002245
Prefacexv
Computer Abstractions and Technology
2(72)
Introduction
3(7)
Below Your Program
10(3)
Under the Covers
13(13)
Performance
26(13)
The Power Wall
39(2)
The Sea Change: The Switch from Uniprocessors to Multiprocessors
41(3)
Real Stuff: Manufacturing and Benchmarking the AMD Opteron X4
44(7)
Fallacies and Pitfalls
51(3)
Concluding Remarks
54(1)
Historical Perspective and Further Reading
55(1)
Exercises
56(18)
Instructions: Language of the Computer
74(148)
Introduction
76(1)
Operations of the Computer Hardware
77(3)
Operands of the Computer Hardware
80(7)
Signed and Unsigned Numbers
87(7)
Representing Instructions in the Computer
94(8)
Logical Operations
102(3)
Instructions for Making Decisions
105(7)
Supporting Procedures in Computer Hardware
112(10)
Communicating with People
122(6)
MIPS Addressing for 32-Bit Immediates and Addresses
128(9)
Parallelism and Instructions: Synchronization
137(2)
Translating and Starting a Program
139(10)
A C Sort Example to Put It All Together
149(8)
Arrays versus Pointers
157(4)
Advanced Material: Compiling C and Interpreting Java
161(1)
Real Stuff: ARM Instructions
161(4)
Real Stuff: x86 Instructions
165(9)
Fallacies and Pitfalls
174(2)
Concluding Remarks
176(3)
Historical Perspective and Further Reading
179(1)
Exercises
179(43)
Arithmetic for Computers
222(76)
Introduction
224(1)
Addition and Subtraction
224(6)
Multiplication
230(6)
Division
236(6)
Floating Point
242(28)
Parallelism and Computer Arithmetic: Associativity
270(2)
Real Stuff: Floating Point in the x86
272(3)
Fallacies and Pitfalls
275(5)
Concluding Remarks
280(3)
Historical Perspective and Further Reading
283(1)
Exercises
283(15)
The Processor
298(152)
Introduction
300(3)
Logic Design Conventions
303(4)
Building a Datapath
307(9)
A Simple Implementation Scheme
316(14)
An Overview of Pipelining
330(14)
Pipelined Datapath and Control
344(19)
Data Hazards: Forwarding versus Stalling
363(12)
Control Hazards
375(9)
Exceptions
384(7)
Parallelism and Advanced Instruction-Level Parallelism
391(13)
Real Stuff: the AMD Opteron X4 (Barcelona) Pipeline
404(2)
Advanced Topic: an Introduction to Digital Design Using a Hardware Design Language to Describe and Model a Pipeline and More Pipelining Illustrations
406(1)
Fallacies and Pitfalls
407(1)
Concluding Remarks
408(1)
Historical Perspective and Further Reading
409(1)
Exercises
409(41)
Large and Fast: Exploiting Memory Hierarchy
450(118)
Introduction
452(5)
The Basics of Caches
457(18)
Measuring and Improving Cache Performance
475(17)
Virtual Memory
492(26)
A Common Framework for Memory Hierarchies
518(7)
Virtual Machines
525(4)
Using a Finite-State Machine to Control a Simple Cache
529(5)
Parallelism and Memory Hierarchies: Cache Coherence
534(4)
Advanced Material: Implementing Cache Controllers
538(1)
Real Stuff: the AMD Opteron X4 (Barcelona) and Intel Nehalem Memory Hierarchies
539(4)
Fallacies and Pitfalls
543(4)
Concluding Remarks
547(1)
Historical Perspective and Further Reading
548(1)
Exercises
548(20)
Storage and Other I/O Topics
568(62)
Introduction
570(3)
Dependability, Reliability, and Availability
573(2)
Disk Storage
575(5)
Flash Storage
580(2)
Connecting Processors, Memory, and I/O Devices
582(4)
Interfacing I/O Devices to the Processor, Memory, and Operating System
586(10)
I/O Performance Measures: Examples from Disk and File Systems
596(2)
Designing an I/O System
598(1)
Parallelism and I/O: Redundant Arrays of Inexpensive Disks
599(7)
Real Stuff: Sun Fire x4150 Server
606(6)
Advanced Topics: Networks
612(1)
Fallacies and Pitfalls
613(4)
Concluding Remarks
617(1)
Historical Perspective and Further Reading
618(1)
Exercises
619(11)
Multicores, Multiprocessors, and Clusters
630(2)
Introduction
632(2)
The Difficulty of Creating Parallel Processing Programs
634(4)
Shared Memory Multiprocessors
638(3)
Clusters and Other Message-Passing Multiprocessors
641(4)
Hardware Multithreading
645(3)
SISD, MIMD, SIMD, SPMD, and Vector
648(6)
Introduction to Graphics Processing Units
654(6)
Introduction to Multiprocessor Network Topologies
660(4)
Multiprocessor Benchmarks
664(3)
Roofline: A Simple Performance Model
667(8)
Real Stuff: Benchmarking Four Multicores Using the Roofline Model
675(9)
Fallacies and Pitfalls
684(2)
Concluding Remarks
686(2)
Historical Perspective and Further Reading
688(1)
Exercises
688
Appendices
Graphics and Computing GPUs
2(1)
Introduction
3(4)
GPU System Architectures
7(5)
Programming GPUs
12(13)
Multithreaded Multiprocessor Architecture
25(11)
Parallel Memory System
36(5)
Floating Point Arithmetic
41(5)
Real Stuff: The NVIDIA GeForce 8800
46(9)
Real Stuff: Mapping Applications to GPUs
55(17)
Fallacies and Pitfalls
72(4)
Concluding Remarks
76(1)
Historical Perspective and Further Reading
77
Assemblers, Linkers, and the SPIM Simulator
2
Introduction
3(7)
Assemblers
10(8)
Linkers
18(1)
Loading
19(1)
Memory Usage
20(2)
Procedure Call Convention
22(11)
Exceptions and Interrupts
33(5)
Input and Output
38(2)
SPIM
40(5)
MIPS R2000 Assembly Language
45(36)
Concluding Remarks
81(1)
Exercises
82
Index1(1)
The Basics of Logic Design
2(1)
Introduction
3(1)
Gates, Truth Tables, and Logic Equations
4(5)
Combinational Logic
9(11)
Using a Hardware Description Language
20(6)
Constructing a Basic Arithmetic Logic Unit
26(12)
Faster Addition: Carry Lookahead
38(10)
Clocks
48(2)
Memory Elements: Flip-Flops, Latches, and Registers
50(8)
Memory Elements: SRAMs and DRAMs
58(9)
Finite-State Machines
67(5)
Timing Methodologies
72(6)
Field Programmable Devices
78(1)
Concluding Remarks
79(1)
Exercises
80
Mapping Control to Hardware
2(1)
Introduction
3(1)
Implementing Combinational Control Units
4(4)
Implementing Finite-State Machine Control
8(14)
Implementing the Next-State Function with a Sequencer
22(6)
Translating a Microprogram to Hardware
28(4)
Concluding Remarks
32(1)
Exercises
33
A Survey of RISC Architectures for Desktop, Server, and Embedded Computers
2
Introduction
3(2)
Addressing Modes and Instruction Formats
5(4)
Instructions: The MIPS Core Subset
9(7)
Instructions: Multimedia Extensions of the Desktop/Server RISCs
16(3)
Instructions: Digital Signal-Processing Extensions of the Embedded RISCs
19(1)
Instructions: Common Extensions to MIPS Core
20(5)
Instructions Unique to MIPS-64
25(2)
Instructions Unique to Alpha
27(2)
Instructions Unique to SPARC v.9
29(3)
Instructions Unique to PowerPC
32(2)
Instructions Unique to PA-RISC 2.0
34(2)
Instructions Unique to ARM
36(2)
Instructions Unique to Thumb
38(1)
Instructions Unique to SuperH
39(1)
Instructions Unique to M32R
40(1)
Instructions Unique to MIPS-16
40(3)
Concluding Remarks
43
Glossary1(1)
Further Reading1