211 | | On souhaite maintenant modéliser une architecture quadri-processeurs structurée en quatre clusters identiques, |
212 | | ressemblant fortement à l'architecture du TP4. Chaque cluster contient donc un processeur MIPS32, un composant ICU, un timer, |
213 | | un contrôleur de terminal TTY, et une mémoire. On utilisera un composant '''vci_local_crossbar''' comme interconnect local dans chaque |
214 | | cluster, et le composant '''vci_vgmn''' comme interconnect global. |
215 | | |
216 | | Il faut donc écrire les deux fichiers tp5_top.cpp et TP5.desc correspondant à cette architecture. |
| 213 | On souhaite maintenant modéliser une architecture quadri-processeurs structurée en quatre clusters presque identiques, |
| 214 | Chaque cluster contiendra un processeur MIPS32, un composant ICU, un timer, et une mémoire. On se dispensera d'instancier le coprocesseur GCD dans cette architecture. On instanciera un seul contrôleur de TTY (contrôlant 4 terminaux numérotés de 0 à3), |
| 215 | et une seule ROM de boot qu'on placera respectivement dans le cluster 0 et dans le cluster 3. On 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]) . |
| 216 | |
| 217 | Il faut donc écrire les deux fichiers tp5_top.cpp et TP5.desc correspondant à cette architecture, |
| 218 | en veillant à donner des valeurs croissantes (de 0 à 3) à l'argument ''processor-id'' des 4 processeurs. |
| 219 | |
| 220 | Il faut définir de nouveaux segments pour les nouveaux périphériques. Il faut également définir 4 segments distincts |
| 221 | pour les piles d'exécution des 4 processeurs. En revanche, les segment seg_reset, seg_kernel et seg_code qui ne contiennent que des instructions peuvent être partagés par les 4 processeurs. |
| 222 | |
| 223 | Le code de boot doit également être modifié. Lors du démarrage, les quatre processeurs vont exécuter le même code, |
| 224 | mais les actions réalisées peuvvent dépendre du processor_id : En particulier, les pointeur de pile des quatre processeurs |
| 225 | doivent être initialisés à des valeurs différentes puisque chaque processeur travaille dans son propre segment de pile. |
| 226 | |
| 227 | En sortie de la séquence de boot, les quatre processeurs peuvent se brancher au même programme main(). |
| 228 | |
| 229 | Si tout se passe normalement, les quatre processeurs doivent exécuter le même programme interactif ''Hello World'', chacun |
| 230 | sur son propre terminal. |
| 231 | |
| 232 | Si ce n'est pas le cas, il vous reste le '''GDB Server'''... |