Internship, PhD, job proposals...
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 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).
Topics:
Learning outcomes:
Attending the lectures is not mandatory but highly recommended: there is no real textbook and the provided material does not contain the entirety of what is discussed in the classroom.
Attendance to the lab sessions is mandatory, the reports and the produced source code account for 1/3 of the overall mark. It is perfectly possible, and even recommended, to work in cooperation with others but lab reports and source codes are 100% personal works. Identical reports or source codes will be considered as void.
A two hours written exam with documents accounts for the remaining 2/3 of the final grade. The questions and problems correspond to all labs and lectures that have been given. Connected devices (laptops, smart phones, tablets…) are not allowed. Example past exams:
All labs are distributed and managed using git and GitLab.
You read one of these books? Or another that is not in the list and should? Please drop me note and give me some feedback.
The most relevant parts of the Computer Organization and Design, RISC-V Edition (The Hardware Software Interface)
book for this course (do not forget the corresponding exercises at the end of each chapter) are:
Below Your Program
Under the Covers
Performance
Instructions: Language of the Computer
Arithmetic for Computers
The processor
Large and Fast: Exploiting Memory Hierarchy
Plus, optionally:
Historical Perspective and Further Readingof Chapters 1, 2 and 3
A C Sort Example to Put it All Together
Floating Point