TaskMapper

Outil de placement de tâches pour systèmes multiprocesseurs sur puce pour cartes Altera DE2

Manuel

Fonctionnement général

L'interface est composée de trois onglets :

Une fois que le modèle de MPSoC est terminé, il est possible de l'exporter dans un fichier au format XML.

La deuxième fonction de TaskMapper est d'évaluer le placement. Pour ce faire, le meilleur moyen est de tester ce placement. TaskMapper utilise la suite de développement d'Altera pour reprogrammer un FPGA, et ainsi mettre en oeuvre le MPSoC.

Contraintes d'utilisation

Contraintes de conception

extrait des rapports et présentations

L'architecture destinée à être implanter sur le MPSoC est à base de NIOS 2. Sur chacun de ces processeurs, un µC-OS 2 (wikipedia) s'exécute, permettant l'exécution de 20 tâches par processeur. Ces tâches "logicielles" doivent être programmées en C et avoir un priorité unique (sur le processeur). En plus des NIOS 2, il est possible d'ajouter des co-processeurs matériels. Chacun de ces co-processeurs peut exécuter une seule tâche, programmée en VHDL. Les co-processeurs sont connecté d'office au bus, c'est pourquoi il n'y a pas besoin de créer de lien dans l'onglet architecture. Chaque processeur peut établir une communication avec chaque co-processeur. Cependant, les co-processeurs étant de type "SLAVE", ils ne peuvent pas établir de communication avec d'autres composants (mémoire, co-processeur, processeur).

Chaque processeur NIOS 2 doit être relié à une mémoire via un bus d'instruction. C'est dans cette mémoire qu'il lira les instructions des programmes qu'il doit exécuter. Plusieurs processeurs peuvent lire leurs instructions dans une même mémoire.

Pour communiquer entre elles, les ressources utilisent différents moyens (selon les cas, cf. présentation 2nd semestre, diapos 31 et suivantes). Dans le cas d'une communication entre tâches placées sur des processeurs NIOS 2 différents, la FIFO est mise en oeuvre par une mémoire commune, reliée à chacun des processeurs. TaskMapper ne gère pas de façon transparente la création de cette mémoire. En ce qui concerne la communication avec les co-processeurs, la FIFO se situe dans un composant englobant le co-processeur, et qui fait office d'interface avec le bus.

Tant que le modèle n'est pas cohérent, il n'est pas possible de générer le code ou de lancer l'exécution du modèle sur la carte. Ainsi, un co-processeur n'ayant aucune tâche à exécuter, ou l'absence de mémoire pour la communication inter-processeur sera signalé.

Chaque processeur relié à la mémoire sdram_0 peut utiliser au maximum 1 Mo sur cette mémoire (code, pile, données). Pour les autres mémoires, il est possible d'utiliser uniquement des mémoires de type RAM (bien que d'autres types apparaissent, la SDRAM est reservée à la mémoire sdram_0, et la ROM n'est pas implémentée).

Premier onglet : RPK

  1. Le menu permet d'accéder aux fonction générales de l'outil : ouvrir/enregistrer/créer un nouveau/générer le code pour un projet.
  2. La partie principale de l'onglet représente le réseau de processus de Kahn.
  3. Le panneau de propriétés permet de modifier certaines propriétés de l'élément sélectionné (ici, un port de sortie).
  4. Fonction de pointage : permet de selectionner les différents éléments.
  5. Création de processus : en double cliquant dans un espace vide de la partie (2).
  6. Création d'un port d'entrée : en double cliquant sur un processus.
  7. Création d'un port de sortie : en double cliquant sur un processus.
  8. Création d'un canal de communication : en effectuant un glisser-déposer d'un port de sortie vers un port d'entrée.
  9. Project Name : permet de nommer le projet.
  10. Workspace : permet de spécifier où sera généré le code, et où seront compilés les différents éléments du projet.
  11. Card Number : permet d'indiquer quelle carte doit être utilisée (liste accessible via jtagconfig).

Il est possible de supprimer des éléments en utilisant la touche SUPPR (ou DEL) du clavier lorsqu'un élément est sélectionné. Le déplacement des éléments se fait via un glisser-déposer (avec la fonction de pointage).

Deuxième onglet : Architecture

  1. La partie principale de l'onglet représente le modèle d'architecture.
  2. Le panneau de propriétés permet de modifier certaines propriétés de l'élément sélectionné (ici, la mémoire sdram_0).
  3. Fonction de pointage : permet de selectionner les différents éléments.
  4. Création de processeurs : en double cliquant dans un espace vide de la partie (1).
  5. Création de co-processeurs : en double cliquant dans un espace vide de la partie (1).
  6. Création de mémoires : en double cliquant dans un espace vide de la partie (1).
  7. Création d'un lien instruction : lie un processeur à une mémoire pour lire les instructions.
  8. Création d'un lien données : lie un processeur à une mémoire de données.
  9. Barre d'outils

Il est possible de supprimer des éléments en utilisant la touche SUPPR (ou DEL) du clavier lorsqu'un élément est sélectionné (y compris les liens mémoire-processeur). Le déplacement des éléments se fait via un glisser-déposer (avec la fonction de pointage).

Troisième onglet : Allocation

  1. La partie droite représente les "hardallocations", c'est a dire le placement de tâches codées en VHDL.
  2. La partie gauche représente les "softallocations", c'est à dire le placement de tâches codées en C.
  3. La partie du bas représente les tâches qui n'ont pas été placées (elles doivent toutes l'être).
  4. Générer le code : génére et compile le code.
  5. Afficher le terminal : envoie le code compilé sur la carte, et affiche le terminal d'exécution.

Les placements se font via un glisser-déposer. C'est dans cet onglet qu'il faut spécifier les paramètres des tâches :

Edition du VHDL

  1. La première partie du fichier spécifie les entêtes. Elles sont générées par TaskMapper, et ne doivent pas être modifiées. Elles permettent au co-processeur de bien se connecter à l'interface de connection au bus (cf. rapports).
  2. La deuxième partie correspond au traitements, et est modifiable.

nios2-terminal

  1. Le debut correspond à l'inialisation du terminal.
  2. La suite correspond à l'exécution des tâches sur le processeur cpu_0. En effet, seul ce processeur est connecté à l'interface d'entrée-sortie avec l'exterieur (les printf() exécutés sur les autres processeurs ne seront pas affichés).

Pour accéder à TaskMapper après l'exécution, il faut fermer cette fenêtre (cela tue le processus nios2-terminal, et interrompt la communication avec la carte.

TaskMapper - 2007-2008
droits?