Computer Architecture: 2019-2020
This course aims to give an understanding of the mechanisms for implementing the programmer's idealised computer. It builds on the introduction to hardware and to simple processors in the Digital Systems course. The Computer Architecture course aims to describe a broad range of architectural designs and to contrast them, highlighting the design decisions they incorporate, and how these design decisions impact program performance.
The lectures for this course are recorded, and the recordings released at the end of each week of term. Please click here to access the recordings.
x86/Y86 assembler, pipelined processors, out-of-order execution and program performance, microcontroller and GPGPU programming
Learning outcomesBy the end of the course, the student should understand the major architectural styles and appreciate the compromises that they encapsulate. They should be able to read outline descriptions of real processors and understand in which way their designs fit into the frameworks described in the course. They should also be able to understand the impact of design choices in programming in the context of a specific architecture.
Students who have not taken Digital Systems will need to do additional background reading on combinational circuts and assembler programming.
- Introduction and overview
- C programming language
- x86-64 assembly language
- Machine representation of programs
- Control structures for processors, register transfer level description of hardware
- Hardware description languages and simulation in Verilog
- Instruction set design, instruction formats, addressing modes, ISAs
- A sequential Y86-64 design
- Processor pipelining, pipeline hazard detection, stalling and forwarding
- Out-of-order execution and program performance optimisation
- RISC and CISC instruction sets (MIPS, ARMv8 and x86-64)
- Vector operations and single-instruction multiple-data (SIMD) operations
- General purpose graphics processing unit computing (GPGPU) and OpenCL
- Memory hierachy and memory caches
- Micro-controllers for embedded applications
- Alternative architectures - stack and accumulator machines
C programming language; x86-64 assembly language; Machine representation of programs; Control structures for processors, register transfer level description of hardware; Hardware description languages and simulation in Verilog; Instruction set design, instruction formats, addressing modes, ISAs; A sequential Y86-64 design; Processor pipelining, pipeline hazard detection, stalling and forwarding; Out-of-order execution and program performance optimisation; RISC and CISC instruction sets (x86-64 and ARMv8); Vector operations, SIMD and GPGPU; Memory hierachy and memory caches; Micro-controllers for embedded applications; Alternative architectures.
The principal text is:
- R E Bryant & D R O'Hallaron, Computer Systems: A Programmer's Perspective, Pearson (Global edition) 2015.
A very good alternative is:
- A S Tanenbaum and T Austin, Structured Computer Organization, Pearson (International edition), 2012.
The following text is also recommended. The original focuses on the MIPS architecture with the newest volume switching to Risc-V architecture:
- D A Patterson & J L Hennessy, Computer Organization and Design: The hardware/software interface, Morgan-Kaufmann (Fifth edition) 2013.
Additional background reading will be identified throughout the course.