Changes between Version 60 and Version 61 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 28, 2010, 4:21:44 PM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v60 v61  
    297297
    298298Placez-vous dans le répertoire '''soft_hello'''. Pour valider l'architecture matérielle (y compris les interruptions),
    299 on va commencer par exécuter le même programme  d'affichage du message ''hello world'' en parallèle sur chacun des 4 processeurs.
    300 
    301 Le code de boot, contenu dans le fichier '''reset.s''', doit cependant supporter des applications logicielles où les 4 processeurs exécutent 4 programmes différents. Comme dans le cas de l'architecture multi-processeur du TP4, les 4 processeurs exécutent le même code de boot (puisqu'ils se branchent à la même adresse 0xBFC00000), mais certaines actions dépendent du processor_id :
     299on va commencer par exécuter le programme d'affichage du message ''hello world'', en parallèle sur chacun des 4 processeurs.
     300
     301Le code de boot, contenu dans le fichier '''reset.s''', doit supporter des applications logicielles où les 4 processeurs exécutent 4 programmes différents. Comme dans le cas de l'architecture multi-processeur du TP4, les 4 processeurs exécutent le même code de boot (puisqu'ils se branchent à la même adresse 0xBFC00000), mais certaines actions dépendent du processor_id :
    302302 * les pointeur de pile des quatre processeurs doivent être initialisés à des valeurs différentes puisque chaque processeur travaille dans son propre segment de pile.
    303303 * chaque processeur doit configurere son propre composant concentrateur d'interruption ICU.
    304304 * En sortie du code de boot, chaque processeur se branche à une adresse de base différente, définie dans la table de sauts ''tab_main''.
    305305
    306 '''Question''': Complétez le code de boot dans le fichier '''reset.s''' du répertoire '''soft_hello'''.
     306'''Question''': Complétez le code de boot dans le fichier '''reset.s'''.
    307307
    308308'''Question''' : Modifiez le fichier '''ldscript''' pour définir les adresses de bases des 25 segments, ainsi que le nombre de processeurs.
     
    314314== 3.4 Application "transpose" ==
    315315
    316 On veut maintenant exécuter une application parallèle multi-tâchescoopératives: 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.
     316On veut maintenant exécuter une application parallèle multi-tâches coopérative, pour exploiter le parallélisme de l'architecture matérielle.
    318317On s'intéresse à une application de traitement d'image réalisant une transposition (X <-> Y) de l'image.
    319318On 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.
     
    321320L'application logicielle contenue dans le répertoire '''soft_transpose''' 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 en mémoire '''buf_in''' et '''buf_out'''.
    322321
    323 
    324 [[Image(soclib_tp5_sobel.png)]]
     322[[Image(soclib_tp5_transpose.png)]]
    325323
    326324 * La tâche '''load''' lit une image sur le disque et copie cette image dans le tampon '''buf_in'''.
    327  * La tâche '''sobel''' lit l'image présente dans le tampon '''buf_in''', applique le filtre de Sobel, et écrit l'image résultante dans le tampon '''buf_out'''.
     325 * La tâche '''transpose''' lit l'image présente dans le tampon '''buf_in''', effectue la transposition et écrit l'image résultante dans le tampon '''buf_out'''.
    328326 * La tâche '''display''' lit l'image présente dans le tampon '''buf_out''', et affiche cette image sur le frame buffer.
    329327Les deux tampons de communication '''buf_in''' et '''buf_out''' sont protégés par les deux variables de synchronisation '''buf_in_empty''' et
     
    332330 * 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.
    333331
    334 '''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'''.
     332'''Question''' : Modifiez le fichier '''reset.s''' pour que les tâches '''load''', '''transpose''', et '''display''' s'exécutent sur les processeurs 0, 1 et 2 respectivement.
    335333
    336334'''Question''' : Lancez la simulation. Quelle est la téquence d'affichage? (inverse du nombre de cycles entre deux affichages).