FR 2720172 A1 19951124 FR 9406214 A 19940520 DISPOSITIF DE MISE EN OEUVRE NUMERIQUE D'UNE OPERATION DE DIVISION L'invention concerne un dispositif de mise en oeuvre numérique d'une opération de division adaptée à une méthode du type à non-restauration des restes partiels. Elle s'applique plus particulièrement au calcul de divisions binaires de nombres entiers ou fractionnels (virgule fixe). Elle s'applique tout particulièrement aux processeurs de traitement de signal. Le calcul de divisions binaires utilise principalement des opérations de comparaison et de soustraction. I1 doit par ailleurs tenir compte d'un certain nombre de problèmes, tel le format des opérandes (fractionnel ou entier), le signe du résultat, la survenance de résultats partiels nuls qui peuvent entrainer un résultat non valide, etc. En général, on utilise un registre pour le dividende que l'on appellera accumulateur, qui contient ensuite pour chaque pas de division, le reste calculé sur les bits de plus fort poids et le quotient sur les bits de plus faible poids, et un registre source pour le diviseur. Pour pouvoir traiter indifféremment des formats entiers ou fractionnels, signés ou non signés, on utilise une solution dite à non-restauration des restes partiels, basé sur le signe du résultat de la soustraction ou de l'addition du reste partiel et du diviseur. Comme son intitulé l'indique, les résultats partiels peuvent ne pas être justes : à un pas de division donné, si le bit de quotient calculé au pas d'avant est nul, comme on aura pourtant soustrait le diviseur, il faudrait ajouter le diviseur au reste partiel, pour retrouver le reste partiel juste. Pour chaque étape de la division, il faut calculer le nouveau quotient et le nouveau reste partiel. Plusieurs mises en oeuvre de l'algorithme dans un dispositif de calcul sont possibles. Dans l'invention, on s'intéresse à une mise en oeuvre utilisant le même registre contenant au départ le dividende, pour mémoriser les restes partiels successifs et le quotient tout au long de la division. Le reste est mémorisé sur les bits de poids le plus fort et le quotient sur les bits de poids le plus faible. Cette mise en oeuvre comprend les opérations successives suivantes, pour chaque pas de division i - Décalage du registre contenant le reste partiel et le quotient d'une position vers la gauche; - Introduction de l'inverse du bit de quotient complémenté calculé au pas i-l précédent sur la position la plus à droite du registre; - Calcul du reste partiel par addition ou soustraction du diviseur cadré sur les bits de poids fort du registre, selon la valeur binaire du bit de quotient complémenté calculé au pas i-l de division précédent; - Calcul du bit de quotient complémenté pour le pas i+l suivant, fonction du signe du nouveau reste partiel et du signe du diviseur. Ce processus continue jusqu'à ce que l'on ait effectué n décalages, en considérant que le diviseur à n bits de grandeur, et que l'on veuille obtenir un quotient de n bits de grandeur. Mais cet algorithme suppose qu'un certain nombre de conditions soient vérifiées, pour que le quotient final soit juste. En particulier, si lors d'un pas de division on a un reste partiel nul, le quotient obtenu après le dernier pas de division peut être faux. En effet, un nombre nul est considéré comme positif. Pour une division binaire, le signe du reste d'un pas i de division est comparé au signe du diviseur. On voit donc que si le diviseur est négatif, le reste nul qui est interprété comme positif est mal interprété, conduisant à une addition du diviseur et non à une soustraction au pas de division suivant. Le quotient final est donc faux. On le corrige en lui rajoutant un "l" sur la position la moins significative. De plus, la détection d'un reste partiel nul n'est pas évidente, car le reste et le quotient ont une taille variable : à chaque pas de division, le reste perd un bit, de grandeur tandis que le quotient en gagne un : ce sont donc des opérandes de taille variable, fonction du pas de division. Comme ils sont dans le même registre, il faudrait une circuiterie complexe pour suivre l'évolution de la taille du reste, en fonction du pas de division et déterminer sur combien de bits doit se faire le décodage de zéro. Comme autres conditions, il faut aussi que le dividende soit plus petit en valeur absolue que le diviseur, sinon la division n'est pas possible. En division signée, il faut aussi savoir si le diviseur et le dividende sont de même signe ou de signes opposés, pour rajouter ou non une unité sur la position la moins significative du quotient et corriger en conséquence le quotient, quand le diviseur et le dividende sont de signes opposés. Il faut donc traiter différentes conditions pour obtenir le bon résultat. Ceci est réalisé au moyen de routines dites d'exceptions fournies ou à écrire par l'utilisateur selon les besoins de son application (format, grandeur des nombres à traiter). Outre que ces routines sont couteuses en temps, il est aussi possible qu'elles ne traitent pas bien tous les cas, faute de ne pas suivre pas à pas la division : elles sont réalisées avant, pour vérifier que la division est possible ou après, pour éventuellement corriger le quotient obtenu. Pour simplifier la mise en oeuvre de l'algorithme, notamment le problème des restes partiels nuls, certains constructeurs de ces dispositifs de calcul, ont limité le format des opérandes en entrée. Par exemple, certains dispositifs ne travaillent que sur des opérandes positifs ou que sur des diviseurs positifs : on n'a plus le problème des diviseurs négatifs. Mais il faut d'autres routines, pour tester les signes et les mémoriser, et pour transformer les opérandes négatifs en opérandes positifs avant le calcul, et une routine pour rendre son bon signe au quotient après le calcul. Ils ont encore prévu un registre pour le reste et un registre pour le quotient, pour faciliter la détection du reste partiel nul, cette solution compliquant cependant la gestion de ces registres pour la division. Tous ces choix de registres, de routines d'exception, de mises au bon format et de correction du quotient augmentent le nombre de cycles instruction et donc le temps de calcul. Et si on veut avoir un reste final juste, il faut encore traiter différentes conditions pour déterminer si il est juste et le corriger le cas échéant. Un objet de l'invention est un dispositif de calcul comprenant des circuits pour détecter un reste nul en cours de division. Telle que revendiquée, l'invention concerne un dispositif de mise en oeuvre numérique d'une opération de division selon une méthode de type à nonrestauration de reste partiel, comprenant une unité arithmétique et logique pour calculer les restes partiels, caractérisé en ce qu'il comprend un circuit de détection d'un reste partiel nul au cours de la division. Selon l'invention, le diviseur ayant un format sur n bits, le reste partiel a un format sur p bits, p2n, cadrés sur les bits les plus significatifs d'un registre accumulateur. Le test du reste partiel au pas de division i est effectué après l'addition ou la soustraction au contenu de l'accumulateur du diviseur cadré sur les n bits les plus significatifs du reste, et consiste à tester si les n bits les plus significatifs du nouveau reste de positions (p-n) à (p-l) plus le bit moins significatif suivant de position (p-l-n) sont tous nuls, pour positionner à 1 un bit d'information indiquant un reste partiellement nul, ou à zéro sinon et, si ce bit d'information est déjà positionné à 1, à tester seulement le bit de position (p-l-n), pour maintenir à 1 le bit d'information, si il est nul, ou le remettre à 0, dans le cas contraire. Le terme reste partiellement nul, signifie que l'on sait seulement que les bits de poids forts testés du reste partiel calculé au pas de division i sont nuls, le test du bit de position (p-l-n) aux pas suivants de division permettant de vérifier, au fur et à mesure que le contenu du registre accumulateur est décalé vers la gauche, si les autres bits du reste partiel du pas i trouvé partiellement nul sont aussi nuls, permettant alors de savoir si le reste partiel du pas i était bien entièrement nul. Un autre objet de l'invention et de prendre en compte une seule fois les différentes conditions de correction du quotient. Selon l'invention, le dispostif comprend des circuits combinatoires pour calculer une correction à appliquer au quotient en fin de division. Selon l'invention, cette correction est avantageusement appliquée sur l'entrée de retenue de l'unité arithmétique et logique. Un autre objet de l'invention est de calculer à chaque pas de division le bit de quotient complémenté pour le pas suivant de division, pour l'introduire au moyen d'un multiplexeur en entrée de l'unité arithmétique et logique sur le bit le moins significatif du quotient. D'autres caractéristiques et avantages sont présentés dans la description qui suit, faite à titre indicatif et non limitatif de l'invention et en référence aux dessins annexés dans lesquels - la figure 1 représente un schéma-bloc d'un dispositif de mise en oeuvre d'une division binaire selon l'invention et - la figure 2 représente un schéma bloc de la fonction de détection de restes partiels nuls selon l'invention. Un schéma bloc d'un dispositif de calcul selon l'invention est représenté à la figure 1. Il comprend principalement une unité de traitement logique et arithmétique ALU commandée par une unité de commande 1. Dans l'exemple représenté, on a un dispositif de calcul à 40 bits dont 32 bits de grandeur significatifs et 8 bits d'extension. Les opérandes en entrée de l'unité arithmétique et logique ont ainsi 8 bits d'extension mis à zéro en représentation non signée ou reprenant le bit de signe en représentation signée. Le bit de signe des opérandes dans l'unité arithmétique et logique est donc donné par les bits en position 31 à 39 (pour des positions allant de 0 à 39). L'unité arithmétique et logique a deux entrées Opl et OP2 pour recevoir respectivement un opérande droit et un opérande gauche et une sortie Ops pour fournir le résultat d'une opération arithmétique ou logique. Les opérandes peuvent être de type signé ou non signé et au format long (32 bits de grandeur) ou court (16 bits de grandeur). Le type et le format des opérandes qui influent sur les opérations de calcul dans l'unité arithmétique et logique sont définis dans un registre de condition RC - SG pour le type signé (1) ou non signé (0) de l'opérande gauche, et SD pour l'opérande droit. - LG pour le format long (1) ou court (o) de l'opérande droit. Pour un format court, les opérandes sont cadrés à gauche, c'est à dire que le bit de poids le plus fort du nombre se retrouve sur le bit de position 31, (avec la convention déjà vue), les 16 bits de poids faible étant complétés par des zéros, et les 8 bits d'extension avec le bit de signe ou avec des zéros. L'unité arithmétique et logique délivre aussi des informations arithmétiques à savoir notamment les deux bits de report de plus fort poids C1, C2 et le bit de signe Sr du résultat. Les bits d'information Cl et Sr sont fournis à la fin du calcul au registre de condition RC. Dans l'exemple, le bit C1 est appliqué sur le bit C de retenue de ce registre et le bit Sr est appliqué sur le bit S de signe. Les bits C et S représentent à un moment donné des informations sur le dernier résultat calculé. C1, C2 et Sr sont aussi appliqués à un circuit conditionnel COND qui délivre d'autres bits d'information vers le registre de condition CR, dont un bit Z indiquant que les 32 bits significatifs du résultat en sortie de l'unité arithmétique et logique sont nuls et un bit de dépassement de capacité OVFC indiquant que le résultat dépasse le format utilisé. Ce circuit fournit sur une sortie 0p51 le résultat calculé par l'unité arithmétique et logique ou bien, en cas de détection de dépassement de capacité, une valeur saturée correspondant au maximum ou au minimum du format. Dans l'invention, ce circuit conditionnel reçoit aussi comme bits d'information, le bit de signe de l'opérande gauche g39 dans l'eexemple. Ce circuit conditionnel selon l'invention est détaillé plus loin, en référence à la figure 2. Selon l'invention, le bit Z a une autre signification en division : c'est le bit d'information de reste partiellement nul, calculé par ce même circuit de condition COND, comme on le verra plus loin. Les opérandes sont fournis à l'unité arithmétique et logique par des registres sources. Dans l'exemple, l'opérande gauche est fourni par un accumulateur Acc qui est aussi un registre destination de la sortie de l'unité arithmétique et logique, via le circuit conditionnel COND (sortie Opsl). L'opérande droit est fourni par un registre source noté Reg. Selon l'invention, entre les registres sources et l'entrée OP2 de l'unité arithmétique et logique, on a un décaleur D et un multiplexeur 2. Ce décaleur D est de préférence un registre à barillet et permet d'appliquer un décalage arithmétique ou logique d'un nombre quelconque de positions vers la droite ou vers la gauche du contenu d'un registre source, avant de l'appliquer sur une entrée d'opérande de l'unité arithmétique et logique, dans l'exemple, l'opérande gauche. Dans l'invention, se pourrait aussi être un décaleur plus simple permettant de faire au moins un décalage d'une position vers la gauche. Les bits en sortie de ce décaleur, notés bd0bd39, sont appliqués sur les bits g0-g39 de l'entrée de l'opérande gauche oP2. Plus précisément, les bits bdî bd39 sont appliqués directement sur les bits correspondants de l'opérande gauche. Selon l'invention, le bit bdg est appliqué en entrée du multiplexeur logique 2 qui reçoit comme autres entrées, un bit de comparaison de signe CS et un bit de quotient complémenté NQ, en provenance du registre de condition RC. Ce multiplexeur délivre un bit en sortie appliqué sur le bit g0 de l'opérande gauche. Selon l'invention, pour effectuer une division, on place le dividende dans l'accumulateur en entrée de l'unité arithmétique et logique avec décaleur, l'opérande gauche dans l'exemple, et le diviseur dans le registre source sur l'autre opérande, droit dans l'exemple. Selon l'invention, le bit de comparaison de signe CS du registre de condition RC est issu de différents circuits conditionnels utilisés pour la division, et peut représenter, selon l'étape de division concerné, le bit de comparaison de signe du dividende et du diviseur ou un bit de correction du quotient. Un premier circuit conditionnel 3 délivre un premier bit CS1, indiquant le signe différent (CS1=l) ou non (CS1=0) du diviseur (opérande droit) et du dividende (opérande gauche), qui sera utilisé pour déterminer le premier bit du quotient (bit de signe) et pour calculer la correction éventuelle du quotient. Dans un exemple de réalisation représenté sur la figure 1, il est constitué d'une porte logique OU exclusif qui reçoit en entrée le bit de signe de l'opérande gauche et le bit de signe de l'opérande droit. I1 délivre en sortie un premier bit de comparaison de signe noté CS1. Dans le cas choisi d'un dispositif de calcul avec bits d'extension, le bit de signe est donné, pour un nombre signé, par le bit le plus significatif (position 31 ici) et tous les bits d'extension (qui sont la recopie de ce bit 31). Dans le cas d'un nombre non signé, le signe est forcément positif, et le bit le plus significatif (position 31) ne représente plus le signe, mais une grandeur du nombre représenté, le nombre étant alors étendu jusqu'au bit 39 avec des zéros. Aussi, si on veut positionner le bit CS1 correctement dans tous les cas, on choisit un bit d'extension, par exemple les bits de position 39 de l'opérande gauche et droit. On peut aussi faire un ET logique entre le type signé ou non de l'opérande et le bit de position 31 pour obtenir le signe vrai de l'opérande dans tous les cas. C'est ce qui est représenté avec une porte ET 4 qui fournit le signe du diviseur sur l'opérande droit noté Sdiv, à partir du bit du type SD du registre de condition et le bit d31. Selon l'invention, un deuxième circuit conditionnel 5 délivre un deuxième bit CS2 qui représente la correction à appliquer au quotient à la fin de la division. Dans l'exemple, il comprend trois portes logiques 6 7 et 8. I1 reçoit en entrées, les bits Z, CS et le bit Sdiv qui indique comme on l'a vu le signe du diviseur, quel que soit son type signé ou non signé. Le bit Z représente dans ce cas le bit d'information de reste partiellement nul selon l'invention. La porte 6 est une porte ET logique qui reçoit comme entrées, ce bit Z et le bit Sdiv de signe du diviseur. La porte 7 est une porte ET logique qui reçoit ce même bit Z sur une entrée inverseuse et le bit de comparaison de signe CS du registre RC sur une entrée normale. La porte 8 est une porte OU qui reçoit en entrées, les sorties des portes 6 et 7 précédentes. Elle délivre un bit de sortie logique qui est le deuxième bit CS2 de correction du quotient. Un troisième bit CS3 est prévu, permettant à l'unité de commande 1 d'écrire directement si le dividende et le diviseur sont ou non de même signe, à la place du circuit 3 (ceci dans les cas où le signe du diviseur et du dividende sont préalablement connus). Les trois bits CS1, CS2 et CS3 sont appliqués sur un multiplexeur 9 dont la sortie permet de commuter l'un ou l'autre bit sur le bit CSC qui est mémorisé dans le bit CS du registre de condition RC. L'unité arithmétique et logique reçoit aussi un bit Cin qui permet d'appliquer ou non une retenue sur le bit de position la moins significative. En général et comme représenté, un multiplexeur Mux reçoit en entrée le bit de report C du registre de condition et un bit forcé à zéro, pour appliquer l'une ou l'autre entrée, selon que les opérations se font avec ou sans retenue dans l'unité arithmétique et logique. Selon l'invention, une entrée supplémentaire est prévue sur le multiplexeur Mux pour recevoir le bit CS2 de correction calculé par le circuit conditionnel 5 décrit précédemment. Enfin, le bit de quotient complémenté NQ du registre de condition est fourni par un circuit conditionnel 10, qui compare le signe du diviseur au signe du reste (après l'opération de soustraction ou d'addition du diviseur). Le signe du diviseur est donné comme on l'a déjà vu par le bit Sdiv, et le signe du reste concerné ici est fourni par le bit de signe du résultat calculé par l'unité arithmétique et logique, c'est à dire le bit Sr, en général correspondant au bit de position 39 du résultat (b39). Dans l'exemple représenté sur la figure 1, il comprend une porte 11 OU exclusif (XOR) qui reçoit en entrées le bit Sdiv et le bit Sr. La sortie de cette porte 11 donne le bit de quotient complémenté qui est mémorisé dans le bit NQ du registre de condition RC. Le circuit conditionnel COND selon l'invention va maintenant être détaillé en relation avec la figure 2. Il comprend une première partie comprenant des circuits 12 à 18 pour établir le bit Z représentant ou bien un résultat nul ou bien l'information de reste partiellement nul selon l'invention et une deuxième partie comprenant des circuits 19 à 22 pour établir le bit OVF représentant ou bien un dépassement de capacité ou bien une division impossible selon l'invention. La première partie reçoit les 16 bits les moins significatifs b0-b15 sur un premier circuit 12 de comparaison à zéro qui fournit un bit de sortie Z1 égal à 1, si tous les bits d'entrée sont égal à zéro, égal à 0 sinon. Les 16 bits suivants bl6 à b31 sont appliqués en entrée d'un deuxième circuit 13 de comparaison à zéro. I1 délivre un bit de sortie Zh égal à 1, si tous les bits d'entrée b16 à b31 sont égal à zéro, égal à 0 sinon. Les circuits 12 et 13 sont réalisés simplement au moyen par exemple de quatre portes NON OU, une pour quatre bits suivies d'une porte ET à quatre entrées (non représentées). Les deux bits Zh et Z1 sont appliqués en entrée d'une porte ET logique 14 qui délivre un premier bit Z1 qui indique si les bits significatifs du résultat bg à b31 calculé par l'unité arithmétique et logique sont tous nuls (Z1=l) ou pas (Z1=O). Selon l'invention, le circuit conditionnel élabore un autre bit Z4 au moyen de circuits logiques 15 à 17. Une porte ET logique 15 reçoit le bit Zh sur une entrée et le bit b15 sur une entrée inverseuse. Elle délivre une sortie logique Z2 égale à 1 si les bits b15 et b16 à b31 sont tous nuls, égale à zéro sinon. Une porte ET logique 16 reçoit sur une entrée le bit Z du registre de condition RC et reçoit le bit b15 du résultat en sortie de l'unité arithmétique et logique sur une entrée inverseuse. Elle délivre une sortie logique Z3 appliquée en entrée d'une porte OU 17, qui reçoit sur une deuxième entrée la sortie Z2 de la porte 15. Cette porte 17 délivre en sortie un bit de résultat , forcé à 1 si les bits b15 et b16 à b31 sont nuls, ou si le bit Z du registre de condition est égal à 1 et que le bit b15 est nul. Le bit Z4 est égal à zéro sinon. Enfin, la sortie Z1 du premier circuit de comparaison 12 est aussi utilisée, pour indiquer si le quotient résultat de la division exprimé sur les 16 bits de poids faibles est nul ou pas, ce qui permet, comme on le verra, de corriger le reste de la division. Ces trois bits Z1, Z4 et Z1 sont appliqués en entrée d'un multiplexeur 18 qui commande l'état du bit ZC qui est mémorisé dans le bit Z du registre de condition RC. Le circuit conditionnel comprend encore un circuit de saturation 19 qui reçoit principalement de l'unité arithmétique et logique les bits C1 et C2 de report de poids le plus fort et le bit de signe Sr pour déterminer si il y a dépassement de capacité et fournit un bit d'information OVF1 correspondant et éventuellement fournit une valeur saturée correspondante en sortie ( Psl) Selon l'invention, il comprend aussi un circuit logique pour déterminer si la division d'un dividende et d'un diviseur présentés en entrée de l'unité arithmétique et logique est possible ou non, c'est à dire si la valeur absolue du dividende est strictement inférieure à la valeur absolue du diviseur (en considérant les nombres comme étant exprimés dans le format fractionnel). I1 consiste à regarder si le résultat d'une soustraction, si les deux opérandes sont de même signe ou d'une addition si ils sont de signes opposés, est strictement négatif ou pas. Dans l'exemple, il comprend une première porte logique 20 de type NON OU exclusif qui reçoit en entrées les bits Sr du résultat en sortie de l'unité arithmétique et logique qui a effectuée l'addition ou la soustraction et le bit de signe de l'opérande gauche, dans l'exemple g39 et une deuxième porte logique 21 de type OU qui reçoit en entrée la sortie de la porte 20 et le premier bit Z1 qui indique un résultat nul. La sortie de la porte 21 fournit une information OVF2, qui, si elle vaut 1, indique qu'une division de l'opérande gauche par l'opérande droit n'est pas possible, le dividende n'étant pas strictement inférieur au diviseur (en valeur absolue). Un multiplexeur 22 est prévu qui commute l'un (OVF1) ou l'autre (OVF2) bit sur le bit OVFC qui est mémorisé dans le bit OVF du registre de condition RC. Tous les différents circuits décrits sont commandés par l'unité de commande 1 - l'unité arithmétique et logique, par une commande mALU, - le circuit conditionnel par une commande mCOND1 qui commande le multiplexeur 18 du circuit d'établissement du bit ZC et une commande mCOND2 qui commande le multiplexeur 22 du circuit d'établissement du bit OVFC. - le registre de condition RC par une commande mRC, qui permet à l'unité de commande d'écrire ce registre, tout ou partie des bits de condition précédement décrits. - le décaleur D par une commande mD, - le multiplexeur 2 sur l'entrée gauche de l'unité arithmétique et logique, par une commande m2, - le multiplexeur Mux pour appliquer une retenue sur l'unité arithmétique et logique par une commande mMux, - le multiplexeur 9, pour commander le bit CSC vers le bit CS du registre de condition, par une commande m9. Le procédé de commande du dispositif de l'invention peut alors être décrit, avec le diviseur dans le registre source, sur l'opérande droit et le dividende dans l'accumulateur, sur l'opérande gauche. L'unité de commande positionne les bits SD et SG exprimant le type signé des opérandes droit et gauche. I1 est à noter qu'il suffit d'en positionner un par exemple celui du diviseur, car on ne peut travailler que sur des opérandes de même type. Selon la représentation des figures 1 et 2, avec une unité arithmétique et logique de 40 bits dont 8 bits d'extension, le format des opérandes est de préférence le suivant : le dividende est exprimé sur 32 bits selon le format long (bit de format long LG positionné dans le registre de condition). Le diviseur a une grandeur exprimée sur 16 bits. Le bit de format court LD est donc positionné dans le registre de condition. I1 est mémorisé dans le registre Reg. On suppose que l'on effectue une division signée (SD=SG=1). Sur commande de l'unité de commande qui a lu préalablement les bits SD, LD, SG et LD, le dividende est chargé sur l'entrée gauche de l'unité arithmétique et logique, avec le bit de signe sur le bit de position 31, et extension du signe sur les bits 32 à 39. Le diviseur est chargé sur l'entrée droite de l'unité arithmétique et logique, sur les 16 bits de poids forts 16 à 31 avec les 16 bits (position 0 à 15) les moins significatifs mis à zéro (format court). Le signe est étendu sur les bits de position 32 à 39 (type signé). Selon l'invention, si on ne connaît pas le signe respectif des opérandes (dividende et diviseur), on exécute une première instruction de comparaison du signe, dont le but est de déterminer si les opérandes ont le même signe ou pas. L'unité de commande reçoit donc une instruction CMPS de comparaison des signes qui commande au multiplexeur 9 (commande m9) de commuter la sortie CS1 vers la sortie CSC du multiplexeur. Le bit CS1 est fourni par le OU exclusif des signes des opérandes. Si on connaît le signe des opérandes, l'unité de commande peut directement commuter le bit CS3 vers le bit CSc Le bit CSc est alors mémorisé dans le bit CS du registre de condition RC. Ensuite, on vérifie que la division est possible. En effet, pour mettre en oeuvre l'algorithme de division sans restauration des restes partiels, il faut que la valeur absolue du dividende soit strictement inférieure à la valeur absolue du diviseur (en considérant les nombres comme étant exprimés dans le format fractionnel). Selon l'invention, on utilise le bit de dépassement de capacité OVF dans le registre de condition pour indiquer une invalidité de la division, mais qui est calculé différemment pour la division comme on l'a vu (OVF2, figure 2, circuits 20 et 21). L'unité de commande qui reçoit l'instruction CHKDIV correspondante, lit le bit de comparaison de signe CS du registre de condition RC précédemment positionné, et si sa valeur est 1, indiquant des signes opposés des opérandes, elle commande à l'unité arithmétique et logique d'additionner les deux opérandes, et si sa valeur est zéro, de soustraire le diviseur (opérande droit) au dividende (opérande gauche). Ces opérations se font sans sortie du résultat vers l'accumulateur qui reste inchangé. Puis l'unité de commande envoie au multiplexeur 22 du circuit conditionnel COND une commande de commutation mCOND2 du bit OVF2 vers le bit OVFC qui est mémorisé dans le bit OVF du registre de condition. On a alors OVFC = OVF2 = (Sr g39) + Z1 (le signe ! indique qu'il faut prendre le complément). Le bit OVF mémorisé dans le registre RC est donc égal à 1 si le résultat sur les bits O à 31 est nul ou si le signe du résultat donné par le bit Sr en sortie de l'unité arithmétique et logique (et égal en pratique au bit b39 du résultat) et le signe du dividende sont identiques. Si la division est possible (OVF=0) on peut ensuite effectuer le premier pas de division. Selon l'invention, le premier pas de division consiste à calculer le bit de signe du quotient, à calculer le nouveau reste partiel (le premier reste partiel) et à calculer le bit de quotient complémenté NQ pour le pas suivant. On utilise pour cela une instruction DIVS, utilisée une seule fois pour effectuer la division signée. On peut déjà noter que l'on connaît le bit de signe du quotient, donné par le bit CS, positionné par CS1 ou directement par l'unité de commande. Sur réception de l'instruction DIVS, l'unité de commande effectue l NQ = (Sdiv) XOR Sr, c'est à dire que le bit de signe en division signée (où SD=1) est donné par le ou exclusif entre le bit de signe du diviseur et le bit de signe du nouveau reste partiel calculé Sr (bit b39). - enfin, envoi d'une commande mCOND1 sur le multiplexeur 18 du circuit conditionnel pour commuter le bit Z4 de reste partiellement nul sur le bit ZC qui est mémorisé dans le bit Z du registre de condition RC, révélant une occurrence de reste partiellement nul selon l'invention, sur ce premier pas de division. On peut alors passer aux pas de division suivants. Une fois le pas de division du calcul du bit de signe du quotient effectué, il faut calculer les bits suivants du quotient. Selon l'invention, on utilise pour cela une instruction notée DIVQ qui calcule le nouveau quotient partiel, puis le nouveau reste partiel, puis le bit de quotient complémenté NQ pour le pas suivant et enfin mémorise l'occurrence d'un reste partiellement nul ou la confirmation d'un reste partiellement nul précédent. Sur instruction DIVQ selon l'invention, l'unité de commande effectue alors les opérations suivantes - envoi d'une commande mD au déca leur pour décaler le contenu de l'accumulateur d'une position vers la gauche, avec transfert vers l'opérande gauche. - envoi d'une commande m2 au multiplexeur 2 pour commuter l'inverse du bit NQ du registre de condition sur le bit le moins significatif bg de l'opérande gauche. - envoi d'une commande mALU à l'unité arithmétique pour effectuer la soustraction ou l'addition du diviseur avec l'opérande gauche ainsi calculée, selon la valeur 0 ou 1 du bit NQ du registre de condition, avec sauvegarde du résultat dans l'accumulateur. - calcul du bit de quotient complémenté NQ dans le registre de condition, comme vu précédemment, pour le pas de division suivant. - mise à jour du bit Z du registre de condition avec le bit Z4 d'information de reste partiellement nul selon l'invention, par envoi d'une commande de commutation mCOND1 sur le multiplexeur 18 du circuit de condition. On rappelle que selon l'invention, on teste d'une part si les bits 15 et 16 à 31 qui sont les bits de poids forts du reste partiel sont tous nuls, pour positionner à 1 l'information de reste partiellement nul et on teste d'autre part le bit 15 avec le bit de reste partiellement nul déjà positionné à 1 pour vérifier, au fur et à mesure que le contenu du registre accumulateur est décalé vers la gauche, si les autres bits du reste partiel de poids plus faibles décalés progressivement vers les poids forts sont également nuls. Si ce n'est pas le cas, le bit d'information de reste partiellement nul est remis à zéro. En résumé, si au pas i, on trouve un reste partiellement nul, on teste ensuite à chaque pas suivant si le bit de poids plus faible décalé sur le bit 15 est nul ou pas. Si à un pas i+k, on trouve un bit 15 non nul, cela veut dire que le reste du pas i n'était pas entièrement nul. Parallèlement à ce test, on continue à chaque pas de tester si le nouveau reste partiel calculé est partiellement nul ou pas. A la fin de la division, le bit Z indique si il y a eu un reste partiel entièrement nul ou pas. La détection se fait donc tout au long de la division avec une mémoire de ce qui se passe, et la détection est interprétée à la fin de la division. On contrôle ainsi de manière judicieuse la nullité d'un opérande de taille variable. On notera qu'il ne peut se produire qu'un seul reste partiel nul au cours d'une division. Quand on a effectué un pas de division DIVS et quatorze pas de division DIVQ, la dernière instruction DIVQ donne donc le bit Z final qui montre si on a eu un reste partiel nul ou pas. I1 reste alors à corriger le quotient partiel pour obtenir le quotient final. Selon l'invention, on prend en compte en une seule fois toutes les conditions pour lesquelles il faut ajouter une unité sur la position la moins significative. Selon l'invention, on utilise le circuit conditionnel 5 pour calculer un bit cumulatif représentatif CS2 et on utilise l'entrée de retenue Cin de l'unité arithmétique et logique pour ajouter ce bit CS2 sur la position la moins significative du quotient, avec sauvegarde du résultat dans l'accumulateur. Un exemple de réalisation du circuit conditionnel a été décrit en relation avec la figure 1. La condition cumulative est donnée par : CS2 = (Sdiv.Z) + (!Z.CS). Ce bit combine les deux cas où l'on doit corriger le quotient : celui où le dividende et le diviseur sont de signes opposés, ce qui est donné par le bit CS du registre de condition et celui où le diviseur est négatif et qu'il y a eu au moins un reste partiel entièrement nul au cours de la division : dans ce cas en effet, le reste partiel a été considéré comme positif, ce qui a conduit à un bit NQ égal à 1, soit, un bit dans le quotient partiel égal à zéro au pas suivant. En fait, un reste nul doit être considéré comme de même signe que le diviseur et donc introduire pour le pas suivant un bit dans le quotient égal à 1 (NQ égal à 0). Dans les deux cas, la post-incrémentation du résultat corrige le quotient. L'unité de commande qui reçoit l'instruction de corriger le quotient RESQ effectue alors les commandes suivantes - envoi d'une commande mD au décaleur D pour qu'il charge comme opérande gauche le contenu de l'accummulateur décalé d'une position vers la gauche. - envoi d'une commande m2 au multiplexeur 2 pour qu'il commute l'inverse du bit NQ sur le bit le moins significatif de l'opérande gauche. - envoi d'une commande mMux sur le multiplexeur Mux pour commuter le bit CS2 du circuit conditionnel 5 sur l'entrée de retenue Cin de l'unité arithmétique et logique. - envoi d'une commande mALU sur l'unité arithmétique et logique pour qu'elle ajoute la retenue à l'opérande gauche et sauvegarde le résultat dans l'accumulateur. On a alors dans l'accumulateur le quotient juste, au format signé, sur les 16 bits de poids faibles. Le reste est exprimé sur les 24 autres bits. - envoi d'une commande m9 sur le multiplexeur 9 pour commuter le bit CS2 dans le bit CS du registre de condition. - envoi d'une commande mCONDl au multiplexeur 18 du circuit de condition 5 pour commuter le bit Z1 sur le bit Z du registre de condition, qui indique alors si le quotient corrigé est nul ou pas. L'instruction RESQ selon l'invention calcule donc les nouveaux bits Z et CS. On remarquera que le bit CS est inchangé, si il n'y a pas eu de détection de reste partiel. Le bit Z1 vaut 1 si les 16 bits de poids faible (quotient) du résultat de l'opération dans l'unité arithmétique et logique valent zéro. Cette condition sert à corriger le reste dans le cas où le quotient avant l'instruction RESQ ne comportait que des 1, et que CS2 valait 1 : le quotient vaut alors zéro, mais la propagation de la retenue entraîne que le reste partiel est modifié. La mise à jour du bit CS avec le bit CS2 sert aussi à corriger le reste partiel. Selon l'invention, on exécute une instruction de correction du reste partiel RESR. L'unité de commande effectue des tests sur les bits CS, NQ et Z du registre de condition. On a vu que le bit Z est donné par Z1 et sert à corriger une erreur due à la correction du quotient. Le bit CS lui contient le bit CS2 de correction du quotient. Le bit NQ lui contient le dernier bit de quotient complémenté calculé par la dernière instruction DIVQ (l'instruction RESQ ne modifie pas le bit NQ, l'unité de commande n'envoyant pas de commande mRC du bit NQ sur le registre de condition pour cette instruction). Si CS = NQ, l'unité de commande ne fait rien. Si CS=0 et NQ=1, l'unité de commande ajoute le diviseur au reste partiel. Pour cette opération, elle commande avantageusement le registre Reg qui contient le diviseur sur le décaleur auquel elle envoie une commande mD de décalage d'une position vers la gauche, pour obtenir deux fois le diviseur sur l'opérande gauche et envoie le contenu de l'accumulateur sur l'opérande droit (flèches en pointillés). Si CS=1 et NQ=0, l'unité de commande soustrait deux fois le diviseur à l'accumulateur. Dans ce dernier cas, l'unité de commande fait calculer à l'unité arithmétique et logique la somme de l'accumulateur (opérande droit) et du complément à 2 de deux fois le diviseur (opérande gauche) si Z=0, ou du complément 1 de deux fois le diviseur si Z=1 (effectivement, dans ce cas, l'incrémentation "+1" que l'on a dans le calcul du complément à 2 à déjà été faite dans l'instruction RESQ). Le résultat de l'unité arithmétique et logique est alors chargé dans l'accumulateur, mais seulement pour les 24 bits de poids le plus fort. Le quotient reste inchangé dans les 16 bits de poids le plus faible et le reste vrai se situe alors dans les 24 bits de poids le plus fort. La division signée qui vient d'être expliquée en relation avec le dispositif de mise en oeuvre selon l'invention concerne des opérandes au format fractionnel. Si les opérandes sont au format entier, on effectue avant un décalage du dividende d'une position vers la gauche, après que la comparaison de signe (CS) ait été effectuée. Le reste devra s'interpréter à la fin de la division comme étant le double du reste vrai. Par contre, la vérification que la division est possible, est effectuée après le décalage du dividende. En ce qui concerne la division non signée, il n'y a pas de signe bit. I1 faut quand même selon l'invention exécuter une instruction DIVS de calcul du signe du quotient, pour calculer le premier bit de quotient. Cette instruction génère un premier bit dans le quotient non significatif. Puis il faut exécuter 15 instructions DIVQ pour calculer les autres bits du quotient. On a donc une instruction DIVQ supplémentaire. Le quotient est maintenant exprimé sur 17 bits, mais le bit de poids 16 qui représente le bit de signe est ici non significatif. Le reste est alors représenté par les 23 bits de poids le plus fort. Le changement du mode de division signé au mode de division non signé se fait par modification du bit SD du registre de condition : SD=O indique que le diviseur est non signé et donc que Sdiv=O. Pour le dividende, il suffit que les 8 bits d'extension contiennent des 0. Dans le cas de la division non signée, il n'y a pas de différences selon que le format des opérandes est entier ou fractionnel, qui ne joue que sur l'interprétation du résultat au final. Avec le dispositif de mise en oeuvre selon l'invention et les différents circuits combinatoires et de multiplexage, on réalise avantageusement chacune des différentes instructions en un seul cycle. Et un utilisateur n'a plas à mettre en oeuvre des routines d'exception pour corriger le résultat, sauf à traiter le cas où la division est impossible (OVF2) Dans un exemple en division signée de nombre fractionnels, une division signée 32 bits par 16 nécessite 18 instructions élémentaires (CMPS, CHUDIV, DIVS, 14 fois DIVQ, RESQ), plus une éventuellement, si on veut corriger le reste, dans le cas où on en a besoin, pour d'autres calculs (il faut aussi rajouter une instruction pour initialiser le compteur de boucle DIVQ). Le quotient est exprimé sur 16 bits au final. On peut bien sûr choisir moins de bits de quotient (donc moins de pas de division DIVQ), si il n'est pas nécessaire d'avoir autant de précision. REVENDICATIONS 1. Dispositif de mise en oeuvre numérique d'une opération de division d'un dividende pour un diviseur selon une méthode du type à non-restauration de reste partiel, comprenant une unité arithmétique et logique pour effectuer le calcul des restes partiels, détection de restes partiels, caractérisé en ce qu'il comprend un circuit de détection de restes partiels nuls au cours de la division. 2. Dispositif selon la revendication 1, comprenant un accumulateur pour le dividende qui contient ensuite pour chaque pas de division, le reste sur les bits de plus forts poids et le quotient sur les bits de plus faibles poids, et un registre contenant les n bits significatifs du diviseur, caractérisé en ce que ledit circuit de détection met à jour un bit d'information (Z4) de reste partiellement nul à chaque pas de division, déterminé à un pas i de division par le test des n bits de poids le plus fort du reste partiel modifiés au pas i par la soustraction ou l'addition des n bits du diviseur, le test du bit suivant de poids plus faible non modifié, et le test du bit d'information de reste partiellement nul calculé au pas i-1. 3. Dispositif selon la revendication 2 comprenant - un registre de condition (RC) contenant des bits d'information sur la dernière opération arithmétique ou logique effectuée, - le registre source (Reg) en entrée d'un opérande droit (ou1) de l'unité arithmétique et logique, pour contenir les n bits du diviseur, - l'accumulateur en entrée de l'opérande gauche de l'unité arithmétique et logique pour contenir au premier pas de division les p bits du dividende, p étant au moins égal à n, et pour contenir aux pas suivants le reste partiel sur p-m bits significatifs de plus forts poids et le quotient partiel sur m bits significatifs de plus faibles poids, m variant avec le nombre de pas de division effectués, le calcul du reste partiel pour chaque pas de division comprenant un décalage d'une position vers le plus fort poids du contenu de l'accumulateur, avec introduction du bit de quotient en position 0, dans l'opérande gauche, l'unité arithmétique et logique effectuant une addition ou une soustraction sur le contenu de l'opérande gauche des n bits du diviseur cadrés sur les n bits de poids le plus fort de l'opérande gauche, caractérisé en ce que le circuit de détection de restes partiels nuls comprend un premier circuit combinatoire (15) pour détecter, à un pas i de division, si les p+l bits significatifs de poids le plus fort (poids (p-n) à (p-1) et (p-n-l)) de l'opérande gauche sont tous nuls, pour mettre une première sortie logique (Z4) à 1 ou à 0 sinon et un deuxième circuit combinatoire (16) pour détecter, lorsque ledit bit d'information (24) de reste partiellement nul mis à jour au pas (i-1) précédent indique un reste nul, si le bit de poids (p-n-l) est nul et pour mettre une deuxième sortie logique (Z3) à 1 ou à 0 sinon, et une porte OU (17) entre la première sortie logique (Z2) et la deuxième sortie logique (Z3), délivrant en sortie le bit de détection de reste partiellement nul (Z4) de ce pas i de division. 4. Dispositif selon la revendication 3, caractérisé en ce que le circuit de détection comprend un circuit combinatoire (12) pour détecter si les p-n-l bits de poids faibles sont tous nuls ou pas, pour déterminer si le quotient final est nul ou pas, positionnant une sortie logique (Z1) à un ou à zéro. 5. Dispositif selon la revendication précédente, caractérisé en ce que le bit d'information (Z4) de reste partiellement nul est mémorisé dans un bit de détection de zéro (Z) du registre de condition, et en ce que le dispositif comprend un premier multiplexeur (18) recevant en entrée la sortie (Z1) d'un circuit de détection d'un résultat nul en sortie de l'unité arithmétique et logique, la sortie (Z4) de détection d'un reste partiellement nul et la sortie (Z1) de détection de p-n-1 bits de poids faibles nuls et délivrant en sortie le bit Z c devant être mémorisé dans ledit bit (Z) de détection de zéro du registre de condition (RC). 6. Dispositif selon la revendication 5, caractérisé en ce qu'il comprend en outre un circuit combinatoire (3) pour déterminer si deux opérandes de type signé en entrée de l'unité arithmétique et logique ont le même signe ou non et mettre à 1 ou à O un bit de comparaison de signe correspondant (CS) dans le registre de condition (RC). 7. Dispositif selon la revendication 6, caractérisé en ce qu'il comprend un autre circuit combinatoire (10), pour déterminer à chaque pas de division i le bit de quotient complémenté (NQ) pour le pas de division i+l suivant, comprenant une porte logique ou exclusif (11) recevant en entrées le bit de signe du diviseur (Sdiv) et le bit de signe du reste partiel calculé à ce pas i de division et délivrant en sortie le bit de quotient complémenté (NQ) vers le registre de condition (RC). 8. Dispositif selon la revendication 7, caractérisé en ce qu'il comprend au moins un décaleur (D) pour effectuer le décalage d'une position vers la gauche du contenu de l'accumulateur et un multiplexeur (2), le multiplexeur recevant en entrées le bit le moins significatif en sortie du décaleur, et les bits de comparaison de signe (CS) et de quotient complémenté (NQ) contenus dans le registre de condition (CR), et délivrant en sortie le bit le moins significatif (g0) de la dite entrée de l'unité arithmétique et logique. 9. Dispositif selon la revendication 8, caractérisé en ce qu'il comprend un autre circuit combinatoire pour déterminer un bit de correction (CS2) du quotient en fin de division en fonction du bit de signe (Sdiv) du diviseur, du bit d'information de reste partiellement nul (Z=Z4) calculé au dernier pas de division et du bit de comparaison de signe (CS), comprenant une première porte ET logique entre le bit d'information Z de reste partiel nul et le bit de signe du diviseur, une deuxième porte ET logique entre l'inverse du bit d'information de reste partiel nul et le bit de comparaison de signe, et une porte OU recevant la sortie de chacune des portes logiques et délivrant en sortie le bit de correction du quotient. 10. Dispositif selon la revendication 9, l'unité arithmétique et logique ayant une entrée de retenue (Cin) pour ajouter un bit de retenue sur le bit le moins significatif dans l'unité arithmétique et logique, caractérisé en ce qu'il comporte un multiplexeur (MUX) recevant en entrées au moins un bit de retenue (C) du contenu dans le registre de condition (RC), et ledit bit de correction CS2, pour appliquer ce dernier bit comme retenue sur l'unité arithmétique et logique, sur instruction de correction du quotient.