Changes between Version 76 and Version 77 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 25, 2013, 3:00:11 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v76 v77  
    304304'''Question''' : Proposez des adresses de base pour ces 16 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. Recommandation : on utilisera les 4 bits A[31:28] pour le champs GADR, en considérant que seuls les 2 bits A[29:28] sont réellement discriminants pour désigner le cluster visé.   On utilisera les 4 bits A[27:24] pour le champs LADR.
    305305
    306 '''Question''' : Sur combien de bits doit être codé les sous-champs GID et LID du champs VCI SRCID ?
     306'''Question''' : Sur combien de bits doivent être codés les sous-champs GID et LID du champs VCI SRCID ?
    307307
    308308'''Question''' : Quelle critique peut-on formuler contre cette architecture, pour ce qui concerne le cablage des lignes d'interruption ?
     
    315315commencez par exécuter le programme d'affichage interactif du message ''hello world'', en parallèle sur chacun des 4 processeurs.
    316316
    317 Le routage des interruptions vers chacun des 4 processeurs est contrôlé par logiciel grâce aux registres de masque du composant ICU: on fera en sorte que le processeur P[i] recoive les interruptions IRQ_TTY[i], IRQ_TIM[i], et IRQ_DMA[i]. L'interruption IRQ_IOC sera routée vers le processeur P[0].
     317Le routage des interruptions vers chacun des 4 processeurs est contrôlé par logiciel grâce aux registres de masque du composant ICU, qui sont définis dans le code de boot. On fera en sorte que le processeur P[i] recoive les interruptions IRQ_TTY[i], IRQ_TIM[i], et IRQ_DMA[i]. L'interruption IRQ_IOC sera routée vers le processeur P[0].
    318318
    319319Le code de boot, contenu dans le fichier '''reset.s''', doit supporter des applications logicielles où les 4 processeurs exécutent 4 programmes différents. 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 proc_id :
     
    324324 * En sortie du code de boot, chaque processeur se branche à une adresse différente dans le code utilisateur, dépendante du proc_id.
    325325
    326 '''Question''': Pourquoi utilise-t-on une technique redondante où les 4 processeurs écrivent les mêmes valeurs dans le vecteur d'interruption?
    327 
    328 '''Question''': Complétez le code de boot dans le fichier '''reset.s'''. Modifiez le fichier '''seg_ld''' pour définir les adresses de bases des 16 segments. Modifiez le fichier '''config.h''' pour définir le nombre de processeurs.
     326'''Question''': Pourquoi utilise-t-on une technique redondante où les 4 processeurs écrivent les mêmes valeurs pour initialiser le vecteur d'interruption?
     327
     328'''Question''': Complétez le code de boot dans le fichier '''reset.s'''. Modifiez le fichier '''seg.ld''' pour définir les adresses de bases des 16 segments. Modifiez le fichier '''config.h''' pour définir le nombre de processeurs.
    329329
    330330'''Question''' : lancez la simulation: Les quatre processeurs doivent exécuter le même programme interactif, chacun sur son propre terminal TTY. Si ce n'est pas le cas, vous pouvez soit activer la trace cycle par cycle, soit utiliser le '''GDB Server''', suivant que vous soupçonnez une erreur dans le matériel ou dans le logiciel...
     
    336336On utilisera le même flux d'image que dans le TP4, c'est à dire le fichier '''images.raw''', qui contiennt une vingtaine d'images de 128 lignes de 128 pixels codées en 256 niveaux de gris.
    337337
    338 L'application logicielle contenue dans le fichier '''main.c''' du répertoire '''soft_transpose''' est découpée en trois tâches logicielles, qui doivvent s'exécuter en parallèle sur trois proceseurs différents. Elles communiquent entre elles à travers deux tampons de communication en mémoire appelés'''buf_in''' et '''buf_out'''. Chaque tampon peut stocker une image complête
     338L'application logicielle contenue dans le fichier '''main.c''' du répertoire '''soft_transpose''' est découpée en trois tâches logicielles, qui doivvent s'exécuter en parallèle sur trois processeurs différents, le quatrième processeur étant non utilisé. Les trois tâches communiquent entre elles à travers deux tampons de communication en mémoire appelés'''buf_in''' et '''buf_out'''. Chaque tampon peut stocker une image complête
    339339
    340340[[Image(soclib_tp5_transpose.png)]]
     
    343343 * 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.
    344344 * La tâche '''display''' lit l'image présente dans le tampon buf_out, et affiche cette image sur l'écran graphique. en l'écrivant dans le frame buffer.
    345 Les deux tampons de communication buf_in et buf_out sont protégés par les deux variables de synchronisation '''buf_in_empty''' et '''buf_out_empty''', qui supportent un protocole de synchronisation de type SET/RESET en mode utilisateur:
     345Les deux tampons de communication buf_in et buf_out sont protégés par les deux variables de synchronisation '''buf_in_empty''' et '''buf_out_empty''',
     346qui supportent un protocole de synchronisation de type SET/RESET en mode utilisateur:
    346347 * 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.
    347348 * 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.
     
    357358'''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. Dans l'application logicielle proposée, quelles tâches s'exécutent effectivement en parallèle?
    358359
    359 '''Question''' : Comment peut-on modifier l'application logicielle pour augmenter le parallélisme et augmenter ainsi la fréquence d'affichage des images, sans augmenter le nombre de processeurs utilisés?
     360'''Question''' : Comment pourrait-on modifier l'application logicielle pour augmenter le parallélisme et augmenter ainsi la fréquence d'affichage des images, sans augmenter le nombre de processeurs utilisés?
    360361
    361362= 4 Compte_rendu =