Changes between Version 103 and Version 104 of SoclibCourseTp4
- Timestamp:
- Dec 12, 2013, 12:31:09 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v103 v104 242 242 * Tous les processeurs exécutent le même code de boot, mais l'exécution de ce code dépend de l'index du processeur. L'index du processeur (''proc_id'') étant stocké dans le registre système ($15, 1) du processeur MIPS32, sa valeur peut être testée par le logiciel. Remarquez que la valeur de ce registre est initialisée par le constructeur C++, ce qui modélise une valeur ''cablée'' lors de la fabrication de la puce. 243 243 * Les tâches s'exécutant en parallèle, chaque tâche (et donc chaque processeur) doit disposer de sa propre pile d'exécution. On définit un seul segment pour les différentes piles d'exécution, mais les pointeurs de pile des différents processeurs doivent être initialisés à des valeurs différentes en fonction du ''proc_id''. 244 * Chaque processeur exécutant un programme utilisateur différent, le points d'entrée du programme (registre EPC dans le cas du MIPS32) doit être initialisé à une valeur dépendant du ''proc_id''. 245 Pour cela, on demande à GCC de construire une table de sauts au début du segment ''seg_data'', contenant les adresses 246 des 4 points d'entrée dans les 4 tâches allouées aux 4 processeurs. 244 * Chaque processeur exécutant un programme utilisateur différent, le points d'entrée du programme (registre EPC) doit être initialisé à une valeur dépendant du ''proc_id''. 245 Pour cela, on demande à GCC de construire une table de sauts au début du segment ''seg_data'', contenant les adressesdes 4 points d'entrée dans les 4 tâches allouées aux 4 processeurs. 247 246 248 247 == 5.3 Exécution parallèle sur architecture bi-processeurs == … … 252 251 On s'efforcera cependant que ce code de boot soit facilement extensible pour s'adapter à des architectures contenant plus de 2 processeurs 253 252 254 Créez un nouveau répertoire '''soft_multi''', et recopiez dans ce répertoire les fichiers contenus dans le répertoire '''soft''', car tous lesfichiers doivent être modifiés.253 Créez un nouveau répertoire '''soft_multi''', et recopiez dans ce répertoire les fichiers contenus dans le répertoire '''soft''', car beaucoup de fichiers doivent être modifiés. 255 254 256 255 '''Question''' : Modifiez le fichier '''reset.s''' pour initialiser le pointeur de pile ($29 dans le cas du MIPS32) à une valeur dépendant du ''proc_id''. Chaque tâche disposera d'une pile de 64 Koctets. Quelle doit être la longueur du segment de pile défini dans la table des segments de la top-cell pour 2 processeurs? Pour 4 processeurs? … … 258 257 '''Question''' : Modifiez le fichier '''reset.s''' pour que chaque processor PROC[i] initialize le registre de masque du composant ICU[i] qui lui est associé. Attention: les adresses des registres dépendent du canaL... 259 258 260 261 259 '''Question''' : Modifiez le fichier '''reset.s''' pour initialiser le registre EPC à une valeur dépendant du ''proc_id''. 262 260 … … 273 271 '''Question''' : Ecrivez deux autres petits programmes qui s'exécuteront sur les deux autres processeurs. Si vous manquez d'imagination, vous pouvez vous contenter de répliquer le code du programme ''main.c''. Si ces programmes utilisent les interruptions générées par le timer, n'oubliez pas que chaque processeur ne doit configurer que le timer qui lui appartient. 274 272 275 '''Question''' : Modifiez les fichiers '''reset.s''', ''' ldscript''', et '''Makefile''' du répertoire '''soft''' pour les adapter au cas de 8 processeurs, compilez le logiciel embarqué puis lancez l'exécution sur le simulateur '''simulator_multi.x''', avec 8processeurs.276 277 '''Question''' : Le GIET supporte des architectures contenant jusque 8 processeurs , et chaque processeur peut exécuter jusque 4 tâches en multiplexage temporel. Nous avons cependant limité l'architecture générique à 4 processeurs. Quel est le facteur qui justifie cette limitation?273 '''Question''' : Modifiez les fichiers '''reset.s''', '''config.h''', et '''Makefile''' du répertoire pour les adapter au cas de 4 processeurs, compilez le logiciel embarqué puis lancez l'exécution sur le simulateur '''simulator_multi.x''', avec 4 processeurs. 274 275 '''Question''' : Le GIET supporte des architectures contenant jusque 8 processeurs. Nous avons cependant limité l'architecture générique à 4 processeurs. Quel est le facteur limitant qui justifie cette restricttion? 278 276 279 277 = 6 Compte-rendu =