Vous êtes sur la page 1sur 18

Exercices en préparation du QUIZ INF8500 :

Bloc : Synthèse de haut niveau, pré-partitionnement et


partitionnement

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 1 de 18


Question 1 : Estimateur de la période pour du matériel

Soit le tableau 1.1 suivant:

Opération de Fréquence Délai de ti


type ti d’apparition de
ti
Addition 4 49
Multiplication 9 163

Tableau 1.1

a) Quel est avantage d’utiliser la méthode de la minimisation de la mobilité (slack


minimisation method) afin d’estimer la fréquence d’horloge d’un système, plutôt que
d’utiliser systématiquement la fréquence minimale (par exemple 1/163 dans le tableau
1.1).

b) Calculez la moyenne de la mobilité (average slack) pour la fréquence 1/63.

c) Considérant les 3 étapes de la synthèse de haut niveau : l’allocation, l’assignation et


l’ordonnancement, laquelle (ou lesquelles) de ces étapes l’algorithme qui fait
l’estimation de la période cherche-t-il à optimiser. Expliquez.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 2 de 18


Question 2 : Synthèse des communications

Considérez la spécification fonctionnelle en SpecC de la figure 2.1, sur laquelle X sera


implanté en logiciel et Y sera implanté en matériel. Nous n’avons pas vu SpecC en classe
mais il faut simplement se savoir que les états (Xi et Yi) sont des programmes (p.e.
équivalent à des modules SystemC) et qu’on passe d’un module à un autre si un certain
évènement (ei) se réalise ou encore lorsqu’une écriture se fait dans une variable (vi).
Finalement une flèche indique le début du programme X (Y) et un point la fin du
programme X (Y).

Figure 2.1

Expliquez pour chacune des étapes de la synthèse, le développement requis pour réaliser la
synthèse des communications (jusqu’au matériel) de cette spécification.

Donnez votre réponse sous la forme du tableau suivant.


Allocation
Assignation

Indications
 Mentionnez tous les composants de la plate-forme architecturale qui seront
requis.
 Parlez des mécanismes de communication que vous proposez, en incluant une
description précise de la synthèse des événements e1, e2, e4 et e5 et des
variables v1 à v4.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 3 de 18


QUESTION 3 CDFG et ASAP/ALAP

Soit le CDFG de la figure 3.1 :

n0
NOP

n6 n10
* n1 * n2 * * n8
+

n7 n11
n9
* + <
* n3

n4
-

- n5

n12
NOP

Figure 3.1

a) Considérez d’abord que le délai pour le multiplieur est de 2 cycles alors que celui de
l’unité arithmétique et logique est de 1 cycle. Ensuite, soit les contraintes temporelles (de
l’usager) suivantes :

1 L’opération n6 démarre au moins 1 cycle après le démarrage de n4


2 Les opérations n5 et n9 doivent démarrer en même temps
3 L’opération n9 démarre au plus 2 cycles après que l’opération n10 soit démarrer

a.1) Intégrez ces contraintes dans le CDFG de la figure 3.1 en redessinant un nouveau
DFG. Vous devez mettre les contraintes temporelles maximales en pointillées (voir annexe
au besoin).

a.2) À l’aide de l’algorithme de Lia et Wong, faites l’ordonnancement du CDFG obtenu en


a.1. Notez que l’opération NOP demande 0 cycle. Expliquez clairement votre démarche.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 4 de 18


Question 4 : Estimation logicielle et linéarisation d’un CDFG

a) Selon l’article «Constrained Software Generation for Hardware-Software Systems»


de Gupta et De Micheli, quelles parties de la synthèse logicielle, matérielle et des
communications sont couvertes dans l’algorithme qu’on y présente? Justifiez. (

b) Expliquez le schéma suivant (Figure 4.1) tiré de l’article de Gupta :

Figure 4.1

c) Si le graphe linéarisé de la figure 4.2 possède un spill set  de 1, déterminez


d’abord Rl (le nombre de registres alloués) puis les variables (dont le nom est
identifié sur les arcs entre les processus) qui déborderont de l’ensemble Rl.

Figure 4.2

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 5 de 18


d) Soit le résultat de linéarisation de la figure 4.3 étudié en classe:

Figure 4.3

Donnez le nombre de registres requis sur le processeur pour minimiser le nombre de


lectures et d’écritures en mémoire. De plus, puisqu’il n’y a aucune dépendance de
donnée entre v7 et v2, ne pourrait-on pas inverser l’ordre de ces derniers (v2 avant
v7) et respecter encore les contraintes? Expliquez.

e) Proposez un algorithme (existant) pour faire la linéarisation en ne considérant aucun


cycle positif dans le graphe.

f) Appliquez l’algorithme obtenu en e) au CDFG de la figure 4.4 :

NOP

+ + n2
n1

n3 n4 n5
* + *

