Brevet FR2558612A1 — publié le 19850726

La présente invention concerne un dispositif de multiplication binaire. Plus particulièrement, l'invention concerne un appareil de traitement de données pouvant remplir une fonction de multiplica- tion binaire. Le brevet des Etats-Unis d'Amérique n 4.228.518 décrit un appareil de traitement de données comprenant une unité arithmétique et logique ALU et un registre d'opérande A connecté à une entrée de l'unité arith- métique et logique. Cette dernière peut exécuter diverses opérations élémentaires comme l'addition ou la soustraction. La multiplication ou la division peuvent aussi être effectuées en utilisant un registre à décalage spécial M. Pour la multiplication, l'un des opérandes (le multiplicateur) est initialement chargé dans le registre M et le registre A est mis à zéro. Chaque bit du multiplicateur est ensuite décalé à son tour, en commençant par le bit le moins signififcatif, Si le bit multiplicateur est "1", l'autre opérande (le multiplicande) est additionné au contenu du registre A, sinon, un zéro est additionné. Dans un cas comme dans l'autre, le résultat de l'addition est décalé d'une position vers la droite et charté ensuite à nouveau dans le registre A, le bit le moins significatif étant introduit dans l'extrémité la plus significative du registre M. Cela est répété jusqu'à ce que tous les bits du-multipli- cateur soient utilisés. A la fin de la multiplication, le registre A contient les bits les plus signficatifs du produit et le registre M contient les bits les moins significatifs. Il apparaît que dans la disposition décrite ci-dessus, le registre M représente un élément supplémentaire de circuit qui est prévu spécialement pour la multiplication (et la division). L'invention a donc pour objet de proposer un dispositif destiné à effectuer une multiplication sans nécessiter un registre supplémentaire. L'invention concerne donc un appareil de traitement de données comportant un registre d'opérandes et une unité arithmétique et logique comprenant une première entrée connectée au registre d'opérandes et une seconde sortie pour recevoir un multiplicande pendant une opération de multiplication, dans lequel le registre d'opérandes comporte une première et une seconde parties, la première partie pouvant fonctionner comme un registre à décalage indépendamment du fonctionnement de la seconde partie, l'appareil comportant: un circuit d'eitrée pour charger un multiplicateur dans la première partie au début d'une opération de multiplication, un circuit pour lire des bits successifs du multiplicateur dans la première partie pendant que cette partie est décalée vers la droite et pour commander l'unité arithmétique et logique en fonction de la valeur de chacun de ces bits pour produire un résultat partiel égal à la somme des deux entrées de l'unité arithmétique et logique si le bit multiplicateur est "1", et égal dans le cas contraire à la première entrée, et un circuit pour ramener le résultat partiel au registre d'opérandes, permettant que le bit le moins significatif du résultat partiel soit introduit dans la position binaire la plus signficative de la première partie et permettant que les autres bits du résultat partiel soient chargés en parallèle dans la seconde partie simultanément avec le décalage de la première partie. Il apparaît ainsi, que, dans la multiplication, le registre d'opérandes remplit une double fonction: il mémorise le multiplicateur et reçoit également la sortie de l'unité arithmétique et logique. Ainsi, aucun registre supplémentaire n'est nécessaire pour conserver le multiplicateur. Etant donné que le registre est divisé en deux parties fonctionnant indépendamment, le multiplicateur peut encore être décalé simultanément avec le chargement de l'unité arithmétique et logique et par conséquent, il n'y a aucune réduction de vitesse. Un mode de réalisation de l'invention sera maintenant décrit à titre d'exemple en se référant au dessin annexé qui est un schéma logique d'une unité d'un processeur de données permettant d'exécuter diverses opérations arithmétiques et logiques, y compris la multiplication. Selon la figure, l'unité de traitement comporte deux registres R et -M qui contiennent des opérandes respectifs à 32 bits pour être traités. Le contenu du registre R est appliqué directement à une entrée d'une unité arithmétique et logique (ALU) 10. Le contenu du registre M est appliqué à un circuit 11 de décalage multiplet qui permet de décaler l'opérande vers la droite ou vers la gauche d'un nombre entier de multiplets (un multiplet contenant 8 bits). La sortie du circuit 11 de décalage de multiplet est appliquée à un registre à décalage S. Le registre à décalage S est séparé en parties à 16 bits S(0-15) et S(16-31). Chaque partie peut fonctionner indépendamment, soit dans un mode de décalage (pour décaler son contenu vers la droite ou la gauche) soit dans une mode de chargement auquel cas il peut être chargé en parallèle à partir de l'entrée de données. En particulier, il est possible de faire fonctionner la première partie S(0- 15) dans le mode de décalage pendant que la seconde partie S(16-31) est chargée en parallèle. Le contenu du registre S est appliqué à la seconde entrée de l'unité arithmétique et logique 10. -2558612 L'unité arithémtique et logique 10 est une unité conventionnelle capable de remplir diverses fonctions sur les deux entrées, comme l'addition, la soustraction, la combinaison logique ET, ainsi de suite. Elle peut également faire passer les entrées à la sortie sans modification, en ajoutant en fait un zéro à l'entrée sélectionnée. La fonction remplie par l'unité arithmétique et logique est commandée par un code de fonctions qui réside dans un registre de fonctions FN. Ce code est généralement déterminé par l'instruction de machines en cours, de la manière conventionnelle. Mais dans le cas d'une instruction de multiplication, le code de fonction est déterminé par un bit de commande L qui représente la valeur du bit multiplicateur suivant à considérer. Le bit de commande L est sélectionné par un multiplexeur 12, à partir du bit le moins signi- ficatif M(31) du registre M ou du bit S(14) du registre S. Si L=1, le code de fonction spécifie l'addition des entrées de l'unité arithmétique et logique et si L=0, il spécifie que l'unité arithmétique et logique doit passer la seconde entrée (c'est-à-dire provenant du registre S) sans modification. La sortie de l'unité arithmétique et logique 10 est appliquée à un registre d'écriture WR à partir duquel elle peut être écrite dans une mémoire (non représentée). Les bits 16-30 de la sortie de l'unité arithmétique et logique, avec le signal de retenue C16 provenant de l'étage 16 de l'unité arithmétique et logique sont également appliqués en parallèle à l'entrée de données de S(16-31). Ces connexions sont décalées d'un bit vers la droite de. sorte que le bit 30 provenant de l'unité arithmétique et logique est appliqué à la position binaire S(31) et ainsi de suite, la retenue C16 étant connectée à S(16). Le bit le moins significatif de la sortie de l'unité arithmétique et logique (bit 31) est appliqué à l'extrémité de gauche du registre S et il peut être décalé dans S(0) quand S(0-15) est décalé vers la droite. D'une façon similaire, le bit le plus significatif de la sortie de l'unité arithmétique et logique (bit 0) est appliqué à l'extrémité de droite du registre S et il peut être décalé dans S(31) quand S(16-31) est décalé à gauche. Ces connexions peuvent être utilisées pour effectuer des décalages cycliques sur les contenus du registre S. La connexion du bit 31 est également utilisée pour la multiplication, comme cela sera décrit. Il apparaît ainsi que l'unité de traitement peut effectuer diverses opérations. Par exemple, elle peut additionner deux opérandes à 32 bits dans les registres R et S, en plaçant le résultat dans le registre d'écriture WR. Par le fonctionnement du circuit de décalage de multiplet 11, l'un des opérandes peut être décalé d'un nombre entier de multiplets avant d'être placé dans le registre S. Egalement, par le fonctionnement des deux parties du registre S dans le mode de décalage, cet opérande peut être décalé d'une ou plusieurs positions de bits. Ces deux méthodes différentes de décalage peuvent être utilisées ensemble pour produrie des décalages rapides de toute longueur. Par exemple; s'il y a lieu de décaler un opérande de 17 positions de bits, cela peut être obtenu en le décalant de deux multiplets dans le circuit de décalage de multiplet 11 et ensuite d'un bit dans le registre S. L'unité de traitement peut également multiplier deux opérandes à 16 bits pour obtenir un résultat à 32 bits de la manière suivante. L'opération de multiplication commence avec une phase de décodage, occupant une période d'horloge dans laquelle les actions suivantes sont effectuées: (1) Le premier opérande (multiplicateur) est aiguillé dans le registre M. Etant donné que le multiplicateur a une longueur de 16 bits, il n'occupe que les 16 positions binaires de moindre poids M(16-31), les autres bits étant tous des zéros. (2) Le multiplicateur subit un décalage de 16 bits vers la gauche au moyen du circuit de décalage de multiplet 11. Cela déplace le multiplicateur jusque dans les 16 positions binaires les plus significatives. En même temps, le bit M(31) est sélectionné par le multiplexeur 12 pour produire le signal de commande L. (3) A la fin de la période de décodage, le second opérande (multiplicande) est aiguillé dans le registre R dans lequel il occupe les positions binaires R (16-31). En même temps, le multiplicateur décalé est aiguillé dans le registre S dans lequel il occupe les positions binaires S(0-15). Egalement en même temps, le signal de commande L est utilisé pour placer le code de fonctions dans le registre FN, comme décrit ci-dessus. Il apparaît que le fonctionnementdu circuit de décalage de multiplet se chevauche avec l'arrivée du second opérande et n'entraine donc aucun retard supplémentaire. La première partie S(0-15) est maintenant placée dans le mode de décalage, la seconde partie S(16-31) restant dans le mode de chargement. Egalement, le multiplexeur 12 est commuté de manière que d'autres bits de commande L soient produits par le bit S(14) du registre S. Une série de 16 impulsions d'horloge CLK ezt maintenant produite, une pour chaque bit de multiplicateur. A chaque impulsion d'horloge, les actions suivantes sont entreprises: (a) S(0-15) est décalé d'une position vers la droite. Le bit décalé à l'extrémité de droite est éliminé (car il a déjà été utilisé,pour former le bit de commande L et il n'est plus nécessaire) et le bit 31 provenant de l'unité arithmétique et logique est décalé à l'extrémité de gauche. (b) S(16-31) est échantillonné de manière à le charger avec C16 et les bits 16-30 provenant de l'unité arithmétique et logique. (c) Le registre FN est mis en place par la valeur en cours du bit de commande L comme décrit ci-dessus. Il faut noter que ces trois actions (a)-(c) sont toutes exécutées simultanément. Ainsi, la valeur du bit de commande L utilisée dans l'action (c) est la valeur existante avant le décalage du registre S. Egalement, la sortie de l'unité arithmétique et logique utilisée dans les actions (a) et (b) est celle spécifiée par le contenu existant du registre FN, avant qu'il ne soit changé par le bit de commande L. En résumé, il apparalt que chaque bit du multiplicateur, en commençant par le moins signifi- catif, est utilisé tour à tour pour produire le signal de commande L. Ce signal établit la fonction appropriée pour l'unité arithmétique et logique pour former le nouveau résultat partiel qui est ensuite chargé à nouveau dans le registre S avec un décalage d'une position vers la droite. Il apparaît que le signal L est également disponible dans le cycle précédent celui dans lequel la fonction de l'unité arithmétique et logique correspondante se produit, ce qui permet que la fonction requise de l'unité arithmétique et logique soit établie immédiatement en évitant tout retard. A chaque phase de la multiplication, les bits les plus significatifs du résultat partiel sont toujours dans S(16-31) tandis que les bits les moins significatifs sont décalés 1 à la fois dans S(0-15). Quand tous les bits du multiplicateur ont été utilisés, la multiplication est terminée. Le registre S contient maintenant le résultat final, la moitié la plus significative se trouvant dans S (16-31) et la moitié la moins significative dans S(0-15). Il apparaît ainsi que l'unité de traitement décrite ci-dessus ne nécessite qu'un cycle d'horloge CLK pour chaque bit du multiplicateur et par conséquent, la multiplication complète à 16 bits ne prend que 16 cycles. Il en est ainsi car le registre S est séparé en deux parties qui peuvent être commandées indépendamment, permettant que la première partie S(0-15) soit décalée pendant que la seconde partie S(16-31) est chargée. Egalement, étant donné que le bit de commande L est prêt à l'avance, il n'est pas besoin d'un cycle séparé pour contrôler le bit multiplicateur. En outre, chaque cycle est très rapide. Il en est ainsi car chaque cycle n'implique qu'une addition à 16 bits plutôt qu'une addition à 32 bits. Eqalement, la sortie de l'unité arithmétique et logique est ramenée au registre S par un circuit direct. Il en résulte que le signal d'horloge CLK peut être plus rapide que la période d'horloge normale de l'unité de traitement: il peut être par exemple d'une fréquence double de celle de l'horloge normale. Bien entendu, diverses modifications peuvent être apportées par l'homme de l'art au mode de réali- sation décrit et illustré à titre d'exemple nullement limitatif sans sortir du cadre de l'invention. úVENDICATIONS 1. Appareil de traitement de données, comportant un registre d'opérandes et une unité arithmétique et logique (10) dont une première entrée est connectée au registre d'opérandes et dont une seconde entrée reçoit un multiplicande pendant une opération de multiplication, appareil caractérisé en ce que le registre d'opérandes S comporte une première et une seconde parties, la première partie (S0-S15) fonctionnant comme un registre à décalage indépendamment du fonc- tionnement de la seconde partie (S16-S31). l'appareil comportant en outre un circuit d'entrée pour charger un multiplicateur dans la première partie (S0-S15) au début d'une opération de multiplication, un circuit pour lire des bits successifs du multiplicateur dans la première partie pendant que cette partie est décalée vers la droite, et q;commande l'unité arithmé- tique et logique (10) en fonction de la valeur de chaque bit (S14) pour produire un résultat partiel égal à la somme des deux entrées de l'unité arithaé- tique et logique si le bit multiplicateur est "1", et égal dans le cas contraire à la première entrée et un circuit pour ramener le résultat:. partiel au registre d'opérandes (S) permettant que le bit le moins signi- ficatif (bit 31) du résultat partiel soit introduit dans la position binaire la plus significative (SO) de la première partie et permettant que les autres bits (C16, bits 16-30) du résultat partiel soient charges en parallèle dans la seconde partie (S16-S31) simultanêment avec le décalage de la première partie. 2. Appareil selon la revendication 1, caractérisé en ce qu'il comporte un registre de fonctions FN pour conserver chaque bit successif de multiplicateur et connecter à l'unité arithmétique et logique (10) pour en commander le fonctionnement. 3. Appareil selon la revendication 2, caractérisé 1 0 en ce que le circuit destiné à lire des bits successifs du multiplicateur est connecté à l'avant-dernière position binaire (S14) de la première partie du registre d'opérandes, de manière que le bit suivant du multiplicateur soit disponible pour le registre de fonctions avant qu'il ne soit nécessaire de manière qu'il puisse être introduit dans le registre de fonction dès qu'il est nécessaire. 4. Appareil selon l'une quelconque des reven- dications 1 à 3, caractérisé en ce qu'il comporte un registre d'entrée (M) pour conserver un opérande d'entrée et un circuit (11) destiné à transférer le contenu de la première et de la seconde moitiés du registre d'entrée vers la première et la seconde parties du registre d'opérandes (S), et fonctionnant alternativement pour transférer un multiplicateur de la seconde moitié du registre d'entrée vers la première partie du registre d'opérande. 5. Appareil selon la revendication 3 ou 4, caractérisé en ce qu'il comporte en outre un dispositif destiné à transférer le bit le moins significatif (M31) du registre d'entrée au registre de fonction (FN) simultanément avec le transfert du contenu du registre d'entrée dans le registre d'opérande. 6. Appareil selon l'une quelconque des reven- dications 1 à 5, caractérisé en ce que la première partie du registre d'opérande consiste en la moitié la plus significative de ce registre, la seconde partie consistant en la moitié la moins significative. 7. Appareil selon l'une quelconque des reven- dications 1 à 6, caractérisé en ce que, en fonctionnement, un multiplication est effectuée à deux fois la fréquence d'horloge utilisée pour l'addition.