Overview
Unsurprisingly, this is the first module.
The syllabus is pretty standard too
Week 1: Introduction
The materials for this week provide an introduction to the course, both in terms of the course's organisation, as well as the academic content of the course. We covered a high-level overview of the logical levels of computer systems, many of which are covered in much greater detail in subsequent weeks.
Learning Objectives/Outcomes
-
Know what a computer system is, and how to measure them.
-
Understand the various logical levels of computer systems.
-
Understand the von Neumann model of computer systems, and why it has been so influential.
Content
-
What is a computer System?
-
The Computer Level Hierarchy
-
How to Measure a Computer
-
The von Neumann Model
-
From the Linda Null Book:
-
1.1 Overview
-
1.2 Computer Systems
-
1.3 An Example System
-
1.6 The Computer Level Hierarchy
-
1.9 The Von Neumann Model
-
Week 2: Binary (1)
This week is for studying how computer systems represent numeric values.
Learning Objectives/Outcomes:
-
Convert between decimal and binary (and any other bases)
-
Be able to represent fractional components in binary
-
Use signed-magnitude, one's complement, and two's complement formats for representing negative values in binary. Understand the advantages and disadvantages of the formats
-
Use hexadecimal to represent binary values.
Content
-
Positional Numbering Systems
-
Base Conversions
-
Fractional Components
-
-
Binary Formats for Negative Values
-
Signed-Magnitude
-
One's Complement
-
Two's Complement
-
-
Hexadecimal
-
Why Binary?
-
From the Linda Null Book:
-
2.1 Introduction
-
2.2 Positional Numbering Systems
-
2.3 Converting Between Bases
-
Week 3: Binary (2)
This week, we looked at how a computer can perform arithmetic operations (addition, subtraction, multiplication, and division) using the binary formats from last week (unsigned, signed magnitude, one's and two's complement).
Learning Objectives/Outcomes:
-
Understand how a computer system performs basic arithmetic operations using the following binary formats: unsigned, signed magnitude, one's and two's complement
-
Identify when an arithmetic operation results in overflow
Content
-
Unsigned Arithmetic
-
Addition
-
Subtraction
-
Multiplication
-
Division
-
-
Signed-Magnitude Arithmetic
-
Addition
-
Subtraction, Multiplication, and Division
-
-
Complement Arithmetic
-
Addition
-
Subtraction, Multiplication, and Division
-
-
From the Linda Null Book:
-
2.4.1 Signed Magnitude
-
2.4.2 Complement Systems
-
2.4.4 Unsigned vs Signed Numbers
-
2.4.6 Carry vs Overflow
-
2.4.7 Binary Multiplication and Division Using Shifting
-
Week 4: Binary (3)
This week, we studied floating-point representations, specifically the IEEE-754 format for storing binary numbers, as well as its associated arithmetic and properties.
Learning Objectives/Outcomes:
-
Understand the IEEE-754 format, and convert in and out of the format.
-
Understand how a computer can perform arithmetic using iEEE-754 format.
-
Recognise and identify common errors that occur with floating-point representations.
-
Distinguish the properties of range, precision, and accuracy.
Content
-
Floating Point Representation and IEEE-754 Format
-
Fixed-Point or Floating-Point
-
IEEE-754 format
-
-
Floating Point Arithmetic
-
Arithmetic with IEEE-754 Format
-
Range and Precision
-
Accuracy
-
-
From the Linda Null Book:
- 2.5 Floating-Point Representation
-
Additional Reading:
Week 5: Assembly (1)
This week, we studied how computer systems are organised according to their hardware and software components. We also were introduced to a simple model computer that can help us understand machine code and the assembly process.
Learning Objectives/Outcomes:
-
Learn the components common to every modern computer system.
-
Be able to explain how each component contributes to program execution.
-
Understand a simple architecture invented to illuminate these basic concepts, and how it relates to some real architectures.
Content
-
Computer Components (CPU, memory, I/O)
-
Computer Components (the Bus, Clocks and Interrupts)
-
MARIE Specifications
-
MARIE ISA
-
From the Linda Null Book:
-
Sections 4.1 - 4.5
-
Section 4.8
-
-
Optional Material
Week 6: Assembly (2)
This week, we studied how computer systems execute programs at the machine code level. We also looked at how high-level coding concepts can be implemented with basic assembly code.
Learning Objectives/Outcomes:
-
Learn the processes involved in executing programs and handling interrupts.
-
Know how the program assembly process works.
-
Understand how to create and analyse simple programmatic constructs.
Content
-
Instruction Processing and Interrupts
-
Tracing a simple MARIE program
-
Assemblers
-
Extending the MARIE Instruction Set
-
Sample Programming Constructs
-
From the Linda Null Book:
- Sections 4.9 - 4.12
-
Optional Material
Week 7: Instruction Set Architecture and Pipelining
This week, we looked at various issues in the design of ISAs with a view to their efficiency. We also looked at pipelining as a means to speed up program execution through parallelisation.
Learning Objectives/Outcomes:
-
Understand the factors involved in instruction set architecture design.
-
Gain familiarity with memory addressing modes.
-
Understand the concepts of instruction-level pipelining and its effect upon execution performance.
Content
-
Designing ISAs
-
Endianness
-
Register Architectures
-
Instruction Types
-
Addressing
-
Pipelining
-
From the Linda Null Book:
-
Sections 5.1-5.2.4
-
Sections 5.3-5.5
-
-
Optional Material
Week 8: Performance Measurement and Analysis
The ideas presented this week helped us to understand various measurements of computer performance. We discussed a number of factors that affect system performance, including some tips on how you can improve the performance of programs.
Learning Objectives/Outcomes:
-
Understand the ways in which computer performance is measured.
-
Be able to describe common benchmarks.
-
Become familiar with factors that contribute to improvements in CPU and memory performance.
Content
-
What is Benchmarking?
-
Benchmark Examples
-
RISC vs CISC
-
Branch Optimisations and Code Optimisations
-
Caching
-
From the Linda Null Book:
-
11.1 Introduction
-
11.2 Mathematical Preliminaries (refresher on basic statistics)
-
11.3 Benchmarking (11.4.1, 11.4.2, 11.4.3)
-
11.5 CPU Performance Optimisation
-
-
Optional Material
Week 9: Memory Hierarchy, Cache Systems
This week, we studied the memory hierarchy, with a particular focus on cache systems.
Learning Objectives/Outcomes:
-
Understand the different levels of the memory hierarchy.
-
Understand approaches for cache organisation, including mapping schemes and replacement policies.
-
To be able to calculate effective access time for cache systems.
-
To be able to interpret memory addresses in the context of cache systems.
Content
-
Memory
-
Memory Addresses
-
Memory Hierarchy
-
Effective Access Time
-
-
Cache Systems
-
Direct-Mapped Cache
-
Fully-Associative Cache
-
Set-Associative Cache
-
Replacement Policies
-
-
From the Linda Null Book:
-
6.1 Memory Introduction
-
6.2 Types of memory
-
6.3 The memory hierarchy
-
6.4.1 Cache mapping schemes
-
6.4.2 Replacement policies
-
6.4.3 Effective access time and hit ratio
-
-
Optional Material
Week 10: Memory Hierarchy, Virtual Memory
This week, we looked at how a computer system can utilise slow, high-capacity memory hardware to improve the memory system.
Learning Objectives/Outcomes:
-
Understand virtual memory, and the advantages and disadvantages of using it.
-
Understand two approaches to virtual memory: segmentation and paging.
Content
-
Segmentation
-
Segmentation
-
External Fragmentation
-
-
Paging
-
Paging
-
Internal Fragmentation
-
EAT and TLB
-
-
From the Linda Null Book:
-
6.5 Virtual Memory
-
6.5.1 Paging
-
6.5.2 Effective access time using paging
-
6.5.3 Putting it all together
-
6.5.4 Advantages and disadvantages of virtual memory
-
6.5.5 Segmentation
-
6.5.6 Segmentation combined with paging (OPTIONAL)
-
6.6 Real-world examples (OPTIONAL)
-
-
Optional Material
End of Syllabus
Journey So Far
I was particularly interested in this because, when I took it during my undergraduate degree, our textbook was the one focused on Electrical/Electronics Engineering (you know the one, and if you don't, lucky you), and our lecturer just had us breeze through the whole text and regurgitate entire sections in the exams.
So I 'know' computer organisation and architecture, but you couldn't pay me to teach anyone anything about it. Moreover, I downloaded the reading list for this course (The Essentials of Computer Organization and Architecture by Linda Null and Julia Lobur, 5th edition [although I got the 6th edition], 2019; and Computer Organization and Design: Hardware/Software Interface by David A. Patterson and John L. Hennessy, Rev. 4th edition). As I was going through the first book, I realised that it was unique as it aimed to teach the topic from a CS-First perspective.
As is my custom, from the very first reading section, I got lost in the book and just kept reading and reading and reading. Now, I am in Chapter 8 (Alternative Architectures), and I realise that I have already gone through the whole syllabus (except week 8). Makes me rerealise how much of the advanced topics they (typically) spare us from during our undergraduate degrees and how much more I have to get familiar with if I really want to join a PhD programme.
I have so so many thoughts about the module so far, but I feel they would be better expressed in my posts about the books themselves, as most of the course is taken directly from them.
The additional reading might surprise me when I get to them, though, and if they do, I'll talk about them here.
It also makes me curious: the second book isn't referenced at all in the syllabus. What exactly does it teach?
I plan to make a whole series just talking about the Linda Null book, and if the second one touches me the same way, I'll do the same for it, too.
I guess I can consider this module crossed off my list for now, but I don't have nearly as much expertise as I'd like. So I guess I'll read some more. I'm especially looking forward to the Chapter 12 (Network Organisation and Architecture). I mastered in Communications, and Networking is still my weakness.
There are also some labs and exercises in the syllabus, and I'll solve any that look interesting and post them in future edits.