Upload
dinhtruc
View
270
Download
1
Embed Size (px)
Citation preview
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 1
PLAN
1. Optimisations algorithmiques 2. Synthèse architecturale
2.1. Introduction 1. Avantages de la synthèse architecturale 2. Synthèse architecturale vs. synthèse logique/RTL
2.2. Techniques de synthèse 2.3. Outils de synthèse comportementale
3.4. Exemples de synthèse
EII3/M2R - 2
ENTITY fir ISPORT (xn:IN INTEGER; yn:OUT INTEGER);
END fir;
ARCHITECTURE behavioral OF fir ISBEGIN
PROCESSVARIABLE H,x: vecteur;VARIABLE tmp: INTEGER;
BEGINtmp := xn * H(0);FOR i IN 1 TO N-1 LOOP
tmp := tmp + x(i) * H(i);END LOOP;yn <= tmp;FOR i IN N-1 DOWNTO 2 LOOP
x(i) := x(i-1);END LOOP;x(1) := xn;
WAIT FOR cadence;END PROCESS;
END behavioral;
High-Level Synthesis (VHDL->VHDL)
2 1
4 3
5
EII3/M2R - 3
#define N 16 int main(int xn) {
int tmp;int H[N] = {98,-39,-327,439,950,-2097,
-1674,9883, 9883,-1674,-2097, 950,439,-327,-39,98};
int X[N];control i;
tmp = xn * H[N-1];for (i=1; i<N; i++) {
tmp += X[i] * H[N-i-1];}for (i=0; i<N-2; i++) {
X[N-1-i] = X[N-2-i];}x[1] = xn;
return tmp;}
High-Level Synthesis (C->VHDL)
2 1
4 3
5 EII3/M2R - 4
RTL Code SC code
RTL to layout
System Analysis
Algorithm
GDS2 C/C++
SystemC Code
Design model
Target
Asic High Level Synthesis
Technology files (Standard Cells + RAM cuts)
Formal proof
(sequential equivalence checking)
High Level Synthesis flow
[T. Michel, STMicroelectronics]
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 2
EII3/M2R - 5
Algorithm
RT-Blocks
Gate-Netlist
Layout
• Module Selection • Scheduling • Allocation • Binding • Register Sharing • Memory Inference • Pipelining / Retiming
High Level Synthesis
Logic Synthesis
RTL Synthesis
Logic
• Resource Sharing • Arithmetic Optimiization • Pipelining • Datapath Compilation
• FSM optimization • Redundancy Removal • Logic Structuring • Logic Minimization • Technology Mapping
Simulation
Formal Verification
or
BEHAVIORAL
ARCHITECTURAL
LOGIC
GATE
Niveaux de conception Techniques
EII3/M2R - 6
Module Selection Scheduling Allocation Binding Register Sharing Memory Inference Pipelining / Retiming
Instructions Operations
Variables / Signals Arrays
Constraints
Functional Units Registers Memory Multiplexers Interconnections
Définition § Synthèse de haut niveau (ou comportementale ou
architecturale) signifie passer d’une spécification algorithmique du comportement à une description de la structure qui l’implémente.
EII3/M2R - 7
Avantages § Réduction du temps de conception § Exploration de l'espace de recherche § Réduction de la taille des spécifications
• 10x par rapport au RTL, moins d'erreurs • Codage plus naturel • Simulation plus facile et plus rapide (20x)
§ Silicium par les concepteurs systèmes § Indépendant de la technologie
• Circuit portable
§ Prise en compte de contraintes à un plus haut niveau • Placement/routage, consommation, test
EII3/M2R - 8
WiFi/WiMax 64/2K,1K, 512 (13bits) 20 Ms/s 65 nm
2K, 1K, 512 128, 64 points
FFT/iFFT (various bit precision)
C++ Generic Model Digital ODU 2K points (12bits) 2 Gs/s 65n, 45 nm
Better Reusability of High Level Models
UWB 128 points (11bits) 528 Ms/s 90nm
Example: FFT at STMicroelectronics
[T. Michel, STMicroelectronics]
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 3
EII3/M2R - 9
for ( int i=0 ; i<N ; i++) accum + = data [i] * coef [i]
x x x x
+
+ + x +
S1 S2 S3 S4 S5 S6 S7 S8 S9 Latency time
Area total
Are
a
220.0
98675.2 98675
VHL & Verilog RTL Output
SystemC TLM Output
AUTOMATIC VERIFICATION
Raising the abstraction level we obtain:
Gain Productivity in design time (4x-5x the first time, >10X afterwards)
Explore different architecture (trading off area / throughput / performances)
From Algorithm to Silicon
Ai . Xi i=0
N-1
[T. Michel, STMicroelectronics] EII3/M2R - 10
-- X et Y sont supposés être des tableaux d'entiers de dimension N -- S est un signal entier compatible avec la définition de la variable Z P_calcul : process
variable Z : integer16; begin wait until H_cycle = '1'; -- conditions d'horloge Z := 0; -- initialisation for i in X'range loop -- N itérations Z := Z+ X(i) * Y(i); -- multiplications accumulations end loop; S <= Z; -- sortie du résultat synchrone de l'horloge H_cycle end process P_calcul;
Synthèse Logique Synthèse Architecturale
X X X
+
••• X
+
Z-1
Contrôle
Logique/RT vs Architecturale
2.2 Techniques de synthèse de haut niveau
2.1 Compilation 2.2 Modèle d’architecture 2.3 Sélection - Allocation 2.4 Ordonnancement 2.5 Allocation
EII3/M2R - 12
Compilation 1 Transformations 2
Scheduling 4 Allocation (Binding, Selection) 5
Architecture Model 3
Optimisations 6
Control Generation 7 Data-Path Generation 8
Techniques de Synthèse
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 4
EII3/M2R - 13
CDFG
Compilation Transformations
Mémoire
Ordonnancement
Assignation Optimisation
Sélection
Traitement Contrôle Mémoire
Interface
Spécification
Allocation
Modèle architectural
Anatomie d’un outil HLS
Bibliothèque
EII3/M2R - 14
2.2 Modèles architecturaux § Modèle générique : architecture mono-processeur type DSP,
ou multiprocesseur type réseau systolique § Modèle opérateur : tout opérateur ne sait accomplir qu'une ou
plusieurs fonctions § Modèle d'interconnexion : bus, ou chemins de transfert point
à point § Modèle de mémorisation : système externe à la partie
opérative, registres en nombre suffisant, mémoires hiérarchisées ou non, un ou plusieurs bancs
§ Modèle du contrôle : FSM, ROM, RISC,... § Modèle de communication : interface avec l’extérieur du
système, à des cadences différentes
EII3/M2R - 15
Tâches de synthèse • Compilation et transformation
o Compiler la description initiale en une représentation interne (CDFG), puis la transformer afin d'améliorer la synthèse.
• Sélection o Sélectionner à partir d'une bibliothèque complète d'opérateurs, les
composants dont les caractéristiques répondent à l'application.
• Allocation o Déclarer la quantité exacte d'opérateurs que l'on désire utiliser, ainsi
que les intervalles de temps où ils sont utilisables.
• Ordonnancement o Affecter une date d'exécution à chaque opération de l'application.
• Assignation o Affecter une opération à un opérateur. Cette étape doit minimiser les
problèmes de connectique interne à l'unité de traitement, posés par la circulation des données.
EII3/M2R - 16
2.1 Compilation
§ Transformation d’une spécification dans le langage d’entrée vers une représentation interne
Behavioral description of the algorithm
Entity Architecture Process()
(C)DFG
loop unrolling variable propagation
conditional assignment resolution • • •
- VHDL, C or SystemC - Mono Process - Procedures & Functions
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 5
EII3/M2R - 17
§ Composants de base de l’unité de traitement
• Opérateurs arithmétiques
• Registres ou files de registres
• Multiplexeurs
• Portes trois-états
• Bus (i.e. fils)
§ Paramétrés par la taille des données traitées
2.2 Modèles d’architecture
FU
EII3/M2R - 18
Mémoire
Reg Etat
Logique Contrôle
Logique Evolution
Registre Contrôle
Registre Status
Status Bits
FU
RF
R1 R2
DR Mémoires
Modèle de l’architecture § Exemple orienté DSP
EII3/M2R - 19
• Modèle de l’unité de traitement • Modèle de l’unité de contrôle - Contrôle mono ou multi cycles des opérateurs - Une ou plusieurs machine d’états - Optimisation du codage des états
• Modèle de l’unité mémoire
- Registres, banc de registres - Structure en banc de mémoire - Mémoire interne / externe - Génération de la séquence d’adresse
Chemin de données
Multi-bus parallèle
Registres Généraux
Cell 1 Cell N • • •
clock
bus 1 bus 2
UT UC
Modèle de l’architecture
EII3/M2R - 20
Component Library Package Component Generic
latency, area, function(s) pipe stages, size, test, ...
Port external view
2.3 Sélection et allocation
§ Sélection : extraire de la bibliothèque de composants un jeu de composants et minimiser le coût global
§ Allocation : déterminer le nombre d’opérateurs de chaque type minimum à utiliser dans le circuit
§ Bibliothèque d'opérateurs • Opérateurs classiques
o +, -, x
• Opérateurs multifonctions o +-, MAC, MAD, UAL
• Opérateurs pipelines • Opérateurs multidélais
o Additionneurs : Ripple Carry, CSA, Carry Look Ahead
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 6
EII3/M2R - 21
+/-/* +
100% 0% Adder
Substracter Multiplier
efficiency + +
- *
Adder Adder
100% 0%
Adder + +
Adder Multifunction
efficiency
cost cost
Example: Cost(Adder) < Cost(Adder-Substracter) < Cost(Adder) + Cost(Substracter) or Cost(Substracter)
∑<<i
ixi CCostCCostCCost )()()(
Bibliothèque de composants § Plus la bibliothèque est riche, plus la synthèse sera
efficace
EII3/M2R - 22
Modélisation du DFG O = (O1, O2,...,ONO) vecteur de types opérations F = (F1, F2,...,FNO) vecteur de nombre d'opérations par type
Modélisation de la bibliothèque C = (C1, C2,...,CNC)
M = (M1, M2, …, MNo)
Cost = (Cost1, Cost2, …, CostNC) [D]
La sélection revient à calculer le vecteur S contenant le nombre d'opérateurs sélectionnées par type
[γ] Matrice de booléens, γ i,j = 1 si Ci peut exécuter Oj
vecteur de type opérateurs
Mi : nb d'opérateurs pouvant traiter Oi
vecteur de coût de opérateurs Matrice des temps de traitement Di,j de Oi par Cj
Si nombre d'opérateurs Ci sélectionnés S = (S1, S2,...,SNC)
Sélection de composants § Modélisation du problème
Tr contrainte de temps
Minimiser une fonction de coût : ∑=
=Nc
iii CostSSCost
1.)(
EII3/M2R - 23
Sélection de composants § Cas d'opérateurs mono-fonctions (+, -, x, ...)
• DFG contenant 38 nœuds opérations, Tr = 200 ns o No = 3; O = (+, -, x); F = (17, 16, 5)
• Bibliothèque d’opérateurs Nc = 3 C = (Add, Sub, Mult) Cost = (212, 220, 2030) D = (20ns, 20ns, 60ns)
§ Cas général…
!!
"##
$=TrFDS ii
i.
Calculer S = ?
c
N
jii
i NiTr
FDS ≤≤≤
∑= 1
.0
1
€
Sij=1
NC
∑ γ i, jTrDi, jj=1
N0
∑ ≥ M j .Fjj=1
N0
∑EII3/M2R - 24
Exemple de sélection § DFG contenant 38 nœuds opérations, Tr = 200 ns
• No = 3; O = (+, -, x); F = (17, 16, 5) § Bibliothèque d’opérateurs Nc = 8 C = (FastAdder, SlowAdder, FastSub, SlowSub, FastAddSub, SlowAddSub, Multiplier, MultiplierAdder) Cost = (212, 157, 220, 160, 252, 203, 2030, 2100)
+ - x
Fadd 15 0 0
Sadd 20 0 0
Fsub 0 15 0
Ssub 0 20 0
Fas 15 15 0
Sas 20 20 0
Mult 0 0 60
Mad 20 0 60
D =
- Combien d'opérateurs de chaque type ? - Sélection optimale
S = (0, 1, 0, 1, 0, 1, 1, 1) 1 SlowAdder 100% 1 SlowSub 100% 1 SlowAddSub 80% 1 Multiplier 100% 1 MultAdder 100% (50% de +)
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 7
EII3/M2R - 25
2.4 Ordonnancement § Affectation d’une date d’exécution à chaque
opération § Deux types
• Temps contraint ou Ressource contrainte • ILP, Force Directed Listes, … • Précède l'allocation Suit l'allocation
§ Techniques • Constructives (transformations, glouton, left edge) • Polynomiales ou Linéaires (listes, orientés par les forces,
ASAP, ALAP) • Exponentielles (Branch&Bound, ILP) • Stochastiques (Monte-Carlo, recuit simulé) • Auto-organisation avec réseaux de neurones
EII3/M2R - 26
Ordonnancement au plus tôt (ASAP)
Allocation : additionneur(s) multiplieur(s)
+ x + + +
x
x
x
x
Temps
Sur
face
ASAP=0 ASAP=1 ASAP=2 ASAP=3 ASAP=4
Tcc = MAX(ASAPi) = 4
EII3/M2R - 27
Ordonnancement au plus tard (ALAP)
+ x + + +
x
x
x
x
Temps
Sur
face
ALAP=0 ALAP=1 ALAP=2 ALAP=3 ALAP=4
Tcc = MAX(ALAPi) = 4
Allocation : additionneur(s) multiplieur(s) EII3/M2R - 28
Ordonnancement par liste
+ x + + +
x
x
x
x Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)
M=0 U=4
M=0 U=4
M=1 U=3
M=2 U=2
M=3 U=1
M=0 U=3
M=0 U=2
M=0 U=1
M=0 U=0
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 8
EII3/M2R - 29
Ordonnancement par liste § Ordonnancement à ressources contraintes
• e.g. 1 additionneur; 1 multiplieur;
§ Pour chaque cycle faire • Une opération est ordonnancable si tous ses
prédécesseurs sont ordonnancés • Pour tous les opérateurs libres
o Ordonnancer l’opération qui a la plus grande priorité o e.g. Mobilité la plus faible ou urgence la plus forte o Si plusieurs opérateurs sont de même priorité le choix peut être
fonction d’autres contraintes (ou aléatoire, ou trié)
§ Voir algorithme en annexe
EII3/M2R - 30
Ordonnancement par liste
+ x + + +
x
x
x
x
M=0 U=4
M=0 U=4
M=1 U=3
M=2 U=2
M=3 U=1
M=0 U=3
M=0 U=2
M=0 U=1
M=0 U=0
Allocation avant ordonnancement : 1 additionneur; 1 multiplieur.
EII3/M2R - 31
x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)
a0 a1 a2 a3 a4 a5 a6 a7
y(n)
+ + + + + + + +
* * * * * * * *
+
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d
e
f
+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 Mobilité : Urgence :
Filtre RIF symétrique sur 16 points
EII3/M2R - 32
Filtre RIF symétrique sur 16 points x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)
a0 a1 a2 a3 a4 a5 a6 a7
y(n)
+ + + + + + + +
* * * * * * * *
+
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d
e
f
+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1
Mobilité : Urgence :
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 9
EII3/M2R - 33
Filtre RIF symétrique sur 16 points § Ordonnancement sur 1 additionneur et un multiplieur § Priorité sur l'urgence
§ Priorité sur la mobilité
Add
Mult
Add
Mult
EII3/M2R - 34
Filtre RIF symétrique sur 16 points
Add
Mult
1 2 3 9 a 4 5 b c 6 7 d e 8 f
1 2 3 4 5 6 7 8
Add
Mult
1 2 3 4 9 5 a 6 b 7 c 8 d e f
1 2 3 4 5 6 7 8
§ Ordonnancement sur 1 additionneur et un multiplieur § Priorité sur l'urgence
§ Priorité sur la mobilité
EII3/M2R - 35
Exercice (cf. TD) § Tcc = 4 cycles § Tbc = 3 cycles
§ Ordonnancement sur 4 cycles ? § Ordonnancement sur 3 cycles ?
x5 +2
x6
x(n)
x7 +4
x8
+3 y(n)
D
D
+1
EII3/M2R - 36
§ Tcc = 3 cycles § Tbc = 3 cycles
§ Ordonnancement sur 3 cycles ? § Ordonnancement sur 4 cycles ?
Exercice suite (cf. TD)
x5 +2
x6
x(n)
x7 +4
x8
+3 y(n)
D
+1
D
D D
D
p(n)
q(n)
w(n)
r(n)
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 10
EII3/M2R - 37
§ Tcc = 3 cycles § Tbc = 3 cycles
§ Ordonnancement sur 3 cycles ? § Ordonnancement sur 4 cycles ?
Exercice suite (cf. TD)
x5 +2
x6
x(n)
x7 +4
x8
+3 y(n)
D D
+1
D D
D D
EII3/M2R - 38
2.5 Allocation (ou binding) § Affectation des opérations aux opérateurs
• Quel opérateur alloué (+, ±, MAC) pour l’opération i de type addition ordonnancée à la date ti.
§ Affectation des variables sur les registres / files de registres / mémoires internes et externes • Diminuer le nombre de registres • Augmente le nombre de composants d’interconnexions
§ Affectation des transferts aux bus • Bus généraux, locaux ou fractionnés • Multiplexage temporel ou spatial des bus
§ Optimisations des composants d’interconnexion
EII3/M2R - 39
1 2
3 4
a b c d
S1
S2 e f
g h
R1 R2
R4 R3
UAL
a, g b, e c, f d, h
1, 2, 3, 4
R1 R2 R3 R4
a, g b, e c, f d, h
1, 4 UAL UAL 2,3
R1 R2
a, g b, e
1,3 UAL 2,4
R1 R2
c, f d, h
UAL
Allocation des opérateurs
EII3/M2R - 40
• Détermination du nombre minimum de registres
• Cliques (compatibilité), Coloriage (incompatibilité)
1
2
5
3
4
6
1
2
5
3
4
6
6 5 4 3 2 1
Allocation des registres
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 11
EII3/M2R - 41
c := a + b; a, b, d viennent de mémoire e := c + b; Tadd = 20 ns f := d * c * e; Tmult = 20 ns h <= f * a; Tclk = 20 ns
a
b
+1 c
d
+2
x3
e
• x4 f x5 h
Exemple 1
EII3/M2R - 42
0 1 2 3 4 5 6 7
OP x + +1 +2
x3 x4 x5
UTIL
a
Connexions
Entrée Sortie
mem + in1 et x in1 R1
Exemple 1 § Liste des Opérateurs et des Utilisations : OP et UTIL
Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns
EII3/M2R - 43
Exemple 1 § Affectation des {util} de UTIL sur des registres § Nb Minimum de registres = _______ § Nb Minimum de mémoire = ______ § Nb connexions point à point = ____ § Nb de registres
• Sans Multiplexage = _____ • Avec Multiplexage = _____
EII3/M2R - 44
0 1 2 3 4 5 6 7
OP x + +1 +2
x3 x4 x5
UTIL
b
c
e
a
•
f
h
d
Connexions
Entrée Sortie
mem mem
+ mem
+ x x x
+ in1 et x in1 + in2
+ in1 et x in1 x in2 x in1 x in2 x in2 mem
Exemple 1 § Liste des Opérateurs et des Utilisations : OP et UTIL
Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 12
EII3/M2R - 45
R1
R2 R3
R4
R4
R3
0 1 2 3 4 5 6 7
OP x + +1 +2
x3 x4 x5
UTIL
b
c
e
a
•
f
h
d
Connexions
Entrée Sortie
mem mem
+ mem
+ x x x
+ in1 et x in1 + in2
+ in1 et x in1 x in2 x in1 x in2 x in2 mem
Exemple 1 § Liste des Opérateurs et des Utilisations : OP et UTIL
Tadd = 20 ns Tmult = 20 ns Tclk = 20 ns
EII3/M2R - 46
+ a
b c
d *
0
1
e
. f h
d
b
a +
+
*
* *
c
e
.
f h [10-20]
[0-10]
[10-30]
[30-50] [50-70]
Exemple 1
EII3/M2R - 47
0 1 2 3 4 5 6 7
OP x + +1 +2
x3 x4 x5
UTIL
a
Connexions
Entrée Sortie
mem
+ in1 et x in1
R1
Exemple 2 § Liste des Opérateurs et des Utilisations : OP et UTIL
Tadd = 10 ns Tmult = 20 ns Tclk = 10 ns
EII3/M2R - 48
0 1 2 3 4 5 6 7
OP x + +1 +2
x3 x4 x5
UTIL
b
c
e
a
•
f
h
d
Connexions
Entrée Sortie
mem mem
+ mem
+ x x x
+ in1 et x in1 + in2
+ in1 et x in1 x in2 x in1 x in2 x in2 mem
R1
R2
R3
R4
R5
R6
Exemple 2 § Liste des Opérateurs et des Utilisations : OP et UTIL
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 13
EII3/M2R - 49
Exemple 2
EII3/M2R - 50
Exemple 2
EII3/M2R - 51
Exemple 2 PLAN
1. Optimisations algorithmiques 2. Synthèse architecturale
2.1. Introduction 1. Avantages de la synthèse architecturale 2. Synthèse architecturale vs. synthèse logique/RTL
2.2. Techniques de synthèse 2.3. Outils de synthèse comportementale
3.4. Exemples de synthèse
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 14
EII3/M2R - 53
BSS : http://cairn.enssat.fr/bss HYPER : http://infopad.eecs.berkeley.edu/~hyper SPARK : http://mesl.ucsd.edu/spark/
Outils de synthèse HLS § Outils de recherche et techniques sont mûres
• BSS, Gaut, Hyper, Spark, ...
§ Outils commerciaux disponibles • Catapult Synthesis (Mentor-Graphics) • Behavioral Compiler (Synopsys) • Visual Architect (Cadence) • Cynthesizer (Forte Design System)
EII3/M2R - 54
http://cairn.enssat.fr/bss
Breizh Synthesis System
EII3/M2R - 55
Environnement BSS
EII3/M2R - 56
Behavioral Compiler (Synopsys)
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 15
EII3/M2R - 57
CatapultC (Mentor Graphics)
EII3/M2R - 58
CatapultC
EII3/M2R - 59
Ordonnancement
EII3/M2R - 60
Architecture RTL
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 16
Différence entre synthèse RTL et synthèse comportementale
Exemple de la multiplication complexe
EII3/M2R - 62
Spécification § Spécification de la multiplication complexe
• Produit de (a + j.b) par (c + j.d) • Les données d’entrée sont disponibles séquentiellement
o a => b => c => d
• Les données d’entrée sont sur 5 bits • RE = (a * c) - (b * d) • IM = (a * d) + (b * c) • RE et IM sont fournis sur des ports de sorties séparés au
même instant d’horloge
§ But : trouver le meilleur design (surface, temps)
EII3/M2R - 63
a
b
c
d
? ? ?
a.c
b.d
a.d
b.c
? ? ?
a.c + b.d
a.d + b.c
Conception RTL § Combien d’opérateurs +, -, *, registre pour :
• Circuit le plus rapide ? • Circuit le moins coûteux ?
§ Quelle est la latence de chaque circuit ?
EII3/M2R - 64
a
b
c
d
a.c
b.d
a.d
b.c
x
x
x
x
-
+
UC 6 états
a.c + b.d
a.d + b.c
Circuit le plus rapide • 4 multiplieurs, 1 additionneur, 1 soustracteur • 4 registres 5 bits, 6 registres 10 bits • Latence : 6 cycles de 40ns = 240ns, Surface = 2438 • Spécification RTL : 68 lignes de code
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 17
EII3/M2R - 65
a
b
c
d
a.c
b.d
a.d
b.c
x
UC 10 états
+/-
a.c + b.d
a.d + b.c
Circuit le moins coûteux • 1 multiplieur, 1 additionneur/soustracteur • 4 registres 5 bits, 6 registres 10 bits • Latence : 10 cycles de 40ns = 400ns, Surface = 1482 • Spécification RTL : 117 lignes de code
EII3/M2R - 66
Comportementale
multx:process begin
main: loop a := port_entree; wait until clk'event and clk ='1'; b := port_entree; wait until clk'event and clk ='1'; c := port_entree; wait until clk'event and clk ='1'; d := port_entree; wait until clk'event and clk ='1';
re:=(a * b) - (c * d); im:=(a * d) + (b * c); wait until clk'event and clk ='1'; end loop main; end process;
§ Spécification comportementale : 16 lignes de code
Synthèse de haut niveau
EII3/M2R - 67
Optimisation en surface
400ns
EII3/M2R - 68
Optimisation en surface
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 18
EII3/M2R - 69
Optimisation en temps
EII3/M2R - 70
Optimisation en temps
EII3/M2R - 71
Conclusions § Pas de technique unique mais plutôt une boite à outils à
appliquer sur le CDFG § Gain en productivité
• > 25 par exploration § Niveau d'abstraction plus élevé
• Modélisation du système complet • Travail sur l'architecture favorisé • Rapprochement avec les équipes systèmes • Très grande réactivité en cas d'une évolution du cahier des
charges en dernière minute… • Fiabilité, sûreté de la production • Migration technologique facilitée
EII3/M2R - 72
Problèmes ouverts § Plusieurs types d’architectures et de compilateurs
doivent coexister • Architectures orientées calcul/données • Architectures orientées contrôle • Cœurs de DSP ou ASIP • Architectures type “array” (systolique)
§ Faible consommation § Ré-utilisation, bibliothèques d'éléments génériques
(IP) § Liens forts avec la synthèse RTL § Liens forts avec le floorplanning : DSM § Techniques de test
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 19
EII3/M2R - 73
Bibliographie [Airiau93] Circuit Synthesis with VHDL R. Airiau, J.M. Berge et V. Olive, Kluwer, 1993 [Airiau90] VHDL : du langage à la modélisation R. Airiau, J.M. Berge, V. Olive et J. Rouillard, Presses polyt. et Univ. Romandes, 1990 [Bayoumi94] VLSI Design Methodologies for Digital Signal Processing Architectures ed. by M. Bayoumi, Kluwer, 1994 [Chand95] Low Power Digital CMOS Design A. Chandrakasan and R. Brodersen, Kluwer, 1995 [DeMicheli87] Design Systems for VLSI Circuits ed. by G. DeMicheli, NATO ASI Series, 1987 [DeMicheli96] Hardware Software Codesign ed. by G. DeMicheli, Kluwer, 1996 [Gajski88] Silicon Compilation ed. by D. Gajski, Addison Wesley, 1988 [Michel93] The Synthesis Approach to Digital System Design P. Michel et al, Kluwer, 1993 [Gajski93] High Level Synthesis of Digital Systems D. Gajski et al, Kluwer, 1993 [Gajski94] Specification and Design of Embedded Systems D. Gajski et al, Prentice Hall, 1994 [Kurup97] Logic Synthesis using Synopsys P. Kurup, T. Abbasi, Kluwer, 1997 [Lavagno93] Algorithms for synthesis and testing of asynchronous circuits L. Lavagno and A. Sangiovanni, Kluwer, 1993 [Madisetti95] VLSI Digital Signal Processors : an Introduction to Rapid Prototyping and Design Synthesis V. Madisetti, IEEE Press, 1995 [Rabaey96] Low Power Design Methodologies J. Rabaey and M. Pedram, Kluwer, 1996 [Rabaey96] Digital Integrated Circuits: a Design Perspective J. Rabaey, Prentice Hall, 1996 [Sasao93] Logic Synthesis and Optimizations ed. by T. Sasao, Kluwer, 1993 [VanHoof93] High Level Synthesis for Real-Time Digital Signal Processing J. Vanhoof et al, Kluwer, 1993
EII3/M2R - 74
Algorithme ASAP For each node ni in N do If Pred(ni) = Empty then Ei = TimeOf(ni) /* ASAP Time Label */ N = N - {ni} else Ei = 0 end if end for While N not Empty do For each node ni in N do If AllNodesScheduled(Pred(ni), E) then Ei = MAX(Pred(ni), E) + TimeOf(ni) N = N - {ni} end if end for end while
TimeOf(ni) est le temps de l’opération ni
Pred(ni) est l’ensemble de tous les prédécesseurs de ni
AllNodesScheduled(Pred(ni), E) retourne vrai si tous les Pred(ni) sont ordonnancés
MAX(Pred(ni), E) retourne la date max de E de tous les Pred(ni)
EII3/M2R - 75
ASAP Récursif Algorithm ASAP(ni : Operation) return Integer
If ni = Empty then return 0 /* Pour le noeud source on retourne la date 0 */
else if Scheduled(ni) /* Cette opération est déjà ordonnancée */ return DateASAPOf(ni) + TimeOf(ni)
else For each node pi in Pred(ni) do Ei = ASAP(pi) DateASAPOf(ni) = MAX(Ei, DateASAPOf(ni)) end for Scheduled(ni) = TRUE return DateASAPOf(ni) + TimeOf(ni)
end if
On appelle cet algorithme avec le noeud puit du graphe
EII3/M2R - 76
Algorithme ALAP For each node ni in N do If Succ(ni) = Empty then Li = T /* ALAP Time Label */ N = N - {ni} else Li = 0 end if end for While N not Empty do For each node ni in N do If AllNodesScheduled(Succ(ni), L) then Li = MIN(Succ(ni), E) - TimeOf(ni) N = N - {ni} end if end for end while
T est la contrainte de temps Succ(ni) est l’ensemble de tous
les successeurs de ni AllNodesScheduled(Succ(ni), E)
retourne vrai si tous les Succ(ni) sont ordonnancés
MIN(Pred(ni), L) retourne la date min de L de tous les Succ(ni)
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 20
EII3/M2R - 77
ALAP Récursif Algorithm ALAP(ni : Operation) return Integer
If ni = Empty then return Tcc /* Pour le noeud puit on retourne le temps du chemin critique */
else if Scheduled(ni) /* Cette opération est déjà ordonnancée */ return DateALAPOf(ni)
else For each node si in Succ(ni) do Li = ALAP(si) DateALAPOf(ni) = MIN(Ei, DateALAPOf(ni)) end for DateALAPOf(ni) = DateALAPOf(ni) - TimeOf(ni) Scheduled(ni) = TRUE return DateALAPOf(ni) end if
On appelle cet algorithme avec le nœud source du graphe
EII3/M2R - 78
Algorithme LIST Algorithm LIST()
InsertReadyOp(N, PList1, ... , PListNo) t = 0 While ((PList1 not Empty) or ... or (PListNo not Empty)) do t = t + Tclk For k = 1 to No do For FUnit = 1 to Nk do If Plistk not Empty then ScheduleOp(Scurrent, First(PListk), t) PListk = Delete(PListk, First(PListk)) end if end for end for InsertReadyOp(N, PList1, ... , PListNo) end while
PList est une liste de priorité par type d’opération PList = (PList1, ... , PListNo)
InsertReadyOp scrute N, détermine quelles opérations sont prêtes (i.e. tous ses pred. sont ordonnancés), les retire de N, et les ajoute dans PList
ScheduleOps retourne la date après ordonnancement de l’opération Oi au temps t
Delete(PListk, First(PListk)) retire de PListk la tête de liste
Nk est le nombre d’unités fonctionnelles qui réalisent Ok
EII3/M2R - 79
Algorithme d’allocation OP = Empty /* Liste des Opérateurs */ t = 0 UTIL = Empty /* Liste des Utilisation des variables, inclus les connexions */ While t < Tmax do
Nready = NodesScheduled(N, t) /* Retourne les Opérations ordonnancées à t */ For each n in Nready do op = OperatorFree(OP, t, n) /* Retourne un opérateur libre à t qui réalise n */ If op = Empty then CreateNewOP(n) end if /* Création d’un nouvel opérateur réalisant n, ajout dans OP */ Alloc(n, op) /* op devient occupé de t à t+TimeOf(n) */ For all v = VarPred(n) do /* Pour toutes les variables en entrée de n */ UTIL = UTIL + {t, MaxSuccVar(n) /* Rajoute à la liste des utilisations celle correspondant à la variable en entrée de l’opérateur. La date de fin d’utilisation correspond à la date de son successeur le plus éloigné */ end for end for
end while
EII3/M2R - 80
2° Ordre
x +
x + x(n)
x +
x
+ y(n)
z-1
z-1
x +
x +
x +
x
+ D
D
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 21
EII3/M2R - 81
FIR de longueur 5
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
EII3/M2R - 82
EII3/M2R - 83
Ordonnancement
Fil Rouge modifié: Filtre RIF symétrique sur 16 points x(n) x(n-15) x(n-1) x(n-14) x(n-2) x(n-13) x(n-3) x(n-12) x(n-4) x(n-11) x(n-5) x(n-10) x(n-6) x(n-9) x(n-7) x(n-8)
+ + + + + + + +
* * * * * * * *
a0 a1 a2 a3 a4 a5 a6 a7
+ + + + + + + y(n)
§ Fil rouge
EII3/M2R - 84
ASAP Ordonnancement au plus tôt (ASAP)
Allocation
8 additionneurs; 8 multiplieurs.
PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6 PAS 7
PAS 8 PAS 9
+ + + + + + + +
* * * * * * * *
+
+
+
+
+
+
+
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 22
EII3/M2R - 85
ALAP Ordonnancement au plus tard (ALAP)
Allocation
2 additionneurs; 2 multiplieurs.
PAS 1 PAS 2 PAS 3 PAS 4 PAS 5 PAS 6 PAS 7
PAS 8 PAS 9
+ +
* * +
+
+
+
+
+
+
*
+
*
+
*
+
*
+
*
+
*
+
EII3/M2R - 86
List Scheduling + + + + + + + +
* * * * * * * *
+
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d
e
f
priorité sur l'urgence: priorité sur la mobilité:
+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6
(sur l'urgence: priorité la plus forte, sur la mobilité priorité la plus faible)
Allocation avant ordonnancement d'un additionneur et de un multiplieur
temps de calcul: XXX pas
temps de calcul: XXXX pas priorité sur l'urgence:
priorité sur la mobilité:
Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)
EII3/M2R - 87
List Scheduling + + + + + + + +
* * * * * * * *
+
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d
e
f
priorité sur l'urgence: priorité sur la mobilité:
+1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 8 8 7 6 5 4 3 2 6 5 4 3 2 1 0 7 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6
(sur l'urgence: priorité la plus forte, sur la mobilité priorité la plus faible)
+1 +2 +3 +4 +9 +5 +a +6 +b +7 +c +8 +d +e +f *1 *2 *3 *4 *5 *6 *7 *8
+1 +2 +3 +9 +a +4 +5 +b +c +6 +7 +d +e +8 +f *1 *2 *3 *4 *5 *6 *7 *8 temps de calcul: 16 pas
temps de calcul: 15 pas priorité sur l'urgence:
priorité sur la mobilité:
Mobilité(i) = ALAP(i) - ASAP(i) Urgence(i) = Tcc - ALAP(i)
Allocation avant ordonnancement d'un additionneur et de un multiplieur
EII3/M2R - 88
Force Directed Scheduling
+ + + + + + + +
* * * * * * * *
+
y(n)
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d e
f
chemin critique
• Calcul du poids d'un couple (opération, pas)
• Etablir la mobilité de chaque opération: entre les pas "b" et "h";
• Etablir le graphe de distribution: pour tout pas "i" entre "b" et "h" DG(i) = Σ opé { 1/[h(opé)-b(opé)+1)] }
• Calculer le couple (opé,pas) : poids(opé,pas) = compression(opé) au pas "i" - détente(opé) aux autres pas + poids(opérations dépendantes ayant perdu leur mobilité)
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 23
EII3/M2R - 89
• • • Force Directed • • • +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f *1 *2 *3 *4 *5 *6 *7 *8 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 mobilité:
+ + + + + + + +
* * * * * * * * +
+
+
+
+
+
+
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
9
a
b
c
d
e
f
Graphe de distribution additions
1+1+1/2+1/3+1/4+1/5+1/6+1/7= 3,59
1/2+1/3+1/4+1/5+1/6+1/7 = 1,59
1+1/3+1/4+1/5+1/6+1/7= 2,09
1+1/4+1/5+1/6+1/7 = 1,76
1+1/5+1/6+1/7 = 1,51
1+1/6+1/7 = 1,31
1+1/7 = 1,14
1
1
0
3,59
1,59
1,09
0,76
0,51
0,31
0,14 0
multiplications DG(i)
EII3/M2R - 90
• • • Force Directed
Exemple: Calcul du poids d'affectation de *4 au pas 3:
Poids(*4,3) = compression(*4,3) - détente(*4,2) - détente(*4,4) + nouveau poids(+4) - ancien poids (+4)
= [DG*(3) -DG*(2) - DG*(4)] / (mobilité(*4)+1) + [ DG+(1)+DG+(2)]/[nouv-mob(+4)] - [ DG+(1) + DG+(2) + DG+(3) ] / (anc-mob(+4))
= (1,59 - 1,09 - 3,59)/ 3 + (3,59 + 2,59)/2 - (3,59 + 2,59 + 2,09)/3 = - 0,69
Meilleure proposition: Poids(opération,pas) minimum
L'opération devient alors immobile, on recalcule le DG, on recherche les poids.
EII3/M2R - 91
Arbre de Recherche
+ + + + + + + +
* * * * * * * * +
+ +
+ +
+ +
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
a
b c
d e
f
pas1 pas2 pas3 pas4 pas5 pas6 pas7 pas8 pas9
+ 3
+ 4
x 7
x 8
pas 1 pas 2
pas3 pas2 pas1 pas3 pas2 pas1
ordo. des opérations non mobiles
pas3 pas4
°°°
pas3 ... pas8 pas3 ... pas8 °°°
feuilles de l'arbre de recherche des solutions 1
2
Exemple : Etude successive des opérations, recherche des pas où elles peuvent être allouées.
Recherche exhaustive: étudier les coûts des architectures en toutes les feuilles
Branch and Bound : étudier le coût des propositions partielles
Left edge : On ne parcourt que la branche gauche de l'arbre de recherche des solutions
ordo
ordo
ordo
ordo
ou
ou ou ou ou ou
ou
ou •••
EII3/M2R - 92
Branch & Bound + + +
+ + +
+ + * * *
* * *
* * +
y(n)
+
+ +
+
+ +
1 2 3
4 5 6
7 8 1 2 3
4 5 6 7 8 9
a
b
c
d e
f
Proposition 'i' (feuille)
coût = 4 + et 3 x
+ + +
+ + +
+ + * * *
* * * *
+
y(n)
+
+
+ +
+ +
1 2 3
4 5 6
7 8 1 2 3
4 5 6 7
9
a
b c
d e
f
Proposition suivante
(1 niveau au dessus des feuilles)
coût = 4 + et 4 x
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 24
EII3/M2R - 93
Recuit Simulé + * * +
+
*
1 2 3 4
5
6
* +
+
*
2 3
5
6
1 + * 4
état initial allocation
2+,2*
transformation énergie =
T = (coût de la soution - coût espéré)
-K/T P.e
tir aléatoire des transformations
allocation
2+,1*
tir aléatoire pour retenir a nouvelle solution
meilleure Amplitude des transformations proportionnelle à l'énergie
Evolution des transformations coût
Solutions
coût espéré
meilleure solution
Tr1
Tr 2 Tr 3
EII3/M2R - 94
Comparaison des outils Behavioral Compiler BSS-Gaut Money
Langage d’entrée Standard IEEE Sous ensemble VHDL Compatible SynopsysRapidité lent Très rapide RapideCapacité < 150 opérations Importante ImportanteInterface d’entrée script Graphique en
démonstration oucommande
Graphique ou script
Fichier de résultats oui oui ouiInterface de sortiegraphique
Ordonnancement desregistres et opérateurs Machine d’états
Ordonnancement desopérateurs, registre et bus,structure de l’architecture,flot des données
Ordonnancement desopérateurs, machined’état, structure del’architecture
Pipeline oui automatique ouiDéroulage de boucle Déroulage complet ou
non dérouléeDéroulage complet Déroulage complet,
partiel ou nulLibrairie Caractérisée lors de la
synthèsePrécaractérisée Précaractérisée par script
Contrainte principale Nombre de cycle etpériode
Cadence des calculs Nombre de ressources
Résultat de synthèse Base de données enformat propriétaire
VHDL RTL pourSynopsys ou Compass
VHDL RTL pourSynopsys
EII3/M2R - 95
Synthèse UT
Spécification comportementale
Architecture UT
Contraintes
Sim
ulat
ion
/ Vér
ifica
tion
Simulation RTL
Simulation comportementale
Vecteurs de test
GAUT
Simulation logique
Bibliothèque
Comportement UM
Synthèse UM
Générateurs d'adresse
Bancs mémoire
Bibliothèque
Synthèse avec BSS
GAUM
EII3/M2R - 96
Synthèse UT
projet.dfg
Vecteurs de test projet.in
Vecteurs des sorties projet.out
Simulation
gsel
gord
gass
gopt
Synthèse projet.archi
.dfa
.dfs
.archi
Interface RTL gtrad
projet.vhd
Compilation
gunroll gdfg
gcomp
Spécification comportementale VHDL projet.src
Packages VHDL projet.h *.h
Bibliothèque technologique
*.lib
Testbench VHDL projet.test
gsim visigaut
Structural Description
Efficiency of Operators and Registers
R1 R2 R3
Histogram of Datas Lifetime Threshold Capturation
Visualization of DFG
User InterfaceCompilation Selection Scheduling Binding Optimization
gautV3
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 25
EII3/M2R - 97
Synthèse UM : GAUM
GA
UM
Bibliothèque d’opérateurs
Optimisations
&
Distribution
Sélection des mémoires
Placement Génération des adresses
EII3/M2R - 98
R
FU
R
Stor
age
Uni
t
Processing Unit Data Bus
Adress Bus
Address Generator
R
inte
rcon
nect
ions
Com. Unit
External Access
Cell
Control Unit
FU
R
Memory Bank N°1 • • •Memory
Bank N°1
Address Generator
Address Generator
Ext
erna
l M
emor
y E
xter
nal
Mem
ory
External Address Generator
Modèle de l’architecture
EII3/M2R - 99
Interface WWW
Résultats textuels
Navigateur
IHM (Applet)
Graphe DFG
Architecture
Occupation des registres
Vérification cohérence
Site client
CGI (Perl) • Mise en forme de la requète • Demande d'exécution d'un module
• Accusé de terminaison • Renvoi du fichier résultat
Outils . gcomp . gsel . gord . gsim . gopt . gass . gtrad
Site serveur
(Applets)
[DAC 99] EII3/M2R - 100
Bilan § 50.000 lignes de code C/Java § Interfaces graphiques Xlib, Xmotif, Java § Solaris, Linux, Cygwin, …
§ Contrats de Recherche • CNET Lannion • CNET Grenoble • THOMSON CSF • TNI-Valiosys • CEA
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 26
EII3/M2R - 101
HYPER (UC Berkeley)
§ Langage SILAGE, repésentation interne en CDFG § Interface de sortie pour Synopsys, Lager IV
CDFG
Silage Sélection
Allocation Mémoire
Allocation Ordon.
Estimation
Transformations
Mapping
EII3/M2R - 102
Bus d’interconnexion
EXU
Basée sur des Clusters
EXU
HYPER § Modèle d’architecture
EII3/M2R - 103
Cathedral 2/3 (IMEC)
§ Langage Silage + pragma pour allocation § Interface avec Cadence § EXecution Units ou Application Specific Unit
Allocation Silage
Organisation Mémoire
Assignation
Génération Structure
Ordonnancement
Microcode
Cathedral 3
Génération DSFG
Définition ASU
EII3/M2R - 104
Bus d’interconnexion
RA
M
RA
M
MU
LT
ALU
Registre Instructions
Contrôle
Cathedral § Modèle d’architecture