Computer Laboratory Home Page Search A-Z Directory Help
University of Cambridge Home Computer Laboratory
Computer Design
Computer Laboratory > Course material 2002-03 > Computer Design

Computer Design

Principal lecturer: Dr Ian Pratt (
Taken by: Part IB, Part II (General), Diploma

Past exam questions

ECAD labs

simple.s - A short program demonstrating how to allocate, write to and display the contents of an area of memory.

addressing.s - A short program illustrating some useful ARM assembler pseudo-instructions for loading addresses and constants into registers.

Common mistakes
     Accessing words in memory
     Accessing bytes in memory
     Overwriting your code in memory

Errata and Additional Material

Lectures 1-12 (Dr Robert Mullins,

ARM tools - A short guide to downloading and using the free ARM tools. These tools may be particularly useful to people who do not attend the ECAD labs, but want to gain some experience of assembley language programming.
(Note: these tools are slightly different to those used in the labs.)
A complete guide to installing and using the tools is included in the files provided by ARM.

Lecture 2, slide 17 On row 6, the second column should be LD R4, (R1)- . Again, the last row and rightmost column should be R4=M[...

Lecture 3, slide 15 The "Never" (NV) Extension should not be used. It is actually used for other purposes in more recent implementations of ARM processors. There are lots of ways of writing no-ops (instructions that have no effect on the processor state), e.g. MOV R0, R0. (performs no useful function and has no effect on processor state!)
You will not need to use NOPs in any of the labs. They are sometimes required in rare cases on the ARM to allow operations to complete before accessing their results.

Please read chapters 1 and 2 of "Computer Architecture a Quantitative Approach" (Chapter1.pdf)

Lecture 4 - Programming the ARM
Updated notes (a few extra slides, mostly examples) Lecture4.pdf

Lecture 5 - OS Support and Memory Management
If you are unclear about the concepts of virtual memory a gentle introduction is available in Section 7.3 (see Section 5.6 for exceptions and interrupts) of "Computer Organization & Design The Hardware Software Interface", David A. Patterson and John L. Hennessy. You could also read the first couple of pages of the first survey paper (below).

If you are confident about the material in this lecture and want to read more about virtual memory systems, two good survey papers are listed below.

"Virtual Memory: Issues of Implementation" Bruce Jacob and Trevor Mudge PDF
"Virtual Memory in Contemporary Microprocessors" Bruce Jacob and Trevor Mudge PDF

Lecture 6 - Instruction Set Examples
The virtual memory systems described in Lecture 5 divide the virtual and physical address space into a set of fixed sized pages. An alternative to using a fixed size block (a page) is to allow blocks to vary in size, variable-size blocks are called segments. Segments reduce internal fragmentation - the unused portion of a fixed sized block. Unfortunately, they complicate the process of replacing a block. Loading a new segment now involves finding a suitably sized region of free main memory, perhaps requiring a number of different segments to be swapped out. This leads to external fragmentation (areas of main memory which remain unsed because they are not large enough to hold whole segments).

See Hennessey and Patterson "paging versus segmentation", p.463.

Lecture 7 - Virtual Machines
Lecture 8 - Processor Design
Lecture 15 - Buses
Article on microprogramming

Lecture 16 - Microprogramming
Article on USB, serial and parallel ports