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, 6, 7, 8
Past exam questions, Moodle, timetable
Aims
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.
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?
Objectives
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.