FR3064771A1 - Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants - Google Patents

Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants Download PDF

Info

Publication number
FR3064771A1
FR3064771A1 FR1770335A FR1770335A FR3064771A1 FR 3064771 A1 FR3064771 A1 FR 3064771A1 FR 1770335 A FR1770335 A FR 1770335A FR 1770335 A FR1770335 A FR 1770335A FR 3064771 A1 FR3064771 A1 FR 3064771A1
Authority
FR
France
Prior art keywords
bit
rank
value
signal
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1770335A
Other languages
English (en)
Other versions
FR3064771B1 (fr
Inventor
Daniel Torno
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to FR1770335A priority Critical patent/FR3064771B1/fr
Publication of FR3064771A1 publication Critical patent/FR3064771A1/fr
Application granted granted Critical
Publication of FR3064771B1 publication Critical patent/FR3064771B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • G06F7/5312Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products using carry save adders

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

L'invention concerne un 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, Le procédé 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 1i+1 sur N bits et un signal de correction ki+2 sur N bits. Le principe général de l'invention consiste à combiner un signal de signe de somme partielle ein et un signal d'hypothèse hin à un résultat représenté dans une représentation binaire redondante de type BSCB (signaux Iin/ 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/ ki+2n+1). 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 à multiplier. De cette façon, un tel procédé permet de multiplier deux nombres binaires 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. De plus, la propagation de correction de ce procédé facilite la génération d'un résultat tronqué de multiplication. 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 en utilisant des circuits dits FPGA (« Field Programmable Gate Array » en anglais).

Description

(57) L'invention concerne un 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, Le procédé 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 1i+1 sur N bits et un signal de correction ki+2 sur N bits.
Le principe général de l'invention consiste à combiner un signal de signe de somme partielle ein et un signal d'hypothèse h in à un résultat représenté dans une représentation binaire redondante de type BSCB (signaux l'n/ k'n) (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 ll+1n/ kl+2n+1). 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 à multiplier.
De cette façon, un tel procédé permet de multiplier deux nombres binaires 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. De plus, la propagation de correction de ce procédé facilite la génération d'un résultat tronqué de multiplication.
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 en utilisant des circuits dits FPGA (« Field Programmable Gâte Array » en anglais).
Figure FR3064771A1_D0001
Figure FR3064771A1_D0002
i
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 Spécifie Integrated Circuit » en anglais), les blocs de base des circuits intégrés ou VLSI (pour « Very Large Scale Intégration» en anglais), les circuits de type FPGA (pour « Field programmable Gâte 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 œuvre 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.
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 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 œuvre une pluralité d’additionneurs identiques pour le calcul.
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 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 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 littérature scientifique, notamment dans l’article « Generalized Signed-Digit Number Systems: A Unifying Framework For Redundant Number Représentation » 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 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 BSCB.
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 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.
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 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 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 (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 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 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 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 œuvre 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 respectivement de N et de M bits pour obtenir un produit P de (M+N) bits, à savoir :
X = ΧΝ·2' v = V ·2Μ Α J Μ avec :
P =P
M+N .2* +
2N-2 Xn-i·2 +-· ••+Xn2n+..... + x2·
V -2M 2+... J M-l ...+ V .2+... ·/ n -+y:
2M+N-2 ... +D ,2N + .....+
M+N-l
P?1
Pl (1) .2°
Le procédé 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 11+1 sur N bits et un signal de correction k1+2 sur N bits, selon les équations suivantes :
Figure FR3064771A1_D0003
avec :
Xn-i+i : 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 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 < 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 ;
l'n : une valeur du bit de rang n dudit signal de somme partielle l1, obtenue lors d’une itération précédente d’indice i-1 si i > 1, ou une valeur d’initialisation déterminée Pn du bit de rang n dudit signal de somme partielle l1 si i = 1 ;
h',, : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
e^ : une valeur du bit de rang n dudit signal de signe e1 de la somme partielle, calculée pour l’itération i ;
k'n : une valeur du bit de rang n dudit signal de correction k1, 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 k1 si i = 1 ou si i = 2;
l1+1n : 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 ;
k1+2n+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.
Le principe général de l’invention consiste donc à combiner un signal de signe de somme partielle e‘n et un signal d’hypothèse à un résultat représenté dans une représentation binaire redondante de type BSCB (signaux lV kn) (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 l1+1n/ k1+2n+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 à 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 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.
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 < M+N, à un moindre coût en utilisant la propagation accélérée des signaux de correction, entre l’itération d’indice i et l’itération d’indice i+2 et du rang n vers le rang n+1.
L’homme du métier procède de la même manière que pour réaliser un multiplieur tronqué à partir d’un multiplieur de type dot-matrix standard, mais ledit procédé a un avantage en terme de moindre complexité résultante du fait de la propagation accélérée des signaux de correction.
En effet, si l’on prend un signal de correction pris en compte lors de la première itération de multiplication pour le bit de rang n et que l’on suit sa propagation, ce signal de correction est utilisé dans le calcul des signaux de correction k3n+1 , k5n+2 , k7n+3 .... kMM+N.Q, M étant la dernière itération d’étape de multiplication et Q le nombre de bits de précision requise pour le résultat. Il est clair que tous les signaux de somme partielle initiaux fn-i , Pn-2 , 1^-3 .... l\ et de correction k1^ , k1^ , Ρη.3 .... k\ (c'est-à-dire de moindre rang par rapport à Pnet^ pris en compte pour le bit de rang n) ne sont pas utilisés dans le calcul des Q bits de résultat, et que le multiplieur peut s’affranchir de tous les calculs effectués à partir de ces signaux ou des signaux de somme partielle et des signaux de correction qui en découlent. On obtient ainsi directement un résultat tronqué sur Q bits.
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 X et Y, de respectivement N et M bits, pour obtenir un produit P de (M+N) bits, à savoir :
X = ΧΝ·2' v = V ·2Μ X J M _L ON2 _L + Xn-i·2 +· + V .2M 2 +
J M-l + X,2” +.....+ X2·21 + Χΐ· . + y .2 + + y21 + y 2° avec :
P =P
M+N .2
M+N-l .2* .2 p?1
P, .2°
Un tel dispositif 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 multiplication comprenant des moyens d’estimation, permettant de générer un signal de somme partielle 11+1 sur N bits, et des moyens de correction, permettant de générer un signal de correction k1+2 sur N bits, lesdits moyens d’estimation et lesdits moyens de correction comprenant des moyens de mise en œuvre des équations suivantes :
'i;+1=i;©h;©k;
\:;=(ι;φ<).(ιι;φι<)· chaque module d’initialisation comprenant des moyens de calcul, permettant de générer un signal de signe de somme partielle e1 sur N bits, et un signal d’hypothèse h1 sur N bits, lesdits moyens de calcul comprenant des moyens de mise en œuvre des équations suivantes :
< = Xn_i+1 ® Yi
X = Xn_i+1 Φ Xn_i+2 Φ Yi Φ Yi_2 avec :
Xn-i+i : 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 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 < 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 ;
I1,, : une valeur du bit de rang n dudit signal de somme partielle l1, obtenue lors d’une itération précédente d’indice i-1 si i > 1, ou une valeur d’initialisation déterminée Pn du bit de rang n dudit signal de somme partielle l1 si i = 1 ;
h1,, : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
e^ : une valeur du bit de rang n dudit signal de signe e1 de la somme partielle, calculée pour l’itération i ;
k1,, : une valeur du bit de rang n dudit signal de correction k1, 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 k1 si i = 1 ou si i = 2;
l1+1n : 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 ;
k1+2n+i : 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.
De façon avantageuse, le module de multiplication comprend pour chaque bit n :
une première porte logique XOR (OU exclusif) recevant ladite valeur kn du bit de rang n et d’indice i et ladite valeur hn 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 fn du bit de rang n et d’indice i, et générant la valeur l1+1n 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 fn du bit de rang n et d’indice i et ladite valeur de signe de somme partielle e^ 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 second signal intermédiaire, et générant ladite valeur k1+2n+i 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é.
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 xn-i+i du bit de rang n-i+1 d’un nombre binaire d’entrée X et ladite valeur xn-i+2 du bit de rang n-i+2 dudit nombre binaire d’entrée X, et générant un premier signal intermédiaire ;
une deuxième porte logique XOR recevant ladite valeur yi 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 et ledit deuxième signal intermédiaire et générant ladite valeur hn du bit de rang n dudit signal d’hypothèse pour l’itération d’indice i ;
une porte logique XNOR recevant ladite valeur xn-i+i du bit de rang n-i+1 d’un nombre binaire d’entrée X et ladite valeur yi du bit de rang i d’un nombre binaire d’entrée Y et générant ladite valeur e^ 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 X et Y, de respectivement N et M bits, pour obtenir un produit P de Q bits, avec Q < (M+N).
Ce mode de réalisation utilise la propagation accélérée des signaux de corrections, entre l’itération d’indice i et l’itération d’indice i+2 et du rang n vers le rang n+1, ce qui permet la réalisation directe d’un multiplieur fournissant un résultat tronqué à un moindre coût.
En effet, si l’on prend un signal de correction pris en compte lors de la première itération de multiplication pour le bit de rang n et que l’on suit sa propagation, ce signal de correction est utilisé dans le calcul des signaux de correction k3n+i, k5n+2, k7n+3 .... kMM+N.Q, M étant la dernière itération d’étape de multiplication et Q le nombre de bits de précision requise pour le résultat. Il est clair que tous les signaux de somme partielle initiaux Pn-i, Pn-2,1^-3 .... l\ et de correction k^-i, k'n-2, k^n-3 .... k\ (c'est-à-dire de moindre rang par rapport à Pnet^n pris en compte pour le bit de rang n) ne sont pas utilisés dans le calcul des Q bits de résultat, et que le multiplieur peut s’affranchir de tous les calculs effectués à partir de ces signaux ou des signaux de somme partielle et des signaux de correction qui en découlent. On obtient ainsi directement un résultat tronqué sur Q bits en faisant l’économie de tous les modules de multiplication calculant ces signaux de somme partielle et ces signaux de correction.
Dans un autre mode de réalisation, l’invention concerne un 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, comprenant des instructions de code de programme pour la mise en œuvre du procédé de décodage tel que décrit précédemment.
D’autres caractéristiques et avantages de modes de réalisation de l’invention apparaîtront à la lecture de la description suivante, donnée à titre d’exemple indicatif et non limitatif (tous les modes de réalisation de l’invention ne sont pas limités aux caractéristiques et avantages des modes de réalisation décrits ci-après), et des dessins annexés, dans lesquels :
ίο la figure 1 illustre une architecture logique d’un module de multiplication utilisant la représentation binaire redondante BSCB selon un mode de réalisation particulier du procédé de l’invention ;
la figure 2 illustre une architecture logique d’un module d’initialisation calculant les signaux d’hypothèse et de signe de somme partielle selon un mode de réalisation particulier du procédé de l’invention ;
la figure 3 illustre l’interconnexion logique des modules de multiplication tels qu’illustrés à la figure 1 sous forme BSCB selon un mode de réalisation particulier de l’invention;
la figure 4 illustre un exemple d’un dispositif (partie droite/haute) de multiplication de deux nombres de 16 bits délivrant un résultat dans la représentation binaire redondante BSCB selon un mode de réalisation particulier du procédé de l’invention, comprenant des modules de multiplication tels qu’illustrés à la figure 1 et connectés tel qu’illustré à la figure 3 ;
la figure 5 illustre un exemple d’un dispositif (partie gauche/haute) de multiplication de deux nombres de 16 bits délivrant un résultat dans la représentation binaire redondante BSCB selon un mode de réalisation particulier du procédé de l’invention, comprenant des modules de multiplication tels qu’illustrés à la figure 1 et connectés tel qu’illustré à la figure 3 ;
la figure 6 illustre un exemple d’un dispositif (partie droite/basse) de multiplication de deux nombres de 16 bits délivrant un résultat dans la représentation binaire redondante BSCB selon un mode de réalisation particulier du procédé de l’invention, comprenant des modules de multiplication tels qu’illustrés à la figure 1 et connectés tel qu’illustré à la figure 3 ;
la figure 7 illustre un exemple d’un dispositif (partie gauche/basse) de multiplication de deux nombres de 16 bits délivrant un résultat dans la représentation binaire redondante BSCB selon un mode de réalisation particulier du procédé de l’invention, comprenant des modules de multiplication tels qu’illustrés à la figure 1 et connectés tel qu’illustré à la figure 3 ;
la figure 8 représente un schéma fonctionnel d’un additionneur de la forme « Ripple-Carry » tel que décrit dans le brevet EP 2013705B1 (TORNO) transformant le résultat sous forme BSCB obtenu du dispositif de multiplication tels qu’illustrés par les figures 4 à 7 en forme binaire standard ; la figure 9 illustre un exemple d’un dispositif de multiplication tronquée de deux nombres de 5 bits délivrant un résultat sous forme BSCB selon un mode de réalisation particulier du procédé de l’invention, comprenant des modules de multiplication tels qu’illustrés à la figure 1 et connectés tel qu’illustré à la figure 3.
Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique.
On présente maintenant, en relation avec la figure 1, une architecture logique d’un module de multiplication, selon un mode de réalisation particulier de l’invention, mettant en œuvre l’étape de multiplication du procédé selon 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 de multiplication 100 prend en entrée : les signaux 1^ et k'n, issus respectivement d’une itération de rang n et d’indice i-1 et d’une itération de rang n-1 et d’indice i-2, le signal e^ de signe de somme partielle et le signal d’hypothèse. A partir de ces signaux d’entrée, le mécanisme de calcul mis en place par le module 100 génère les valeurs binaires l1+1n et k1+2n+i correspondant respectivement à la valeur du bit de rang n et d’indice i+1 du signal de somme partielle et à la valeur du bit de rang n+1 et d’indice i+2 du signal de correction.
Dans ce mode de réalisation particulier, le module d’accumulation 100 est constitué d’une première porte logique de type « OU Exclusif », également nommée porte « XOR », apte à recevoir en entrée une valeur kn, dite valeur du bit de rang n et d’indice i du signal de correction, obtenue lors d’une itération précédente d’indice i-2, et une valeur h',,, dite valeur du bit de rang n et d’indice i d’un signal d’hypothèse, générée par le module d’initialisation desdits rang et indice. Cette première porte « XOR » génère en sortie un signal numérique intermédiaire 101.
Une deuxième porte « XOR » reçoit à son tour le signal numérique intermédiaire 101 et une valeur 1^, dite valeur du bit de rang n d’un signal de somme partielle, obtenue lors d’une itération précédente d’indice i-1, et génère en sortie une valeur l1+1n dite valeur du bit de rang n dudit signal de somme partielle de rang n et d’indice i+1.
Une troisième porte « XOR », apte à recevoir en entrée une valeur 1^, dite valeur du bit de rang n d’un signal de somme partielle, obtenue lors d’une itération précédente d’indice i-1, et une valeur e’n, dite valeur du bit de rang n et d’indice i d’un signal de signe de somme partielle, générée par le module d’initialisation desdits rang et indice. Cette troisième porte « XOR » génère en sortie un signal numérique intermédiaire 102.
Une porte logique de type « ET », également appelée porte « AND », reçoit les deux signaux intermédiaires 101 et 102, et délivre en sortie une valeur k1+2n+i correspondant à la valeur du bit de rang n+1 et d’indice i+2 du signal de correction.
De cette façon, la valeur k1+2n+1 du bit de rang n+1 du signal de correction d’indice i+2 est élaborée à l’aide du signal ln de somme partielle de rang n et d’indice i, du signal k'n de correction de rang n et d’indice i, du signal e’n de signe de somme partielle de rang n et d’indice i et du signal h'n d’hypothèse de rang n et d’indice i, et la valeur l1+1n du bit de rang n du signal de somme partielle d’indice i+1 est élaborée à l’aide du signal Pn de somme partielle de rang n et d’indice i, du signal kn de correction de rang n et d’indice i, et du signal h’n d’hypothèse de rang n et d’indice i.
Par conséquent, les signaux de somme partielle 11+1 sur N bits et de correction k1+2 sur N bits sont déterminés à partir des équations génériques (1) suivantes, avec 1 <n<Netl<i<M:
j;+1 = i; ® K © k avec :
ln : une valeur du bit de rang n dudit signal de somme partielle l1, obtenue lors d’une itération précédente d’indice i-1 si i > 1, ou une valeur d’initialisation déterminée Ρη du bit de rang n dudit signal de somme partielle l1 si i = 1 ;
h’n : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
e’n : une valeur du bit de rang n dudit signal de signe e1 de la somme partielle, calculée pour l’itération i ;
k'n : une valeur du bit de rang n dudit signal de correction k1, 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 k1 si i = 1 ou si i = 2;
l1+1n : une valeur du bit de rang n dudit signal de somme partielle 11+1, avec < n < N, obtenue lors de ladite itération d’indice i ; k1+2n+1 : une valeur du bit de rang n+1 dudit signal de correction k1+2, avec
I < n+1 < N, obtenue lors de ladite itération d’indice i.
II 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 œuvre 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 hn et e‘nselon un premier mode de 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 xni+i et Xn-i+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 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 h',, et e^ 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 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 y^, respectivement valeur du bit de rang i et valeur du bit de rang i-2 du nombre binaire d’entrée Y. Cette 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 Xn-i+2 et Xn-i+i, 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.
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 hn 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 xn-i+i, respectivement valeur du 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‘n de rang n et d’indice i.
De cette façon, la valeur Kn du bit de rang n du signal d’hypothèse d’indice i est élaborée à l’aide du signal yi valeur du bit de rang i du nombre binaire d’entrée Y, du signal y i-2 valeur du bit de rang i-2 du nombre binaire d’entrée Y, du signal xn-i+i valeur du bit de rang n-i+1 du nombre binaire d’entrée X, du signal xn-i+2 valeur du bit de rang n-i+2 du nombre binaire d’entrée X, et la valeur e‘n du bit de rang n du signal de signe de somme partielle d’indice i est élaborée à l’aide du signal yi valeur du bit de rang i du nombre binaire d’entrée Y et du signal xn-i+i 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^et d’hypothèse Kn sont déterminés à partir des équations génériques (2) suivantes, avec 1 < n < N et 1 <i <M :
&n = Xn_i+1 ® Yi (2)
K = Xn-i+l ® Xn—i + 2 ® Yi ® Yi-2 avec :
Xn-i+i : une valeur du bit de rang n-i+1 du nombre binaire d’entrée X, avec < 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 < 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 < 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 ;
Kn : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
e‘n : une valeur du bit de rang n dudit signal de signe e1 de la somme partielle, calculée pour l’itération i.
Il est clair que d’autres architectures logiques (différentes de celle de la figure 2) peuvent aisément être envisagées par l’homme du métier pour la mise en œuvre des équations génériques (2), tout en restant dans le cadre de la présente invention.
On présente maintenant, en relation avec la figure 3, l’interconnexion des modules de multiplication illustrés à la figure 1 selon l’invention.
Pour ce faire, quinze modules de multiplication 301 à 315, tels que décrits cidessus en relation avec la figure 1, sont assemblés de façon à constituer un dispositif 300. Ce dispositif 300 représente une partie d’un multiplieur, ici il réalise les étapes de multiplication pour les bits de rang n à n+2 et les indices i à i+4.
Plus particulièrement, ce dispositif 300 illustré sur cette figure 3 montre la propagation des signaux de correction. Le signal k',,, valeur du bit de rang n du signal de correction (trait renforcé de la figure 3), obtenue lors d’une itération précédente d’indice i-2 est utilisé en entrée par le module de multiplication 303 dans l’étape de multiplication d’indice i pour générer le signal k1+2n+i, valeur du bit de rang n+1 du signal de correction pour l’étape de multiplication d’indice i+2. Ce dit signal k1+2n+i est utilisé en entrée par le module de multiplication 308 dans l’étape de multiplication d’indice i+2 pour générer le signal k1+4n+2, valeur du bit de rang n+2 du signal de correction pour l’étape de multiplication d’indice i+4. Ce dit signal k1+4n+2 est utilisé en entrée par le module de multiplication 313 dans l’étape de multiplication d’indice i+4 pour générer le signal k1+6n+3, valeur du bit de rang n+3 du signal de correction pour l’étape de multiplication d’indice i+6.
Il convient de noter que cette propagation à travers les modules de multiplication 303, 308 et 313 ne fait pas intervenir les étapes intermédiaires de multiplication d’indice i+1 et i+3. Similairement, la propagation de correction issue du signal k1+1n+i à travers les modules de multiplication 305 et 310, ne fait pas intervenir les étapes intermédiaires de multiplication d’indices i et i+2.
On illustre maintenant, en relation avec les figure 4, 5, 6, 7, 8, un exemple d’un multiplieur permettant de multiplier deux nombres binaires exprimés sur 16 bits.
Ce multiplieur n’est pas représenté dans son intégralité mais seulement par ses parties singulières et sans les modules d’initialisation calculant les signaux d’hypothèse h et les signaux de somme partielle e qui sont générés par des blocs logiques conformes à celui de la figure 2. Plus précisément la figure 4 représente la partie haute et droite du multiplieur complet, c'est-à-dire celle qui prend en entrée les bits de plus faible poids des deux opérandes. La figure 5 représente la partie haute et gauche du multiplieur complet, c'est-à-dire celle qui prend en entrée les bits de plus faible poids de l’opérande Y et de plus fort poids de l’opérande X. La figure 6 représente la partie basse et droite du multiplieur complet, c'est-à-dire celle qui prend en entrée les bits de plus fort poids de l’opérande Y et de plus faible poids de l’opérande X. La figure 7 représente la partie basse et gauche du multiplieur complet, c'est-à-dire celle qui prend en entrée les bits de plus fort poids de l’opérande Y et de plus fort poids de l’opérande X. L’homme du métier saura facilement déduire des figures 4 à 8 les parties non représentées entre les différentes figures par simple copie des structures représentées sur ces figures.
Dans ce mode de réalisation particulier, il convient de noter que, des dispositifs d’initialisation 401 et 501 représentés respectivement sur les figures 4 et 5 avec des dispositifs similaires pour les parties non représentées entre les figures 4 et 5, permettent de calculer les valeurs d’entrée de la matrice de modules de multiplication appelés MM sur les figures 4 à 7. Cette matrice est constituée de 17 lignes de 16 modules de multiplication MM représentés sur les figures 4 à 7. Sur les figures 6 et 7, des dispositifs 601 et 701 permettent de calculer les signaux de sortie u et r en représentation binaire redondante BSCB. Ces dispositifs 601 et 701 avec des dispositifs similaires pour les parties non représentées entre les figures 6 et 7 sont constitués d’une ligne de 16 modules de multiplication prenant en entrée des signaux d’hypothèse h et des signaux de somme partielle adaptés.
Finalement, un calcul final est effectué au moyen d’un additionneur. Le résultat intermédiaire U1.32 et ri.32 correspondant à la dernière itération (i=18) est présenté à l’entrée d’un additionneur 800 de type « Carry-Look-Ahead » ou de type « Ripple-Carry » sur 32 bits adapté pour prendre en entrée une forme en représentation binaire redondante BSCB tels que décrits dans le brevet EP 2013705B1 (TORNO). L’additionneur 800 permet ainsi de déterminer le résultat final sous forme binaire standard de la multiplication des deux nombres binaires X et Y.
L’homme du métier pourra facilement déduire des figures 4 à 8 d’autres architectures logiques répondant à des précisions différentes des opérandes dans la mise en œuvre des équations génériques (1) et (2).
On présente maintenant, en relation avec la figure 9, la description d’un multiplieur 5 bits par 5 bits fournissant un résultat tronqué et réalisé avec des modules de multiplication illustrés à la figure 1 selon l’invention.
Pour ce faire, vingt-cinq modules de multiplication 901 à 925, tels que décrits ci-dessus en relation avec la figure 1, sont assemblés de façon à constituer un dispositif 900. Pour la facilité de représentation, les signaux d’hypothèse et de signe de somme partielle e^ ne sont pas représentés sur la figure 9 mais ils sont calculés avec des modules d’initialisation illustrés à la figure 2 selon l’invention et fournis aux modules de multiplication correspondants.
Une multiplication tronquée est réalisée en retirant de ce dispositif 900 la partie de ce dispositif représentée en hachurée, nommée 990 et regroupant les modules de multiplication 904, 905, 909, 910, 915 et 920. Cette troncature est effectuée en suivant la propagation de la correction (trait renforcé de la figure 9) qui passe par les modules de multiplication 903, 914 et 925. On obtient ainsi un résultat sur 5 bits en faisant l’économie des six modules du groupe 990 qui ne participent pas à cette propagation de correction et donc au résultat tronqué.
L’homme du métier pourra facilement déduire de la figure 9 d’autres architectures logiques répondant à des besoins de précision différents du résultat. 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 en utilisant des circuits dits FPGA (« Field Programmable Gâte Array » en anglais).
On notera que l’invention ne se limite pas à une implantation purement matérielle mais qu’elle peut aussi être mise en œuvre sous la forme d’une séquence d’instructions d’un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l’invention est implantée partiellement ou totalement sous forme logicielle, la séquence d’instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une clé USB, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur.

Claims (5)

  1. REVENDICATIONS
    1. 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 11+1 sur N bits et un signal de correction kl+2 sur N bits, selon les équations suivantes :
    et :
    avec
    Xn-i+i : 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 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 ;
    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 : yj-2= 0 pour i=l et i=2 ;
    l'n : une valeur du bit de rang n dudit signal de somme partielle 1', obtenue lors 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 1‘ si i = 1 ;
    h‘n : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
    e'n : une valeur du bit de rang n dudit signal de signe e1 de la somme partielle, calculée pour l’itération i ;
    k'n : 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 k* si i = 1 ou si i = 2;
    l1+1n : une valeur du bit de rang n dudit signal de somme partielle l‘+1, avec
    1 < n < N, obtenue lors de ladite itération d’indice i ; k1+2n+i : 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.
  2. 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 multiplication comprenant des moyens d’estimation, permettant de générer un signal de somme partielle Î+1 sur N bits, et des moyens de correction, permettant de générer un signal de correction k1+2 sur N bits, lesdits moyens d’estimation et lesdits moyens de correction comprenant des moyens de mise en œuvre des équations suivantes :
    <
    chaque module d’initialisation comprenant des moyens de calcul, permettant de générer un signal de signe de somme partielle e1 sur N bits, et un signal d’hypothèse h1 sur N bits, lesdits moyens de calcul comprenant des moyens de mise en œuvre des équations suivantes :
    avec
    Xn-i+i : 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 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 ;
    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 : yj-2= 0 pour i=l et i=2 ;
    l‘n : une valeur du bit de rang n dudit signal de somme partielle l1, obtenue lors d’une itération précédente d’indice i-1 si i > 1, ou une valeur d’initialisation déterminée Pn du bit de rang n dudit signal de somme partielle 1' si i = 1 ;
    h'n : une valeur du bit de rang n dudit signal d’hypothèse h1, calculée pour l’itération i;
    e‘n : une valeur du bit de rang n dudit signal de signe e' de la somme partielle, calculée pour l’itération i ; ·* k‘n : une valeur du bit de rang n dudit signal de correction k1, 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 k1 si i = 1 ou si i = 2;
    l‘+1n : 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 ;
    k1+2n+i : 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.
  3. 3. Dispositif selon la revendication 2, caractérisé en ce que ledit module de multiplication comprend, pour chaque bit n :
    une première porte logique XOR (OU exclusif) recevant ladite valeur k‘n 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 la valeur ll+1n 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 second signal intermédiaire, et générant ladite valeur k1+2n+i dudit signal de correction du bit de rang n+1 pour l’itération d’indice i+2.
  4. 4. Dispositif selon la revendication 2, caractérisé en ce que ledit module d’initialisation comprend, pour chaque bit n de rang i :
    une première porte logique XOR recevant ladite valeur xn-i+i du bit de rang n-i+1 d’un nombre binaire d’entrée X et ladite valeur xn-i+2 du bit de rang n-i+2 dudit nombre binaire d’entrée X, et générant un premier signal 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 yj_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'n du bit de rang n dudit signal d’hypothèse pour l’itération d’indice i ;
    une porte logique XNOR recevant ladite valeur xn.i+i du bit de rang n-i+1 d’un nombre binaire d’entrée X et ladite valeur yj du bit de rang i d’un nombre binaire d’entrée Y et générant ladite valeur e‘n du bit de rang n dudit signal de signe de somme partielle pour l’itération d’indice i.
  5. 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.
    1/9
FR1770335A 2017-04-04 2017-04-04 Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants Active FR3064771B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1770335A FR3064771B1 (fr) 2017-04-04 2017-04-04 Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1770335A FR3064771B1 (fr) 2017-04-04 2017-04-04 Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants
FR1770335 2017-04-04

Publications (2)

Publication Number Publication Date
FR3064771A1 true FR3064771A1 (fr) 2018-10-05
FR3064771B1 FR3064771B1 (fr) 2021-03-05

Family

ID=60081080

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1770335A Active FR3064771B1 (fr) 2017-04-04 2017-04-04 Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants

Country Status (1)

Country Link
FR (1) FR3064771B1 (fr)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017451A1 (en) * 2006-11-20 2010-01-21 Daniel Torno Binary Number Multiplying Method and Circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017451A1 (en) * 2006-11-20 2010-01-21 Daniel Torno Binary Number Multiplying Method and Circuit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DANIEL TORNO ET AL: "Arithmetic operators based on the binary stored-carry-or-borrow representation", 2010 44TH ASILOMAR CONFERENCE ON SIGNALS, SYSTEMS AND COMPUTERS - 7-10 NOV. 2010 - PACIFIC GROVE, CA, USA, IEEE, PISCATAWAY, NJ, USA, 7 November 2010 (2010-11-07), pages 1148 - 1152, XP031860642, ISBN: 978-1-4244-9722-5, DOI: 10.1109/ACSSC.2010.5757584 *
DANIEL TORNO ET AL: "Array Multiplier based on Binary Stored Carry-or-Borrow representation", 1 May 2010 (2010-05-01), XP055444955, Retrieved from the Internet <URL:http://exorand.com/publications/Array%20Multiplier%20based%20on%20BSCB%20representation.pdf> [retrieved on 20180126] *

Also Published As

Publication number Publication date
FR3064771B1 (fr) 2021-03-05

Similar Documents

Publication Publication Date Title
EP0314559A1 (fr) Circuit de calcul utilisant une arithmétique résiduelle
EP0692762A1 (fr) Circuit logique de multiplication parallèle
FR2819073A1 (fr) Microarchitecture d&#39;unite arithmetique
WO2021073918A1 (fr) Circuits de calcul de produit interne de faible précision multimode pour moteur d&#39;inférence neuronale massivement parallèle
FR2853424A1 (fr) Architecture de multiplicateurs polynomial et naturel combines
FR3038997A1 (fr) Dispositif de traitement de donnees avec representation de valeurs par des intervalles de temps entre evenements
EP1368747A1 (fr) Procede et dispositif pour reduire le temps de calcul d&#39;un produit, d&#39;une multiplication et d&#39;une exponentiation modulaire selon la methode de montgomery
FR2849512A1 (fr) Multiplieur modulaire de montgomery et procede de multiplication correspondant
EP0437876B1 (fr) Multiplieur série programmable
CN101295237A (zh) 求商和余数的高速除法器
FR2689989A1 (fr) Calcul parallèle d&#39;un bit adhérent et de produits partiels dans une unité multiplicatrice à virgule flottante.
EP3803574A1 (fr) Circuit de génération de facteurs de rotation pour processeur ntt
Jin et al. VECTOR-MATRIX MULTIPLICATION IN TERNARY OPTICAL COMPUTER.
FR2648585A1 (fr) Procede et dispositif pour la multiplication rapide de codes a complement a 2 dans un systeme de traitement de signal numerique
FR3064771A1 (fr) Procede de multiplication, multiplieur et produit programme d’ordinateur correspondants
EP3200384B1 (fr) Procédé d&#39;execution de calcul cryptographique et application a la classification par machines a vecteurs de support
EP0785502A1 (fr) Procédé de production d&#39;un paramètre de correction d&#39;erreur associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
EP0175623A1 (fr) Dispositif de traitement en temps réel de signal numérique par convolution
FR3070814B1 (fr) Dispositif de reduction modulaire
EP0655685B1 (fr) Dispositif de calcul des bits de parité associés à une somme de deux nombres
FR2585150A1 (fr) Multiplieur pour la multiplication de deux nombres complexes
EP0329572B1 (fr) Multiplieur de nombres binaires à très grand nombre de bits
EP4024199A1 (fr) Processeur comprenant un opérateur de double multiplication et double addition activable par une instruction à trois références d opérandes
Bostan Algorithmes rapides pour les polynômes, séries formelles et matrices
WO2009121943A1 (fr) Procede d&#39;addition a operandes multiples, additionneur et produit programme d&#39;ordinateur correspondants

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20181005

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

CA Change of address

Effective date: 20210601

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8