Vous êtes sur la page 1sur 24

Architectures matérielles dédiées

Architectures matérielles dédiées (dedicated µP)


---- Implémentation matérielle ----
1. Introduction
La conception d'un circuit numérique démarre à partir de la description de son comportement (son
algorithme d'interprétation).

Plusieurs outils ont été réalisés pour automatiser cette phase de conception connue sous le nom de
synthèse architectural ou synthèse de haut niveau. Nous pouvons citer:
- L'outil AMICAL développé par le laboratoire TIMA (INPG), maintenant intégré dans les outils de
TNI Valiosys
-Le système ALLIANCE développé par le laboratoire ASIM (Université Paris 6)
- L'outil CATHEDRAL développé à l'IMEC (Université de Leuven (Belgique)), spécialisé pour la
conception des circuits de traitement du signal, devenu N2C de Coware
Ces outils produisent des circuits raisonnablement optimisés. Ils opèrent en adaptant un motif
générique au problème particulier. Ils sont considérés comme plus puissants que les outils qui partent
d'un schéma fonctionnel, puisqu'ils démarrent leur travail à partir de la description du comportement
du circuit à réaliser et non d'une structure déjà imaginée par le concepteur.
Dans ce cours nous nous intéressons plus particulièrement à l’aspect architecture et conception au
niveau RTL sans faire recours aux outils de synthèse de haut niveau. Nous commençons par construire
manuellement l’architecture des modules matériels à concevoir pour une meilleure maîtrise des
aspects architectural et des techniques de conception des modules numériques (dédiés ou à usage
général -µp). Ces derniers sont basés sur l’association des composants numériques de base pour
constituer des systèmes qui répondent aux besoins fonctionnels du concepteur. Ceci selon les
différentes approches de mise en œuvre des traitements numériques (câblé ou programmé). Dans ce
cours nous allons nous intéresser aussi à l’analyse de performances des architectures proposées.
2. Architecture générale d’un module matériel
La démarche générale de conception consiste à diviser le circuit à réaliser en deux parties qui sont
spécialisées, l'une pour la manipulation et la transformation des données (appelée chemin de donnée)
et l'autre pour le séquencement (appelée contrôleur ou séquenceur).

Cours proposé par Abdessalem Ben Abdelali Page 1


Architectures matérielles dédiées

Décomposition d'un circuit complexe en un séquenceur et un chemin de données

L’unité de contrôle (séquenceur) est une machine séquentielle dont les entrées sont les tests issus du
chemin de données et les sorties les commandes qu'elle lui envoie. Elle est responsable de contrôler
toutes les opérations du chemin de données en générant les signaux de contrôle appropriés aux bons
moments. A chaque cycle d’horloge l’unité de contrôle se trouve dans un état. Son évolution se fait en
passant d’un état à l’état suivant au front actif de l’horloge. Elle correspond à une machine à états finis

3. Performance d’un module matériel dédié et exploration architecturale


Avant de commencer la conception nous présentons les définitions des termes suivants qui
caractérisent un module matériel :
- L’ensemble de données d’entrée (input dataset) d’un chemin de données représente les
valeurs des entrées extérieures utilisées pour effectuer les calculs.
- L’ensemble de données de sortie (onput dataset) d’un chemin de données représente les
sorties obtenu par les calculs sur une donnée d’entrée.
Dans le chemin de données implémentant l’équation suivante, l’ensemble de données d’entrée
(input dataset) est composé de Ca, Cb et F, alors que L’ensemble de données de sortie (input
dataset) est composé de Cnew.

Cnew = Ca × F + Cb × (1 − F)

- La latence (The latency) d’un chemin de données mesure le nombre de cycles d’horloge
nécessaires pour terminer le calcul sur une donnée à l’entrée du système.
- Le temps de calcul (total computation time) est égal à la latence multipliée par la période
d’horloge.
- La periode d’initiation (initiation period  cadence) mesure le nombre de cycles d’horloge
nécessaires entre une donnée et la donnée suivante
- Le débit (throughput) d’un chemin de données représente le nombre de données d’entré
traitées par unité de temps. Baisser la période d'initiation (fournir plus souvent de données à
l'entrée) ou diminuer la période de l'horloge augmente le débit.

