184 | | Le nombre de processeurs NPROCS sera défini comme un paramètre supplémentaire -NPROCS sur la ligne de commande au lancement du simulateur. Le GIET ne pouvant supporter que 8 processeurs, on vérifiera que le paramètre NPROCS est inférieur ou égal à 8. |
185 | | |
186 | | * Pour SRCID, on utilisera les valeurs 0 à (NPROCS-1) pour les processeurs, et les valeurs NPROCS et (NPROCS+1) pour le composant IOC et pour le composant DMA respectivement. |
187 | | |
188 | | * Il faut définir des tableaux de pointeurs pour les composants PROC[i] et ICU[i], ainsi que pour les signaux associés, et introduire des boucles indexées par l'index du processeur chaque fois que ces composants sont concernés. |
189 | | |
190 | | * il faut définir NPROCS segments pour les NPROCS ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + 0x00100000 * proc_id (cette contrainte imposée par le GIET). |
191 | | |
192 | | '''Question''' : Modifiez le fichier '''tp3_top.desc''' pour créer un fichier '''tp3_tp_multi.desc''', et modifiez le fichier '''Makefile''' |
193 | | en conséquence pour générer un simulateur générique '''simulator_multi.x'''. |
| 184 | Comme chaque processeur peut - en principe - exécuter plusieurs tâches en pseudo-parallélisme, et que chaque tâche |
| 185 | possède un terminal privé, on peut avoir un grand nombre de terminaux. On aura donc un contrôleur TTY indépendant |
| 186 | pour chaque processeur. |
| 187 | |
| 188 | * Le GIET ne pouvant supporter que 8 processeurs, on vérifiera que le paramètre NPROCS est inférieur ou égal à 8. |
| 189 | |
| 190 | * Il faut définir des tableaux de pointeurs pour les composants répliqués PROC[i], TTY[i] et ICU[i], ainsi que pour les signaux associés, et introduire des boucles indexées par l'index du processeur chaque fois que ces composants sont concernés. |
| 191 | |
| 192 | * Pour l'index des initiateurs (SRCID), on utilisera les valeurs 0 à (NPROCS-1) pour les processeurs, et les valeurs NPROCS et (NPROCS+1) pour le composant IOC et pour le composant DMA respectivement. |
| 193 | |
| 194 | * pour l'index des cibles (TGTID), on utilisera les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i]. |
| 195 | |
| 196 | * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + 0x00100000 * proc_id (cette contrainte est imposée par le GIET). |
| 197 | |
| 198 | * il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + 0x00100000 * proc_id (cette contrainte est imposée par le GIET). |
| 199 | |
| 200 | '''Question''' : Modifiez le fichier '''tp4_top.cpp''' pour rendre l'architecture générique, conformément aux recommandations ci-dessus. |
| 201 | |
| 202 | '''Question''' : Modifiez le fichier '''tp4_top.desc''' pour créer un fichier '''tp4_top_multi.desc''', et modifiez le fichier '''Makefile''' en conséquence pour générer un simulateur générique '''simulator_multi.x'''. |