Abstract
This course presents the architecture of microprocessor-based systems, from the internals of the processors themselves to the main peripherals, that altogether make a complete computing machine, capable of running operating systems like GNU/Linux, Android, Windows, iOS…
The main focus is on the interactions between software and hardware: thanks to lectures, exercises and laboratory sessions students understand what happens between the source code of a software application and its execution on a real hardware computer system, between software concepts and the hardware components that implement them in the end.
Another important aspect is the relationships between performance, safety and security. The course presents various techniques used by computer system designers to improve the performance of their machines, and the impact of these techniques in terms of safety (functional correctness) and security (sensitivity to various types of attacks).
Teaching and Learning Methods
Lectures, exercises, laboratory sessions, homework.
Course Policies
Attendance to the laboratory sessions is mandatory.
Bibliography
Online book / book: Computer Organization and Design, RISC-V Edition (The Hardware Software Interface), Second Edition, David A. Patterson and John L. Hennessy, 2021.
Prerequisites
Basic knowledge of software programming (data types, control structures, algorithms...).
-
Description
· History of computer systems
· Types of microprocessors, from the simplest to the most powerful
· Representation of data in computer systems
· Instruction set architectures
· Interactions between hardware and software
· Pipelined architectures, memory hierarchy and caches, branch prediction, hardware support for operating systems, peripherals…
· Interactions between performance, safety and security
· Labs on RISC-V architectures: observation of a processor during the execution of software applications, understanding of its interactions with its environment, design of a tiny operating system.
Learning Outcomes
· Understand the relationships between software concepts (functionality, performance, parallelism, security...) and the underlying hardware machines (processors, peripherals...).
· Discover the most important techniques used by the processor and/or computer vendors to improve the performance of their products (pipelining, caches, branch prediction...) and the related issues (pipeline hazards, cache coherence, speculative execution...).
· Understand the necessary hardware support for operating systems: processor modes, Memory Management Units (MMU), timers, interrupts, atomic operations...
Become familiar with the classical trade-offs between performance, cost, and complexity in computer systems.
Duration CE |
Total |
Lect. |
Lab. |
Prob. |
Project |
Perso. |
50 |
25.5 |
16.5 |
|
|
8 |
Evaluation
· Laboratory session reports and source codes: 1/3 of final grade.
Two hours written exam with documents: 2/3 of final grade.