Les contraintes d’un chemin de données déterminent le choix de l’architecture. Ces


Contraintes concernent plus particulièrement le temps et la surface (nombre de portes). Le
concepteur est demandé de concevoir un système qui effectue les calculs dans le minimum de
temps et aussi qui utilise un nombre minimum de portes logiques. Cependant, ces deux
contraintes sont souvent contradictoires puisque effectuer les calculs en moins de cycles
d’horloge nécessite habituellement plus d’unités de traitement pour pouvoir effectuer les
calculs de façon parallèle, ce que nécessite plus de portes logiques. Nous spécifions souvent la

Cours proposé par Abdessalem Ben Abdelali Page 2


Architectures matérielles dédiées

contrainte temps seulement par la latence et la période d’initiation qui sont mesurées en cycles
d’horloge. Nous n’utilisons pas la période d’horloge car elle dépend de la technologie
d’implémentation (exemple une famille particulière d’FPGA).
Plusieurs solutions architecturales peuvent être proposées pour l’implémentation d’un
traitement donné. Ces solutions présentent différentes performances (surface, temps) l’étude
et le choix de solution s’inscrit dans le cadre de l’étape d’exploration architecturale dont le but
et d’assurer un meilleur compromis entre surface et latence pour répondre au mieux aux
contraintes imposées. Le chois d’une solution ou autre dépend de l’application visée.
L’exemple suivant montre trois différentes architectures du chemin de données correspondant
à l’équation Y avec différentes performances en terme de surface et de temps.
Y = (A * B) + (C * D) + (E * F) + (G * H);

4. Etude d’un exemple de chemin de données : architectures et


performances
Soit à implémenter l’équation suivante (The Blend Equation) :

Cnew = Ca × F + Cb × (1 − F)

Avec la valeur de couleur Cnew, Ca et Cb sont au format 0.8 en virgule fixe (8 bits), c € [0–
1.0)  0 ≤ C < 1.0, et F est codé sur 9 bits, F € [0.0–1.0]  0 ≤ F ≤ 1.0

Le graphe flot de données correspondant est le suivant :

Cours proposé par Abdessalem Ben Abdelali Page 3


Architectures matérielles dédiées

La figure suivante donne une implémentation directe du graphe flot de données (DFG) : cette
implémentation est simplement une assignation un à un des noeuds du DFG à des unité
d’exécution.

Tmin = 0.4 + 2 + 1 + 0.1 + 0.1 =


3.6
L = 1 cycle
C = 1 cycle
Débit = 1 / 3.6
Tex-100ech = 100 x T = 100 x
3.6

Le délai combinatoire le plus long à travers ce chemin de données est 0.4+2.0 + 1.0 = 3.4
unités de temps. La période d’horloge du système est donc au moins :

Tcq (register clock-to-q delay) + 3.4 + Tsu (register setup time) = 3.6 unités de temps

Avec Tcq et Tsu = 0.1 et en supposant que les entrées et les sorties du chemin de données
sont synchronisées (registred).

La figure suivante donne une meilleure implémentation. Ceci en introduisant des registres de
pipeline pour couper les longs chemins combinatoires. Le plus long chemin tR2R est de 2.6
qui est plus court que le plus long chemin combinatoire dans la solution précédente. Ceci
permet une fréquence d’horloge plus élevée. Le timing cycle-par-cycle de cette deuxième
implémentation est donné par le chronogramme suivant. La latence du chemin de données
utilisé est de 2 cycles. Selon le fonctionnement donné par le chronogramme la période
d’initiation est de 2 cycles d’horloge puisque les nouvelles valeurs des entrées sont appliquées
chaque 2 cycles. Mais en réalité cette solution architecturale supporte une période d’initiation
de seulement un cycle comme le montre le deuxième chronogramme. Ceci en exploitant le
pipeline introduit par les registres utilisés. Grâce à ce pipeline une sortie sera générée à
chaque cycle d’horloge.

Cours proposé par Abdessalem Ben Abdelali Page 4


Architectures matérielles dédiées

Tmin = 0.1 + 0.4 + 2 + 0.1 = 2.6


L = 2 cycles
C = 1 cycle
Débit = 1 /2.6
Tex-100ech = 1 x 2 + (99 x 1) = 101 x
2.6

