Changes between Version 71 and Version 72 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 19, 2013, 10:50:18 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v71 v72  
    272272 * La ligne d'interruption du périphérique IOC sera connectée à l'entrée IRQ_IN[12] du composant ICU.
    273273
    274 On définit 17 segments pour cette plate-forme, qui peuvent être protégés ou non, suivant la valeur du bit d'adresse A31.
     274On définit 16 segments pour cette plate-forme, qui peuvent être protégés ou non, suivant la valeur du bit d'adresse A31.
    275275
    276276'''Cluster 0'''
    277  * segment '''seg_rom''' pour le code de RESET à l'adresse imposée 0xBFC00000, protégé.
    278277 * segment '''seg_kcode''' pour le code système à l'adresse imposée 0x80000000, protégé.
    279278 * segment '''seg_kdata''' pour les données cachables du système d'exploitation, protégé.
     
    293292
    294293'''Cluster 3'''
    295  * segment '''seg_text''' pour le code des programmes utilisateur, non protégé.
     294 * segment '''seg_code''' pour le code des programmes utilisateur, non protégé.
    296295 * segment '''seg_data''' pour les données globale des programmes utilisateur, non protégé.
    297296 * segment '''seg_tty''' associé  au composant TTY, protégé.
    298  * segment '''seg_rom''' associé  à la ROM de boot, protégé.
     297 * segment '''seg_rom''' associé  à la ROM de boot, à l'adresse imposée 0xBFC00000, protégé.
    299298 * segment '''seg_stack3''' pour la pile de la tâche qui s'exécute sur le processeur P3, non protégé.
    300299
    301 '''Question''' : Pourquoi faut-il des segments distincts pour les 4 piles d'exécution ?
    302 
    303 '''Question''' :  Pourquoi 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? Indication : dans chaque cluster, il existe au moins un segment appartenant à l'espace utilisteur (le segment de pile), et un ou deux segments appartenant à l' espace superviseur (les segments associés aux périphériques).
    304 
    305 '''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. 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.
     300'''Question''' : Pourquoi a-t-on choisi de placer les 4 piles d'exécution dans 4 clusters différents ?
     301
     302'''Question''' :  Pourquoi 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 ?
     303
     304'''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.
    306305
    307306'''Question''' : Complétez le fichier '''tp5_top_cluster.cpp''' décrivant cette architecture. Il faut préciser les valeurs des adresses de base et les longueurs des segments. Il faut définir les arguments des constructeurs des composants matériels, et il faut définir la net-list.
     
    310309
    311310Placez-vous dans le répertoire '''soft_hello'''. Pour valider l'architecture matérielle (y compris les interruptions),
    312 ommencez par exécuter le programme d'affichage du message ''hello world'', en parallèle sur chacun des 4 processeurs.
     311commencez par exécuter le programme d'affichage interactif du message ''hello world'', en parallèle sur chacun des 4 processeurs.
    313312
    314313Le 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 processor_id :
    315314 * 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.
    316  * chaque processeur doit configurere son propre composant concentrateur d'interruption ICU.
    317  * 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''.
    318 
    319 '''Question''': Complétez le code de boot dans le fichier '''reset.s''' pour initialiser la table de sauts.
    320 
    321 '''Question''' : Modifiez le fichier '''ldscript''' pour définir les adresses de bases des 25 segments, ainsi que le nombre de processeurs.
    322 
    323 '''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 utiliser le '''GDB Server'''...
     315 * chaque processeur doit configurere son propre canal du concentrateur d'interruption ICU.
     316 * En sortie du code de boot, chaque processeur se branche à une adresse de base différente, définie dans la table de sauts qui se trouve au début du segment seg_data..
     317
     318'''Question''': Complétez le code de boot dans le fichier '''reset.s''' pour initialiser la table de sauts. 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.
     319
     320'''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...
    324321
    325322== 3.4 Application "transpose" ==