Computer Architectures Learning Goals
Digital Abstraction (1.5–1.6)
- You know what voltage, current and the transfer characteristic of a circuit are.
- You know the difference between analog and digital signals.
Transistors
Sources: 1.7 + [Sag14,Sec. 8.1, 8.2, 8.7]
- You know what n-type and p-type doping of silicon is, and how charge is carried.
- You know how n-channel and p-channel (enhancement) MOSFET transistors work.
- You know what an I-V curve is and which modes of operation a MOSFET transistor has.
- You know how MOSFET transistors are used in the construction of logic gates.
Fourier transformation and Nyquist–Shannon sampling theorem
Sources: [Sag14, Sec. 1.2, 1.8] , [Ste15, Sec. 8.2]
- You know what periodic functions are, including typical example like sine and square waves, and how frequency is determined.
- You know what the Fourier series is and how to obtain its coefficients for periodic functions.
- You know the Nyquist–Shannon sampling theorem and its implications on undersampling.
Sample-and-hold circuit
Sources: [Ste15, Sec. 8.3.3 & 8.4.2 & 2.22 & 5.1 & 5.3.1.1]
- You know how the S/H circuit works (this requires you to know how capacitors and voltage followers work)
- You know how an ADC can be implemented by using successive approximation
Combinational Logic (2.1–2.5)
- You know what Boolean logic and equations are, and how they relate to logic gates and circuits.
- You know how Boolean algebra can be used to alter and minimise circuits.
X/Z and Karnaugh maps (2.6–2.7)
- You know how X and Z values relate to Boolean connectives and how they are used in circuit design.
- You know what Karnaugh maps are and how they are used in circuit design.
Multiplexer & Encoder/Decoders
Sources: 2.8 + [Mai07, Chap. 8]
- You know what multiplexers are and how they can be built.
- You know how (de)multiplexers can be used to make any Boolean function and to convert between parallel and serial data.
- You know what encoders and decoders are and where they are used instead of (de)multiplexers.
Arithmetic Circuits (5.2)
- You know how half and full 1-bit adders function and how they can be built.
- You know how n-bit adders can be built out of full adders and how the implementation of n-bit adders can be improved to carry-lookahead and prefix adders.
- You know how this can be used to implement subtraction and multiplication.
- You know how an ALU is organised and can be built out of other blocks.
Sequential Logic (3.1–3.2)
- You know what the behaviour of D latches and D flip-flops is (as truth tables and as waveforms), and how they can be assembled into registers.
Synchronous Logic Design and FSM (3.3–3.4)
- You know how race conditions and oscillations can occur in circuits, and how synchronous sequential circuits are used to prevent them.
- You know what finite-state machines (Moore machines) are and how they can be realised as circuits with memory.
- You understand the idea of factoring large FSMs into smaller ones to reduce design complexity.
Timing & Clocks
Sources: (2.9 & 3.5–3.6) + [Bal03, Sec. 1.10]
- You know what the propagation delay is, how an upper bound can be found via critical paths and what role delays play in circuit design.
- You know the various time constraints (aperture, setup, hold) that determine the system timing and how to analyse the timing of a circuit.
- You know how metastable states can be handled with synchronisers.
- You know what parallelism is and how dependencies affect it on the level of circuits.
Careful: There is parallelism here
Sequential Blocks (5.4)
Sources: 5.4 + [Mai07, Sec. 11.1-11.5 & 11.12]
- You know what the behaviour of ripple/synchronous counters and binary counters is and how they are implemented.
- You know what the behaviour of the four variants of shift registers is and how they are implemented.
Digital Building Blocks (5.1)
Memory arrays
Sources: 5.5 + [Mai07, Sec. 15.5-15.6]
- You know what memory arrays are, how they are organised and addressed.
- You know the differences between flip-flops, DRAM, Asynch/Synch. SRAM, and ROM, and their respective characteristics and applications.
Logic arrays and programmable logic devices
Sources: 5.6 + [Mai07, Sec. 9.1-9.4+9.8]
- You know what logic arrays are and how they can be made programmable.
- You know what FPGAs comprise, how they function and what their applications are.
Number Systems
Sources: 1.4 + 5.3 + [Mai07, Sec. 1.17 & Sec. 3.7]
- You know what a number system is in general and the binary number system in particular, and you know how to carry out simple arithmetic on binary numbers.
- You know what the idea of fixed-point and floating number systems is and how arithmetic works in these systems (addition, subtraction, multiplication and division).
- You know what the IEEE-754 format is, especially how the cases of 0, infinity and NaN are handled in encoding and arithmetic.
- You understand the issues with rounding that the limited precision of number representations incur.
Architecture (6.1–6.3)
- You know what instructions in an assembly language are and what operands they take (registers, memory and constants).
- You know what R-, I- and J-type instructions are (not necessarily the bit representation).
- You know what a program in a machine language is stored and how it is run.
Assembler Programming (6.4)
- You know how instructions in general, and arithmetic-logical instructions in particular, work in MIPS assembly.
- You know how if-branches, while-loops and function calls can be translated into MIPS assembly. For function calls, you only need to know about the calls, returns, arguments and return values and the stack.
- You know how arrays can be realised with indirection in MIPS.
Addressing modes and compiling (6.5 + 6.6)
- You know the four different addressing modes of MIPS.
- You know what the MIPS memory map is
- You know what steps a compiler comprises and a high-level program gets turned into machine code.
x86 Architecture & Instruction Coding
Sources: 6.8 + [Det01, Sec.9.2]
- You know the organisation of the x86 architecture and assembler: registers, operands, flags instructions and why instructions have to be encoded.
- You know how if-branches, while-loops and function calls can be translated into x86 assembly.
- You know how arrays can be realised with indirection in x86.
Memory and I/O (8.1)
Memory (8.2–8.4)
- You know the role of memory, how a processor interfaces it and how memory is typically organised into cache, main memory and virtual memory.
- You know what the miss and hit rate are, and how they affect the memory access time.
- You know what direct mapped, set associative and fully associative cache is and how their characteristics compare.
- You know what virtual memory is how it is organised with address translation, page tables, TLB and memory protection
Embedded I/O in microcontrollers
Sources: 8.5 + 8.6 + [Mai07, Sec. 14.1-14.3]
- You know how memory-mapped I/O works.
- You know what micro-controllers are and what typical building blocks they comprise in general, and the PIC32 architecture in particular.
- You know what GPIO and SPI are, how they function and how they are used.
- You know what timers and interrupts in PIC32 are and how they can be used for efficient programming.
PC I/O & x86
You can choose to do the remainder of microcontrollers, in which case you have to read also 8.6, and
- know how to interface an LED and relays [Mai07, Sec. 14.6],
- understand analog I/O (ADCs and DACs),
- understand PWM and its use to create variable voltages, and
- know how to drive an LCD via SPI and how to control DC or stepper motors.
If you choose to do PC I/O & x86, your sources are sections 8.5, 8.7–8.8 and you have to
- You know what memory-mapped IO is
- You know how UART and RS-232 work [Bal03, Sec. 5.2–5.4]
- You know what a bus is and how the PCI bus is designed [Cle06, Sec. 10.1.3]