n6
* +
+ n7 n8

NOP

Figure 4.4

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 6 de 18


Question 5 : Métriques et analyse de performance en général

a) Quel est le rôle exact des métriques de performance et de l’analyse dans une conception
de codesign logiciel/matériel? Expliquez brièvement.

b) Quelles différences existent-ils entre métriques de coût (cost metrics) et métriques de


performance? Expliquez brièvement.

c) Résumez dans vos mots la différence entre analyse statique et analyse dynamique.

d) Nommez un outil qui fait de l’analyse statique et un outil qui fait de l’analyse
dynamique.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 7 de 18


QUESTION 6: Estimateurs matériels
a) Soit la figure 6.1 qui représente le bloc de base (équation différentielle) d’un thread
SystemC et la figure 6.2.

while x  a do
x1 = x + dx;
u1 = u  3  x  u  dx  3  y  dx;
y1 = y  u  dx;
x = x1;
u = u1;
y = y1
end;

Figure 6.1 Bloc de base de l’équation différentielle

y
x
u u dx y u dx
3 x dx y x dx

* n1 * n2
+ n10

3 x1
e1 e2 e8
a

* n3 n6 * * n8
< n11

e3 e4

Résultat
- n4 * n7
+ n9 du while

e5 e6 e7

- n5

y1
u1

Figure 6.2 CDFG de l’équation différentielle

a) Donnez le ASAP et le ALAP de l’équation différentielle.

b) À partir du ALAP, faites l’assignation de ces variables à un nombre minimum de


registres en utilisant la méthode de partitionnement avec clique. Donnez un tableau

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 8 de 18


du temps de vie des variables en fonction des différentes étapes de contrôle ainsi
que le graphe à partir duquel vous déterminerez la clique.

c) Donnez l’ordonnancement selon l’algorithme du list scheduling en considérant


deux multiplieurs, un additionneur et un comparateur. Expliquez les différentes
étapes.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 9 de 18


QUESTION 7: Estimateurs matériels

a) Soit l’ordonnancement du graphe de flot de données suivant vu en classe pour


estimer le nombre de variables:
v1 v2 S0

op1 S1
+
v6 v4
v3

X op2 - op3 S2
v10 v5

v7

op4 op5 op6 S3


x + +

v8 v9
v11
op7 op8
- x S4

v1 v2

S5
Figure 7.1

a.1) Donnez le diagramme des opérations en fonction des étapes de contrôle

a.2) Sachant que l’addition et la soustraction sont sur une même unité
fonctionnelle, alors que la multiplication constitue une autre unité
fonctionnelle, montrez comment on peut à partir de ce diagramme estimer le
nombre d’unités fonctionnelles requises pour chaque type d’opération.

b) Soit le graphe de flot de donnée non ordonnancé de la figure 7.2. À l’aide de


l’algorithme de Liao et Wong (chemin le plus long), donnez le ASAP (As Soon As
Possible) de ce graphe. Montrez bien chaque itération de l’algorithme de Liao et
Wong. Une fois terminé donnez aussi le ALAP (As Late As Possible).

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 10 de 18


Figure 7.2

c) Même question qu’en b) mais pour le graphe de la figure 7.3

2 2

2
1 2

5 1
5

3 4 5
4
3 3
3 4

7 8 -6
-3 6
1
1 1

Figure 7.3

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 11 de 18


Question 8 : Estimateurs matériels

a) Appliquez la méthode operator-use pour estimer le nombre d'étapes de contrôle du


bloc d'instructions ci-après. Considérez que la période d'horloge est de 25 ns et que
1 multiplieur (délai de 100 ns) et 2 additionneurs (délai de 50 ns) seront utilités pour
réaliser ce design.

A := B + (C * 3);
B := B + C + D;
E := A * A;
X := C + D + Y;
D := A + E + B;

b) Soit une spécification qui utilise 8 variables V1 à v8 et dont l’ordonnancement se


réalise en 8 étapes de contrôle S0 à S7. Faites l’assignation de ces variables à un
nombre minimum de registres en utilisant la méthode de partitionnement avec
clique (clique-partitioning). Le temps de vie des variables est donné par le tableau
8.1.

S0 S1 S2 S3 S4 S5 S6 S7
V1 X X X X
V2 X X X
V3 X X X X
V4 X X
V5 X X
V6 X X
V7 X X
V8 X X

Tableau 8.1 Temps de vie de 8 variables à travers 8 étapes de contrôle.

c) Comment pourrait-on modifier la méthode operator-use afin de déterminer le nombre


d’étapes de contrôle lorsque des opérations sont réalisés avec unités fonctionnels
pipeliné? Expliquez.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 12 de 18


Question 9: Estimateurs matériels et synthèse matérielle

Soit l’expression suivante : y = ((( a * b) / (c * d)) + e )+ (f * g) - (h + i + j)

