CSU34021 – Computer Architecture II

Module CodeCSU34021
Module Name Computer Architecture II
ECTS Weighting [1]5 ECTS
Semester TaughtSemester 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:

  1. Write and reason about low-level programs in assembly language
  2. Describe the instruction execution pipeline and identify performance hazards
  3. Explain the principles of virtual memory, address translation, and MMUs
  4. Analyse the role of cache organisation and memory locality in software performance
  5. Use performance analysis and monitoring tools to profile code
  6. Understand the architecture and performance implications of multicore systems
  7. 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
Lecture24 hours
Laboratory0 hours
Tutorial or seminar12 hours
Other0 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 Hours100 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

Module Website

Blackboard