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