Vous êtes sur la page 1sur 46
Méthodologies de conversion automatique en virgule fixe pour les applications de traitement du signal École

Méthodologies de conversion automatique en virgule fixe pour les applications de traitement du signal

virgule fixe pour les applications de traitement du signal École thématique ARCHI 03 Roscoff 31mars -

École thématique ARCHI 03 Roscoff 31mars - 4 avril

D. MENARD

Équipe de recherche R2D2 - IRISA/INRIA ENSSAT - Université de Rennes1

ARCHI 03 Roscoff 31mars - 4 avril D. MENARD Équipe de recherche R2D2 - IRISA/INRIA ENSSAT
ARCHI 03 Roscoff 31mars - 4 avril D. MENARD Équipe de recherche R2D2 - IRISA/INRIA ENSSAT
1
1
R2D2 - IRISA/INRIA ENSSAT - Université de Rennes1 1 I. Introduction - Codage en virgule fixe

I. Introduction

-

ENSSAT - Université de Rennes1 1 I. Introduction - Codage en virgule fixe I. Introduction .
Codage en virgule fixe I. Introduction . Arithmétique virgule fixe . Comparaison virgule flottante /
Codage en virgule fixe
I. Introduction
.
Arithmétique virgule fixe
.
Comparaison virgule flottante / virgule fixe
.
Objectifs du codage en virgule fixe
II. Évaluation de la précision des systèmes en virgule fixe
III. Évaluation de la dynamique des données
IV. Codage des données pour une implantation matérielle
V. Codage des données pour une implantation logicielle
Codage en virgule fixe • Codage en virgule fixe complément à deux m − 1
Codage en virgule fixe
Codage en virgule fixe complément à deux
m − 1
m
i
x
= −
2
S
+
b
2
i
i
=−
n
2
m-1
-1
-n
2 1
2 0
2
2
S
b
b
b 1
b 0
b m-1
b m-2
b -1
b -2
b -n+2
-n+1
-n
m
n
Partie entière
(m bits)
Partie fractionnaire
(n bits)
Domaine de définition
du codage :
Précision du codage
Pas de quantification :
m
m
n
− n
D =
[
2
,2
2
]
q
= 2
3
Codage en virgule flottante
Codage virgule flottante
• L’exposant associé à la donnée est codée au sein de celle-ci
• Les données sont composées de deux parties
Exposant
Mantisse
[
− 1
]
[
1
Sa valeur est comprise dans l’intervalle
− 1,
,1]
2
2
d
d
d
d
C
C
C
C
S E
d 1
d 2
E-1
S M
d e-1
C 1
C 2
C 3
1
2
E-1
1
2
3
C m-2
C m-1
M-1
Exposant (E bits)
Mantisse (M bits)
M
− 1
E − 1
u
S
i − 1
x
=
2
(
1)
E
1
+
S
C
2
avec
u
=
(
1)
E
i
d
2
i
i
2
i = 1
i = 1
4

Règles de l’arithmétique virgule fixe

Règles de l’arithmétique virgule fixe • Addition a+b • Choix d’un format identique • Alignement de
Règles de l’arithmétique virgule fixe • Addition a+b • Choix d’un format identique • Alignement de

Addition a+b

Choix d’un format identique

Alignement de la virgule

Extension de bits

Multiplication a × b

Représentation identique

Doublement du bit de signe

+

 

m

A

n

A

S

A

b

mA

 

b 1

b 0

 

b -1

b -2

b nA

   
       
   
 
m m B B
m
m
B
B

m

B

n

n

B

B

B n n B B
  m m B B m B n n B B n B
  m m B B m B n n B B n B

n

B

  m m B B m B n n B B n B

S

B

S

B

S S

B

B

b

b

mB mB

b

S

b

0 0

B

b S b 0 0 B
 

b

b

b

-1 -1

mB

b

b

b

-2 -2

0

b b b -2 -2 0

b

b

b

nB nB -1

0

b

-2

b

0

nB

S

R

b

mR

b 1

b 0

b -1

b -2

b nA