Cours proposé par Abdessalem Ben Abdelali Page 5


Architectures matérielles dédiées

Dans cette solution d’implantation nous observons que les chemins tR2R n'ont pas été
équilibrées ce qui est indésirable comme le plus long chemin tR2R détermine la période de
l'horloge. Distribuer les délais de façon plus équilibrée permet de produire une période
d'horloge plus petite. Dans le cas de notre exemple on note que le chemin de délai le plus long
contient l’unité de calcul de 1-F et les unités de multiplication, avec le multiplicateur qui a le
plus long délai. Une étape de pipeline à introduire dans le multiplicateur (par l’insertion de
DFFs) permettra de réduire la longueur de ce chemin.
La figure suivante représente une implémentation modifiée en utilisant le multiplieur pipeliné.
Le plus long délai tR2R a été réduit de 2.6 à 1.6 avec une latence d’un cycle de plus. Le
chronogramme de cette solution diffère de celui de la solution suivante seulement par un
cycle d’horloge supplémentaire pour la latence.

Tmin = 0.1 + 0.4 + 1 + 0.1 = 1.6


L = 3 cycles
C = 1 cycle
Débit = 1 /1.6
Tex-100ech = 1 x 3 + (99 x 1) = 102 x 1.6

Cours proposé par Abdessalem Ben Abdelali Page 6


Architectures matérielles dédiées

Le tableau suivant donne une comparaison entre les chemins de données discutés jusqu’à
maintenant relativement à la période d’horloge, la latence, la période d’initiation et le débit.

Chemin de PERIODE PERIODE


données CLOCK LATENCE INITIATION DEBIT

(a) 3.6 1 1 0.28


Solution 1
(b) 2.6 2 2 0.19
Solution 2
(c) 2.6 2 1 0.38
Solution 2.2
(d) 1.6 3 1 0.63
Solution 4

Le débit mesure le nombre d’entrées traitées par unité de temps. Il est calculé par la formule
suivante (en supposant que le pipeline est rempli) :

La diminution soit de la période d’initiation ou de la période d’horloge permet d’améliorer le


débit. Cependant, la diminution de la période d’initiation nécessite généralement des
ressources matérielles supplémentaires et la diminution de la période d’horloge en pipeliniant
les unités d’exécution augmente la latence du chemin de données.

 Implémentation avec un seul multiplieur

Les chemins de données présentés jusqu’à ce point associent à chaque nœud du DFG une
unité d’exécution séparée. Cependant, dans des chemins de données plus complexes, les
contraintes sur les ressources matérielles nécessitent le mappage de plusieurs nœuds à une

Cours proposé par Abdessalem Ben Abdelali Page 7


Architectures matérielles dédiées

même unité de traitement. Dans la solution suivante nous considérons un ordonnancement


utilisant un seul multiplieur.
Partager l’unité de multiplication pose des nouveaux problèmes de conception du chemin de
données :
- le changement des opérandes dépend maintenant de l’horloge. Au clock cycle N°0 les
opérandes du multiplieur sont Ca et F, alors qu’au clock cycle N°1 les opérandes sont
Cb et 1-F. ceci nécessite l’utilisation d’un MUX à chaque entrée du multiplieur pour
choisir entre les deux ensembles d’opérandes
- un registre est nécessaire pour sauvegarder le résultat obtenu au cycle 1. ce résultat
sera utilisé au cycle 2 par l’unité d’addition (n4)
La figure suivante représente un chemin de donnée qui implémente cet ordonnancement. Ce
chemin de données utilise des registres pour couper les chemins combinatoires et pour
sauvegarder les résultats intermédiaires. Chaque registre admet une entrée load (LD) ; le
registre n’accepte une nouvelle valeur que lorsque LD est valide au front actif de l’horloge.
Le chemin de données obtenu présente une latence de 3 et une période d’initiation de 3 (sans
exploitation de pipeline)

Une machine à états finis permet de générer les signaux de contrôle nécessaire aux cycles
d’horloge appropriés : msel, ld n2, ld n3 et ld cnew. Elle constituée de trois états puisque les
opérations du chemin de données est un calcul répétitif qui couvre trois cycles de l'horloge.

