Preface | | xv | |
| Computer Abstractions and Technology |
| | 2 | (72) |
| | 3 | (7) |
| | 10 | (3) |
| | 13 | (13) |
| | 26 | (13) |
| | 39 | (2) |
| The Sea Change: The Switch from Uniprocessors to Multiprocessors |
| | 41 | (3) |
| Real Stuff: Manufacturing and Benchmarking the AMD Opteron X4 |
| | 44 | (7) |
| | 51 | (3) |
| | 54 | (1) |
| Historical Perspective and Further Reading |
| | 55 | (1) |
| | 56 | (18) |
| Instructions: Language of the Computer |
| | 74 | (148) |
| | 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) |
| | 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) |
| | 157 | (4) |
| Advanced Material: Compiling C and Interpreting Java |
| | 161 | (1) |
| Real Stuff: ARM Instructions |
| | 161 | (4) |
| Real Stuff: x86 Instructions |
| | 165 | (9) |
| | 174 | (2) |
| | 176 | (3) |
| Historical Perspective and Further Reading |
| | 179 | (1) |
| | 179 | (43) |
| | 222 | (76) |
| | 224 | (1) |
| | 224 | (6) |
| | 230 | (6) |
| | 236 | (6) |
| | 242 | (28) |
| Parallelism and Computer Arithmetic: Associativity |
| | 270 | (2) |
| Real Stuff: Floating Point in the x86 |
| | 272 | (3) |
| | 275 | (5) |
| | 280 | (3) |
| Historical Perspective and Further Reading |
| | 283 | (1) |
| | 283 | (15) |
| | 298 | (152) |
| | 300 | (3) |
| | 303 | (4) |
| | 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) |
| | 375 | (9) |
| | 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) |
| | 407 | (1) |
| | 408 | (1) |
| Historical Perspective and Further Reading |
| | 409 | (1) |
| | 409 | (41) |
| Large and Fast: Exploiting Memory Hierarchy |
| | 450 | (118) |
| | 452 | (5) |
| | 457 | (18) |
| Measuring and Improving Cache Performance |
| | 475 | (17) |
| | 492 | (26) |
| A Common Framework for Memory Hierarchies |
| | 518 | (7) |
| | 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) |
| | 543 | (4) |
| | 547 | (1) |
| Historical Perspective and Further Reading |
| | 548 | (1) |
| | 548 | (20) |
| Storage and Other I/O Topics |
| | 568 | (62) |
| | 570 | (3) |
| Dependability, Reliability, and Availability |
| | 573 | (2) |
| | 575 | (5) |
| | 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) |
| | 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) |
| | 613 | (4) |
| | 617 | (1) |
| Historical Perspective and Further Reading |
| | 618 | (1) |
| | 619 | (11) |
| Multicores, Multiprocessors, and Clusters |
| | 630 | (2) |
| | 632 | (2) |
| The Difficulty of Creating Parallel Processing Programs |
| | 634 | (4) |
| Shared Memory Multiprocessors |
| | 638 | (3) |
| Clusters and Other Message-Passing Multiprocessors |
| | 641 | (4) |
| | 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) |
| | 684 | (2) |
| | 686 | (2) |
| Historical Perspective and Further Reading |
| | 688 | (1) |
| | 688 | |
| |
| Graphics and Computing GPUs |
| | 2 | (1) |
| | 3 | (4) |
| | 7 | (5) |
| | 12 | (13) |
| Multithreaded Multiprocessor Architecture |
| | 25 | (11) |
| | 36 | (5) |
| Floating Point Arithmetic |
| | 41 | (5) |
| Real Stuff: The NVIDIA GeForce 8800 |
| | 46 | (9) |
| Real Stuff: Mapping Applications to GPUs |
| | 55 | (17) |
| | 72 | (4) |
| | 76 | (1) |
| Historical Perspective and Further Reading |
| | 77 | |
| Assemblers, Linkers, and the SPIM Simulator |
| | 2 | |
| | 3 | (7) |
| | 10 | (8) |
| | 18 | (1) |
| | 19 | (1) |
| | 20 | (2) |
| Procedure Call Convention |
| | 22 | (11) |
| Exceptions and Interrupts |
| | 33 | (5) |
| | 38 | (2) |
| | 40 | (5) |
| MIPS R2000 Assembly Language |
| | 45 | (36) |
| | 81 | (1) |
| | 82 | |
Index | | 1 | (1) |
| The Basics of Logic Design |
| | 2 | (1) |
| | 3 | (1) |
| Gates, Truth Tables, and Logic Equations |
| | 4 | (5) |
| | 9 | (11) |
| Using a Hardware Description Language |
| | 20 | (6) |
| Constructing a Basic Arithmetic Logic Unit |
| | 26 | (12) |
| Faster Addition: Carry Lookahead |
| | 38 | (10) |
| | 48 | (2) |
| Memory Elements: Flip-Flops, Latches, and Registers |
| | 50 | (8) |
| Memory Elements: SRAMs and DRAMs |
| | 58 | (9) |
| | 67 | (5) |
| | 72 | (6) |
| Field Programmable Devices |
| | 78 | (1) |
| | 79 | (1) |
| | 80 | |
| Mapping Control to Hardware |
| | 2 | (1) |
| | 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) |
| | 32 | (1) |
| | 33 | |
| A Survey of RISC Architectures for Desktop, Server, and Embedded Computers |
| | 2 | |
| | 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) |
| | 43 | |
Glossary | | 1 | (1) |
Further Reading | | 1 | |