Changes between Version 107 and Version 108 of SoclibCourseTp4
- Timestamp:
- Dec 12, 2013, 1:38:58 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v107 v108 250 250 251 251 On commence par générer le code binaire pour une architecture comportant seulement 2 processeurs, 252 de façon à exécuter en parallèle des deux programmes ''main'' et ''main_display'' utilisés au début de ce TP sur deux processeurs P0 et P1. 253 On s'efforcera cependant que ce code de boot soit facilement extensible pour s'adapter à des architectures contenant plus de 2 processeurs 254 255 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. 252 de façon à exécuter en parallèle les deux programmes définis par les deux fonctions ''main()'' et ''main_display()'' (utilisées au début de ce TP) sur les deux processeurs P0 et P1. 253 254 Créez un nouveau répertoire '''soft_multi''', et recopiez dans ce répertoire les fichiers contenus dans le répertoire '''soft''', car plusieurs fichiers doivent être modifiés. 256 255 257 256 '''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 259 '''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...258 '''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: à la fois la valeur du masque, et les adresses des registres dépendent du canaL... 260 259 261 260 '''Question''' : Modifiez le fichier '''reset.s''' pour initialiser le registre EPC à une valeur dépendant du ''proc_id''. 262 261 263 '''Question''' : Modifiez le fichier '''Makefile''' du répertoire '''soft''' pour que soient compilés (en plus du code système et du code de boot '''reset.s''') les deux programmes '''main.c''' et '''main_display.c'''. 262 '''Question''' : Modifiez le fichier '''Makefile''' du répertoire '''soft''' pour que le code des deux fonctions ''main()'' et main_display() soient intégré dans le même fichier '''app.bin'''. Vérifiez dans le fichier '''app.bin.txt''' 263 que les adresses des deux fonctions ''main()'' et ''main_display()'' sont bien rangées au début du segment seg_data. 264 264 265 265 '''Question''' : Modifiez dans le fichier '''config.h''' la valeur de la variable qui informe le système d'exploitation du nombre de processeurs présents dans l'architecture matérielle. 266 266 267 '''Question''' : Compilez le logiciel embarqué, puis lancez l'exécution sur le simulateur '''simulator_multi.x''', avec NPROCS = 2 processeurs.267 '''Question''' : Compilez le logiciel embarqué, puis lancez l'exécution sur le simulateur '''simulator_multi.x''', avec -NPROCS = 2 processeurs. 268 268 269 269 == 5.4 Exécution parallèle sur architecture quadri-processeurs ==