Skip to main content

Computer Architecture:  2019-2020

Lecturer

Degrees

Schedule S1(CS&P)(3rd years)Computer Science and Philosophy

Schedule S1(3rd years)Computer Science

Schedule S1(M&CS)(3rd years)Mathematics and Computer Science

Term

Overview

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.

Practicals

x86/Y86 assembler, pipelined processors, out-of-order execution and program performance, microcontroller and GPGPU programming

 

Learning outcomes

By 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.

Prerequisites

Students who have not taken Digital Systems will need to do additional background reading on combinational circuts and assembler programming.

Synopsis

  1. Introduction and overview
  2. C programming language
  3. x86-64 assembly language
  4. Machine representation of programs
  5. Control structures for processors, register transfer level description of hardware
  6. Hardware description languages and simulation in Verilog
  7. Instruction set design, instruction formats, addressing modes, ISAs
  8. A sequential Y86-64 design
  9. Processor pipelining, pipeline hazard detection, stalling and forwarding
  10. Out-of-order execution and program performance optimisation
  11. RISC and CISC instruction sets (MIPS, ARMv8 and x86-64)
  12. Vector operations and single-instruction multiple-data (SIMD) operations
  13. General purpose graphics processing unit computing (GPGPU) and OpenCL  
  14. Memory hierachy and memory caches
  15. Micro-controllers for embedded applications
  16. Alternative architectures - stack and accumulator machines

Syllabus

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.

Reading list

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.

Taking our courses

This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses

Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.