Changes between Version 73 and Version 74 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 22, 2013, 3:41:47 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v73 v74  
    260260 * On se dispensera d'instancier le coprocesseur GCD dans cette architecture.
    261261
    262 On supposera que chacun des composants TIM, TTY et DMA possède 4 canaux.
     262On supposera que chacun des periphériques TIM, TTY et DMA possède 4 canaux, de sorte que le canal [i] soit utilisé par le processeur P[i].
    263263
    264264On 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]) .
     
    267267
    268268Pour 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.
     269 * Les 4 lignes d'interruption IRQ_TIM[3:0] du périphérique TIM seront connectée aux entrées IRQ_IN[3:0] du composant ICU.
     270 * Les 4 lignes d'interruption IRQ_DMA[3:0] du périphérique DMA seront connectée aux entrées IRQ_IN[7:4] du composant ICU.
     271 * Les 4 lignes d'interruption IRQ_TTY[3:0] du périphérique TTY seront connectée aux entrées IRQ_IN[11:8] du composant ICU.
     272 * La ligne d'interruption unique du périphérique IOC sera connectée à l'entrée IRQ_IN[12] du composant ICU.
    273273
    274274On définit 16 segments pour cette plate-forme, qui peuvent être protégés ou non, suivant la valeur du bit d'adresse A31.
     
    315315commencez par exécuter le programme d'affichage interactif du message ''hello world'', en parallèle sur chacun des 4 processeurs.
    316316
    317 Le 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 :
    318  * 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.
    319  * chaque processeur doit configurere son propre canal du concentrateur d'interruption ICU.
    320  * 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..
    321 
    322 '''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.
     317Le 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].
     318
     319Le 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 :
     320 * Chaque processeur initialise son propre pointeur de pile, à une valeur dépendante du proc_id.
     321 * Tous les processeurs initialisent le vecteur d'interruptions.
     322 * Chaque processeur configure le registre de masque de son propre canal du concentrateur d'interruption.
     323 * Chaque processeur initialise son propre registre SR.
     324 * En sortie du code de boot, chaque processeur se branche à une adresse différente dans le code utilisateur, dépendante du proc_id.
     325
     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.
    323329
    324330'''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...