FR 2859332 A1 20050304 FR 0310261 A 20030828 ARCHITECTURE POUR UN DECODEUR ITERATIF L'invention porte sur un décodeur itératif, et plus particulièrement sur un décodeur itératif destiné à être réalisé sous forme d'un circuit intégré, ou une pluralité de circuits intégrés, en technologie d'intégration à très grande échelle (VLSI). Ce décodeur présente une nouvelle architecture permettant de réduire considérablement la complexité (aire de silicium occupée) et/ou la consommation de puissance par rapport aux décodeurs connus de l'art antérieur et/ou d'augmenter le débit de données pour une complexité et une consommation de puissance données ; pour cette raison elle convient particulièrement aux applications spatiales et à la téléphonie mobile. La transmission d'un signal numérique sur un canal bruité comporte généralement l'utilisation d'un code de correction des erreurs afin d'obtenir un taux d'erreur sur les bits (Bit Error Rate, BER) ou sur les blocs (Frame Error Rate, FER) acceptable même avec un faible écart signal et bruit. En règle générale, l'opération de décodage est plus complexe que celle de codage aussi bien en terme de mémoire, et donc d'aire de silicium occupée, que de temps de calcul. Parmi les différents algorithmes de codages et décodage qui ont été développés, les codes itératifs, tels que les codes turbo , ont acquis une grande importance ces dernières années. Ces codes sont décrits, par exemple, dans les articles suivants : Near Shannon limit error-correcting coding and decoding: Turbo codes , P. Thitimajshima, C. Berrou, A Glavieux, IEEE ICC 93, pages 1064-1070, 1993 Genève ; et Near-optimum decoding of product codes: Block turbo codes , R.M. Pyndiah, IEEE Transactions on Communications, 46 (8): 1003-1010, 1998; ainsi que dans le Brevet Européen EP 0 753 696 et dans la Demande Internationale WO 01/06661. Les codes turbo sont obtenus par une concaténation en parallèle de codes convolutionnels ; les codes obtenus par concaténation en série de codes convolutionnels, qui ont des propriétés similaires et constituent également un domaine d'application de la présente invention sont connus comme codes turbo-like . Ces codes se caractérisent par le fait que le décodage est une procédure itérative et à chaque itération le BER et le FER diminuent. Souvent le nombre N,t d'itérations est fixe et il est déterminé en considérant le cas des blocs les plus corrompus par le bruit. Il est évident que cela comporte un gaspillage de ressources, car la plupart des blocs subissent plus d'itérations que nécessaire. Pour cette raison des règles d'arrêt ont été envisagées ; voir à ce propos : Stopping rules for turbo decoders F. Pollara, A. Matache, S. Dolinar, Technical Report 42-142, TMO Progress Report, Août 2000 ; A simple stopping criterion for turbo decoding W.J. Ebel, Y. Wu, B. D. Woermer, IEEE Communications Letters, 4 (8): (2000). Pour augmenter le débit de données, on utilise typiquement des décodeurs constitués par plusieurs répliques du même module de décodage, chaque module prenant en charge le traitement d'un bloc de bits. En faisant abstraction des problèmes liés au multiplexage à l'entrée et au démultiplexage à la sortie, le débit est proportionnel au nombre M de modules utilisés. Il existe essentiellement trois architectures basées sur ce principe : l'architecture pipe-line, l'architecture parallèle et l'architecture matricielle, qui sont illustrées par les figures 1 A, 1 B et 1 C respectivement. Dans l'architecture pipe-line, M=Nit modules sont connectés en série comme dans une chaîne d'assemblage. Un bloc de bits introduit à l'entrée de la chaîne en sort après avoir été traité une fois par chaque module, donc après avoir subi N,t itérations. Dans l'architecture parallèle, M modules effectuent chacun le décodage complet (N,t itérations) d'un bloc de bits. Il est facile de se rendre compte que si M=N,t les performances d'un décodeur parallèle sont les mêmes que celles d'un décodeur pipe-line, aussi bien en terme de complexité que de débit. Si M>N,t, le débit est plus élevé, mais la complexité aussi, alors que l'effet inverse est obtenu pour M L'architecture matricielle n'est qu'une généralisation des deux précédentes : un décodeur matriciel se compose de M décodeurs pipe-line en parallèle. Ces architectures sont essentiellement équivalentes et le choix d'en utiliser une plutôt qu'une autre dépend de considérations spécifiques à l'application considérée. Un décodeur basé sur l'une quelconque d'entre elles ne peut fonctionner que pour un nombre fixé d'itérations, ce qui comporte un gaspillage de ressources matérielles et une consommation d'énergie plus élevée que nécessaire. Plus récemment, des architectures de décodeurs modulaires permettant l'application de règles d'arrêt ont été développées. Le document WO 02/067435 A1, qui représente l'état de l'art le plus proche, décrit un décodeur comportant une pluralité de modules de décodage en parallèle et un dispositif d'allocation dynamique des paquets de données entrants. Bien que le dispositif d'allocation soit équipé d'une mémoire temporaire, le décodeur est conçu de telle sorte que la probabilité qu'un paquet de données entrant ne trouve aucun module de décodage libre soit faible. Pour que cette condition soit vérifiée, il faut utiliser un grand nombre de modules, dont au moins un sera inoccupé presque à chaque instant : il en résulte donc un gaspillage de ressources matérielles. De plus, ce document ne fournit aucune information permettant de déterminer le nombre des modules de décodage et des éléments de la mémoire temporaire en fonction des performances requises et des conditions de fonctionnement du décodeur. Le document EP 0 973 292 A2 décrit l'utilisation d'une mémoire tampon (buffer) pour chaque module de décodage (appelé aussi serveur ), de façon à réaliser autant de files d'attente que de modules, plus éventuellement une mémoire tampon globale au niveau du dispositif d'allocation. Dans ce document l'utilisation d'un critère d'arrêt n'est pas décrite : au contraire, le nombre d'itérations est déterminé a priori sur la base du rapport entre la puissance de la porteuse et celle du bruit. Tant que ce rapport reste constant, la durée du décodage est la même pour tous les paquets : il y a donc le même problème de surdimensionnement rencontré dans les architectures à nombre fixé d'itérations décrites ci-dessus. Un objet de la présente invention est un décodeur itératif présentant une nouvelle architecture qui permet une meilleure utilisation des ressources matérielles par rapport à l'art antérieur. Une telle architecture est dénommée matrice de serveurs opérant simultanément avec une mémoire tampon ( Buffered Array of Concurrent Servers ou BACS en langue anglaise). Plus précisément, l'invention porte sur un décodeur itératif comportant : une pluralité de serveurs qui effectuent chacun le décodage itératif d'un bloc de données; - une mémoire tampon d'entrée pour stocker temporairement les blocs de données à décoder par les serveurs ; une unité de contrôle pour attribuer chaque bloc de données à décoder à un serveur ; dans lequel le nombre d'itérations de la procédure de décodage effectuée par chaque serveur est déterminé sur la base d'un critère d'arrêt et l'unité de contrôle attribue des blocs de données à décoder aux différents serveurs à fur et à mesure qu'ils se rendent disponibles, caractérisée en ce que : - la mémoire tampon d'entrée comporte N+L emplacements de mémoire, où N est le nombre de serveurs et L, en général >0, est le nombre d'emplacements dits supplémentaires; - chaque bloc à décoder qui est reçu pendant que tous les serveurs sont occupés est stocké dans l'un des L emplacements supplémentaires éventuellement disponibles, ou il est perdu si la mémoire tampon d'entrée est entièrement remplie; et - le nombre L d'emplacements supplémentaires et le nombre N de serveurs sont tels que la probabilité PB qu'un bloc soit perdu, calculée sur la base d'un modèle de file d'attente du type D/G/N/N+L, vérifie la condition PB De préférence [alpha]#0,01. Selon différents modes de réalisation d'un décodeur itératif selon l'invention : parmi tous les couples de valeurs de L et de N permettant d'atteindre un débit r suffisamment élevé et une probabilité PB de blocage suffisamment faible, est choisi celui qui minimise l'aire de silicium occupée par le décodeur ; - la mémoire tampon d'entrée est commune à tous les serveurs (22) et est accessible en parallèle ; - les paquets de données stockés dans la mémoire tampon d'entrée sont attribués aux serveurs disponibles sur la base du principe premier entrant - premier sortant ( FIFO, First-In-First-Out ) ; une mémoire tampon de sortie pour stocker temporairement les blocs de données décodés par les serveurs est également prévue ; - l'unité de contrôle vérifie à intervalles réguliers si la condition d'arrêt pour chaque serveur est satisfaite ; - dans un mode particulier de réalisation de l'invention la condition d'arrêt est vérifiée après chaque itération de la procédure de décodage ; - les serveurs sont des décodeurs choisis parmi : des décodeurs turbo , des décodeurs turbo-like , des codes de contrôle de parité à faible densité (LDPC, Low-Density Parity Check ), des codes d'effacement d'interférence (IC, Interference Cancellation ), des codes d'effacement d'interférence en série (SIC, Serial IC ) et des codes d'effacement d'interférence parallèles (PIC, Parallel IC ) ; - une mémoire extrinsèque utilisée par les serveurs lors du décodage est également prévue ; L'invention porte également sur un système de communication utilisant un décodeur itératif tel que décrit ci-dessus. L'invention porte également sur un procédé pour fabriquer un décodeur itératif tel que décrit ci-dessus comportant les étapes consistant à : A) concevoir le décodeur en appliquant les sous-étapes consistant à : a) déterminer au moins un paramètre choisi parmi le débit r* des données à décoder, l'énergie par bit d'information Eb/No du signal portant l'information à décoder, le taux d'erreur admissible sur les bits ou sur les blocs (BER* ou FER*), la probabilité de blocage maximale admissible PB*, le rapport a entre cette probabilité et le taux d'erreur admissible, ainsi qu'une fonction de coût C (N,L) doit être minimisée par le décodeur ; b) déterminer à partir d'au moins un dit paramètre un couple (N, L) qui minimise la fonction de coût C(N, L) ;et B) réaliser un décodeur, ayant les valeurs N, L déterminées à la sous-étape A.b. Selon une première variante, l'étape A.b comporte : i. choisir un mode de réalisation des serveurs ; ii. déterminer une valeur maximale Lmax et une valeur minimale Lmin admissibles pour le nombre d'emplacements supplémentaires de mémoire tampon d'entrée ; iii. utiliser les données obtenues lors de la sous-étape A.a pour calculer la fonction de densité de probabilité FDP du temps de service Ts, c'est à dire le temps nécessaire à un serveur pour décoder un bloc d'information de telle sorte que le taux d'erreur soit inférieur ou égal à BER* ou FER*, ainsi que la valeur attendue E{Ts} dudit temps de service ; iv. poser initialement le nombre d'emplacements supplémentaires de mémoire tampon d'entrée égale à L= Lmin ; v. poser initialement le nombre de serveur égale à N=#*#E {Ts} ; vi. modéliser le décodeur comme un système à file d'attente du type D/G/N/N+L et calculer la probabilité de blocage PB correspondante ; vii. si PB>PB*=[alpha]#FER* ou a-BER*, augmenter N d'une unité et répéter la sous-étape vi ; viii. autrement retenir le couple (N,L) ; ix. si L* x. parmi tous les couples (N,L) retenu, choisir celui, (N*,L*), qui permet de minimiser la fonction de coût C(N,L) ; Selon une deuxième variante, l'étape A.b comporte : i. choisir un mode de réalisation des serveurs ; ii. déterminer une valeur maximale Lmax et une valeur minimale Lm,n admissibles pour le nombre d'emplacements supplémentaires de mémoire tampon d'entrée ; iii. utiliser les données obtenues lors de la sous-étape A.a pour calculer la fonction de densité de probabilité FDP du temps de service Ts, c'est à dire le temps nécessaire à un serveur pour décoder un bloc d'information de telle sorte que le taux d'erreur soit inférieur ou égal à BER* ou FER*, ainsi que la valeur attendue E{TS} dudit temps de service ; iv. poser initialement le nombre d'emplacements supplémentaires de mémoire tampon d'entrée égale à L= Lmin v. prendre une valeur initiale du nombre de décodeur N*=NW=r*Irse,, rserv étant le débit de données de chaque serveur en considérant un nombre d'itérations de décodage N,t fixé à la valeur nécessaire pour obtenir le taux d'erreur admissible FER* ou BER* ; vi. modéliser le décodeur comme un système à file d'attente du type D/G/N/N+L et calculer la probabilité de blocage PB correspondante ; vii. si PB Selon une troisième variante, l'étape A.b comporte : i. procéder à la conception d'un dit décodeur pour différentes valeurs de l'énergie par bit d'information Eb/No; ii. choisir le couple (N*,L*) qui permet d'obtenir un taux d'erreur (BER* ou FER*) admissible au débit r* des données à décoder pour la plus faible valeur de l'énergie par bit d'information Eb/No, tout en donnant, pour la fonction de coût C (N,L), unevaleur inférieure ou égale à une valeur maximale admissible C*; Selon une quatrième variante, l'étape A.b comporte : i. procéder à la conception d'un dit décodeur pour différentes valeurs du débit r ; ii. choisir le couple (N*,L*) qui permet d'obtenir le débit r* le plus élevé un taux d'erreur (BER* ou FER*) admissible pour la valeur choisie de l'énergie par bit d'information Eb/No, tout en donnant, pour la fonction de coût C (N,L), valeur inférieure ou égale à une valeur maximale admissible C*. Selon un mode particulier de réalisation de l'invention, la fonction de coût C (N,L) dans les procédés de fabrication décrits ci-dessus est proportionnelle aux dimensions physiques (complexité) du circuit électronique qui constitue le décodeur. D'autres caractéristiques, détails et avantages de l'invention ressortiront à la lecture de la description faite en référence aux dessins annexés, donnés à titre d'exemple, et dans lesquels : - les figures 1A, 1B et 1 C se référent à l'art antérieur évoqué dans le préambule ; - la figure 2 montre un schéma de principe d'un décodeur selon l'invention et sert de base à l'exposition de son fonctionnement ; la figure 3 illustre la modélisation du décodeur qui permet son dimensionnement selon l'invention ; - les figures 4A à 4D illustrent, sous la forme d'organigrammes, quatre procédés de dimensionnement d'un décodeur selon l'invention ; et les figures 5A et 5B illustrent un exemple de dimensionnement d'un décodeur selon l'invention ; - la figure 6 montre comment la complexité d'un décodeur selon l'invention et d'un décodeur à nombre d'itérations fixé, équivalents en terme de débit et de taux d'erreur, varient en fonction de l'énergie par bit d'information (Eb/No) du signal à décoder. D'après la figure 2, un décodeur 20 selon l'invention comporte une unité de contrôle 21, un ensemble de N modules de décodage, ou serveurs 22, une mémoire tampon d'entrée 23 constituée de N+L emplacements, une mémoire tampon de sortie 24 constituée de N' emplacements et une mémoire extrinsèque 25 (N emplacements). Les doubles flèches F1-F5 matérialisent les échanges de données parmi les composantes du système. Un paquet en cours de décodage ne peut pas être effacé de la mémoire tampon d'entrée 23 tant qu'il n'a pas été entièrement traité : pour cette raison cette mémoire doit comporter au moins N emplacements. De plus, si le code itératif utilisé est un code turbo, chaque serveur doit disposer d'au moins un emplacement de mémoire extrinsèque 25 pour stocker l'information échangée à chaque itération entre les deux décodeurs élémentaire qui le constituent (voir les références mentionnées ci-dessus sur les codes turbo). La mémoire extrinsèque peut éventuellement être absente dans le cas d'autres techniques de codage. L'unité de contrôle 21 accomplit trois tâches : - le multiplexage statistique des données en entrée, qui sont d'abord stockées dans la mémoire tampon d'entrée 23 (flèche F1) et successivement traitées par l'un des serveurs appartenant à l'ensemble 22 (flèche F2); le contrôle de la condition d'arrêt pour chaque serveur (flèche F3): quand cette condition est vérifiée, le serveur en question arrête le traitement en cours, transfère le paquet de données décodé vers la mémoire tampon de sortie 24 (flèche F4) et se dispose pour recevoir un nouveau paquet à décoder ; et - la gestion de la mémoire tampon de sortie 24 (flèche F5). Une telle unité de contrôle peut être réalisée selon des techniques connues de l'homme du métier. Suivant différentes variantes de l'invention, l'unité de contrôle 21 peut accomplir seulement une partie des taches mentionnées ci-dessus. Par exemple, chaque serveur peut vérifier de manière autonome sa propre condition d'arrêt. Le multiplexage statistique constitue cependant une caractéristique essentielle d'un décodeur selon l'invention. Dans un mode préféré de réalisation de l'invention, l'attribution des paquets de données stockés dans la mémoire tampon d'entrée aux serveurs disponibles est gérée par l'unité de contrôle sur 21 la base du principe premier entrant - premier sortant (FIFO, First-In-FirstOut ), c'est à dire que les paquets sont traités dans le même ordre dans lequel ils sont reçus, mais d'autres principes peuvent être appliqués. Par exemple, si le décodage d'un paquet s'avère particulièrement long, il peut être interrompu pour faire face à une augmentation du débit de données en entrée et repris plus tard. Avantageusement, plusieurs serveurs peuvent accéder simultanément à la mémoire tampon, qui est une ressource partagée. Plusieurs modes de réalisation de modules de décodage itératif sont connus de l'homme du métier, pour cette raison leur structure et leurs performances ne seront pas discutées ici. Pour plus d'information voir, par exemple, les documents EP 1 022 860 B1, WO 01/06661 et EP 0 735 696 B1. Dans la suite on supposera que les serveurs sont identiques entre eux, mais le cas plus général de serveurs différents rentre dans le cadre de la présente invention. Si un paquet de données à décoder est reçu pendant que tous les N serveur, et donc les N premiers emplacements de la mémoire tampon d'entrée, sont occupés, ledit paquet doit être stocké dans un des L emplacements de mémoire supplémentaires jusqu'à qu'un serveur soit libéré. Le décodeur constitue donc un système à file d'attente et ses performances peuvent être évaluées à l'aide de la théorie des files d'attente , exposée par exemple dans le texte : Introduction to Queuing Systems , de S.K.Bose, Kluver/Plenum Publishers, 2001. La figure 3 illustre la modélisation du système du point de vue de la théorie des files d'attente. Cette modélisation permet le dimensionnement d'un décodeur selon l'invention pour une application donnée, c'est à dire la détermination du nombre N de serveurs et du nombre L d'emplacements de mémoire supplémentaires en fonction du débit de données r* qui doit être obtenu, de l'écart signal et bruit (SNR, Signal to Noise Ratio) et du taux d'erreurs (BER/FER) admissible. En fait, plutôt que le SNR, on utilise le rapport Eb/No, où Eb est l'énergie par bit d'information et No la puissance moyenne du bruit. Le rapport entre le SNR et Eb/No est l'efficacité spectrale #=Rc#M, où Rc ( code rate ) est le rapport entre le nombre de bits d'information et le nombre de bits de code utilisés pour les transmettre et l'efficacité de modulation #M est le nombre de bits de code porté par chaque symbole transmis. Le débit de chaque serveur rserv, ainsi que l'aire de silicium occupée par chaque serveur (Sdec) et par chaque emplacement de mémoire tampon (SI/O), sont considérés comme des paramètres externes, qui dépendent des choix technologiques effectués lors de la réalisation du décodeur. Le décodeur est modélisé par un système à file d'attente du type D/G/N/N+L. Dans la notation de Kendall, couramment utilisée en théorie des files d'attente, cela signifie que le système est caractérisé par : - un taux d'arrivée déterministe (D) des paquets en entrée, indiqué par R, ; un temps de service Ts aléatoire, décrit par une fonction de densité de probabilité (FDP) générique (G) ; - N serveurs (figure 3, chiffre de référence 30); et - N+L positions d'attente (figure 3, chiffre de référence 31). Comme le nombre de positions d'attente est fini et le temps de service n'est pas déterministe, il est possible qu'un paquet arrive pendant que la file d'attente est pleine : ce paquet est donc perdu. La probabilité de perdre un paquet, dite probabilité de blocage, est indiquée par PB et sa valeur doit être suffisamment petite pour ne pas affecter sensiblement les prestations du décodeur. Typiquement, on impose que PB doit être inférieur au FER d'au moins deux ordres de grandeur : PB#[alpha]#FER*, avec aO.01. En principe, le temps de service Ts est une variable aléatoire discrète qui peut prendre les valeurs N,tTS,mm, ou Ts,,,, est le temps nécessaire à effectuer une itération et N,t est un nombre entier compris entre 1, ce qui correspond au cas où la condition d'arrêt serait satisfaite après une seule itération, et +#, car le décodage peut ne pas converger. En pratique, les règles d'arrêt prévoient toujours un nombre maximal d'itérations admissibles (par exemple 100). La courbe 32 sur la figure 3 représente une interpolation de la fonction de densité de probabilité (FDP) de Ts. Bien que Ts soit, en principe, un temps, il est avantageux de le mesurer en nombre d'itérations, afin de s'affranchir des caractéristiques physiques du décodeur, qui dépendent de la technologie microélectronique utilisée. Comme illustré par l'organigramme sur la figure 4A, la première étape (400) du procédé de dimensionnement du décodeur consiste à déterminer le débit r* des données à décoder, le rapport Eb/No du signal reçu, le taux d'erreur acceptable (BER*/FER*), la probabilité de blocage maximale (PB*) ainsi qu'une fonction de coût (C(N,L)) adaptée. Ensuite, généralement à l'aide de simulations, on détermine de la FDP de Ts (étape 401). Une fois déterminée la FDP, on peut calculer la valeur attendue de Ts, E{TS}, ce qui constitue l'étape 402. A l'étape 403, qui peut par exemple être simultanée à l'étape 402, on pose L=Lmin, où Lmin est l'extrême inférieur d'un intervalle déterminé a priori de valeurs admissibles pour le nombre d'emplacements de mémoire supplémentaires [Lm,n, Lmax], dans lequel typiquement Lmin=1. A l'étape 404, une première estimation du nombre de serveur, N*, est calculée en considérant un nombre infini de positions d'attente. Dans ce cas, le débit moyen de chaque serveur est simplement 1/E(Ts). Le nombre de serveur nécessaire pour assurer un débit cible r* est donc N=r* E(Ts). La probabilité de blocage PB correspondant au couple (N, L) est calculée (étape 405) et comparée à la consigne PB* (étape 406). Le calcul de PB se fait par simple comptage des paquets perdus lors d'une série de simulations basées sur le modèle D/G/N/N+L et utilisant la FDP de Ts déterminée à l'étape 401. Pour plus de précisions concernant ces simulations, voir l'ouvrage de S. K.Bose cité ci-dessus. Le couple (N, L) est retenu (étape 408) si PB Si L Enfin, parmi tous les couples admissibles (N,L) l'on choisit celui, (N*,L*), qui minimise la fonction de coût, C (N,L), représente par exemple la surface de silicium occupée (étape 411). Si l'on néglige la complexité de l'unité de contrôle, la fonction de coût est par exemple donnée par C(N,L)= N#Sdec+L#SI/O. Le seul paramètre qui reste à déterminer est le nombre N' d'emplacements de la mémoire tampon de sortie. Sa valeur dépend de l'application spécifique : on peut par exemple considérer deux cas typiques : N'=N+L et N'=0 (mémoire de sortie peut complètement absente). Du point de vue du temps de calcul, l'étape la plus onéreuse est certainement la détermination de PB, qui doit être répétée pour chaque couple (N*, L*) et qui demande de réaliser un nombre important de simulations du système de file d'attente. L'autre étape qui demande un temps de calcul élevé est la détermination de la FDP(Ts), qui est effectuée à l'aide de plusieurs simulations de l'algorithme de décodage avec différents paquets en entrée. La distribution statistique du temps de service pour ces paquets est déterminée par la valeur de Eb/No dans les conditions de fonctionnement pour lesquelles le décodeur est prévu et par le taux d'erreur (BER* ou FER*) admissible. Ces simulations peuvent être simplifiées considérablement en remplaçant la règle d'arrêt réellement appliquée ans le décodeur avec le critère d'arrêt dit aidé par Génie : l'itération est arrêtée quand un paquet a été décodé correctement. Evidemment, un tel critère ne peut être appliqué que dans le cadre d'une simulation, où les paquets de données sont parfaitement connus. Le critère aidé par Génie est généralement complété par un critère d'arrêt au bout d'un nombre maximal d'itérations pour empêcher que le décodeur reste bloqué dans une boucle infinie. Le nombre maximal d'itérations est choisi de telle sorte que le taux d'erreur soit inférieur ou égal à BER* ou FER*. L'expérience montre que cette approche simplifiée donne des résultats suffisamment proches de ceux obtenus en appliquant des critères d'arrêt réalistes. Un procédé alternatif est illustré sur la figure 4B. Dans ce procédé la détermination de N et L peut être effectuée en partant d'un nombre de serveur N*=Nwc=r7rserv, égal à celui qui serait nécessaire dans le cas d'une architecture parallèle à nombre d'itérations fixé (étape 404'), et d'un nombre arbitraire L d'emplacements supplémentaires de mémoire. Cette première estimation du nombre de serveurs est indiquée par Nwc, où wc signifie worst case (pire des cas) car en général il s'agit d'une estimation par excès. La probabilité d'arrêt PB est donc calculée et comparée à PB* ; N est ensuite diminué (étape 407') jusqu'à que PB> PB* :à ce point la valeur de N+1, c'est à dire le nombre de serveur déterminé à l'avant-dernière itération, est retenue (étape 408'). Le cycle est répété pour toutes les valeurs admissibles de L. Ce deuxième procédé de dimensionnement donne exactement les mêmes résultats que celui représenté sur la figure 4A, mais nécessite d'un nombre plus élevé de simulations et présente donc un intérêt moindre. Dans les figures 4A et 4B, les opérateurs ++ et - - représentent respectivement l'incrément et le décrément d'une unité. On considère maintenant un exemple concret de conception d'un décodeur selon l'invention. L'algorithme de décodage utilisé est un code turbo serial en série, obtenu en concaténant deux codes : le code externe est un convolutionnel à 16 états avec taux 1/2, le code interne est un code différentiel à 2 états avec taux 1/1. La séquence à la sortie est entrelacée avec une loi pseudo-aléatoire ( S-random law ). Pour plus de précision sur ce type de code, voir : Serial concatenation of interleaved codes : Performance analysis, design, and iterative decoding , S. Benedetto et al. IEEE Trans. Inform. Theory, 44(3) : 909-926,1998 ; en ce qui concerne l'algorithme d'entrelacement voir : Turbo codes for PCS applications , F. Pollara et D. Divsalar, IEEE International Conference on Communications, ICC 95,1 : 54- 59, juin 1995. Les serveurs et les mémoires tampons sont réalisés de manière conventionnelle ; pour des exemples d'architectures de décodeurs itératifs pouvant être utilisés comme serveurs dans une réalisation de la présente invention, voir : VLSI Architectures for Turbo Codes , G. Masera, G. Piccinini, M. Ruo Roch, M. Zamboni, IEEE Trans. on VLSI Systems, Vol. 7 : 369-379, 1999 ; VLSI Architectures for the MAP Algorithm , E. Boutillon, W.J. Gross, IEEE Trans. on Communication, Vol. 51 :175-185, 2003 ; et A 50 Mbit/s Itérative Turbo Decoder , F. Viglione, G. Masera, G. Piccinini, M. Ruo Roch, M. Zamboni, Design, Automation and Test in Europe, DATE'00, Mars 2002, Paris. La technologie microélectronique utilisée est le procédé HCMOS à 0,18 m de Taiwan Semicondutor Manufacturing Company (TSMC). La transmission des données est caractérisée par une efficacité spectrale #=1 bps/Hz et un rapport Eb/N0=2,75 dB. On utilise une modulation par déphasage en quadrature (QPSK) avec r=1/2 et des blocs d'une longueur K=748 bits ; le FER admissible est de 10-5 et PB*=10-7. Dans ces conditions, la figure 5A montre la complexité (aire de silicium) du décodeur, normalisée par rapport au cas d'une architecture à nombre d'itérations fixées, pour r*=5/E{Ts} (courbe 51), r*=10/E{T s} (courbe 52) et F*=20/ETSI (courbe 53). Dans les trois cas, le nombre optimal d'emplacements supplémentaires de mémoire est 7, alors que N* vaut 1, 2 et 4 respectivement. On voit que le gain en terme de complexité par rapport aux architectures à nombre d'itérations fixées augmente avec le débit de données et atteint un facteur 4 pour r*=20/E{Ts}. La complexité réelle, en mm2, est indiquée sur la figure pour chaque configuration optimale. En fonction des contraintes liées à la technologie de réalisation d'un décodeur selon l'invention, des fonctions de coût autres que la complexité peuvent être prises en compte lors de la conception. La figure 5B montre la dépendance du nombre de serveurs à utiliser pour obtenir un débit r* donné, exprimé en unité 1/E{Ts}, pour différentes architectures de décodeur. La courbe 54 se réfère à une des architectures de la figure 1, qui ne permettent pas l'application d'une règle d'arrêt ; le nombre de serveurs est donc simplement égale au produit #*#E{Ts}. La courbe 55 correspond au cas L=0 : les serveurs doivent être en nombre suffisant pour que la probabilité qu'ils soient tous occupés au même instant soit suffisamment faible, plus précisément inférieure ou égale à PB. La courbe 56 a été calculée pour L=5 ; enfin,la courbe 57 correspond à une mémoire tampon illimitée. Dans le cas r*=50, par exemple, l'utilisation d'un critère d'arrêt, et donc d'un multiplexage statistique des paquets, même sans emplacements supplémentaires de mémoire, réduit le nombre de serveurs de 50 à 15. L'adjonction de 5 emplacements de mémoire réduit le nombre de serveurs à 11, ce qui est encore très avantageux, alors que même une mémoire tampon infinie ne permet pas de descendre au-dessous de 10 serveurs : il n'est donc pas utile d'augmenter excessivement la valeur de L. En fait, dans le cas considéré, la faible longueur des blocs (K=748 bits) rend la complexité du système peu sensible aux variations de L. Si l'on considère des blocs sensiblement plus longs, la complexité augmente fortement si le nombre d'emplacements de mémoire dépasse sa valeur optimale. Jusqu'à présent on a toujours considéré le cas d'un système de communication avec un débit r* et un rapport Eb/No (et donc un écart signal et bruit) imposés, et on s'est proposé de minimiser la complexité du décodeur. L'amélioration des performances du décodeur obtenue par la présente invention peut aussi être exploitée pour diminuer l'écart signal et bruit, et donc la puissance transmise, tout en maintenant la complexité du système (ou une autre fonction de coût) dans des limites acceptables. Sur la figure 6 est représenté la complexité, en mm2 de silicium, en fonction de Eb/No pour un décodeur à nombre d'itération fixé (courbe 61, cercles) et pour un décodeur selon l'invention (courbe 62, triangles). Les caractéristiques du système de transmission sont les mêmes que pour les figures 5A et 5B, avec r*=10/E{Ts}. On voit que pour une complexité fixée, par exemple, à 1,8 mm2, la présente invention permet de réduire Eb/No de 3,25 (point 63) à 2,6 dB (point 64), ce qui conduit à une diminution de la puissance transmise de 14% environ. On comprend facilement l'intérêt de l'invention, notamment dans les applications spatiales et de téléphonie mobile, où la consommation d'énergie est particulièrement critique. Un procédé de dimensionnement pour un décodeur selon l'invention visant à minimiser la puissance transmise, et donc le rapport Eb/No du signal à décoder, est illustré sur la figure 4C. On commence par déterminer le débit r*, le taux d'erreur (BER*/FER*) et la probabilité de blocage (PB) admissibles, une fonction de coût (C(N,L)) et une valeur maximale admissible (C*) de ladite fonction de coût (étape 450). A l'étape 452 une première valeur d'essai de Eb/No est choisie ; à l'étape 454 un décodeur est dimensionné, par un des procédés illustrés sur les figures 4A et 4B, pour cette valeur de Eb/No et (étape 456) la valeur correspondante de C (N,L) estcalculée. Si cette valeur est inférieure à C* (étape de test 458) on diminue Eb/No d'une quantité prédéterminée # (étape 459) et on recommence depuis l'étape 454, autrement on retient le dernier couple (N, L) pour lequel C C* à la première itération, il est nécessaire de recommencer avec une valeur plus élevée de Eb/No. Il est important d'observer que, pour chaque valeur de Eb/No, la PDF(TS) doit être recalculée. Encore, il est possible de choisir le couple (N*, L*) de façon à maximiser le débit r pour une complexité (ou une valeur d'une autre fonction de coût) et un rapport Eb/No donnés, comme illustré par la figure 4D. On commence par déterminer le taux d'erreur (BER*/FER*) et la probabilité de blocage (PB) admissibles, le rapport Eb/No, une fonction de coût (C(N,L)) et une valeur maximale admissible (C*) de ladite fonction de coût (étape 470). A l'étape 472 une première valeur d'essai du débit r est choisie ; à l'étape 474 un décodeur est dimensionné, par un des procédés illustrés sur les figures 4A et 4B, pour cette valeur de r et (étape 476) la valeur correspondante de C (N,L) calculée. Si cette valeur est inférieure à C* (étape de test 478) on augmente r d'une quantité prédéterminée 8 (étape 479) et on recommence depuis l'étape 474, autrement on retient le dernier couple (N, L) pour lequel C C* à la première itération, il est nécessaire de recommencer avec une valeur plus faible de r. L'homme du métier peut facilement perfectionner ces procédés : par exemple, quand C dépasse C* pour la première fois, on peut diminuer la valeur de 8 pour s'approcher plus de la valeur minimale admissible de Eb/No (figure 4C) ou du débit maximal (figure 4D). D'autres possibles critères d'optimisation du décodeur apparaîtront de manière évidente à l'homme du métier en fonction de l'application spécifique pour laquelle un décodeur selon la présente invention est prévu. Dans les procédés 4A - 4D il est entendu que certaines des étapes peuvent être effectuées simultanément. Bien que dans la description détaillée seul le cas particulier des codes turbo ait été considéré, la présente invention s'applique également au décodage de tous les autres codes itératifs tels que, par exemple, les décodeurs turbo-like , des codes de contrôle de parité à faible densité (LDPC, Low-Density Parity Check ), les codes d'effacement d'interférence (IC, Interférence Cancellation ), les codes d'effacement d'interférence en série (SIC, Serial IC ) et les codes d'effacement d'interférence parallèles (PIC, Parallel IC ), sans que cette liste ne puisse être considérée exhaustive. REVENDICATIONS 1. Décodeur itératif (20) comportant : une pluralité de serveurs (22) qui effectuent chacun le décodage itératif d'un bloc de données; - une mémoire tampon d'entrée (23) pour stocker temporairement les blocs de données à décoder par les serveurs (22) ; une unité de contrôle (21) pour attribuer chaque bloc de données à décoder à un serveur ; dans lequel le nombre d'itérations de la procédure de décodage effectuée par chaque serveur (22) est déterminé sur la base d'un critère d'arrêt et l'unité de contrôle (21) attribue des blocs de données à décoder aux différents serveurs (22) à fur et à mesure qu'ils se rendent disponibles, caractérisée en ce que : - la mémoire tampon d'entrée (23) comporte N+L emplacements de mémoire, où N est le nombre de serveurs (22) et L est le nombre d'emplacements dits supplémentaires; - chaque bloc à décoder qui est reçu pendant que tous les serveurs (22) sont occupés est stocké dans l'un des L emplacements supplémentaires éventuellement disponibles, ou il est perdu si la mémoire tampon d'entrée (23) est entièrement remplie ; -le nombre L d'emplacements supplémentaires et le nombre N de serveurs sont tels que la probabilité PB qu'un bloc soit perdu, calculée sur la base d'un modèle de file d'attente du type D/G/N/N+L, vérifie la condition PB#[alpha]#FER#, où FER* est le taux d'erreur sur les blocs admis et a 2. Décodeur itératif (20) selon la revendication 1, dans lequel [alpha]#0,01. 3. Décodeur itératif (20) selon la revendication 1 ou 2 dans lequel, parmi tous les couples de valeurs de L et de N permettant d'atteindre un débit r suffisamment élevé et une probabilité PB de blocage suffisamment faible, est choisi celui qui minimise l'aire de silicium occupée par le décodeur (20) 4. Décodeur itératif (20) selon l'une des revendications précédentes, dans lequel la mémoire tampon d'entrée (23) est commune à tous les serveurs (22) et est accessible en parallèle. 5. Décodeur itératif (20) selon l'une des revendications précédentes, dans lequel les paquets de données stockés dans la mémoire tampon d'entrée sont attribués aux serveurs disponibles sur la base du principe premier entrant - premier sortant ( FIFO, First-In-First-Out ). 6. Décodeur itératif (20) selon l'une des revendications précédentes, comportant également une mémoire tampon de sortie (24) pour stocker temporairement les blocs de données décodés par les serveurs (22). 7. Décodeur itératif (20) selon l'une des revendications précédentes, dans lequel l'unité de contrôle (21) vérifie à intervalles réguliers si la condition d'arrêt pour chaque serveur (22) est satisfaite. 8. Décodeur itératif (20) selon la revendication 7, dans lequel la condition d'arrêt est vérifiée après chaque itération de la procédure de décodage. 9. Décodeur itératif (20) selon l'une des revendications précédentes, dans lequel les serveurs (22) les serveurs sont des décodeurs choisis parmi : des décodeurs turbo , des décodeurs turbo-like , des codes de contrôle de parité à faible densité (LDPC, Low-Density Parity Check ), des codes d'effacement d'interférence (IC, Interférence Cancellation ), des codes d'effacement d'interférence en série (SIC, Serial IC ) et des codes d'effacement d'interférence parallèles (PIC, Parallel IC ). 10. Décodeur itératif (20) selon l'une des revendications précédentes, comportant également une mémoire extrinsèque (25) utilisée par les serveurs (22) lors du décodage. 11. Système de communication utilisant un décodeur itératif selon l'une des revendications précédentes. 12. Procédé de fabrication d'un décodeur itératif selon l'une des revendications 1 à 10 comportant les étapes suivantes : A) concevoir le décodeur en appliquant les sous-étapes suivantes : a) déterminer au moins un des paramètres suivants :le débit (r*) des données à décoder, l'énergie par bit d'information (Eb/No) du signal portant l'information à décoder, le taux d'erreur admissible sur les bits ou sur les blocs (BER* ou FER*), la probabilité de blocage maximale admissible (PB*), le rapport (a) entre cette probabilité et le taux d'erreur admissible, ainsi qu'une fonction de coût (C(N,L)) qui doit être minimisée par le décodeur ; b) déterminer à partir d'au moins un desdits paramètres un couple (N, L) qui permet de minimiser la fonction de coût C(N,L) ;et B) réaliser un décodeur, ayant les valeurs N, L déterminées à la sous-étape A.b. 13 Procédé selon la revendication 12, caractérisé en ce que A. b comporte : i. choisir un mode de réalisation des serveurs (22) ; ii. déterminer une valeur maximale (Lmax) et une valeur minimale (Lm,n) admissibles pour le nombre d'emplacements supplémentaires de mémoire tampon d'entrée (23) (403) ; iii. utiliser les données obtenues lors des deux premières sous-étapes pour calculer la fonction de densité de probabilité (FDP) du temps de service (Ts), c'est à dire le temps nécessaire à un serveur (22) pour décoder un bloc d'information, ainsi que la valeur attendue (E{Ts}) dudit temps de service (401 ;402); iv. poser initialement le nombre d'emplacements supplémentaires de mémoire tampon d'entrée (23) égale à L= Lm,n (403) v. poser initialement le nombre de serveur égale à N=#*#E {Ts} (404) ; vi. modéliser le décodeur comme un système à file d'attente du type D/G/N/N+L et calculer la probabilité de blocage PB correspondante (405) ; vii. si PB>PB*=[alpha]#FER* ou a-BER* (406), augmenter N d'une unité (407) et répéter la sous-étape vi ; viii. autrement retenir le couple (N, L) (408) ; ix. si L* 14. Procédé selon la revendication 12, caractérisé en ce que A. b comporte : i. choisir un mode de réalisation des serveurs (22) ; ii. déterminer une valeur maximale (Lmax) et une valeur minimale (Lmin) admissibles pour le nombre d'emplacements supplémentaires de mémoire tampon d'entrée (23) ; iii. utiliser les données obtenues lors des deux premières sous-étapes pour calculer la fonction de densité de probabilité (FDP) du temps de service (Ts), c'est à dire le temps nécessaire à un serveur (22) pour décoder un bloc d'information de telle sorte que le taux d'erreur soit inférieur ou égal à BER* ou FER*, ainsi que la valeur attendue (E{Ts}) dudit temps de service (401 ; 402) ; iv. poser initialement le nombre d'emplacements supplémentaires de mémoire tampon d'entrée (23) égale à L= Lm,n (403) ; v. prendre une valeur initiale du nombre de décodeur N* suffisamment élevée pour que la probabilité de blocage PB soit inférieure à PB même si L=0 (404') ; vi. modéliser le décodeur comme un système à file d'attente du type D/G/N/N+L et calculer la probabilité de blocage PB correspondante (405) ; vii. si PB 15. Procédé selon la revendication 12 caractérisé en ce que A. b comporte : i. procéder à la conception d'un décodeur pour différentes valeurs de l'énergie par bit d'information (Eb/No) (452, 454); ii. choisir le couple (N*,L*) qui permet d'obtenir un taux d'erreur (BER* ou FER*) admissible au débit (r*) des données à décoder pour la plus faible valeur de l'énergie par bit d'information (Eb/No), tout en donnant, pour la fonction de coût (C(N,L)), une valeur inférieure ou égale à une valeur maximale admissible (C*) (456,458, 459); 16. Procédé selon la revendication 12, caractérisé en ce que A. b comporte : i. procéder à la conception d'un décodeur pour différentes valeurs du débit (r) (472, 474); ii. choisir le couple (N*,L*) qui permet d'obtenir le débit (r*) le plus élevé un taux d'erreur (BER* ou FER*) admissible pour la valeur choisie de l'énergie par bit d'information (Eb/No), tout en donnant, pour la fonction de coût (C(N,L)), une valeur inférieure ou égale à une valeur maximale admissible (C*) (476, 478, 459). 17. Procédé selon l'une des revendications 12 à 16, dans lequel la fonction de coût (C) est proportionnelle aux dimensions physiques du circuit électronique qui constitue le décodeur.