Considérant une librairie matériel composez de deux opérateurs: 1) le multiplicateur/diviseur


qui demande 2 cycles pour une multiplication et trois cycles pour une division et 2)
l’additionneur/soustracteur qui demande 1 cycle en tout temps.

a) traduisez cette boucle en un DFG et faites le ASAP et le ALAP du graphe en considérant


aucune restriction sur la quantité de ressource. À coté de chaque nœud du résultat ALAP,
indiquez sa mobilité.

b) à partir de a), déterminez un ordonnancement basé sur l’algorithme avec contraintes de


ressource (list scheduling), en considérant deux multiplieurs/diviseurs et deux
additionneurs/soustracteurs.

c) à partir de a), déterminez un ordonnancement basé sur l’algorithme avec contraintes de


ressource (list scheduling), en considérant un multiplieur/diviseur et un
additionneur/soustracteur.

d) appliquez la méthode operator-use pour estimer le nombre d'étapes de contrôle du bloc en


considérant deux multiplieurs/diviseur et deux additionneurs/soustracteurs.

e) appliquez la méthode operator-use pour estimer le nombre d'étapes de contrôle du bloc en


considérant un multiplieur/diviseur et un additionneur/soustracteur.

f) à partir des résultats précédents (et de ce que nous avons vu en classe) comparez
l’algorithme d’ordonnancement avec contraintes de ressource versus la méthode operator-
use d’un point de vue exactitude et analyse de complexité (temps de calcul).

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 13 de 18


Question 10 : Exploration architecturale vs partitionnement

a) Quelles différences existent-ils l’exploration architecturale et le partitionnement.

b) Quels sont les avantages de procéder à l’exploration architecturale en se basant sur une
plate-forme.

c) Expliquez la figure 10.1 qui résume aussi l’exploration architecturale basé sur une
plate-forme.

Figure 10.1

d) Expliquez

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 14 de 18


QUESTION #11 TLM et raffinements
a) Décrivez en quelques lignes ce qu’est un modèle transactionnel (TLM)

b) En vous inspirant de la figure 11.1, définissez les principales variantes du TLM.

Communication

Cycle-
timed
D F

Approximate-
timed
C E

Un-
timed
A B
Computation
Un- Approximate- Cycle-
timed timed timed

Figure 11.1

c) Soit un modèle comportemental composé d’un testbench et d’un DUT (Design Under
Test):

c.1) Sachant que le module testbench et le module DUT communique par un bus
transactionnel qui modélise les délais de transaction et qui utilise un sc_mutex pour
assurer l’exclusion mutuelle de la ressource d’une requête. Où se situe alors sur la
figure 11.1 le modèle correspondant à ce système. Justifiez votre réponse.

c.2) Sachant que le module testbench et le module behavior communique par un


bus transactionnel qui modélise les délais de transaction ainsi que l’arbitration du
bus. Où se situe alors sur la figure 11.1 le modèle correspondant à ce système.
Justifiez votre réponse.

d) Dans le processus de raffinement, décrivez les principales transformations pour passer :

 du point A au point C,
 du point C au point D,
 du point C au point E et
 du point C au point F.

e) Nous avons vu en classe l’implémentation derrière le schéma de la figure 11.2.


Expliquez comment on peut modifier cette figure afin de simuler une version cycle
accurate de m_iquant avec une version TLM de m_table.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 15 de 18


Figure 11.2

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 16 de 18


QUESTION #12 Synthèse comportementale vs synthèse ESL

a) Qu’est-ce que la synthèse comportementale?

b) Où se trouvent sur la figure 11.1 du numéro précédent le niveau comportemental.

c) Même question qu’en b) mais pour un niveau RTL.

d) Résumez dans vos mots la différence entre un code comportemental et un code RTL

e) En quoi la synthèse ESL améliore-t-elle la synthèse comportementale.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 17 de 18


QUESTION #13 Estimateurs matériels

Soit l’algorithme du calcul de la racine carrée (Figure 13.1a) pour lequel on a déterminé le
nombre de variables et le nombre d’unités fonctionnelles (Figure 13.1b).

a) Donnez le tableau complet de l’utilisation des interconnexions entre les registres et


les unités fonctionnelles, en fonction des étapes de contrôles.
b) Faites le partitionnement par clique pour déterminer le nombre de bus minimal.

UF1 = [abs(a),max] R1 = [a,t1,x,t7]


UF2 = [abs(b),min,+,-] R2 = [b,t2,y,t3,t5,t6]
UF3 = [>> 1] R3 = [t4]
UF4 = [>> 3]

Sources et
destinations des
connexions

a) b)

Figure 13.1 a) Algorithme de la racine carrée par approximation de Newton et b) chemin


de données après assignation des registres et des unités fonctionnelles.

INF8500 Exercices: Synthèse de haut niveau, pré-partitionnement et partitionnement 18 de 18