Multiplicateur de Booth expliqué (avec exemples)
Découvrez le recodage Booth radix-2 et radix-4, suivez -3 × 5 étape par étape et évitez les erreurs de largeur signée dans un multiplicateur matériel itératif.
En bref : le recodage Booth réécrit les suites de bits
1du multiplicateur sous forme de chiffres signés. Booth radix-2 examine la paire à chaque itération :01ajoute le multiplicande,10le soustrait, et00ou11ne fait rien avant un décalage arithmétique à droite. Une implémentation sûre pour une largeur étend le signe du multiplicande et utilise un accumulateur de bits, évitant l’échec particulier de la valeur la plus négative. Le Booth modifié radix-4 réduit environ de moitié le nombre de produits partiels en choisissant parmi .
Une multiplication binaire peut se construire avec des décalages et des additions. Le défi n’est pas que les opérandes en complément à deux soient impossibles à multiplier sans Booth — elles ne le sont pas —, mais que la gestion du signe et la génération des produits partiels doivent être conçues correctement.
La méthode de Booth fournit un recodage signé uniforme et compresse les suites de bits 1. Elle sert dans deux architectures différentes :
- un multiplicateur itératif, qui réutilise un additionneur sur plusieurs cycles ;
- un multiplicateur parallèle, qui génère les produits partiels recodés et les réduit avec un arbre d’additionneurs/compresseurs.
Ces architectures partagent l’idée du recodage, mais ont des latences, surfaces et timings différents.
L’identité d’une suite de uns
Considérons une suite de uns binaires allant du bit au bit , avec :
Par exemple :
Une multiplication classique décalage-addition non signée additionnerait quatre copies décalées du multiplicande pour 1111. Le recodage Booth représente cette suite par une soustraction à sa frontière basse et une addition à la position située au-dessus de sa frontière haute.
Cela ne garantit pas moins d’opérations non nulles pour chaque motif binaire. Une longue suite est avantageuse ; des uns isolés ou alternés peuvent n’offrir aucune réduction et augmenter le nombre de décisions addition/soustraction. Un multiplicateur itératif radix-2 à latence fixe réalise toujours itérations : le recodage modifie l’action arithmétique de chaque itération, pas automatiquement le nombre de cycles.
Recodage Booth radix-2
Ajoutez un zéro implicite sous le multiplicateur :
À l’itération , examinez le bit de poids faible actuel et le bit précédent mémorisé :
| Action sur l’accumulateur | ||
|---|---|---|
| 0 | 0 | aucun changement |
| 0 | 1 | ajouter |
| 1 | 0 | soustraire |
| 1 | 1 | aucun changement |
Puis effectuez un décalage arithmétique à droite de l’ensemble accumulateur, multiplicateur et bit mémorisé.
La paire détecte les frontières :
10marque le début bas d’une suite de uns : soustrayez ;01marque la fin haute après le parcours de la suite : ajoutez ;- des bits adjacents égaux sont à l’intérieur d’une suite constante : aucune action arithmétique n’est nécessaire.
L’ordre des bits dans la table compte. Certains textes impriment ; les étiquettes de lignes sont alors inversées. Indiquez toujours la convention.
Datapath itératif sûr en largeur
Supposons que les deux opérandes soient des valeurs signées en complément à deux sur bits :
- : multiplicande ;
- : multiplicateur.
Utilisez :
- : étendu en signe à bits ;
- : accumulateur de bits, initialement nul ;
- : registre multiplicateur de bits ;
- : bit mémorisé, initialement nul ;
- un compteur d’itérations de 0 à .
Pour chacune des itérations :
- examinez ;
- si
01, définissez ; - si
10, définissez ; - si
00ou11, laissez inchangé ; - décalez arithmétiquement la concaténation vers la droite.
Après itérations, éliminez le bit d’extension de signe redondant en haut de . Les bits restants de concaténés avec forment le produit signé sur bits.
Pourquoi le bit supplémentaire de l’accumulateur est important
Pour un nombre en complément à deux sur bits, la plage représentable est :
La magnitude positive de ne tient pas sur bits. Une conception qui précalcule -M sur seulement bits peut donc échouer lorsque est la valeur la plus négative. Étendre le signe de et utiliser un accumulateur de bits rend et représentables pendant l’algorithme.
Exemple détaillé :
Utilisez des opérandes de 4 bits :
Étendez le signe du multiplicande à cinq bits :
Initialisez :
La table indique la paire et l’action arithmétique, puis l’état après le décalage arithmétique à droite de l’ensemble :
| Itération | Paire | Action avant décalage | après décalage | après décalage | |
|---|---|---|---|---|---|
| initiale | — | — | 00000 | 0101 | 0 |
| 1 | 10 | 00001 | 1010 | 1 | |
| 2 | 01 | 11111 | 0101 | 0 | |
| 3 | 10 | 00001 | 0010 | 1 | |
| 4 | 01 | 11111 | 0001 | 0 |
Après quatre itérations, éliminez le bit de signe haut redondant de :
Comme valeur en complément à deux sur 8 bits :
ce qui correspond à .
Suivre un décalage combiné
Après la première soustraction :
Le décalage arithmétique à droite recopie le bit de signe de l’accumulateur dans la nouvelle position haute et déplace chaque autre bit d’une position :
Le décalage doit agir sur tout le registre concaténé. Décaler et séparément ferait perdre le transfert de bit à leur frontière.
Blocs matériels
Un multiplicateur Booth itératif réutilisable contient :
- un registre ou chemin d’entrée de multiplicande sur bits ;
- un accumulateur de bits ;
- un registre multiplicateur de bits et ;
- un additionneur/soustracteur de bits ;
- une commande de décodage de paire pour
add,subtractouhold; - un décaleur arithmétique combiné ;
- un compteur d’itérations et une commande
busy/done.
L’additionneur est réutilisé à chaque itération, ce qui économise de la surface par rapport à un multiplicateur entièrement parallèle mais coûte de la latence. Une itération peut durer un cycle ou plusieurs micro-étapes selon le contrôleur et le datapath.
Le composant UAL peut fournir l’addition/soustraction dans un circuit pédagogique, mais vérifiez sa largeur et son comportement de dépassement signé. Un registre à décalage illustre le mouvement sériel ; le datapath Booth exige un registre combiné plus large dont le bit haut est rempli par le signe.
Booth modifié radix-4
Booth modifié radix-4 examine des fenêtres de 3 bits qui se chevauchent et recode deux bits du multiplicateur par chiffre. Ajoutez un zéro en bas et étendez le signe en haut comme nécessaire.
Pour une fenêtre :
| Fenêtre | Multiple recodé |
|---|---|
000 | |
001 | |
010 | |
011 | |
100 | |
101 | |
110 | |
111 |
Les multiples disponibles sont :
est un décalage à gauche, donc ces produits partiels sont relativement économiques à produire. Pour un multiplicateur de bits, radix-4 produit environ chiffres recodés au lieu de chiffres radix-2.
Cette réduction peut diviser par deux les itérations d’une conception radix-4 itérative et réduire le nombre de lignes de produits partiels d’une conception parallèle. Elle ne rend pas automatiquement tout le multiplicateur deux fois plus rapide : recodage, correction du signe, génération et réduction des produits partiels, routage, addition finale et pipeline contribuent tous au timing.
Réduction parallèle : Wallace, Dadda et additionneurs finaux
Un multiplicateur à haut débit peut générer les produits partiels en parallèle, réduire leurs colonnes avec des compresseurs à retenue conservée et terminer par un additionneur à propagation de retenue.
Les arbres de Wallace et Dadda sont deux calendriers classiques de réduction. Le recodage Booth modifié peut les précéder pour réduire le nombre de lignes. L’additionneur final peut être à anticipation de retenue, à préfixe parallèle, à sélection de retenue ou d’une autre structure choisie pour la technologie cible.
« Combinatoire » ne signifie pas forcément « un cycle processeur ». Un multiplicateur large peut être pipeliné sur plusieurs étages pour atteindre une période d’horloge donnée, et certains processeurs utilisent des unités itératives pour économiser surface ou énergie. L’architecture est un choix d’implémentation.
Booth contre les autres structures de multiplication
| Approche | Opération signée | Produits partiels ou cycles | Compromis habituel |
|---|---|---|---|
| Décalage/addition itératif élémentaire | possible avec gestion correcte du signe | généralement itérations | petit datapath, commande simple |
| Booth radix-2 itératif | recodage complément à deux natif | itérations | algorithme signé uniforme ; addition/soustraction/saut |
| Booth radix-4 itératif | recodage complément à deux natif | environ itérations | décodage et sélection de multiples plus riches |
| Tableau/arbre parallèle de produits partiels | variantes signées ou non signées | lignes traitées simultanément | plus de matériel ; pipeline possible |
| Booth radix-4 et arbre de réduction | recodage signé natif | environ deux fois moins de lignes initiales | option courante de hautes performances |
Il n’y a pas de vainqueur universel. Largeur des opérandes, cellules ou ressources FPGA, débit, latence, surface, puissance et effort de vérification déterminent la bonne structure.
Construisez-le dans DigiSim
Pour une implémentation pédagogique 4 bits :
- Créez un accumulateur 5 bits avec des éléments de stockage visibles.
- Étendez le signe du multiplicande 4 bits à 5 bits.
- Utilisez un chemin addition/soustraction 5 bits.
- Stockez le multiplicateur 4 bits et un bit séparé.
- Décodez
(Q0, Q−1)en addition, soustraction et maintien. - Implémentez le décalage arithmétique sur tout l’état
{A,Q,Q−1}. - Comptez exactement quatre itérations.
- Exposez les signaux
busy,doneet le produit final 8 bits.
Parcourez la table de et comparez chaque état après décalage. Une erreur dès la première itération signale généralement une paire inversée ou une polarité de soustraction incorrecte ; une erreur après un décalage d’accumulateur négatif signale souvent un décalage logique au lieu d’arithmétique.
Liste de vérification
Pour vérifier exhaustivement un multiplicateur de petite largeur , testez toutes les paires :
contre un produit signé de référence représenté sur bits.
Incluez au minimum :
- et ;
- positif × positif ;
- positif × négatif ;
- négatif × positif ;
- négatif × négatif ;
- les valeurs positives maximales ;
- la valeur la plus négative ;
- ;
- les motifs de multiplicateur
0000,1111,0101et1010; - une réinitialisation ou un redémarrage pendant
busy.
Affirmez aussi que :
- exactement itérations radix-2 ont lieu ;
doneest émis une fois par opération acceptée ;- les entrées sont verrouillées ou doivent rester stables selon le contrat ;
- le résultat n’est pas consommé avant sa validité ;
- le décalage combiné conserve le signe de l’accumulateur.
Une simulation fonctionnelle idéale prouve le séquencement arithmétique, pas la fréquence maximale de l’électronique. Utilisez une analyse temporelle statique après mappage vers la cible.
Pour continuer
Relisez l’arithmétique en complément à deux pour l’extension de signe et la plage, puis comparez l’addition à propagation de retenue aux structures à anticipation de retenue.
Andrew D. Booth a présenté cette méthode signée uniforme dans son article de 1951, « A Signed Binary Multiplication Technique ». Le recodage reste pertinent, mais une implémentation professionnelle exige toujours des largeurs explicites, un contrat de latence défini, des tests signés exhaustifs et une analyse temporelle propre à la cible.

