The order (and to a lesser extent the content) are subject to change.
-
Processors
-
who makes them, performance trends, heat and power replacing
speed as main concerns
-
physics and economics of processor design
-
Instruction execution sequence
-
basic von Neuman architecture, CISC
-
RISC
-
basic pipelined processor
-
stalls for data dependency and solutions
-
out of order completion
-
full out of order execution
-
superscalar processor
-
VLIW
-
vector pipelining
-
stalls for control dependency, branch prediction
-
interrupts and exceptions
-
cost modelling issues
-
Memory hierarchies
-
latency and throughput, typical values
-
properties of an ideal memory hierarchy
-
locality - approximating the ideal
-
where locality comes from
-
effects of object-oriented programs on locality
-
effects of context switch on locality
-
basic design of caches, block loads
-
placement strategy, direct, associative set-associative, stride
-
replacement strategy
-
cache parameters and their dependence on design decisions
-
prefetching
-
writing cached data
-
instruction versus data caches
-
asymmetry of load and store
-
cost modelling the storage hierarchy
-
compulsory, capacity, conflict misses
-
exposing the cache to compilers
-
processors in memory
-
percolation
-
The SIMD idea
-
system design
-
processor design
-
dynamic networks
-
static networks: path, torus, trees, hypercube
-
network properties
-
Programming SIMD architectures
-
vector style
-
BMF style - map, reduce, scan
-
string search example
-
success stories
-
SPMD
-
Shared-memory MIMD architectures
-
basic system design
-
why not a dynamic network
-
buses and serialization
-
cache coherence
-
snoopy protocols
-
table driven protocols
-
virtual shared memory/NUMA
-
clumps
-
dynamic network enhancements: CREW, CRCW, fluent
-
Programming smMIMD architectures
-
PRAM
-
locks, semaphores
-
Cilk - C with fork, work stealing, race conditions
-
OpenMP
-
Distributed-memory MIMD architectures
-
Origins -- IMPs, packet switching, store and forward, error model
-
TCP
-
static network topologies
-
virtual cutthrough, wormhole routing, deadlock avoidance, QoS
-
deterministic vs adaptive routing
-
switches, hierarchies
-
getting to the network: TCP/IP vs UDP vs kernel and user space NIC models
-
basic cluster design
-
economics of clusters
-
cluster networks: Enet, channel bonding, Gbit Enet, Myrinet, VIA
-
constellations
-
Programming dmMIMD architectures
-
placement, data with computation
-
master-slave
-
message passing: MPI
-
BSP
-
Multithreading
-
P-RISC
-
Design issues: critical path, fork/join, memory latency
-
Dataflow
-
Static vs dynamic dataflow
-
eager vs lazy evaluation
-
using dataflow at coarse grain
-
Other programming models
-
higher-order functional programming, string and graph reduction
-
Linda
-
actors and other object-based models
-
skeletons
-
Hierarchy of models by architecture independence
-
Hierarchy of systems by computational power
-
Computational grids
-
motivation
-
design issues
-
variations: datacentric grids
-
Quantum computers
Back to David Skillicorn's home page.