Proposition d`une méthodologie adéquation algorithme architecture

publicité
Proposition d'une méthodologie
adéquation algorithme architecture
Emmanuel Boutillon
LESTER
Université de Bretagne Sud
David Gnaedig (Turbo-Concept)
Frédéric Guilloud (ENST-Bretagne)
Démarche de conception d’un système de codage
™Adéquation Algorithme Architecture:
Choix de la famille de codes
¾Comment mettre en place la
rétro-action… ?
Construction et optimisation du
code (performances)
1) Oublier l'algorithme…
Simplification/optimisation
de l’algorithme de décodage
et optimiser/modifier sans a
priori
Réalisation et optimisation du
décodeur (architecture)
2) …se rappeler de l'algorithme
et voir ce que l'on peut faire…
Plan
Turbo-code : Optimisation d'un entrelaceur/architecture
LDPC : Architecture pour le "shuffled-scheduling"
Décodage à entrées et sorties pondérées
™ Approche Adéquation Algorithme Architecturelgorithme (sousoptimal) Max-Log-MAP [Robertson et al., 1995]:
Etages de treillis
Récursion Retour
Trame reçue
N
Récursion Aller
ak
Mémoire taille N
Métriques de
nœud Aller
Décision
bk
Information Z
extrinsèque k
Métriques de
nœud Retour
Temps
d'éxécution τ
0
N cycles
N cycles
Séquencement "triangle"
Séquencement fenêtre glissante
™ Algorithme à fenêtre glissante [Benedetto et al., 1996]
ƒ Memoire taille L
™ Initialisation des récursions par valeurs finales de l’itération
précédente [Dingninou et al., 1999]
Etage de treillis
Initialisation équiprobable
N
Z
Z
L
τ
0
N+L
Itération 1 – ordre naturel
Itération 1 – ordre entrelacé
Itération 2 – ordre naturel
Séquencement entre demi-itération
l
N
Séquencement
Fenètres glissantes
L
τ
0
N
Demi-itération
L+ l
j
Demi-itération j+1
L
τ
τ
τ
Perte moyenne de 25 % des capacités de calcul.
τ
Idée : avancer le début de la 2ième demi-itération
l
N
Séquencement
Fenètres glissantes
∆
L
τ
0
N
Demi-itération
L+ l
j
Demi-itération j+1
L
τ
τ
τ
⇒ Meilleure utilisation de l'architecture.
τ
Problème de consistance…
l
N
i
Π(i)
τ
0
Z1(i)
Z1(i) de l'itération courante n'existe pas encore
η
0
DEC 1
1- η
DEC 2
0 η
1- η
DEC 1
0 η
1- η
DEC 2
1- η
DEC 1
η
τ
Représentation graphique des conflits de consistence
Ordre naturel
Ordre entrelacé
Π(i)
∆
Séquencement SW-Σ -
Conflits de
consistance
Ordre naturel
N
∆
i
∆
P=1
P=2
M
L
0
(i, Π(i))
L
M
Ordre entrelacé
N
Exemple d’entrelaceur contraint
™Masque d'entrelaceur => entrelaceur hiérachique
∆
∆ = L+l
N
S3
S0
S1
S2
S3
ΠT2
ΠT2
ΠT2
ΠT2
S2
Π1T
Π1T
S1
ΠS
M
S0
0
N
M
S'0
S’1
P=2
S'2
S’3
S'0
S’1
S’2
S’3
Performances de l’entrelaceur contraint
™ N = 1024 symboles, P = 16 processeurs (débit de 100 Mbit/s)
Débit normalisé
Entrelaceur contraint
∆=L+l
α =1
+25 %
Nombre d'itérations
Eb/N0 pour FER 10-2
Entrelaceur classique
0.15 dB
Nombre d'itérations
Conclusion exemple 1 : turbo-code
™Algorithme Turbo-code
™Architecture
™Constat de sous-utilisation de ressources
matérielles
™Modification de l'exécution du matériel
™Retour vers la construction du code pour rendre
cette modification acceptable
™Mesure des gains de l'approche
Plan
Turbo-code : Optimisation d'un entrelaceur/architecture
LDPC : Architecture pour "shuffled-scheduling"
Rappel code LDPC
Séquencement des calculs
Changement de point de vue
Architecture pour shuffle-BP
Code LDPC
H=
0111100
1011010
1101001
Peut être défini par un graph bi-partite
0
1
2
3
4
5
6
Bit bi
Branches
Parity checks
(PC)
(b0, b1, … , b6) mot de code <=> toutes les PC sont respectées
Décodage itératif
y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14
0
1
2
3
4
5
6
7
8
9
10
11
12
Première itération: message bit-> parité
13
14
Décodage itératif
y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14
0
1
0
2
1
3
2
4
3
5
4
7
6
5
6
8
7
9
8
10
9
10
11
11
12
12
Première itération: message parité-> bit
13
13
14
14
Décodage itératif
y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14
0
1
0
2
1
3
2
4
3
5
4
7
6
5
6
8
7
9
8
10
9
10
11
11
12
12
13
13
Deuxième itération: message parité -> bit
14
14
Calcul d'un nœud de variable (LLR)
yn
yn
In
In
Bit Node
E0
E1
L = I n + ∑ Em
bn
E2
Bit Node
bn
m
E3
T0= L-E0 T1
Ti = In +
L
T2
T3
∑ E = L−E
m,m≠i
i
i
Calcul d'un noeud
Ti = ∑ Ek
k ≠i
E1
E2
E3
E4
avec
+
Φ( x) = − ln(tanh(x / 2))
Generic Node Unit
-
-
-
-
T1
T2
T3
T4
Calcul d'un nœud de parité
b0 b1 b2 b3 b4
T0
T1 T2
T3
T4
E0
E1 E2
E3
E4
Check Node
Check Node
Ei =
b0 b1 b2 b3 b4
⊕
j ≠i
Ti = T1 ⊕ T2 ... ⊕ Ti −1 ⊕ Ti +1... ⊕ Tdc
Deux méthodes de calcul : directe ou fréquentielle
Calcul parité: méthode fréquentielle
b) calcul du module
Ek = Φ −1 (∑ Φ( Ti ))
i≠k
avec
T1
LUT φ
T2
T3
T4
LUT φ
LUT φ
LUT φ
+
Φ( x) = − ln(tanh(x / 2))
Generic Node Unit
-
-
-
-
LUT φ−1 LUT φ−1 LUT φ−1 LUT φ−1
E1
E2
E3
E4
Calcul parité: méthode fréquentielle
a) calcul du signe
sign(T1) sign(T2) sign(T3)
sign(T4)
X
Generic Node Unit
X
X
X
sign(E1) sign(E2) sign(E3)
X
sign(E4)
•
Tm ,n = Ln − Em,n
Algorithme BP
= In +
™ Propagation de croyance (Belief
Propagation)
™ Initialisation :
∑
m '∈M ( n )\ m
Em ',n
ƒ In = 2yn/ó²
ƒ Extrinsèque branche : Em,n=0
ƒ Fiabilités : Tm,n=0
™ Itérations : tous les messages sont
traités
Em , n
Traitement des variables
Propagation P
¨V


= Φ  ∑ Φ (Tm ,n ' ) 
 n '∈N ( m )\ n

−1
Propagation V
¨P
Traitement des parités
Generic Node Units (exclude the Φ function)
Generic Node unit
Memories + processing
™ d entrée em et d sortie sn
(d=j or k)
™ Relation entrées/sorties:
sn = ∑ em
m≠ n
™NB: remplacer Σ by × pour
le traitement du signe
™ Mode de réalisation possible du GNU ?
Implémentation du Generic Node Unit :
a) Mode "compact" («traitement immédiat»)
™ Exemple: implémentation série
e1 Led
FIFO
s1 L sd
Implémentation du Generic Node Unit :
b) Mode distribué, mis à jour différée
Previous
iteration
Current
iteration
Edge
memory
t
(i )
t
(i +1)
en(i ) en(i +1)
-
sn(i )
en(i +1)
Réseau de permutation
t (i ) = e1( i ) + e2(i ) + ... + ed( i )
t ( i +1) = e1( i +1) + ... + en( i +1)
Implémentation du Generic Node Unit :
b) Mode distribué, mis à jour immédiate
Current
iteration
t n( i−+11) = e1(i +1) + en( i−+11) + en( i ) + ... + ed( i )
tn(i−+11)
en(i ) en(i +1)
s
(i )
n
t n( i +1) = e1( i +1) + en( i−+11) + en( i +1) + ... + ed( i )
en(i +1)
Réseau de permutation
t (i +1) Change d fois
durant l'itération
Plan
Turbo-code : Optimisation d'un entrelaceur/architecture
LDPC : Architecture pour "shuffled-scheduling"
Rappel code LDPC
Séquencement des calculs
Changement de point de vue
Architecture pour shuffle-BP
Flooding scheduling
(classical one)
011110
101101
110101 T
n,m
LDPC parity
check matrix
0 1 2 3 4 5
Em , n
Vertical Shuffle Scheduling
(Shuffle BP‘s Zhang-Fossorier02)
011110
101101
110101
LDPC parity
check matrix
1 2 3 4 5 6
Em ,1
Vertical Shuffle Scheduling
(Shuffle BP‘s Zhang-Fossorier02)
011110
101101
110101
LDPC parity
check matrix
1 2 3 4 5 6
T1,m
Vertical Shuffle Scheduling
(Shuffle BP‘s Zhang-Fossorier02)
011110
101101
110101
LDPC parity
check matrix
1 2 3 4 5 6
Em , 2
Vertical Shuffle Scheduling
(Shuffle BP‘s Zhang-Fossorier02)
011110
101101
110101
et ainsi de suite…
1 2 3 4 5 6
T2,m
LDPC parity
check matrix
L'algorithme converge 2 fois plus rapidement que le
séquencement par innondation classique
Plan
Turbo-code : Optimisation d'un entrelaceur/architecture
LDPC : Architecture pour "shuffled-scheduling"
Rappel code LDPC
Séquencement des calculs
Changement de point de vue
Architecture pour shuffle-BP
Implémentation/séquencement
Compact, série
Σ
Φ −1 ( x )
Φ (x)
Σ
x
Distribué,
Mise à jour immédiate
Permet une architecture très efficace pour le shuffled BP
Plan
Turbo-code : Optimisation d'un entrelaceur/architecture
LDPC : Architecture pour "shuffled-scheduling"
Rappel code LDPC
Séquencement des calculs
Changement de point de vue
Architecture pour shuffle-BP
VNU : mode compact, série
In
E
E
( i −1)
m1 , n
E
( i −1)
m2 , n
3 cycles
( i −1)
m3 , n
(i )
n , m1
T
Tn(,im) 2
3 cycles
Tn(,im) 3
CNU
VNU
interleaver
Em , n
Serial
GNU
Compact
Mode
Em(i,−n1)


= Φ  ∑ Φ (Tn ',m ) 
 n '∈N ( m )\ n

−1
Φ (Tn(,im−1) )
∑
n '∈N ( m )
Φ −1
∑
n '∈N ( m ) / n
Φ(Tn(',im−1) )
Tous les CNU reliés au VNU envoient leur message
Φ(Tn(',im−1), )
CNU
VNU
Tn(,im)
Φ
In
interleaver
( i −1)
E
∑ m,n
m '∈M ( n ) \ m
Serial
GNU
Compact
Mode
Em(i,−n1)
Φ (Tn(,im−1) )
∑
n '∈N ( m )
Φ −1
∑
n '∈N ( m ) / n
Φ(Tn(',im−1) )
Le VNU calcule ses sorties et les envoies aux CNU
Φ(Tn(',im−1) )
CNU
VNU
Tn(,im)
Φ
∑E
( i −1)
m ,n
m '∈M ( n ) \ m
interleaver
In
Serial
GNU
Compact
Mode
Em(i,−n1)
Φ (Tn(,im) )
Φ (Tn(,im−1) )
∑
n '∈N ( m )
Φ −1
∑
n '∈N ( m ) / n
∑
n '∈N ( m )
Φ (Tn(,im) ) − Φ (Tn(,im−1) )
Φ(Tn(',im−1) )
Φ(Tm(i,n−1)' ) est partiellement mis à jour.
Φ(Tn(',im−1) )
Conclusion exemple 2 : LDPC
™ Analyse du décodeur itératif
™ Modes de réalisation des "processeurs génériques"
™ Cycle de calcul dans le graphe du code
ƒ Changement du point de vue : nouvelle reformulation de
l'algorithme
™ Architecture "Vertical Shuffle BP"
ƒ Architecture simple
ƒ Convergence deux fois plus rapide que séquencement classique
™ Retrouve tous les séquencements publiés
Conclusion générale
™Esquisse d'une "méthode" d'optimisation AAA
ƒ Partir de l'architecture en oubliant les a priori
ƒ Plus de liberté de penser et d'innover
ƒ Sélectionner/valider/modifier
™Présentation de deux exemples :
ƒ Entrelaceur Turbo-Code
ƒ Séquencement LDPC
™…arriver à sortir de nos a priori…
Téléchargement