Changes between Version 25 and Version 26 of Archi-1-TD10


Ignore:
Timestamp:
Nov 15, 2023, 4:13:43 PM (13 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TD10

    v25 v26  
    2222
    2323
    24 Le schéma présenté rapidement au cours 10 (slides 26 à 31) et en détail dans l'annexe du cours 10 (slides 1 à 32) représente l'exécution d'une application utilisateur très simple, dont le comportement est défini par la fonction `main()`, depuis le démarrage du SoC jusqu'à l'exécution de la fonction `exit()`.\\Son but est de comprendre les interactions entre le code de boot, le noyau, l'application et les bibliothèques système. Le schéma ne contient pas l'intégralité du code pour des raisons évidentes de lisibilité, mais ce qui reste devrait suffire.
     24Le schéma présenté rapidement au cours 10 (slides 26 à 31) et en détail dans l'annexe du cours 10 (slides 1 à 32) représente l'exécution d'une application utilisateur très simple, dont le comportement est défini par la fonction `main()`, depuis le démarrage du SoC jusqu'à l'exécution de la fonction `exit()` qui stoppe l'avancée du programme.\\Son but est de comprendre les interactions entre le code de boot, le noyau, l'application et les bibliothèques système. Le schéma ci-dessous ne contient pas l'intégralité du code pour des raisons évidentes de lisibilité, mais ce qui reste devrait suffire.
    2525
    2626 [[Image(htdocs:img/os_bigpicture.png,nolink,height=400)]]
     
    3232Le but de cette séance est de s'intéresser à des points particulier de ce schéma :
    3333- D'abord, nous abordons les 2 modes d'exécution du MIPS, kernel et user, utilisés respectivement pour le noyau et l'application utilisateur.
    34 - Puis, nous voyons les passages du noyau à l'application et inversement.
     34- Puis, nous voyons les passages du noyau à l'application et de l'application au noyau.
    3535- Ensuite, nous nous intéressons à comment écrire le code C et assembleur pour contrôler le placement en mémoire.
    36 - Enfin, il y a quelques quelques questions sur comment compiler pour faciliter la compréhension des TP
     36- Enfin, il y a quelques quelques questions sur comment compiler pour faciliter la compréhension des TPs.
     37
     38
    3739
    3840= 1. Les modes d'exécution du MIPS et les instructions ''système''
     
    4547
    4648
    47 1. Le MIPS propose deux modes d'exécution, rappelez quels sont ces deux modes et à quoi ils servent? (C10 S6+S7)
     491. Le MIPS propose deux modes d'exécution, rappelez quels sont ces deux modes, quel est le mode utilisé par le noyau et quel est le mode utilisé par l'application ? (C10 S6+S7)
    4850{{{#!protected ------------------------------------------------------------------------------------
    4951''
     
    5355''
    5456}}}
    55 1. Commencez par rappeler ce qu'est l'espace d'adressage du MIPS et dîtes ce que signifie «une adresse X est mappée dans l'espace d'adressage du MIPS».\\Dîtes si une adresse `X` mappée dans l'espace d'adressage du MIPS est toujours accessible (en lecture ou en écriture) quelque soit le mode d'exécution du MIPS. (C10 S7)
     571. Commencez par rappeler ce qu'est l'espace d'adressage du MIPS et dîtes ce que signifie «une adresse X est mappée dans l'espace d'adressage du MIPS».\\Est-ce qu'une adresse `X` mappée dans l'espace d'adressage du MIPS est toujours accessible (en lecture ou en écriture) quelque soit le mode d'exécution du MIPS. (C10 S7)
    5658{{{#!protected ------------------------------------------------------------------------------------
    5759''
     
    63651. Le MIPS propose des registres à usage général (GPR ''General Purpose Register'') pour les calculs ($0 à $31).\\
    6466 Le MIPS propose un deuxième banc de registres **à l'usage du système d'exploitation** dans le coprocesseur 0.\\
    65  Chaque registre **''système''** porte un nom correspondant à son usage, nous en avons vu 3 en cours (C10 S7+S10 à S14) : `c0_sr`, `c0_cause` et `c0_epc`.\\
     67 Chaque registre du coprocesseur `0` (qu'on appelle ici ''registre système'') porte un nom correspondant à son usage, nous en avons vu 3 en cours (C10 S7+S10 à S14) : `c0_sr`, `c0_cause` et `c0_epc`.\\
    6668 Donner leur numéro et leur rôle en une phrase ?
    6769{{{#!protected ------------------------------------------------------------------------------------
    6870''
    69 - Les registres système sont numérotés de $0 à $31, comme les registres GPR, ce qui peut induire une certaine confusion, parce qu'avec cette syntaxe, si on demande que trouve-t-on dans le registres `$14`? Si on ne précise pas qu'il s'agit du registre `$14` du coprocesseur 0, alors on ne peut pas répondre. C'est pour cette raison qu'il est préférable d'utiliser leur nom (`EPC` ou `c0_epc` pour `$14` par exemple ou alors `c0_$14`)\\\\
     71- Les registres du coprocesseur `0` sont numérotés de `$0` à `$31`, **comme les registres GPR**, ce qui peut induire une certaine confusion, parce qu'avec cette syntaxe, si on demande ce qui se trouve dans le registres `$14` sans préciser qu'il s'agit du registre `$14` du coprocesseur `0`, alors on ne peut pas répondre. C'est pour cette raison qu'il est préférable d'utiliser leur nom (`EPC` ou `c0_epc` pour `$14` par exemple ou alors `c0_$14`)\\\\
    7072- Nous avons vu les 3 principaux
    7173   || `c0_sr`     || `$12` || contient essentiellement le mode d'exécution du MIPS et le bit d'autorisation des interruptions
     
    7880''
    7981}}}
    80 1. Les deux instructions qui permettent de les manipuler sont `mtc0` et `mfc0` (C10 S11).\\
    81  Quelle est leur syntaxe ?\\
    82  Est-ce qu'on peut manipuler ces registres **''système''** avec d'autres instructions ?\\
     821. Les deux instructions qui permettent de manipuler les registres du coprocesseur `0` sont `mtc0` et `mfc0` (C10 S11).\\
     83 Quelle est leur syntaxe ? [wiki:Doc-MIPS-Archi-Asm-kernel#instprot réponse dans Documentation MIPS Architecture et assembleur (4.)]\\
     84 Est-ce qu'on peut manipuler ces registres de coprocesseur avec d'autres instructions ?\\
    8385 Écrivez les instructions permettant de faire `c0_epc = c0_epc + 4` (vous utiliserez le registre GPR `$8`)
    8486{{{#!protected ------------------------------------------------------------------------------------
     
    98100''
    99101}}}
    100 1. Le registre status est composé de plusieurs champs de bits qui ont chacun une fonction spécifique.\\Décrivez le contenu du registre status et le rôle des bits 0, 1 et 4 de l'octet 0. (C10 S12+S13+S15)
     1021. Le registre status (`c0_sr` ou `$12` du coprocesseur `0`) est composé de plusieurs champs de bits qui ont chacun une fonction spécifique.\\Décrivez le contenu du registre status et le rôle des bits 0, 1 et 4 de l'octet 0. (C10 S12+S13+S15)\\[wiki:Doc-MIPS-Archi-Asm-kernel#c0sr réponse dans Documentation MIPS Architecture et assembleur (6.)]
    101103{{{#!protected ------------------------------------------------------------------------------------
    102104''
     
    106108''
    107109}}}
    108 1. Le registre cause est contient la cause d'appel du kernel.\\Dites à quel endroit est stockée cette cause et donnez la signification des codes 0, 4 et 8 (C10 S14+S15)
     1101. Le registre cause (`c0_cause` ou `$13` du coprocesseur `0`) est contient la ''cause d'appel'' du kernel.\\Dites à quel endroit est stockée cette ''cause'' et donnez la signification des codes 0, 4 et 8 (C10 S14+S15)\\[wiki:Doc-MIPS-Archi-Asm-kernel#c0cause réponse dans Documentation MIPS Architecture et assembleur (7.)]
    109111{{{#!protected ------------------------------------------------------------------------------------
    110112''