Cours proposé par Abdessalem Ben Abdelali Page 8


Architectures matérielles dédiées

 Implémentation avec HANDSHAKING

Dans l’exemple précédent nous avons supposé que le flux de données d’entrée est continu.
Cependant, dans plusieurs cas le chemin de données doit attendre que les données d’entrée
soient disponibles et doit aussi donner une indication lorsque la sortie soit disponible. Des
signaux additionnels appelés signaux de handshaking sont utilisés par l’FSM pour cette
raison. Dans ce cas l’FSM reste dans l’état S0 jusqu’à ce que l’entrée irdy soit activée pour
indiquer que le bus d’entrée contient une donnée valide. Le signal ordy est activé pour un
cycle d’horloge lorsque une donnée valide est placée sur le bus de sortie Cnew. Le signal
ldcnew est activé dans l’état S2 pour un cycle d’horloge.

Cours proposé par Abdessalem Ben Abdelali Page 9


Architectures matérielles dédiées

Cours proposé par Abdessalem Ben Abdelali Page 10


Architectures matérielles dédiées

 Implémentation avec un Bus partagé

Dans les implémentations précédentes nous avons utilisé des bus séparés pour F, Ca et Cb.
Cependant, les buses sont aussi des ressources importantes comme pour les unités de
traitement et le concepteur peut ne pas avoir la possibilité d’utiliser des bus séparés pour les
différentes entrées. En fait, les pins externes d’un circuit intégré des ressources extrêmement
précieuses et ils sont souvent multiplexé dans le temps entre différentes fonctions.
L’architecture de la figure suivante donne une implémentation avec un bus partagé pour entrer
successivement les valeurs de F, Ca et Cb (une valeur à chaque cycle). Nous utilisons un
ordonnancement avec une latence = 4 et une période d’initiation = 4. Seulement un
multiplieur est utilisé. Ce dernier reste au repos pendant le cycle i+0 puisque la valeur de Ca
n’est pas encore disponible. Un nouveau registre rF est utilisé pour retenir la valeur de F qui
est demandé pour les calculs des noeud n2 et n3 aux clocks i + 1 et i + 2. Dans
l’implémentation précédente nous avons supposé que la valeur de F reste disponible sur un
bus de donnée séparé pendant la duré du calcul.

Cours proposé par Abdessalem Ben Abdelali Page 11


Architectures matérielles dédiées

5. Chemins de données : types et éléments fonctionnels


Le chemin de données permet d’effectuer toutes les opérations à réaliser sur les données. Il
inclue (1) des unités fonctionnelles tq les additionneurs, les multiplieurs, les ALUs, les
comparateurs, etc. (2) des registres et d’autres éléments de mémorisation pour le stockage
temporaire des données et (3) des bus et des multiplexeurs pour le transfert de données entre
les différents composants dans le chemin de données. Les données externes sont introduites
au chemin de données par les lignes d’entrée et les résultats des calculs sont fournis à travers
les lignes de sortie.
Au niveau RTL on se focalise sur comment les données passe d’un registre à un autre registre
à travers certain unités fonctionnelles ou elles sont modifiées. Dans la phase de conception
nous avons besoin de décider sur les questions suivantes :
• Quels types de registres à utiliser et de combien de registre nous avons besoin?
• Quels types d’unités fonctionnelles à utiliser et de combine nous avons besoin?
• Est ce que certaines unités fonctionnelles peuvent être partagées entre deux opérations ou
plus?
• Comment les registres et les unités fonctionnelles sont connectés ensemble de tel sorte
que touts les transferts de données spécifiés par l’algorithme à implémenter soient
réalisés.
Soit par exemple un problème qui nécessite l’addition de deux nombres, le chemin de données
doit par conséquence contenir un additionneur. Si le problème nécessite le stockage
temporaire de trois variables, le chemin de données doit disposer de trois registres.
Cependant, avec ces besoins, il existe plusieurs options pour implémenter le chemin de
données. Par exemple, un additionneur peut être implémenté comme un circuit unique ou
comme partie d’une UAL. Une même unité fonctionnelle peut être utilisée plusieurs fois. Les
registres peuvent être des unités séparées ou combinés dans une table de registres. En plus
deux variables temporaires peuvent partagées le même registre s’il ne sont pas utilisées au
même temps

