Paul Kelly: Advanced Computer Architecture

NEW: For 2016 this course will be taught by Paul Kelly with contributions from Dr Luigi Nardi and support from Doru Bercea and Emanuele Vespa, all researchers in the Software Performance Optimisation Group.

Lecture notes are available on CATE, with the web as a backup: here. They are not guaranteed up-to-date until the day before the lecture.

A collection of Tutorial exercises are available on the web here. Note that these may not be fully up to date until paper copies are actually distributed.

Books: The course text is Hennessy and Patterson's "Computer Architecture: a Quantitative Approach" (Fifth Edition). Details here, companion web site here, See also ACM Queue interview here.

Supporting materials are available on the web here.

Past papers are available on the web here and here (the latter page takes you to the past papers for the end-of-autumn-term tests for MEng3 students on the four-year Computer Science programme, who at that time had special examination arrangements because of being away on their industrial placements during the summer). The 2004-5 past paper on the official web site has two pages missing. The complete paper is available here.

Early architecture research at Imperial College See Prof Greg Michaelson's description of ICCE I and ICCE II, experimental computers built at Imperial in the late 1940s/early 1950s, built by his father Sydney Michaelson and others.


The objective of this course is to introduce the fundamental techniques on which high-performance computing is based, to develop the foundations for analysing the benefits of design options in computer architecture, and to give some experience of the application of these techniques.

It should be noted that the use of parallelism is secondary to the objective of achieving high performance. For this reason, the course contains much of the material found in an advanced computer architecture syllabus.

The role of compilers in achieving high performance also takes a fairly high profile, and special emphasis will be placed on the capabilities of restructuring compilers based on data dependence analysis in loops.


  1. Reading

    You are advised to purchase a textbook for this course. As it is an advanced course, you will find you need to use books and research papers effectively. Not only will you find this makes the course more interesting and comprehensible --- it also gets you special bonuses in exam and coursework assessment. The recommended book is:

    • Computer Architecture: A Quantitative Approach fifth edition, by David A Patterson and John L Hennessy. Morgan Kaufmann publishers, 2011. This course is largely based on this book, which is the definitive reference in this area; you should buy a copy if you're serious about the course. It covers a broad range of high-performance computing issues, including useful material on filesystems and networking.
    This is a well-constructed and authoritative textbook (Patterson is arguably the inventor of the SPARC architecture used in Sun workstations, Hennessy created the MIPS architecture used in Silicon Graphics machines).

    Make sure you get the latest edition.

    Other reading See the Books section of the course web site.

  2. Exercises

    Both assessed and unassessed exercises will be used to {\em introduce} important ideas. Thus if you don't do them in time, you won't know what's going on in the lectures.

  3. Lectures

    The primary objective of the lectures is to help you understand and use the textbooks. Copies of the lecture's overhead transparencies will be provided, and you are encouraged to make notes of your own.