1 Computer Abstractions and Technology
1.1 Introduction
1.2 Below Your Program
1.3 Under the Covers
1.4 Performance
1.5 The Power Wall
1.6 The Sea Change: The Switch from Uniprocessors to
Multiprocessors
1.7 Real Stuff. Ma:nufacturing and Benchmarking the AMD Opteron
X4
1.8 Fallacies and Pitfalls
1.9 Concluding Remarks
1.10 Historical Perspective and Further Reading
1.11 Exercises
2 Instructions:l.anguage of the Computer
2.1 Introduction
2.2 0perations of the Computer Hardware
2.3 0perands of the Computer Hardware
2.4 Signed and Unsigned Numbers
2.5 Representing Instructions in the Computer
2.6 Logical Operations
2.7 Instructions for Making Decisions
2.8 Supporting Procedures in Computer Hardware
2.9 Communicating with People
2.10 MIPS Addressing for 32-Bit Immediates and Addresses
2.11 Parallelism and Instructions: Synchronization
2.12 Translating and Starting a Program
2.13 A C Sort Example to Put It All Together2.14 Arrays versus
Pointers
2.15 Advanced Material: Compiling C and Interpreting Java
2.16 Real Stuff:ARM Instructions
2.17 Real Stuff: x86 Instructions
2.18 Fallacies and Pitfalls
2.19 Concluding Remarks
2.20 Historical Perspective and Further Reading
2.21 Exerases
3 Arithmetic for Computers
3.1 Introduction
3.2 Addition and Subtraction
3.3 Multiplication
3.4 Division
3.5 Floating Point
3.6 Parallelism and Computer Arithmetic: Associativity
3.7 Real Stuff: Floating Point in the x86
3.8 Fallacies and Pitfalls
3.9 Concluding Remarks
3.10 Historical Perspective and Further Reading
3.11 Exerases
4 The Processor
4.1 Introduction
4.2 Logic Design Conventions
4.3 Building a Datapath
4.4 A Simple Implementation Scheme
4.5 An Overview of Pipelining
4.6 Pipelined Datapath and Control
4.7 Data Hazards: Forwarding versus Stalling
4.8 Control Hazards
4.9 Exceptions
4.10 Parallelism and Advanced Instruction-Level Parallelism
4.11 Real Stuff the AMD Opteron X4 (Barcelona) Pipeline
4.12 Advanced Topic: an Introduction to Digital Design Using a
Hardware Design Language to Describe and Model a Pipeline and More
Pipelining Illustrations
4.13 Fallciaes and Pitfalls
4.14 Concluding Remarks
4.15 Historical Perspective and Further Reading
4.16 Exerases
5 Large and Fast: Exploiting Memory Hierarchy
6 Storage and Other I/O Topics
7 Multicores, Multiprocessors, and Clusters
A Graphics and Computing GPUs A-2
B Assemblers, Linkers, and the SPIM Simulator B-2
C The Basics of Loglc Design C-2
D Mapping Control to Hardware D-2
e A Survey of RISC Architectures for Desktop, Server, and Embedded
Computers E-2
G Glossary G-1
F Further Reading FR-1