Soient les exemples suivants de chemin de données simples permettant de réaliser


respectivement les opérations (a) A = A + 3; (b) A = B + C, (c)et (c’) A = A + 3 et A = B + C

(a) (b)

Cours proposé par Abdessalem Ben Abdelali Page 12


Architectures matérielles dédiées

(c)

(c’ : chemin de données pour effectuer A = A + 3 et A = B + C en utilisant un seul


additionneur)

Pour mettre le chemin de données en exécution nous devons lui fournir les signaux de
contrôle appropriés aux moments appropriés. On se réfère au mot de contrôle comme étant
l’ensemble des signaux de contrôle nécessaires pour commander le fonctionnement du chemin
de données. Une opération de transfert de registre est donc déterminée par les valeurs des bits
du mot de contrôle. Chaque opération définie par un mot de contrôle prend un cycle d’horloge
pour être effectuée. En combinant plusieurs mots de contrôle dans une certaine séquence, le
chemin de données va réaliser les opérations spécifiées dans l’ordre désiré. La spécification
de la séquence de contrôle est définie sous forme d’une FSM.

Exemple : l’architecture (c’) admet deux signaux de contrôle ALoad et Mux. Les mots de
contrôle pour exécuter l’opération A=A+3 et l’opération A=B+C sont donnés par le tableau
suivant :

Cours proposé par Abdessalem Ben Abdelali Page 13


Architectures matérielles dédiées

Mot de
opération ALoad Mux
Contrôle
1 A= A+ 3 1 1
2 A= B+ C 1 0

5.1. Sélections des éléments du chemin de données


 Sélection de Registres
Dans la plus part de situations un registre est utilisé pour chaque variable de l’algorithme à
implémenter. Cependant, si deux variables ou plus partagent le même registre les connections
pour le transfert de données deviennent plus complexes. Dans le cas de multiples destinations
nous pouvons tous simplement connecter toutes les destinations à la même source sans oublier
ici le problème de fun out. Dans le cas de multiples sources l’utilisation d’un MUX pour
sélectionner l’un de ces sources est nécessaire. La figure suivante montre un circuit avec un
registre à deux sources.

Une fois on a décidé sur le nombre de registres à utiliser, il nous reste à déterminer si on va
utiliser une unique table de registres avec suffisamment d’emplacement mémoire, des
registres séparés ou un mélange de deux. De plus, des registres avec des fonctions spéciales
peuvent être utilisés, comme par exemple les registres à décalage et les compteurs. Exemple,
si l’algorithme admet une boucle FOR, un seul compteur peut être utilisé à la fois pour stocker
la variable et incrémenter le comptage. De cette façon on ne réduit pas seulement le nombre
de composants, mais aussi les ressource de connections entre les composant. La décision sur
la sélection du type de registres à utiliser va donc affecter la manière dont les connections de
transfert de données entres les registres et les unités fonctionnelles sont connectés.

 Sélection des unités fonctionnelles

Par exemple, si un algorithme exige l'addition de deux nombres, alors le chemin de données
doit inclure un additionneur. Cependant, nous avons besoin encore de décider si on utilise un
additionneur dédié, une combinaison d’additionneur-soustracteur ou une UAL. Ces questions
peuvent être répondues en sachant de quelles autres opérations on a besoin pour l'algorithme.
Si l'algorithme a seulement une addition et une soustraction, alors vous pouvez utiliser l'unité
combinant un adiitioneur-soustracteur. De l'autre côté, si l'algorithme exige plusieurs
opérations d’addition, est-ce que nous utilisons juste un additionneur ou plusieurs
additionneurs? Utiliser un additionneur peut diminuer la taille du datapath en terme de
nombre d’unités fonctionnelles mais il peut aussi augmenter la taille du datapath en terme de
surface parce que des chemins de transfert plus complexes sont nécessaires.
Par exemple, si l'algorithme contient les deux opérations d’addition suivantes:

a=b+c;d=e+f

Cours proposé par Abdessalem Ben Abdelali Page 14


Architectures matérielles dédiées

L’un des deux architecture suivantes peut être adoptée : architecture avec un seul additionneur
ou architecture à deux additionneurs.

