Académique Documents
Professionnel Documents
Culture Documents
Menard
Menard
D. MENARD
Équipe de recherche R2D2 - IRISA/INRIA
ENSSAT - Université de Rennes1
I. Introduction
-
Codage en virgule fixe
I. Introduction
. Arithmétique virgule fixe
. Comparaison virgule flottante / virgule fixe
. Objectifs du codage en virgule fixe
i =− n
m n
Partie entière Partie fractionnaire
(m bits) (n bits)
§ 1 M −1 · E −1
x = 2 (−1) ¨ + ¦ Ci 2i −1 ¸
u SE
avec u = (−1) SE
¦d 2 i
i
© 2 i =1 ¹ i =1
4
Règles de l’arithmétique virgule fixe
• Addition a+b mA nA
m R = max(m A , m B ) + 1 n R = max(n A , n B )
• Multiplication a × b mA nA
m R = m A + mB nR = nA + nB
= 20. log¨¨ ¸=
D ynamique en dB
DN ( dB ) ¸
1000
Virgule fixe
§P ·
RS B en dB
60 Virgule flottante
ρ dB = 10. log¨¨ s ¸¸ = 40
© Pe ¹ 20 Virgule fixe
0
-50 0 50
D ynamique du signal d entré e en dB
6
Arithmétique & systèmes embarqués
• 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
9 L’utilisateur ne doit pas coder les données
) Applications spécifiques : audionumérique, faible volume
Cycle de développement
Besoin
Spécifications
Spécification opératoires
Spécification
Spécifications Spécifications
technologiques fonctionnelles
Définitionde
Définition de
Simulation
Simulation
l'algorithme
l'algorithme Performances
Description de Contrainte
l’algorithme de précision
Conceptionfonctionnelle
Conception fonctionnelle
Conversion
Conversion en
en
virgule
virgule fixe
fixe
Contraintes
Contraintes
Implantation
temps
temps réel,
réel, Partitionnement
Partitionnement
Consommation
Consommation
d’énergie,
d’énergie,
Flexibilité
Flexibilité Implantation
Implantation Implantation
Implantation
Coût
Coût Matérielle
Matérielle Logicielle
Logicielle
8
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
Algorithme Architecture
Méthodologie
virgule flottante virgule fixe
Intégrité de
l’algorithme
Ý Þ Conception logicielle
Conception matérielle (DSP, µC)
(ASIC-FPGA) Ø
Ø Optimiser le « mapping »
Optimiser la largeur de l’algorithme sur une
des opérateurs du circuit architecture figée
Ø Ø
Minimiser la Minimiser le temps
surface du circuit d’exécution et la
taille du code
Contrainte de
précision
10
Processus de conversion en virgule fixe
pi 3,14159
N 100
{
float x,h,z
for(i=1;i<n;i++)
{
}
*z= *y++ + *h++
Code C
for(i=1;i<n;i++)
{
}
*z= *y++ + *h++
virgule flottante
VIRGULE FLOTTANTE.C
Évaluation
Évaluation de
de Code
la dynamique
la dynamique virgule fixe
Compilation
Compilation
Évaluation Synthèse
Synthèse
Évaluation dede Codage
Codage des
des
la précision données d’architecture
d’architecture
la précision données
Contrainte
Code
de précision Architecture
assembleur
11
x(n) y(n)
h
a0 × a1 × aN-2 × aN-1 ×
y (n)
+ + +
12
II. Évaluation de la précision
des systèmes en virgule fixe
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
14
Méthodes basées sur la simulation
• Principe
• Détermination de la puissance du bruit de quantification à
partir de la simulation du système en virgule fixe (yfixed) et en
virgule flottante (yfloat)
9 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
9 La largeur des données en virgule fixe doit rester faible
Sfloat
y float
¦ (y − y fixed )
N pts
1
Pby =
by 2
~ -
float
Entrée du N pts n =0
système Sfixed
y fixed
15
17
• 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
9 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éthode proposée par Toureille [Tou99]
• Détermination de l’expression analytique du RSBQ
9 Détermination de l’expression de la puissance du bruit
19
MSB
• Erreur de quantification b : k
LSB
12
• Addition : bz = bx + by
• Multiplication : bz = bx × s y + s x × b y + bx × b y
20
Systèmes linéaires
• Système linéaire, entrée x, sortie y :
• Équation aux différences
K −1 L −1
y ( n) = ¦ ak .x(n − k ) + ¦ cl . y ( n − l )
k =0 l =1
N g −1
Erreur due à la
Source de bruit généré quantification
′ (n)
lors d’un changement bgi bgi (n) des coefficients
de format hgi Bruit de
quantification
Bruit d’entrée be′ (n) be (n) de sortie
h ++
by (n)
bh (n)
∆h
22
Puissance du bruit de quantification by
• Puissance du bruit de quantification [Men02b]
2
§ Ng −1 · Ng −1 2
( )
E by = ¨¨ ¦µbgi + µbe ¸¸ + ¦σbgi +σb2e
2
© i=0 ¹ i=0
23
© i=0 ¹ i=0
b′ (n) b (n)
hk (n)
b′ = be′ ou bg′ i
(
µ b = µ b′ H (e j 0 ) )
σ b2′
( ) dΩ = σ ¦ h ( m )
π 2 +∞
σ = jΩ
2 2 2
b
2π ³π
−
He b′
m=0
24
Synoptique de la méthodologie
GFDC
Gapp
Génération
Génération du
du Graphe
Graphe Flot
Flot de
de Signal
Signal
Génération
Génération
du
du GFS
GFS yy Élimination
Élimination des
des structures
structures de
de contrôle
contrôle
yy Insertion
Insertion des
des informations
informations temporelles
temporelles (opérations
(opérations de
de retard)
retard)
GFS Gs
Modélisation
Modélisation du
du système
système au
au niveau
niveau bruit
bruit
Modélisation
Modélisation au
au
niveau
niveau bruit
bruit yy Insertion
Insertion des
des sources
sources d’erreur
d’erreur
Gsn yy Modélisation
Modélisation des
des données
données et
et des
des opérateurs
opérateurs au
au niveau
niveau bruit
bruit
Détermination
Détermination des
des
fonctions
fonctions de
de transfert
transfert
GH
Détermination
Détermination de
de
l’expression
l’expression du
du RSBQ
RSBQ
& &
RSBQ (b , m) [Men02a]
25
b'e
a0 × a1 × aN-2 × aN-1 ×
bgm0 + bgm1 + bgm N-2 + bgm N-1 +
bg mem
+ + + +
y (n)
N.bgm
b'e
x(n) y(n)
+ h +
bg mem
27
N −1
B y ( z ) = H ( z ) Be′ ( z ) + Bg .mem ( z ) + ¦ bgm.i ( z )
i =0
Y ( z) = H ( z) X ( z)
28
Exemple du filtre FIR
• Expression de la variance du bruit en sortie du filtre
FIR
N −1
σ = σ +σ
2
by
2
be
2
bg . mem + ¦ σ b2gm .i
i =0
+∞ N −1
σ =σ ¦ h( m) + σ + ¦ σ b2gm .i
2 2 2 2
by be′ bg . mem
m = −∞ i =0
qe2 N −1 2 q g .mem
2
2
qmi
σ b2 = ¦ am + + N.
y
12 m =0 12 12
αh
σ b2 =
y
1
12
( −2 n
α h .2 − 2 ne + 2 gmem + N .2 − 2 nmi )
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 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
• Estimation du domaine de définition [xmin , xmax] de
chaque donnée x en vue d’en déduire la position de la
virgule mx
Partie entière
mx
31
300
250
200
150
100
50
0
-4 -3 -2 -1 0 1 2 3 4
Xmin Xmax
32
Méthodes basées sur la simulation
• Méthode proposée par Kim [Kim98]
• Distribution uni-modale (−1.2 < k x < 5) et symétrique s xi ≈ 0
i
k xi =
[
E ( xi − µ xi ) 4 ]− 3 kurtosis
~
xi max = µ xi + (k xi + 4)σ xi σx 4
i
s xi =
[
E ( xi − µ xi )3 ] skewness
σx i
3
Méthodes analytiques
• Propagation de la dynamique des entrées au sein de
l’application
• Utilisation des résultats de l’arithmétique d’intervalle [Kea 96]
34
Méthodes analytiques
• Systèmes linéaires : utilisation de normes
x(n) y(n)
h
• Normes L1 ∞
ymax1 = max n ( x( n) ). ¦ h(m)
m = −∞
• Norme Chebychev
35
• Entrée x ∈ [−1,1]
0.15
0.1
• Filtre 1 : 41 cellules
0.05 a0
• Filtre 2 : 32 cellules
0
a1
5 10 15 20 25 30 35 40
36
Exemple filtre IIR
• Équation aux différences
1
y ( n) = x ( n) + y ( n − 1)
2
1 Réponse impulsionnelle du filtre IIR
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
37
Fonction de la
représentativité des signaux
38
IV. Codage des données
en virgule fixe pour une
implantation matérielle
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
• Implantation matérielle dans un ASIC ou un FPGA
• Définition de l’architecture du circuit
9 Possibilité d’adapter la largeur des opérateurs aux contraintes
de précision
• Objectifs de l’implantation
9 Minimiser le coût
) Optimiser la surface du circuit
9 Minimiser la consommation d’énergie
) Optimiser la largeur des opérateurs
( )
& &
Min
& + S (b ) tel que RSBQ(b ) ≥ RSBQmin
b∈Ζ
40
Lien entre le codage et la synthèse
Comment regrouper Représentation intermédiaire
de l’application : GFD, GFDC
les données ?
Largeur
opérateurs
Largeur opérateurs
Assignation
Quel couplage
codage - synthèse ? Opérations Ö opérateurs
41
pi 3.14159
N 100
Partie Synthèse
{
Partie Synthèse
float x,h,z
for(i=1;i<n;i++)
debbapp
Calcul de
{
Calcul
*z= *y++ + *h++
}
Code VHDL
de l’application
RSBQmin
43
Annotations locales
Annotation ou globales
Utilisateur
Code mixte
(fixe / flottant)
Évaluation de
Interpolation la précision
(simulation)
RSBQmin
Code virgule fixe
(SystemC)
Optimisation
Spécification virgule
Synthèse de l’architecture
fixe optimisée 44
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
9 Partie entière (mx) : utilisation de l’arithmétique d’intervalle
(
9 Partie fractionnaire (nx) : utilisation des règles n z = f Ops nx , n y )
• Optimisation
• Minimisation de la largeur des données sous contrainte de
précision globale RSBQmin
9 Utilisation d’une contrainte de précision locale :
) ∆ RSBQ dégradation maximale autorisée du RSBQ en sortie d’un
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) > RSBQmin) // contrainte de précision globale
{
∆RSBQ = ∆RSBQ + ε // modification de la contrainte de précision locale
46
Méthode FPO (Université de Séoul)
• Différentes méthodes proposées
• Regroupement au niveau donnée [Kum 98]
47
Méthode FPO
• Regroupement au niveau donnée [Kum 98]
Détermination dynamique
et position de la virgule
&
Déterminationbmin
Évaluation de la
précision
(simulation) & Niveau algorithme
Déterminationbopt
Spécification virgule
fixe optimisée
Niveau synthèse
Synthèse de d’architecture
l’architecture
48
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
Méthode FPO
• Regroupement au niveau bloc [Sun 95] Ö Fixed-point
optimizer (Cadence)
Code C virgule flottante
Regroupement
Regroupement par
analyse du graphe
Détermination dynamique flot de signal
et position de la virgule
&
Déterminationbmin
Évaluation de la
précision & Niveau algorithme
Déterminationbopt
Spécification virgule
fixe optimisée
Niveau synthèse
Synthèse de d’architecture
l’architecture
50
Méthode FPO
• Regroupement au niveau bloc et couplage codage
synthèse [Kum 01] Code C virgule flottante
Regroupement
Regroupement par
analyse du graphe
Détermination dynamique flot de signal
et position de la virgule
&
Déterminationbmin
Évaluation de la
précision
Synthèse de
l’architecture • Ordonnancement
• Assignation
&
Déterminationbopt
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
52
V. Codage des données
en virgule fixe pour une
implantation logicielle
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
Acc
Acc
badd
• Architecture parallèle
• Unités fonctionnelles indépendantes
• File de registres
U1 U2 U3 U4
9 Tous les registres sont connectés à
tous les opérateurs
File de registres
) Utilisation de clusters
• Parallélisme au niveau instruction
9 Jeu d’instructions VLIW VLIW (orthogonale)
54
Architecture des DSP
• Largeur naturelle du processeur (bnat )
• 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
55
× +-
2N bits N bits
• Loi de quantification
• Troncature : par défaut
• Arrondi : quelques DSP
56
Architecture des DSP
• Capacités de recadrage
• Registres à décalage spécialisés
9 Décalages en sortie du multiplieur (C50 : -6, 0, 1, 4)
• Registres à décalage en barillet
58
Interaction génération de code - codage
• Sélection d’instructions
• Le choix de l’instruction est lié à la largeur des opérandes
9 Le type des données doit être déterminé avant la sélection
d’instructions
• 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]
9 Optimisation du placement des opérations de recadrage lors de
l’ordonnancement des instructions
59
Objectifs
• Implantation logicielle dans un DSP ou un ASIP
• Développement du code
9 Architecture figée
9 Architectures diverses
• Objectif de l’implantation
9 Minimiser le temps d’exécution et la taille du code
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
SUIF
Génération I.R.
Génération I.R.
Détermination
Détermination
Dynamique
Dynamique
«« Profiling
Profiling »»
Modification
Modification
des types
des types
Optimisation
Optimisation
Calcul Décalage
Calcul Décalage
décalage
décalage
Génération code
Génération code CC
#define pi 3.1416
{
#define pi 3.1416
main() Contrainte locale
float x,h,z
for(i=1;i<n;i++)
{
}
*z= *y++ + *h++
Code C ANSI de dégradation
for(i=1;i<n;i++)
{
}
*z= *y++ + *h++
virgule fixe de la précision
VIRGULE
FLOTTANTE.C
61
Évaluation de
Interpolation
la précision RSBQmin
Optimisation
Code C
virgule fixe
63
64
Synoptique de la méthodologie
Code source C
Partie haute
Infrastructure de compilation
SUIF
Évaluation
Évaluation
de
de la
la
précision
précision RI SUIF-CALIFE
GFDC Suif
Suif vers
vers CC
Conversion
Conversion
RSBQ(b,m) en
en
virgule
virgule fixe
fixe Code C ou
SystemC
RSBQmin Infrastructure
Infrastructure virgule fixe
de
de génération
génération
de
de code
code
CALIFE
CALIFE
Modélisation
du processeur
Code assembleur
main()
{
float x,h,z
ARMOR ArmorC
for(i= 1;i<n;i ++)
ArmorC
{
*z= *y++ + *h+ +
}
for(i=1;i< n;i++)
{
*z= *y++ + *h+ +
}
VIRGULE FL
OTTANTE.C
du DSP
[Men02c, Men02e]
65
Synoptique de la méthodologie
Code source C
Partie haute
Infrastructure de compilation
SUIF
Détermination
Détermination
dynamique
dynamique
Évaluation
Évaluation
de
de la
la
précision
précision Détermination RI SUIF-CALIFE
Détermination GFDC Suif
Suif vers
vers CC
position
position virgule
virgule
RSBQ(b,m)
Détermination
Code C ou
Détermination
des
des types
SystemC
RSBQmin types Infrastructure
Infrastructure 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
Code assembleur
main()
{
float x,h,z
ARMOR ArmorC
for(i= 1;i<n;i ++)
ArmorC
{
*z= *y++ + *h+ +
}
for(i=1;i< n;i++)
{
*z= *y++ + *h+ +
}
VIRGULE FL
OTTANTE.C
du DSP
66
Exemple filtre FIR
• Code C du filtre FIR
float
float h[32]
h[32] == {-0.029710,
{-0.029710, -0.0497370,
-0.0497370, ...,
..., 897773053,
897773053,
0.98000000,
0.98000000, 0.8977730,
0.8977730, ...,
..., -0.04973706,
-0.04973706, -0.0297105,
-0.0297105, 0.0};
0.0};
void
void main()
main()
{{
float
float x[32];
x[32];
float
float input;
input;
float
float yn;
yn;
float
float acc;
acc;
int
int i;
i;
x[0]
x[0] == input;
input;
acc
acc == x[0]*h[0];
x[0]*h[0];
for(i=31;
for(i=31; i>0;
i>0; i--)
i--)
{{
acc
acc == acc
acc ++ x[i]*h[i];
x[i]*h[i];
x[i]
x[i] == x[i-1];
x[i-1];
}}
yn
yn == acc;
acc;
67
x[0] h[0]
×
B.B. 1
GFD 1
GFC For Acc
x[i-1] Acc
GFC FIR
For B.B. 2
z-1
x[i] h[i]
B.B. 3 Acc
×
GFD 3
=
u
y
+
B.B : bloc de base GFD 2
Acc
68
Détermination de la dynamique
Détermination
Détermination
dynamique
dynamique
GFDC Détermination
Détermination GFDC + Di
Dentrées de
de la
la dynamique
dynamique (Dynamique) Détermination
Détermination
position
position virgule
virgule
Dynamique entrées
Détermination
Détermination
données Optimisation
Optimisation format
des
format
des données
données
• Technique implantée
GFDC
Transformation
Transformation
GFDC
GFDC ÖÖ GFS
GFS
GFS G’app
Dynamique Détermination
Détermination de
de la
la GFS Mise
Mise àà jour
jour de
de la
la
des entrées dynamique
dynamique du
du GFS
GFS dynamique
dynamique du du GFDC
GFDC
G’dyn
GFDC
Gdyn
- Arithmétique d’intervalle
- Norme L1, Chebychev
69
b0 × b1 × bN-2 × bN-1 ×
ª N −1 N −1 º
«− ¦ bi , ¦ bi »
[- |b1|, |b1| ]
[- |b0|, |b0| ]
¬ i =0 i =0 ¼
+ + +
y (n)
max n ( y (n) ) = 6.26
• Normes L1
∞ N −1
max n ( y (n) ) = max n ( x (n) ). ¦ h( m) = ¦ bi = 6.26
m = −∞ m =0
70
Détermination de la position de la virgule
Détermination
Détermination
dynamique
dynamique
GFDC + Di Détermination
Détermination de de la
la GFDC + mi
(Dynamique) position de la virgule
position de la virgule (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
• Technique :
• Propagation de la virgule par parcours des graphes flots de
données (GFD)
9 Nécessité d’éliminer les circuits présents au sein des GFD
9 Définition de règles pour les données et les opérations
71
9 Multiplication mx' x’
Ops z’
mz' z
mx mz
mz ' = mx + m y + 1 x
mc = max(m x , m y , mz )
72
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]
mx = 0
z-1
mz.mult = mh + mx + 1 = 1 ×
[−6,26 ; 6,26]
Acc
[−0,98 ; 0.98] u m Acc = 3
mu = 0
73
mz.mult = mh + mx + 1 = 1 ×
mu1 = 1 u1
[−6,26 ; 6,26]
>> Acc
m Acc = 3
mu 2 = 3 u2
Modèle du processeur
Détermination
Détermination
le DSP :
) Instructions classiques
) Instructions double précision
) Instructions SWP
( )
& &
min
& T (b ) tel que RSBQ (b ) ≥ RSBQmin
b ∈B
75
Instruction sélectionnée
Opérations oi
Largeur des
j1 j2 j3 opérandes bi
o0
8×8Æ16 16×16Æ32 32×32Æ64
j4 j5 j6 j4 j5 j6 j4 j5 j6
o1
16 32 64 16 32 64 16 32 64
76
Exemple filtre FIR
• Espace de recherche
• 6 variables (opérations),
• 3 valeurs possibles par variable
180 Évolution du RSBQ en fonction
du temps d ’exécution
Rapport Signal à bruit de quantification (dB)
160
140
120
100
80
60
40
20
0 20 40 60 80 100 120 140 160 180
Temps d’exécution de l’application (cycles) 77
Modèle du processeur
Détermination
Détermination
• Détermination de la position optimale des type
type des
des données
données
Évaluation du temps
CDFG d’exécution du recadrage Modélisation
RSBQmin du processeur
Gopt
79
• Après optimisation
) Temps d’exécution des recadrages : 1 cycle
) RSBQ : 75.57 dB
80
Exemple filtre FIR
• Code C du filtre FIR après déplacement de l’opération
de recadrage vers l’entrée
short h[32]={-973,..., 29418, 32112, 29418,...-973};
short input;
void main()
{
short x[32];
short y;
int acc;
int i;
x[0] = input >> 2;
acc = x[0] * h [0];
CAG
CAG
y0 (k)
Finger 0
y1 (k)
Finger 1
se (n) y(k)
y2 (k) +
Finger 2
y3 (k)
Finger 3
82
Synoptique d’un finger
xl (n)
zz-4-4 DLL
Finger
44 DLL early
early
(path l)
DPDCH
yl (k)
DPDCH/DPCCH
DPDCH/DPCCH decoding
decoding
DPCCH
Phase
Phase
αˆ l* Channel
Channel
removing
removing estimation
estimation
zz-2-2 44 DLL
DLL on-time
on-time DLL
DLL
DLL
zz-0-0 44 DLL
DLL late
late
SF
Σ
1
s1 (n) SF yl(k)
Décodage se(n) s2 (n) s3 (k)
des données 256
Σ
1
256
cK(n)
αˆ ì * cOVSFQ (n)
83
Spécifications
• Rake Receiver :
• 4 fingers
• Décodage des données
Acc0I
Acc0I == Acc0I
Acc0I ++ (( y0I[i]*a0I[0]
y0I[i]*a0I[0] -- y0Q[i]*a0Q[0]
y0Q[i]*a0Q[0] )*
)* Co[i];
Co[i];
Acc0Q
Acc0Q == Acc0Q
Acc0Q ++ (( y0I[i]*a0Q[0]
y0I[i]*a0Q[0] ++ y0Q[i]*a0I[0]
y0Q[i]*a0I[0] )*
)* Co[i];
Co[i];
}}
• Évaluation de la précision :
• Graphe flot de signal de l’application : 480 opérations
• 280 sources de bruit potentielles
84
Dynamique - position de la virgule
• Facteur d’étalement
SF = 8 Finger
Finger 00
Combinaison
des MP
Finger
Finger 11
Finger
Finger 33
cOVSFI (n)
MULT3 ADD2
MULTc2 ADD1
MULTc1 SF
x(n) Σ + y(n)
s2 (n)
256
Σ +
cK(n)
αˆ ì * cOVSFQ (n)
mx 0 2 1 2 2 4 5 7 7
85
Texec (cycles)
des MP
Finger
Finger 11
Instructions classiques Instructions SWP
Finger
Finger 33 3133 ./ 2.64 1185
cOVSFI (n)
MULT3 ADD2
MULTc2 ADD1
MULTc1 SF
Σ + y(n)
x(n)
s2 (n)
256
Σ +
cK(n)
αˆ ì * cOVSFQ (n)
58
b01 b11 56
Solution
54
RSBQ (dB)
Déplacement des obtenue
b02 b12 opérations de Phase 1 avant
b2 recadrage vers les optimisation
52 coefficients
b03 b13
Phase 2
50
b04 b14 48
Phase 3
Multi-path
Fingers Combinaison 46
Conclusion
• Évaluation de la dynamique
• Méthodes statistiques
9 Estimation précise mais pas ne garantissant pas l’absence de
débordement
• Méthodes analytiques
9 Estimation pessimiste garantissant l’absence de débordement
• Évaluation de la précision
• Méthodes basées sur la simulation :
9 Augmentent le temps d’exécution du processus d’optimisation
) Mise en œuvre d’heuristiques pour réduire l’espace de recherche
• Méthodes analytiques :
9 Toutes les structures ne sont pas prises en comptes
) Définition de nouvelles méthodes
88
Conclusion
• Implantation matérielle
• Nécessité de couplage entre les processus de conversion en
virgule fixe et de synthèse d’architecture
• Mise en œuvre d’un algorithme efficace d’optimisation sous
contrainte
• Implantation logicielle
• Nécessité de prise en compte de l’architecture
• Nécessité de couplage entre les processus de conversion en
virgule fixe et de génération de code
89
Bibliographie (1)
[Aam00] T. Aamodt, Floating-point To Fixed-point Compilation and Embedded Architectural Support, Master Thesis,
University of Toronto, January 2001
[Cac02] D. Cachera, T. Risset Advaces in Bit Width Selection Methodology. Proceedinngs of the IEEE Internationnal
Conference on Application-Specific Systems, Architectures, and Processirs (ASAP 02), Jul 02.
[Coo01] M. Coors, H. Keding, O. Luthje and H. Meyr, Integer Code Generation For the TI TMS320C62x, ICASSP-01, May
2001, Sate Lake City, US.
[Con99] G. Constantinides, P. Cheung, W Luk, Truncation noise in fixed-point SFG, IEE Electronics Letters, 35(23),
November 1999.
[Con01] G. Constantinides, P. Cheung, W Luk, Heuristic Datapath Allocation for Multiple Wordlength Systems, DATE 2001,
Mars 2001.
[Kea96] R. Kearfott, Interval Computations: Introduction, Uses, and Resources, Euromath Bulletin, vol 2 (1), 1996, p95-112.
[Ked01] H. Keding , M. Coors, O. Luthje, H. Meyr, Fast Bit-True Simulation, Design Automation Conference 2001, (DAC-
01), Jun 01, Las Vegas, US.
[Ked98a] H. Keding, M. Willems, M. Coors, and H. Meyr. FRIDGE: A Fixed-Point Design And Simulation Environment.
Design, Automation and Test in Europe 1998 (DATE-98), Mar 98.
[Ked98b] H. Keding and F. Hurtgen and M. Willems and M. Coors, Transformation of Floating-Point into Fixed-Point
Algorithms by Interpolation Applying a Statistical Approach, 9th International Conference on Signal Processing
Applications and Technology, ICSPAT'98, 98.
[Kim98] S. Kim, K. Kum, S. Wonyong. Fixed-Point Optimization Utility for C and C++ Based Digital Signal Processing
Programs, IEEE Transactions on Circuits and Systems II, 45(11), Nov 98.
[Kum00] K. Kum, J.Y. Kang and W.Y. Sung, AUTOSCALER for C: An optimizing floating-point to integer C program
converter for fixed-point DSP ,IEEE Transactions on Circuits and Systems II, pp 840-848, September 2000.
[Kum01] K. Kum, and W.Y. Sung, Combined Word-length Optimization and High-level Synthesis of Digital Signal Processing
Systems,IEEE Transactions on Computer Aided Design of circuits and Systems II, pp 921-930, 20(8), August 2000.
90
Bibliographie (2)
[Liu71] B. Liu. Effect of Finite Word Length on the Accuracy of Digital Filters - A Review (Invited Paper). IEEE Transaction
on Circuit Theory, 18(6), Nov 71.
[Mar01] E. Martin, C. Nouet, JM. Toureilles. Conception optimisée d’architectures en précision finie pour les applications de
traitement du signal.Traitement du Signal 2001, Vol 18 (1), 2001.
[Men01] D. Menard, O. Sentieys, Influence du modèle de l'architecture des DSPs virgule fixe sur la précision des calculs,
Dix huitième colloque GRETSI sur le traitement du signal et des images, Toulouse, Sep 01.
[Men02a] D. Menard and O. Sentieys. Automatic Evaluation of the Accuracy of Fixed-point Algorithms, IEEE/ACM Conference
on Design, Automation and Test in Europe 2002 (DATE-02), Paris, Mar 02.
[Men02b] D. Menard and O. Sentieys. A methodology for evaluating the precision of fixed-point systems. International
Conference on Acoustics, Speech and Signal Processing 2002 (ICASSP 2002), Orlando, May 02.
[Men02c] D. Menard, T. Saidi, D. Chillet, O. Sentieys. Implantation d'algorithmes spécifiés en virgule flottante dans les DSP
virgule fixe. 8ème Symposium en Architectures nouvelles de machines (SYMPA), Hammamet, Tunisie, Apr 02.
[Men02d] D. Menard, P. Quemerais, O. Sentieys. Influence of fixed-point DSP architecture on computation accuracy. XI
European Signal Processing Conference (EUSIPCO 2002), Toulouse, Sep 02.
[Men02e] D. Menard, D. Chillet, F.Charot, O. Sentieys. Automatic Floating-point to Fixed-point Conversion for DSP Code
Generation. ACM International Conference on Compilers, Architectures and Synthesis for Embedded Systems 2002
(CASES 2002), Grenoble, Oct 02.
[Men02f] D. Menard, T. Saidi, D. Chillet, O. Sentieys. Implantation d'algorithmes spécifiés en virgule flottante dans les DSP
virgule fixe. Sélectionné pour numéro spécial de TSI Architectures des systèmes embarqués.
[Men03a] D. Menard, M. Guitton, S. Pillement, O. Sentieys. Design and Implementation of WCDMA Platforms Challenges and
Trade-offs. Accepted for the International Signal Processing Conference, Dallas, April 03.
[Par87] T.W. Parks and C.S. Burrus, Digital Filter Design, 1987, Jhon Willey and Sons Inc
91
Bibliographie (3)
[Sun95] W. Sung, K. Kum. Simulation-Based Word-Length Optimization Method for Fixed-Point Digital Signal Processing
Systems. IEEE Transactions on Signal Processing, 43(12), Dec. 1995.
[Tou99] J. Toureilles. Conception d'architectures pour le traitement du signal en précision finie. PhD thesis, Université de
Rennes I, Jan 99.
[Wil97] M. Willems and V. Bursgens and H. Meyr, FRIDGE: Floating-Point Programming of Fixed-Point Digital Signal
Processors Internartionnal Conférence On Signal Processing Applications and Technology, (ICSPAT'97), 1997.
92