mR b 1 b 0 b -1 b -2 b nA m R = max(m ×

m

R

= max(m

×

A

, m

B

)

+

1

n

R

=

max(n

A

, n

B

)

 
A A
A
A

m

n

 

S A

 

b

mA

b 1

b 0

 

b -1

b -2

b nA

       
         
 
 

m

B

n

B

 

S B

b mB

b 0

b

-1

b nB

   
     
 
S R S R b mR b 1 b 0 b -1 b -2 b
S R
S R
b mR
b 1
b 0
b -1
b -2
b nR
= m
+ m
= n
+ n
m R
n R
A
B
A
B
5

Comparaison virgule fixe / flottante

Comparaison virgule fixe / flottante • Niveau de dynamique D N dB ( ) = 20.log
Comparaison virgule fixe / flottante • Niveau de dynamique D N dB ( ) = 20.log

Niveau de dynamique

D N dB

(

)

= 20.log

max( x ) min( x )
max(
x
)
min(
x
)

Rapport Signal à Bruit de Quantification

ρ dB

= 10.log P

s

P

e

Codage virgule flottante IEEE 754

Dynamique virgule fixe/flottante 1500 Virgule flottante 1000 DSP Virgule fixe 16 bits 500 Virgule fixe
Dynamique virgule fixe/flottante
1500
Virgule flottante
1000
DSP Virgule fixe
16 bits
500
Virgule fixe
0
10
15
20
25
30
Dynamique en dB

Nombre de bits

Rapport Signal à Bruit virgule fixe/flottante

100 b =16 bits 80 60 Virgule flottante 40 20 Virgule fixe 0 -50 0
100
b =16 bits
80
60
Virgule flottante
40
20
Virgule fixe
0
-50
0
50
RSB en dB

Dynamique du signal d entré e en dB

6

Arithmétique & systèmes embarqués

Arithmétique & systèmes embarqués • Arithmétique virgule flottante • Largeur des données stockées en
Arithmétique & systèmes embarqués • Arithmétique virgule flottante • Largeur des données stockées en

Arithmétique virgule flottante

Largeur des données stockées en mémoire : 32 bits (IEEE 754)

Opérateurs complexes (gestion de la mantisse et de l’exposant)

• Temps de développement faible

L’utilisateur ne doit pas coder les données

Applications spécifiques : audionumérique, faible volume

Arithmétique virgule fixe

Opérateurs plus simples

Processeur plus rapide

Largeur des données stockées en mémoire : 16 bits

Efficacité énergétique plus importante, consommation moins importante Processeur moins cher (surface du circuit moins importante)

Applications grand public DSP virgule fixe : 95% des ventes

7

Cycle de développement

Besoin Spécifications opératoires Spécification Spécification Spécifications Spécifications Spécifications
Besoin
Spécifications
opératoires
Spécification Spécification
Spécifications
Spécifications
Spécifications
fonctionnelles
fonctionnelles
technologiques
Simulation
Simulation
Performances
Description de
Contrainte
l’algorithme
de précision
Conception Conception fonctionnelle fonctionnelle
Conversion en
Conversion en
virgule virgule fixe fixe
Partitionnement Partitionnement
Implantation Implantation
Implantation Implantation
Matérielle Matérielle
Logicielle Logicielle
8
Implantation
Objectifs du codage des données • Codage en virgule fixe • Définir pour chaque donnée
Objectifs du codage des données
• Codage en virgule fixe
• Définir pour chaque donnée la position de la virgule
Nombre de bits pour les parties fractionnaires et entières
• Respecter les règles de l’arithmétique virgule fixe
• Objectifs et contraintes du codage en virgule fixe
• Maintenir la fonctionnalité de l’algorithme
Respecter les règles de l’arithmétique virgule fixe
Garantir l’absence de débordement
• Satisfaire la contrainte de précision
• Optimiser l’implantation de l’algorithme
Implantation matérielle : minimiser la surface (prix) et la
consommation d’énergie
Implantation logicielle : minimiser le temps d’exécution et la taille du
code
9
Objectifs du codage des données
Précision
Algorithme
virgule flottante
Architecture
Méthodologie
virgule fixe
Intégrité de
l’algorithme
Conception matérielle
(ASIC-FPGA)
Optimiser la largeur
des opérateurs du circuit
Minimiser la
surface du circuit
Conception logicielle
(DSP, µC)
Optimiser le « mapping »
de l’algorithme sur une
architecture figée
Minimiser le temps
d’exécution et la
taille du code
Contrainte de
précision
10
Processus de conversion en virgule fixe pi 3,14159 N 100 { floatx,h,z for(i=1;i<n;i++) Code C
Processus de conversion en virgule fixe
pi
3,14159
N
100
{
floatx,h,z
for(i=1;i<n;i++)
Code C
{
*z= *y++ + *h++
}
for(i=1;i<n;i++)
virgule flottante
{
*z= *y++ + *h++
}
VIRGULE FLOTTANTE.C
Évaluation Évaluation de de
Code
la la dynamique dynamique
virgule fixe
Compilation Compilation
Synthèse Synthèse
Évaluation Évaluation de de
Codage Codage des des
d’architecture d’architecture
la la précision précision
données données
Contrainte
Code
de précision
Architecture
assembleur
11
Application fil rouge : filtre FIR
• Équation aux différences
N
− 1
h(i)
=
a
∀ i ∈
[0,
N
1]
y n
(
)
=
i
a
.
x n
(
i
)
=
x n
(
) *
h n
(
)
avec
i
h(i) = 0
ailleurs
i = 0
x(n)
y(n)
h
• Graphe Flot de Signal
x (n)
z
-1
z
-1
z
-1
a
×
a
×
a
×
a
×
0
1
N-2
N-1
y (n)
+
+
+
12

II. Évaluation de la précision des systèmes en virgule fixe des systèmes en virgule fixe

Évaluation de la précision des systèmes en virgule fixe I. Introduction II. Évaluation de la précision
I. Introduction II. Évaluation de la précision des systèmes en virgule fixe . Métrique .
I. Introduction
II. Évaluation de la précision des systèmes en virgule fixe
.
Métrique
.
Méthodes basées sur la simulation
.
Méthodes analytiques
III. Évaluation de la dynamique des données
IV. Codage des données pour une implantation matérielle
V. Codage des données pour une implantation logicielle

Métrique pour l’évaluation de la précision

Métrique pour l’évaluation de la précision • Erreur de quantification associée à une donnée x :
Métrique pour l’évaluation de la précision • Erreur de quantification associée à une donnée x :

Erreur de quantification associée à une donnée x :

Différence entre la donnée en précision finie (virgule fixe) et la donnée en précision infinie (valeur exacte)

b

x

x

Propriété de l’erreur de quantification

Variable aléatoire (ergodique et stationnaire)

Caractérisée par sa puissance (moment d’ordre 2)

P

b

x

Métrique d’évaluation de la précision

Rapport Signal à Bruit de Quantification

P y : puissance du signal P b y : puissance du bruit de quantification

RSBQ =

P

y

P

b

y

14

x =

précision finie

précision infinie

Méthodes basées sur la simulation

Méthodes basées sur la simulation • Principe • Détermination de la puissance du bruit de quantification
Méthodes basées sur la simulation • Principe • Détermination de la puissance du bruit de quantification

Principe

Détermination de la puissance du bruit de quantification à partir de la simulation du système en virgule fixe (y fixed ) et en virgule flottante (y float )

La sortie en virgule flottante est considérée comme la référence

Hypothèse valide si l ’erreur liée à l ’arithmétique virgule flottante est négligeable par rapport celle liée à la virgule fixe

La largeur des données en virgule fixe doit rester faible

S float y float b ~ y - Entrée du système S fixed y fixed
S float
y float
b
~
y
-
Entrée du
système
S
fixed
y fixed

P

b

y

=

1

N pts

N pts

2

n = 0

15

(

y

float

y

fixed

)

Méthodes basées sur la simulation

Méthodes basées sur la simulation • Mise en œuvre : utilisation de librairies pour émuler l’arithmétique
Méthodes basées sur la simulation • Mise en œuvre : utilisation de librairies pour émuler l’arithmétique

Mise en œuvre : utilisation de librairies pour émuler l’arithmétique virgule fixe

Utilisation de classe C++ : systemC, gFix [Kim 98]

Temps de simulation élevés

Utilisation des caractéristiques de la machine hôte pour accélérer la simulation en virgule fixe

Utilisation de types optimisés : pFix [Kim 98]

Génération d’un code optimisé : FRIDGE [Ked 01]

Réduction des temps de simulation Augmentation du temps nécessaire pour générer le code utilisé pour la simulation

Temps d’optimisation du format des données très élevé [Sun 95]

Une nouvelle simulation en virgule fixe est requise dès que le format d’une donnée est modifié

16

Méthodes basées sur la simulation • Exemples de temps de simulation • Filtre IIR d’ordre
Méthodes basées sur la simulation
Exemples de temps de simulation
• Filtre IIR d’ordre 4, (PC pentium 100 MHz) [Sun 95]
Type
Flottant
gFix
pFix
VHDL
SPW
Temps de simulation (s)
2.19
340
16.3
181
60
Rapport fixe / flottant
1
155
7.4
82.6
27.4
• Comparaison des temps de simulation en virgule fixe et en
virgule flottante pour 6 applications [Ked 01]
FIR, DCT, IIR, FFT, auto-corrélation, produit de matrice
Type
Flottant
SystemC
SystemC
Code optimisé
précision limitée
Rapport fixe / flottant
1
540
120
3.6
17
Méthodes basées sur la simulation
• Adaptation de la méthode CESTAC à la virgule fixe
Détermination du nombre de bits significatifs au niveau de la
sortie de l’application
• Méthode CESTAC
• Estimation de l’erreur d’arrondi liée à l’arithmétique virgule
flottante à partir de quelques réalisations de l’application (3)
• Hypothèse : l’erreur en sortie suit une loi de probabilité
Gaussienne
Utilisation du test de Student pour déterminer l’intervalle de
confiance de l’estimation de la moyenne de l’erreur
Déduction du nombre de bits significatifs à partir de l’intervalle de
confiance
18

Méthodes analytiques

Méthodes analytiques • Méthode proposée par Toureille [Tou99] • Détermination de l’expression analytique du
Méthodes analytiques • Méthode proposée par Toureille [Tou99] • Détermination de l’expression analytique du

Méthode proposée par Toureille [Tou99]

Détermination de l’expression analytique du RSBQ

Détermination de l’expression de la puissance du bruit

Propagation des moments du bruit au sein d’un GFD

Définition d’un modèle de propagation des moments du bruit pour chaque type d’opérateur

Hypothèses simplificatrices Traitement uniquement des structures non-récursives

Développement d’une nouvelle méthode analytique

Estimation précise de la puissance du bruit de quantification

Traitement des structures linéaires récursives

19

Modèles de bruit de quantification • Modélisation du bruit généré lors d’un changement de format
Modèles de bruit de quantification
• Modélisation du bruit généré lors
d’un changement de format :
2 -n+k
2
-n+k-1
2
-n
S
m
x
x
m
k
m k-1
m n
MSB
• Erreur de quantification b :
k
LSB
Variable aléatoire discrète uniformément répartie
− q
µ
2
(n
k)
avec
q =
2
2
q
2
(
)
(pas de quantification après
changement de format)
− 2 k
σ
=
1
2
b
12
• Modèle de propagation du bruit :
• Addition :
= b
+ b
b z
x
y
• Multiplication :
= b
× s
+ s
× b
+ b
× b
b z
x
y
x
y
x
y
20

b

=

(

1

2

k

)

Systèmes linéaires • Système linéaire, entrée x, sortie y : • Équation aux différences K
Systèmes linéaires
Système linéaire, entrée x, sortie y :
• Équation aux différences
K
− 1
L
− 1
y n
(
)
=
a
.
x n
(
k
)
+
c
.
y n
(
l
)
k
l
k
= 0
l
= 1
Système non récursif si ∀i, c i = 0
• h(n) réponse impulsionnelle du système linéaire
+∞
y n
(
)
=
h
(
j
).
x n
(
j
)
=
h n
(
) *
x n
(
)
j
= 0
• H(z) fonction de transfert du système linéaire
K
− 1
k
a
.
z
k
Y
(
z
)
k
= 0
H
(
z
) =
=
L
− 1
X
(
z
)
l
c
.
z
l
l
= 1
21
Modélisation d’un système linéaire
Expression du bruit de quantification
N
− 1
g
b
=
y ˆ( n
)
y n
(
)
=
h
(
n
)*
b
(
n
)
+
h n
(
)*
b
'
(
n
)
+ ∆
h n
(
)*
x n
(
)
y
gi
gi
e
i
= 0
Source de bruit généré
lors d’un changement
de format
Erreur due à la
quantification
b
(n)
b
(n)
gi
gi
des coefficients
h
gi
Bruit de
quantification
b (n)
b (n)
de sortie
Bruit d’entrée
e
e
h
+
+
b (n)
y
b
(n)
h
∆h
x(n)
y(n)
Signal d’entrée
h
Signal de sortie
22
Puissance du bruit de quantification b y • Puissance du bruit de quantification [Men02b] 2
Puissance du bruit de quantification b y
Puissance du bruit de quantification [Men02b]
2
N
− 1
N
− 1
g
g
(
2
)
E
b
=
2
µ
+
µ
+
2
σ
y
b
b
b
b
gi
e
gi
e
i = 0
i = 0
Source de bruit généré
lors d’un changement
de format
b
(n)
b
(n)
gi
gi
h
gi
Bruit de
quantification
b (n)
b (n)
de sortie
Bruit d’entrée
e
e
h
+
+
b (n)
y
b
(n)
h
∆h
x(n)
y(n)
Signal d’entrée
h
Signal de sortie
23
Puissance du bruit de quantification b y
Puissance du bruit de quantification [Men02b]
2
N
− 1
N
− 1
g
g
(
2
)
E
b
=
2
µ
+
µ
+
2
σ
y
b
b
b
b
gi
e
gi
e
i = 0
i = 0
b′ (n)
b (n)
h (n)
k
b′ = b′
ou b′
e
g
i
Propriété : les bruits b’ sont des bruits blancs (les
échantillons ne sont pas corrélés d ’un point de vue temporel)
(
(
j 0
))
µ
=
µ
H e
b
b ′
2
σ
2
+∞
π
b
2
(
j
)
2
σ
=
2
H e
d Ω =
σ
h m
(
)
b
b
2
π
π
m = 0
24
Synoptique de la méthodologie G app GFDC Génération du Graphe Flot de Signal Génération Génération
Synoptique de la méthodologie
G
app
GFDC
Génération du Graphe Flot de Signal
Génération Génération
du du GFS GFS
GFS
G
s
Modélisation du système au niveau bruit
Modélisation Modélisation au au
niveau niveau bruit bruit
G
sn
Détermination Détermination des des
fonctions fonctions de de transfert transfert
G
H
Détermination Détermination de de
l’expression l’expression du du RSBQ RSBQ
RSBQ(b, m)
[Men02a]
25
Détermination des fonctions de transfert
• 1. Démantèlement des circuits
Objectif : transformation du Graphe Flot de Signal en graphes
acycliques (DAG)
• 2. Détermination des fonctions linéaires
Objectif : spécification du système par un ensemble de
fonctions linéaires
• 3. Détermination des fonctions de transfert partielles
Objectif : spécification du système par un ensemble de
fonctions de transfert partielles
• 4. Détermination des fonctions de transfert globales
Objectif : détermination des fonctions de transfert entre la
sortie et chaque entrée
26
Exemple du filtre FIR • Spécification du filtre au niveau bruit de quantification Présence d’une
Exemple du filtre FIR
Spécification du filtre au niveau bruit de quantification
Présence d’une source de bruit potentielle en entrée ou en sortie de
chaque opération
x (n)
-1
-1
-1
+
z
z
z
b' e
a
×
a
×
a
×
a
×
0
1
N-2
N-1
+
+
+
+
b
b
gm0
gm1
b gm N-2
b gm N-1
b
g mem
+
+
+
+
y (n)
N.b gm
b' e
x(n)
y(n)
+
h
+
b
g mem
27
Exemple du filtre FIR
• Expression du bruit en sortie du système
N
− 1
b
(
n
)
=
b
(
n
)
+
b
(
n
)
+
b
(
n
)
y
e
g mem
.
gm i
.
i
= 0
N
− 1
N
− 1
b
(
n
)
=
a b
.
(
n
l
)
+
b
(
n
)
+
b
(
n
)
y
l
e
g mem
.
gm i
.
l
= 0
i
= 0
• Fonction de transfert globale du système
N
− 1
B
(
z
)
=
H
(
z
)
B
(
z
)
+
B
(
z
)
+
b
(
z
)
y
e
g mem
.
gm i
.
i
= 0
Y(z) = H(z)X (z)
28
Exemple du filtre FIR  

Exemple du filtre FIR

 
Exemple du filtre FIR  

Expression de la variance du bruit en sortie du filtre FIR

 
 

N

1

 

2

σ

b

y

=

2

σ

b

e

+

2

σ

b

g mem

.

+

2

σ

b

gm i

.

i

= 0

 
 

+∞

 

N

1

 

2

σ

b

y

=

2

b

σ

e

h m ( )
h m
(
)

2

+

2

σ

b

g mem

.

+

2

σ

b

gm i

.

 
 

m =−∞

 

i = 0

 

2

N

1

q

2

2

 

2

=

q

e

2

+

g mem

.

+

N .

q

mi

σ

b

y

12

m

= 0

a

m

12

 

12

 
 
 

2

σ

b

=

1

(

α

h

α

h

.2

2 n

− 2 n − 2 n e + 2 gmem + N .2 mi
− 2 n
− 2 n
e
+
2
gmem
+ N
.2
mi

)

 
 

y

12

 
 

29

 
 
 

III. Évaluation de la dynamique des données

I. Introduction II. Évaluation de la précision des systèmes en virgule fixe III. Évaluation de
I. Introduction
II. Évaluation de la précision des systèmes en virgule fixe
III. Évaluation de la dynamique des données
.
Objectifs
.
Méthodes basées sur la simulation
.
Méthodes analytiques
.
Exemples et comparaison des méthodes existantes
IV. Codage des données pour une implantation matérielle
V. Codage des données pour une implantation logicielle

Objectifs

Objectifs • Estimation du domaine de définition [ x m i n , x m a
Objectifs • Estimation du domaine de définition [ x m i n , x m a

Estimation du domaine de définition [x min , x max ] de chaque donnée x en vue d’en déduire la position de la virgule m x

Partie entière

déduire la position de la virgule m x Partie entière S b m-1 b m-2 b

S

b m-1

b m-2

b 1

b 0

m x Partie entière S b m-1 b m-2 b 1 b 0 m b -1

m

b -1 b -2 b -n+2 b -n+1 b -n

b -1

b -2

b -n+2

b -n+1

b -n

x

m x =

log

2

( ( ) ) max x , x min max
(
(
) )
max
x
,
x
min
max

Critères de qualité pour l’estimation

Précision : minimiser l’erreur d’estimation

Éviter la présence de bits non utilisés au niveau des bits les plus significatifs de la donnée

Qualité : garantir l’absence de débordement

31

Méthodes basées sur la simulation

Méthodes basées sur la simulation • Détermination de la dynamique d’une donnée à partir de ses
Méthodes basées sur la simulation • Détermination de la dynamique d’une donnée à partir de ses

Détermination de la dynamique d’une donnée à partir de ses paramètres statistiques

Simulation de l’algorithme et collecte des échantillons

Détermination des paramètres statistiques et/ou des valeurs minimales et maximales

Détermination de la dynamique à partir des valeurs minimales X min et maximales X max obtenues [Aam 01]

350 300 250 200 150 100 50 0 -4 -3 -2 -1 0 1 2
350
300
250
200
150
100
50
0
-4
-3
-2
-1
0
1
2
3
4
X min
X max

32

Méthodes basées sur la simulation

Méthodes basées sur la simulation • Méthode proposée par Kim [Kim98] • Distribution uni-modale ( −
Méthodes basées sur la simulation • Méthode proposée par Kim [Kim98] • Distribution uni-modale ( −

Méthode proposée par Kim [Kim98]

Distribution uni-modale

(1.2 <

~

µ + ( x i
µ
+
(
x
i

k x

 

4)

 

x i max

=

i

+

k

x

< 5)
i

et symétrique

s x

0

i

[ ( i − ] 4 E x µ ) xi = x 4 i
[ (
i − ]
4
E
x
µ
)
xi
=
x
4
i
σ
x
i
[ (
3 ]
E
x
i − )
µ
xi
=
skewness
s x
3
i
σ
x
i

Distribution multi-modale ou non symétrique

x = + r x x − x i min i R i i 0%
x
= + r
x
x
x
i
min
i
R
i
i
0%
0%
1%
x
= + r
x
x
x
i
max
i
R
i
i
100%
100%
99%
x défini tel que
P
(
x
<
x
)
=
i
i
i 99%
99%

0.99

x i 100% x i 99% 33
x i 100%
x i 99%
33

k

k − 3 kurtosis

3

kurtosis

Méthodes analytiques

Méthodes analytiques • Propagation de la dynamique des entrées au sein de l’application • Utilisation des
Méthodes analytiques • Propagation de la dynamique des entrées au sein de l’application • Utilisation des

Propagation de la dynamique des entrées au sein de l’application

Utilisation des résultats de l’arithmétique d’intervalle [Kea 96]

Opérations

min (z)

max (z)

z=x+y

min(x)+min(y)

max(x)+max(y)

z=x-y

min(x)-max(y)

max(x)-min(y)

z=x× y

min(E)

max(E)

E =(min(x)min(y),min(x)max(y), min(y)max(x),max(x)max(y))

Traitement des structures non-récursives Estimation pessimiste

Absence de prise en compte de la corrélation entre les données

34

Méthodes analytiques

Méthodes analytiques • Systèmes linéaires : utilisation de normes • Normes L1 x(n) y(n) h y
Méthodes analytiques • Systèmes linéaires : utilisation de normes • Normes L1 x(n) y(n) h y

Systèmes linéaires : utilisation de normes

Normes L1

x(n) y(n) h
x(n)
y(n)
h

y max1

= max

n

( ) x n ( ) .
(
)
x n
(
)
.

h m ( ) m =−∞
h m
(
)
m =−∞

Systèmes linéaires non-récursifs : résultats identiques à ceux obtenus avec l’arithmétique d’intervalle

Norme Chebychev

( ) ( ) = max x n ( ) max H ( ω )
(
)
(
)
= max
x n
(
)
max
H (
ω
)
y max 2
n
ω

Signal d’entrée du type

x(n) = cos(ω.n.T )

35

Exemple filtre FIR Réponse impulsionnelle du filtre 1 0.2 0.15 • Entrée x∈[−1,1] 0.1 •
Exemple filtre FIR
Réponse impulsionnelle du filtre 1
0.2
0.15
• Entrée
x∈[−1,1]
0.1
• Filtre 1 : 41 cellules
0.05
a 0
• Filtre 2 : 32 cellules
0
a 1
5 10 15 20 25 Méthodes Filtre 1 Filtre 2 m x m x y
5
10
15
20
25
Méthodes
Filtre 1
Filtre 2
m x
m x
y max
y max
Méthodes analytiques
Arith. Intervalle, Norme L 1
1.35
1 6.26
3
Norme Chebychev
1.004
1 4.13
3
Méthodes statistiques
Chirp
1.06
1
4.2
3
Bruit blanc gaussien
0.43
-1
1.77
1
Bruit blanc uniforme
0.8930
0
4.2
3

30

35

36

40

Exemple filtre IIR • Équation aux différences y(n) = x(n) + y n − 2
Exemple filtre IIR
• Équation aux différences
y(n) = x(n) +
y n −
2
1 (
1)
1
Réponse
impulsionnelle du filtre IIR
• Réponse impulsionnelle
0.8
n
0.6
1
h n
(
)
=
0.4
2
0.2
0
• Dynamique de y
0
1
2
3
4
5
6
7
8
9
10
m
+∞
+∞
1
1
(
)
(
)
max
y n
(
)
= max
x n
(
)
.
h m
(
)
=
=
= 2
n
n
2
1
1/ 2
m
=−∞
m = 0
37
Comparaison des méthodes
Méthode statistique
Méthode analytique
Précision
Erreur d’estimation faible
Méthode conservatrice
(estimation dans le pire cas)
Qualité
Pas de garantie sur
l’absence de débordement
Garantie sur l’absence
de débordement
Fonction de la
représentativité des signaux
Structures traitées
Toutes
Structures linéaires et non-
linéaires non-récursives
Connaissances
Signaux d’entrée
nécessaires
Domaine de définition des
entrées
38

IV. Codage des données en virgule fixe pour une implantation matérielle en virgule fixe pour une implantation matérielle

données en virgule fixe pour une implantation matérielle I. Introduction II. Évaluation de la précision des
I. Introduction II. Évaluation de la précision des systèmes en virgule fixe III. Évaluation de
I. Introduction
II. Évaluation de la précision des systèmes en virgule fixe
III. Évaluation de la dynamique des données
IV. Codage des données pour une implantation matérielle
.
Objectifs
.
Lien entre le codage des données et la synthèse
.
Regroupement des données
.
Présentation des méthodes
V. Codage des données pour une implantation logicielle

Objectifs

Objectifs • Implantation matérielle dans un ASIC ou un FPGA • Définition de l’architecture du circuit
Objectifs • Implantation matérielle dans un ASIC ou un FPGA • Définition de l’architecture du circuit

Implantation matérielle dans un ASIC ou un FPGA

Définition de l’architecture du circuit

Possibilité d’adapter la largeur des opérateurs aux contraintes de précision

Objectifs de l’implantation

Minimiser le coût

Optimiser la surface du circuit

Minimiser la consommation d’énergie

Optimiser la largeur des opérateurs

Objectif du processus de conversion en virgule fixe

Minimiser la surface du circuit sous contrainte de précision

(

Min S(b)

b ∈Ζ

+

)

tel que

RSBQ(b)

RSBQ

min

40

Lien entre le codage et la synthèse

Lien entre le codage et la synthèse Comment regrouper les données ? Représentation intermédiaire de l’application
Lien entre le codage et la synthèse Comment regrouper les données ? Représentation intermédiaire de l’application
Comment regrouper les données ? Représentation intermédiaire de l’application : GFD, GFDC Largeur opérateurs
Comment regrouper
les données ?
Représentation intermédiaire
de l’application : GFD, GFDC
Largeur
opérateurs
Regroupement des
opérations opérateurs
Sélection
Optimisation
largeur données
Ordonnancement
Largeur opérateurs
Assignation
Quel couplage
codage - synthèse ?
Opérations opérateurs

Temps d ’exécution des

opérateurs

41

Niveau de regroupement des données

Niveau de regroupement des données • Algorithme : toutes les données ont la même largeur •
Niveau de regroupement des données • Algorithme : toutes les données ont la même largeur •

Algorithme : toutes les données ont la même largeur

Le processus d’optimisation de la largeur des données peut être réalisé avant la synthèse d’architecture [Mar 01]

Qualité de l’implantation en terme de surface ?

Bloc : toutes les données d’un bloc ont la même largeur

Limitation du nombre de variables pour l’optimisation

Regroupement dirigé par

L’analyse du graphe de l’application [Sun 95] La synthèse : couplage du codage et de la synthèse [Kum 01]

Donnée : chaque donnée à sa propre largeur

Codage puis synthèse de l’architecture [Kum 98], [Ked 98]

Affectation d’opérations de largeur différente sur un même opérateur [Con 01]

42

Méthode GAUT (LESTER - Lorient) • Regroupement au niveau de l’algorithme • Largeur identique pour
Méthode GAUT (LESTER - Lorient)
• Regroupement au niveau de l’algorithme
• Largeur identique pour toutes les données (b app ) et utilisation
d’un seul format (virgule fixe cadrée à gauche)
Utilisation d’une méthode analytique pour évaluer P b
Relation simple entre la puissance du bruit P b et b app
1
A
RSBQ
2
2(
b
1)
min
P
=
Aq
=
A
.2
app
b
b
app
1 log
2
10
10
+
1
2
P
s
• Séparation des processus de synthèse et de codage
pi
3.14159
N
100
{
floatx,h,z
for(i=1;i<n;i++)
Partie Partie
Synthèse Synthèse
{
*z= *y++ + *h++
}
Calcul Calcul deb deb
for(i=1;i<n;i++)
frontale frontale
app app
(GAUT) (GAUT)
{
*z= *y++ + *h++
Architecture
}
VIRGULE FLOTTANTE.C
Code VHDL
de l’application
RSBQ min
43
Méthode FRIDGE (IISPS - Aix la chapelle)
Regroupement au niveau donnée
Code C virgule flottante
Annotation
Annotations locales
ou globales
Utilisateur
Code mixte
(fixe / flottant)
Interpolation
Évaluation de
la précision
RSBQ min
(simulation)
Code virgule fixe
(SystemC)
Optimisation
Spécification virgule
fixe optimisée
Synthèse de l’architecture
44
Graphe flot
de données
Les différentes phases de la méthode • Annotation • Définition du format de quelques données
Les différentes phases de la méthode
• Annotation
Définition du format de quelques données en virgule fixe
• Interpolation
Détermination du format virgule fixe des données non-
annotées par propagation de règles
Partie entière (m x ) : utilisation de l’arithmétique d’intervalle
(
)
Partie fractionnaire (n x ) : utilisation des règles
n
= f
n ,n
z
Ops
x
y
• Optimisation
Minimisation de la largeur des données sous contrainte de
précision globale RSBQ min
Utilisation d’une contrainte de précision locale :
dégradation maximale autorisée du RSBQ en sortie d’un
RSBQ
opérateur liée à la réduction de la largeur de la sortie de
l’opérateur
45
Algorithme d’optimisation
Tant que (RSBQ(b) > RSBQ min )
// contrainte de précision globale
{
// modification de la contrainte de précision locale
∆ RSBQ = ∆ RSBQ + ε
Pour chaque (x i )
{
Tant que ( ∆ RSBQ (b x i ) < ∆ RSBQ )
{
// pour chaque donnée diminution de la largeur tant
b
= b x
-1
x
//
que la contrainte de précision locale est satisfaite
i
i
Calcul(∆ RSBQ (b x i ))
// évaluation analytiquede ∆ RSBQ (x i )
}
}
Calcul(RSBQ(b))
// évaluation par simulationde RSBQ(b)
}
46
Méthode FPO (Université de Séoul) • Différentes méthodes proposées • Regroupement au niveau donnée [Kum
Méthode FPO (Université de Séoul)
Différentes méthodes proposées
• Regroupement au niveau donnée [Kum 98]
• Regroupement au niveau bloc par analyse du graphe flot de
signal de l’application [Sun 95]
Regroupement réalisé par l’utilisateur
Regroupement automatique
Données connectées par un délai ou un multiplexeur
Entrées et sortie d’un additionneur
• Regroupement au niveau bloc : couplage des processus de
codage en virgule fixe et de synthèse [Kum 01]
Regroupement des opérations réalisées sur un même
opérateur
47
Méthode FPO
Regroupement au niveau donnée [Kum 98]
Code C virgule flottante
Détermination dynamique
et position de la virgule
Détermination
b
min
Évaluation de la
précision
(simulation)
Niveau algorithme
Détermination
b
opt
Spécification virgule
fixe optimisée
Niveau synthèse
d’architecture
Synthèse de
l’architecture
48
Les différentes phases de la méthode • Détermination de la dynamique (méthode statistique) et de
Les différentes phases de la méthode
• Détermination de la dynamique (méthode statistique) et
de la position de la virgule des données
• Détermination de la largeur minimale de chaque donnée
b i.min définie telle que
RSBQ b
(
) >
RSBQ
min b
(
)
min
i
+
∈Ζ
b
=
B
∀ j
i
b i
j
max
• Détermination de la largeur optimisée des données
Au départ la largeur des données est fixée à leur valeur min b i.min
• Heuristique en deux phases :
Incrémentation de la largeur de toutes les données tant que la
contrainte de précision n’est pas satisfaite
Décrémentation de la largeur des données, une par une, tant
que la contrainte de précision est satisfaite
49
Méthode FPO
Regroupement au niveau bloc [Sun 95] Fixed-point
optimizer (Cadence)
Code C virgule flottante
Regroupement
Regroupement par
analyse du graphe
flot de signal
Détermination dynamique
et position de la virgule
Détermination
b
min
Évaluation de la
précision
Niveau algorithme
Détermination
b
opt
Spécification virgule
fixe optimisée
Niveau synthèse
d’architecture
Synthèse de
l’architecture
50
Méthode FPO • Regroupement au niveau bloc et couplage codage synthèse [Kum 01] Code C
Méthode FPO
• Regroupement au niveau bloc et couplage codage
synthèse [Kum 01]
Code C virgule flottante
Regroupement
Détermination dynamique
et position de la virgule
Regroupement par
analyse du graphe
flot de signal
Détermination
b
min
Évaluation de la
précision
Synthèse de
l’architecture
• Ordonnancement
• Assignation
Détermination
b
opt
51
Synthèse de l’architecture
• Ordonnancement par liste
• Une liste pour chaque opérateur de largeur différente
• Traitement en priorité des opérations de largeur élevée
• Assignation d’une opération à un opérateur de largeur plus
élevée si celui-ci est libre
• Processus itératif pour l’ordonnancement et
l’optimisation de la largeur des opérateurs
• 1. Estimation du nombre minimal d’opérateurs nécessaires
• 2. La largeur des opérateurs est fixée à la valeur maximale
• 3. Ordonnancement de l’application
• 4. Réduction de la largeur d’un des opérateurs tant que la
contrainte de temps est satisfaite lors de l’ordonnancement
52

V. Codage des données en virgule fixe pour une implantation logicielle en virgule fixe pour une implantation logicielle

données en virgule fixe pour une implantation logicielle I. Introduction II. Évaluation de la précision des
I. Introduction II. Évaluation de la précision des systèmes en virgule fixe III. Évaluation de
I. Introduction
II. Évaluation de la précision des systèmes en virgule fixe
III. Évaluation de la dynamique des données
IV. Codage des données pour une implantation matérielle
V. Codage des données pour une implantation logicielle
.
Architecture et génération de code pour DSP
.
Objectifs
.
Présentation des méthodes existantes

Architecture des DSP

Architecture des DSP • Architecture conventionnelle • Structure multiplication-accumulation MAC • Registres
Architecture des DSP • Architecture conventionnelle • Structure multiplication-accumulation MAC • Registres

Architecture conventionnelle

Structure multiplication-accumulation MAC

Registres dédiés aux opérateurs

Connections registre-opérateur optimisées

Jeu d’instructions spécialisé

Architecture parallèle

b b nat nat MAC ×××× b mult + Acc Acc b add
b
b nat
nat
MAC
××××
b
mult
+
Acc Acc
b add

Unités fonctionnelles indépendantes

File de registres

Tous les registres sont connectés à tous les opérateurs

Utilisation de clusters

Parallélisme au niveau instruction

Jeu d’instructions VLIW

U 1 U 2 U 3 U 4 File de registres VLIW (orthogonale) 54
U 1
U 2
U 3
U 4
File de registres
VLIW (orthogonale)
54
Architecture des DSP • Largeur naturelle du processeur (b nat ) • DSP: largeur fixe
Architecture des DSP
• Largeur naturelle du processeur (b nat )
• DSP: largeur fixe : 16 ou 24 bits
• Cœur de DSP et ASIP : largeur paramétrable
CD2450 (Clakspur) : 16 à 24 bits;
EPICS (philips) : 12, 16, 18, 20, 24 bits;
PalmCore (VLSI / DSP Group): 16, 20, 24 bits
• Largeur des données au sein de l’unité de traitement
• Instructions classiques
Calcul d’une multiplication-addition sans perte de précision
Bits de garde au niveau de l’accumulateur
• Instructions double précision
Augmentation de la précision : données stockées en mémoire
en double précision
Augmentation des temps de calcul
55
Architecture des DSP
Instructions SWP (Sub-Word Parallelism)
Utilisation du parallélisme au niveau des données
Réduction du temps d’exécution
N bits
N/2
N bits
N/2
1
0
1
0
x
1
0
x
x
1
1
x
0
y
y
1
y
0
y
0
x
x
1
x
x
0
y
y
1
y
y
0
××××
+ -
z
1
z
0
z
1
z
z
0
1
z
0
2N bits
N bits
Loi de quantification
• Troncature : par défaut
• Arrondi : quelques DSP
56
Architecture des DSP  

Architecture des DSP

 
Architecture des DSP  

Capacités de recadrage

 
 

Registres à décalage spécialisés

 
 

Décalages en sortie du multiplieur (C50 : -6, 0, 1, 4)

 
 

Registres à décalage en barillet

 
 

Coût d’un recadrage avec un registre en barillet

 
 

Architectures conventionnelles

 
 

Le coût du recadrage est fonction de sa position

 
 

x

1

x

2

       
 

Coût du recadrage (cycles)

 

r 3

r 3 r' 3
r 3 r' 3

r' 3

Recadrage

TMS320C54x

OakDSPCore

   

x

h

+
+

h

 

FIR

FIR Sym

FIR

FIR Sym

r 2
r
2
×
×
 
r 2
r
2

r

0

 

111

 

1

×
×
 

r

1

 

213

 

2

r

2

 

534

 

1

r 1 +y
r
1
+y
r 1 +y

r

0

r 1
r
1

r 0

r

3

 

-2-

 

2

r 3   -2-   2 + y
+

+

+

y

FIR Sym : filtre FIR symétrique

 

FIR

FIR Symétrique

57

Architecture des DSP  

Architecture des DSP

 
Architecture des DSP  

Architecture VLIW

 
 

Sur-coût C s lié au décalage en sortie du multiplieur pour différentes applications [Men02d]

 
 

t wos : temps d’exécution avec l’opération de recadrage

t ws

: temps d’exécution sans l’opération de recadrage

 

C

s

=

t

wos

t

wos

t

ws

 

Filtre

 

IPC

   
× Opération de recadrage >> + y
×
Opération de
recadrage
>>
+
y
 

C s (%)

Filtre FIR réel(traitement par échantillon)

7.5

47

Filtre FIR réel(traitement par bloc)

   

6

22

Filtre FIR réel symétrique(échantillon)

7.2

47

Filtre FIR réel symétrique(bloc)

 

7.4

35

Filtre FIR complexe(échantillon)

 

6.5

45

Filtre FIR complexe(bloc)

 

4.875

0

TMS320C62x :

Filtre IIR d’ordre 2

   

2.8

18

IPC max = 8

 

58

 

Interaction génération de code - codage

 
 
 
 

Sélection d’instructions

 
 

Le choix de l’instruction est lié à la largeur des opérandes

 

Le type des données doit être déterminé avant la sélection d’instructions

Allocation et assignation de registres

 
 

Renvoi de données intermédiaires en mémoire (spilling)

 

Optimisation de la largeur des données renvoyées en mémoire

Compromis précision - temps de transfert

Ordonnancement

 
 

DSP avec parallélisme au niveau instruction : le coût d’une

 

opération de recadrage est lié à la manière dont les instructions sont ordonnancées [Men02d] Optimisation du placement des opérations de recadrage lors de l’ordonnancement des instructions

 

59

 

Objectifs

 
des instructions   59   Objectifs       • Implantation logicielle dans un DSP ou
des instructions   59   Objectifs       • Implantation logicielle dans un DSP ou
 
 

Implantation logicielle dans un DSP ou un ASIP

 
 

Développement du code

 

Architecture figée Architectures diverses

 

Objectif de l’implantation

 
 

Minimiser le temps d’exécution et la taille du code

 

Objectif du processus de conversion en virgule fixe

 
 

Minimiser le temps d’exécution du code sous contrainte de précision

 

Optimiser la largeur des donnée : sélectionner les instructions (classiques, double-précision, SWP) permettant de minimiser le temps d ’exécution Optimiser le placement des opérations de recadrage en vue de réduire le temps d’exécution

60

Méthode « Autoscaler for C »

Méthode « Autoscaler for C » • Université de Séoul [Kum 00] #define pi 3.1416 #define
Méthode « Autoscaler for C » • Université de Séoul [Kum 00] #define pi 3.1416 #define

Université de Séoul [Kum 00]

#define pi 3.1416 #define pi 3.1416 Code C virgule flottante main() { float x,h,z for(i=1;i<n;i++)
#define pi 3.1416
#define pi 3.1416
Code C virgule flottante
main()
{
float x,h,z
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
VIRGULE
FLOTTANTE.C
Génération Génération I.R. I.R.
Détermination Détermination
Dynamique Dynamique
« « Profiling Profiling » »
Modification Modification
des des types types
Calcul Calcul Décalage Décalage
Génération Génération code code C C
#define pi 3.1416
#define pi 3.1416
Contrainte locale
main()
{
float x,h,z
for(i=1;i<n;i++)
de dégradation
{
Code C ANSI
*z= *y++ + *h++
}
for(i=1;i<n;i++)
virgule fixe
{
de la précision
*z= *y++ + *h++
}
VIRGULE
FLOTTANTE.C
SUIF

61

Les différentes phases de la méthode

Les différentes phases de la méthode • Évaluation de la dynamique • Méthode statistique • Détermination
Les différentes phases de la méthode • Évaluation de la dynamique • Méthode statistique • Détermination

Évaluation de la dynamique

Méthode statistique

Détermination des recadrages

Pour chaque expression du code, résolution d’un système d’équations linéaires

Optimisation des recadrages

Minimisation de la fonction de coût des recadrages

Réduction du coût : égalisation du format de certaines données

Définition d’une dégradation maximale autorisée de la précision de chaque donnée

Le temps d’exécution d’un recadrage t r de d r bits est défini a priori en fonction du type de registre à décalage :

Présence d’un registre à décalage en barillet : t r = 1 cycle

Absence de registre à décalage en barillet : t r = d r cycles

62

Méthode FRIDGE

Méthode FRIDGE Code C virgule flottante [Wil 98, Coo 02] Annotations locales Annotation ou globales Évaluation
Méthode FRIDGE Code C virgule flottante [Wil 98, Coo 02] Annotations locales Annotation ou globales Évaluation

Code C virgule flottante

[Wil 98, Coo 02] Annotations locales Annotation ou globales Évaluation de Interpolation la précision RSBQ
[Wil 98, Coo 02]
Annotations locales
Annotation
ou globales
Évaluation de
Interpolation
la précision
RSBQ min
Optimisation
Spécification virgule
fixe optimisée
System C
Embedded
Génération d’un code C virgule fixe identique au
bit près à la spécification d’origine
Émulation des opérations de quantification
Approach
Code C

virgule fixe

63

Objectifs de nos travaux de recherche

Objectifs de nos travaux de recherche • Développement d’une méthodologie de compilation d’algorithmes
Objectifs de nos travaux de recherche • Développement d’une méthodologie de compilation d’algorithmes

Développement d’une méthodologie de compilation d’algorithmes spécifiés en virgule flottante pour les processeurs programmables en virgule fixe sous contrainte de précision globale

Évaluation analytique de la précision du système (RSBQ)

Obtention d’une spécification en virgule fixe optimisée

Prise en compte de l’architecture du processeur cible Couplage des processus de génération de code et de conversion en virgule fixe

Optimisation de l’implantation sous contrainte de précision

Minimisation du temps d’exécution du code généré

Choix du type des données Placement des opérations de recadrage

64

Synoptique de la méthodologie Code source C Partie haute SUIF Évaluation Évaluation de de la
Synoptique de la méthodologie
Code source C
Partie haute
SUIF
Évaluation Évaluation
de de la la
précision précision
RI SUIF-CALIFE
GFDC
Suif Suif vers vers C C
Conversion Conversion
RSBQ(b,m)
en en
virgule virgule fixe fixe
RSBQ min
Infrastructure Infrastructure
Code C ou
SystemC
virgule fixe
de de génération génération
de de code code
CALIFE CALIFE
Modélisation
du processeur
Description
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n;i++)
Code assembleur
{
ARMOR
*z= *y++ + *h++
}
ArmorC ArmorC
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
VIRGULE FL
OTTANTE.C
Infrastructure
de compilation
Infrastructure
de compilation
du DSP
[Men02c, Men02e]
65
Synoptique de la méthodologie
Code source C
Partie haute
SUIF
Détermination Détermination
dynamique dynamique
Évaluation Évaluation
de de la la
précision précision
RI SUIF-CALIFE
GFDC
Suif Suif vers vers C C
RSBQ(b,m)
RSBQ min
Infrastructure Infrastructure
Code C ou
SystemC
virgule fixe
de de génération génération
de de code code
Optimisation Optimisation
des des formats formats
CALIFE CALIFE
Modélisation
du processeur
Description
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n;i++)
Code assembleur
{
ARMOR
*z= *y++ + *h++
}
ArmorC ArmorC
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
VIRGULE FL
OTTANTE.C
du DSP
66
Exemple filtre FIR • Code C du filtre FIR , , { { } 67
Exemple filtre FIR
Code C du filtre FIR
,
,
{
{
}
67
Exemple filtre FIR
Graphe flot de données et
de contrôle du filtre FIR
input
=
x[0]
h[0]
××××
B.B. 1
GFD 1
Acc
GFC For
x[i-1]
Acc
GFC FIR
For
B.B. 2
z
-1
x[i]
h[i]
B.B. 3
Acc
××××
=
u
y
+
B.B : bloc de base
GFD 2
Acc
68
GFD 3

Détermination de la dynamique

Détermination de la dynamique GFDC D entrées Dynamique entrées GFDC + D i (Dynamique) Détermination Détermination
Détermination de la dynamique GFDC D entrées Dynamique entrées GFDC + D i (Dynamique) Détermination Détermination
Détermination de la dynamique GFDC D entrées Dynamique entrées GFDC + D i (Dynamique) Détermination Détermination

GFDC

D entrées

Dynamique entrées

de la dynamique GFDC D entrées Dynamique entrées GFDC + D i (Dynamique) Détermination Détermination
de la dynamique GFDC D entrées Dynamique entrées GFDC + D i (Dynamique) Détermination Détermination

GFDC + D i

(Dynamique)

Détermination Détermination dynamique dynamique Détermination Détermination position position virgule virgule
Détermination Détermination
dynamique dynamique
Détermination Détermination
position position virgule virgule
Détermination Détermination
type type des des données données
Optimisation Optimisation format format
des des données données

Détermination du domaine de définition des données

Technique implantée

Dynamique

des entrées

GFDC Transformation Transformation GFDC GFDC GFS GFS GFS G’ app GFS Détermination Détermination de de
GFDC
Transformation Transformation
GFDC GFDC GFS GFS
GFS
G’ app
GFS
Détermination Détermination de de la la
Mise Mise à à jour jour de de la la
dynamique dynamique du du GFS GFS
dynamique dynamique du du GFDC GFDC
G’ dyn
GFDC
G dyn
- Arithmétique d’intervalle
- Norme L1, Chebychev

69

Exemple filtre FIR

Exemple filtre FIR • Propagation de la dynamique des entrées au sein du graphe flot de
Exemple filtre FIR • Propagation de la dynamique des entrées au sein du graphe flot de

Propagation de la dynamique des entrées au sein du graphe flot de signal représentant l’application

[-1,1] x (n) z -1 z -1 z -1 b × b × b ×
[-1,1]
x (n)
z
-1
z
-1
z
-1
b
×
b
×
b
×
b
×
0
1
N-2
N-1
N
− 1
N
− 1
[- |b 1 |, |b 1 | ]
,
b
[- |b 0 |, |b 0 | ]
b i
i
i = 0
i
= 0
+
+
+
y (n)
(
)
max
y n
(
)
=
6.26
n

Normes L1

max

n

( ) y n ( )
(
)
y n
(
)

N 1

= max h m ( ) = b = 6.26 n i
= max
h m
(
)
=
b
= 6.26
n
i

m =−∞

m = 0

70

Détermination de la position de la virgule

Détermination Détermination dynamique dynamique GFDC + D i GFDC + m i (Dynamique) (Position de
Détermination Détermination
dynamique dynamique
GFDC + D i
GFDC + m i
(Dynamique)
(Position de la virgule)
Détermination Détermination
position position virgule virgule
Modèle du processeur
• Objectifs :
Détermination Détermination
type type des des données données
• Détermination de la position de la virgule (m i )
Optimisation Optimisation format format
des des données données
• Insertion des opérations de recadrage

Technique :

Propagation de la virgule par parcours des graphes flots de données (GFD)

Nécessité d’éliminer les circuits présents au sein des GFD Définition de règles pour les données et les opérations

Prise en compte de la présence de bits de garde

71

Détermination de la position de la virgule • Données ( ( ) ) m x
Détermination de la position de la virgule
• Données
(
(
) )
m x =
log
max
x
,
x
2
min
max
• Opérations :
y
m
y
m
y'
y’
Multiplication
Ops
z’
z
m
x’
m z'
m
x'
m
x
z
m
= m
+
m
+ 1
x
y
Addition (sans bits de garde)
Définition d’un format commun
m
=
max(
m
,
m
,
m
)
c
x
y
z
72

z

'

x

Exemple filtre FIR • Détermination de la position de la virgule au sein du GFD
Exemple filtre FIR
Détermination de la position de la virgule au sein du
GFD représentant le cœur de la boucle FOR
[
0,99 ; 0.99]
GFD 2
x[i-1]
m
=
0
x
z
-1
[
0,99 ; 0.99]
[
0,19 ; 0.98]
x[i]
h[i]
m
= 0
m
=
0
x
h
m
=
m
+
m
+
1
=
1
××××
z mult
.
h
x
[
6,26 ; 6,26]
Acc
[
0,98 ; 0.98]
m
= 3
u
Acc
m
= 0
u
+
m
= m
max(
m
,
,
m
)
c
u
Acc
Acc
m
= 3
c
[
6,26 ; 6,26]
Acc
m
= 3
Acc
73
Exemple filtre FIR
Insertion des opérations de recadrage au sein du GFD
représentant le cœur de la boucle FOR
[
0,99 ; 0.99]
GFD 2
x[i-1]
m
=
0
x
z
-1
[
0,99 ; 0.99]
[
0,19 ; 0.98]
x[i]
h[i]
m
= 0
m
=
0
x
h
m
=
m
+
m
+
1
=
1
××××
z mult
.
h
x
m
1
u
1 =
u
1
[
6,26 ; 6,26]
>>
Acc
m
= 3
Acc
m
3
u
2 =
2
u
+
m
=
max(
m
,
m
,
m
)
c
u
Acc
Acc
[
6,26 ; 6,26]
m
=
3
c
Acc
m
=
3
Acc
74

Détermination du type des données

Détermination Détermination GFDC + m i dynamique dynamique (Position de la virgule) GFDC + (b
Détermination Détermination
GFDC + m i
dynamique dynamique
(Position de la virgule)
GFDC + (b i ,m i ,n i )
Détermination Détermination
(Format des données)
RSBQ min
position position virgule virgule
Modèle du processeur
Détermination Détermination
• Détermination de la largeur des données
type type des des données données
Prise en compte des différents types manipulés par
le DSP :
Optimisation Optimisation format format
des des données données

Instructions classiques Instructions double précision Instructions SWP

Sélection de la suite d’instructions permettant de

Minimiser le temps d’exécution global

Satisfaire la contrainte de précision (RSBQ min )

min T (b) ( ) tel que RSBQ(b) ≥ RSBQ min b ∈ B
min T (b)
(
)
tel que
RSBQ(b)
≥ RSBQ
min
b
∈ B

75

Exemple opération MAC

Exemple opération MAC • Jeu d’instructions du processeur Instruction Fonction Temps Largeur des opérandes
Exemple opération MAC • Jeu d’instructions du processeur Instruction Fonction Temps Largeur des opérandes

Jeu d’instructions du processeur

Instruction

Fonction

Temps

Largeur des opérandes E/S

j

k

γγγγ k

d’execution t k

b

e1

b

e2

b

s

j

1

MULT

0.25

 

8

 

8

16

j

2

MULT

0.5

16

16

32

J

3

MULT

1

32

32

64

j

4

ADD

0.25

16

16

16

j

5

ADD

0.5

32

32

32

j

6

ADD

1

64

64

64

Graphe flot de données x[i] h[i] o ×××× E = { j , j ,
Graphe flot de données
x[i]
h[i]
o
××××
E
=
{
j
,
j
,
j
}
0
I
1
2
3
0
u
o
+
E
=
{
j
,
j
,
j
}
1
I
4
5
6
1
GFD 2
Acc

Modélisation des solutions sous forme d’arbre

j 1 j 2 j 3 8×8 16 16×16 32 32×32 64 j 4 j
j 1
j 2
j 3
8×8 16
16×16 32
32×32 64
j 4
j 5
j 6
j 4
j 5
j 6
j 4
j 5
j 6

Instruction sélectionnée

Opérations o i

o

0

Largeur des opérandes b i

o

1

16

32 64

16

32 64

16

32 64

76

Rapport Signal à bruit de quantification (dB)

Exemple filtre FIR

Signal à bruit de quantification (dB) Exemple filtre FIR • Espace de recherche • 6 variables
Signal à bruit de quantification (dB) Exemple filtre FIR • Espace de recherche • 6 variables

Espace de recherche

6 variables (opérations),

3 valeurs possibles par variable

Évolution du RSBQ en fonction

du temps d ’exécution

180

160

140

120

100

en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20
en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20
en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20
en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20
en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20
en fonction du temps d ’exécution 180 160 140 120 100 60 40 20 0 20

60

40

20
20

0

20

40

60

80

100

120

140

160

180

Temps d’exécution de l’application (cycles)

77

80

80
80