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]