skip to primary navigationskip to content

Department of Computer Science and Technology



Course pages 2023–24

Introduction to Computer Architecture

Principal lecturer: Prof Simon Moore
Taken by: Part IB CST
Term: Michaelmas
Hours: 16
Format: In-person lectures
Suggested hours of supervisions: 5
Prerequisites: Digital Electronics. Companion course: Electronic Computer Aided Design (ECAD)
This course is a prerequisite for: Advanced Computer Architecture, Cybersecurity
Exam: Paper 5 Question 6, 7, 8
Past exam questions, Moodle, timetable


The aims of this course are to introduce a hardware description language (SystemVerilog) and computer architecture concepts in order to design computer systems. The parallel ECAD+Arch practical classes will allow students to apply the concepts taught in lectures.


Part 1 - Gates to processors 

  • Technology trends and design challenges. Current technology, technology trends, ECAD trends, challenges. [1 lecture]
  • Digital system design. Practicalities of mapping SystemVerilog descriptions of hardware (including a processor) onto an FPGA board. Tips and pitfalls when generating larger modular designs. [1 lecture]
  • Eight great ideas in computer architecture. [1 lecture]
  • Reduced instruction set computers and RISC-V. Introduction to the RISC-V processor design. [1 lecture]
  • Executable and synthesisable models. [1 lecture]
  • Pipelining. [2 lectures]
  • Memory hierarchy and caching. Caching, etc. [1 lecture]
  • Support for operating systems. Memory protection, exceptions, interrupts, etc. [1 lecture]
  • Other instruction set architectures. CISC, stack, accumulator. [1 lecture]

Part 2 

  • Overview of Systems-on-Chip (SoCs) and DRAM. [1 lecture] High-level SoCs, DRAM storage and accessing.
  • Multicore Processors. [2 lectures] Communication, cache coherence, barriers and synchronisation primitives.
  • Graphics processing units (GPUs) [2 lectures] Basic GPU architecture and programming.
  • Future Directions [1 lecture] Where is computer architecture heading?


At the end of the course students should

  • be able to read assembler given a guide to the instruction set and be able to write short pieces of assembler if given an instruction set or asked to invent an instruction set;
  • understand the differences between RISC and CISC assembler;
  • understand what facilities a processor provides to support operating systems, from memory management to software interrupts;
  • understand memory hierarchy including different cache structures and coherency needed for multicore systems;
  • understand how to implement a processor in SystemVerilog;
  • appreciate the use of pipelining in processor design;
  • have an appreciation of control structures used in processor design;
  • have an appreciation of system-on-chips and their components;
  • understand how DRAM stores data;
  • understand how multicore processors communicate;
  • understand how GPUs work and have an appreciation of how to program them.

Recommended reading

* Patterson, D.A. and Hennessy, J.L. (2017). Computer organization and design: The hardware/software interface RISC-V edition. Morgan Kaufmann. ISBN 978-0-12-812275-4.

Recommended further reading:

Harris, D.M. and Harris, S.L. (2012). Digital design and computer architecture. Morgan Kaufmann. ISBN 978-0-12-394424-5.
Hennessy, J. and Patterson, D. (2006). Computer architecture: a quantitative approach. Elsevier (4th ed.). ISBN 978-0-12-370490-0. (Older versions of the book are also still generally relevant.)

Pointers to sources of more specialist information are included in the lecture notes and on the associated course web page.