• Aucun résultat trouvé

Modèle d'architecture virtuelle pour les systèmes multiprocesseurs monopuces

Chapitre 3 : INTRODUCTION A LA CONCEPTION DES INTERFACES LOGICIEL-MATERIEL

4. Modèle d'architecture virtuelle pour les systèmes multiprocesseurs monopuces

Au niveau RTL, la représentation de données est au niveau du bit et la fonctionnalité des interfaces d'entrées/sorties est décrite au niveau du cycle d'horloge. Cette granularité fine qui caractérise une architecture RTL ne fait qu'augmenter la complexité de la conception des interfaces logiciel-matériel au niveau RTL. L'abstraction de ces interfaces à un niveau plus élevé que le RTL tel que le niveau architecture virtuelle est alors nécessaire. Cette abstraction est basée sur la séparation entre le comportement et la communication à partir d’un haut niveau de description. Cette séparation avancée dans le flot de conception permet d’alléger les

charges des modules de calcul en leur évitant la lourde tâche de communication. Aussi, cette séparation permet-elle d’avoir une grande flexibilité architecturale. En effet les interfaces des modules deviennent complètement indépendantes de celles des ressources de communication utilisées ; ce qui facilite l’intégration de modules prédéfinis comme les mémoires ou autres.

Mémoire Module mémoire Canal Port Port externe Port interne Canal virtuel Port virtuel Module mémoire virtuel

Mémoire Module mémoire

Enveloppe du module mémoire Mémoire

Module de calcul Port

Module de calcul virtuel

Mémoire Module de calcul

Enveloppe du module de calcul

Adaptateur mémoire matériel Module mémoire Interface logiciel-matériel Module de calcul Réseau de communication (a) (b) (c) Mémoire Module mémoire Canal Port Port externe Port interne Canal virtuel Port virtuel Module mémoire virtuel

Mémoire Module mémoire

Enveloppe du module mémoire Mémoire

Module de calcul Port

Module de calcul virtuel

Mémoire Module de calcul

Enveloppe du module de calcul

Adaptateur mémoire matériel Module mémoire Interface logiciel-matériel Module de calcul Réseau de communication Mémoire Module mémoire Canal Port Port externe Port interne Canal virtuel Port virtuel Module mémoire virtuel

Mémoire Module mémoire

Enveloppe du module mémoire Mémoire

Module de calcul Port

Module de calcul virtuel

Mémoire Module de calcul

Enveloppe du module de calcul Mémoire Module mémoire Canal Port Port externe Port interne Canal virtuel Port virtuel Module mémoire virtuel

Mémoire Module mémoire

Enveloppe du module mémoire Mémoire

Module de calcul Port

Module de calcul virtuel

Mémoire Module de calcul

Enveloppe du module de calcul

Adaptateur mémoire matériel Module mémoire Interface logiciel-matériel Module de calcul Réseau de communication Adaptateur mémoire matériel Module mémoire Interface logiciel-matériel Module de calcul Interface logiciel-matériel Module de calcul Réseau de communication (a) (b) (c)

Figure 16. Les concepts de la spécification et de l'implémentation des interfaces pour les systèmes hétérogènes : (a) concept conventionnel, (b) concept d'enveloppe, (c) implémentation

Pour réaliser cette séparation, nous réutilisons les concepts conventionnels (module, port, canal) de la conception d’interfaces logiciel-matériel (Figure 16 a), et nous ajoutons une enveloppe d’adaptation entre un port d’un module et un canal de communication (Figure 16 b). Cette enveloppe permet de découpler l'interface du module de celle de la communication à un haut niveau d'abstraction. Elle a la charge d’adapter les ports du module aux différents protocoles du canal de communication. L'implémentation de cette enveloppe de haut niveau correspond à son raffinement en des adaptateurs de communication décrits au niveau RTL (Figure 16 c). L'implémentation de l'enveloppe du module mémoire correspond à un adaptateur matériel, tandis que l'implémentation de l'enveloppe du module de calcul correspond à un adaptateur logiciel-matériel (SE, pilotes logiciels et contrôleur de communication logiciel-matériel ).

L’ajout de ce modèle d'enveloppe nécessite la définition de trois nouveaux concepts pour la spécification d’interfaces logiciel-matériel : module virtuel, canal virtuel, et port virtuel.

4.1. Module virtuel

