Changes between Version 55 and Version 56 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 27, 2010, 1:36:59 AM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v55 v56  
    286286'''Question''' : Pourquoi faut-il des segments distincts pour les 4 piles d'exécution ?
    287287
    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?
    290289
    291290'''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.
     
    297296
    298297Placez-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 cablage
     298Ce programme, défini dans le fichier '''main_hello.c''', affiche le message ''hello world'', et vise simplement à valider le cablage
    300299de l'architecture matérielle (y compris les interruptions).
    301300
     
    309308'''Question''' : Modifiez le fichier '''ldscript''' pour définir les adresses de bases des 25 segments, ainsi que le nombre de processeurs.
    310309
    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 reste le '''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
     312Si ce n'est pas le cas, vous pouvez utiliser le '''GDB Server'''...
    314313
    315314== 3.4 Appliction multi_tâches coppératives ==
    316315
     316On veut maintenant exécuter une application parallèle multi-tâches où plusieurs tâches coopérent pour résoudre un problème,
     317en essayant d'exploiter le parallélisme de l'architecture matérielle multi-processeurs.
     318On s'intéresse à une application de traitement d'image réalisant une détection de contour grâce à un filtre de Sobel.
     319On 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
     321L'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.
     325Les 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
    317336= 4 Compte_rendu =
    318337