Preface | p. ix |
Computer Abstractions and Technology | p. 2 |
Introduction | p. 3 |
Below Your Program | p. 11 |
Under the Covers | p. 15 |
Real Stuff: Manufacturing Pentium 4 Chips | p. 28 |
Fallacies and Pitfalls | p. 33 |
Concluding Remarks | p. 35 |
Historical Perspective and Further Reading | p. 36 |
Exercises | p. 36 |
Computers in the Real World: Information Technology for the 4 Billion without IT | p. 44 |
Instructions: Language of the Computer | p. 46 |
Introduction | p. 48 |
Operations of the Computer Hardware | p. 49 |
Operands of the Computer Hardware | p. 52 |
Representing Instructions in the Computer | p. 60 |
Logical Operations | p. 68 |
Instructions for Making Decisions | p. 72 |
Supporting Procedures in Computer Hardware | p. 79 |
Communicating with People | p. 90 |
MIPS Addressing for 32-Bit Immediates and Addresses | p. 95 |
Translating and Starting a Program | p. 106 |
How Compilers Optimize | p. 116 |
How Compilers Work: An Introduction | p. 121 |
A C Sort Example to Put It All Together | p. 121 |
Implementing an Object-Oriented Language | p. 130 |
Arrays versus Pointers | p. 130 |
Real Stuff: IA-32 Instructions | p. 134 |
Fallacies and Pitfalls | p. 143 |
Concluding Remarks | p. 145 |
Historical Perspective and Further Reading | p. 147 |
Exercises | p. 147 |
Computers in the Real World: Helping Save Our Environment with Data | p. 156 |
Arithmetic for Computers | p. 158 |
Introduction | p. 160 |
Signed and Unsigned Numbers | p. 160 |
Addition and Subtraction | p. 170 |
Multiplication | p. 176 |
Division | p. 183 |
Floating Point | p. 189 |
Real Stuff: Floating Point in the IA-32 | p. 217 |
Fallacies and Pitfalls | p. 220 |
Concluding Remarks | p. 225 |
Historical Perspective and Further Reading | p. 229 |
Exercises | p. 229 |
Computers in the Real World: Reconstructing the Ancient World | p. 236 |
Assessing and Understanding Performance | p. 238 |
Introduction | p. 240 |
CPU Performance and Its Factors | p. 246 |
Evaluating Performance | p. 254 |
Real Stuff: Two SPEC Benchmarks and the Performance of Recent Intel Processors | p. 259 |
Fallacies and Pitfalls | p. 266 |
Concluding Remarks | p. 270 |
Historical Perspective and Further Reading | p. 272 |
Exercises | p. 272 |
Computers in The Real World: Moving People Faster and More Safely | p. 280 |
The Processor: Datapath and Control | p. 282 |
Introduction | p. 284 |
Logic Design Conventions | p. 289 |
Building a Datapath | p. 292 |
A Simple Implementation Scheme | p. 300 |
A Multicycle Implementation | p. 318 |
Exceptions | p. 340 |
Microprogramming: Simplifying Control Design | p. 346 |
An Introduction to Digital Design Using a Hardware Design Language | p. 346 |
Real Stuff: The Organization of Recent Pentium Implementations | p. 347 |
Fallacies and Pitfalls | p. 350 |
Concluding Remarks | p. 352 |
Historical Perspective and Further Reading | p. 353 |
Exercises | p. 354 |
Computers in the Real World: Empowering the Disabled | p. 366 |
Enhancing Performance with Pipelining | p. 368 |
An Overview of Pipelining | p. 370 |
A Pipelined Datapath | p. 384 |
Pipelined Control | p. 399 |
Data Hazards and Forwarding | p. 402 |
Data Hazards and Stalls | p. 413 |
Branch Hazards | p. 416 |
Using a Hardware Description Language to Describe and Model a Pipeline | p. 426 |
Exceptions | p. 427 |
Advanced Pipelining: Extracting More Performance | p. 432 |
Real Stuff: The Pentium 4 Pipeline | p. 448 |
Fallacies and Pitfalls | p. 451 |
Concluding Remarks | p. 452 |
Historical Perspective and Further Reading | p. 454 |
Exercises | p. 454 |
Computers in the Real World: Mass Communication without Gatekeepers | p. 464 |
Large and Fast: Exploiting Memory Hierarchy | p. 466 |
Introduction | p. 468 |
The Basics of Caches | p. 473 |
Measuring and Improving Cache Performance | p. 492 |
Virtual Memory | p. 511 |
A Common Framework for Memory Hierarchies | p. 538 |
Real Stuff: The Pentium P4 and the AMD Opteron Memory Hierarchies | p. 546 |
Fallacies and Pitfalls | p. 550 |
Concluding Remarks | p. 552 |
Historical Perspective and Further Reading | p. 555 |
Exercises | p. 555 |
Computers in the Real World: Saving the World's Art Treasures | p. 562 |
Storage, Networks, and Other Peripherals | p. 564 |
Introduction | p. 566 |
Disk Storage and Dependability | p. 569 |
Networks | p. 580 |
Buses and Other Connections between Processors, Memory, and I/O Devices | p. 581 |
Interfacing I/O Devices to the Processor, Memory, and Operating System | p. 588 |
I/O Performance Measures: Examples from Disk and File Systems | p. 597 |
Designing an I/O System | p. 600 |
Real Stuff: A Digital Camera | p. 603 |
Fallacies and Pitfalls | p. 606 |
Concluding Remarks | p. 609 |
Historical Perspective and Further Reading | p. 611 |
Exercises | p. 611 |
Computers in the Real World: Saving Lives through Better Diagnosis | p. 622 |
Multiprocessors and Clusters | p. 2 |
Introduction | p. 4 |
Programming Multiprocessors | p. 8 |
Multiprocessors Connected by a Single Bus | p. 11 |
Multiprocessors Connected by a Network | p. 20 |
Clusters | p. 25 |
Network Topologies | p. 27 |
Multiprocessors Inside a Chip and Multithreading | p. 30 |
Real Stuff: The Google Cluster of PCs | p. 34 |
Fallacies and Pitfalls | p. 39 |
Concluding Remarks | p. 42 |
Historical Perspective and Further Reading | p. 47 |
Exercises | p. 55 |
Appendices | |
Assemblers, Linkers, and the SPIM Simulator | p. 2 |
Introduction | p. 3 |
Assemblers | p. 10 |
Linkers | p. 18 |
Loading | p. 19 |
Memory Usage | p. 20 |
Procedure Call Convention | p. 22 |
Exceptions and Interrupts | p. 33 |
Input and Output | p. 38 |
SPIM | p. 40 |
MIPS R2000 Assembly Language | p. 45 |
Concluding Remarks | p. 81 |
Exercises | p. 82 |
The Basics of Logic Design | p. 2 |
Introduction | p. 3 |
Gates, Truth Tables, and Logic Equations | p. 4 |
Combinational Logic | p. 8 |
Using a Hardware Description Language | p. 20 |
Constructing a Basic Arithmetic Logic Unit | p. 26 |
Faster Addition: Carry Lookahead | p. 38 |
Clocks | p. 47 |
Memory Elements: Flip-flops, Latches, and Registers | p. 49 |
Memory Elements: SRAMs and DRAMs | p. 57 |
Finite State Machines | p. 67 |
Timing Methodologies | p. 72 |
Field Programmable Devices | p. 77 |
Concluding Remarks | p. 78 |
Exercises | p. 79 |
Mapping Control to Hardware | p. 2 |
Introduction | p. 3 |
Implementing Combinational Control Units | p. 4 |
Implementing Finite State Machine Control | p. 8 |
Implementing the Next-State Function with a Sequencer | p. 21 |
Translating a Microprogram to Hardware | p. 27 |
Concluding Remarks | p. 31 |
Exercises | p. 32 |
A Survey of RISC Architectures for Desktop, Server, and Embedded Computers | p. 2 |
Introduction | p. 3 |
Addressing Modes and Instruction Formats | p. 5 |
Instructions: The MIPS Core Subset | p. 9 |
Instructions: Multimedia Extensions of the Desktop/Server RISCs | p. 16 |
Instructions: Digital Signal-Processing Extensions of the Embedded RISCs | p. 19 |
Instructions: Common Extensions to MIPS Core | p. 20 |
Instructions Unique to MIPS64 | p. 25 |
Instructions Unique to Alpha | p. 27 |
Instructions Unique to SPARC v.9 | p. 29 |
Instructions Unique to PowerPC | p. 32 |
Instructions Unique to PA-RISC 2.0 | p. 34 |
Instructions Unique to ARM | p. 36 |
Instructions Unique to Thumb | p. 38 |
Instructions Unique to SuperH | p. 39 |
Instructions Unique to M32R | p. 40 |
Instructions Unique to MIPS16 | p. 41 |
Concluding Remarks | p. 43 |
Acknowledgments | p. 46 |
References | p. 47 |
Index | p. 1 |
Glossary | p. 1 |
Further Reading | p. 1 |
Table of Contents provided by Rittenhouse. All Rights Reserved. |