Module Code | CSU34021 |
Module Name | Computer Architecture II |
ECTS Weighting [1] | 5 ECTS |
Semester Taught | Semester 1 |
Module Coordinator/s | Anthony Ventresque |
Module Description
This module examines how computer architecture affects software performance. It covers low-level programming using assembly languages, instruction set design, and memory organisation, providing insights into how code is executed by the hardware. Students will explore topics such as pipelining, memory hierarchies, virtual memory, and multicore systems, with a focus on how these architectural features impact runtime behaviour. The second part of the module introduces practical tools and techniques for profiling and analysing the performance of real programs. Through a mix of lectures and tutorials, students will develop a practical understanding of the interaction between software and hardware in modern systems.
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Write and reason about low-level programs in assembly language
- Describe the instruction execution pipeline and identify performance hazards
- Explain the principles of virtual memory, address translation, and MMUs
- Analyse the role of cache organisation and memory locality in software performance
- Use performance analysis and monitoring tools to profile code
- Understand the architecture and performance implications of multicore systems
- Evaluate cache coherence and synchronisation mechanisms in parallel computing
Module Content
Topics covered in this module are:
- IA32 and x64 assembly programming; registers, stack, and calling conventions
- RISC vs CISC instruction set design and the RISC-1 architecture
- Instruction pipelining, hazards, and instruction-level performance
- Virtual memory, page tables, TLBs, and MMU design
- Cache architecture, associativity, locality, and profiling
- Performance measurement tools: perf, valgrind, etc.
- Multicore architectures, NUMA, and synchronisation
- Cache coherence protocols (MESI, write-through, etc.) and memory consistency
Teaching and Learning Methods
- Two 50-minute lectures per week introduce theoretical concepts and applied examples.
- One tutorial per week includes formal exercises and practical labs (e.g. profiling, tuning).
Assessment Details
- Various continuous assessments (exercises, tests and projects) 30%
- 2-hour end of semester written exam 50%
Reassessment Details
Supplemental assessment is by examination ONLY (100%). Students repeating ‘off-books’ (OBA) are also assessed by examination ONLY (100%) in all examination sessions. In person exam 2hrs
Contact Hours and Indicative Student Workload
Contact Hours (scheduled hours per student over full module), broken down by: | 36 hours |
Lecture | 24 hours |
Laboratory | 0 hours |
Tutorial or seminar | 12 hours |
Other | 0 hours |
Independent study (outside scheduled contact hours), broken down by: | 64 hours |
Preparation for classes and review of material (including preparation for examination, if applicable) | 24 hours |
Completion of assessments (including examination, if applicable) | 40 hours |
Total Hours | 100 hours |
Recommended Reading List
- “Computer Architecture – A Quantitative Approach”, Hennessey and Patterson.
Module Pre-requisites
Prerequisite modules: Assembly language and C/C++ programming.
Other/alternative non-module prerequisites: N/A
Module Co-requisites
N/A