FR2772946A1 - Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes - Google Patents
Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes Download PDFInfo
- Publication number
- FR2772946A1 FR2772946A1 FR9716360A FR9716360A FR2772946A1 FR 2772946 A1 FR2772946 A1 FR 2772946A1 FR 9716360 A FR9716360 A FR 9716360A FR 9716360 A FR9716360 A FR 9716360A FR 2772946 A1 FR2772946 A1 FR 2772946A1
- Authority
- FR
- France
- Prior art keywords
- sep
- cout30
- bits
- result
- saturation
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
L'invention concerne un procédé de détermination d'un dépassement de format du résultat d'une opération arithmétique réalisée, par une unité arithmétique, entre deux opérandes A et B et une retenue entrante Cin; ce procédé est exécuté parallèlement au traitement effectué par l'AU sur les opérandes A et B, avant que le résultat S de l'opération n'ait été déterminé par l'AU.
Description
PROCEDE DE DETERMINATION D'UN DEPASSEMENT DE FORMAT
DU RESULTAT D'UNE OPERATION ARITHMETIQUE
REALISEE SUR DEUX OPERANDES
DESCRIPTION
Domaine de l'invention
L'invention concerne un procédé pour déterminer si le format (ou taille) du résultat binaire
S d'une opération arithmétique entre deux opérandes A et B et une retenue entrante Cin dépasse le format prévu pour ce résultat dans une unité de calcul. Ce procédé est exécuté parallèlement au traitement effectué par l'unité arithmétique AU (ou Unité de
Calcul UC) sur les opérandes A et B et la retenue entrante Cin. I1 permet de savoir, avant que le résultat S de l'opération arithmétique n'ait été déterminé par 1'AU, si ce résultat aura le format adéquat.
DU RESULTAT D'UNE OPERATION ARITHMETIQUE
REALISEE SUR DEUX OPERANDES
DESCRIPTION
Domaine de l'invention
L'invention concerne un procédé pour déterminer si le format (ou taille) du résultat binaire
S d'une opération arithmétique entre deux opérandes A et B et une retenue entrante Cin dépasse le format prévu pour ce résultat dans une unité de calcul. Ce procédé est exécuté parallèlement au traitement effectué par l'unité arithmétique AU (ou Unité de
Calcul UC) sur les opérandes A et B et la retenue entrante Cin. I1 permet de savoir, avant que le résultat S de l'opération arithmétique n'ait été déterminé par 1'AU, si ce résultat aura le format adéquat.
Ce procédé trouve des applications dans la plupart des unités de calcul et, en particulier, dans les unités de calcul incluses dans des circuits programmables tels qu'un processeur de traitement du signal (DSP) ou un microcontrôleur.
Etat de la technique
I1 est connu, dans le domaine des circuits intégrés utilisant des unités de calcul, de vérifier si le format du résultat d'une opération arithmétique effectuée sur deux opérandes A et B et une retenue entrante Cin, par une AU (Unité Arithmétique), ne dépasse pas un format donné. Lorsque c'est le cas, on parle de "dépassement" ("overflow beyond n bits" en termes anglosaxons) et, dans ce cas, une saturation du résultat peut être appliquée.
I1 est connu, dans le domaine des circuits intégrés utilisant des unités de calcul, de vérifier si le format du résultat d'une opération arithmétique effectuée sur deux opérandes A et B et une retenue entrante Cin, par une AU (Unité Arithmétique), ne dépasse pas un format donné. Lorsque c'est le cas, on parle de "dépassement" ("overflow beyond n bits" en termes anglosaxons) et, dans ce cas, une saturation du résultat peut être appliquée.
Généralement, la détermination d'un tel dépassement est effectuée après que le résultat ait été détermine, c'est-à-dire lorsque 1'AU a terminé le traitement des opérandes A et B et de la retenue entrante Cin. Autrement dit, si l'on considère la figure 1 qui représente schématiquement les différentes étapes de traitement entre l'introduction des opérandes
A et B et de la retenue entrante Cin dans 1'AU et l'écriture du résultat S dans l'accumulateur, la détermination d'un éventuel dépassement est classiquement effectuée après l'étape E2 du calcul.
A et B et de la retenue entrante Cin dans 1'AU et l'écriture du résultat S dans l'accumulateur, la détermination d'un éventuel dépassement est classiquement effectuée après l'étape E2 du calcul.
I1 est donc nécessaire, pour savoir s'il y a dépassement, d'attendre que le calcul par 1'AU soit terminé. I1 y a alors une perte de temps qui est d'autant plus importante que le calcul effectué par 1'AU est complexe.
Exposé de l'invention
L'invention a justement pour but de remédier à cet inconvénient. A cette fin, elle propose un procédé permettant de déterminer, parallèlement au calcul effectué par l'AU, s'il va y avoir un dépassement du format du résultat et, si c'est le cas, de proposer une valeur de saturation pour ce résultat.
L'invention a justement pour but de remédier à cet inconvénient. A cette fin, elle propose un procédé permettant de déterminer, parallèlement au calcul effectué par l'AU, s'il va y avoir un dépassement du format du résultat et, si c'est le cas, de proposer une valeur de saturation pour ce résultat.
De façon plus précise, l'invention concerne un procédé de détermination d'un dépassement de taille du résultat d'une opération arithmétique réalisée, par une unité arithmétique (AU), sur deux opérandes A et B et une retenue entrante Cin introduits en entrée de 1'AU. Ce procédé se caractérise par le fait qu'il est exécuté parallèlement au traitement effectué par 1'AU sur les opérandes A et B et la retenue entrante Cin, avant que le résultat de l'opération arithmétique n'ait été déterminé par 1'AU.
Dans toute la description qui va suivre, on parlera d'une opération arithmétique effectuée par une unité arithmétique (AU) ; toutefois, cette opération peut être réalisée également par une unité arithmétique et logique (ALU).
Selon un mode de réalisation de l'invention, dans lequel les opérandes A et B sont des nombres binaires de m bits et le format du résultat S recherché est de n bits (avec n < m), le procédé consiste
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés AH pour l'opérande A et BH pour l'opérande B et une retenue sortante Coutn de rang n-2 ; et
- à regarder si AH, BH et Coutn2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés AH pour l'opérande A et BH pour l'opérande B et une retenue sortante Coutn de rang n-2 ; et
- à regarder si AH, BH et Coutn2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
Selon ce mode de réalisation, la condition de saturation positive, dans le cas d'une addition, est
AH + Bii + Cout- > 1, et la condition de saturation négative, dans le cas d'une addition, est
AH + BH + Coutn-2 < 1, où Countn-2 est la retenue sortante de rang n - 2 dans l'opération arithmétique de A, B et Cin.
AH + Bii + Cout- > 1, et la condition de saturation négative, dans le cas d'une addition, est
AH + BH + Coutn-2 < 1, où Countn-2 est la retenue sortante de rang n - 2 dans l'opération arithmétique de A, B et Cin.
Dans le cas où A s'exprime sur 40 bits et B sur 32 bits, avec n = 32 et m = 40, les conditions de saturation positive sont
BH = O et AH > O
ou BH = - 1 et AH > 1
ou BH = O et AH = O et Cout30 = 1
ou BH = -l et AH = 1 et Cout30 = 1 et les conditions de saturation négative sont
BH = O et AH < -2
ou BH = -1 et AH < -1
ou BH = O et AH = -2 et Cout30 = 0
ou BH = -l et AH = -1 et Cout30 = 0.
BH = O et AH > O
ou BH = - 1 et AH > 1
ou BH = O et AH = O et Cout30 = 1
ou BH = -l et AH = 1 et Cout30 = 1 et les conditions de saturation négative sont
BH = O et AH < -2
ou BH = -1 et AH < -1
ou BH = O et AH = -2 et Cout30 = 0
ou BH = -l et AH = -1 et Cout30 = 0.
Dans le cas où A s'exprime sur 40 bits et B sur 33 bits, avec n = 32 et m = 40, les conditions de saturation positive sont
BH = -2 et AH > 2
ou BH = -l et AH > 1
ou BH = O et AH > O
ou BH = 1 et Ais > -1
ou BH = -2 et AH = 2 et Cout30 = 1
ou BH = -l et AH = 1 et Cout30 = 1
ou BH = O et AH = O et Cout30 = 1
ou BH = 1 et AH = -l et Cout = 1 et les conditions de saturation négative sont BH = -2 et AH < O
ou BH = -l et AH < -l ;
ou BH = 0 et AH < -2 ;
ou BH = 1 et AB < -3
ou BH = -2 et AH = O et Cout30 = 0
ou B = -1 et AH = -1 et Cout30 = O ;
ou BH = O et AH = -2 et Cout30 = 0
ou BH = 1 et AH = -3 et Cout30 = 0.
BH = -2 et AH > 2
ou BH = -l et AH > 1
ou BH = O et AH > O
ou BH = 1 et Ais > -1
ou BH = -2 et AH = 2 et Cout30 = 1
ou BH = -l et AH = 1 et Cout30 = 1
ou BH = O et AH = O et Cout30 = 1
ou BH = 1 et AH = -l et Cout = 1 et les conditions de saturation négative sont BH = -2 et AH < O
ou BH = -l et AH < -l ;
ou BH = 0 et AH < -2 ;
ou BH = 1 et AB < -3
ou BH = -2 et AH = O et Cout30 = 0
ou B = -1 et AH = -1 et Cout30 = O ;
ou BH = O et AH = -2 et Cout30 = 0
ou BH = 1 et AH = -3 et Cout30 = 0.
Selon un autre mode de réalisation de l'invention, dans lequel les opérandes A et B sont des nombres binaires de m bits et le format du résultat recherché S est de n bits, avec n < m, le procédé consiste
- à déterminer des termes de propagation Pi et des termes de génération gi définis chacun par une relation logique entre les composantes ai et bi des opérandes A et B ;
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés PH pour les termes de propagation pi et GH pour les termes de génération g., ainsi que la retenue sortante de rang n-2 ; et
- à regarder si PH, GH et Coutn2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
- à déterminer des termes de propagation Pi et des termes de génération gi définis chacun par une relation logique entre les composantes ai et bi des opérandes A et B ;
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés PH pour les termes de propagation pi et GH pour les termes de génération g., ainsi que la retenue sortante de rang n-2 ; et
- à regarder si PH, GH et Coutn2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
Dans le cas où A s'exprime sur 40 bits et B sur 32 bits avec n = 32 et m = 40, les conditions de saturation positive sont
g31 = 1 et (#i#[39:32], pi = 1) et Cout30 = 1
ou P33 = 1 et g39 = 0 et (#i3[38:32],gi = 1)
ou g33 = O et (#i#[39:31], Pt = 0) et Cout30 = 1
ou p = 0 et (#i#[38:31],pi = 1) et g39 = 0 et les conditions de saturation négative sont
g39 = 1 et (#i#[38:31],gi = ) i
ou (#i#[39:31], gi = 1) et Cout30 = O ;
ou p39 = 1 et (#i#[38:32],pi = O) et Vie[38:32], gi = O
ou (#i#[39:32],pi = 1) et P31 = O et g31 = O et Cout30 = 0.
g31 = 1 et (#i#[39:32], pi = 1) et Cout30 = 1
ou P33 = 1 et g39 = 0 et (#i3[38:32],gi = 1)
ou g33 = O et (#i#[39:31], Pt = 0) et Cout30 = 1
ou p = 0 et (#i#[38:31],pi = 1) et g39 = 0 et les conditions de saturation négative sont
g39 = 1 et (#i#[38:31],gi = ) i
ou (#i#[39:31], gi = 1) et Cout30 = O ;
ou p39 = 1 et (#i#[38:32],pi = O) et Vie[38:32], gi = O
ou (#i#[39:32],pi = 1) et P31 = O et g31 = O et Cout30 = 0.
Dans le cas où A s'exprime sur 40 bits et B sur 33 bits avec n = 32 et m = 40, les conditions de saturation positive sont
P39 = 1 et g32 = 1 et (p31) XOR (g31) = 1
p39 = 1 et #i#[38:33],gi = 1
p39 = O et g39 = 0
et NOT(#i#[38:31],pi = O et g31 = 0) ;
(#i#[39:32],pi = 1) et p31 = O et g32 = 1
et g31 = O et Cout30 = 1
(#i#[39:32],pi = 1) et g31 = 1
et Cout30 = 1
(#i#[39:32],pi = O) et g39 = O et g31 = 0
et Cout30 = 1, et les conditions de saturation négative sont
g39 = 1 et (#i#[38:31],gi = 0 ;
p39 = 1 et #i#[38:32],pi = 0
et (#i#[39:32],gi = 0
p39 = 1 et #i#[38:32],gi = 0
et not(#i#[38;32],pi = 1)
et not(#i#[38:33],pi = 1 et P32 = O et g31 = 1);
(#i#[39:32],pi = 1) et p31 = O et g31 = 0
et Cout30 = 0 ;
(#i#[39:31],gi = 1) et Cout30 = 0
(#i#[39:33],pi = 1) et P32 = O et g32 = 0
et g31 = 1 et Cout30 = 0.
P39 = 1 et g32 = 1 et (p31) XOR (g31) = 1
p39 = 1 et #i#[38:33],gi = 1
p39 = O et g39 = 0
et NOT(#i#[38:31],pi = O et g31 = 0) ;
(#i#[39:32],pi = 1) et p31 = O et g32 = 1
et g31 = O et Cout30 = 1
(#i#[39:32],pi = 1) et g31 = 1
et Cout30 = 1
(#i#[39:32],pi = O) et g39 = O et g31 = 0
et Cout30 = 1, et les conditions de saturation négative sont
g39 = 1 et (#i#[38:31],gi = 0 ;
p39 = 1 et #i#[38:32],pi = 0
et (#i#[39:32],gi = 0
p39 = 1 et #i#[38:32],gi = 0
et not(#i#[38;32],pi = 1)
et not(#i#[38:33],pi = 1 et P32 = O et g31 = 1);
(#i#[39:32],pi = 1) et p31 = O et g31 = 0
et Cout30 = 0 ;
(#i#[39:31],gi = 1) et Cout30 = 0
(#i#[39:33],pi = 1) et P32 = O et g32 = 0
et g31 = 1 et Cout30 = 0.
Quel que soit le mode de réalisation, le procédé de l'invention peut consister, lorsqu'il y a dépassement, à saturer le résultat à la valeur binaire 2''-1-1 pour une saturation positive et à la valeur -2"-1 pour une saturation négative, pour un format de saturation de n bits.
Brève description des figures
- La figure 1 représente schématiquement les étapes principales du procédé de l'invention ;
- la figure 2 représente un tableau contenant les différentes conditions de saturation pour un DSP 950 dans le cas où les opérandes A et B s'écrivent avec les termes AHI ALI BHI BL ; et
- la figure 3 représente un tableau contenant les conditions de saturation pour un microcontrôleur STYLO dans le cas où les opérandes A et
B s'écrivent avec les termes AH, AL, BH, Bt.
- La figure 1 représente schématiquement les étapes principales du procédé de l'invention ;
- la figure 2 représente un tableau contenant les différentes conditions de saturation pour un DSP 950 dans le cas où les opérandes A et B s'écrivent avec les termes AHI ALI BHI BL ; et
- la figure 3 représente un tableau contenant les conditions de saturation pour un microcontrôleur STYLO dans le cas où les opérandes A et
B s'écrivent avec les termes AH, AL, BH, Bt.
Description détaillée de modes de
réalisation de l'invention
Sur la figure 1, on a représenté schématiquement les différentes étapes du procédé de l'invention. Cette figure 1 montre l'AU 1 qui reçoit, en entrée, les opérandes A et B et la retenue entrante
Cin et effectue des traitements (étape E1, étape E2) sur ces opérandes A et B et Cin pour fournir, en sortie, un résultat S. Ce résultat S est transmis à un multiplexeur 2, lors d'une étape E3.
réalisation de l'invention
Sur la figure 1, on a représenté schématiquement les différentes étapes du procédé de l'invention. Cette figure 1 montre l'AU 1 qui reçoit, en entrée, les opérandes A et B et la retenue entrante
Cin et effectue des traitements (étape E1, étape E2) sur ces opérandes A et B et Cin pour fournir, en sortie, un résultat S. Ce résultat S est transmis à un multiplexeur 2, lors d'une étape E3.
Parallèlement au traitement effectué par l'AU pendant les étapes E3 à E3, le procédé de l'invention propose de déterminer si le format du résultat S dépassera ou non le format prévu. Cette détermination est réalisée, au cours d'une étape E4, par une unité d'évaluation 4 qui reçoit en entrée des données fournies par l'AU. Ces données peuvent être de deux types différents qui seront décrits ultérieurement.
Si le format du résultat S est supérieur au format prévu, l'unité d' 'évaluation 4 génère une information (ou drapeau) de saturation négative SAT ou de saturation positive SAT. Ces informations peuvent être utilisées soit comme des drapeaux, soit pour commander le multiplexeur 2 qui reçoit, en entrée, le résultat S, la valeur de saturation négative-2n-1, et la valeur de saturation positive 2"-1-1
Si ce n'est pas le cas, l'unité d'évaluation 4 envoie, au multiplexeur 2, un message
NON-SAT signifiant qu'il n'y a pas de saturation
(c'est-à-dire de dépassement de format) et que le résultat S pourra etre chargé dès qu'il aura été déterminé.
Si ce n'est pas le cas, l'unité d'évaluation 4 envoie, au multiplexeur 2, un message
NON-SAT signifiant qu'il n'y a pas de saturation
(c'est-à-dire de dépassement de format) et que le résultat S pourra etre chargé dès qu'il aura été déterminé.
Le résultat S ou la valeur de saturation choisie par l'unité d'évaluation 4 peut être ensuite inscrite dans un accumulateur 3, lors d'une étape Es.
Dans la description qui va suivre du procédé de l'invention, on considérera que A et B sont deux nombres binaires de m bits, et que le résultat S est un nombre binaire de m bits ramené à un format de n bits (A, B et S étant codés en complément à 2), où n et m dépendent de l'utilisation de l'unité de calcul. Le procédé de l'invention propose justement de vérifier si le résultat S que doit calculer l'AU aura bien un format inférieur ou égal à n bits.
D'une façon générale, la détermination d'un éventuel dépassement de format (appelé aussi "saturation") du résultat S consiste à regarder si l'une des conditions de saturation positive ou négative qui s' expriment en fonction de AH et BH et Coutil (Coutn-2 étant la retenue sortante de rang n-2) est vérifiée, avec
AH et B tels que A = AH.2n-1 + At
et B = BH.2n-1 + Bt.
AH et B tels que A = AH.2n-1 + At
et B = BH.2n-1 + Bt.
Le terme AH correspond donc aux m - n + 1 bits de poids les plus forts qui comportent un bit de signe, ainsi que les m - n bits de valeur de plus fort poids.
Le terme BH correspond donc aux m - n + 1 bits de poids les plus forts qui comportent un bit de signe ainsi que les m - n bits de valeur de plus fort poids.
Dans le cas d'une addition, par exemple, il y a nécessité de saturer positivement le résultat S dès que son format dépasse n bits, soit S > 2n-1, ce qui revient à écrire A + B + Cin > 2n-1.
De plus, S > 2n-1 signifie SH > 1, d'où une condition de saturation positive
AH + BH + COUtn > i,
où Coutn-2 est la retenue sortante de rang n-2.
AH + BH + COUtn > i,
où Coutn-2 est la retenue sortante de rang n-2.
Une saturation négative du résultat S se traduit par S < -2n-1, ce qui revient à écrire
A + B + Cin < -2n-1. D'autre part, S < -2n-1 signifie S t -1 ; la condition de saturation négative s'écrit donc
AH + BH + Coutn2 < -1, où Coutn-2 est la retenue sortante de rang n-2.
A + B + Cin < -2n-1. D'autre part, S < -2n-1 signifie S t -1 ; la condition de saturation négative s'écrit donc
AH + BH + Coutn2 < -1, où Coutn-2 est la retenue sortante de rang n-2.
On va décrire maintenant deux exemples d'application du procédé de l'invention. Pour ces exemples, le procédé est appliqué, d'une part, à un processeur de traitement de signal DSP 950 et, d'autre part, à un microcontrôleur ST 10. Pour ces deux exemples, m est égal à 40 et n à 32. Autrement dit, pour ces deux exemples, l'opération arithmétique est effectuée sur 40 bits et le format de saturation est de 32 bits.
Par ailleurs, des hypothèses restrictives concernant l'opérande B sont prises en compte dans le
DSP 950 et le ST 10. En particulier, pour le DSP 950, on considère que A s'exprime sur 40 bits et B est exprimable sur 32 bits, puis étendu sur 40 bits ; les 9 bits de poids fort sont donc identiques ; on a alors
BH = 111111111 ou BH = 000000000, c :
B = -1 ou BN = O.
DSP 950 et le ST 10. En particulier, pour le DSP 950, on considère que A s'exprime sur 40 bits et B est exprimable sur 32 bits, puis étendu sur 40 bits ; les 9 bits de poids fort sont donc identiques ; on a alors
BH = 111111111 ou BH = 000000000, c :
B = -1 ou BN = O.
Dans ce cas, on peut déterminer quatre conditions de saturation positive de S, qui sont résumées sur la partie droite du tableau de la figure 2.
Plus précisément, ces quatre conditions sont
BH = = O et AH > O
ou BH = -1 et AH > 1
ou BH = O et AH = O et Cout30 = 1
ou BH = -1 et AH = 1 et Cout30 = 1.
BH = = O et AH > O
ou BH = -1 et AH > 1
ou BH = O et AH = O et Cout30 = 1
ou BH = -1 et AH = 1 et Cout30 = 1.
En considérant l'hypothèse précédente relative à BH, c'est-à-dire BH = -1 OU BH = 0, on détermine aussi quatre conditions de saturation négative de S. Ces quatre conditions sont résumées sur la partie gauche du tableau de la figure 2.
Plus précisément, ces conditions sont
BH = 0 et AH < -2
ou BH = -1 et AH < -1
ou BN = O et AH = -2 et Cout30 = 0
ou B = -1 et AH = -1 et Cout30 = 0.
BH = 0 et AH < -2
ou BH = -1 et AH < -1
ou BN = O et AH = -2 et Cout30 = 0
ou B = -1 et AH = -1 et Cout30 = 0.
Dans le cas du microcontrôleur ST 10, on prend comme hypothèse que A s'exprime sur 40 bits et B est exprimable sur 33 bits, puis étendu sur 40 bits les 8 bits de poids fort sont donc identiques ; on a alors
EN = 111111110 ou BH = 111111111
ou BH = 000000000 ou BH = 000000001, c'est-à-dire
BH = -2 ou BH = -1 ou BH = O ou BH = 1.
EN = 111111110 ou BH = 111111111
ou BH = 000000000 ou BH = 000000001, c'est-à-dire
BH = -2 ou BH = -1 ou BH = O ou BH = 1.
Dans ce cas, on peut déterminer 8 conditions de saturation positives de S, qui sont résumées sur la partie droite du tableau de la figure 3.
Plus précisément, ces conditions sont
BH = -2 et AN > 2 ;
ou BH = -1 et AH > 1
ou BH = O et AH > 0 ;
ou BH = 1 et AH > -1
ou BH = - 2 et AH = 2 et Cout30 = 1
ou BH = -1 et AH = 1 et Cout30 = 1 ;
ou BH = O et AH = O et Cout30 = 1
ou BH = 1 et AH = -l et Cout30 = 1.
BH = -2 et AN > 2 ;
ou BH = -1 et AH > 1
ou BH = O et AH > 0 ;
ou BH = 1 et AH > -1
ou BH = - 2 et AH = 2 et Cout30 = 1
ou BH = -1 et AH = 1 et Cout30 = 1 ;
ou BH = O et AH = O et Cout30 = 1
ou BH = 1 et AH = -l et Cout30 = 1.
En considérant l'hypothèse précédente relative à BH, on peut déterminer aussi 8 conditions de saturation négative qui sont résumées sur la partie gauche du tableau de la figure 3.
Plus précisément, ces conditions sont BH = -2 et AH < t ;
ou BH = -l et AH < -1 ;
ou BH = O et AH < -2 ;
ou BH = 1 et AH < -3
ou BH = -2 et AH = O et Cout30 = 0
ou BH = -l et AH = -1 et Cout30 = 0
ou BH = O et AH = -2 et Cout30 = 0 ;
ou BH = 1 et AH = -3 et Cout30 = O.
ou BH = -l et AH < -1 ;
ou BH = O et AH < -2 ;
ou BH = 1 et AH < -3
ou BH = -2 et AH = O et Cout30 = 0
ou BH = -l et AH = -1 et Cout30 = 0
ou BH = O et AH = -2 et Cout30 = 0 ;
ou BH = 1 et AH = -3 et Cout30 = O.
Le premier mode de réalisation de l'invention consiste donc, comme on vient de le voir, à déterminer un éventuel dépassement en regardant si les valeurs AH, B et Coutn-2 vérifient les conditions de saturation données précédemment.
Un second mode de réalisation de l'invention consiste à utiliser des termes de propagation P et de génération G, déterminés par l'AU, pour détecter s'il y aura dépassement de format.
En effet, il est connu, pour accélérer les traitements par l'AU, de déterminer les termes de propagation p et les termes de génération gi, tous deux fonctions de a1 et bi. Autrement dit, l'AU détermine les termes pi et gi tels que
Pi = f1 (a1, bi, NP, NG) ;
et gi = f2 (a1, bi, NP, NG), où NP et NG sont deux vecteurs qui permettent de choisir l'opération arithmétique à effectuer (addition, soustraction, etc.).
pi et g1 sont définis en fonction de ai et bi, différemment suivant l'opération à réaliser.
Pi = f1 (a1, bi, NP, NG) ;
et gi = f2 (a1, bi, NP, NG), où NP et NG sont deux vecteurs qui permettent de choisir l'opération arithmétique à effectuer (addition, soustraction, etc.).
pi et g1 sont définis en fonction de ai et bi, différemment suivant l'opération à réaliser.
En particulier, dans le cas d'une addition, les termes de propagation et de génération sont les suivants
p1 = a1 # b1 ;
et gi = a1 . bl, où le symbole "#" signifie OU exclusif et "." signifie
ET.
p1 = a1 # b1 ;
et gi = a1 . bl, où le symbole "#" signifie OU exclusif et "." signifie
ET.
Dans le cas d'une soustraction, pi et g1 peuvent être déterminés de la façon suivante
pi = ai # bi ;
et gi = ai . bi .
pi = ai # bi ;
et gi = ai . bi .
Le résultat S de l'opération s'exprime donc comme une fonction des termes Pi et gi
S = f2(A, B, Cin) ;
donc S = f4 (P, G, Cin).
S = f2(A, B, Cin) ;
donc S = f4 (P, G, Cin).
Les bits de poids m - 1 à n - 1 de S sont les seuls bits intéressants du point de vue de la détection de dépassement ; ils peuvent être exprimés en fonction de la retenue sortante de rang n - 2, Coutn-2, et des termes de plus hauts rangs Pi et gi
S - - 1 = f2 (p1, g, Coutn-2) avec n - 1 t j < m - 1.
S - - 1 = f2 (p1, g, Coutn-2) avec n - 1 t j < m - 1.
Ainsi, les termes P et G sont définis de façon différente par rapport aux opérandes A et B, selon l'opération arithmétique choisie. Par contre, la relation donnée ci-dessus pour Sm - 1, n - 1 est toujours la même, de sorte que la détection de saturation est la même pour une addition, une soustraction et toutes les opérations pour lesquelles P et G peuvent être définis en fonction des opérandes A et B.
Le procédé de l'invention consiste donc à utiliser ces termes P et G pour déterminer un éventuel dépassement du résultat S. En effet, lorsque l'AU a déterminé ces termes P et G (étape E1), elle les transmet à l'unité d'évaluation 4 qui détermine s'il va y avoir dépassement en regardant si l'une des conditions de saturation est vérifiée.
Ces conditions de saturation basées sur les termes PH et GH sont déterminées à partir des conditions données précédemment sur AH et BH et en considérant que
En reprenant les hypothèses données précédemment sur AH et BH pour un processeur de traitement du signal DSP 950, on en déduit les conditions de saturation suivantes
Conditions de saturation positive . BH = 0 et AH > 0,
Si BH = 0 alors si AH > 0 alors
Conditions de saturation positive . BH = 0 et AH > 0,
Si BH = 0 alors si AH > 0 alors
<tb> PH <SEP> = <SEP> AH
<tb> <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 000000000
<tb> <SEP> a39 <SEP> = <SEP> 0
<tb> et <SEP> 3i <SEP> E <SEP> [38:31], <SEP> ai <SEP> = <SEP> 1
<tb>
alors : p39 = O et (#i#[38:31],p1 = 1) et g39 = 0 ; . BH = 01 et AH > 1,
Si BH = 0 alors si A, > 1 alors
<tb> <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 000000000
<tb> <SEP> a39 <SEP> = <SEP> 0
<tb> et <SEP> 3i <SEP> E <SEP> [38:31], <SEP> ai <SEP> = <SEP> 1
<tb>
alors : p39 = O et (#i#[38:31],p1 = 1) et g39 = 0 ; . BH = 01 et AH > 1,
Si BH = 0 alors si A, > 1 alors
<tb> <SEP> P9 <SEP> = <SEP> AH
<tb> <SEP> et <SEP> GH <SEP> = <SEP> AH
<tb> <SEP> a39= <SEP> 0
<tb> <SEP> #
<tb> et <SEP> #i <SEP> # <SEP> [38:32], <SEP> ai <SEP> = <SEP> 1
<tb>
alors : p39 = 1 et (#i#[38:32],gi = 1) et g39 = 0 ; . si BH = 0 et AH = 0 et Cout30 = 1, alors
<tb> <SEP> et <SEP> GH <SEP> = <SEP> AH
<tb> <SEP> a39= <SEP> 0
<tb> <SEP> #
<tb> et <SEP> #i <SEP> # <SEP> [38:32], <SEP> ai <SEP> = <SEP> 1
<tb>
alors : p39 = 1 et (#i#[38:32],gi = 1) et g39 = 0 ; . si BH = 0 et AH = 0 et Cout30 = 1, alors
<tb> PH <SEP> = <SEP> 0
<tb> et <SEP> GH <SEP> = <SEP> 0
<tb> alors : #i#[39:31],pi = 0 et g39 = 0
et Cout, = 1 . BH = -1 = et AH = +1 et Cout30 = 1,
<tb> et <SEP> GH <SEP> = <SEP> 0
<tb> alors : #i#[39:31],pi = 0 et g39 = 0
et Cout, = 1 . BH = -1 = et AH = +1 et Cout30 = 1,
<SEP> PH <SEP> = <SEP> AH
<tb> Si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
puisque AH = 1,
alors : (#i#[39:32],pi = 1) et g31 = 1 et Cout30 = 1.
<tb> Si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
puisque AH = 1,
alors : (#i#[39:32],pi = 1) et g31 = 1 et Cout30 = 1.
<SEP> PH <SEP> = <SEP> AH
<tb> si <SEP> BH <SEP> = <SEP> 0 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 000000000
<tb> a39 <SEP> = <SEP> 1
<tb> <SEP> si <SEP> AH <SEP> < <SEP> -2 <SEP> alors <SEP> #
<tb> et <SEP> #i <SEP> <SEP> # <SEP> <SEP> [32:32], <SEP> ai <SEP> = <SEP> 0
<tb> alors : P39 = 1 et #i3[38:32],pi = 0
et #i#[38:32],gi = 0 ; . BH = -1 et si AH < -1,
<tb> si <SEP> BH <SEP> = <SEP> 0 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 000000000
<tb> a39 <SEP> = <SEP> 1
<tb> <SEP> si <SEP> AH <SEP> < <SEP> -2 <SEP> alors <SEP> #
<tb> et <SEP> #i <SEP> <SEP> # <SEP> <SEP> [32:32], <SEP> ai <SEP> = <SEP> 0
<tb> alors : P39 = 1 et #i3[38:32],pi = 0
et #i#[38:32],gi = 0 ; . BH = -1 et si AH < -1,
<SEP> PH <SEP> + <SEP> AH
<tb> si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> GH <SEP> = <SEP> AH
<tb> a39 <SEP> = <SEP> a
<tb> <SEP> si <SEP> Ah <SEP> < <SEP> -1 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> #i <SEP> <SEP> #[38:31], <SEP> <SEP> a1 <SEP> = <SEP> 0
<tb>
alors g39 = 1 et #i#[38:31],gi = . BH = 0 et AH = -2 et Cout30 = 0,
<tb> si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> GH <SEP> = <SEP> AH
<tb> a39 <SEP> = <SEP> a
<tb> <SEP> si <SEP> Ah <SEP> < <SEP> -1 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> #i <SEP> <SEP> #[38:31], <SEP> <SEP> a1 <SEP> = <SEP> 0
<tb>
alors g39 = 1 et #i#[38:31],gi = . BH = 0 et AH = -2 et Cout30 = 0,
<SEP> PH <SEP> = <SEP> AH
<tb> si <SEP> BH <SEP> = <SEP> 0 <SEP> alors
<tb> <SEP> et <SEP> GH <SEP> = <SEP> 0
<tb> a31 <SEP> = <SEP> 0
<tb> <SEP> si <SEP> AH <SEP> = <SEP> -2 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> #i <SEP> <SEP> #[39:32], <SEP> <SEP> ai <SEP> = <SEP> 1
<tb> alors : (#i#[39:32],pi = 1) et p31 = 0 et g31 = 0
et Cout30 = 0 ; . BH = 01 et AH = -1 et Cout30 = 0,
<tb> si <SEP> BH <SEP> = <SEP> 0 <SEP> alors
<tb> <SEP> et <SEP> GH <SEP> = <SEP> 0
<tb> a31 <SEP> = <SEP> 0
<tb> <SEP> si <SEP> AH <SEP> = <SEP> -2 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> #i <SEP> <SEP> #[39:32], <SEP> <SEP> ai <SEP> = <SEP> 1
<tb> alors : (#i#[39:32],pi = 1) et p31 = 0 et g31 = 0
et Cout30 = 0 ; . BH = 01 et AH = -1 et Cout30 = 0,
<SEP> PH <SEP> + <SEP> AH
<tb> si <SEP> BH <SEP> = <SEP> 01 <SEP> alors
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
s AH = -1 alors #i#[39:31],ai = 1
alors : (#i#[39:31],gi = 1) et Cout30 = 0.
<tb> si <SEP> BH <SEP> = <SEP> 01 <SEP> alors
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
s AH = -1 alors #i#[39:31],ai = 1
alors : (#i#[39:31],gi = 1) et Cout30 = 0.
Dans le cas du microcontrôleur ST 10, on considère les hypothèses données précédemment. On en déduit alors les conditions de saturation positive suivantes si BH = -2 et AH > 2
ou si BH = -l et AH > 1
alors p39 = 1 et g32 = 1 et (p31) XOR (g31) = 1
ou p39 = 1 et #i#[38:33],gi=1 ; si BH = O et AH > 0
ou Si BH = 1 et AH > -1, ce qui correspond à
ou si BH = -l et AH > 1
alors p39 = 1 et g32 = 1 et (p31) XOR (g31) = 1
ou p39 = 1 et #i#[38:33],gi=1 ; si BH = O et AH > 0
ou Si BH = 1 et AH > -1, ce qui correspond à
BH <SEP> # <SEP> 0 <SEP> et <SEP> A <SEP> > <SEP> - <SEP> 1
<tb> #
<tb> <SEP> et <SEP> not <SEP> (BH <SEP> = <SEP> 0 <SEP> et <SEP> AH <SEP> - <SEP> 0)
<tb>
alors : p39 = O et g39 = 0
et NOT(#i#[38:31],pi = 0 et g31=0) ; si BH = -2 et AH = 2 et Cout30 = 1, ce qui correspond à
<tb> #
<tb> <SEP> et <SEP> not <SEP> (BH <SEP> = <SEP> 0 <SEP> et <SEP> AH <SEP> - <SEP> 0)
<tb>
alors : p39 = O et g39 = 0
et NOT(#i#[38:31],pi = 0 et g31=0) ; si BH = -2 et AH = 2 et Cout30 = 1, ce qui correspond à
<tb> <SEP> (#i <SEP> <SEP> #[39:32], <SEP> <SEP> pi <SEP> = <SEP> ai <SEP> et <SEP> gi <SEP> = <SEP> ai)
<tb> et <SEP> P31 <SEP> = <SEP> a31 <SEP>
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 0
<tb> <SEP> et <SEP> Cout30 <SEP> = <SEP> 1 <SEP>
<tb>
alors : (#i#[39:32], pi = 1) et p31 = O et g32 = 1
et g31 = O et Cout30 = 1 ; . BH = -1 et AH = 1 et Cout30 = 1,
<tb> et <SEP> P31 <SEP> = <SEP> a31 <SEP>
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 0
<tb> <SEP> et <SEP> Cout30 <SEP> = <SEP> 1 <SEP>
<tb>
alors : (#i#[39:32], pi = 1) et p31 = O et g32 = 1
et g31 = O et Cout30 = 1 ; . BH = -1 et AH = 1 et Cout30 = 1,
<tb> <SEP> PH <SEP> = <SEP> AH
<tb> Si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb> la condition devient
<tb> Si <SEP> BH <SEP> = <SEP> -1 <SEP> alors <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb> la condition devient
<tb> <SEP> P39 <SEP> = <SEP> 1
<tb> et <SEP> Vi <SEP> E <SEP> [38:32], <SEP> pi <SEP> = <SEP> 1
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 1
<tb> <SEP> et <SEP> Cout30 <SEP> = <SEP> 0
<tb>
alors : (#i#[39:32], pi = 1) et g31 = 1 et Cout30 = 1 ; . BH = O et AH = O et Cout30 = 1, quand AH = 0 et
<tb> et <SEP> Vi <SEP> E <SEP> [38:32], <SEP> pi <SEP> = <SEP> 1
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 1
<tb> <SEP> et <SEP> Cout30 <SEP> = <SEP> 0
<tb>
alors : (#i#[39:32], pi = 1) et g31 = 1 et Cout30 = 1 ; . BH = O et AH = O et Cout30 = 1, quand AH = 0 et
<tb> <SEP> PH <SEP> = <SEP> 0
<tb> BH <SEP> = <SEP> 0, <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 0
<tb>
alors : (#i#[39:31], pi = 0) et g39 = O et g31 = 0
et Cout30 = 1 ; . BH = 1 et AH = -1 et Cout30 = 1,
<tb> BH <SEP> = <SEP> 0, <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> 0
<tb>
alors : (#i#[39:31], pi = 0) et g39 = O et g31 = 0
et Cout30 = 1 ; . BH = 1 et AH = -1 et Cout30 = 1,
<tb> <SEP> PH <SEP> = <SEP> BH
<tb> quand <SEP> AH <SEP> = <SEP> -1,#
<tb> <SEP> et <SEP> GH <SEP> = <SEP> BH
<tb> quand AH = -1 et
<tb> quand <SEP> AH <SEP> = <SEP> -1,#
<tb> <SEP> et <SEP> GH <SEP> = <SEP> BH
<tb> quand AH = -1 et
<tb> <SEP> p39 <SEP> = <SEP> 1
<tb> BH <SEP> = <SEP> 1, <SEP> et <SEP> Vi <SEP> E <SEP> [38:32], <SEP> Pi <SEP> = <SEP> 1
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 1
<tb> alors : (#i#[39:32], pi = 1) et g31 = 1 et Cout30 = 1,
et les conditions de saturation négative . si BH = -2 et AH < 0
ou BH = -1 et AH < -1, ce qui correspond à
<tb> BH <SEP> = <SEP> 1, <SEP> et <SEP> Vi <SEP> E <SEP> [38:32], <SEP> Pi <SEP> = <SEP> 1
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 1
<tb> alors : (#i#[39:32], pi = 1) et g31 = 1 et Cout30 = 1,
et les conditions de saturation négative . si BH = -2 et AH < 0
ou BH = -1 et AH < -1, ce qui correspond à
<tb> <SEP> BH <SEP> < <SEP> 0
<tb> #et <SEP> <SEP> AH <SEP> < <SEP> 0
<tb> <SEP> et <SEP> not(BH <SEP> = <SEP> -1 <SEP> et <SEP> AH <SEP> = <SEP> -1) <SEP>
<tb>
alors : g39 = 1 et #i#[38:31], gi = 0 ; . BH = 0 et AH < -2,
<tb> #et <SEP> <SEP> AH <SEP> < <SEP> 0
<tb> <SEP> et <SEP> not(BH <SEP> = <SEP> -1 <SEP> et <SEP> AH <SEP> = <SEP> -1) <SEP>
<tb>
alors : g39 = 1 et #i#[38:31], gi = 0 ; . BH = 0 et AH < -2,
<SEP> PH <SEP> = <SEP> AH
<tb> quand <SEP> BH <SEP> = <SEP> 0 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> GH <SEP> = <SEP> 000000000
<tb> alors <SEP> #
<tb> et <SEP> #i <SEP> <SEP> # <SEP> <SEP> [38:32], <SEP> ai <SEP> = <SEP> 0
<tb>
alors : p39 = 1 et #i# [38:32], pi = 0
et #i#[38:32], gi = 0 ; . BH = 1 et AH < -3,
<tb> quand <SEP> BH <SEP> = <SEP> 0 <SEP> alors <SEP> #
<tb> <SEP> et <SEP> GH <SEP> = <SEP> 000000000
<tb> alors <SEP> #
<tb> et <SEP> #i <SEP> <SEP> # <SEP> <SEP> [38:32], <SEP> ai <SEP> = <SEP> 0
<tb>
alors : p39 = 1 et #i# [38:32], pi = 0
et #i#[38:32], gi = 0 ; . BH = 1 et AH < -3,
<tb> (#i <SEP> # <SEP> [39:32], <SEP> pi <SEP> = <SEP> ai <SEP> et <SEP> gi <SEP> = <SEP> 0)
<tb> <SEP> quand <SEP> BH <SEP> = <SEP> 1, <SEP> #
<tb> et <SEP> PH <SEP> = <SEP> a31 <SEP> et <SEP> g31 <SEP> = <SEP> a31
<tb> <SEP> AH <SEP> < <SEP> 0
<tb> <SEP> et <SEP> AH <SEP> # <SEP> -1
<tb> quand <SEP> AH <SEP> < <SEP> -3, <SEP> #
<tb> <SEP> et <SEP> AH <SEP> # <SEP> <SEP> -2
<tb> <SEP> et <SEP> AH <SEP> -3
<tb> alors : p39 = 1 et #i# [38:32], gi = 0
et not (#i# [38:32], pi = 1)
et not (#i#[38:33], pi = 1 et p32 = O et g31 = 1) . BH = -2 et AH = 0 et Cout30 = 0,
<tb> <SEP> quand <SEP> BH <SEP> = <SEP> 1, <SEP> #
<tb> et <SEP> PH <SEP> = <SEP> a31 <SEP> et <SEP> g31 <SEP> = <SEP> a31
<tb> <SEP> AH <SEP> < <SEP> 0
<tb> <SEP> et <SEP> AH <SEP> # <SEP> -1
<tb> quand <SEP> AH <SEP> < <SEP> -3, <SEP> #
<tb> <SEP> et <SEP> AH <SEP> # <SEP> <SEP> -2
<tb> <SEP> et <SEP> AH <SEP> -3
<tb> alors : p39 = 1 et #i# [38:32], gi = 0
et not (#i# [38:32], pi = 1)
et not (#i#[38:33], pi = 1 et p32 = O et g31 = 1) . BH = -2 et AH = 0 et Cout30 = 0,
<tb> <SEP> (#i <SEP> <SEP> # <SEP> <SEP> [39:32], <SEP> pi <SEP> = <SEP> ai <SEP> et <SEP> gi <SEP> = <SEP> ai)
<tb> quand <SEP> BH <SEP> = <SEP> -2, <SEP> #et <SEP> <SEP> p31 <SEP> = <SEP> a31
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 0
<tb>
quand AH = 0, #i#[39:31], ai = 0
alors : (#i# [39:32], pi = 1) et p31 = O et g31 = 0
et Cout30 = 0 ; . BH = -1 et AH = -1 et Cout30 = 0,
<tb> quand <SEP> BH <SEP> = <SEP> -2, <SEP> #et <SEP> <SEP> p31 <SEP> = <SEP> a31
<tb> <SEP> et <SEP> g31 <SEP> = <SEP> 0
<tb>
quand AH = 0, #i#[39:31], ai = 0
alors : (#i# [39:32], pi = 1) et p31 = O et g31 = 0
et Cout30 = 0 ; . BH = -1 et AH = -1 et Cout30 = 0,
<SEP> PH <SEP> = <SEP> AH
<tb> quand <SEP> BH <SEP> = <SEP> -1, <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
quand AH = -1 #i# [39:31], ai = 1
alors : (#i# [39:31], gi = 1) et Cout30 = 0 ; . si BH = 0 et AH = -2 et Cout30 = 0,
<tb> quand <SEP> BH <SEP> = <SEP> -1, <SEP> #
<tb> et <SEP> GH <SEP> = <SEP> AH
<tb>
quand AH = -1 #i# [39:31], ai = 1
alors : (#i# [39:31], gi = 1) et Cout30 = 0 ; . si BH = 0 et AH = -2 et Cout30 = 0,
<SEP> PH <SEP> = <SEP> AH
<tb> quand <SEP> BH <SEP> = <SEP> 0, <SEP> #
<tb> <SEP> quand <SEP> AH <SEP> = <SEP> -2, <SEP> <RTI ID=20.1
<tb> quand <SEP> BH <SEP> = <SEP> 0, <SEP> #
<tb> <SEP> quand <SEP> AH <SEP> = <SEP> -2, <SEP> <RTI ID=20.1
Quel que soit le mode de détermination de dépassement, le procédé de l'invention, consiste, si un dépassement est détecté, à fournir au multiplexeur une valeur de saturation positive VALSAT+ ou négative
VALSAT-.
avec VALSAT|+ = 2n-1-1
VALSAT ~2n-1
Si le format à ne pas dépasser est 32 bits, alors
VALSAT = FF 8 000 0000 h ;
et VALSAT = 00 7 FFF FFFF h.
VALSAT-.
avec VALSAT|+ = 2n-1-1
VALSAT ~2n-1
Si le format à ne pas dépasser est 32 bits, alors
VALSAT = FF 8 000 0000 h ;
et VALSAT = 00 7 FFF FFFF h.
Si aucun dépassement n'est détecté, l'unité d'évaluation 4 envoie au multiplexeur 2 un message
NON - SAT lui indiquant qu'il pourra charger le résultat S, dès que celui-ci aura été déterminé.
NON - SAT lui indiquant qu'il pourra charger le résultat S, dès que celui-ci aura été déterminé.
Claims (9)
1. Procédé de détermination d'un dépassement de format du résultat d'une opération arithmétique réalisée, par une unité arithmétique (AU), sur deux opérandes A et B et une retenue entrante Cin introduits en entrée de l'AU, caractérisé en ce qu'il est exécuté parallèlement au traitement effectué par l'AU sur les opérandes A et B, avant que le résultat de l'opération n'ait été déterminé par 1'AU.
2. Procédé de détermination d'un dépassement de résultat selon la revendication 1, dans lequel les opérandes A et B sont des nombres binaires de m bits et le format du résultat recherché S est de n bits (avec n < m), caractérisé en ce qu'il consiste
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés AH pour l'opérande A et BH pour l'opérande B et une retenue sortante Coutn2 de rang n-2 ; et
- à regarder si AH, BH et Coutn2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
3. Procédé de détermination d'un dépassement de résultat selon la revendication 2, caractérisé en ce que la condition de saturation positive est
AH + BH + Coutn-2 > 1, et la condition de saturation négative est
AN + BH + Countn-2 t -1, où Coutn-2 est la retenue sortante de rang n - 2 dans l'opération arithmétique de A, B et Cin.
4. Procédé de détermination d'un dépassement de résultat selon la revendication 3, caractérisé en ce que, A s'exprimant sur 40 bits et B sur 32 bits avec n = 32 et m = 40, les conditions de saturation positive sont
BH = O et AH > 0 ;
BH = - 1 et AH > 1
BH = O et AH = O et Cout30 = 1 ;
BH = -1 et AH = 1 et Cout30 = 1 ; et les conditions de saturation négative sont
BH = 0 et AH < -2 ;
BH = -1 et AH < -1 ;
BH = O et AH = -2 et Cout30 = O ;
BH = -l et AH = -l et Cout30 = 0.
5. Procédé de détermination d'un dépassement de résultat selon la revendication 3, caractérisé en ce que, A s'exprimant sur 40 bits et B sur 33 bits avec n = 32 et m = 40, les conditions de saturation positive sont
BH = -2 et AH > 2 ;
BH = -1 et AH > 1 ;
BH = O et AH > O ;
BH = 1 et AH > -1 ;
BH = -2 et AH = 2 et Cout30 = 1 ;
BH = -l et AH = 1 et Cout30 = 1 ;
BH = 0 et AH = 0 et Cout30 = 1
BH = 1 et AH = -1 et Cout30 = 1 ; et les conditions de saturation négative sont
BH = -2 et AH < O ;
BH = -1 et AH < -1 ;
BH = O et AH < -2 ;
BH = 1 et AH < -3 ;
BH = -2 et AH = O et Cout30 = 0 ;
BH = -1 et AH = -1 et Cout30 = 0 ;
BH = O et AH = -2 et Cout30 = O ;
BH = 1 et AH = -3 et Cout30 = 0.
6. Procédé de détermination d'un dépassement de résultat selon la revendication 1, dans lequel les opérandes A et B sont des nombres binaires de m bits et le format du résultat recherché est de n bits (avec n < m), caractérisé en ce qu'il consiste
- à déterminer des termes de propagation pi et des termes de génération gi définis chacun par une relation logique entre les composantes ai et bi des opérandes A et B ;
- à considérer uniquement les m - n + 1 bits de poids les plus forts, nommés PH pour les termes de propagation pi et GH pour les termes de génération gi, ainsi que la retenue sortante Coutn2 de rang n-2 ; et
- à regarder si PH, GH et Coutn-2 vérifient une condition de saturation et, si c'est le cas, à en déduire que le résultat S a une taille supérieure à n bits.
7. Procédé selon la revendication 6, caractérisé en ce que A, s'exprimant sur 40 bits et B sur 32 bits avec n = 32 et m = 40, les conditions de saturation positive sont
= = 1 et (#i#[39:42], pi = 1) et cout30 = 1 ;
p39 = 1 et g39 = O et #i# [38:32], gi = 1 ;
#i# [39:31], pi = O et g39 = O et Cout30 = 1 ;
p33 = O et (#i#[38:31], pi = 1) et g39 = 0 ; et les conditions de saturation négative sont
g39 = 1 et #i#[38:31], gi = O ;
#i# [39:31], gi = 1 et Cout30 = O ;
p39 = 1 et #i# [38:32], pi = O
et #i# [38:32], gi = O ;
(#i# [39:32], pi = 1) et g31 = O et Cout30 = 0
et p31 = 0.
8. Procédé selon la revendication 6, caractérisé en ce que, A s'exprimant sur 40 bits et B sur 33 bits avec n = 32 et m = 40, les conditions de saturation positive sont
p39 = 1 et g32 = 1 et (p31)XOR(g31) = 1 ;
p39 = 1 et #i# [38:33], gi = 1 p39 = = 0 et g39 = 0
et NOT (#i# [38:31], pi = O et g31 = 0) ;
(#i# [39:32], pi = 1) et p31 = O et g32 = 1
et g31 = O et Cout30 = 1 ;
(#i# [39:32], pi = 1) et g31 = 1
et Cout30 = 1 ;
(#i# [39:31], pi = 0) et g39 = O et g31 = 0
et Cout30 = 1, et les conditions de saturation négative sont
g39 = 1 et #i# [38:31], gi = 0 ;
p39 = 1 et #i# [38:32], pi = 0
et #i# [38:32], gi = O ;
p39 = 1 et #i# [38:32], gi = O
et not (#i# [38:32], pi = 1)
et not (#i# [38:33], pi = 1 et p32 = O et g31 = 1)
(#i# [39:32], pi = 1) et p31 = O et g31 = 0
et Cout30 = 0 ;
(#i# [39:31], gi = 1) et Cout30 = O ;
(#i# [39:33], pi = 1) et p32 = O et g32 = O
et g31 = 1 et Cout30 = 0.
9. Procédé selon l'une quelconque des revendications 1 à 8, caractérisé en ce qu'il consiste, lorsqu'il y a dépassement, à saturer le résultat à la valeur binaire 2n-1-1 pour une saturation positive d'un format de n bits et à la valeur -2n-1 pour une saturation négative d'un format de n bits.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9716360A FR2772946B1 (fr) | 1997-12-23 | 1997-12-23 | Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes |
US09/206,000 US6321248B1 (en) | 1997-12-23 | 1998-12-04 | Process for determining an overflow to the format of the result of an arithmetic operation carried out on two operands |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9716360A FR2772946B1 (fr) | 1997-12-23 | 1997-12-23 | Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2772946A1 true FR2772946A1 (fr) | 1999-06-25 |
FR2772946B1 FR2772946B1 (fr) | 2004-01-30 |
Family
ID=9515002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9716360A Expired - Fee Related FR2772946B1 (fr) | 1997-12-23 | 1997-12-23 | Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes |
Country Status (2)
Country | Link |
---|---|
US (1) | US6321248B1 (fr) |
FR (1) | FR2772946B1 (fr) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535900B1 (en) * | 1998-09-07 | 2003-03-18 | Dsp Group Ltd. | Accumulation saturation by means of feedback |
US7206800B1 (en) * | 2000-08-30 | 2007-04-17 | Micron Technology, Inc. | Overflow detection and clamping with parallel operand processing for fixed-point multipliers |
US20040167954A1 (en) * | 2003-02-21 | 2004-08-26 | Infineon Technologies North America Corp. | Overflow detection system for multiplication |
US8209366B2 (en) * | 2005-02-28 | 2012-06-26 | Hitachi Global Storage Technologies Netherlands B.V. | Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations |
US7734114B1 (en) | 2005-12-07 | 2010-06-08 | Marvell International Ltd. | Intelligent saturation of video data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0362124A (ja) * | 1989-07-28 | 1991-03-18 | Nec Ic Microcomput Syst Ltd | 加算回路 |
DE4125120A1 (de) * | 1991-07-30 | 1993-02-04 | Standard Elektrik Lorenz Ag | Binaerer akkumulator mit ueberlaufschutz |
JPH08212058A (ja) * | 1995-02-07 | 1996-08-20 | Nec Corp | 加算オーバフロ検出回路 |
EP0780759A1 (fr) * | 1995-12-22 | 1997-06-25 | Lucent Technologies Inc. | Elimination de retard de génération du drapeau de débordement mathématique dans un UAL |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5198993A (en) * | 1989-12-04 | 1993-03-30 | Matsushita Electric Industrial Co., Ltd. | Arithmetic device having a plurality of partitioned adders |
US5204832A (en) * | 1990-03-22 | 1993-04-20 | Matsushita Electric Industrial Co., Ltd. | Addition apparatus having round-off function |
KR100236533B1 (ko) * | 1997-01-16 | 2000-01-15 | 윤종용 | 배럴 쉬프터와 산술논리 연산기가 연결되어 있는 디지탈 신호 처리기 및 그 오버플로 검출방법 |
US5889689A (en) * | 1997-09-08 | 1999-03-30 | Lucent Technologies Inc. | Hierarchical carry-select, three-input saturation |
US6161119A (en) * | 1998-11-05 | 2000-12-12 | Microsoft Corporation | Hardware multiplication of scaled integers |
-
1997
- 1997-12-23 FR FR9716360A patent/FR2772946B1/fr not_active Expired - Fee Related
-
1998
- 1998-12-04 US US09/206,000 patent/US6321248B1/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0362124A (ja) * | 1989-07-28 | 1991-03-18 | Nec Ic Microcomput Syst Ltd | 加算回路 |
DE4125120A1 (de) * | 1991-07-30 | 1993-02-04 | Standard Elektrik Lorenz Ag | Binaerer akkumulator mit ueberlaufschutz |
JPH08212058A (ja) * | 1995-02-07 | 1996-08-20 | Nec Corp | 加算オーバフロ検出回路 |
US5745397A (en) * | 1995-02-07 | 1998-04-28 | Nec Corporation | Addition overflow detection circuit |
EP0780759A1 (fr) * | 1995-12-22 | 1997-06-25 | Lucent Technologies Inc. | Elimination de retard de génération du drapeau de débordement mathématique dans un UAL |
Non-Patent Citations (3)
Title |
---|
FINE R: "DSP MICROPROCESSOR OFFERS HIGH PERFORMANCE WITH MINIMAL DESIGN EFFORT", WESCON TECHNICAL PAPERS / CONFERENCE RECORD, vol. 30, 18 November 1986 (1986-11-18) - 20 November 1986 (1986-11-20), Los Angeles,Ca., USA., pages (31/1) 1 - 9, XP000121380 * |
PATENT ABSTRACTS OF JAPAN vol. 015, no. 218 (P - 1210) 4 June 1991 (1991-06-04) * |
SUZUKI K ET AL: "A 2.4-NS, 16-BIT, 0.5- M CMOS ARITHMETIC LOGIC UNIT FOR MICROPROGRAMMABLE VIDEO SIGNAL PROCESSOR LSIS", PROCEEDINGS OF THE CUSTOM INTEGRATED CIRCUITS CONFERENCE, SAN DIEGO, MAY 9 - 12, 1993, no. CONF. 15, 9 May 1993 (1993-05-09), INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS, pages 12.04.01 - 12.04.04, XP000409691 * |
Also Published As
Publication number | Publication date |
---|---|
US6321248B1 (en) | 2001-11-20 |
FR2772946B1 (fr) | 2004-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6009451A (en) | Method for generating barrel shifter result flags directly from input data | |
US5481489A (en) | Method of and apparatus for discriminating NaN | |
US5339266A (en) | Parallel method and apparatus for detecting and completing floating point operations involving special operands | |
US6789098B1 (en) | Method, data processing system and computer program for comparing floating point numbers | |
US4866652A (en) | Floating point unit using combined multiply and ALU functions | |
JPH10207693A (ja) | 浮動小数点演算ユニット | |
EP0577101B1 (fr) | Multiplicateur-accumulateur | |
FR2819073A1 (fr) | Microarchitecture d'unite arithmetique | |
EP0018298B1 (fr) | Procédé pour obtenir un résultat de calcul numérique en représentation au virgule flottante avec le nombre de chiffres significatifs exacts dans ce résultat et dispositif de calcul numérique mettant en oeuvre ce procédé | |
FR3095709A1 (fr) | Procédé et système de masquage pour la cryptographie | |
FR2772946A1 (fr) | Procede de determination d'un depassement de format du resultat d'une operation arithmetique realisee sur deux operandes | |
EP0760119B1 (fr) | Dispositif de mise en uvre numerique d'une operation de division | |
FR2718866A1 (fr) | Dispositif de calcul arithmétique et logique et procédé de commande. | |
JPH0343645B2 (fr) | ||
EP1071008B1 (fr) | Procédé pour effectuer une multiplication avec accumulation dans un corps de Galois. | |
FR3101983A1 (fr) | Détermination d'un bit indicateur | |
US6615228B1 (en) | Selection based rounding system and method for floating point operations | |
EP0426531B1 (fr) | Système de test d'un microprocesseur | |
EP1197875A1 (fr) | Methode d'operation conditionnelle de vecteur et dispositif correspondant | |
US6848043B1 (en) | Optimal redundant arithmetic for microprocessors design | |
EP1089175A1 (fr) | Système informatique sécurisé | |
US6381295B1 (en) | Shifter with overflow detection mechanism | |
JP3742745B2 (ja) | 演算処理装置 | |
EP4336344A1 (fr) | Unité de calcul pour opérations de multiplication et d'accumulation | |
EP4020162A1 (fr) | Opérateurs arithmétiques efficaces à virgule flottante à double trajet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CD | Change of name or company name | ||
ST | Notification of lapse |
Effective date: 20070831 |