Brevet FR3064771A1 — publié le 20181005

L'invention concerne une technique de multiplication de nombres binaires permettant de fournir un résultat sous une forme binaire redondante. Le domaine de l'invention est celui des circuits et systèmes de traitement numérique de l'information et plus particulièrement, des calculateurs de traitement numérique de signal réalisant la multiplication de nombres binaires. L'invention a de nombreuses applications, telles que par exemple dans les microprocesseurs, les processeurs numériques du signal ou DSP (pour « Digital Signal Processor » en anglais), les circuits intégrés spécifiques de traitement numérique de données ou ASIC (pour « Application Specific Integrated Circuit » en anglais), les blocs de base des circuits intégrés ou VLSI (pour « Very Large Scale Integration» en anglais), les circuits de type FPGA (pour « Field programmable Gate Array »), ou encore au sein des réseaux neuronaux, des calculateurs optiques ou quantiques. L'invention s'applique notamment, mais non exclusivement, en traitement numérique de signal pour la multiplication de nombres dans le cadre de la réalisation de filtres numériques, par exemple. La multiplication binaire étant une des opérations arithmétiques les plus utilisées, l'invention peut s'appliquer plus généralement dans tout circuit, système ou dispositif demandant une multiplication d'opérandes. Les multiplieurs sont des opérateurs extrêmement fréquents et indispensables non seulement dans les unités arithmétiques des microprocesseurs et processeurs de traitement de signal numérique, mais également dans tous les circuits logiques. Cependant, les multiplieurs se révèlent être souvent les opérateurs critiques d'un système de traitement numérique, notamment lors de certaines mises en application, tant du point de vue de leur vitesse d'exécution que du point de vue de leur conception et de leur testabilité. En effet, l'élaboration d'algorithmes de complexité croissante au sein des calculateurs rend, de nos jours, l'architecture des opérateurs de plus en plus difficile à mettre en oeuvre et des problèmes notamment de compacité apparaissent. Un choix entre complexité et vitesse d'exécution doit donc être généralement effectué. Le problème technique de la vitesse de calculs concernant les opérations de multiplication de nombres binaires est un problème connu de l'homme du métier et plusieurs techniques ont déjà été proposées pour y répondre. 3064771 2 On connaît déjà des multiplieurs du type basé sur un schéma à points matriciels (« dot matrix » en anglais). Le multiplicande y est décalé, multiplié par un bit de multiplieur et additionné avec la somme intermédiaire du calcul précédent. L'opération est ensuite répétée jusqu'au dernier bit, l'addition des valeurs de 5 multiplicandes décalés étant soit effectuée par recodage en utilisant des algorithmes simplificateurs reconsidérant les éléments successifs comme des multiples, (recodage du type connu en anglais sous le nom de recodage « Booth »), ce qui permet de diminuer le nombre de multiplicandes à additionner, soit en mettant en oeuvre une pluralité d'additionneurs identiques pour le calcul. 10 Dans ce dernier cas, afin d'éviter la propagation des retenues et ainsi améliorer le temps d'exécution des calculs, une technique traditionnellement employée consiste en une addition de nombres binaires sous forme redondante dite à sauvegarde de retenue (ou « carry save » en anglais). Des additionneurs standards dits complets (« full adder » en anglais) utilisent cette expression binaire redondante qui 15 permet d'effectuer des additions de façon parallèle, et donc sans propagation de retenues. Un multiplieur composé d'un tel réseau d'additionneurs est appelé « array matrix multiplier » en anglais. À titre d'exemple, les brevets américains US 5974437A (SYNOPSYS) et US 9411554B1 (XILINX) proposent deux architectures de multiplieur de nombres 20 binaires de type « array matrix ». La méthode classique citée dans ces documents consiste à utiliser notamment des additionneurs de type « full adder » et une représentation binaire redondante de type « carry-save » pour l'expression des calculs intermédiaires. Les représentations binaires redondantes ont été exposées en détail dans la 25 littérature scientifique, notamment dans l'article « Generalized Signed-Digit Number Systems: A Unifying Framework For Redundant Number Representation » de Parhami publié en 1990. D'autres représentations binaires redondantes sont utilisées dans des structures de multiplieurs de type « array matrix » et en particulier la représentation 30 appelée « binary stored carry or borrow » (ou BSCB sous forme abrégée) est utilisée dans le brevet US 8468193B2 (TORNO) (elle est nommée « U/R » dans le texte de ce brevet). La structure de multiplieur décrite dans ce dernier brevet est constituée d'une matrice de modules de multiplication utilisant la représentation binaire redondante B SCB . 3064771 3 La lenteur des calculs est l'inconvénient de la structure des multiplieurs de type « array matrix », qu'elle soit constituée d'additionneurs utilisant la représentation binaire redondante « carry-save » ou de modules de multiplication utilisant la représentation binaire redondante BSCB. En effet, le temps de calcul 5 dépend directement du temps nécessaire à la propagation de la retenue de l'additionneur ou du module de multiplication du bit de rang n à l'additionneur ou au module de multiplication de rang n+1 et ce pour chaque bit du multiplieur, en fait il est linéairement proportionnel à la somme du nombre de bits du multiplicande et du nombre de bits du multiplieur. 10 Un autre inconvénient des multiplieurs de type « array matrix » constitués d'additionneurs utilisant la représentation binaire redondante « carry-save » est la difficulté de tester le bon fonctionnement du dispositif Pour certains usages ne nécessitant pas une précision exacte du résultat, des structures de multiplieur générant un résultat tronqué sont utilisées pour diminuer le 15 coût du multiplieur et améliorer la rapidité de calcul. Par exemple, la demande de brevet GB 2503263A (Imagination Technologies Ltd) décrit une telle technique de calcul de résultat tronqué. L'inconvénient des techniques actuelles de troncature est la complexité des structures de multiplieur qui en découle. L'invention, dans au moins un mode de réalisation, a notamment pour objectif 20 de pallier ces différents inconvénients de l'état de la technique. Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique de multiplication de nombres binaires à l'aide d'une représentation binaire redondante de type BSCB offrant de meilleures performances que la technique connue précitée décrite dans le brevet US 8468193B2 25 (TORNO). Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique qui permet de multiplier deux nombres binaires. Au moins un mode de réalisation de l'invention a également pour objectif de fournir une telle technique permettant de réduire le temps d'exécution de la 30 multiplication de nombres binaires. Plus précisément, un objectif est de réduire le temps de propagation. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui apporte une meilleure testabilité du fait 3064771 4 notamment d'une implantation particulière de portes « OU Exclusif» (« EXOR » en anglais) et « ET» (« AND» en anglais). Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui facilite le calcul de résultats partiels par 5 troncature permettant ainsi d'obtenir un résultat plus rapidement. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui soit simple à mettre en oeuvre et peu coûteuse. Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de multiplication permettant de multiplier deux nombres binaires X et Y 10 respectivement de N et de M bits pour obtenir un produit P de (M+N) bits, à savoir : XXN.2N-1 ± XN-1.2N-2 ± x11.211 ± X2.21 ± x1.2° Y = y .2m-1 + v .2m-2 + + y.211 ± ± y2.21 ± d M-1 avec : P = p -2M+N-1± 1- .2M+N-2 , p 2N + + .21 + .2° MN -VM+N-1 -I- D 2 -I- D 1 Le procédé comprend au moins une itération, d'indice i avec 1 i M, d'une étape 15 de multiplication permettant de générer un signal de somme partielle li+' sur N bits et un signal de correction ki+2 sur N bits, selon les équations suivantes : { 11 kin±±21 = (1,1, G ein ).(h,l, G k,l, ) et : { en = Xn-i+1 Kii , `In-i+1 20 avec : G yi (i) )S (D Yi (D YI-2 Xn-i+1 : une valeur du bit de rang n-i+1 du nombre binaire d'entrée X, avec 1 n-i+1 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; Xn-i+2 : une valeur du bit de rang n-i+2 du nombre binaire d'entrée X, avec 25 1 n-i+2 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; Yi : une valeur du bit de rang i du nombre binaire d'entrée Y, avec 1 i M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; o 0 (1) 3064771 5 yi-2 : une valeur du bit de rang i-2 du nombre binaire d'entrée Y, avec 1 i-2 M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication, et initialisé ainsi : y1-2= 0 pour i=1 et i=2 ; une valeur du bit de rang n dudit signal de somme partielle li, obtenue lors 5 d'une itération précédente d'indice i-1 si i > 1, ou une valeur d'initialisation déterminée l'n du bit de rang n dudit signal de somme partielle li si i = 1; : une valeur du bit de rang n dudit signal d'hypothèse hi, calculée pour l'itération i; une valeur du bit de rang n dudit signal de signe e de la somme partielle, 10 calculée pour l'itération i ; une valeur du bit de rang n dudit signal de correction obtenue lors d'une itération précédente d'indice i-2 si i > 2, ou une valeur d'initialisation prédéterminée du bit de rang n dudit signal de correction ki si i = 1 ou si i = 2; : une valeur du bit de rang n dudit signal de somme partielle 11+1, avec 15 1 n N, obtenue lors de ladite itération d'indice i; ki+2n+1 : une valeur du bit de rang n+1 dudit signal de correction ki+2, avec 1 n+1 N, obtenue lors de ladite itération d'indice i. Le principe général de l'invention consiste donc à combiner un signal de signe de somme partielle ein et un signal d'hypothèse hin à un résultat représenté dans 20 une représentation binaire redondante de type BSCB (signaux lin/ kin) (ce résultat résultant d'une initialisation ou d'une étape précédente de multiplication), et générer ainsi un résultat également dans une représentation binaire redondante de type BSCB (signaux li+1n/ k,+2 +i). Plus précisément, un tel procédé permet de réaliser cette étape de multiplication autant de fois qu'il y a de bits M dans le nombre binaire à 25 multiplier. On parle alors d'étapes de multiplication avec génération de résultats intermédiaires de calcul. Plus précisément, à chaque étape de multiplication, un signal de somme partielle 1 et un signal de correction k sont générés sur N bits. De cette façon, un tel procédé permet de multiplier deux nombres binaires 30 standards tout en évitant la propagation des retenues sur N bits à chaque itération et en accélérant la propagation des corrections entre l'itération i et l'itération i+2 du fait que l'étape de multiplication i génère le signal de correction pour l'étage de multiplication i+2, c'est-à-dire en ne prenant pas en compte l'étape de multiplication d'indice i+1. 3064771 6 De plus, ce procédé permet de multiplier deux nombres binaires standards X et Y de respectivement N et M bits et de fournir un résultat tronqué sur Q bits avec Q 1, ou une valeur d'initialisation déterminée li' du bit de rang n dudit signal de somme partielle li si i = 1; 25 : une valeur du bit de rang n dudit signal d'hypothèse hi, calculée pour l'itération i; une valeur du bit de rang n dudit signal de signe e de la somme partielle, calculée pour l'itération i ; len : une valeur du bit de rang n dudit signal de correction ki, obtenue lors d'une 30 itération précédente d'indice i-2 si i > 2, ou une valeur d'initialisation prédéterminée du bit de rang n dudit signal de correction ki si i = 1 ou si i = 2; 3064771 8 1+1 . 1 ' . une valeur du bit de rang n dudit signal de somme partielle 11+1, avec 1 n N, obtenue lors de ladite itération d'indice i ; kl+2'+1 : une valeur du bit de rang n+1 dudit signal de correction k1+2, avec 1 n+1 N, obtenue lors de ladite itération d'indice i. 5 De façon avantageuse, le module de multiplication comprend pour chaque bit n: - une première porte logique XOR (OU exclusif) recevant ladite valeur ler, du bit de rang n et d'indice i et ladite valeur 1-11' du bit de rang n et d'indice i, et générant un premier signal intermédiaire ; - une deuxième porte logique XOR recevant ledit premier signal intermédiaire 10 et ladite valeur de somme partielle 11' du bit de rang n et d'indice i, et générant la valeur 11+1,, dudit signal de somme partielle du bit de rang n et d'indice i+1 ; - une troisième porte logique XOR recevant ladite valeur de somme partielle 11' du bit de rang n et d'indice i et ladite valeur de signe de somme partielle el,, du bit de rang n et d'indice i, et générant un second signal intermédiaire ; 15 - une porte logique AND recevant ledit premier signal intermédiaire et ledit second signal intermédiaire, et générant ladite valeur 1(1+2'+1 dudit signal de correction du bit de rang n+1 pour l'itération d'indice i+2. Ainsi, l'architecture du module de multiplication permet un temps de propagation plus court et facilite la testabilité. 20 De façon avantageuse, le module d'initialisation comprend, pour chaque bit n de rang i : une première porte logique XOR recevant ladite valeur x'.1+1 du bit de rang n-i+1 d'un nombre binaire d'entrée X et ladite valeur x,,+2 du bit de rang n-i+2 dudit nombre binaire d'entrée X, et générant un premier signal 25 intermédiaire ; une deuxième porte logique XOR recevant ladite valeur y, du bit de rang i d'un nombre binaire d'entrée Y et ladite valeur Yi-2 du bit de rang i-2 dudit nombre binaire d'entrée Y, et générant un deuxième signal intermédiaire ; une troisième porte logique XOR recevant ledit premier signal intermédiaire 30 et ledit deuxième signal intermédiaire et générant ladite valeur 111' du bit de rang n dudit signal d'hypothèse pour l'itération d'indice i; une porte logique XNOR recevant ladite valeur x+1 du bit de rang n-i+1 d'un nombre binaire d'entrée X et ladite valeur y, du bit de rang i d'un nombre 3064771 9 binaire d'entrée Y et générant ladite valeur e'r, du bit de rang n dudit signal de signe de somme partielle pour l'itération d'indice i. Dans un autre mode de réalisation avantageux de l'invention, il est proposé un dispositif de multiplication permettant de multiplier deux nombres binaires d'entrée 5 X et Y, de respectivement N et M bits, pour obtenir un produit P de Q bits, avec Q 1, ou une valeur d'initialisation 25 déterminée 11' du bit de rang n dudit signal de somme partielle li si i = 1; : une valeur du bit de rang n dudit signal d'hypothèse hi, calculée pour l'itération i; une valeur du bit de rang n dudit signal de signe e de la somme partielle, calculée pour l'itération i ; 30 : une valeur du bit de rang n dudit signal de correction ki, obtenue lors d'une itération précédente d'indice i-2 si i > 2, ou une valeur d'initialisation prédéterminée du bit de rang n dudit signal de correction ki si i = 1 ou si i = 2; 3064771 13 11+in : une valeur du bit de rang n dudit signal de somme partielle 11+1, avec 1 n N, obtenue lors de ladite itération d'indice i; kl+2n+1 : une valeur du bit de rang n+1 dudit signal de correction kl+2, avec 1 n+1 N, obtenue lors de ladite itération d'indice i. 5 Il est clair que d'autres architectures logiques (différentes de celle de la figure 1) peuvent aisément être envisagées par l'homme du métier pour la mise en oeuvre des équations génériques (1), tout en restant dans le cadre de la présente invention. On présente maintenant, en relation avec la figure 2, illustre une architecture logique d'un module d'initialisation des signaux 111n et el,' selon un premier mode de 10 réalisation de l'invention. Plus particulièrement, pour un rang n de bit donné et un indice i avec 1 n N et 1 i M, le module d'initialisation 200 prend en entrée : les signaux xn. 1+1 et Xn-1+2, respectivement valeurs des bits de rang n-i+1 et de rang n-i+2 du nombre binaire d'entrée X, pris en compte lors de l'itération d'indice i, et les signaux 15 yi et yi-2, respectivement valeurs des bits de rang i et de rang i-2 du nombre binaire d'entrée Y, pris en compte lors de l'itération d'indice i. A partir de ces signaux d'entrée, le mécanisme de calcul mis en place par le module 200 génère les valeurs binaires 111n et eln correspondant respectivement à la valeur du bit de rang n et d'indice i du signal d'hypothèse et à la valeur du bit de rang n et d'indice i du signal de signe 20 de somme partielle. Dans ce mode de réalisation particulier, le module d'accumulation 200 est constitué d'une première porte logique de type «OU Exclusif», également nommée porte « XOR », apte à recevoir en entrée les signaux yi et y1.2, respectivement valeur du bit de rang i et valeur du bit de rang i-2 du nombre binaire d'entrée Y. Cette 25 première porte « XOR » génère en sortie un signal numérique intermédiaire 201. Une deuxième porte logique « XOR », reçoit en entrée en entrée les signaux Xn4+2 et Xn-1+1, respectivement valeur du bit de rang n-i+2 et valeur du bit de rang n-i+1 du nombre binaire d'entrée X. Cette deuxième porte « XOR » génère en sortie un signal numérique intermédiaire 202. 30 Une troisième porte logique « XOR », reçoit en entrée les signaux intermédiaires 201 et 202. Cette troisième porte « XOR » génère en sortie le signal de l'hypothèse h1n de rang n et d'indice i. Une porte logique de type « OU Exclusif Inversé », également nommée porte « XNOR », apte à recevoir en entrée les signaux yi et respectivement valeur du 3064771 14 bit de rang i du nombre binaire d'entrée Y et valeur du bit de rang n-i+1 du nombre binaire d'entrée X. Cette porte « XNOR » génère en sortie le signal de signe de somme partielle e'r, de rang n et d'indice i. De cette façon, la valeur h'i, du bit de rang n du signal d'hypothèse d'indice i 5 est élaborée à l'aide du signal y, valeur du bit de rang i du nombre binaire d'entrée Y, du signal yi-2 valeur du bit de rang i-2 du nombre binaire d'entrée Y, du signal xn_i_pi valeur du bit de rang n-i+1 du nombre binaire d'entrée X, du signal xn_,+2valeur du bit de rang n-i+2 du nombre binaire d'entrée X, et la valeur e'r, du bit de rang n du signal de signe de somme partielle d'indice i est élaborée à l'aide du signal y, valeur du bit 10 de rang i du nombre binaire d'entrée Y et du signal xn_i_pi valeur du bit de rang n-i+1 du nombre binaire d'entrée X. Par conséquent, les signaux de signe de somme partielle e'n et d'hypothèse h'n sont déterminés à partir des équations génériques (2) suivantes, avec 1 n N et 1 REVENDICATIONS1. Procédé de multiplication permettant de multiplier deux nombres binaires X et Y respectivement de N et de M bits pour obtenir un produit P de (M+N) bits, caractérisé en ce qu'il comprend au moins une itération, d'indice i avec 1 i M, d'une étape de multiplication permettant de générer un signal de somme partielle li+1 sur N bits et un signal de correction ki+2 sur N bits, selon les équations suivantes : IP,» = rn G h:, e kin kin±±2, = (lin G e'n ).(lin e kin ) et : len = xn_i+1 e yi hin = x_+1 ° x_2 avec : : une valeur du bit de rang n-i+1 du nombre binaire d'entrée X, avec 1 n-i+1 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; : une valeur du bit de rang n-i+2 du nombre binaire d'entrée X, avec 1 n-i+2 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; yi : une valeur du bit de rang i du nombre binaire d'entrée Y, avec 1 i M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; yi-2 : une valeur du bit de rang i-2 du nombre binaire d'entrée Y, avec 1 i-2 5_ M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication, et initialisé ainsi : yi-2= 0 pour i=1 et i=2 ; une valeur du bit de rang n dudit signal de somme partielle li, obtenue lors d'une itération précédente d'indice i-1 si i > 1, ou une valeur d'initialisation déterminée 11,, du bit de rang n dudit signal de somme partielle li si i = 1; : une valeur du bit de rang n dudit signal d'hypothèse hi, calculée pour l'itération i; : une valeur du bit de rang n dudit signal de signe e de la somme partielle, calculée pour l'itération i ; : une valeur du bit de rang n dudit signal de correction ki, obtenue lors d'une itération précédente d'indice i-2 si i > 2, ou une valeur d'initialisation prédéterminée du bit de rang n dudit signal de correction ki si i = 1 ou si i = 2; 3064771 19 rin : une valeur du bit de rang n dudit signal de somme partielle 11+1, avec 1 ._11 N, obtenue lors de ladite itération d'indice i; ki+2n±i : une valeur du bit de rang n+1 dudit signal de correction ki+2, avec 1 n+1 N, obtenue lors de ladite itération d'indice i. 5 2. Dispositif de multiplication permettant de multiplier deux nombres binaires d'entrée X et Y, de respectivement N et M bits, pour obtenir un produit P de (M+N) bits, caractérisé en ce qu'il comprend au moins un module de multiplication et un module d'initialisation permettant, à chaque fois qu'ils sont activés, d'effectuer une itération, d'indice i avec i 1, du processus de multiplication, chaque module de 10 multiplication comprenant des moyens d'estimation, permettant de générer un signal de somme partielle l'El sur N bits, et des moyens de correction, permettant de générer un signal de correction k'±2 sur N bits, lesdits moyens d'estimation et lesdits moyens de correction comprenant des moyens de mise en oeuvre des équations suivantes : {rn+1 = 0 1/:, k,/, le+2 - (l' G d ) (h G le) ' n+1 n n - n n 15 chaque module d'initialisation comprenant des moyens de calcul, permettant de générer un signal de signe de somme partielle e' sur N bits, et un signal d'hypothèse h' sur N bits, lesdits moyens de calcul comprenant des moyens de mise en oeuvre des équations suivantes : fein = e yi = xn_i+1 x,2 ey1e Yi-2 20 avec : une valeur du bit de rang n-i+1 du nombre binaire d'entrée X, avec 1 n-i+1 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; Xn-i+2 une valeur du bit de rang n-i+2 du nombre binaire d'entrée X, avec 25 1 n-i+2 N, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; y, : une valeur du bit de rang i du nombre binaire d'entrée Y, avec 1 i M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication ; 3064771 20 yi2: une valeur du bit de rang i-2 du nombre binaire d'entrée Y, avec 1 i-2 M, et pris en compte lors de ladite itération d'indice i de ladite étape de multiplication, et initialisé ainsi : yi-2= 0 pour i=l et i=2 ; n une valeur du bit de rang n dudit signal de somme partielle l', obtenue lors 5 d'une itération précédente d'indice i-1 si j> 1, ou une valeur d'initialisation déterminée lin du bit de rang n dudit signal de somme partielle si i = 1; h'n : une valeur du bit de rang n dudit signal d'hypothèse h', calculée pour l'itération i; une valeur du bit de rang n dudit signal de signe e' de la somme partielle, 10 calculée pour l'itération i; : une valeur du bit de rang n dudit signal de correction k', obtenue lors d'une itération précédente d'indice i-2 si i > 2, ou une valeur d'initialisation prédéterminée du bit de rang n dudit signal de correction ki si i = 1 ou si i = 2; rin : une valeur du bit de rang n dudit signal de somme partielle 11+1, avec 15 1 n N, obtenue lors de ladite itération d'indice i; ki+2n+ 1 : une valeur du bit de rang n+1 dudit signal de correction ki+2, avec 1 n+1 N, obtenue lors de ladite itération d'indice i. 3. Dispositif selon la revendication 2, caractérisé en ce que ledit module de multiplication comprend, pour chaque bit n: 20 une première porte logique XOR (OU exclusif) recevant ladite valeur len du bit de rang n et d'indice i et ladite valeur h'n du bit de rang n et d'indice i, et générant un premier signal intermédiaire ; une deuxième porte logique XOR recevant ledit premier signal intermédiaire et ladite valeur de somme partielle l'n du bit de rang n et d'indice i, et générant 25 la valeur rin dudit signal de somme partielle du bit de rang n et d'indice i+1 ; une troisième porte logique XOR recevant ladite valeur de somme partielle l'n du bit de rang n et d'indice i et ladite valeur de signe de somme partielle e'n du bit de rang n et d'indice i, et générant un second signal intermédiaire ; une porte logique AND recevant ledit premier signal intermédiaire et ledit 30 second signal intermédiaire, et générant ladite valeur k'±2n+1 dudit signal de correction du bit de rang n+1 pour l'itération d'indice i+2. 4. Dispositif selon la revendication 2, caractérisé en ce que ledit module d'initialisation comprend, pour chaque bit n de rang i : 3064771 21 une première porte logique XOR recevant ladite valeur x1_,±1 du bit de rang n-i+1 d'un nombre binaire d'entrée X et ladite valeur x'_,±2 du bit de rang n-i+2 dudit nombre binaire d'entrée X, et générant un premier signal intermédiaire ; 5 une deuxième porte logique XOR recevant ladite valeur y, du bit de rang i d'un nombre binaire d'entrée Y et ladite valeur 37,-2 du bit de rang i-2 dudit nombre binaire d'entrée Y, et générant un deuxième signal intermédiaire ; une troisième porte logique XOR recevant ledit premier signal intermédiaire et ledit deuxième signal intermédiaire et générant ladite valeur h`r, du bit de 10 rang n dudit signal d'hypothèse pour l'itération d'indice j; une porte logique XNOR recevant ladite valeur x._,+1 du bit de rang n-i+1 d'un nombre binaire d'entrée X et ladite valeur y, du bit de rang i d'un nombre binaire d'entrée Y et générant ladite valeur e'r, du bit de rang n dudit signal de signe de somme partielle pour l'itération d'indice i. 15 5. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé selon la revendication 1, lorsque ledit programme est exécuté sur un ordinateur. 20 25 30