Brevet FR2559285A1 — publié le 19850809

UNITE ARITHMETIQUE ET LOGIQUE AVEC INDICATEUR DE DEBORDEMENT La présente invention concerne une unité arithmétique et logique telle que celles que l'on utilise dans les microprocesseurs ou d'autres circuits de traitement de signaux binaires. Une unité arithmétique et logique est destinée à recevoir deux nombres binaires à plusieurs chiffres et à effectuer sur ces nombres des opérations simples de type arithmétique (addition des deux nombres, soustraction) ou logique (complémentation, fonction OU etc...). Elle est constituée par une succession de cellules d'aiguil- lages recevant chacune un chiffre binaire (bit) de l'un des nombres à traiter et un chiffre binaire (bit) de l'autre nombre; des conducteurs de commande, par exemple au nombre de huit, commandent les cellules d'aiguillages selon la fonction arithmétique ou logique à réaliser, de manière à aiguiller sur la sortie de chaque cellule l'un ou l'autre des chiffres binaires, ou leur complément, ou encore un bit "zéro" ou "un", selon la fonction à réaliser. Un exemple de constitution d'une cellule arithmétique et logique (UAL) est représenté à la figure 1. L'UAL comporte une succession de n cellules CO à Cn1 pour traiter des nombres A et B de n bits chacun, a à an.1 et bo à bn_1 les bits de poids le plus fort a n-1 et bn.l traités dans la celule de rang n-l, étant les bits de signe des nombres A et B. Les bits de rang i, ai et bi respectivement, sont appliqués à l'entrée de la cellule Ci de rang i. Chaque cellule Ci comprend deux éléments d'aiguillage Ki et Pi recevant chacun le bit ai et le bit bi et éventuellement leurs compléments ai et bi, si ces compléments ne sont pas générés à l'intérieur même des éléments. Les éléments Ki et Pi des diverses cellules sont tous com- mandés simultanément par des conducteurs de commande communs, par exemple au nombre de huit regroupés dans un bus de commande 2559285S désigné par cd. L'état des signaux sur les divers conducteurs de commande définit la fonction arithmétique ou logique réalisée par MUAL, et cette fonction se traduit par l'apparition en sortie de chaque élément d'aiguillage d'un signal qui peut être ai ou bi ou ai oubi ou O ou 1. Chaque cellule Ci comporte, outre les entrées pour les nom- bres ai et bi, une entrée de retenue désignée par ri 1, reliée à la sortie de retenue, également désignée par ri_1, de la cellule de rang immédiatement précédent Ci_. La cellule Ci comporte enfin une sortie de résultat si et une sortie de retenue ri destinée à être reliée à l'entrée de la cellule de rang suivant Ci+. Dans l'exemple représenté, la sortie de l'élément d'aiguillage Ki commande un transistor à effet de champ Tti connecté entre la sortie de retenue ri et une masse (niveau logique O). La sortie de rélément d'aiguillage Pi est reliée d'une part à la grille de com- mande d'un transistor T2- relié entre l'entrée de retenue (ri 1) et la sortie de retenue (ri). Par ailleurs, la sortie de l'élément d'aiguillage Pi est reliée à une entrée dne porte OU-exclusif EOi dont une autre entrée est reliée à l'entrée de retenue r. 1 et dont la sortie constitue la sortie de résultat si de la cellule Ci- Enfin, un transistor T3i, relié entre la sortie de retenue ri et une tension d'alimentation Vp, sert à assurer une précharge du circuit dans une première phase de fonctionnement de PUAL pen- dant laquelle ce transistor est rendu conducteur. On cherche en général à savoir, lorsque M'UAL fonctionne en additionneur ou soustracteur, s'il n'y a pas dépassement de la capacité d'addition ou soustraction de 'UAL. En effet, les nombres A et B d'entrée sont des nombre signés dont le bit de poids fort (an.1 ou bn1) représente le signe, positif s'il est nul, négatif s'il est égal à 1; la sortie de MUAL est également un nombre signé dont le bit de poids fort sn_1 (sortie de la cellule Cn_1 de rang le plus fort) représente le signe du résultat de l'addition ou la soustraction. Il se peut que l'addition de deux nombres positifs donne un résultat positif supérieur ou égal à 2n-1, auquel cas le bit de signe sn1 deviendra égal à 1, ce qui sera interprété comme un résultat négatif: il y a dépassement de capacité de i'UAL, qu'on appelle débordement positif. Il se peut aussi que l'addition de deux nombres négatifs donne un résultat négatif inférieur à -2n-1, auquel cas le bit de signe Sn_ deviendra égal à 0, et le résultat fourni par I'UAL, interprété comme un nombre positif, sera évidemment faux: il y a encore dépassement de capacité, qu'on appellera débordement négatif. De même, un débordement positif est possible en cas de soustraction A-B o A est positif et B négatif et un débordement négatif est possible en cas de soustraction A-B o A est négatif et B positif. Les unités arithmétiques et logiques sont donc généralement pourvues d'un circuit de test de débordement, représenté sous la référence générale TD, qui élabore un signal de débordement positif dp et un signal de débordement négatif dn. Ces signaux sont utilisées par le processeur ou micro- processeur dont I'UAL forme le noyau; par exemple, ces signaux sont enregistrés à des positions spécifiques d'un registre d'état comportant par ailleurs d'autres indications sur 'Pétat' du processeur. En pratique, si l'on examine le détail du circuit de test de débordement, on s'aperçoit qu'il est usuellement élaboré à partir des remarques suivantes, an1, bn_1, et sn-1 étant les bits de signe des nombres A et B et du résultat S de l'addition ou de la soustraction de AetB: 1. en mode d'addition a) si A et B sont positifs (an_1 = bn_1 = 0) et si on trouve S négatif (sn_1 = 1), il y a débordement positif: dp = 1; on peut donc écrire l'équation logique: dp = an1 bn_1 Sn_1 (1) n1nls- b) si A et B sont négatifs (anI = bn_1 = 1) et si on trouve S positif (P sn_1 = 0), il y a débordement négatif: dn = 1; on peut écrire l'équation logique: dn = an_1 bn1 sn_1 (2) 255928&5 2. en mode de soustraction A-B a) si A est positif et B négatif (an_1 =; bn_1 = 1) et si on trouve S négatif (sn_1 = 1), il y a débordement positif: dp = 1 on peut écrire l'équation logique: dp = an_1 bn_1 Sn_1 (3) b) si A est négatif et B positif (an 1 = 1; bn1 = 0) et si on trouve S positif (sn_1 = 0), il y a débordement négatif dn = 1; on peut écrire l'équation logique: dn = an_1 bn_1 Sn1 (4) On remarque que les équations logiques (1) et (3) ne sont pas identiques, de même que les équations (2) et (4). Il est donc a priori !0 nécessaire d'établir des signaux de débordement séparément pour le cas o l'UAL effectue une addition, et pour le cas o elle effectue une soustraction. Le circuit de test TD doit donc recevoir: - le bit de signe an-1 de A - le bit de signe bn_1 de B - le bit de signe sn_1 du résultat S - une indication sur le mode de travail, addition ou sous- traction, de 'UAL. Cette dernière indication provient d'un ou plusieurs conduc- teurs du bus de commande cd de 'UAL. Outre qu'il faut prévoir d'amener au circuit de test des signaux venant des bus de commande de M'JAL, il est donc nécessaire de prévoir un circuit logique à plusieurs niveaux de portes: un premier niveau d'inverseurs pour réaliser les compléments an-l, bn-l' Sn-l' quatre portes à trois entrées au moins pour réaliser les divers produits apparaissant dans les équations logiques (1) à (4) et des portes pour sélectionner les produits adéquats en fonction de l'état du bus de commande cd. Pour réduire le nombre de portes nécessaires et surtout le nombre d'étages successifs de portes afin d'accélérer l'obtention de l'information de débordement, la présente invention propose une unité arithmétique et logique ayant un circuit de test de débor- dement qui possède trois entrées reliées respectivement à l'entrée de retenue de la cellule de rang le plus élevé de l'unité arithmétique et logique, à la sortie de retenue de cette cellule, et enfin à la sortie de résultat de cette cellule. Ce circuit comporte essentiellement, outre des inverseurs pour établir le complément des signaux appliqués à ces entrées, une seule porte à trois entrées pour chaque information de débordement à établir (c'est-à-dire deux portes s'il faut une information de débor- dement positif et une information de débordement négatif). D'autres caractéristiques et avantages de l'invention apparaî- tront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels: - la figure 1 déjà décrite représente une unité arithmétique et logique de la technique antérieure, la figure 2 représente l'unité arithmétique et logique selon l'invention. Sur la figure 2, les mêmes références représentent les mêmes éléments qu'à la figure 1 et on ne reviendra pas sur leur description. La structure de 'UAL représentée ne constitue d'ailleurs qu'un exemple de réalisation parmi d'autres possibles. Le circuit de test de débordement TD de la figure 2 ne reçoit pas de conducteur issu du bus de commande cd indiquant la fonction accomplie par MUAL. Par conséquent, le circuit de test de débor- dement ne reçoit pas d'information directe sur le fait que 'UAL effectue une addition plutôt qu'une soustraction. Le circuit TD ne reçoit que trois signaux d'entrée qui sont respectivement le signal présent sur l'entrée de retenue rn_2 de la dernière cellule Cn_1 de 'UAL et les signaux présents sur la sortie de retenue rn.1 et la sortie de résultat Sn-1 de cette même cellule (dont on rappelle qu'elle reçoit les bits de signe an_1 et bn_1 des nombres A et B à additionner ou soustraire). Le circuit TD fournit encore un signal de débordement positif dp et un signal de débordement négatif dn. Ces signaux de sortie du circuit TD sont des signaux logiques reliés aux signaux logiques d'entrée par les équations suivantes: dp = rn_2 * Sn-1. rn1 (5) et dn = rn_2 * Sn-1. rn-I (6) A cet effet, le circuit TD peut comprendre trois inverseurs 11, I2, 13, fournissant respectivement les compléments de rn2, Sn_1 et rn_' et deux portes à trois entrées pour établir les produits des équations (5) et (6). Sur la figure 2, les portes sont des portes NOR NI et N2, la porte NI reçoit rn_2, sn_1 et rn_1 et fournit dp; la porte N2 reçoit rn-2' sn-1 et rn-1 et fournit dn. Le circuit TD est donc très simple et ne comporte qu'un étage de portes à trois entrées, fournissant très rapidement les indications de dépassement dp et dn. L'élaboration des signaux dp et dn ne dépend plus de l'opéra- tion (addition ou soustraction) effectuée. Les cas de dépassement de capacité sont en effet les suivants: 1. addition a) A et B étant positifs, on trouve quand même un résultat négatif: an1 = 0, bn_ 1 = 0,Sn = 1 ceci n'est possible que si rn_2 = I et rn_1 = 0 on aboutit à l'équation logique suivante: dp = rn.2 sn-1 rn1 (7) b) A et B étant négatifs, on trouve quand même un résultat positif: an_1 = 1, bn_1 = 1 Sn-1 = 0 ceci n'9st possible que si rn_2 = 0 et rn1 = 1 on aboutit à: dn= rn_2 Sn- rn1 (8) 2. soustraction A-B a) A positif, B négatif, on trouve un résultat négatif: an1 = O, bn_1 = 1, Sn-1 = 1 ceci n'est possible que si rn_2 = I et rn_1 = on aboutit à dp = rn2 Sn-_1 rn(9) b) A négatif, B positif, on trouve un résultat positif: an1 = 1, b_l = O, s-1 = ceci n'est possible que si rn_2 = 0 et rn1 = 1 on aboutit à dn =-rn_2 nl rn1 (10) On vérifie qu'il y a identité des équations logiques (7) et (9) d'une part (débordement positif) et (8) et (10) d'autre part (débor- dement négatif). Le test de débordement n'a donc pas à faire intervenir le fait que 'UAL effectue une addition ou une soustraction. REVENDICATIONS 1. Unité arithmétique de logique comportant une série de cellules d'aiguillage (Ci) commandées simultanément pour définir un mode de fonctionnement arithmétique ou logique déterminé de l'unité, une cellule de rang i (Ci) ayant une entrée pour recevoir un bit (ai) de rang i d'un premier nombre A, une entrée pour recevoir un bit de même rang i (bi) d'un second nombre B, et une entrée de retenue (ri1), la cellule ayant une sortie de résultat (si) et une sortie de retenue (ri), cette dernière étant reliée à l'entrée de retenue de la cellule (Ci+l) de rang immédiatement supérieur (i+1), la cellule de rang le plus élevé (Cn_1) recevant sur ses entrées un bit de signe (an _l) du premier nombre A et un bit de signe (bn_1) du second nombre B, et un circuit de test de débordement (TD) étant prévu pour fournir un signal de débordement positif (dp) et un signal de débordement négatif (dn), caractérisée en ce que le circuit de Is test de débordement comporte trois entrées reliées respectivement à l'entrée de retenue (rn_2) de la cellule de rang le plus élevé (Cn_l), et aux sorties de retenue (rni) et de résultat (Sn_1) de cette même cellule. 2. Unité arithmétique et logique selon la revendication 1, caractérisée ne ce que le circuit de test de débordement comporte une porte à trois entrées (NI) pour établir le produit logique suivant: dp = rn_2 Sn-. rn-1 3. Unité arithmétique et logique selon la revendication 1, caractérisée en ce que le circuit de test de débordement comporte une porte à trois entrées (N2) pour établir le produit logique suivant: dn = rn-2 Sn-I ' rn-l 4. Unité arithmétique et logique selon la revendication 1, caractérisée en ce que le circuit de test de débordement comporte deux portes à trois entrées (NI, N2) et trois inverseurs (I1, 12, 13), pour établir les produits logiques suivants: dp = rn-1. Sn-1 rn-l et dn = rn_1. Sn-1 rn_1 sur deux sorties dis- tinctes du circuit.