Course material 2010–11
Lecturer: Dr S.M. Hand
No. of lectures: 6
This course is a prerequisite for Operating Systems.
The overall aim of this course is to provide a general understanding of how a computer works. This includes aspects of the underlying hardware (CPU, memory, devices), as well as how to program a computer at a low level using assembly language.
- History: from vacuum tubes to VLSI. The Von Neumann architecture. Hardware/software layers and languages. Operation of a simple computer (processors, memory, buses, devices). Memory: concepts, structures, hierarchy. [1 lecture]
- Processor: control and execution units. ALU and computer arithmetic. Logical and conditional operations. Branches. Memory access. Data representation: (integers), text, reals, compound structures, instructions. Fetch-Execute cycle revisited. [1 lecture]
- General I/O architecture. Example devices. Buses: general operation, hierarchy, synchronous versus asynchronous. Interrupts. Direct Memory Access. [1 lecture]
- Programming in Assembly. MIPS instruction formats. Assembler directives and pseudo-instructions. Memory access and control flow instructions. The SPIM simulator. Example programs. Procedures and the stack. Recursive procedures. [2 lectures]
- Course Review. [1 lecture]
At the end of the course students should be able to
- describe the fetch-execute cycle of a simple computer with reference to the control and execution units;
- understand the different types of information which may be stored within a computer memory;
- understand a simple assembly language program.
Tanenbaum, A.S. (1990). Structured computer organisation. Prentice Hall (3rd ed).
Patterson, D. & Hennessy, J. (1998). Computer organisation and design. Morgan Kaufmann (2nd ed.).