Module Leader
Lecturers
Dr AH Gee and Prof Per Ola Kristensson
Timing and Structure
Lent Term. 75% exam / 25% coursework
Prerequisites
Part 1 Digital Circuits and Computing, including an understanding of C++ as taught in the Mars Lander project and the Part 1B Device Programming exercise. Students will be expected to write small programs in C++.
Aims
The aims of the course are to:
- Describe the computer hardware that underlies modern information processing systems.
- Explain how to write multithreaded software that runs on such hardware.
Objectives
As specific objectives, by the end of the course students should be able to:
- Appreciate the basic components needed to construct a computer and the different ways to interconnect these components, including the various ways of exploiting parallelism.
- Compare the instruction sets, implementation issues and performance of CISC and RISC architectures.
- Design efficient hardware for computer arithmetic.
- Understand the operation of pipelined datapaths.
- Describe memory organisation, addressing schemes and the use of caches; and their effects on performance.
- Compare the various ways of handling input and output in a computer system.
- Understand the concept of a memory model.
- Understand basic concurrency concepts.
- Design and implement thread-safe algorithms in C++.
Content
Computer Systems (8L + 2 examples classes, Dr Andrew Gee)
- Computer architecture, historical perspectives.
- Instruction set architectures, RISC vs CISC.
- ALU design, datapaths and control, pipelining.
- Memory hierarchy, caches, virtual memory.
- Input/output, bus organization, polling and interrupt-driven I/O, DMA.
- Parallel processing, SIMD and MIMD architectures.
Assessment: examination (75%), candidates to attempt two questions from a choice of three
Parallel Programming (4L, Prof Per Ola Kristensson)
- C++11/14/17 memory model.
- Race conditions, mutual exclusion, synchronization, starvation.
- Thread-safe data structures.
- C++11/14/17 threading library.
Assessment: coursework (25%)
Coursework
Multithreaded programming using the C++11/14/17 memory model and threading libraries. The programming exercise is an opportunity to experience how theoretical concepts from the lectures translate into actual working code using a state-of-the-art industry standard threading library. Time required: 4-8 hours programming plus 15 minutes demonstrating and discussing your code with an assessor. Please note that coursework assessment is not anonymous.
Coursework | Format |
Due date & marks |
---|---|---|
Multithreaded programming Learning objectives:
|
Individual Demonstrating your software Not anonymously marked |
Software to be written during Lent Term or Easter vacation Assessment at start of Easter Term [15/60] |
Booklists
Please refer to the Booklist for Part IIB Courses for references to this module, this can be found on the associated Moodle course.
Examination Guidelines
Please refer to Form & conduct of the examinations.
Last modified: 21/05/2021 12:07