Changes between Version 68 and Version 69 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 19, 2013, 5:57:54 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v68 v69  
    252252== 3.2 architecture à 4 clusters ==
    253253
    254 On souhaite modéliser une architecture structurée en quatre clusters presque identiques,
    255 Chaque cluster contiendra un processeur MIPS32 (avec son contrôleur de cache), un composant ICU, un contrôleur TTY, un TIMER et une mémoire RAM.
     254On souhaite modéliser une architecture structurée en quatre clusters.
     255Chaque cluster contiendra un processeur MIPS32 (avec son contrôleur de cache), une mémoire RAM, et un ou deux contrôleurs de périphériques:
     256 * Le cluster 0 contient le contrôleur de disque IOC.
     257 * Le cluster 1 contient le contrôleur DMA et et le contrôleur d'interruptions ICU.
     258 * Le cluster 2 contient le contrôleur d'écran graphique FBF et le contrôleur de timers TIM.
     259 * Le cluster 3 contient la ROM de boot et le contrôleur TTY.
    256260 * On se dispensera d'instancier le coprocesseur GCD dans cette architecture.
    257  * On placera le contrôleur de disque IOC dans le cluster 0.
    258  * On placera le contrôleur DMA dans le cluster 1.
    259  * On placera le contrôleur d'écran graphique FBF dans le cluster 2.
    260  * On placera la ROM de boot dans le cluster 3.
     261
     262On supposera que chacun des composants TIM, TTY et DMA possède 4 canaux.
    261263
    262264On utilisera un composant '''vci_local_crossbar''' comme interconnect local (voir documentation [https://www.soclib.fr/trac/dev/wiki/Component/VciXcacheWrapper ici]) , et on utilisera le composant '''vci_vgmn''' comme interconnect global (voir documentation [https://www.soclib.fr/trac/dev/wiki/Component/VciXcacheWrapper ici]) .
     
    264266[[Image(soclib_tp5_archi_clusters.png)]]
    265267
    266 Pour ce qui concerne les interruptions:
    267  * Dans chaque cluster (i), la ligne d'interruption du TIMER sera connectée à l'entrée IRQ_IN[0] du composant ICU[i].
    268  * Dans chaque cluster (i), la ligne d'interruptiondu TTY sera connectée à l'entrée IRQ_IN[1] du composant ICU[i].
    269  * La ligne d'interruption du contrôleur IOC sera connectée à l'entrée IRQ_IN[2] du composant ICU[0].
    270  * La ligne d'interruption du contrôleur DMA sera connectée à l'entrée IRQ_IN[3] du composant ICU[1].
    271 
    272 On définit 25 segments pour cette plate-forme :
    273 
    274  * 4 segments '''seg_icu_i''' associés aux 4 composants ICU[i], 
    275  * 4 segments '''seg_tty_i''' associés  aux 4 composants TTY[i]
    276  * 4 segments '''seg_tim_i''' associés aux  4 composants TIMER[i]
    277  * 4 segments '''seg_stack_i''' pour les 4 piles d'exécution des 4 processeurs
    278  * 1 segment '''seg_reset''' pour le code de RESET à l'adresse imposée 0xBFC00000
     268Pour ce qui concerne les interruptions:
     269 * Les 4 lignes d'interruption du périphérique TIM seront connectée aux entrées IRQ_IN[3:0] du composant ICU.
     270 * Les 4 lignes d'interruption du périphérique DMA seront connectée aux entrées IRQ_IN[7:4] du composant ICU.
     271 * Les 4 lignes d'interruption du périphérique TTY seront connectée aux entrées IRQ_IN[11:8] du composant ICU.
     272 * La ligne d'interruption du périphérique IOC sera connectée à l'entrée IRQ_IN[12] du composant ICU.
     273
     274On définit les segments suivants pour cette plate-forme :
     275
     276
     277
     278 * 1 segment '''seg_rom''' pour le code de RESET à l'adresse imposée 0xBFC00000
    279279 * 1 segment '''seg_kcode''' pour le code système à l'adresse imposée 0x80000000
    280  * 1 segment '''seg_kdata''' pour les données cachables du système d'exploitation.
    281  * 1 segment '''seg_kunc''' pour les données non-cachables du système d'exploitation.
    282  * 1 segment '''seg_text''' pour le code des programmes utilisateur
    283  * 1 segment '''seg_data''' pour les données globale des programmes utilisateur
    284  * 1 segment '''seg_fbf''' associé au frame buffer
    285  * 1 segment '''seg_ioc''' associé au contrôleur de disque
    286  * 1 segment '''seg_dma''' associé au contrôleur DMA
     280 * 1 segment '''seg_kdata''' pour les données cachables du système d'exploitation, dans la zone protégée.
     281 * 1 segment '''seg_kunc''' pour les données non-cachables du système d'exploitation, dans la zone protégée.
     282 * 1 segment '''seg_text''' pour le code des programmes utilisateur, dans la zone non protégée.
     283 * 1 segment '''seg_data''' pour les données globale des programmes utilisateur, dans la zone non protégée.
     284 * 4 segments '''seg_stack_i''' pour les 4 piles d'exécution de 4 tâches, dans la zone non protégée (une pile par cluster.
     285 * 1 segment '''seg_fbf''' associé au frame buffer, dans la zone protégée.
     286 * 1 segment '''seg_ioc''' associé au contrôleur de disque, dans la zone protégée.
     287 * 1 segment '''seg_dma''' associé au contrôleur DMA, dans la zone protégée.
     288 * 1 segment '''seg_icu''' associé au composant ICU, dans la zone protégée.
     289 * 1 segment '''seg_tty''' associé  au composant TTY, dans la zone protégée.
     290 * 1 segment '''seg_tim''' associé au composant TIM, dans la zone protégée.
    287291
    288292'''Question''' : Pourquoi faut-il des segments distincts pour les 4 piles d'exécution ?
    289293
    290 '''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 trois segments appartenant à l' espace superviseur (les segments associés au TTY, au TIMER et à l'ICU).
     294'''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).
    291295
    292296'''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.