Résumé
Ce cours présente l'architecture des systèmes à base de microprocesseurs, depuis les structures internes des processeurs eux-mêmes jusqu'aux principaux périphériques qui constituent ensemble un ordinateur complet, capable d'exécuter des systèmes d'exploitation comme GNU/Linux, Android, Windows, iOS…
L’axe principal du cours porte sur les interactions entre logiciel et matériel : grâce aux leçons, aux exercices et aux séances de laboratoire, les élèves comprennent ce qu’il se passe entre le code source d’une application logicielle et son exécution sur un véritable ordinateur matériel, entre les concepts logiciels et les composants matériels qui les réalisent finalement.
Les relations entre performance, sûreté et sécurité constituent un autre aspect important. Le cours présente les différentes techniques utilisées par les concepteurs de systèmes pour améliorer les performances de leurs machines, ainsi que les impacts de ces techniques en termes de sûreté (correction fonctionnelle) et de sécurité (sensibilité à différents types d’attaques).
Modalités pédagogiques
Cours magistraux, exercices, séances de travaux pratiques, travail personnel.
Règles du cours
La participation aux séances de travaux pratiques est obligatoire.
Bibliographie
Livre en ligne / livre : Computer Organization and Design, RISC-V Edition (The Hardware Software Interface), Second Edition, David A. Patterson and John L. Hennessy, 2021.
Prérequis
Connaissances de base en programmation logicielle (types de données, structures de contrôle...).
-
Description
· Historique des ordinateurs.
· Les types de microprocesseurs, depuis les plus simples jusqu'aux plus puissants.
· La représentation des données dans un ordinateur.
· Les architectures de jeux d'instructions.
· Les interactions entre le matériel et le logiciel.
· Les architectures en pipeline, la hiérarchie mémoire et les caches, la prédiction de branchement, le support matériel indispensable aux systèmes d'exploitation, les périphériques…
· Les interactions entre performance, sûreté et sécurité.
· Séances de travaux pratiques sur les architectures RISC-V : observation d’un processeur pendant l'exécution d'applications logicielles, compréhension de ses interactions avec son environnement, conception d’un mini système d’exploitation.
Objectifs d'apprentissage
· Comprendre les relations entre les concepts logiciels (fonctionnalité, performance, parallélisme, sécurité...) et les machines matérielles sous-jacentes (processeurs, périphériques...).
· Découvrir les techniques les plus importantes utilisées par les vendeurs de processeurs et/ou d'ordinateurs pour améliorer les performances de leurs produits (pipeline, caches, prédiction de branchement...) et les problèmes qu'elles posent (aléas de pipeline, cohérence des caches, exécution spéculative...).
· Comprendre le support matériel indispensable pour les systèmes d'exploitation : niveaux de privilèges, unités de gestion de la mémoire, chronomètres matériels, interruptions, opérations atomiques...
Se familiariser avec les compromis classiques entre performance, coût et complexité des systèmes informatiques.
Durée EC |
Total |
CM |
TP |
TD |
Projet |
TPP |
50 |
25.5 |
16.5 |
|
|
8 |
Evaluation
· Rapports de travaux pratiques et codes sources : 1/3 de la note finale.
Examen final de 2 heures avec documents : 2/3 de la note finale.