Un module virtuel est l’association d’un module et de son enveloppe. Comme l’indique la Figure 17 (a), la vue conceptuelle des modules virtuels de calcul est représentée comme la superposition d’une couche de calcul réalisant la fonctionnalité d’une application donnée et d'une couche de services de communication logiciel-matériel implémentée par l’enveloppe. Cette dernière isole complètement les modules de calcul des ressources de communication hiérarchiques qui peuvent être composées de plusieurs canaux de communication.

Un module mémoire virtuel est représenté comme la superposition d'une couche de mémorisation et d'une couche d'adaptation matérielle assurant la connexion de l'interface de la mémoire à celle des ressources de communication (Figure 17 b). Couche de calcul (fonctionnalité de l’application) Module de calcul virtuel Canaux virtuels Couche de services de communication

logiciel-matériel (enveloppe) Ressources de communication hiérarchiques (canaux virtuels) Interface de Calcul

Interface de communication Adaptation d’interfaces

Couche de mémorisation

Module mémoire virtuel

Canaux virtuels Couche d’adaptation matérielle

(enveloppe)

Ressources de communication hiérarchiques (canaux virtuels) Couche de calcul (fonctionnalité de l’application) Module de calcul virtuel Canaux virtuels Couche de services de communication

logiciel-matériel (enveloppe) Ressources de communication hiérarchiques (canaux virtuels) Interface de Calcul

Interface de communication Adaptation d’interfaces

Couche de mémorisation

Module mémoire virtuel

Canaux virtuels Couche d’adaptation matérielle

(enveloppe)

Ressources de communication hiérarchiques (canaux virtuels)

Couche de mémorisation

Module mémoire virtuel

Canaux virtuels Couche d’adaptation matérielle

(enveloppe)

Ressources de communication hiérarchiques (canaux virtuels)

(a) (b)

Figure 17. Vue conceptuelle des modules virtuels : (a) module de calcul, (b) module de mémorisation

L’adaptation des interfaces des modules mémoire et des interfaces des ressources de communication est assurée par l’enveloppe qui fournit des services de communication aux deux couches séparées. Dans cette thèse, nous réalisons cette enveloppe de communication en matériel et en logiciel. D’une part, la partie matérielle correspond aux adaptateurs matériels qui adaptent les modules mémoires aux réseaux de communication. D’autre part, la partie logicielle correspond aux pilotes d’accès qui adaptent le code de l’application aux processeurs cibles.

4.2. Port virtuel d'un module mémoire

Un port virtuel d'un module mémoire est le regroupement des ports internes et des ports externes de l’enveloppe de la mémoire. Un port interne correspond à un port du module et un port externe correspond à celui du canal de communication. Le nombre de ports internes est égal au nombre de ports du module, tandis que le nombre de ports externes est égal au nombre de canaux de communication. Une enveloppe connecte des ports internes et externes en nombres différents. Dans un port virtuel, nous pouvons avoir m ports internes et n ports externes (n, m sont des entiers naturels). Les ports internes et externes d’un port virtuel

peuvent être spécifiques à des niveaux d’abstraction différents ou liés à des scénarios de communication divers. Le contrôle de partage des ports et l’adaptation des protocoles de transfert de données entre ces ports sont assurés par la fonctionnalité de l’enveloppe. Comme l’indique la Figure 18, si la direction du port du module est "out" alors le port interne du port virtuel est de direction " in ". De la même façon, si le port d’un canal est de direction "in", alors la direction du port externe du port virtuel est l’opposé ("out"). Si un port d’un module ou d’un canal est maître (resp. esclave), alors le port correspondant du port virtuel est esclave (resp. maître). out in in out Port interne Ports externes Enveloppe Côté module Côté canaux de communication Port virtuel out in in out Port interne Ports externes Enveloppe Côté module Côté canaux de communication Port virtuel

Figure 18. Vue interne d’un port virtuel de module mémoire

4.3. Canal virtuel de communication

A chaque port virtuel est associé un et un seul canal hiérarchique appelé canal virtuel. Ce dernier regroupe tous les canaux de communication reliés aux ports externes d’un port virtuel. Un canal peut contenir des canaux abstraits ou/et des fils physiques. Les données véhiculées par un canal virtuel peuvent être une structure de données abstraites (trame d’entiers) ou/et une suite de valeurs binaires.

5. COLIF : modèle de représentation pour la spécification des interfaces