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 les entourent et constituent un ordinateur complet, capable d'exécuter des systèmes d'exploitation comme GNU/Linux, Android, Windows, iOS...
Modalités pédagogiques : Cours magistraux, travail en équipe, séances de travaux pratiques et mini-conférences d'industriels.
Règles du cours : La participation aux séances de travaux pratiques ainsi qu’aux mini-conférences est obligatoire.
Livre : PATTERSON D. A., HENNESSY J. L. Computer organization and design: the hardware software interface. Morgan Kaufmann, 2013, 800p.
Connaissances de base en programmation logicielle (types de données, structures de contrôle...)
- Les types de microprocesseurs, depuis les plus simples jusqu'aux plus puissants, et leurs jeux d'instructions.
- Les interactions entre le matériel et le logiciel, les caches et la mémoire, les périphériques, le support matériel indispensable aux systèmes d'exploitation...
- TPs permettant d'observer un processeur en action pendant l'exécution d'applications logicielles, et de comprendre comment il interagit avec son environnement.
- Mini-conférences données par des industriels, présentant les dernières générations de processeurs et les défis liés à leur conception et à leur vérification.
- https://perso.telecom-paristech.fr/pacalet/CompArch/
Objectifs d'aprentissage :
- 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 (pipelining, caches, prédiction de branches...) et les problèmes qu'elles posent (dangers des pipelines, cohérence des caches...).
- Comprendre le support matériel des systèmes d'exploitation (modes des processeurs, unités de gestion de la mémoire, temporisateurs, interruptions, opérations atomiques...)
- Se familiariser avec les compromis classiques entre performance, coût et complexité des systèmes informatiques.
Evaluation: Examen final (50%), rapports de laboratoire (25%), contributions au matériel de cours avec textes, présentations, vidéos, exercices, laboratoires... (25%)