Changes between Version 67 and Version 68 of SoclibCourseTp5


Ignore:
Timestamp:
Dec 19, 2013, 1:38:53 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v67 v68  
    178178vous devez localiser puis corriger.
    179179
    180 Outre les fichiers permettant de regénérer l'architecture monoprocesseur du TP4, l'archive [attachment:soclib_tp5.tgz soclib_tp5.tgz] contient deux répertoires '''soft_gcd''' et '''soft_prime'''.
     180L'archive qui vous est fournie contient donc uniquement deux répertoires '''soft_gcd''' et '''soft_prime'''.
    181181 * Le répertoire '''soft_gcd''' contient tous les fichiers nécessaires à la génération du code binaire de l'application de calcul du PGCD que vous connaissez déjà.
    182182 * Le répertoire '''soft_prime''' contient tous les fichiers nécessaires à la génération du code binaire d'une autre application logicielle réalisant le calcul des nombres premiers.
     
    184184Les deux bugs (différents) qui ont été introduits dans chacune de ces deux applications ne sont pas visibles à la compilation, et n'apparaissent qu'à l'exécution.
    185185
    186 Créez un répertoire de travail TP5, puis téléchargez et décompressez l'archive dans ce tépertoire.
     186Créez un répertoire de travail TP5, dans lequel vous recopierez les fichiers permettant de générer l'architecture monoprocesseur du TP4. Téléchargez et décompressez l'archive  [attachment:soclib_tp5.tgz soclib_tp5.tgz] dans ce tépertoire.
    187187{{{
    188188$ tar xzvf soclib_tp5.tgz
     
    190190
    191191'''Question''' : Placez-vous dans le répertoire '''soft_gcd''', compilez l'application logicielle en utilisant le Makefile
    192 qui vous est fourni. RetourneZ dans le répertoire '''TP5''' pour générer le simulateur '''simulator.x'''.
    193 Lancez l'exécution du simulateur en redéfinissant le chemin d'accès au code binaire:
    194 {{{
    195 $ ./simulator.x -SOFT soft_gcd/bin.soft
     192qui vous est fourni. Retournez dans le répertoire '''TP5''' pour générer le simulateur '''simulator.x'''.
     193Lancez l'exécution du simulateur en redéfinissant les chemins d'accès au code binaire:
     194{{{
     195$ ./simulator.x -SYS soft_gcd/sys.bin -APP soft_gcd/app.bin
    196196}}}
    197197
     
    202202Lancez l'exécution du simulateur dans une première fenêtre de travail, après avoir redéfini la variable d'environnement SOCLIB_GDB comme indiqué ci-dessus.
    203203
    204 Ouvrez dans une seconde fenêtre le fichier '''bin.soft.txt''', de façon à pouvoir suivre - instruction par instruction -
    205 le programme en cours d'exécution, depuis la première instruction du code de boot (adresse Oxbfc00000).
     204Ouvrez dans une seconde fenêtre le fichier '''sys.bin.txt''', de façon à pouvoir suivre - instruction par instruction -
     205le programme en cours d'exécution, depuis la première instruction du code de boot (adresse 0xbfc00000).
    206206
    207207Lancez le client GDB dans une troisième fenêtre, connectez-le au simulateur. Commencez à exécuter le programme instruction par instruction  avec la commande (''stepi''). Après chaque commande (''stepi''), il faut lancer une commande (''info r'') pour afficher le contenu des registres internes du processeur, et vérifier que le comportement de la machine est conforme à ce qu'on attend. Le premier  dysfonctionnement apparaît assez rapidement...
     
    220220Chaque composant est donc repèré par un couple (cluster_index, local_index).
    221221
    222 Les architectures clusterisées sont généralement des architectures NUMA (Non Uniform Memory Access). On trouve en effet un banc mémoire physique par cluster, afin d'éviter de remplacer le goulot d'étranglement du bus partagé  par le goulot d'étranglement de l'accès à un unique banc mémoire. La mémoire est donc physiquement distribuée, même si l'espace d'adressage reste partagé par tous les composants du système (quel que soit leur cluster).
     222Les architectures clusterisées sont généralement des architectures NUMA (Non Uniform Memory Access). On trouve en effet un banc mémoire physique par cluster, afin d'éviter de remplacer le goulot d'étranglement du bus partagé  par un autre goulot d'étranglement qui serait l'accès à un unique banc mémoire. La mémoire est donc physiquement distribuée, même si l'espace d'adressage reste partagé.
    223223
    224224NUMA signifie donc deux chose :
     
    226226 * la latence  et la consommation énérgétique seront beaucoup plus faible lorsque qu'un processeur accède à la mémoire locale (dans le même cluster) que lorsqu'il accède à une mémoire distante (dans un autre cluster).
    227227
    228 On a généralement un mécanisme d'interconnexion local dans chaque cluster (bus, anneau ou crossbar) pour les communications locales, et un interconnect global (généralement un micro-réseau intégré sur puce) pour les communications inter-clusters.
     228On a généralement un mécanisme d'interconnexion local dans chaque cluster (bus ou crossbar) pour les communications locales, et un interconnect global (généralement un micro-réseau intégré sur puce) pour les communications inter-clusters.
    229229
    230230Les architectures NUMA clusterisées visent donc deux objectifs:
     
    232232 * D'un point de vue électrique, le découpage en clusters permet de résoudre en partie les problèmes d'horlogerie, puisque chaque cluster peut être implanté dans un domaine d'horloge séparé (approche GALS : Globally Asynchronous / Locally Synchronous). Le franchissement des frontières d'horlogre est alors la responsabilité du micro-réseau assurant les communications inter-clusters.
    233233
    234 Remarquez cependant que la capacité de stockage de la mémoire embarquée n'est jamais suffisante, et que l'accès à la mémoire externe reste un goulot d'étranglement.
     234Remarquez cependant que la capacité de stockage de la mémoire embarquée dans les clusters n'est jamais suffisante, et que l'accès à la mémoire externe à la puce reste un goulot d'étranglement.
    235235
    236236== 3.1 structuration des adresses et des identifiants ==
     
    285285 * 1 segment '''seg_ioc''' associé au contrôleur de disque
    286286 * 1 segment '''seg_dma''' associé au contrôleur DMA
     287
    287288'''Question''' : Pourquoi faut-il des segments distincts pour les 4 piles d'exécution ?
    288289