{{{#!comment {{{#!html

Index }}} **— DOCS** [__[wiki: Start]__][__[wiki:Howto-TP Config]__][__[htdocs:cours/doc_MIPS32.pdf User]__][__[wiki:Doc-MIPS-Archi-Asm-kernel Kernel]__] \\**— COURS** [__[htdocs:cours/Archi-2-B1-reboot-2p.pdf 1]__ __([htdocs:cours/Archi-2-B1-code-2p.pdf code]__)] [__[htdocs:cours/Archi-2-B2-interruptions-2p.pdf 2]__] [__[htdocs:cours/Archi-2-B3-threads-2p.pdf 3]__] [__[htdocs:cours/Archi-2-B4-cache-archi-2p.pdf 4]__] [__[htdocs:cours/Archi-2-B5-cache-perf-2p.pdf 5]__] [__[htdocs:cours/Archi-2-B6-alloc-2p.pdf 6]__] [__[htdocs:cours/Archi-2-B7-mutex-2p.pdf 7]__] [__[htdocs:cours/Archi-2-B8-sched-2p.pdf 8]__] [__[htdocs:cours/Archi-2-B9-disk-2p.pdf 9]__] \\**— TME** [__[wiki:AS6-TME-B1 1]__] [__[wiki:AS6-TME-B2 2]__] [__[wiki:AS6-TME-B3 3]__] [__[wiki:AS6-TME-B4 4]__] [__[wiki:AS6-TME-B5 5]__] [__[wiki:AS6-TME-B6 6]__] [__[wiki:AS6-TME-B7 7]__] [__[wiki:AS6-TME-B8 8]__] [__[wiki:AS6-TME-B9 9]__] \\**— ZIP** [__[htdocs:files/2kO6bin.tgz gcc...]__][__[htdocs:files/tp1.tgz 9]__][__[htdocs:files/tp2.tgz 10]__][__[htdocs:files/tp3.tgz 11]__] {{{#!protected **[https://www-soc.lip6.fr/trac/archi-l3s6/wiki/WikiStart?action=edit EDIT]** **[https://www-soc.lip6.fr/trac/archi-l3s6/wiki/TitleIndex INDEX]** }}} ** — DOCS [__[wiki: Start]__][__[wiki:Howto-TP Config]__][__[htdocs:cours/doc_MIPS32.pdf User]__][__[wiki:Doc-MIPS-Archi-Asm-kernel Kernel]__] \\— COURS [__[htdocs:cours/Archi-2-B1-reboot-2p.pdf 1]__ __([htdocs:cours/Archi-2-B1-code-2p.pdf code]__)] [__[htdocs:cours/Archi-2-B2-interruptions-2p.pdf 2]__] [__[htdocs:cours/Archi-2-B3-threads-2p.pdf 3]__] [__[htdocs:cours/Archi-2-B4-cache-archi-2p.pdf 4]__] [__[htdocs:cours/Archi-2-B5-cache-perf-2p.pdf 5]__] [__[htdocs:cours/Archi-2-B6-alloc-2p.pdf 6]__] [__[htdocs:cours/Archi-2-B7-mutex-2p.pdf 7]__] [__[htdocs:cours/Archi-2-B8-sched-2p.pdf 8]__] [__[htdocs:cours/Archi-2-B9-disk-2p.pdf 9]__] \\— TD [__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TD9 9]__][__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TD10 10]__][__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TD11 11]__] — TP [__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TP9 9]__][__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TP10 10]__][__[https://www-soc.lip6.fr/trac/archi-l3s5/wiki/Archi-1-TP11 11]__] — ZIP [__[htdocs:files/kO6bin.tgz gcc...]__][__[htdocs:files/tp1.tgz 9]__][__[htdocs:files/tp2.tgz 10]__][__[htdocs:files/tp3.tgz 11]__] {{{#!protected **[https://www-soc.lip6.fr/trac/archi-l3s6/wiki/WikiStart?action=edit EDIT]** **[https://www-soc.lip6.fr/trac/archi-l3s6/wiki/TitleIndex INDEX]** }}} }}} [[PageOutline]] {{{#!html

Architecture des ordinateurs 2 - LU3IN031 }}} > **''Version 2022 non encore re-travaillée pour 2023''** = 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. 1. 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. 2. 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. 3. 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, comment fonctionne une petite bibliothèque graphique.  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 A1[https://moodle-sciences-22.sorbonne-universite.fr/course/view.php?id=2653#section-1 Opérateurs arithmétiques] * Cours A2[https://moodle-sciences-22.sorbonne-universite.fr/course/view.php?id=2653#section-1 Architecture microprogrammée du MIPS] * [htdocs:cours/Archi-2-B1-reboot-2p.pdf Cours B1 : Boot et gestionnaire syscall] ([htdocs:cours/Archi-2-B1-code-2p.pdf visite guidé du code]) * [htdocs:cours/Archi-2-B2-interruptions-2p.pdf Cours B2 : Gestion des interruptions] * [htdocs:cours/Archi-2-B3-threads-2p.pdf Cours B3 : Gestion simple des threads] * [htdocs:cours/Archi-2-B4-cache-archi-2p.pdf Cours B4 : Principe d'un cache de premier niveau (L1)] * [htdocs:cours/Archi-2-B5-cache-perf-2p.pdf Cours B5 : Impact des caches L1 sur les performances] * [htdocs:cours/Archi-2-B6-alloc-2p.pdf Cours B6 : Allocateurs de mémoire dynamique] * [htdocs:cours/Archi-2-B7-synchro-2p.pdf Cours B7 : Mécanismes de synchronisation] * [htdocs:cours/Archi-2-B8-initiateurs-2p.pdf Cours B8 : Périphériques initiateurs] * [htdocs:cours/Archi-2-B9-API-graphique-2p.pdf Cours B9 : Contrôleur et API graphique] = 3. Séances de TD et TME * [wiki:AS6-TME-B1 TME B1 : Boot et gestionnaire syscall] * [wiki:AS6-TME-B2 TME B2 : Gestionnaire d'interruptions] * [wiki:AS6-TME-B3 TME B3 : Gestionnaire de threads] * [wiki:AS6-TME-B4 TME B4 : Principe d'un cache de premier niveau (L1)] * [wiki:AS6-TME-B5 TME B5 : Impact des caches L1 sur les performances] * [wiki:AS6-TME-B6 TME B6 : Allocateurs de mémoire dynamique] * [wiki:AS6-TME-B7 TME B7 : Mécanismes de synchronisation] * [wiki:AS6-TME-B8 TME B8 : Périphériques Initiateurs] * [wiki:AS6-TME-B9 TME B9 : Contrôleur et API graphique, réalisation d'un jeu] = 4. Documents * **[htdocs:cours/doc_MIPS32.pdf Documentation MIPS32 architecture et assembleur (mode user)]** 1. Registres de l'architecture externe accessible en mode user (p. 2) 1. Espace d'adressage du MIPS32 (p. 4) 1. Syntaxe et principales directives du langage assembleur (p. 5) 1. Codage des instructions utilisateur du MIPS32 (p. 9) 1. Instructions accessible en mode utilisateur (p. 11) 1. Appels système de simulateur de processeur **Mars** (p. 22) 1. Convention d'appel des fonctions (p. 24) * **[wiki:Doc-MIPS-Archi-Asm-kernel Documentation MIPS32 architecture et assembleur (mode kernel)]** 1. Modes d'exécution du processeur MIPS 2. Registres protégés utilisables seulement en mode kernel 3. Découpage de l'espace d'adressage 4. Instructions protégées 5. Cause d'entrée et de sortie du noyau du système d'exploitation 6. Fonctionnement du registre d'état `c0_sr` 7. Fonctionnement du registre de cause `c0_cause` * **[wiki:Howto-TP Configuration de l'environnement des TP] 1. Environnement de travail pour les TP 1. Prototype virtuel et chaîne de compilation MIPS 1. Compilation et exécution des programmes {{{#!comment * **[wiki:VNC Connexion avec VNC]** Pour le travail à distance * Installation d'un client sur sa machine personnelle * Démarrage d'un serveur sur une machine des salles de TP * Démarrage du client }}} * **Ressources Annexes** * Syntaxe Markdown [https://www.markdownguide.org/cheat-sheet en résumé] ou [http://support.typora.io/Markdown-Reference en détails] * [attachment:CR031_TPx_nom1_nom2.md Modèle de compte-rendu au format markdown] * [htdocs:cours/Archi-Outils-2p.pdf Outils de la chaîne de compilation] * [http://labor-liber.org/en/gnu-linux/development/ Présentation condensée, mais intéressante sur la chaine de compilation GCC]