Current postgraduate taught students
COMP60081: Fundamentals of High Performance Execution (2007-2008)
This module introduces non-Computer Science graduates to the Fundamentals of Computer System Architecture.
The module aims to provide students with a sufficiently detailed understanding of Computer Architecture to enable them to understand the execution characteristics of scientific simulation codes.
On completion of the module, students will
have an understanding of the essentials of serial program execution
cycle: source code -> object code -> run-time code -> hardware;
have an understanding of the effects of components of execution cycle on performance;
have an understanding of the limitations of abstraction, in particular in terms of program performance.
Assessment of Learning outcomesAn end of module 2-hour examination (35%) and group-based coursework (laboratories and a mini-project, which will include a formal presentation of the results) (65%).
Contribution to Programme Learning OutcomesLearning outcomes (1) and (2) are assessed by examination, in the laboratory and via the mini-project, learning outcomes (3) is assessed in the laboratory and via the mini-project.
High level view of source code to run-time code transformationFundamentals of Compilation; Optimisation; Interpretation; Libraries.
High level view of run-time code to hardware transformationSimple architectural model - one instruction at a time (issued at a constant rate), constant memory access time, performance implications.
Lower level view of source code to run-time code transformationFormal description of program (Abstract Syntax Tree, Call Graph, Dependence Graph); Compiler Optimisations (Simple Data Dependencies, Transformations, etc.); JIT Compilation.
Lower level view of run-time code to hardware transformationMore realistic (complex) architectural model - memory hierarchy (effects of cache), multi-way instruction issue, etc, performance implications. Evaluation of real performance effects on real hardware.
ResumeMeasure of performance refined from flops (floating point operations per second) to ips (instructions per second) to actual hardware performance; discussion of limitations of earlier performance measures. Performance implications of pointers vs. arrays.
Core TextTitle: Introduction to computing systems: from bits and gates to C and beyond (2nd edition)
Author: Patt, Yale N. and Sanjay J.Patel
Supplementary TextTitle: Computer architecture: a quantitative approach (5th edition)
Author: Hennessy, John L. and David A. Patterson
Publisher: Morgan Kaufmann
Supplementary TextTitle: Compilers: principles, techniques and tools (2nd edition)
Author: Aho, Alfred V. et al
Supplementary TextTitle: Computer organization and design: the hardware/software interface (5th edition)
Author: Patterson, David A. and John L. Hennessy