Changes between Version 2 and Version 3 of SoclibCourseTp2


Ignore:
Timestamp:
Sep 5, 2009, 6:02:43 PM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp2

    v2 v3  
    1616= 2. Architecture matérielle =
    1717
    18 L'architecture matérielle pour de ce second TP instancie également deux composants matériels qui possèdent des fonctionnalités identiques à celles des composants utilisés dans le premier TP, mais ces composants possèdent maintenant des ports de communication qui respectent le standard VCI/OCP. Le premier
    19 composant est le coprocesseur cablé (c'est à dire non programmable)
    20 qui calcule le PGCD (plus grand commun diviseur) de deux nombres entiers positifs A et B, codés sur 32 bits.
    21 Le second composant est chargé de transmettre les valeurs des opérandes A et B au coprocesseur, et de récupérer
    22 le résultat. Ces deux composants matériels fonctionnent en parallèle, et communiquent entre eux par des canaux de communication de type FIFO.
     18L'architecture matérielle pour de ce second TP instancie trois types de composants matériels.
     19Les deux composants ''!VciLcdCoprocessor'' et ''!VciLcdMaster'' ont des fonctionnalités identiques à celles des composants utilisés dans le premier TP, mais ces composants possèdent maintenant des ports de communication qui respectent le protocole VCI/OCP. Le troisième composant ''!VciGbs'' est un composant matériel modélisant un bus système respectant le protocole VCI/OCP, et permettant aux différents composants matériels de communiquer entre eux.
     20
     21[[Image(soclib_tp2_archi.png)]]
     22
     23Le composant ''!VciGsb'' se comporte comme un bus, car il ne traite qu'une seule transaction à la fois.
     24Si plusieurs initiateurs ...
     25
     26= 3. Protocole VCI/OCP
     27
     28Le protocol de communication VCI permet de construire des architectures matérielle multi-processeurs à memoire
     29partagée. Dans ce type de d'architecture, les différents composants matérielles utilisent des transactions pour communiquer entre eux. Une transaction est un couple (commande / réponse).
     30Une transaction est initiée par composant ''initiateur'' est chargé de
     31démarrer la transaction, et un composant cible est chargé de répondre à la commande qu'il a reçue.
     32 * paquet commande un paquet commande contient principalement une adresse
     33En principe, n'importe quel initiateur est capable de communiquer avec n'importe quelle cible. 
     34La cible est désignée par les bits de poids fort de l'adresse.
     35
     36L'adreentre un intitiateur et
     37utilsentUn système de ce type possède trois types de composants :
     38 * des composants ''initiateurs", capable de
     39d'adressage partagé implante un protocole de communication très simple supportant le contrôle de flux.
    2340
    2441[[Image(soclib_tp2_fig1_archi.png)]]
    2542
    2643== 2.1 Canal de communication VCI ==
    27 
    28 Le protocol de communication VCI permet de construire des architectures multi-processeurs implante un protocole de communication très simple supportant le contrôle de flux.
    2944
    3045La figure ci-dessous détaille les signaux utilisés par le protocole VCI.
     
    4863Bien sûr les valeurs de ces paramètres VCI doivent être les mêmes pour tous les composants matériels d'une même architecture.
    4964
    50 === Modélisation ===
    51 
    5265Cette généricité des interfaces de communication VCI est évidemment une souplesse très utile,
    5366mais elle crée une difficulté pour la modélisation des composants matériels, puisqu'ilfaut écrire des modèles de
     
    6477Ces trois objets utilisent évidemment un paramètre template de type ''VciParams''.
    6578
    66 == 2.2 Composant ''VciLcdCoprocessor'' ==
    67 
    68 Le composant ''!VciLcdCoprocessor'' se comporte comme un périphérique adressable qui doit être
     79= 4. Segmentation de l'espace adressable =
     80
     81= 5. Travail à réaliser =
     82 
     83L'archive attachement:soclib_tp1.tgz contient différents fichiers dont vous aurez besoin pour ce premier TP.
     84Créez un répertoire de travail spécifique TP1 pour ce TP, recopier l'archive dans ce répertoire TP1, et décompressez-la:
     85{{{
     86$ tar xzvf soclib_tp1.tgz
     87}}}
     88
     89Cette archive contient les fichiers suivants :
     90
     91== 4.1 Composant ''!VciLcdCoprocessor ==
     92
     93Le composant ''!VciLcdCoprocessor'' se comporte comme un périphérique adressable, et doit donc être
    6994modélisé comme une cible VCI. Il possède donc un seul port de type ''!VciTarget'', et 4 registres
    7095(ou pseudo-registres) implantés dans l'espace addressable, qui peuvent donc - en principe - être
    71 lus ou écrits par n'importe quel initiateur.
    72 du sytème. Chacun de ces registres a une largeur de 4 octets. Par conséquent, le occupé par le périphérique
    73  segment de
     96lus ou écrits par n'importe quel initiateur du sytème. Chacun de ces registres a une largeur de 4 octets.
     97Par conséquent, le segment occupé par ce périphérique dans l'espace adressable a une taille de 4*4 = 16octets.
     98
     99
     100Pour simplifier le décodage des adresses, on impose la contrainte que l'adresse de base de ce segment est
     101un multiple de sa longueur (on dit que le segment est ''aligné''). 
     102La carte d'implantation des registres est définit comme suit :
     103
     104|| '''Nom du registre''' || '''Offset''' || '''Mode'''    ||
     105|| r_opa                         || 0x0          || Write Only ||
     106|| r_opb                         || 0x4          || Write Only ||
     107|| r_start                        || 0x8          || Write Only ||
     108|| r_res                           || 0xc          || Read Only  ||
     109
     110Attention : Il n'existe pas réellement de registre ''r_start'' dans le composant matériel.
     111Lorsque le composant ''!VciLcdCoprocessor'' reçoit une commande d'écriture à l'adresse
     112correspondant à l'adresse de ''r_start'', la donnée WDATA correspondante n'est écrite nulle part,
     113mais la commande est interprêtée par le coprocesseur comme un ordre de démarrage du calcul.
     114
     115Une erreur est signalée si le coprocesseur reçoit une commande longueur supérieure à un mot,
     116ou si l'adresse reçue n'appartient pas au segment qui a été défini pour le coprocesseur,
     117ou si le mode d'accès (Read ou write) ne respecte pas les contraintes ci-dessus.
     118
     119Question : à quoi servent ces vérifications ?
     120
     121Les fichiers
     122
     123== 4.2 Composant ''VciLcdMaster'' ==
     124
     125Le composant ''!VciLcdMaster'' est un initiateur VCI, qui exécute une boucle infinie dans laquelle il exécute
     126successivement les 6 actions suivantes:
     127 * calcul de deux valeurs aléatoires (entiers positifs codés sur 32 bits)
     128 * écriture
     129La figure ci-dessous décrit la structure de l'automate de contrôle du composant ''!VciLcdMaster''.
     130
     131Le fichier ''vci_lcd_coprocessor.h'' contient une description complête du composant ''!VciLcdMaster''.
     132Le fichier ''vci_lcd_coprocessor.cpp'' contient une description incompête des méthodes associées à ce composant.
     133Complêtez le code des méthodes ''transition()'' et ''genMoore()'', pour traiter les états de l'automate qui ne le sont pas.
     134incomp
     135
     136
     137
     138
     139
     140
     141
     142
     143
     144
    74145
    75146L'algorithme de calcul du PGCD implanté par cet automate cablé peut être décrit par le code C suivant :