The course gives basic knowledge of how a computer functions and is built-up both from a hardware and from a software perspective The course is divided into six different modules, which for example include the following basic concepts:
- C-programming and assembler language: pointers, functions, stack, assembly language, machine language, instruction encoding and processor registers.
- I/O system: timers, interrupts and memory mapped I/O.
- Digital design: truth tables, gates, boolean algebra, multiplexers, decoders, adders, combinatorial nets, sequential networks and registers.
- Processor construction: arithmetic-logic unit, data path, control unit and pipeline.
- Memory architectures: instruction cache, data cache and virtual memory.
- Parallel processors and programs: Amdahl's law, different variants of parallelism as well as multicore.
After passing the course, the student shall be able to
- Implement low-level programs in the C programming language and in an assembly language
- Implement low-level programs with input-output, timers, and interrupts
- Analyse processor microarchitectures, with and without a pipeline,
- Analyse memory hierarchies, including cache-structures.
- Compare fundamental concepts about multiprocessor computers.
- Explain and describe technical solutions both orally and in writing.
- analyze MIPS assembly code by using a simulator.
- write short assembly code functions in MIPS assembler.
- execute and test a compiled program on a PIC32 microcontroller.
- construct shorter C programs that includes for-loops, if-statements, arrays, and pointers.
- analyze C programs and understand how a compiled program is laid out in memory.
- Write code for general-purpose input/output (GPIO) ports.
- Write code to initialize and use simple input/output devices, such as buttons and LEDs.
- Write code to initialize and use devices with handshaking, such as a programmable timer.
- Write code to initialize and handle interrupts.
- Have a general understand for how to read non-trivial technical manuals, data sheets, and header files.
- Construct a simple single-cycle processor that executes a real assembly program.
- Explain how bit selection and instruction decoding works.
- Explain the basic principles of the data path and the control unit.