Fundamentals of computer design; quantifying cost and performance; instruction set architecture; program behaviour and measurement of instruction set use; processor datapaths and control; pipelining, handling pipeline hazards; memory hierarchies and performance; I/O devices, controllers and drivers; I/O and system performance.