INDEX
DOCS →
[Config]
[MIPS U]
[MIPS K]
[markdown]
[CR.md]
COURS →
[1 (+code) (+outils)]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
TME →
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
CODE →
[gcc + soc]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
Architecture des ordinateurs 2 - LU3IN031
1. Objectifs de l'UE Archi-2
L'UE Archi-2 (LU3IN031) est la suite de l'UE Archi-1 (LU3IN029) du tronc commun au premier semestre de L3.
Les 3 dernières séances de l'UE Archi-1 présentent l'architecture d'un petit SoC intégrant un MIPS et quelques composants simples. Ce SoC est utilisé comme support d'un embryon de système d'exploitation construit progressivement. À la fin de l'UE, le système d'exploitation démarre et exécute une petite application, mais le noyau contient juste un gestionnaire de syscalls et un gestionnaire d'interruptions.
L'UE Archi-2 vise à aller plus loin sur 3 axes : la microarchitecture du processeur, l'architecture du SoC et le système d'exploitation.
- Pour la microarchitecture, il s'agit de comprendre comment sont réalisés les opérateurs arithmétiques et comment sont exécutées les instructions du MIPS. Vous verrez une technique consistant à décomposer les instructions en micro-instructions élémentaires.
- Pour l'architecture, il s'agit de comprendre comment accélérer les accès à la mémoire grâce aux caches, et quelles sont les conséquences de l'ajout de composants ayant le droit, à l'instar du MIPS, de faire des lectures et des écritures dans la mémoire.
- Pour le système d'exploitation, il s'agit de comprendre comment une application peut disposer de plusieurs fils d'exécution (threads) s'exécutant en parallèle, comment la mémoire est dynamiquement allouée au noyau et à l'application, comment les threads d'une application se synchronisent et enfin, on l'espère, comment fonctionne une petite bibliothèque graphique (cette partie n'est pas encore terminée)
Pour présenter les concepts des systèmes d'exploitation (OS), on utilise généralement une méthode top-down. Les principes des services de l'OS tels que la gestion des fichiers, des processus, des communications inter-processus sont expliqués, puis illustrés sur un système open source de type Unix. Comme c'est complexe, il est juste possible d'en voir une partie, et c'est parfois au détriment de la vue d'ensemble. Pour une UE sur l'architecture des ordinateurs, cette approche n'est pas idéale parce qu'elle est trop éloignée du matériel.
C'est pourquoi on utilise une approche bottom-up. Nous partons d’un dossier vide, et nous ajoutons progressivement les services en limitant le nombre de fichiers et la taille des codes. Chaque nouveau service qui s'ajoute s'appuie sur les services précédemment construits.
2. Cours
- Cours A1Opérateurs arithmétiques
- Cours A2Architecture microprogrammée du MIPS
- Cours A3Réalisation du MIPS
- Cours B1 : Boot et gestionnaire syscall (visite guidé du code+outils compil.)
- Cours B2 : Gestion des interruptions
- Cours B3 : Principe d'un cache de premier niveau (L1)
- Cours B4 : Impact des caches L1 sur les performances
- Cours B5 : Gestion simple des threads
- Cours B6 : Allocateurs de mémoire dynamique
- Cours B7 : Mécanismes de synchronisation
- Cours B8 : Périphériques initiateurs et API graphique
3. TME
Les pages de TME (Travaux sur Machine Encadrés) sont composée de deux parties, une partie TD et une partie TP.
- Pour la partie TD, vous avez des questions dont les réponses sont pour la plupart dans le cours. Vous devez y répondre et formuler vos réponses dans le compte-rendu (pensez bien à mettre aussi les questions dans les comptes-rendus).
- Pour les TP, il y a plusieurs étapes. Chaque étape représente un nouveau concept et vous trouverez (1) une brève description, (2) une liste des objectifs principaux de l'étape, (3) une liste des fichiers avec un bref commentaire sur chaque fichier, (4) une liste de questions simples dont les réponses sont dans le code, le cours ou le TD et enfin (5) un exercice de codage.
- Compte-rendus
- Vous allez devoir faire vos compte-rendus en utilisant la syntaxe MarkDown. Vous rendez un compte-rendu par binôme déposé sur Moodle. Je vous recommande vivement de vous créer un compte gratuit sur HackMD. Vous pourrez éditer vos comptes-rendus en constituant une team sur HackMD avec votre binôme. Les comptes-rendus devront comporter vos noms, un modèle est proposé ici → CR031_TPx_Nom1_Nom2.md
Vous avez un corrigé disponible sur Moodle qui peut vous aider, mais vous ne devez pas le lire avant d'avoir vraiment tenté de répondre vous-même aux questions. Le corrigé est là pour que vous ne restiez pas bloqué, mais si vous ne cherchez pas à répondre vous-même, ce sera contre-productif. Il n'y a pas forcément toutes les réponses dans les corrigés, en particulier sur la partie TP.
Les comptes-rendus sont notés, ce que je souhaite, c'est que vous répondiez par vous-même parce que les questions pourraient être posées à l'examen alors, il est utile que vous arriviez à formuler des réponses par vous-même. Ne recopiez directement pas le corrigé, ça ne permet pas d'apprendre. Après avoir répondu vous-même, vous pouvez regarder la réponse et modifier votre compte rendu. Si vous êtes bloqué et que vous ne comprenez pas non plus la réponse, n'hésitez pas à le dire, c'est qu'elle n'est pas claire et je la modifierai.
Récupération du code du TP
- Vous devez être sur une machine Linux.
- Vous devez avoir installer l'environnement, sinon relisez Configuration de l'environnement
- Pour chaque séance, vous devez récupérer l'archive du code :
tpX.tgz
. Pour cela, allez en haut de la page du TME[X]
, dans la section INDEX / CODE → et cliquez sur le numéro[X]
de la séance. - Placez l'archive
tpX.tgz
récupérée dans le répertoire kO6-a2 et décompressez-là. - Dans le
terminal
, si vous exécutez la commandetree -L 2 $HOME/kO6-a2
Vous devriez obtenir quelque-chose comme ceci :$HOME/kO6-a2/ $HOME correspond au chemin de votre répertoire racine ├── bin │ ├── almo1.x Simulateur du SoC almo1 │ ├── fb/ Code source de la fenêtre graphique │ ├── gcc/ Cross-compilateur MIPS │ ├── soclib-fb fenêtre graphique exécutée par le simulateur │ ├── SourceMe.sh Script shell pour configurer l'environnement │ ├── test/ test de la plateforme et de l'environnement │ └── tracelog Script awk pour mettre en forme la trace d'exécution ├── Makefile Makefile avec des règles générales (clean ou backup) ├── README.md Infos sur le projet ├── tp1 Premier tp (au début, il n'est pas là, ni les autres) └.. etc. Au début il n'y a rien, puis il y aura : tp2, tp3, etc.
Séances
- TME B1 : Boot et gestionnaire syscall
- TME B2 : Gestionnaire d'interruptions
- TME B3 : Principe d'un cache de premier niveau (L1)
- TME B4 : Impact des caches L1 sur les performances
- TME B5 : Gestionnaire de threads
- TME B6 : Allocateurs de mémoire dynamique
- TME B7 : Mécanismes de synchronisation
- TME B8 : Contrôleur et API graphique, réalisation d'un jeu