| 1T Dynamic RAM (DRAM) Cell [slide] | |
| 1T DRAM Writes and Reads [slide] | |
| 2's Complement Multiplication [slide] | |
| 2's Complement Multiplier [slide] | |
| Why Isn’t This a | 20-minute Lecture? [slide] |
| 32-bit Carry Select Adder [slide] | |
| Extending K-maps to | 4-variable Tables [slide] |
| 5-Stage Pipelined Processors [slide] | |
| Improving | 5-Stage Pipeline Performance [slide] |
| Improving | 5-Stage Pipeline Performance [slide] |
| 5-Stage Pipelined Datapath [slide] | |
| 5-stage Beta: Final Version [slide] | |
| 6.004: The Big Lesson [slide] | |
| 8-bit CLA (generate G & P) [slide] | |
| 8-bit CLA (carry generation) [slide] | |
| 8-bit CLA (complete) [slide] | |
| Information Processing | = Computation [slide] |
| ALU Instructions [slide] | |
| ALU Op Datapath I [slide] | |
| ALU Op Datapath II [slide] | |
| ALU Operations (with constant) I [slide] | |
| ALU Operations (with constant) II [slide] | |
| Beta | ALU Instructions [slide] |
| Beta | ALU Instructions with Constant [slide] |
| Can We Solve Factorial with | ALU Instructions? [slide] |
| ANDs and ORs with > 2 Inputs [slide] | |
| The Digital | Abstraction [slide] |
| Abstraction du jour: Finite State Machines [slide] | |
| Procedures: A Software | Abstraction [slide] |
| The Power of Engineering | Abstractions [slide] |
| Cache | Access [slide] |
| Accessing User Locations [slide] | |
| Cache Coherence in | Action [slide] |
| Activation Records [slide] | |
| Stack Frames as | Activation Records [slide] |
| MESI | Activity Diagram [slide] |
| Handler for | Actual Illops [slide] |
| Acyclic Combinational Circuits [slide] | |
| And | Add A Little Parallelism... [slide] |
| Improving Speed: | Adder Example [slide] |
| 32-bit Carry Select | Adder [slide] |
| Carry Select | Adders [slide] |
| Carry Look-ahead | Adders (CLA) [slide] |
| Adding New SVCs [slide] | |
| MMU | Address Translation [slide] |
| MMU | Address Translation [slide] |
| Basic Cache | Algorithm [slide] |
| Huffman’s | Algorithm [slide] |
| Coded | Algorithms: Key to CS [slide] |
| Semaphores for Resource | Allocation [slide] |
| Alternatives to Sequential Consistency? [slide] | |
| Control Structure | Alternatives [slide] |
| From Atoms to | Amazon [slide] |
| Amdahl’s Law [slide] | |
| Amdahl’s Law and Parallelism [slide] | |
| Frontend Stages: Lexical | Analysis [slide] |
| Frontend Stages: Syntactic | Analysis [slide] |
| Frontend Stages: Semantic | Analysis [slide] |
| Performance/Cost | Analysis [slide] |
| Anatomy of a Modern Compiler [slide] | |
| Anatomy of a von Neumann Computer [slide] | |
| Beta: Our “Final | Answer” [slide] |
| Ant Schematic [slide] | |
| Here’s a Design | Approach [slide] |
| Karnuagh Maps: A Geometric | Approach [slide] |
| Approach: Incremental Featurism [slide] | |
| Instruction Set | Architecture (ISA) [slide] |
| Reduce | Area With Sequential Logic [slide] |
| Argument Order & BP Usage [slide] | |
| Page Map | Arithmetic [slide] |
| Example: Page Map | Arithmetic [slide] |
| How Does It Get | Assembled? [slide] |
| Assembly Language [slide] | |
| Assembly of Instructions [slide] | |
| Example | Assembly [slide] |
| Summary: | Assembly Language [slide] |
| Associativity Tradeoffs [slide] | |
| Associativity Implies Choices [slide] | |
| Interrupt-based | Asynch I/O [slide] |
| Asynchronous I/O Handling [slide] | |
| Asynchronous Interrupts [slide] | |
| Producer/Consumer | Atomicity Problems [slide] |
| From | Atoms to Amazon [slide] |
| ReadKey SVC: | Attempt #1 [slide] |
| ReadKey SVC: | Attempt #2 [slide] |
| ReadKey SVC: | Attempt #3 [slide] |
| ReadKey SVC: | Attempt #4 [slide] |
| BEQ/BNE Instructions I [slide] | |
| BEQ/BNE Instructions II [slide] | |
| Argument Order & | BP Usage [slide] |
| Okay, | Back to Circuits... [slide] |
| Back to Our Bottleneck... [slide] | |
| Interface Standard: | Backplane Bus [slide] |
| The HW/SW | Balance [slide] |
| Basic Cache Algorithm [slide] | |
| Unsolvable? That Can’t | Be True... [slide] |
| We’ve | Been Designing a MUX [slide] |
| Best of Both Worlds: Overlapped Operation [slide] | |
| Beta ISA Summary [slide] | |
| UASM Macros for | Beta Instructions [slide] |
| Reminder: | Beta ISA [slide] |
| Beta Inside! [slide] | |
| Beta ISA: Storage [slide] | |
| Beta ISA: Instructions [slide] | |
| Beta ALU Instructions [slide] | |
| Beta ALU Instructions with Constant [slide] | |
| Beta Load and Store Instructions [slide] | |
| Beta Branch Instructions [slide] | |
| Beta JMP Instruction [slide] | |
| Beta ISA Summary [slide] | |
| Reminder: Single-Cycle | Beta [slide] |
| Single-Cycle | Beta Performance [slide] |
| Simplified Unpipelined | Beta Datapath [slide] |
| Beta Interrupt Handling [slide] | |
| Beta: Our “Final Answer” [slide] | |
| 5-stage | Beta: Final Version [slide] |
| Can We Do | Better? [slide] |
| Beyond Inverters [slide] | |
| 6.004: The | Big Lesson [slide] |
| Encodings as | Binary Trees [slide] |
| Binary Multiplication [slide] | |
| Hamming Distance and | Bit Errors [slide] |
| Write-back with “Dirty” | Bits [slide] |
| Block Size [slide] | |
| Block Size Trandeoffs [slide] | |
| Sum-of-products Building | Blocks [slide] |
| More Building | Blocks [slide] |
| Universal Building | Blocks [slide] |
| Mr. | Blue Visits the ISS [slide] |
| Mr. | Blue Visits the ISS (cont&rsquo'd.) [slide] |
| Bonk! [slide] | |
| Boolean Minimization [slide] | |
| Best of | Both Worlds: Overlapped Operation [slide] |
| Back to Our | Bottleneck... [slide] |
| Example: | Bounded Buffer Problem [slide] |
| Bounded Buffer Problem with Semaphores [slide] | |
| Bounded Buffer Problem with More Semaphores [slide] | |
| Bounded Buffer Problem with Even More Semaphores [slide] | |
| The | Bounded-tie Synchronizer [slide] |
| Thinking Outside the | Box [slide] |
| Meanwhile, Outside the | Box... [slide] |
| Beta | Branch Instructions [slide] |
| Branch Prediction [slide] | |
| Branch Delay Slots I [slide] | |
| Branch Delay Slots II [slide] | |
| ISA Issues: Simple vs. Complex | Branches [slide] |
| Example: Bounded | Buffer Problem [slide] |
| Bounded | Buffer Problem with Semaphores [slide] |
| Bounded | Buffer Problem with More Semaphores [slide] |
| Bounded | Buffer Problem with Even More Semaphores [slide] |
| Translation Look-aside | Buffer (TLB) [slide] |
| FIFO | Buffering [slide] |
| Let’s | Build a System! [slide] |
| Let's | Build a RoboAnt [slide] |
| Something We Can't | Build (Yet) [slide] |
| Digital State: What We'd Like to | Build [slide] |
| Sum-of-products | Building Blocks [slide] |
| More | Building Blocks [slide] |
| Universal | Building Blocks [slide] |
| Building the Transition Table [slide] | |
| Building a Virtual Machine (VM) [slide] | |
| Interface Standard: Backplane | Bus [slide] |
| A Parallel | Bus Transaction [slide] |
| Bus Lines as Transmission Lines [slide] | |
| Improving on the | Bus [slide] |
| Buses, Interconnect, So...? [slide] | |
| But, What If... [slide] | |
| Bypass Logic [slide] | |
| Fully | Bypassed Pipeline [slide] |
| Carry Look-ahead Adders | (CLA) [slide] |
| 8-bit | CLA (generate G & P) [slide] |
| 8-bit | CLA (carry generation) [slide] |
| 8-bit | CLA (complete) [slide] |
| CMOS Recipe [slide] | |
| CMOS Inverter VTC [slide] | |
| CMOS Comoplements [slide] | |
| General | CMOS Gate Recipe [slide] |
| CMOS Gates Are Naturally Inverting [slide] | |
| CMOS Timing Specifications [slide] | |
| CMOS Loves Inverting Logic [slide] | |
| CMOS Sum-of-products Implementation [slide] | |
| CMOS Static Power Dissipation [slide] | |
| CMOS Dynamic Power Dissipation I [slide] | |
| CMOS Dynamic Power Dissipation II [slide] | |
| CPU Design Tradeoffs [slide] | |
| Processes: Multiplexing the | CPU [slide] |
| Coded Algorithms: Key to | CS [slide] |
| Virtual Memory: the | CS View [slide] |
| Cache Access [slide] | |
| Cache Metrics [slide] | |
| Basic | Cache Algorithm [slide] |
| Direct-Mapped | Cache Problem: Conflict Misses [slide] |
| Fully-Associative | Cache [slide] |
| N-way Set-Associative | Cache I [slide] |
| N-way Set-Associative | Cache II [slide] |
| Summary: | Cache Tradeoffs [slide] |
| Fix: “Snoopy” | Cache Coherence Protocol [slide] |
| Example: MESI | Cache Coherence Protocol [slide] |
| The | Cache Has Two Customers! [slide] |
| Cache Coherence in Action [slide] | |
| Caches [slide] | |
| Direct-Mapped | Caches [slide] |
| Example: Direct-Mapped | Caches [slide] |
| Multicore | Caches [slide] |
| Reminder: Hardware | Caches [slide] |
| Using | Caches with Virtual Memory [slide] |
| Semaphores as a Supervisor | Call [slide] |
| Procedure | Calling Convention [slide] |
| OS Organization: Supervisor | Calls [slide] |
| Can We Do Better? [slide] | |
| Can We Solve Factorial with ALU Instructions? [slide] | |
| Can We Solve Factorial Now? [slide] | |
| Compilers | Can Help [slide] |
| When | Can Exceptions Happen? [slide] |
| How | Can We Reduce Power? [slide] |
| Unsolvable? That | Can’t Be True... [slide] |
| Something We | Can't Build (Yet) [slide] |
| Memory: Using | Capacitors [slide] |
| Truth Tables with Don’t | Cares [slide] |
| Carry Select Adders [slide] | |
| 32-bit | Carry Select Adder [slide] |
| Wanted: Faster | Carry Logic! [slide] |
| Carry Look-ahead Adders (CLA) [slide] | |
| Carry-save Pipelined Multiplier [slide] | |
| The | Case for a Non-minimal SOP [slide] |
| SRAM | Cell [slide] |
| 1T Dynamic RAM (DRAM) | Cell [slide] |
| Voltage Transfer | Characteristic [slide] |
| Parity | Check [slide] |
| Associativity Implies | Choices [slide] |
| Pipelined | Cicuits [slide] |
| A Simple Sequential | Circuit [slide] |
| Circuit Interleaving I [slide] | |
| Circuit Interleaving II [slide] | |
| Circuit Interleaving III [slide] | |
| Sequential | Circuit Timing [slide] |
| Acyclic Combinational | Circuits [slide] |
| Single-clock Synchronous | Circuits [slide] |
| Forget | Circuits... Let’s solve a Real Problem [slide] |
| Okay, Back to | Circuits... [slide] |
| The World Doesn’t Run on Our | Clock! [slide] |
| Code Generation [slide] | |
| Vector | Code Example [slide] |
| Coded Algorithms: Key to CS [slide] | |
| Interrupt Handler | Coding [slide] |
| Fix: “Snoopy” Cache | Coherence Protocol [slide] |
| Example: MESI Cache | Coherence Protocol [slide] |
| Cache | Coherence in Action [slide] |
| Is This a | Combination Device? [slide] |
| Combinational Device Wish List [slide] | |
| The | Combinational Contract [slide] |
| Acyclic | Combinational Circuits [slide] |
| Combinational Devices [slide] | |
| A | Combinational Digital System [slide] |
| Combinational Multiplier [slide] | |
| Combine Techniques [slide] | |
| FETs | Come in Two Flavors [slide] |
| Where Does Noise | Come From? [slide] |
| Common IR: Control Flow Graph [slide] | |
| Communication Topologies [slide] | |
| Communication Technologies: Latency [slide] | |
| Interprocess | Communication [slide] |
| Synchronous | Communication [slide] |
| Communicationg with the OS [slide] | |
| Serial, Point-to-point | Communications [slide] |
| Communications in Today's Computers [slide] | |
| Communications Futures [slide] | |
| CMOS | Comoplements [slide] |
| Compilation [slide] | |
| Interpretation vs. | Compilation [slide] |
| A Simple | Compilation Strategy [slide] |
| Anatomy of a Modern | Compiler [slide] |
| Compilers [slide] | |
| Compilers Can Help [slide] | |
| Compiling Expressions [slide] | |
| Two’s | Complement Encoding [slide] |
| More Two’s | Complement [slide] |
| 2's | Complement Multiplication [slide] |
| 2's | Complement Multiplier [slide] |
| ISA Issues: Simple vs. | Complex Branches [slide] |
| Pipelined | Components [slide] |
| Information Processing = | Computation [slide] |
| Models of | Computation [slide] |
| Other Models of | Computation [slide] |
| Other Models of | Computation [slide] |
| Computer System Technologies [slide] | |
| The Eniac | Computer [slide] |
| Key Idea: Stored-program | Computer [slide] |
| Anatomy of a von Neumann | Computer [slide] |
| Communications in Today's | Computers [slide] |
| compile_statement: | Conditional [slide] |
| Direct-Mapped Cache Problem: | Conflict Misses [slide] |
| Real-world | Consequences [slide] |
| Sequential | Consistency [slide] |
| Alternatives to Sequential | Consistency? [slide] |
| Should We Support | Constant Operands? [slide] |
| Beta ALU Instructions with | Constant [slide] |
| Space & Time | Constraints [slide] |
| Contamination Delay [slide] | |
| Example: Information | Content [slide] |
| Probability and Information | Content [slide] |
| Rapid | Context Switching [slide] |
| Contexts [slide] | |
| Contexts [slide] | |
| Contexts: A Sneak Preview [slide] | |
| The Combinational | Contract [slide] |
| Procedure Linkage: The | Contract [slide] |
| Control Logic [slide] | |
| Common IR: | Control Flow Graph [slide] |
| Control Flow Graph for GCD [slide] | |
| Control FSM for Factorial [slide] | |
| Control FSM Hardware [slide] | |
| A | Control FSM for Factorial [slide] |
| New Problem → New | Control FSM [slide] |
| Pipelined | Control [slide] |
| Control Hazards I [slide] | |
| Control Hazards II [slide] | |
| Resolving | Control Hazards [slide] |
| Resolving | Control Hazards With Stalls [slide] |
| Stall Logic For | Control Hazards [slide] |
| Speculation Logic For | Control Hazards [slide] |
| Control Structure Alternatives [slide] | |
| Control Structure Taxonomy [slide] | |
| Flakey | Control Systems [slide] |
| Flow | Control Problems [slide] |
| Procedure Calling | Convention [slide] |
| Storage | Conventions [slide] |
| Pipeline | Conventions [slide] |
| Information | Conveyed by Data [slide] |
| Dealing With Outside | Corners [slide] |
| Error | Correction [slide] |
| The Cache Has Two | Customers! [slide] |
| Example: | Cycle 1 [slide] |
| Example: | Cycle 2 [slide] |
| Example: | Cycle 3 [slide] |
| Example: | Cycle 4 [slide] |
| Example: | Cycle 5 [slide] |
| New Device: | D Latch [slide] |
| Edge-triggered | D Register [slide] |
| D-Register Waveforms [slide] | |
| D-Register Timing [slide] | |
| 1T Dynamic RAM | (DRAM) Cell [slide] |
| 1T | DRAM Writes and Reads [slide] |
| Summary: | DRAM [slide] |
| Synchronization: The | Dark Side [slide] |
| Raw | Data [slide] |
| Information Conveyed by | Data [slide] |
| Data Hazards [slide] | |
| Resolving | Data Hazards I [slide] |
| Resolving | Data Hazards II [slide] |
| Summary: Pipelining with | Data Hazards [slide] |
| Data-Dependent Vector Operations [slide] | |
| Data-Level Parallelism [slide] | |
| ALU Op | Datapath I [slide] |
| ALU Op | Datapath II [slide] |
| Datapath for Factorial [slide] | |
| A Simple Programmable | Datapath [slide] |
| Simplified Unpipelined Beta | Datapath [slide] |
| 5-Stage Pipelined | Datapath [slide] |
| Deadlock! [slide] | |
| Dealing With | Deadlocks [slide] |
| Dealing With Noise [slide] | |
| Dealing With Outside Corners [slide] | |
| Dealing With Deadlocks [slide] | |
| Summary of | Dedicated Registers [slide] |
| VTC | Deductions [slide] |
| Propagation | Delay [slide] |
| Contamination | Delay [slide] |
| Solution: | Delay Increases Reliability [slide] |
| Branch | Delay Slots I [slide] |
| Branch | Delay Slots II [slide] |
| Gates, Wires, & | Delays [slide] |
| Demand Paging [slide] | |
| Limits to Pipeline | Depth [slide] |
| CPU | Design Tradeoffs [slide] |
| Here’s a | Design Approach [slide] |
| ISA | Design [slide] |
| Optimizing Your | Design [slide] |
| Simple Page Map | Design [slide] |
| We’ve Been | Designing a MUX [slide] |
| Implementation | Details [slide] |
| Stack Frame | Details [slide] |
| Detecting Multi-bit Errors [slide] | |
| Error | Detection [slide] |
| Single-bit Error | Detection [slide] |
| Stack | Detective [slide] |
| Combinational | Device Wish List [slide] |
| New | Device: D Latch [slide] |
| Is This a Combination | Device? [slide] |
| Combinational | Devices [slide] |
| OS Organization: I/O | Devices [slide] |
| Scheduling of Multiple | Devices [slide] |
| State Transition | Diagram [slide] |
| State Transition | Diagram as a Truth Table [slide] |
| MESI Activity | Diagram [slide] |
| What’s My Transition | Diagram? [slide] |
| Valid State | Diagrams [slide] |
| Pipeline | Diagrams [slide] |
| Pipeline | Diagrams [slide] |
| Why | Did Our System Fail? [slide] |
| The | Digital Abstraction [slide] |
| A Combinational | Digital System [slide] |
| Digital State: What We'd Like to Build [slide] | |
| Using Voltages | Digitally [slide] |
| Semaphores | (Dijkstra) [slide] |
| Dining Philosophers [slide] | |
| Direct-Mapped Caches [slide] | |
| Example: | Direct-Mapped Caches [slide] |
| Direct-Mapped Cache Problem: Conflict Misses [slide] | |
| ... With a Little | Discipline [slide] |
| Discrete Time, Discrete State [slide] | |
| Discrete Time, | Discrete State [slide] |
| Model: | Discrete Time [slide] |
| Non-Volatile Storage: Hard | Disk [slide] |
| CMOS Static Power | Dissipation [slide] |
| CMOS Dynamic Power | Dissipation I [slide] |
| CMOS Dynamic Power | Dissipation II [slide] |
| Hamming | Distance [slide] |
| Hamming | Distance and Bit Errors [slide] |
| Can We | Do Better? [slide] |
| How | Do 6.004 Students Do Laundry? [slide] |
| How Do 6.004 Students | Do Laundry? [slide] |
| How | Does It Get Assembled? [slide] |
| Where | Does Noise Come From? [slide] |
| The World | Doesn’t Run on Our Clock! [slide] |
| Doing N Loads of Laundry [slide] | |
| Doing N Loads... The 6.004 Way [slide] | |
| Truth Tables with | Don’t Cares [slide] |
| Write | Down Equations [slide] |
| FSMs All the Way | Down? [slide] |
| 1T | Dynamic RAM (DRAM) Cell [slide] |
| CMOS | Dynamic Power Dissipation I [slide] |
| CMOS | Dynamic Power Dissipation II [slide] |
| One VM For | Each Process [slide] |
| Edge-triggered D Register [slide] | |
| N-Channel MOSFET: | Electrical View [slide] |
| Electrical Model for Real Wires [slide] | |
| Electricity to the Rescue [slide] | |
| Settable Memory | Element [slide] |
| Emulated Instruction: swapreg(Ra,Rc) [slide] | |
| Using Voltages to | Encode a Picture [slide] |
| Encoding Information [slide] | |
| Encoding Postive Integers [slide] | |
| Encoding Signed Integers [slide] | |
| Two’s Complement | Encoding [slide] |
| Example: Variable-length | Encoding [slide] |
| Encodings [slide] | |
| Encodings as Binary Trees [slide] | |
| Fixed-length | Encodings [slide] |
| Variable-length | Encodings [slide] |
| The | End! [slide] |
| The Power of | Engineering Abstractions [slide] |
| The | Eniac Computer [slide] |
| Programming The | Eniac [slide] |
| Impact of | Enormous Miss Penalty [slide] |
| Entropy [slide] | |
| Meaning of | Entropy [slide] |
| Write Down | Equations [slide] |
| FSM | Equivalence [slide] |
| Equivalent State Reduction [slide] | |
| Error Detection [slide] | |
| Single-bit | Error Detection [slide] |
| Error Correction [slide] | |
| Hamming Distance and Bit | Errors [slide] |
| Detecting Multi-bit | Errors [slide] |
| Solution: | Escapement Strategy (2 Gates) [slide] |
| Bounded Buffer Problem with | Even More Semaphores [slide] |
| An | Evolutionary Step [slide] |
| Exception Processing [slide] | |
| Exception Implementation [slide] | |
| Exception Handling Logic [slide] | |
| Exception + Interrupt Logic [slide] | |
| Exception Hardware [slide] | |
| Exception Handling [slide] | |
| Exceptions [slide] | |
| Exceptions I [slide] | |
| Exceptions II [slide] | |
| Exceptions [slide] | |
| When Can | Exceptions Happen? [slide] |
| Resolving | Exceptions [slide] |
| Multiple | Exceptions? [slide] |
| Semaphores for Mutual | Exclusion [slide] |
| Pipelined | Execution Example [slide] |
| Example serial link: PCI | Express (PCIe) [slide] |
| UASM | Expressions and Layout [slide] |
| Compiling | Expressions [slide] |
| Extending K-maps to 4-variable Tables [slide] | |
| Extending the Memory Hierarchy [slide] | |
| FETs Come in Two Flavors [slide] | |
| FIFO Buffering [slide] | |
| FSM States [slide] | |
| FSM Equivalence [slide] | |
| Control | FSM for Factorial [slide] |
| Control | FSM Hardware [slide] |
| A Control | FSM for Factorial [slide] |
| New Problem → New Control | FSM [slide] |
| FSM Limitations [slide] | |
| FSMs All the Way Down? [slide] | |
| Factorial with Pseudoinstructions [slide] | |
| Putting It All Together: | Factorial [slide] |
| Example: | Factorial I [slide] |
| Example: | Factorial II [slide] |
| Datapath for | Factorial [slide] |
| Control FSM for | Factorial [slide] |
| A Control FSM for | Factorial [slide] |
| Can We Solve | Factorial with ALU Instructions? [slide] |
| Can We Solve | Factorial Now? [slide] |
| Putting It All Together: | Factorial [slide] |
| Why Did Our System | Fail? [slide] |
| So | Far: Single-purpose Hardware [slide] |
| Faster ROMs [slide] | |
| Wanted: | Faster Carry Logic! [slide] |
| Example: Page | Fault [slide] |
| Page | Faults [slide] |
| Approach: Incremental | Featurism [slide] |
| Memory: Using | Feedback [slide] |
| Instruction | Fetch/Decode [slide] |
| Fewer Transitions → Lower Power [slide] | |
| Example UASM Source | File [slide] |
| Multi-ported Register | File [slide] |
| Register | File Timing [slide] |
| 5-stage Beta: | Final Version [slide] |
| Finding Implicants [slide] | |
| Finding Prime Implicants [slide] | |
| Abstraction du jour: | Finite State Machines [slide] |
| Procedure Linkage: | First Try [slide] |
| Fix: “Snoopy” Cache Coherence Protocol [slide] | |
| Fixed-length Encodings [slide] | |
| Flakey Control Systems [slide] | |
| Non-Volatile Storage: | Flash [slide] |
| FETs Come in Two | Flavors [slide] |
| Common IR: Control | Flow Graph [slide] |
| Control | Flow Graph for GCD [slide] |
| Flow Control Problems [slide] | |
| Interfaces Last | Forever [slide] |
| Forget Circuits... Let’s solve a Real Problem [slide] | |
| Things To Look | Forward To... [slide] |
| Stack | Frame Details [slide] |
| Stack | Frames as Activation Records [slide] |
| From Atoms to Amazon [slide] | |
| Where Does Noise Come | From? [slide] |
| Frontend Stages: Lexical Analysis [slide] | |
| Frontend Stages: Syntactic Analysis [slide] | |
| Frontend Stages: Semantic Analysis [slide] | |
| Fully Bypassed Pipeline [slide] | |
| Fully-Associative Cache [slide] | |
| Fun With Stacks [slide] | |
| The Universal | Function [slide] |
| Functional Specifications [slide] | |
| Communications | Futures [slide] |
| 8-bit CLA (generate | G & P) [slide] |
| Control Flow Graph for | GCD [slide] |
| Turing Machines | Galore! [slide] |
| General CMOS | Gate Recipe [slide] |
| CMOS | Gates Are Naturally Inverting [slide] |
| Lenient | Gates [slide] |
| Solution: Escapement Strategy (2 | Gates) [slide] |
| Gates, Wires, & Delays [slide] | |
| General CMOS Gate Recipe [slide] | |
| Code | Generation [slide] |
| Karnuagh Maps: A | Geometric Approach [slide] |
| Prime Implicants, | Glitches & Leniency [slide] |
| Common IR: Control Flow | Graph [slide] |
| Control Flow | Graph for GCD [slide] |
| The | HW/SW Balance [slide] |
| Hamming Distance [slide] | |
| Hamming Distance and Bit Errors [slide] | |
| Example: Match | Handler to OS [slide] |
| Which | Handler and OS? #1 [slide] |
| Which | Handler and OS? #2 [slide] |
| Which | Handler and OS? #3 [slide] |
| Example: Timer Interrupt | Handler [slide] |
| Interrupt | Handler Coding [slide] |
| Illop | Handler [slide] |
| Handler for Actual Illops [slide] | |
| Handler for SVCs [slide] | |
| New SVC | Handlers [slide] |
| Asynchronous I/O | Handling [slide] |
| Exception | Handling Logic [slide] |
| Beta Interrupt | Handling [slide] |
| Exception | Handling [slide] |
| When Can Exceptions | Happen? [slide] |
| Non-Volatile Storage: | Hard Disk [slide] |
| Now Put It in | Hardware [slide] |
| Control FSM | Hardware [slide] |
| So Far: Single-purpose | Hardware [slide] |
| Hardware Support for Semaphores [slide] | |
| Exception | Hardware [slide] |
| Reminder: | Hardware Caches [slide] |
| The Cache | Has Two Customers! [slide] |
| Pipeline | Hazards [slide] |
| Data | Hazards [slide] |
| Resolving | Hazards I [slide] |
| Resolving Data | Hazards I [slide] |
| Resolving Data | Hazards II [slide] |
| Summary: Pipelining with Data | Hazards [slide] |
| Control | Hazards I [slide] |
| Control | Hazards II [slide] |
| Resolving Control | Hazards [slide] |
| Resolving Control | Hazards With Stalls [slide] |
| Stall Logic For Control | Hazards [slide] |
| Resolving | Hazards II [slide] |
| Resolving | Hazards with Speculation I [slide] |
| Resolving | Hazards with Speculation II [slide] |
| Speculation Logic For Control | Hazards [slide] |
| Reminder: Resolving | Hazards [slide] |
| Compilers Can | Help [slide] |
| Here’s a Design Approach [slide] | |
| Hexadecimal Notation [slide] | |
| Memory | Hierarchy Interface [slide] |
| Memory | Hierarchy Interface [slide] |
| A Typical Memory | Hierarchy [slide] |
| Reminder: A Typical Memory | Hierarchy [slide] |
| Reminder: A Typical Memory | Hierarchy [slide] |
| Extending the Memory | Hierarchy [slide] |
| Example: How | High of a Hit Ratio? [slide] |
| High-level Languages [slide] | |
| Example: How High of a | Hit Ratio? [slide] |
| Um, About That | Hold Time... [slide] |
| Housekeeping Issues... [slide] | |
| How Does It Get Assembled? [slide] | |
| Example: | How High of a Hit Ratio? [slide] |
| How Do 6.004 Students Do Laundry? [slide] | |
| How Can We Reduce Power? [slide] | |
| Huffman’s Algorithm [slide] | |
| OS Organization: | I/O Devices [slide] |
| Asynchronous | I/O Handling [slide] |
| Interrupt-based Asynch | I/O [slide] |
| Instruction-level Parallelism | (ILP) [slide] |
| Intermediate Representation | (IR) [slide] |
| IR Optimization [slide] | |
| Example | IR Optimizations I [slide] |
| Example | IR Optimizations II [slide] |
| Example | IR Optimizations II [slide] |
| Example | IR Optimizations III [slide] |
| Example | IR Optimizations IV [slide] |
| Example | IR Optimizations IV [slide] |
| Common | IR: Control Flow Graph [slide] |
| Beta | ISA Summary [slide] |
| Reminder: Beta | ISA [slide] |
| Instruction Set Architecture | (ISA) [slide] |
| ISA Design [slide] | |
| Beta | ISA Summary [slide] |
| ISA Issues: Simple vs. Complex Branches [slide] | |
| Beta | ISA: Storage [slide] |
| Beta | ISA: Instructions [slide] |
| Mr. Blue Visits the | ISS [slide] |
| Mr. Blue Visits the | ISS (cont&rsquo'd.) [slide] |
| Example IR Optimizations | IV [slide] |
| Example IR Optimizations | IV [slide] |
| N-Channel MOSFET | $I_{DS}$ vs. $V_{DS}$ [slide] |
| Key | Idea: Stored-program Computer [slide] |
| But, What | If... [slide] |
| Ill-formed Pipeline [slide] | |
| Illop Handler [slide] | |
| Handler for Actual | Illops [slide] |
| Impact of Enormous Miss Penalty [slide] | |
| Exception | Implementation [slide] |
| CMOS Sum-of-products | Implementation [slide] |
| Systematic | Implementation Strategies [slide] |
| Implementation Details [slide] | |
| Strong Priority | Implementation [slide] |
| Implementation Sketch #1 [slide] | |
| Implementation Sketch #2 [slide] | |
| Pipelined | Implementation [slide] |
| Stack | Implementation [slide] |
| Semaphore | Implementation [slide] |
| Virtual Memory | Implementation: Paging [slide] |
| Vector Processing | Implementations [slide] |
| Implementing Procedures [slide] | |
| Finding | Implicants [slide] |
| Finding Prime | Implicants [slide] |
| Prime | Implicants, Glitches & Leniency [slide] |
| Associativity | Implies Choices [slide] |
| Improving on the Bus [slide] | |
| Improving 5-Stage Pipeline Performance [slide] | |
| Improving 5-Stage Pipeline Performance [slide] | |
| Improving Speed: Adder Example [slide] | |
| Increase Throughput With Pipelining [slide] | |
| Solution: Delay | Increases Reliability [slide] |
| Approach: | Incremental Featurism [slide] |
| Encoding | Information [slide] |
| Representing | Information with Voltage [slide] |
| Information Processing = Computation [slide] | |
| Quantifying | Information [slide] |
| Information Conveyed by Data [slide] | |
| Example: | Information Content [slide] |
| Probability and | Information Content [slide] |
| What is | Information? [slide] |
| ANDs and ORs with > 2 | Inputs [slide] |
| Beta | Inside! [slide] |
| Insight: We Need a Stack! [slide] | |
| Instruction Fetch/Decode [slide] | |
| Load | Instruction I [slide] |
| Load | Instruction II [slide] |
| Store | Instruction I [slide] |
| Store | Instruction II [slide] |
| JMP | Instruction I [slide] |
| JMP | Instruction II [slide] |
| Load Relative | Instruction [slide] |
| LDR | Instruction I [slide] |
| LDR | Instruction II [slide] |
| Instruction Set Architecture (ISA) [slide] | |
| Beta JMP | Instruction [slide] |
| Instruction-level Parallelism (ILP) [slide] | |
| Emulated | Instruction: swapreg(Ra,Rc) [slide] |
| Assembly of | Instructions [slide] |
| UASM Macros for Beta | Instructions [slide] |
| ALU | Instructions [slide] |
| BEQ/BNE | Instructions I [slide] |
| BEQ/BNE | Instructions II [slide] |
| Instructions [slide] | |
| Beta ISA: | Instructions [slide] |
| Beta ALU | Instructions [slide] |
| Beta ALU | Instructions with Constant [slide] |
| Beta Load and Store | Instructions [slide] |
| Beta Branch | Instructions [slide] |
| Can We Solve Factorial with ALU | Instructions? [slide] |
| Encoding Postive | Integers [slide] |
| Encoding Signed | Integers [slide] |
| Buses, | Interconnect, So...? [slide] |
| Memory Hierarchy | Interface [slide] |
| Memory Hierarchy | Interface [slide] |
| Interface Standard: Backplane Bus [slide] | |
| Interfaces Last Forever [slide] | |
| System | Interfaces & Modularity [slide] |
| Circuit | Interleaving I [slide] |
| Circuit | Interleaving II [slide] |
| Circuit | Interleaving III [slide] |
| Intermediate Representation (IR) [slide] | |
| Interpretation [slide] | |
| Interpretation vs. Compilation [slide] | |
| Interprocess Communication [slide] | |
| Interrupt Latency [slide] | |
| Sources of | Interrupt Latency [slide] |
| Interrupt Load [slide] | |
| Exception + | Interrupt Logic [slide] |
| Beta | Interrupt Handling [slide] |
| Example: Timer | Interrupt Handler [slide] |
| Interrupt Handler Coding [slide] | |
| One | Interrupt at a Time [slide] |
| Interrupt-based Asynch I/O [slide] | |
| Recurring | Interrupts [slide] |
| Asynchronous | Interrupts [slide] |
| Key Technology: Timer | Interrupts [slide] |
| CMOS | Inverter VTC [slide] |
| Beyond | Inverters [slide] |
| CMOS Gates Are Naturally | Inverting [slide] |
| CMOS Loves | Inverting Logic [slide] |
| Why | Isn’t This a 20-minute Lecture? [slide] |
| One Last Timing | Issue [slide] |
| Housekeeping | Issues... [slide] |
| ISA | Issues: Simple vs. Complex Branches [slide] |
| compile_statement: | Iteration [slide] |
| JMP Instruction I [slide] | |
| JMP Instruction II [slide] | |
| Beta | JMP Instruction [slide] |
| Extending | K-maps to 4-variable Tables [slide] |
| Karnuagh Maps: A Geometric Approach [slide] | |
| Key Idea: Stored-program Computer [slide] | |
| Coded Algorithms: | Key to CS [slide] |
| Key Technology: Timer Interrupts [slide] | |
| Using | LD and ST [slide] |
| LDR Instruction I [slide] | |
| LDR Instruction II [slide] | |
| Labels and Offsets [slide] | |
| Assembly | Language [slide] |
| Summary: Assembly | Language [slide] |
| Programming | Languages [slide] |
| Programming | Languages [slide] |
| High-level | Languages [slide] |
| One | Last Timing Issue [slide] |
| Interfaces | Last Forever [slide] |
| New Device: D | Latch [slide] |
| Communication Technologies: | Latency [slide] |
| Interrupt | Latency [slide] |
| Sources of Interrupt | Latency [slide] |
| Doing N Loads of | Laundry [slide] |
| How Do 6.004 Students Do | Laundry? [slide] |
| Amdahl’s | Law [slide] |
| Amdahl’s | Law and Parallelism [slide] |
| UASM Expressions and | Layout [slide] |
| Why Isn’t This a 20-minute | Lecture? [slide] |
| Then a Little to the | Left... [slide] |
| A Plea for | Lenience [slide] |
| Prime Implicants, Glitches & | Leniency [slide] |
| Lenient Gates [slide] | |
| 6.004: The Big | Lesson [slide] |
| Lessons learned: single driver; point-to-point [slide] | |
| Lessons learned: clock recovery [slide] | |
| Let’s Build a System! [slide] | |
| Forget Circuits... | Let’s solve a Real Problem [slide] |
| Let’s Try it Out! [slide] | |
| Let's Build a RoboAnt [slide] | |
| Frontend Stages: | Lexical Analysis [slide] |
| Digital State: What We'd | Like to Build [slide] |
| FSM | Limitations [slide] |
| Limits to Pipeline Depth [slide] | |
| Limits to Single-Processor Performance [slide] | |
| Bus | Lines as Transmission Lines [slide] |
| Bus Lines as Transmission | Lines [slide] |
| Solving Procedure | Linkage Problems [slide] |
| Procedure | Linkage Templates [slide] |
| Procedure | Linkage: First Try [slide] |
| Procedure | Linkage: The Contract [slide] |
| Combinational Device Wish | List [slide] |
| A | Little to the Right... [slide] |
| Then a | Little to the Left... [slide] |
| And Add A | Little Parallelism... [slide] |
| ... With a | Little Discipline [slide] |
| Load Instruction I [slide] | |
| Load Instruction II [slide] | |
| Load Relative Instruction [slide] | |
| Interrupt | Load [slide] |
| Beta | Load and Store Instructions [slide] |
| One | Load At a Time [slide] |
| Load-to-Use Stalls [slide] | |
| Doing N | Loads of Laundry [slide] |
| Doing N | Loads... The 6.004 Way [slide] |
| The | Locality Principle [slide] |
| Accessing User | Locations [slide] |
| Logarithmic-latency Networks [slide] | |
| Control | Logic [slide] |
| CMOS Loves Inverting | Logic [slide] |
| Logic Simplification [slide] | |
| Logic According to ROMs [slide] | |
| Stall | Logic [slide] |
| Bypass | Logic [slide] |
| Stall | Logic For Control Hazards [slide] |
| Speculation | Logic For Control Hazards [slide] |
| Exception Handling | Logic [slide] |
| Exception + Interrupt | Logic [slide] |
| Reduce Area With Sequential | Logic [slide] |
| Wanted: Faster Carry | Logic! [slide] |
| Things To | Look Forward To... [slide] |
| Carry | Look-ahead Adders (CLA) [slide] |
| Translation | Look-aside Buffer (TLB) [slide] |
| Synthesis By Table | Lookup [slide] |
| Lost in Space [slide] | |
| CMOS | Loves Inverting Logic [slide] |
| Fewer Transitions → | Lower Power [slide] |
| Example: | MESI Cache Coherence Protocol [slide] |
| MESI Activity Diagram [slide] | |
| MMU Address Translation [slide] | |
| MMU Address Translation [slide] | |
| Putting it All Together: | MMU with TLB [slide] |
| N-Channel | MOSFET $I_{DS}$ vs. $V_{DS}$ [slide] |
| N-Channel | MOSFET: Physical View [slide] |
| N-Channel | MOSFET: Electrical View [slide] |
| We’ve Been Designing a | MUX [slide] |
| Our Memory | Machine [slide] |
| Our New | Machine [slide] |
| Building a Virtual | Machine (VM) [slide] |
| Abstraction du jour: Finite State | Machines [slide] |
| Turing | Machines [slide] |
| Turing | Machines Galore! [slide] |
| Mighty | Macroinstructions [slide] |
| UASM | Macros for Beta Instructions [slide] |
| Stack Management | Macros [slide] |
| Useful | Macros [slide] |
| Stack | Management Macros [slide] |
| Memory | Management & Protection [slide] |
| Simple Page | Map Design [slide] |
| Page | Map Arithmetic [slide] |
| Example: Page | Map Arithmetic [slide] |
| RAM-Resident Page | Maps [slide] |
| Multi-level Page | Maps [slide] |
| Karnuagh | Maps: A Geometric Approach [slide] |
| Noise | Margins [slide] |
| Example: | Match Handler to OS [slide] |
| Meaning of Entropy [slide] | |
| Meanwhile, Outside the Box... [slide] | |
| Performance | Measures [slide] |
| Our | Memory Machine [slide] |
| Memory Technologies [slide] | |
| Summary: | Memory Technologies [slide] |
| Memory Hierarchy Interface [slide] | |
| Memory Hierarchy Interface [slide] | |
| Memory Reference Patterns [slide] | |
| A Typical | Memory Hierarchy [slide] |
| Read-only | Memory (ROM) [slide] |
| Settable | Memory Element [slide] |
| Review: Virtual | Memory [slide] |
| Reminder: A Typical | Memory Hierarchy [slide] |
| Reminder: A Typical | Memory Hierarchy [slide] |
| Extending the | Memory Hierarchy [slide] |
| Virtual | Memory [slide] |
| Virtual | Memory Implementation: Paging [slide] |
| Memory Management & Protection [slide] | |
| Using Caches with Virtual | Memory [slide] |
| Summary: Virtual | Memory [slide] |
| Memory: Using Capacitors [slide] | |
| Memory: Using Feedback [slide] | |
| Virtual | Memory: the CS View [slide] |
| Mesh Topologies [slide] | |
| The Mysterious | Metastable State [slide] |
| Metastable State: Properties [slide] | |
| A Pipelining | Methodology [slide] |
| Cache | Metrics [slide] |
| Mighty Macroinstructions [slide] | |
| Boolean | Minimization [slide] |
| Impact of Enormous | Miss Penalty [slide] |
| Direct-Mapped Cache Problem: Conflict | Misses [slide] |
| Electrical | Model for Real Wires [slide] |
| The von Neumann | Model [slide] |
| Model: Discrete Time [slide] | |
| Models of Computation [slide] | |
| Other | Models of Computation [slide] |
| Other | Models of Computation [slide] |
| Anatomy of a | Modern Compiler [slide] |
| A | Modern Out-of-Order Superscalar Processor [slide] |
| System Interfaces & | Modularity [slide] |
| More Building Blocks [slide] | |
| More Two’s Complement [slide] | |
| Bounded Buffer Problem with | More Semaphores [slide] |
| Bounded Buffer Problem with Even | More Semaphores [slide] |
| Mr. Blue Visits the ISS [slide] | |
| Mr. Blue Visits the ISS (cont&rsquo'd.) [slide] | |
| Detecting | Multi-bit Errors [slide] |
| Multi-level Page Maps [slide] | |
| Multi-ported Register File [slide] | |
| Multicore Processors [slide] | |
| Multicore Caches [slide] | |
| Scheduling of | Multiple Devices [slide] |
| Multiple Exceptions? [slide] | |
| Processes: | Multiplexing the CPU [slide] |
| Binary | Multiplication [slide] |
| 2's Complement | Multiplication [slide] |
| Combinational | Multiplier [slide] |
| 2's Complement | Multiplier [slide] |
| Carry-save Pipelined | Multiplier [slide] |
| Multiported SRAMs [slide] | |
| Semaphores for | Mutual Exclusion [slide] |
| What’s | My Transition Diagram? [slide] |
| The | Mysterious Metastable State [slide] |
| Doing | N Loads of Laundry [slide] |
| Doing | N Loads... The 6.004 Way [slide] |
| N-Channel MOSFET: Physical View [slide] | |
| N-Channel MOSFET: Electrical View [slide] | |
| N-Channel MOSFET $I_{DS}$ vs. $V_{DS}$ [slide] | |
| N-way Set-Associative Cache I [slide] | |
| N-way Set-Associative Cache II [slide] | |
| Wide | NANDs and NORs [slide] |
| Wide NANDs and | NORs [slide] |
| CMOS Gates Are | Naturally Inverting [slide] |
| The | Need for “Real Time” [slide] |
| The | Need for Preemption [slide] |
| Insight: We | Need a Stack! [slide] |
| Procedure Storage | Needs [slide] |
| Logarithmic-latency | Networks [slide] |
| The von | Neumann Model [slide] |
| Anatomy of a von | Neumann Computer [slide] |
| Our | New Machine [slide] |
| New Problem → New Control FSM [slide] | |
| New Problem → | New Control FSM [slide] |
| New Device: D Latch [slide] | |
| Adding | New SVCs [slide] |
| New SVC Handlers [slide] | |
| Dealing With | Noise [slide] |
| Where Does | Noise Come From? [slide] |
| Noise Margins [slide] | |
| Non-Volatile Storage: Flash [slide] | |
| Non-Volatile Storage: Hard Disk [slide] | |
| The Case for a | Non-minimal SOP [slide] |
| Weak | (Non-preemptive) Priorities [slide] |
| Hexadecimal | Notation [slide] |
| Now Put It in Hardware [slide] | |
| Can We Solve Factorial | Now? [slide] |
| ANDs and | ORs with > 2 Inputs [slide] |
| OS Organization: I/O Devices [slide] | |
| Example: Match Handler to | OS [slide] |
| OS Organization: Processes [slide] | |
| Communicationg with the | OS [slide] |
| OS Organization: Supervisor Calls [slide] | |
| Which Handler and | OS? #1 [slide] |
| Which Handler and | OS? #2 [slide] |
| Which Handler and | OS? #3 [slide] |
| Labels and | Offsets [slide] |
| Okay, Back to Circuits... [slide] | |
| ALU | Op Datapath I [slide] |
| ALU | Op Datapath II [slide] |
| Should We Support Constant | Operands? [slide] |
| Best of Both Worlds: Overlapped | Operation [slide] |
| ALU | Operations (with constant) I [slide] |
| ALU | Operations (with constant) II [slide] |
| Data-Dependent Vector | Operations [slide] |
| IR | Optimization [slide] |
| Optimization: keep values in regs [slide] | |
| Example IR | Optimizations I [slide] |
| Example IR | Optimizations II [slide] |
| Example IR | Optimizations II [slide] |
| Example IR | Optimizations III [slide] |
| Example IR | Optimizations IV [slide] |
| Example IR | Optimizations IV [slide] |
| Optimizing Your Design [slide] | |
| Argument | Order & BP Usage [slide] |
| OS | Organization: I/O Devices [slide] |
| OS | Organization: Processes [slide] |
| OS | Organization: Supervisor Calls [slide] |
| Other Models of Computation [slide] | |
| Other Models of Computation [slide] | |
| Let’s Try it | Out! [slide] |
| A Modern | Out-of-Order Superscalar Processor [slide] |
| Uniprocessor | Outcome [slide] |
| What Are the Possible | Outcomes [slide] |
| Meanwhile, | Outside the Box... [slide] |
| Dealing With | Outside Corners [slide] |
| Thinking | Outside the Box [slide] |
| Best of Both Worlds: | Overlapped Operation [slide] |
| 8-bit CLA (generate G & | P) [slide] |
| Example serial link: | PCI Express (PCIe) [slide] |
| Example serial link: PCI Express | (PCIe) [slide] |
| Simple | Page Map Design [slide] |
| Page Faults [slide] | |
| Example: | Page Fault [slide] |
| Page Map Arithmetic [slide] | |
| Example: | Page Map Arithmetic [slide] |
| RAM-Resident | Page Maps [slide] |
| Multi-level | Page Maps [slide] |
| Virtual Memory Implementation: | Paging [slide] |
| Demand | Paging [slide] |
| A | Parallel Bus Transaction [slide] |
| Parallel Processing Summary [slide] | |
| Instruction-level | Parallelism (ILP) [slide] |
| Data-Level | Parallelism [slide] |
| Amdahl’s Law and | Parallelism [slide] |
| Thread-Level | Parallelism [slide] |
| And Add A Little | Parallelism... [slide] |
| Parity Check [slide] | |
| Memory Reference | Patterns [slide] |
| Impact of Enormous Miss | Penalty [slide] |
| Processor | Performance [slide] |
| Processor | Performance [slide] |
| Improving 5-Stage Pipeline | Performance [slide] |
| Improving 5-Stage Pipeline | Performance [slide] |
| Limits to Single-Processor | Performance [slide] |
| Single-Cycle Beta | Performance [slide] |
| Performance Measures [slide] | |
| Performance/Cost Analysis [slide] | |
| Dining | Philosophers [slide] |
| N-Channel MOSFET: | Physical View [slide] |
| Example: Virtual → | Physical Translation [slide] |
| Using Voltages to Encode a | Picture [slide] |
| Improving 5-Stage | Pipeline Performance [slide] |
| Limits to | Pipeline Depth [slide] |
| Improving 5-Stage | Pipeline Performance [slide] |
| Pipeline Hazards [slide] | |
| Pipeline Diagrams [slide] | |
| Fully Bypassed | Pipeline [slide] |
| Pipeline Diagrams [slide] | |
| Pipeline Conventions [slide] | |
| Ill-formed | Pipeline [slide] |
| Pipeline Example [slide] | |
| 5-Stage | Pipelined Processors [slide] |
| Pipelined Implementation [slide] | |
| 5-Stage | Pipelined Datapath [slide] |
| Pipelined Control [slide] | |
| Pipelined Execution Example [slide] | |
| Pipelined Cicuits [slide] | |
| Pipelined Components [slide] | |
| Carry-save | Pipelined Multiplier [slide] |
| Wider or Superscalar | Pipelines [slide] |
| Summary: | Pipelining with Data Hazards [slide] |
| A | Pipelining Methodology [slide] |
| Increase Throughput With | Pipelining [slide] |
| A | Plea for Lenience [slide] |
| Serial, | Point-to-point Communications [slide] |
| Replacement | Policies [slide] |
| Write | Policy [slide] |
| A | Pop Quiz! [slide] |
| What Are the | Possible Outcomes [slide] |
| Encoding | Postive Integers [slide] |
| The | Power of Semaphores [slide] |
| CMOS Static | Power Dissipation [slide] |
| CMOS Dynamic | Power Dissipation I [slide] |
| CMOS Dynamic | Power Dissipation II [slide] |
| Fewer Transitions → Lower | Power [slide] |
| The | Power of Engineering Abstractions [slide] |
| How Can We Reduce | Power? [slide] |
| Semaphores for | Precedence [slide] |
| Registers are | Predefined Symbols [slide] |
| Branch | Prediction [slide] |
| The Need for | Preemption [slide] |
| Contexts: A Sneak | Preview [slide] |
| Finding | Prime Implicants [slide] |
| Prime Implicants, Glitches & Leniency [slide] | |
| The Locality | Principle [slide] |
| Weak (Non-preemptive) | Priorities [slide] |
| Setting | Priorities [slide] |
| Strong | Priority Implementation [slide] |
| Probability and Information Content [slide] | |
| New | Problem → New Control FSM [slide] |
| Forget Circuits... Let’s solve a Real | Problem [slide] |
| Example: Bounded Buffer | Problem [slide] |
| Bounded Buffer | Problem with Semaphores [slide] |
| Bounded Buffer | Problem with More Semaphores [slide] |
| Bounded Buffer | Problem with Even More Semaphores [slide] |
| Direct-Mapped Cache | Problem: Conflict Misses [slide] |
| Solving Procedure Linkage | Problems [slide] |
| Flow Control | Problems [slide] |
| Producer/Consumer Atomicity | Problems [slide] |
| Procedure Calling Convention [slide] | |
| Procedure Linkage: First Try [slide] | |
| Procedure Storage Needs [slide] | |
| Solving | Procedure Linkage Problems [slide] |
| Procedure Linkage: The Contract [slide] | |
| Procedure Linkage Templates [slide] | |
| Implementing | Procedures [slide] |
| Procedures: A Software Abstraction [slide] | |
| One VM For Each | Process [slide] |
| OS Organization: | Processes [slide] |
| Processes: Multiplexing the CPU [slide] | |
| Exception | Processing [slide] |
| Information | Processing = Computation [slide] |
| Vector | Processing Implementations [slide] |
| Parallel | Processing Summary [slide] |
| Processor Performance [slide] | |
| Processor Performance [slide] | |
| A Modern Out-of-Order Superscalar | Processor [slide] |
| 5-Stage Pipelined | Processors [slide] |
| Multicore | Processors [slide] |
| Producer/Consumer Atomicity Problems [slide] | |
| A Simple | Programmable Datapath [slide] |
| Programming Languages [slide] | |
| Programming Languages [slide] | |
| Programming The Eniac [slide] | |
| Propagation Delay [slide] | |
| Metastable State: | Properties [slide] |
| Memory Management & | Protection [slide] |
| Fix: “Snoopy” Cache Coherence | Protocol [slide] |
| Example: MESI Cache Coherence | Protocol [slide] |
| Pseudoinstructions [slide] | |
| Factorial with | Pseudoinstructions [slide] |
| Now | Put It in Hardware [slide] |
| Putting It All Together: Factorial [slide] | |
| Putting It All Together I [slide] | |
| Putting It All Together II [slide] | |
| Putting It All Together: Factorial [slide] | |
| Putting it All Together: MMU with TLB [slide] | |
| Quadratic-cost Topologies [slide] | |
| Quantifying Information [slide] | |
| A Pop | Quiz! [slide] |
| Static | RAM (SRAM) [slide] |
| 1T Dynamic | RAM (DRAM) Cell [slide] |
| RAM-Resident Page Maps [slide] | |
| Read-only Memory | (ROM) [slide] |
| ROM Example [slide] | |
| ROM Example continued [slide] | |
| Faster | ROMs [slide] |
| Logic According to | ROMs [slide] |
| Rapid Context Switching [slide] | |
| Example: How High of a Hit | Ratio? [slide] |
| Raw Data [slide] | |
| SRAM | Read [slide] |
| Read-only Memory (ROM) [slide] | |
| ReadKey SVC: Attempt #1 [slide] | |
| ReadKey SVC: Attempt #2 [slide] | |
| ReadKey SVC: Attempt #3 [slide] | |
| ReadKey SVC: Attempt #4 [slide] | |
| 1T DRAM Writes and | Reads [slide] |
| Electrical Model for | Real Wires [slide] |
| Forget Circuits... Let’s solve a | Real Problem [slide] |
| Real-world Consequences [slide] | |
| CMOS | Recipe [slide] |
| General CMOS Gate | Recipe [slide] |
| Activation | Records [slide] |
| Stack Frames as Activation | Records [slide] |
| Recurring Interrupts [slide] | |
| Recursion? [slide] | |
| How Can We | Reduce Power? [slide] |
| Reduce Area With Sequential Logic [slide] | |
| Equivalent State | Reduction [slide] |
| Memory | Reference Patterns [slide] |
| Multi-ported | Register File [slide] |
| Register File Timing [slide] | |
| Edge-triggered D | Register [slide] |
| Registers are Predefined Symbols [slide] | |
| Summary of Dedicated | Registers [slide] |
| Load | Relative Instruction [slide] |
| Solution: Delay Increases | Reliability [slide] |
| Reminder: Beta ISA [slide] | |
| Reminder: Single-Cycle Beta [slide] | |
| Reminder: Resolving Hazards [slide] | |
| Reminder: A Typical Memory Hierarchy [slide] | |
| Reminder: Hardware Caches [slide] | |
| Reminder: A Typical Memory Hierarchy [slide] | |
| Replacement Policies [slide] | |
| Intermediate | Representation (IR) [slide] |
| Representing Information with Voltage [slide] | |
| Electricity to the | Rescue [slide] |
| Resolving Hazards I [slide] | |
| Resolving Data Hazards I [slide] | |
| Resolving Data Hazards II [slide] | |
| Resolving Control Hazards [slide] | |
| Resolving Control Hazards With Stalls [slide] | |
| Resolving Hazards II [slide] | |
| Resolving Hazards with Speculation I [slide] | |
| Resolving Hazards with Speculation II [slide] | |
| Resolving Exceptions [slide] | |
| Reminder: | Resolving Hazards [slide] |
| Semaphores for | Resource Allocation [slide] |
| Returning to User-mode [slide] | |
| Review: Virtual Memory [slide] | |
| A Little to the | Right... [slide] |
| Let's Build a | RoboAnt [slide] |
| The World Doesn’t | Run on Our Clock! [slide] |
| compile_expr(expr) → | Rx [slide] |
| The Case for a Non-minimal | SOP [slide] |
| Static RAM | (SRAM) [slide] |
| SRAM Cell [slide] | |
| SRAM Read [slide] | |
| SRAM Write [slide] | |
| Summary: | SRAM [slide] |
| Multiported | SRAMs [slide] |
| Using LD and | ST [slide] |
| New | SVC Handlers [slide] |
| ReadKey | SVC: Attempt #1 [slide] |
| ReadKey | SVC: Attempt #2 [slide] |
| ReadKey | SVC: Attempt #3 [slide] |
| ReadKey | SVC: Attempt #4 [slide] |
| Handler for | SVCs [slide] |
| Adding New | SVCs [slide] |
| Simple Timesharing | Scheduler [slide] |
| Sophisticated | Scheduling [slide] |
| Scheduling of Multiple Devices [slide] | |
| Ant | Schematic [slide] |
| Carry | Select Adders [slide] |
| 32-bit Carry | Select Adder [slide] |
| Self-timed Example [slide] | |
| Self-timed Example [slide] | |
| Frontend Stages: | Semantic Analysis [slide] |
| Semaphore Implementation [slide] | |
| Semaphores (Dijkstra) [slide] | |
| Semaphores for Precedence [slide] | |
| Semaphores for Resource Allocation [slide] | |
| Bounded Buffer Problem with | Semaphores [slide] |
| Bounded Buffer Problem with More | Semaphores [slide] |
| Semaphores for Mutual Exclusion [slide] | |
| Bounded Buffer Problem with Even More | Semaphores [slide] |
| The Power of | Semaphores [slide] |
| Semaphores as a Supervisor Call [slide] | |
| Hardware Support for | Semaphores [slide] |
| A Simple | Sequential Circuit [slide] |
| Sequential Consistency [slide] | |
| Alternatives to | Sequential Consistency? [slide] |
| Sequential Circuit Timing [slide] | |
| Reduce Area With | Sequential Logic [slide] |
| Serial, Point-to-point Communications [slide] | |
| Instruction | Set Architecture (ISA) [slide] |
| N-way | Set-Associative Cache I [slide] |
| N-way | Set-Associative Cache II [slide] |
| Settable Memory Element [slide] | |
| Setting Priorities [slide] | |
| Should We Support Constant Operands? [slide] | |
| Synchronization: The Dark | Side [slide] |
| Encoding | Signed Integers [slide] |
| A | Simple Compilation Strategy [slide] |
| A | Simple Sequential Circuit [slide] |
| A | Simple Programmable Datapath [slide] |
| ISA Issues: | Simple vs. Complex Branches [slide] |
| Simple Timesharing Scheduler [slide] | |
| Simple Page Map Design [slide] | |
| Logic | Simplification [slide] |
| Simplified Unpipelined Beta Datapath [slide] | |
| Simultaneous Transactions [slide] | |
| Reminder: | Single-Cycle Beta [slide] |
| Single-Cycle Beta Performance [slide] | |
| Limits to | Single-Processor Performance [slide] |
| Single-bit Error Detection [slide] | |
| Single-clock Synchronous Circuits [slide] | |
| Timing in a | Single-clock System [slide] |
| So Far: | Single-purpose Hardware [slide] |
| Block | Size [slide] |
| Block | Size Trandeoffs [slide] |
| Implementation | Sketch #1 [slide] |
| Implementation | Sketch #2 [slide] |
| Branch Delay | Slots I [slide] |
| Branch Delay | Slots II [slide] |
| Contexts: A | Sneak Preview [slide] |
| So Far: Single-purpose Hardware [slide] | |
| Buses, Interconnect, | So...? [slide] |
| Procedures: A | Software Abstraction [slide] |
| One | Solution [slide] |
| Solution: Delay Increases Reliability [slide] | |
| Solution: Escapement Strategy (2 Gates) [slide] | |
| Can We | Solve Factorial with ALU Instructions? [slide] |
| Can We | Solve Factorial Now? [slide] |
| Solving Procedure Linkage Problems [slide] | |
| Something We Can't Build (Yet) [slide] | |
| Sophisticated Scheduling [slide] | |
| Example UASM | Source File [slide] |
| Sources of Interrupt Latency [slide] | |
| Space & Time Constraints [slide] | |
| Lost in | Space [slide] |
| CMOS Timing | Specifications [slide] |
| Functional | Specifications [slide] |
| Resolving Hazards with | Speculation I [slide] |
| Resolving Hazards with | Speculation II [slide] |
| Speculation Logic For Control Hazards [slide] | |
| Improving | Speed: Adder Example [slide] |
| Stack Implementation [slide] | |
| Stack Management Macros [slide] | |
| Stack Frames as Activation Records [slide] | |
| Stack Frame Details [slide] | |
| Stack Detective [slide] | |
| Insight: We Need a | Stack! [slide] |
| Fun With | Stacks [slide] |
| Frontend | Stages: Lexical Analysis [slide] |
| Frontend | Stages: Syntactic Analysis [slide] |
| Frontend | Stages: Semantic Analysis [slide] |
| Stall Logic [slide] | |
| Stall Logic For Control Hazards [slide] | |
| Load-to-Use | Stalls [slide] |
| Resolving Control Hazards With | Stalls [slide] |
| Interface | Standard: Backplane Bus [slide] |
| Abstraction du jour: Finite | State Machines [slide] |
| State Transition Diagram [slide] | |
| Valid | State Diagrams [slide] |
| State Transition Diagram as a Truth Table [slide] | |
| Discrete Time, Discrete | State [slide] |
| Equivalent | State Reduction [slide] |
| The Mysterious Metastable | State [slide] |
| Metastable | State: Properties [slide] |
| Digital | State: What We'd Like to Build [slide] |
| FSM | States [slide] |
| Static RAM (SRAM) [slide] | |
| CMOS | Static Power Dissipation [slide] |
| An Evolutionary | Step [slide] |
| Beta ISA: | Storage [slide] |
| Storage Conventions [slide] | |
| Procedure | Storage Needs [slide] |
| Non-Volatile | Storage: Flash [slide] |
| Non-Volatile | Storage: Hard Disk [slide] |
| Store Instruction I [slide] | |
| Store Instruction II [slide] | |
| Beta Load and | Store Instructions [slide] |
| Key Idea: | Stored-program Computer [slide] |
| Straightforward Synthesis [slide] | |
| Systematic Implementation | Strategies [slide] |
| A Simple Compilation | Strategy [slide] |
| Solution: Escapement | Strategy (2 Gates) [slide] |
| Strong Priority Implementation [slide] | |
| Control | Structure Alternatives [slide] |
| Control | Structure Taxonomy [slide] |
| How Do 6.004 | Students Do Laundry? [slide] |
| Sum-of-products Building Blocks [slide] | |
| CMOS | Sum-of-products Implementation [slide] |
| Beta ISA | Summary [slide] |
| Summary [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Beta ISA | Summary [slide] |
| Parallel Processing | Summary [slide] |
| Summary [slide] | |
| Summary [slide] | |
| Summary of Dedicated Registers [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Summary [slide] | |
| Summary: Assembly Language [slide] | |
| Summary: SRAM [slide] | |
| Summary: DRAM [slide] | |
| Summary: Memory Technologies [slide] | |
| Summary: Cache Tradeoffs [slide] | |
| Summary: Pipelining with Data Hazards [slide] | |
| Summary: Virtual Memory [slide] | |
| Wider or | Superscalar Pipelines [slide] |
| A Modern Out-of-Order | Superscalar Processor [slide] |
| Semaphores as a | Supervisor Call [slide] |
| OS Organization: | Supervisor Calls [slide] |
| Should We | Support Constant Operands? [slide] |
| Hardware | Support for Semaphores [slide] |
| Rapid Context | Switching [slide] |
| Registers are Predefined | Symbols [slide] |
| Synchronization: The Dark Side [slide] | |
| The Bounded-tie | Synchronizer [slide] |
| Single-clock | Synchronous Circuits [slide] |
| Synchronous Communication [slide] | |
| Frontend Stages: | Syntactic Analysis [slide] |
| Straightforward | Synthesis [slide] |
| Synthesis By Table Lookup [slide] | |
| Computer | System Technologies [slide] |
| System Interfaces & Modularity [slide] | |
| Why Did Our | System Fail? [slide] |
| A Combinational Digital | System [slide] |
| Timing in a Single-clock | System [slide] |
| Let’s Build a | System! [slide] |
| Systematic Implementation Strategies [slide] | |
| Flakey Control | Systems [slide] |
| Translation Look-aside Buffer | (TLB) [slide] |
| Putting it All Together: MMU with | TLB [slide] |
| Synthesis By | Table Lookup [slide] |
| State Transition Diagram as a Truth | Table [slide] |
| Building the Transition | Table [slide] |
| Truth | Tables with Don’t Cares [slide] |
| Extending K-maps to 4-variable | Tables [slide] |
| Control Structure | Taxonomy [slide] |
| Combine | Techniques [slide] |
| Memory | Technologies [slide] |
| Summary: Memory | Technologies [slide] |
| Computer System | Technologies [slide] |
| Communication | Technologies: Latency [slide] |
| Key | Technology: Timer Interrupts [slide] |
| Procedure Linkage | Templates [slide] |
| Unsolvable? | That Can’t Be True... [slide] |
| Um, About | That Hold Time... [slide] |
| Then a Little to the Left... [slide] | |
| Things To Look Forward To... [slide] | |
| Thinking Outside the Box [slide] | |
| Is | This a Combination Device? [slide] |
| Why Isn’t | This a 20-minute Lecture? [slide] |
| Thread-Level Parallelism [slide] | |
| Increase | Throughput With Pipelining [slide] |
| The Need for “Real | Time” [slide] |
| Space & | Time Constraints [slide] |
| One Load At a | Time [slide] |
| Model: Discrete | Time [slide] |
| One Interrupt at a | Time [slide] |
| Discrete | Time, Discrete State [slide] |
| Um, About That Hold | Time... [slide] |
| Key Technology: | Timer Interrupts [slide] |
| Example: | Timer Interrupt Handler [slide] |
| Simple | Timesharing Scheduler [slide] |
| Register File | Timing [slide] |
| CMOS | Timing Specifications [slide] |
| One Last | Timing Issue [slide] |
| D-Register | Timing [slide] |
| Timing in a Single-clock System [slide] | |
| Sequential Circuit | Timing [slide] |
| Things To Look Forward | To... [slide] |
| Communications in | Today's Computers [slide] |
| Putting It All | Together I [slide] |
| Putting It All | Together II [slide] |
| Putting It All | Together: Factorial [slide] |
| Putting It All | Together: Factorial [slide] |
| Putting it All | Together: MMU with TLB [slide] |
| Communication | Topologies [slide] |
| Quadratic-cost | Topologies [slide] |
| Mesh | Topologies [slide] |
| CPU Design | Tradeoffs [slide] |
| Associativity | Tradeoffs [slide] |
| Summary: Cache | Tradeoffs [slide] |
| Block Size | Trandeoffs [slide] |
| A Parallel Bus | Transaction [slide] |
| Simultaneous | Transactions [slide] |
| Voltage | Transfer Characteristic [slide] |
| State | Transition Diagram [slide] |
| State | Transition Diagram as a Truth Table [slide] |
| What’s My | Transition Diagram? [slide] |
| Building the | Transition Table [slide] |
| Fewer | Transitions → Lower Power [slide] |
| MMU Address | Translation [slide] |
| Example: Virtual → Physical | Translation [slide] |
| Translation Look-aside Buffer (TLB) [slide] | |
| MMU Address | Translation [slide] |
| Bus Lines as | Transmission Lines [slide] |
| Encodings as Binary | Trees [slide] |
| Unsolvable? That Can’t Be | True... [slide] |
| Truth Tables with Don’t Cares [slide] | |
| State Transition Diagram as a | Truth Table [slide] |
| Let’s | Try it Out! [slide] |
| Procedure Linkage: First | Try [slide] |
| Turing Machines [slide] | |
| Turing Machines Galore! [slide] | |
| Turing Universality [slide] | |
| FETs Come in | Two Flavors [slide] |
| The Cache Has | Two Customers! [slide] |
| Two’s Complement Encoding [slide] | |
| More | Two’s Complement [slide] |
| A | Typical Memory Hierarchy [slide] |
| Reminder: A | Typical Memory Hierarchy [slide] |
| Reminder: A | Typical Memory Hierarchy [slide] |
| Example | UASM Source File [slide] |
| UASM Macros for Beta Instructions [slide] | |
| UASM Expressions and Layout [slide] | |
| Um, About That Hold Time... [slide] | |
| Uncomputability! [slide] | |
| Why fH is | Uncomputable [slide] |
| Uniprocessor Outcome [slide] | |
| Universal Building Blocks [slide] | |
| The | Universal Function [slide] |
| Universality [slide] | |
| Turing | Universality [slide] |
| Univsersality? [slide] | |
| Simplified | Unpipelined Beta Datapath [slide] |
| Unsolvable? That Can’t Be True... [slide] | |
| Argument Order & BP | Usage [slide] |
| Useful Macros [slide] | |
| Accessing | User Locations [slide] |
| Returning to | User-mode [slide] |
| Using Voltages to Encode a Picture [slide] | |
| Using Voltages Digitally [slide] | |
| Using LD and ST [slide] | |
| Memory: | Using Capacitors [slide] |
| Memory: | Using Feedback [slide] |
| Using Caches with Virtual Memory [slide] | |
| Building a Virtual Machine | (VM) [slide] |
| One | VM For Each Process [slide] |
| CMOS Inverter | VTC [slide] |
| VTC Deductions [slide] | |
| VTC Example [slide] | |
| N-Channel MOSFET $I_{DS}$ vs. | $V_{DS}$ [slide] |
| Valid State Diagrams [slide] | |
| Variable-length Encodings [slide] | |
| Example: | Variable-length Encoding [slide] |
| Vector Code Example [slide] | |
| Data-Dependent | Vector Operations [slide] |
| Vector Processing Implementations [slide] | |
| 5-stage Beta: Final | Version [slide] |
| N-Channel MOSFET: Physical | View [slide] |
| N-Channel MOSFET: Electrical | View [slide] |
| Virtual Memory: the CS | View [slide] |
| Review: | Virtual Memory [slide] |
| Building a | Virtual Machine (VM) [slide] |
| Virtual Memory [slide] | |
| Virtual Memory Implementation: Paging [slide] | |
| Example: | Virtual → Physical Translation [slide] |
| Virtual Memory: the CS View [slide] | |
| Using Caches with | Virtual Memory [slide] |
| Summary: | Virtual Memory [slide] |
| Mr. Blue | Visits the ISS [slide] |
| Mr. Blue | Visits the ISS (cont&rsquo'd.) [slide] |
| Representing Information with | Voltage [slide] |
| Voltage Transfer Characteristic [slide] | |
| Using | Voltages to Encode a Picture [slide] |
| Using | Voltages Digitally [slide] |
| Wanted: Faster Carry Logic! [slide] | |
| D-Register | Waveforms [slide] |
| FSMs All the | Way Down? [slide] |
| Doing N Loads... The 6.004 | Way [slide] |
| Weak (Non-preemptive) Priorities [slide] | |
| Where Does Noise Come From? [slide] | |
| Wide NANDs and NORs [slide] | |
| Wider or Superscalar Pipelines [slide] | |
| Electrical Model for Real | Wires [slide] |
| Gates, | Wires, & Delays [slide] |
| Combinational Device | Wish List [slide] |
| The | World Doesn’t Run on Our Clock! [slide] |
| Best of Both | Worlds: Overlapped Operation [slide] |
| SRAM | Write [slide] |
| Write Policy [slide] | |
| Write Down Equations [slide] | |
| Write-back [slide] | |
| Write-back with “Dirty” Bits [slide] | |
| 1T DRAM | Writes and Reads [slide] |
| Something We Can't Build | (Yet) [slide] |
| Optimizing | Your Design [slide] |
| 8-bit CLA | (carry generation) [slide] |
| Lessons learned: | clock recovery [slide] |
| compile_expr(expr) → Rx [slide] | |
| compile_statement [slide] | |
| compile_statement: Conditional [slide] | |
| compile_statement: Iteration [slide] | |
| 8-bit CLA | (complete) [slide] |
| ALU Operations (with | constant) I [slide] |
| ALU Operations (with | constant) II [slide] |
| Mr. Blue Visits the ISS | (cont&rsquo'd.) [slide] |
| ROM Example | continued [slide] |
| “Let me | count the ways.” [slide] |
| Lessons learned: single | driver; point-to-point [slide] |
| The Need for | “Real Time” [slide] |
| “Let me count the ways.” [slide] | |
| Why | fH is Uncomputable [slide] |
| 8-bit CLA | (generate G & P) [slide] |
| 8-bit CLA (carry | generation) [slide] |
| Beta: Our | “Final Answer” [slide] |
| Write-back with | “Dirty” Bits [slide] |
| Optimization: | keep values in regs [slide] |
| Or take the | lazy route... [slide] |
| Lessons | learned: single driver; point-to-point [slide] |
| Lessons | learned: clock recovery [slide] |
| Example serial | link: PCI Express (PCIe) [slide] |
| “Let | me count the ways.” [slide] |
| Fix: | “Snoopy” Cache Coherence Protocol [slide] |
| Lessons learned: single driver; | point-to-point [slide] |
| Lessons learned: clock | recovery [slide] |
| Optimization: keep values in | regs [slide] |
| Or take the lazy | route... [slide] |
| Example | serial link: PCI Express (PCIe) [slide] |
| Lessons learned: | single driver; point-to-point [slide] |
| Forget Circuits... Let’s | solve a Real Problem [slide] |
| Emulated Instruction: | swapreg(Ra,Rc) [slide] |
| Or | take the lazy route... [slide] |
| Optimization: keep | values in regs [slide] |
| The | von Neumann Model [slide] |
| Anatomy of a | von Neumann Computer [slide] |
| “Let me count the | ways.” [slide] |
