ebook img

Basic Computer Architecture PDF

673 Pages·2021·10.033 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Basic Computer Architecture

Basic Computer Architecture Version 2.1 Smruti R. Sarangi August 11, 2021 Contents 1 Introduction to Computer Architecture 11 1.1 What is a Computer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.2 Structure of a Typical Desktop Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3 Computers are Dumb Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4 The Language of Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.5 Instruction Set Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.5.1 Complete - The ISA should be able to Implement all User Programs . . . . . . . . . . 17 1.5.2 Concise – Limited Size of the Instruction Set . . . . . . . . . . . . . . . . . . . . . . . 18 1.5.3 Generic – Instructions should Capture the Common Case . . . . . . . . . . . . . . . . 18 1.5.4 Simple – Instructions should be Simple . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6 How to Ensure that an ISA is Complete? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6.1 Towards a Universal ISA* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.2 Turing Machine* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6.3 Universal Turing Machine* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.6.4 A Modified Universal Turing Machine*. . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6.5 Single Instruction ISA* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.6.6 Multiple Instruction ISA* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.6.7 Summary of Theoretical Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.7 Design of Practical Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.7.1 Harvard Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.7.2 Von Neumann Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.7.3 Towards a Modern Machine with Registers and Stacks . . . . . . . . . . . . . . . . . . 32 1.8 The Road Ahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.8.1 Representing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.8.2 Processing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.8.3 Processing More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 1.9 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.9.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.9.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 I Architecture: Software Interface 41 2 The Language of Bits 43 2.1 Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.1 Basic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.2 Derived Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.1.3 Boolean Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.1.4 De Morgan’s Laws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 1 (cid:13)c Smruti R. Sarangi 2 2.1.5 Logic Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.1.6 Implementing Boolean Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.1.7 The Road Ahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2 Positive Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2.1 Ancient Number Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2.2 Binary Number System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.2.3 Adding Binary Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.2.4 Sizes of Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.3 Negative Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.3.1 Sign-Magnitude based Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.3.2 The 1’s Complement Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.3.3 Bias-based Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.3.4 The 2’s Complement Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.4 Floating Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.4.1 Fixed Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.4.2 Generic Form of Floating Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.4.3 IEEE 754 Format for Representing Floating Point Numbers . . . . . . . . . . . . . . . 69 2.4.4 Denormal Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.4.5 Double Precision Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 2.4.6 Floating Point Mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.5 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.5.1 ASCII Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.5.2 UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.5.3 UTF-16 and UTF-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.6 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.6.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3 Assembly Language 81 3.1 Why Assembly Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.1.1 Software Developer’s Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.1.2 Hardware Designer’s Perspective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.2 The Basics of Assembly Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.2.1 Machine Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.2.2 View of Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.2.3 Assembly Language Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.2.4 Types of Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 3.2.5 Types of Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.3 SimpleRisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.3.1 Different Instruction Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.3.2 Model of the SimpleRisc Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.3.3 Register Transfer Instruction – mov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.3.4 Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.3.5 Logical Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.3.6 Shift Instructions – lsl, lsr, asr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.3.7 Data Transfer Instructions: ld and st. . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.3.8 Unconditional Branch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.3.9 Conditional Branch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3 (cid:13)c Smruti R. Sarangi 3.3.10 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.3.11 Function Call/Return Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 3.3.12 The nop Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.3.13 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.3.14 Encoding the SimpleRisc Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . 112 3.4 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.4.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4 ARM(cid:13)R Assembly Language 125 4.1 The ARM(cid:13)R Machine Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 4.2 Basic Assembly Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.2.1 Simple Data Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.2.2 Advanced Data-Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.2.3 Compare Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.2.4 Instructions that Set CPSR Flags – The ‘S’ Suffix . . . . . . . . . . . . . . . . . . . . 132 4.2.5 Data Processing Instructions that use CPSR Flags . . . . . . . . . . . . . . . . . . . . 132 4.2.6 Simple Branch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.2.7 Branch and Link Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 4.2.8 Conditional Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 4.2.9 Load-Store Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 4.3 Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 4.3.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.3.2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 4.4 Encoding the Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 4.4.1 Data Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.4.2 Load-Store Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 4.4.3 Branch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.5 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.5.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 5 x86 Assembly Language 157 5.1 Overview of the x86 Family of Assembly Languages . . . . . . . . . . . . . . . . . . . . . . . 157 5.1.1 Brief History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 5.1.2 Main Features of the x86 ISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 5.2 x86 Machine Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.2.1 Integer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.2.2 Floating Point Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 5.2.3 View of Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.2.4 Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 5.2.5 x86 Assembly Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 5.3 Integer Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 5.3.1 Data Transfer Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 5.3.2 ALU Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 5.3.3 Branch/ Function Call Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 5.3.4 Advanced Memory Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 5.4 Floating Point Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 (cid:13)c Smruti R. Sarangi 4 5.4.1 Data Transfer Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 5.4.2 Arithmetic Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 5.4.3 Instructions for Special Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 5.4.4 Compare Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 5.4.5 Stack Cleanup Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.5 Encoding the x86 ISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.5.1 High Level View of x86 Instruction Encoding . . . . . . . . . . . . . . . . . . . . . . . 192 5.6 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.6.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.6.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 II Organisation: Processor Design 201 6 Logic Gates, Registers, and Memories 203 6.1 Silicon based Transistors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 6.1.1 Doping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.1.2 P-N Junction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.1.3 NMOS Transistor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 6.1.4 PMOS Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 6.1.5 A Basic CMOS based Inverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 6.1.6 NAND and NOR Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 6.2 Combinational Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 6.2.1 XOR Gate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 6.2.2 Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 6.2.3 Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 6.2.4 Demultiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 6.2.5 Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 6.2.6 Priority Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 6.3 Sequential Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.3.1 SR Latch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.3.2 The Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 6.3.3 Clocked SR Latch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 6.3.4 Edge Sensitive SR Flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 6.3.5 JK Flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 6.3.6 D Flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 6.3.7 Master-slave D Flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 6.3.8 Metastability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 6.3.9 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 6.4 Memories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6.4.1 Static RAM (SRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6.4.2 Content Addressable Memory (CAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 6.4.3 Dynamic RAM (DRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 6.4.4 Read Only Memory (ROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 6.4.5 Programmable Logic Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.5 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 6.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 6.5.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 5 (cid:13)c Smruti R. Sarangi 7 Computer Arithmetic 241 7.1 Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 7.1.1 Addition of Two 1-bit Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 7.1.2 Addition of Three 1-bit Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 7.1.3 Ripple Carry Adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 7.1.4 Carry Select Adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 7.1.5 Carry Lookahead Adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 7.2 Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 7.2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 7.2.2 Iterative Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 7.2.3 Booth Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 7.2.4 An O(log(n)2) Time Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 7.2.5 Wallace Tree Multiplier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 7.3 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 7.3.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 7.3.2 Restoring Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 7.3.3 Non-Restoring Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.4 Floating Point Addition and Subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.4.1 Simple Addition with Same Signs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 7.4.2 Rounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 7.4.3 Implementing Rounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 7.4.4 Addition of Numbers with Opposite Signs . . . . . . . . . . . . . . . . . . . . . . . . 278 7.4.5 Generic Algorithm for Adding Floating Point Numbers . . . . . . . . . . . . . . . . . 278 7.5 Multiplication of Floating Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 7.6 Division of Floating Point Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 7.6.1 Simple Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 7.6.2 Goldschmidt Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 7.6.3 Division Using the Newton-Raphson Method . . . . . . . . . . . . . . . . . . . . . . . 281 7.7 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 7.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 7.7.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 8 Processor Design 289 8.1 Design of a Basic Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 8.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 8.2 Units in a Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 8.2.1 Instruction Fetch – Fetch Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 8.2.2 Data Path and Control Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 8.2.3 Operand Fetch Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 8.2.4 Execute Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 8.2.5 Memory Access Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.2.6 Register Writeback Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 8.2.7 The Data Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 8.3 The Control Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 8.4 Microprogram-Based Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 8.5 Microprogrammed Data Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 8.5.1 Fetch Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 8.5.2 Decode Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 (cid:13)c Smruti R. Sarangi 6 8.5.3 Register File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 8.5.4 ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 8.5.5 Memory Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 8.5.6 Overview of the Data Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 8.6 Microassembly Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 8.6.1 Machine Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 8.6.2 Microinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 8.6.3 Implementing Instructions in the Microassembly Language . . . . . . . . . . . . . . . 317 8.6.4 3-Address Format ALU Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 8.6.5 2-Address Format ALU Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 8.6.6 The nop Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 8.6.7 ld and st instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 8.6.8 Branch Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 8.7 Shared Bus and Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 8.7.1 Control Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 8.7.2 Functional Unit Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 8.8 The Microcontrol Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 8.8.1 Vertical Microprogramming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 8.8.2 Horizontal Microprogramming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 8.8.3 Tradeoffs between Horizontal and Vertical Microprogramming . . . . . . . . . . . . . . 332 8.9 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 8.9.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 8.9.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 9 Principles of Pipelining 337 9.1 A Pipelined Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 9.1.1 The Notion of Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 9.1.2 Overview of Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 9.1.3 Performance Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 9.2 Design of a Simple Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 9.2.1 Splitting the Data Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 9.2.2 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 9.2.3 The Instruction Packet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 9.3 Pipeline Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 9.3.1 IF Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 9.3.2 OF Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 9.3.3 EX Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 9.3.4 MA Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 9.3.5 RW Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 9.3.6 Putting it All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 9.4 Pipeline Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 9.4.1 The Pipeline Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 9.4.2 Data Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 9.4.3 Control Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 9.4.4 Structural Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 9.5 Solutions in Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 9.5.1 RAW Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 9.5.2 Control Hazards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 7 (cid:13)c Smruti R. Sarangi 9.6 Pipeline with Interlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 9.6.1 A Conceptual Look at a Pipeline with Interlocks . . . . . . . . . . . . . . . . . . . . . 357 9.6.2 Ensuring the Data-Lock Condition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 9.6.3 Ensuring the Branch-Lock condition. . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 9.7 Pipeline with Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 9.7.1 Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 9.7.2 Forwarding Paths in a Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 9.7.3 Data Hazards with Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 9.7.4 Implementation of a Pipeline with Forwarding . . . . . . . . . . . . . . . . . . . . . . 369 9.7.5 Forwarding Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 9.8 Support for Interrupts/ Exceptions* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 9.8.1 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 9.8.2 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 9.8.3 Precise Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 9.8.4 Saving and Restoring Program State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 9.8.5 SimpleRisc Assembly Code of an Interrupt Handler . . . . . . . . . . . . . . . . . . . 384 9.8.6 Processor with Support for Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 9.9 Performance Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 9.9.1 The Performance Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 9.9.2 Performance of an Ideal Pipelined Processor . . . . . . . . . . . . . . . . . . . . . . . . 389 9.9.3 Performance of a Non-Ideal Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 9.9.4 Performance of a Suite of Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 9.9.5 Inter-Relationship between Performance, the Compiler, Architecture, and Technology 395 9.10 Power and Temperature Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 9.10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 9.10.2 Dynamic Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 9.10.3 Leakage Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 9.10.4 Modeling Temperature* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 9.10.5 The ED2 Metric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 9.11 Advanced Techniques* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 9.11.1 Branch Prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 9.11.2 Multiple Issue In-Order Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 9.11.3 EPIC and VLIW Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 9.11.4 Out-of-Order Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 9.12 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 9.12.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 9.12.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 III Organisation: System Design 421 10 The Memory System 423 10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1.1 Need for a Fast Memory System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 10.1.2 Memory Access Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 10.1.3 Temporal and Spatial Locality of Instruction Accesses . . . . . . . . . . . . . . . . . . 426 10.1.4 Characterising Temporal Locality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 10.1.5 Characterising Spatial Locality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 (cid:13)c Smruti R. Sarangi 8 10.1.6 Utilising Spatial and Temporal Locality . . . . . . . . . . . . . . . . . . . . . . . . . . 429 10.1.7 Exploiting Temporal Locality – Hierarchical Memory System . . . . . . . . . . . . . . 429 10.1.8 Exploiting Spatial Locality – Cache Blocks . . . . . . . . . . . . . . . . . . . . . . . . 432 10.2 Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 10.2.1 Overview of a Basic Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 10.2.2 Cache Lookup and Cache Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 10.2.3 Data read and data write Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 10.2.4 The insert Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 10.2.5 The replace Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 10.2.6 The evict Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10.2.7 Putting all the Pieces Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 10.3 The Memory System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.3.1 Mathematical Model of the Memory System . . . . . . . . . . . . . . . . . . . . . . . . 448 10.3.2 Cache Misses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 10.3.3 Reduction of Hit Time and Miss Penalty. . . . . . . . . . . . . . . . . . . . . . . . . . 452 10.3.4 Summary of Memory System Optimisation Techniques . . . . . . . . . . . . . . . . . . 453 10.4 Virtual Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 10.4.1 Process – A Running Instance of a Program . . . . . . . . . . . . . . . . . . . . . . . . 454 10.4.2 The “Overlap” and “Size” Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 10.4.3 Implementation of Virtual Memory with Paging . . . . . . . . . . . . . . . . . . . . . 460 10.4.4 Swap Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 10.4.5 Memory Management Unit (MMU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 10.4.6 Advanced Features of the Paging System . . . . . . . . . . . . . . . . . . . . . . . . . 467 10.5 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 10.5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 10.5.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 11 Multiprocessor Systems 477 11.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 11.1.1 Moore’s Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 11.1.2 Implications of the Moore’s Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 11.2 Software for Multiprocessor Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 11.2.1 Strong and Loosely Coupled Multiprocessing . . . . . . . . . . . . . . . . . . . . . . . 481 11.2.2 Shared Memory vs Message Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 11.2.3 Amdahl’s Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 11.3 Design Space of Multiprocessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 11.4 MIMD Multiprocessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 11.4.1 Logical Point of View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 11.4.2 Coherence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 11.4.3 Memory Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 11.4.4 Physical View of Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 11.4.5 Shared Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 11.4.6 Coherent Private Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 11.4.7 Implementing a Memory Consistency Model* . . . . . . . . . . . . . . . . . . . . . . . 511 11.4.8 Multithreaded Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 11.5 SIMD Multiprocessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 11.5.1 SIMD – Vector Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 11.5.2 Software Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 9 (cid:13)c Smruti R. Sarangi 11.5.3 A Practical Example using SSE Instructions. . . . . . . . . . . . . . . . . . . . . . . . 522 11.5.4 Predicated Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 11.5.5 Design of a Vector Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 11.6 Interconnection Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 11.6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 11.6.2 Bisection Bandwidth and Network Diameter . . . . . . . . . . . . . . . . . . . . . . . 526 11.6.3 Network Topologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 11.7 Summary and Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 11.7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 11.7.2 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 12 I/O and Storage Devices 545 12.1 I/O System – Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 12.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 12.1.2 Requirements of the I/O System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 12.1.3 Design of the I/O System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 12.1.4 Layers in the I/O System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 12.2 Physical Layer – Transmission Sublayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 12.2.1 Single Ended Signalling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 12.2.2 Low Voltage Differential Signalling (LVDS) . . . . . . . . . . . . . . . . . . . . . . . . 556 12.2.3 Transmission of Multiple Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 12.2.4 Return to Zero (RZ) Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 12.2.5 Manchester Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 12.2.6 Non Return to Zero (NRZ) Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 12.2.7 Non Return to Zero (NRZI) Inverted Protocol . . . . . . . . . . . . . . . . . . . . . . 560 12.3 Physical Layer – Synchronisation Sublayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 12.3.1 Synchronous Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 12.3.2 Source Synchronous Bus* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 12.3.3 Asynchronous Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 12.4 Data Link Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 12.4.1 Framing and Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 12.4.2 Error Detection and Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 12.4.3 Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 12.4.4 Transaction-Oriented Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 12.4.5 Split Transaction Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 12.5 Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 12.5.1 I/O Port Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 12.5.2 Memory Mapped Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 12.6 Protocol Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 12.6.1 Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 12.6.2 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 12.6.3 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 12.7 Case Studies – I/O Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 12.7.1 PCI Express(cid:13)R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 12.7.2 SATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 12.7.3 SCSI and SAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 12.7.4 USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 12.7.5 FireWire Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.