Department of Computer Science and Technology

Course pages 2019–20

Computer Design

Principal lecturers: Prof Simon Moore, Dr Timothy Jones
Taken by: Part IB CST 50%, Part IB CST 75%
Past exam questions

No. of lectures: 16
Suggested hours of supervisions: 5
Prerequisite course: Digital Electronics
Companion course: Electronic Computer Aided Design (ECAD)
This course is a prerequisite for the Part II course Comparative Architectures.


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 [lecturer: Professor Simon Moore]

  • 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 - Lecturer Dr Timothy Jones

  • 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. & 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. & Harris, S.L. (2012). Digital design and computer architecture. Morgan Kaufmann. ISBN 978-0-12-394424-5.
Hennessy, J. & 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.