ECE 5755: Modern Computer Systems and Architecture
Lecture 12: VM & DRAM
Mark D. Hill
Norman Jouppi
Dr. Jouppi has made innumerable contributions to memory hierarchy design, with the most significant multiple ideas presented in his 1990 ISCA paper “Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers”
Widely regarded as the leading memory systems researcher in the world today, Hill made seminal contributions to the fields of cache memories, memory consistency models, transactional memory, and simulation. In the 1980s Hill developed the “3C” model of cache misses
Today’s agenda
Photos, illustrations, graphics here.
Virtual memory
Photos, illustrations, graphics here.
Virtual Memory: Motivation
Photos, illustrations, graphics here.
Virtual vs. Physical Memory
Photos, illustrations, graphics here.
Virtual Memory: Cache Analogy
Photos, illustrations, graphics here.
Virtual Memory: Cache Analogy
Parameter | First-Level Cache | Virtual Memory |
Block (page) Size | 16-128 Bytes | 4KB – 64KB |
Hit Time | 1-3 clock cycles | 50-150 clock cycles |
Miss Penalty | 8-15 clock cycles | 1M-10M clock cycles |
(access time) | (6-130 clock cycles) | (.8M – 8M clock cycles) |
(transfer time) | (2-20 clock cycles) | (.2M – 2M clock cycles) |
Miss Rate | 0.1-10% | 0.00001 –0.001% |
Address Mapping | 25-45bit PA to 14-20bit CacheAd | 32-64 bit VA to 25-45 bit PA |
Replacement Policy | Hardware Replacement | Software Replacement |
Total Size | Independent of Address Space | Processor Address Space |
Backing Store | Level 2 Cache | Physical Disk |
Photos, illustrations, graphics here.
Hardware maps virtual to physical addresses
Photos, illustrations, graphics here.
Virtual Memory: 4 Cache Questions
Photos, illustrations, graphics here.
Why?
Photos, illustrations, graphics here.
Page ID: Address translation
Virtual Page Number Page Offset
Virtual Address
Page
Table
Main
Memory
Photos, illustrations, graphics here.
Page faults: demand paging, copy-on-write
After fork(): one frame, mapped read-only
Parent page table
Child page table
Frame A
After the child writes: OS copies that one page
Parent page table
Child page table
Frame A
Frame A′ (copy)
Photos, illustrations, graphics here.
Multi-level page tables
PT Root
VPN
1st Level PT
2nd Level PTs
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Multi-level page tables
Photos, illustrations, graphics here.
Before the walk: why 9 bits?
THINK · PAIR · SHARE
x86-64 splits the virtual page number into four 9-bit indices.
Why 9? What fixes that number?
1 min think · 2 min with your neighbor. Hint: what is the size of one page-table node?
Photos, illustrations, graphics here.
A real page table: the x86-64 walk
64-bit virtual address (48 bits used)
unused
bits 63–48
L4 index
bits 47–39
L3 index
bits 38–30
L2 index
bits 29–21
L1 index
bits 20–12
page offset
bits 11–0
CR3
root
PML4
512 entries
1
PDPT
512 entries
2
PD
512 entries
3
PT
512 entries
4
4 KB page
the data
Photos, illustrations, graphics here.
Address translation
Photos, illustrations, graphics here.
What could go wrong?
THINK · PAIR · SHARE
Suppose L1 is indexed and tagged with virtual addresses.
No translation on a hit. What can go wrong?
1 min think · 2 min pair. Hint: think about two processes, then one process with shared memory.
Photos, illustrations, graphics here.
Fast translation: virtual caches
CPU
L1
L2
xlate
Main Memory
Photos, illustrations, graphics here.
Fast translation: physical caches + TLB
CPU
TLB
L2
xlate
Main Memory
L1
Photos, illustrations, graphics here.
Cache: Virtual Index, Physical Tag
Virtual Page Number
Virtual Address
Tag
Page Offset
Index
Offset
Photos, illustrations, graphics here.
Why can Apple’s L1 be 128 KB?
| AMD Zen 5 / Intel Lion Cove | Apple M4 (P-core) |
Page size | 4 KB | 16 KB |
L1 D-cache | 48 KB, 12-way | 128 KB, 8-way |
Bytes per way (= sets × block) | 48 KB / 12 = 4 KB | 128 KB / 8 = 16 KB |
Fits the VIPT rule (≤ page size)? | Yes — exactly | Yes — exactly |
Sources: Apple M4 / Arm public documentation; AMD Zen 5 disclosures; Intel Lion Cove disclosure (Hot Chips 2024).
Photos, illustrations, graphics here.
TLB Organization
Virtual Address
VPN offset
Compare Tags/Select PTE
Hit/Miss
Tag PTE
state
Physical Address
PPN page offset
Entries in TLB
Photos, illustrations, graphics here.
Life of a memory access
Common case
hardware, ~1 cycle
TLB miss
hardware, 10s–100s of cycles
Page fault
OS, microseconds to milliseconds
Load or store issues a virtual address
TLB lookup
in parallel with L1 indexing
Physical address
cache, then DRAM
hit
Page-table walk
up to 4 memory reads
Fill the TLB
retry the access
miss
valid PTE
Page fault
trap to the OS
OS maps the page
allocate or read from disk
invalid PTE
restart
Everything in this lecture is about keeping accesses on the top row.
Photos, illustrations, graphics here.
Selecting page size
Photos, illustrations, graphics here.
TLB reach and huge pages
TLB reach = entries × page size
L1 data TLB: 64 entries × 4 KB
256 KB
L2 TLB: 1,536 entries × 4 KB
6 MB
L2 TLB: 1,536 entries × 2 MB
3 GB
L2 TLB: 16 entries × 1 GB
16 GB
Intel Skylake TLB sizes; bar length on a log scale.
Huge pages (2 MB, 1 GB)
~26% of execution time goes to address translation on data-intensive workloads, measured on a real system
Photos, illustrations, graphics here.
TLB reach for an AI model
THINK · PAIR · SHARE
A model has 40 GB of weights. Each token streams through all of them.
How many TLB entries cover it with 4 KB pages? With 2 MB pages?
Recall: L2 TLB on a recent x86 core ≈ 1,536 entries
2 min think · 2 min pair. Bonus: and with 1 GB pages?
Photos, illustrations, graphics here.
TLB reach for an AI model: answer
ANSWER
4 KB pages
40 GB ÷ 4 KB
10,485,760
~6,800× too many
2 MB pages
40 GB ÷ 2 MB
20,480
~13× too many
1 GB pages
40 GB ÷ 1 GB
40
fits
Compared with a 1,536-entry L2 TLB.
Takeaway: huge pages are necessary, not sufficient. GPUs use 2 MB+ pages by default for this reason.
Photos, illustrations, graphics here.
Live demo: huge pages vs. TLB misses
LIVE DEMO
$ grep -i huge /proc/meminfo
$ cat /sys/kernel/mm/transparent_hugepage/enabled
$ ./run_demo.sh 1024
# random pointer chase over 1 GB:
# 4 KB pages, then 2 MB pages
4 KB pages
2 MB pages
Pages spanned
262,144
512
Time per load
~230 ns
~160 ns
Reach of 1,536-entry TLB
6 MB
3 GB
Times measured on a cloud VM; bare metal shows a similar gap. What remains is the DRAM access itself. Under perf, only the timed loads are counted.
Photos, illustrations, graphics here.
Live demo: when do huge pages help?
LIVE DEMO
Dependent loads over 1 GB (ns per load)
Pattern
Each load goes to
4 KB
2 MB
Gain
seq
next 64 B line
5.6
4.9
1.15×
stride
next 4 KB page
153
147
1.05×
random
random page
222
162
1.37×
When small pages win
Reserve 2 GB, touch 1 byte every 2 MB (a sparse table, a big malloc used lightly)
Memory used
4 MB
4 KB pages
2,048 MB
2 MB pages
Time to touch
2 ms
4 KB pages
416 ms
2 MB pages
Each touch commits and zeroes a whole 2 MB page: 512× the memory. Many distros default THP to madvise for this reason.
Photos, illustrations, graphics here.
Ongoing virtual memory research
… the data-intensive Graph500 benchmark… has an approximate working set size of 215 MiB, whereas a typical TLB using 4 KiB pages can only cache translations for about 8.6 MiB of physical memory at once. Some of these applications, such as graph analytics, also tend to have irregular, pointer-based memory traversals with poor locality of reference, thwarting common heuristics such as prefetching. As a result, many modern applications report 20–30% overhead attributable to TLB misses [19, 20, 32, 54], and some as high as 83% [5].
Moreover, TLBs tend to be power-hungry, consuming 3-13% of a processor’s power, and higher associativity and deeper TLB hierarchies further increase dynamic energy usage [29].
Photos, illustrations, graphics here.
Virtual machines: the 2D page walk
host L4
host L3
host L2
host L1
read
guest L4
1
2
3
4
5
guest L3
6
7
8
9
10
guest L2
11
12
13
14
15
guest L1
16
17
18
19
20
data
21
22
23
24
data
Each guest page-table address is guest-physical, so it needs its own host walk.
Photos, illustrations, graphics here.
Modern example: paging for LLM serving
PagedAttention (vLLM; Kwon et al., SOSP 2023)
Problem: each request’s KV cache grows token by token. Contiguous allocation wastes scarce GPU memory.
OS virtual memory
LLM serving
Page
KV-cache block (fixed number of tokens)
Process
Request
Page table
Block table: logical → physical blocks
Copy-on-write
Requests share a common prompt prefix
Fixed-size blocks allocated on demand: no external fragmentation, little internal.
“one can think of blocks as pages, tokens as bytes, and requests as processes”
Photos, illustrations, graphics here.
5 minute break!
Photos, illustrations, graphics here.
The memory system
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
64-bit memory bus
Sends commands to DRAM
Issues memory requests to memory controller
Issues loads and store instructions
Virtual to physical memory translation
Photos, illustrations, graphics here.
Why DRAM? SRAM vs. DRAM vs. flash
| SRAM | DRAM | NAND flash |
Cell | 6 transistors | 1 transistor + 1 capacitor | 1 transistor (trapped charge) |
Access latency | ~1 ns | ~50 ns | ~50–100 µs |
Cost per GB | < $300 | < $6 | < $0.08 |
Keeps data without power | No | No, and it leaks | Yes |
Used for | Caches, registers | Main memory | Storage (SSD) |
DRAM: ~50× cheaper per bit than SRAM, ~1,000× faster than flash. The price of one transistor and one capacitor: slow, leaky, destructive reads.
Sample values circa 2023. Source: O. Mutlu, DDCA Spring 2026, Lecture 22.
Photos, illustrations, graphics here.
DRAM Array
1 transistor & capacitor per “bit” (recall from physics a capacitor stores charge)
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
Photos, illustrations, graphics here.
DRAM Array
1 transistor & capacitor per “bit” (recall from physics a capacitor stores charge)
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
We want to read this byte
Photos, illustrations, graphics here.
DRAM Array
1 transistor & capacitor per “bit” (recall from physics a capacitor stores charge)
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
1. Precharge: ready bit lines (~10ns)
We want to read this byte
Photos, illustrations, graphics here.
DRAM Array
1 transistor & capacitor per “bit” (recall from physics a capacitor stores charge)
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
2. Row activation (~10ns)
1. Precharge: ready bit lines (~10ns)
We want to read this byte
Transfer row
Photos, illustrations, graphics here.
DRAM Array
1 transistor & capacitor per “bit” (recall from physics a capacitor stores charge)
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
2. Row activation (~10ns)
1. Precharge: ready bit lines (~10ns)
We want to read this byte
3. Column selection
4. Transfer data onto bus
10ns
Transfer row
Photos, illustrations, graphics here.
Load next byte from (already active) row
Lower latency operation: can skip pre-charge and row activation steps
(to memory controller)
Data pins (8 bits)
Row buffer (2 Kbits)
2 Kbits per row
1. Column selection
2. Transfer data onto bus
10ns
Photos, illustrations, graphics here.
Inside the cell: destructive reads
wordline (row select)
bitline
T
storage capacitor (charged = 1)
access transistor
sense amp
Vdd
Vdd/2
bitline voltage, reading a 1
precharged
share charge
sense + amplify
restore cell
precharge
ACT
READ
PRE
Photos, illustrations, graphics here.
Tiny capacitors: refresh and errors
Refresh
one refresh command every 7.8 µs; the chip is busy during each
Errors and ECC
64 data bits
8
ECC DIMM: 8 check bits per 64-bit word, stored in a ninth chip
Photos, illustrations, graphics here.
DRAM access latency is not fixed
Photos, illustrations, graphics here.
Problem: low data-pin utilization
Data pins (8 bits)
PRE
RAS
CAS
CAS
PRE
RAS
CAS
PRE
RAS
CAS
Access 1
Access 2
Access 3
Access 4
Data pins in use only a small fraction of time
(red = data pins busy)
This is bad since they are the scarcest resource!
Photos, illustrations, graphics here.
DRAM burst mode
Data pins (8 bits)
PRE
RAS
CAS
Access 1
Idea: amortize latency over larger transfers
Each DRAM command describes bulk transfer
Bits placed on output pins in consecutive clocks
Rest of transfer
PRE
RAS
CAS
Rest of transfer
Access 2
Photos, illustrations, graphics here.
DRAM chip consists of multiple banks
Data pins (8 bits)
PRE
RAS
CAS
PRE
RAS
CAS
PRE
RAS
CAS
PRE
RAS
CAS
Bank 0
Bank 1
Bank 2
Bank 3
time
Banks 0-3
Photos, illustrations, graphics here.
Multiple chips form a DIMM
CPU
Memory Controller
Last-level cache (LLC)
Read bank B, row R, column 0
64 bit memory bus
Photos, illustrations, graphics here.
Reading a 64-byte line the wrong way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Request line w/physical address X
Bits 0:7
Photos, illustrations, graphics here.
Reading a 64-byte line the wrong way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Request line w/physical address X
Bits 8:15
Photos, illustrations, graphics here.
Reading a 64-byte line the wrong way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Request line w/physical address X
Bits 16:23
Photos, illustrations, graphics here.
Reading a 64-byte line the wrong way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Request line w/physical address X
Bits 24:31
Photos, illustrations, graphics here.
Reading a 64-byte line the efficient way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Cache miss of line X
Bits 0:7
Bits 8:15
Bits 16:23
Bits 24:31
Bits 32:39
Bits 40:47
Bits 48:55
Bits 56:63
Photos, illustrations, graphics here.
Reading a 64-byte line the efficient way
CPU
Memory Controller
Last-level cache
(LLC)
Read bank B, row R, column 0
64 bit memory bus
Cache miss of line X
Bits 64:71
Bits 72:79
Bits 80:87
Bits 88:95
Bits 96:103
Bits 104:111
Bits 112:119
Bits 120:127
Photos, illustrations, graphics here.
Memory controller: a request scheduler
Photos, illustrations, graphics here.
Dual-channel memory system
Photos, illustrations, graphics here.
The full hierarchy: channel to cell
Channel
2–12 per CPU
Independent bus: more channels, more bandwidth
›
DIMM
1–2 per channel
Shares the channel: adds capacity only
›
Rank
1–4 per DIMM
Chips that answer together to form a 64-bit word
›
Chip
8–18 per rank
Supplies 4 or 8 of the data bits
›
Bank
16–32 per chip
Own row buffer: requests can overlap
›
Row/column
128K × 1K per bank
Open row: fast repeat access
Example: 32 GB DDR4 DIMM = 2 ranks × 8 chips × 16 Gb (2 GB) per chip
Each chip = 16 banks × 128K rows × 1K columns × 8 bits. With ECC, add a ninth chip per rank.
Rank is the level we had not named: the set of chips selected together on one channel.
Photos, illustrations, graphics here.
Live demo: what DRAM is in this server?
LIVE DEMO
$ ./memory_info.sh
(wraps: sudo dmidecode -t memory)
Locator: DIMM_A1
Size: 32 GB
Type: DDR5
Speed: 4800 MT/s
Rank: 2
Total Width: 72 bits Data Width: 64 bits
Illustrative output; fields vary by vendor.
Photos, illustrations, graphics here.
Example: DDR5 and the bandwidth wall
System | Cores | Channels | Peak bandwidth | Per core |
Core i7-7700K (2017), DDR4-2400 | 4 | 2 | 38 GB/s | 9.6 GB/s |
Xeon Platinum 8480+ (2023), DDR5-4800 | 56 | 8 | 307 GB/s | 5.5 GB/s |
EPYC 9654 (2022), DDR5-4800 | 96 | 12 | 461 GB/s | 4.8 GB/s |
EPYC 9965 (2024), DDR5-6400 | 192 | 12 | 614 GB/s | 3.2 GB/s |
Bandwidth wall: core counts grow faster than memory channels, so each core gets less. Latency in nanoseconds has not improved either.
Photos, illustrations, graphics here.
DRAM Summary
Photos, illustrations, graphics here.
Capacity scaled; latency did not
Capacity
128×
denser chips: what the market paid for
Bandwidth
20×
faster interfaces
Latency
1.3×
access time barely moved
Improvement in DRAM chips, 1999–2017. Source: K. Chang, PhD thesis, CMU 2017 (via O. Mutlu’s lectures).
Photos, illustrations, graphics here.
3D stacking: more bandwidth, less power
Photos, illustrations, graphics here.
GPUs adopted HBM early (2015–16)
Photos, illustrations, graphics here.
Why AI accelerators use HBM
Peak memory bandwidth (GB/s)
One DDR5-4800 channel
38
Server CPU, 12 × DDR5-6400
614
One HBM3E stack
1,200
NVIDIA H200 GPU, 141 GB of HBM3E
4,800
HBM3E: 1,024 data wires per stack at about 9 Gb/s each.
Photos, illustrations, graphics here.
CXL: memory beyond the DIMM slot
Server
CPU + local DDR5
~100 ns
Server
CPU + local DDR5
~100 ns
Server
CPU + local DDR5
~100 ns
CXL memory pool
shared DRAM, can be re-used DDR4
CXL link over PCIe wires: adds roughly 70–90 ns, about one NUMA hop.
Photos, illustrations, graphics here.
Before you go
2 MINUTES
Turn to your neighbor:
one thing that surprised you today,
one thing still fuzzy.
Why don’t TLBs just get bigger?
Who decides when to use huge pages?
Is refresh why my laptop drains when asleep?
Example notes
Photos, illustrations, graphics here.
5 minute break!
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Speculative execution with branch prediction
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Out-of-order execution further improves ILP
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Cache architecture to minimize misses
{Capacity, conflict, compulsory}
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
Virtual memory & TLB’s
Photos, illustrations, graphics here.
The class so far…
DRAM
CPU
Memory controller
Last-level cache (LLC)
L1
Core
TLB
DRAM Architecture
Photos, illustrations, graphics here.
Current processor
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
L1 Instruction Cache
L1 Data
Cache
L2 cache
Mem controller
Photos, illustrations, graphics here.
Parallelism: Instruction level parallelism
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
L1 Instruction Cache
L1 Data
Cache
L2 cache
Mem controller
What we’ve talked about already:
Photos, illustrations, graphics here.
Parallelism: Instruction level parallelism
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
L1 Instruction Cache
L1 Data
Cache
L2 cache
Mem controller
What we’ve talked about already:
Photos, illustrations, graphics here.
Improving performance via parallelism
Execution timenew = Execution timeold × ( (1 - Fractionenhanced) + )
Fractionenhanced
Speedupenhanced
Overall
Speedup
Photos, illustrations, graphics here.
Parallel Application Domains
Photos, illustrations, graphics here.
Parallelism: Superscalar processors
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
L1 Instruction Cache
L1 Data
Cache
L2 cache
Mem controller
Fetch/
Decode
ALU
Execution unit
Out-of-order control logic
Superscalar execution: processor automatically finds independent instructions in an instruction sequence and can execute them in parallel on multiple execution units
Photos, illustrations, graphics here.
Typical dual-issue pipeline
Photos, illustrations, graphics here.
Typical dual-issue pipeline
Photos, illustrations, graphics here.
Superscalar challenges – front end
Photos, illustrations, graphics here.
Superscalar challenges – back end
Photos, illustrations, graphics here.
Pre multi-core era processor
Majority of chip transistors used to perform operations that help make a single instruction stream fast
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
Data cache
Fetch/
Decode
ALU
Execution unit
Out-of-order control logic
Sophisticated branch predictor
Memory pre-fetcher
More transistors = larger cache, smarter out-of-order logic, smarter branch predictor
Photos, illustrations, graphics here.
Computation Taxonomy
Photos, illustrations, graphics here.
Multi-core era processors
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
Fetch/
Decode
ALU
Execution unit
Rather than use transistors to increase sophistication of processor logic that accelerates a single instruction stream
(e.g., out-of-order, speculation)
Use increasing transistor count to add more cores to the processor
Photos, illustrations, graphics here.
Multi-core era processors
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
Fetch/
Decode
ALU
Execution unit
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
Fetch/
Decode
ALU
Execution unit
Simpler cores: each core may be slower at running a single instruction stream than a more sophisticated core (e.g., 25% slower)
But there are now two cores: 2 * 0.75 = 1.5x (potential for speedup!)
Photos, illustrations, graphics here.
Four cores: compute four elements in parallel
Photos, illustrations, graphics here.
Sixteen cores: compute sixteen elements in parallel
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
Another idea: Add more execution units to increase compute capacity
Execution Context
Register 0
Register 1
Register 2
Register 3
Register 4
Register 5
Fetch/
Decode
ALU 0
Another idea…
Amortize cost/complexity of managing an instruction stream across many ALU’s
SIMD processing
Single instruction, multiple data
Same instruction broadcast to all ALUs
This operation is executed in parallel on all ALUs
ALU 0
ALU 0
ALU 0
ALU 0
ALU 0
ALU 0
ALU 0
Photos, illustrations, graphics here.
16 SIMD cores: 128 elements in parallel
Photos, illustrations, graphics here.
Common terminology
Photos, illustrations, graphics here.
SIMD execution: modern CPU examples
Photos, illustrations, graphics here.
SIMD execution: modern GPU examples
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
Photos, illustrations, graphics here.
SIMD vs. MIMD
Photos, illustrations, graphics here.
Taxonomy of Parallel (MIMD) Processors
Photos, illustrations, graphics here.
UMA vs. NUMA: Why it matters
Photos, illustrations, graphics here.
UMA vs. NUMA: Why it matters
Photos, illustrations, graphics here.
Interconnection Networks
Photos, illustrations, graphics here.
Interconnect 1: Bus
Photos, illustrations, graphics here.
Interconnect 2: Crossbar Switch
Photos, illustrations, graphics here.
Interconnect 3: Multistage Network
Photos, illustrations, graphics here.
Interconnect 4: 2D Torus
Photos, illustrations, graphics here.
Interconnect 5: Hypercube
Photos, illustrations, graphics here.