Changes between Version 51 and Version 52 of Doc-MIPS-Archi-Asm-kernel
- Timestamp:
- Nov 13, 2020, 7:38:57 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Doc-MIPS-Archi-Asm-kernel
v51 v52 107 107 Elles utilisent toutes le format R avec le champ `OPCOD` à la valeur `COPRO` (c.-à-d. `0b010000`). L'instruction est alors codée avec les bits 25 et 23 de l'instruction (ces deux bits sont dans le champs `RS`). Remarquez que `eret` à deux codages.\\\\ 108 108 {{{#!html 109 <table border="1" cellspacing="0" cellpadding="0" align=left>109 <table border="1" cellspacing="0" cellpadding="0"> 110 110 <tr> 111 111 <td style="width:70px"; align=center> OPCOD</td> … … 117 117 </tr> 118 118 </table> 119 <table border="0" cellspacing="0" cellpadding="0" align=left>119 <table border="0" cellspacing="0" cellpadding="0"> 120 120 <tr> 121 121 <td style="width:72px"; align=left> 31</td> … … 128 128 </tr> 129 129 </table> 130 <br> <br>130 <br> 131 131 <b> INS 23 132 132 <table border="1" cellspacing="0" cellpadding="0"> … … 160 160 — `mtc0 $5, $14` = `0b``010000`|`0.1..`| `$5` | `$14`|`.....`|`......` \\ 161 161 — `mtc0 $5, $14` = `0b``010000`|`0.1..`|`00101`|`01110`|`.....`|`......` \\ 162 — `.` peut être remplacé par `0`ou `1`, utilisons `0`\\162 — `.` est un jocker qui peut être remplacé par `0`ou `1`, utilisons `0`\\ 163 163 — `mtc0 $5, $14` = `0b``010000`|`00100`|`00101`|`01110`|`00000`|`000000` \\ 164 164 — `mtc0 $5, $14` = `0b``0100 0000 1000 0101 0111 0000 0000 0000`\\ … … 169 169 = 5. Cause d'entrée et sortie du noyau du système d'exploitation 170 170 171 172 171 173 Il existe quatre types d'évènements qui peuvent interrompre l'exécution "normale" d'un programme : 172 174 - les exceptions ; 173 175 - les interruptions ; 174 - les appels système (instructions `syscall`) 175 - le signal RESET.176 - les appels système (instructions `syscall`) ; 177 - et le signal RESET. 176 178 177 179 Dans tous ces cas, le principe général consiste à dérouter le programme vers un code spécial (appelée noyau du système d'exploitation) qui s'exécute en mode système et à qui il faut transmettre les informations minimales lui permettant de traiter le problème. … … 209 211 210 212 211 Dans un ordinateur, nous avons vu qu'il y a au moins un processeur, une mémoire et des contrôleurs de périphériques. Les périphériques permettent par exemple de communiquer avec le monde extérieur. 212 Les périphériques reçoivent des commandes dans leur registres par des instructions de lecture et d'écriture venant du processeur. 213 214 Lorsqu'ils ont terminées une commande ou lorsqu'ils ont reçus ou calculés des données, ils peuvent prévenir 215 envoyer des requêtes d'interruption par des lignes d'interruption qui les relie au processeur. 216 Une ligne d'interruption est un fil électrique qui peut prendre deux états : actif ou inactif, on dit aussi levé ou baissé. 217 218 Les requêtes d'interruption matérielles sont des évènements asynchrones provenant des contrôleurs de périphériques. Ces évènements sont toujours attendus par le noyau du système d'exploitation. Ce sont des notifications de fins de commandes, ou d'arrivée de données sur un canal d'entrée, ou des tick d'horloge. 213 Dans un ordinateur, nous avons vu qu'il y a au moins un processeur, une mémoire et des contrôleurs de périphériques. Les périphériques permettent, par exemple, de communiquer avec le monde extérieur comme pour le terminal texte. 214 Les périphériques reçoivent des commandes dans leur registres par des instructions de lecture et d'écriture (`lw`/`sw`) venant du processeur. 215 216 Lorsqu'ils ont terminées une commande ou lorsqu'ils ont reçus ou calculés des données, les contrôleurs de périphérique peuvent le signaler au processeur par des **requêtes d'interruption** (IRQ pour Interrupt Request en anglais). 217 Une requête d'interruption est un signal d'état produit par un contrôleur de périphérique avec deux états possibles : **actif** (ou levé) qui signifie que le contrôleur demande que le noyau intervienne ou **inactif** (ou baissé) qui signifie que le contrôleur n'a pas de demande. 218 Les requête d'interruptions sont donc des notifications de fins de commandes, d'arrivée de données sur un canal d'entrée ou encore des tick d'horloge. 219 220 Les requêtes d'interruption sont envoyées par des ''lignes d'interruption'' qui relie les contrôleurs de périphériques au processeur. 221 Une ''ligne d'interruption'' est un fil électrique qui peut prendre les deux états des requêtes : actif/inactif, ou levé/baissé. 222 223 Les requêtes d'interruption s'activent de manière asynchrone par rapport au programme en cours d'exécution sont des évènements asynchrones provenant des contrôleurs de périphériques. Ces évènements sont toujours attendus par le noyau du système d'exploitation. 219 224 220 225 Le processeur MIPS32 possède 6 entrées de lignes d'interruptions externes qui peuvent être masquées globalement ou individuellement. Masquer une interruption signifie ne pas en tenir compte. Nous n'utiliserons qu'une seule de ces 6 entrées dans le prototype des TP.