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 | |