Le deuxième datapath exige deux signaux du contrôle de plus pour les deux multiplexeurs.
Quant à la vitesse d'exécution, le chemin de données avec deux additionneurs peut exécuter
les deux additions simultanément dans le même cycle de l'horloge, puisqu'ils sont
indépendants l'un de l'autre. Cependant, le chemin de données à un seul additionneur doit
exécuter séquentiellement ces deux additions dans deux cycles d'horloge différents. La
dernière décision reste au concepteur.

 Méthodes de transfert de données (connexion entre les registres et les


unités fonctionnelles)

Les multiples Sources


Si l'entrée à une unité a plus qu'une source, alors un multiplexeur peut être utilisé pour
sélectionner lequel parmi les multiples sources à utiliser. Les sources peuvent être des
registres, des valeurs constantes, ou des résultats d'autres unités.

Multiples Destinations
Une source qui a des multiples destinations n'exige aucun circuit supplémentaire. Une source
peut être connectée à différentes destinations directement et toutes les destinations qui n’on
pas besoin de données transmis ignorent simplement la source du données.

Bus trois états


Multiples sources et destinations peuvent être connectées au même bus de données en utilisant
des buffers trois-états comme le montre l’exemple de la figure suivante.

Cours proposé par Abdessalem Ben Abdelali Page 15


Architectures matérielles dédiées

 Génération de signaux d’état

Le chemin de données doit fournir au contrôleur les résultats de tests conditionnels pour lui
permettre de déterminer l’opération qui sera exécutée à l’étape suivante. Chaque test
conditionnel de l’algorithme nécessite un signal d’état. Les signaux d’état sont généralement
générés par des comparateurs.

Exemple1: si l’algorithme contient l’instruction IF suivante : IF (A = 0) THEN …

Exemple1: si l’algorithme contient l’instruction IF suivante: IF (A is an odd number) THEN …

5.2. Chemin de données dédié et Chemin de données général


Nous pouvons distinguer deux types de chemins de données : dédié ou général

Exemples de chemins de données dédiés

 Exemple 1: Simple IF-THEN-ELSE

Cours proposé par Abdessalem Ben Abdelali Page 16


Architectures matérielles dédiées

Algorithm for solving the simple IF-THEN-ELSE problem of Example 1


1 INPUT A
2 IF (A = 5) THEN
3 B = 8
4 ELSE
5 B = 13
6 END IF
7 OUTPUT B

Dedicated datapath for solving the simple IF-THEN-ELSE problem of Example 1

Control words for solving the simple IF-THEN-ELSE problem of Example 1

 Exemple 2: Contage 1 à 10
1 i = 0
2 WHILE (i#10){
3 i = i + 1
4 OUTPUT i
5 }

Cours proposé par Abdessalem Ben Abdelali Page 17


Architectures matérielles dédiées

Exemple de chemins de données général

Exemple de mot de contrôle : pour charger une valeur de l’entrée externe au registre

Utilisation de ce chemin de données général

1 i = 0
2 WHILE (i#10){
3 i = i + 1
4 OUTPUT i
5 }

Cours proposé par Abdessalem Ben Abdelali Page 18


Architectures matérielles dédiées

6. Modules matériels dédiés (dedicated µP) : chemin de données +


contrôleur (FSM)

 Exemple 1: Contage 1 à 10

Cours proposé par Abdessalem Ben Abdelali Page 19


Architectures matérielles dédiées

Cours proposé par Abdessalem Ben Abdelali Page 20


Architectures matérielles dédiées

 Exemple 2 : Sommation de Nombre en entrée

1 Sum = 0
2 begin loop
3 input X
4 Sum = Sum + X
5 if (X = 0) then
6 exit loop
7 end if
8 output X
9 end loop
10 output Sum

Cours proposé par Abdessalem Ben Abdelali Page 21


Architectures matérielles dédiées

Cours proposé par Abdessalem Ben Abdelali Page 22


Architectures matérielles dédiées

Cours proposé par Abdessalem Ben Abdelali Page 23


Architectures matérielles dédiées

Cours proposé par Abdessalem Ben Abdelali Page 24

Vous aimerez peut-être aussi