Changes between Version 55 and Version 56 of SoclibCourseTp5
- Timestamp:
- Dec 27, 2010, 1:36:59 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp5
v55 v56 286 286 '''Question''' : Pourquoi faut-il des segments distincts pour les 4 piles d'exécution ? 287 287 288 '''Question''' : Pourquoi ne peut-on pas utiliser directement (c'est à dire sans décodage) les 2 bits de poids fort de l'adresse 289 désigner le cluster? Remarque : dans chaque cluster, il existe au moins un segment appartenant à l'espace utilisteur (le segment de pile), et trois segments appartenant à l' espace superviseur (les segments associés au TTY, au TIMER et à l'ICU). 288 '''Question''' : Dans chaque cluster, il existe au moins un segment appartenant à l'espace utilisteur (le segment de pile), et trois segments appartenant à l' espace superviseur (les segments associés au TTY, au TIMER et à l'ICU). Expliquer ourquoi ne peut-on pas utiliser directement (c'est à dire sans décodage) les 2 bits de poids fort de l'adresse pour désigner le cluster? 290 289 291 290 '''Question''' : Proposez des adresses de base pour ces 25 segments, en tenant compte du fait que le crossbar local ne doit décoder que les bits (LADR) de l'adresse, et que le réseau global ne doit décoder que les bits (GADR) de l'adresse. … … 297 296 298 297 Placez-vous dans le répertoire '''soft_cluster'''. On va commencer par exécuter le même programme sur chacun des 4 processeurs. 299 Ce programme, défini dans le fichier '''main .c''', affiche le message ''hello world'', et vise simplement à valider le cablage298 Ce programme, défini dans le fichier '''main_hello.c''', affiche le message ''hello world'', et vise simplement à valider le cablage 300 299 de l'architecture matérielle (y compris les interruptions). 301 300 … … 309 308 '''Question''' : Modifiez le fichier '''ldscript''' pour définir les adresses de bases des 25 segments, ainsi que le nombre de processeurs. 310 309 311 '''Question''' : lancez la simulation .Les quatre processeurs doivent exécuter le même programme interactif, chacun sur son propre terminal TTY.312 313 Si ce n'est pas le cas, il vous restele '''GDB Server'''...310 '''Question''' : lancez la simulation: Les quatre processeurs doivent exécuter le même programme interactif, chacun sur son propre terminal TTY. 311 312 Si ce n'est pas le cas, vous pouvez utiliser le '''GDB Server'''... 314 313 315 314 == 3.4 Appliction multi_tâches coppératives == 316 315 316 On veut maintenant exécuter une application parallèle multi-tâches où plusieurs tâches coopérent pour résoudre un problème, 317 en essayant d'exploiter le parallélisme de l'architecture matérielle multi-processeurs. 318 On s'intéresse à une application de traitement d'image réalisant une détection de contour grâce à un filtre de Sobel. 319 On utilisera le même flux d'image que dans le TP4, c'est à dire le fichier '''images.raw''' contenant une vingtaine d'images de 128 lignes de 128 pixels codées en 256 niveaux de gris. 320 321 L'application logicielle contenue dans le fichier '''main_sobel.c''' est découpée en trois tâches logicielles, qui peuvent s'exécuter en parallèle sur trois processeur différents, et communiquent entre elles à travers deux tampons de communication '''buf_in''' et '''buf_out''': 322 * La tâche '''load''' lit une image sur le disque et copie cette image dans le tampon mémoire '''buf_in'''. 323 * La tâche '''sobel''' lit l'image dans le tampon '''buf_in''', applique le filtre de Sobel, et écrit l'image résultante dans le tampon '''buf_out'''. 324 * La tâche '''display''' lit l'image présente dans le tampon '''buf_out''', et affiche cette image sur le frame buffer. 325 Les deux tampons de communication '''buf_in''' et '''buf_out''' sont protégés par les deux variables de synchronisation '''buf_in_empty''' et 326 '''buf_out_empty''', qui supportent un protocole de type SET/RESET en mode utilisateur: 327 * La tâche productrice attend que la variable de synchronisation passe à 0 avant d'écrire, et force cette variable à 1 quand elle a fini de remplir le tampon. 328 * La tâche consommatrice attend que la variable de synchronisation passe à 1 avant de lire, et force cette variable à 0 quand elle a fini de vider le tampon. 329 330 '''Question''' : Modifiez le fichier '''reset.s''' pour que les tâches '''load''', '''sobel''', et '''display''' s'exécutent sur les processeurs 0, 1 et 2 respectivement. Modifiez le fichier '''Makefile''' pour compiler le fichier '''main_sobel.c''' plutôt que le fichier '''main_hello;c'''. 331 332 '''Question''' : Lancez la simulation. Quelle est la téquence d'affichage? Cette fréquence est l'inverse du nombre de cycles entre deux affichages. 333 334 '''Question''' : L'inconvénient du mécanisme de synchronisation par bascule SET/RESET est que les deux tâches productrice et consommatrice ne peuvent s'exécuter en parallèle. Comment peut-on modifier l'application logicielle pour augmenter le parallélisme et augmenter ainsi la fréquence d'affichage des images? 335 317 336 = 4 Compte_rendu = 318 337