This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 1
Synthèse architecturale de systèmes intégrés pour le traitement du signal
Méthodologie de conception des systèmes intégrés
Olivier Sentieys IRISA
ENSSAT - Université de Rennes 1
EII3/M2R - 2
[L. Ducousso, ST, GDR SoC]
State-of-the-art SoC at HDTV Set Top Box
• Domain-specific SoC Functionality is inside
• Various applications and standards inside
• MPEG2, H264 • Satellite, Wifi/LAN • Hard disk, …
mesure/contrôle Compression parole modems Imagerie
médicale
Compression audio Compression
vidéo ADSL
GSM UMTS
Quelles applications ?
EII3/M2R - 14
Fonctions typiques de TdSI
Convolution, filtrage (RIF, RII), corrélation, DCT o y = y + x.h : MAC (multiplication-accumulation)
Adaptation (LMS) o yn = yn-1 + x.h : MAD (multiplication-addition)
FFT, multiplication complexe o xr=xr.wr-xi.wi; xi=xr.wi+xi.wr
Viterbi o a1 = x1 + x2; a2 = y1 + y2; o y = (a1>a2) ? a1 : a2 : ACS (addition-comparaison-sélection)
Estimation de mouvement o sad += |xi,j - yi+u,j+v| : SAD (sum-of-absolute-difference)
Quelles applications ?
EII3/M2R - 15
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
z-1 z-1 z-1 z-1
Exemple Fil Rouge
Filtre Numérique RIF sur N points
Graphe flot de signal (SFG pour Signal Flow Graph)
T
D ou
Quelles applications ?
EII3/M2R - 16
Fonctions typiques de TdSI
Filtre Numérique RIF symétrique sur N points
y(n)
h(0) h(1) h(2) x
+ +
x x
+ + +
Quelles applications ?
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 5
EII3/M2R - 17
Fonctions typiques de TdSI
FFT Fast Fourier Transform • Butterfly (DIF)
X
Y
X’ = X + W.Y
Y’ = X - W.Y W
- x x
+ x x
+
+ -
-
Quelles applications ?
EII3/M2R - 18
Fonctions typiques de TdSI
Filtrage adaptatif LMS
DLMS
x xn(i-1)
en
+ hn(i)
x xn(i)
+ y
hn-1(i) y
Quelles applications ?
EII3/M2R - 19
Fonctions typiques de TdSI
Estimation de mouvement • Codage vidéo MPEGx, H26x
Motion Vector (u,v)
Reference Block NxN
Matched Block NxN
N+2p
Search Window
p
sadmin = MAXINT; mvx=0; mvy=0; for (u=-p; u<=p; u++) for (v=-p; v<=p; v++) { sad = 0; for (i=0; i<N; i++) { for (j=0; j<N; j++) { sad = sad + ABS[BR(i,j)-FR(i+u,j+v)] /* if (sad>=sadmin) break; */ } } if (sad<sadmin) { sadmin = sad; mvx = u; mvy = v; } }
Quelles applications ?
EII3/M2R - 20
Caractéristiques algorithmiques
Charge de calcul importante o Nids de boucles o Multiplications-accumulations (convolution) o Multiplications-additions (FFT, DCT, adaptation, distances, ...)
Précision des calculs o Virgule fixe ou flottante o Compromis coût – précision des calculs
ENTITY fir IS!!PORT (xn:IN INTEGER; yn:OUT INTEGER);!
END fir;!
ARCHITECTURE behavioral OF fir IS!!...!
BEGIN!!PROCESS!! !VARIABLE H,x: !vector;!! !VARIABLE tmp: !INTEGER;!!BEGIN!! !tmp := 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 throughput;!!END PROCESS;!
END behavioral;!
Quels langages ?
EII3/M2R - 23
#define WORD fix<20,0> #define N 5
func main (in : WORD) out : WORD = begin sum[0] = 0; (i:0 .. N):: begin sum[i+1] = sum[i] + WORD(h[i]@1 * in@i) ; end; out = sum[N+1];
end;
Silage
• Type Signal = flot infini de tableau de nombres réels • Algorithme = ensemble de fonctions concurrentes • Assignation unique • c@1 = ct-1 au sens signal
// reset watching /* this would be an unrolled loop */ for (int i=0; i<=15; i++) shift[i] = 0; result.write(0); output_data_ready.write(false); wait();
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 7
EII3/M2R - 25
A121
A122
A12
A11 A21
A22
Etat initial au RESET
Activation parallèle
arrêtA0
reset
Machine d’états hiérarchiques
Extension hiérarchique, modulaire et parallèle des machines d’états finies (FSM) • Etat = AND ou OR d’états (parallèle ou séquentiel) • Etat feuille = process | empty
Génération de code • VHDL, C
Plusieurs variantes • StateCharts, SyncCharts (Esterel) • SDL, Petri
Quels langages ?
EII3/M2R - 26
x
x
x
x
+ + + n1 n5 n6
n2
n3
n4
n7
Graphe Flot de Données (DFG) DFG : graphe acyclique G(N,A)
• N : ensemble de nœuds ni, i=1..Nn • A : ensemble d’arcs ai, i=1..Na
ni de N, représente une opération Oi aij de A, représente un arc de ni vers nj si l’opération Oi est
un prédecesseur de Oj dans les DFG
O = (O1, O2, ... , ONo) Vecteur du type d’opérations
e.g. O = (x, +) F = (F1, F2, ... , FNo) Nombre d’opérations par type
• N : ensemble de nœuds ni • A : ensemble d’arcs ai valués par quantité de données en entrée/sortie
Quels modèles ?
EII3/M2R - 31
Métriques : définitions
Vitesse d’itération (iteration rate) : nombre d’itérations exécutées par seconde
Période d’échantillonnage (sample rate) : nombre d’échantillons traités par le système par seconde (également cadence ou throughput)
Latence (latency) ou temps de retard entrée-sortie : délai entre le temps d’arrivée d’une entrée et le temps où la sortie correspondante est produite
Quelles métriques ?
EII3/M2R - 32
Métriques : définitions Architecture sans partage de ressources
• Un opérateur par opération, un registre par délai Z-1 "• Temps dʼexécution des opérateurs arithmétiques (dj)"
Chemin critique (critical path) d’un SFG : chemin du SFG ne passant pas par un délai Z-1 possédant le plus long temps • Critical path est la borne minimale de la période d’horloge
(peut être réduite par pipelining) Boucle critique (critical loop) d’un SFG : boucle du
SFG possédant le plus long temps • Iteration bound est la borne maximale de la vitesse
d’itération (ne peut pas être réduite par pipelining)
Quelles métriques ?
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 9
EII3/M2R - 33
Métriques
Tbc : temps de la (ou des) boucle critique d’un SFG
• Tbc =
• B est un ensemble de boucles b, nb est le nombre de délais dans la boucle b, dj est le temps d’exécution de l’opération Oj du noeud j
• Tbc représente la cadence que l’on peut atteindre. C’est donc la borne minimum du temps d’exécution.
B bn
dMax
b
bj j∈
⎥⎥⎥
⎤
⎢⎢⎢
⎡∑ ∈
Quelles métriques ?
EII3/M2R - 34
Métriques
Tcc : Temps du chemin critique d’un SFG
• Tcc =
• P est un ensemble de chemin p, np est le nombre de délais dans le chemin p, dj est le temps d’exécution de l’opération Oj du nœud j
• Td, temps de retard E/S d’un SFG, représente le retard minimum entre l’entrée et la sortie d’une même itération
• Td = (ensemble des chemins entre E/S)
⎡ ⎤ P p.TbcndMax ppj j ∈−∑ ∈
⎡ ⎤ E/Sppj j P p.TbcndMax ∈−∑ ∈
4 chemins possibles: (1) input node → delay element (2) delay element’s output → output node (3) input node → output node (4) delay element → delay element
Quelles métriques ?
EII3/M2R - 35
x(n) y(n)
x +
x
+ z-1
z-1
x
x +
x
+ z-1
z-1
b0
b1
b2
a1
a2
=> Fe max ?
Exemple 1
Exemple : filtre numérique RII du 2ème ordre (forme directe)
Multiplications : 10ns Additions : 5ns
Quelles métriques ?
EII3/M2R - 36
Exemple 2
x
+
x
+
x
+
x
x(n)
y(n)
a(0) a(1) a(2) a(3)
D D D
x x
+
x
+
b(1) b(2) b(3)
D D D
+
RII 4° Ordre
Quelles métriques ?
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 10
EII3/M2R - 37
Cas des MRDFG
Nécessité de dérouler sur une itération commune
Quelles métriques ?
PLAN
1. Optimisations algorithmiques
1. Modèles pour la spécification algorithmique
2. Transformations algorithmiques
2. Synthèse architecturale
3. Synthèse logicielle, optimisation de code
1.2. Transformations algorithmiques
Commutativité/Associativité
Pipeline/Parallèle
Retiming Unfolding/Folding
Unrolling
EII3/M2R - 40
Transformations algorithmiques
Efforts sur les transformations avant la synthèse de haut niveau ou la compilation impliquent des améliorations importantes
Gain en • surface • consommation • cadence des traitements • latence des traitements
Quelles transformations faut-il appliquer ? Comment les formaliser ?
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 11
EII3/M2R - 41
Commutativité, Associativité
b
c
d
+
+
+
+
e
f f = (((a + b) + c) + d) + e; f = (a + b) + (d + e) + c;
+
a d
+
+
b e
+
c
f
a
+
x
y = a.x y = a.x z = x.b z = b.x
x a
b x
b a
+ Intérêt :
Intérêt :
Inconvénients :
EII3/M2R - 42
Pipelining
EII3/M2R - 43
Parallel Processing
EII3/M2R - 44
Retiming ••• Le premier à avoir émis l'idée d'optimiser l'ordonnancement d'un graphe en modifiant les délais, a été Leiserson. Le "retiming" consiste à modifier l'emplacement des délais dans l'algorithme en conservant ses caractéristiques, de manière à mieux répartir les opérations dans le temps. Ce type de transformations utilisées par Leiserson pour minimiser le nombre de registres et réduire le chemin critique possède également un fort potentiel d'optimisation dans l'utilisation des ressources.
Z-1 Z-1
Op Z-1
Op
forward →!← reversed!
Y = Op(a.z-1, b.z-1) Y = Op(a, b).z-1
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 12
EII3/M2R - 45
Remarque : un SFG est systolique si D(e) > 0 pour tout e dans E
v
u 3D e
3D
3D
v
u 2D+r(v) e
2D
2D Retiming
D D
••• Retiming ••• Soit un SFG initial Gi = (N,A,Di)
• Di : ensemble de délais du graphe initial On réorganise les délais en Df de telle façon que Gf = (N,A,Df) soit fonctionnellement équivalent à Gi, avec éventuellement un changement dans les vitesses des signaux d’entrée/sortie.
Transfert de nœuds (Node Transfer) • Pour chaque noeud u, r(u) délais peuvent être enlevés de chaque
entrée et ajoutés à chaque sortie • Nombre de délais de l’arc e : Dfinal(e) = Dinit(e) + r(v) - r(u)
EII3/M2R - 46
••• Retiming •••
Définition Une « coupe » consiste en un ensemble de segments partitionnant le SFG en deux sous graphes
Transfert de délais (Delay Transfer) • k (ou -k) délais peuvent être enlevés des arcs entrants et k (ou -k)
ajoutés aux arcs sortants de la coupe, sans changer le fonctionnement du SFG.
• Si tous les arcs croisent la coupe dans le même sens, alors k (ou -k) délais peuvent être ajoutés à chaque arc.
• Plusieurs coupes peuvent être utilisées successivement pour « retimer »
Mise à l’échelle temporelle (Time Scaling) • Les délais peuvent être multipliés par un facteur s > 0 sans changer le
fonctionnement du SFG. Les vitesses d’Entrée/Sortie d’échantillonnage doivent être modifiées de la même manière de telle sorte que s-1 périodes d’horloge séparent les échantillons d’E/S successifs.
EII3/M2R - 47
••• Retiming
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
Exemple 1
EII3/M2R - 48
••• Retiming
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
Coupes
Exemple 1
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 13
EII3/M2R - 49
••• Retiming Exemple 1
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
D D D D
Transferts de délais
EII3/M2R - 50
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4)
2D 2D 2D 2D
Time Scaling
x
+
x
+
x
+
x
+
x
x(n)
y(n)
h(0) h(1) h(2) h(3) h(4) Delay Transfer
D D D D
D D D D
••• Retiming Autre solution systolique
EII3/M2R - 51
x +
x
x(n)
x +
x
+ y(n) D
D
+
x +
x
x(n)
x +
x
+ y(n)
D
+
D D
D
D
x +
x
x(n)
x +
x
+ y(n)
D
+
D D
D
D
D
Retiming 1 Retiming 2
••• Retiming Exemple 2 (cf.TD)
EII3/M2R - 52
Unfolding
Déroulage des récurrences ou des boucles • Réduction de la période d’échantillonnage • Augmentation du parallélisme
x(n) y(n)
a
+
x D
Synthèse d’architecture et optimisation de code ENSSAT EII/MASTER SISEA - systèmes embarqués
Olivier Sentieys, ENSSAT-IRISA 14
EII3/M2R - 53
Unfolding
x(n)
y(n)
a2
+
x
D
D D
+
a
x
x(n)
y(n) +
x D
+
aN-1
x N.D
D(n,N)
+
aN-2
x
D D
+
a2
x
D
+
a
x
•••
•••
••• aN
EII3/M2R - 54
Folding
Inverse du “Unfolding” Réutilisation des ressources
• Registres • Opérateurs arithmétiques
Ordonnancement des calculs Synthèse architecture
• cf. chapitre suivant
EII3/M2R - 55
Avant : Pour i depuis 1 à 100 faire a(i) := a(i) + b(i) i := i + 1 fait
Après : Pour i depuis 1 à 100 faire a(i) := a(i) + b(i) a(i+1) := a(i+1) + b(i+1) i:=i+2 fait
S'il y a 2 additionneurs dans l'unité de traitement, le temps d'exécution est divisé par 2.
Unrolling
Déroulage de boucles (loop unrolling) • Permet d’augmenter le parallélisme dans la boucle • Déroulage total (implicite) dans la plupart des cas • Déroulage partiel :
EII3/M2R - 56
tmp := xn * h(3);!
for i in 1 to N-1 loop!
!tmp := tmp + x(i) * h(N-i);!
end loop;!
yn <= tmp;!
tmp := xn * h(3);!
tmp001 := tmp + x(1) * h(3-1);!
tmp002 := tmp001 + x(2) * h(3-2);!
tmp003 := tmp002 + x(3) * h(3-3);!
yn <= tmp003;!
Code C vers SFG/DFG
Déroulage des boucles Résolution du contrôle (e.g. conditions)