{{{#!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-B3-cache-archi-2p.pdf 4]__] [__[htdocs:cours/Archi-2-B4-cache-perf-2p.pdf 5]__] [__[htdocs:cours/Archi-2-B5-alloc-2p.pdf 6]__] [__[htdocs:cours/Archi-2-B6-mutex-2p.pdf 7]__] [__[htdocs:cours/Archi-2-B7-sched-2p.pdf 8]__] [__[htdocs:cours/Archi-2-B8-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-B3-cache-archi-2p.pdf 4]__] [__[htdocs:cours/Archi-2-B4-perf-2p.pdf 5]__] [__[htdocs:cours/Archi-2-B5-alloc-2p.pdf 6]__] [__[htdocs:cours/Archi-2-B6-mutex-2p.pdf 7]__] [__[htdocs:cours/Archi-2-B7-sched-2p.pdf 8]__] [__[htdocs:cours/Archi-2-B8-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 }}} = 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. Dans la première partie, l'UE Archi-1 décrit l'architecture externe du MIPS (celle visible du programmeur) et la programmation structurée en assembleur (avec des fonctions et une pile). Les programmes sont exécutés sur le simulateur de processeur MARS qui permet d'observer l'évolution des registres internes du processeur et l'évolution données dans les segments de mémoire utilisés pour les data et la pile. Dans la seconde partie, l'UE Archi-1 présente l'architecture d'un petit SoC (System-On-Chip) intégrant un MIPS et quelques composants simples (des mémoires et un contrôleur de terminaux texte). Ce SoC est utilisé comme support d'un embryon de système d'exploitation construit pas-à-pas. À la fin de l'UE, le système d'exploitation démarre et exécute une application. L'OS contient essentiellement un gestionnaire de syscalls et un gestionnaire d'interruptions. L'objectif d'Archi-2 est d'aller plus loin sur 3 axes : la micro-architecture du processeur, l'architecture du SoC et le système d'exploitation. 1. Pour la micro-architecture, il s'agit de comprendre comment sont exécutées les instructions du MIPS. Vous verrez l'une des techniques consistant à décomposer les instructions en micro-instructions élémentaires gérées par un micro-séquenceur. 2. Pour l'architecture, il y a trois parties : (1) la première consiste à comprendre comment accélérer les accès à la mémoire externe en utilisant une petite mémoire placée à l'interface du processeur destinée à stocker les dernières instructions et les dernières données lues ; (2) la seconde consiste à comprendre comment les contrôleurs de périphérique peuvent voler du temps au programme en cours d'exécution pour que le noyau intervienne afin de réaliser des opérations urgentes ; (3) La troisième consiste à comprendre les conséquences de l'ajout de composants ayant le droit de faire des lectures et des écritures dans l'espace d'adressage. 3. Pour le système d'exploitation, il s'agit de comprendre comment une application peut utiliser les ressources matérielles (processeur, périphériques et mémoire) de manière sûre. Il n'y aura qu'une seule application, mais elle pourra avoir plusieurs fils d'exécution exécutés en parallèle sur un ou plusieurs processeurs. Il s'agit aussi de comprendre comment la mémoire est allouée au noyau du système d'exploitation et à l'application et comment sont gérés les fichiers sur le disque et dans la mémoire. Souvent, pour présenter les concepts des systèmes d'exploitation (OS), on utilise une méthode ''top-down''. Les principes des services d'un OS tels que la gestion des fichiers, des processus, des communications inter-processus sont expliqués, puis illustrés sur un vrai système open source tel que Linux. Comme Linux 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 * [htdocs:cours/Archi-2-B1-reboot-2p.pdf Cours-B1 : Présentation générale et gestionnaires 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-2p.pdf Cours-B4 : Principe d'un cache de premier niveau (L1)] * [htdocs:cours/Archi-2-B5-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-mutex-2p.pdf Cours-B7 : Mécanismes de communication inter-threads] * [htdocs:cours/Archi-2-B8-sched-2p.pdf Cours-B8 : Ordonnanceur évolué] * [htdocs:cours/Archi-2-B9-disk-2p.pdf Cours-B9 : Système de fichiers] = 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 communication inter-threads] * [wiki:AS6-TME-B8 TME-B8 : Ordonnanceur évolué] * [wiki:AS6-TME-B9 TME-B9 : Système de fichiers] = 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]