FR 2694467 A1 19940204 FR 9208617 A 19920710 La présente invention concerne un procédé pour échanger des données numériques avec un opérateur asynchrone L'invention vise également un registre numérique pour la mise en oeuvre de ce procédé, ainsi qu'une unité de calcul comportant de tels registres. Un objectif principal de l'évolution des technologies utilisées dans les circuits intégrés est d'augmenter les vitesses de traitement Ces circuits sont souvent pilotés par des horloges à quartz dont la fréquence est limitée en pratique Aujourd'hui, piloter un circuit intégré avec un quartz de fréquence propre supérieure à 25 M Hz n'est pas une solution réaliste pour des raisons de coût. Cette fréquence d'horloge peut être le facteur limitant les performances du circuit en termes de cadence de traitement Ainsi, le circuit peut comporter des opérateurs asynchrones, arithmétiques et/ou logiques, pouvant atteindre des cadences d'échange de données, en entrée et en sortie, supérieures à la fréquence de l'horloge à quartz utilisée pour les piloter Les possibilités de ces opérateurs sont donc sous-exploitées. Au vu de ce qui précède, le but de la présente invention est d'augmenter les cadences de traitement d'unités de calcul, arithmétiques et/ou logiques, comportant un ou plusieurs opérateurs asynchrones et pilotées par des signaux d'horloge de fréquence donnée ou, en d'autres termes, de proposer un procédé pour faire fonctionner une unité de calcul à une cadence donnée en utilisant une horloge de fréquence moindre. Suivant l'invention, ce but est atteint par un procédé pour échanger des données numériques comportant au moins un bit avec un opérateur asynchrone au moyen d'un registre numérique, caractérisé en ce que ce registre numérique comprend, pour chaque bit, deux bascules montées en parallèle, chacune de ces deux bascules comportant respectivement une cellule de mémoire, un moyen de chargement pour inscrire dans la cellule de mémoire une valeur du bit, et un moyen de lecture pour fournir la valeur du bit inscrite dans la cellule de mémoire, en ce que les moyens de chargement et les moyens de lecture des deux bascules sont activés et désactivés de façon cyclique à une même fréquence d'horloge, en ce que les moyens de lecture respectifs des deux bascules sont activés de façon sensiblement alternée, et en ce que le moyen de lecture de chaque bascule est désactivé pendant que le moyen de chargement de cette bascule est activé. L'agencement parallèle des bascules comportant les cellules de mémoire permet d'échanger des données numériques avec l'opérateur à une cadence qui est le double de la fréquence d'horloge Au cours de chaque période de l'horloge, deux valeurs successives de chaque bit sont inscrites respectivement dans les deux cellules de mémoire montées en parallèle Ces deux valeurs sont ensuite fournies à la sortie du registre avec un décalage temporel d'une demi-période et à une cadence égale au double de la fréquence d' horloge. Un second aspect de l'invention vise un registre numérique pour la mise en oeuvre du procédé ci-dessus Ce registre numérique, pour échanger des données numériques comportant au moins un bit avec un opérateur asynchrone, est caractérisé en ce qu'il comprend, pour chaque bit, deux bascules montées en parallèle, chacune de ces deux bascules comportant respectivement une cellule de mémoire, un moyen de chargement pour inscrire dans la cellule de mémoire une valeur du bit, et un moyen de lecture pour fournir la valeur du bit inscrite dans la cellule de mémoire, et en ce que les moyens de chargement et les moyens de lecture des deux bascules sont agencés pour être activés et désactivés de façon cyclique à une même fréquence d'horloge de façon telle que les moyens de lecture respectifs des deux bascules soient activés de façon sensiblement alternée et que le moyen de lecture de chaque bascule soit désactivé pendant que le moyen de chargement de cette bascule est activé. Ce registre numérique peut être placé soit en entrée soit en sortie de l'opérateur asynchrone. Le troisième aspect de l'invention vise une unité de calcul, comprenant un opérateur asynchrone, au moins un registre d'entrée, et un registre de sortie, caractérisée en ce que chaque registre d'entrée et le registre de sortie sont des registres numériques du type mentionné ci- dessus. D'autres particularités et avantages de la présente invention apparaîtront dans la description ci- après d'exemples de réalisation préférés et non limitatifs, lue conjointement aux dessins annexés, dans lesquels: la figure 1 est un schéma d'une unité de calcul selon l'invention; la figure 2 est un schéma d'un élément de registre numérique selon l'invention, faisant partie de l'unité de calcul de la figure 1; la figure 3 représente des chronogrammes illustrant le fonctionnement de l'unité de calcul de la figure 1; la figure 4 est un schéma d'une autre forme de réalisation de l'unité de calcul selon l'invention; et la figure 5 représente des chronogrammes illustrant le fonctionnement de l'unité de calcul de la figure 4. En référence à la figure 1, une unité de calcul 1 selon l'invention comprend un opérateur asynchrone OP. L'opérateur OP peut être un opérateur arithmétique et/ou logique L'unité de calcul 1 est reliée avec l'extérieur par l'intermédiaire de deux bus d'entrée BE 1, BE 2, et d'un bus de sortie BS Dans l'exemple représenté, l'unité de calcul 1 comprend deux registres d'entrée El, E 2 reliés respectivement aux bus d'entrée BE 1, BE 2, et alimentant l'opérateur OP par l'intermédiaire de deux bus B 51, B 52. L'unité de calcul 1 comprend en outre un registre de sortie S relié au bus de sortie BS, et recevant des données de l'opérateur OP par l'intermédiaire d'un bus BR. L'opérateur OP reçoit deux opérandes par l'intermédiaire des registres d'entrée El, E 2, et délivre un résultat par l'intermédiaire du registre de sortie S. Les deux opérandes et le résultat sont des données numériques comportant chacun un certain nombre de bits. Chacun des registres El, E 2, S est constitué par un agencement parallèle d'éléments de registre du type représenté à la figure 2, un élément de registre correspondant à chaque bit. En référence à la figure 2, chaque élément de registre selon l'invention comprend un couple de bascules 2, 12 montées en parallèle entre l'entrée IN et la sortie OUT de l'élément de registre Chacune de ces deux bascules 2, 12 comporte respectivement une cellule de mémoire 3, 13, un moyen de chargement 4, 14 pour inscrire dans la cellule de mémoire 3, 13 une valeur du bit, et un moyen de lecture , 15 pour fournir la valeur du bit inscrite dans la cellule de mémoire 3, 13 Chacune des cellules de mémoire 3, 13 comporte, de façon connue, un inverseur 6, 16, et un inverseur résistif 7, 17 dont l'entrée est reliée à la sortie de l'inverseur 6, 16, et dont la sortie est reliée à l'entrée de l'inverseur 6, 16. De façon connue, le moyen de chargement 4, 14 de chaque bascule 2, 12 est constitué par un interrupteur comprenant un transistor à effet de champ à canal N et un transistor à effet de champ à canal P dont le circuit source/drain est monté en parallèle avec celui du transistor à effet de champ à canal N Le moyen de lecture 5, 15 de chaque bascule 2, 12 a une structure identique à celle du moyen de chargement 4, 14. Comme les cellules de mémoire 3, 13 sont inverseuses, les deux bascules 2, 12 sont reliées à la sortie OUT de l'élément de registre par l'intermédiaire d'un inverseur 20. Les moyens de chargement 4, 14 et les moyens de lecture 5, 15 des deux bascules 2, 12 sont activés et désactivés de façon cyclique à une même fréquence d'horloge F = 1/T L'horloge à quartz (non représentée) délivre un signal d'horloge HO de fréquence F et de rapport cyclique 0,5 Par l'intermédiaire d'une simple porte inverseuse, on peut obtenir un second signal d'horloge NHO, qui est le complémentaire du premier signal d'horloge HO Le premier signal d'horloge HO est adressé à la grille du transistor à effet de champ à canal N du moyen de chargement 4 de la première bascule 2, à la grille du transistor à effet de champ à canal P du moyen de lecture 5 de la première bascule 2, à la grille du transistor à effet de champ à canal P du moyen de chargement 14 de la seconde bascule 12, et à la grille du transistor à effet de champ à canal N du moyen de lecture 15 de la seconde bascule 12 Le signal d'horloge complémentaire NHO est adressé à la grille du transistor à effet de champ à canal P du moyen de chargement 4 de la première bascule 2, à la grille du transistor à effet de champ à canal N du moyen de lecture 5 de la première bascule 2, à la grille du transistor à effet de champ à canal N du moyen de chargement 14 de la seconde bascule 12, et à la grille du transistor à effet de champ à canal P du moyen de lecture 15 de la seconde bascule 12. Ainsi, le moyen de chargement 4 de la première bascule 2 et le moyen de lecture 15 de la seconde bascule 12 sont activés lorsque le premier signal d'horloge HO est à l'état haut Le moyen de lecture 5 de la première bascule 2 et le moyen de chargement 14 de la seconde bascule 12 sont activés lorsque le second signal d'horloge NHO est à l'état haut. Comme les signaux d'horloge HO, NHO sont complémentaires l'un de l'autre, les moyens de lecture respectifs 5, 15 des deux bascules 2, 12 sont activés de façon alternée, et le moyen de lecture 5, 15 de chaque bascule 2, 12 est désactivé pendant que le moyen de chargement 4, 14 de cette bascule est activé. Les chronogrammes de la figure 3 illustrent le fonctionnement de l'unité de calcul 1 de la figure 1 lorsque les opérandes sont fournis sur les bus d'entrée BE 1, BE 2 à une cadence égale au double de la fréquence d'horloge F Les deux premières lignes de la figure 3 représentent les signaux d'horloge complémentaires HO, NHO, et la troisième ligne représente les valeurs El(i), E 2 (i) des opérandes reçues successivement sur les bus d'entrée BE 1, BE 2 A chaque front descendant du signal d'horloge HO, les valeurs des opérandes sont mémorisées pour une demi- période T/2 dans les cellules de mémoire 3 des premières bascules 2 Pendant cette demi-période (TO à l'état bas, NHO à l'état haut), les moyens de lecture 5 des premières bascules 2 sont activés, de sorte que ces valeurs Sl(i), 52 (i) des opérandes sont fournies à l'opérateur OP par l'intermédiaire des bus B 51, B 52 A la fin de cette demi- période (front montant du signal HO), les valeurs des opérandes sont mémorisées pour la demi-période suivante dans les cellules de mémoire 13 des secondes bascules 12. Pendant la demi-période suivante, les moyens de lecture 15 des secondes bascules 12 sont activés (HO à l'état haut, NHO à l'état bas), et les valeurs des opérandes sont fournies à l'opérateur OP par l'intermédiaire des bus B 51, B 52 Les valeurs Sl(i), 52 (i) des opérandes sont donc fournies sur les bus B 51 B 52 comme l'indique la quatrième ligne de la figure 3 Avec un certain retard inférieur à une demi-période, l'opérateur OP délivre les résultats R(i) sur le bus BR, comme l'indique la cinquième ligne de la figure 3 Ces résultats sont ensuite adressés au bus de sortie BS (dernière ligne de la figure 3) après être passés par le registre de sortie S qui fonctionne comme les registres d'entrée El, E 2. L'invention permet donc de faire fonctionner l'opérateur OP avec des cadences d'échange de données en entrée et en sortie égales au double de la fréquence d'horloge F On peut ainsi, pour un opérateur ayant une cadence de traitement donnée, utiliser comme horloge un quartz dont la fréquence propre est égale à la moitié de cette cadence. Un autre exemple de réalisation de l'invention est illustré à la figure 4 Dans cet exemple, l'unité de calcul 21 comprend un opérateur de multiplication 4 x 4 non signé qui, toutes les demi-périodes d'horloge, doit multiplier deux opérandes A, B comportant chacun quatre bits pour former un produit P = A x B comportant huit bits. Cette multiplication s'écrit A 3 A 2 A 1 A O x B 3 B 2 Bl B O _____ P 8 P 7 P 6 P 5 P 4 P 3 P 2 Pl P 0, o les Ai, Bi, Pl désignent respectivement les valeurs des bits des opérandes A, B et du produit P. Pour réaliser cette multiplication, on doit déterminer quatre produits partiels: P Pl = O O O O A 3 A 2 A 1 A O si B O = 1, 0 O O O O O O O si B O = 0, PP 2 = O O O A 3 A 2 A 1 A O O si Bl = 1, 0 O O O O O O O si Bl = 0, PP 3 = O O A 3 A 2 A 1 A OO O si B 2 = 1, 0 O O O O O O O si B 2 = 0, PP 4 = O A 3 A 2 A 1 A O O O O si B 3 = 1, 0 O O O O O O O si B 3 = 0. et les additionner: P = A x B = PP 4 + (PP 3 + (PP 2 + PP 1)). Si le temps nécessaire pour réaliser ces trois additions est supérieur à une demi-période d'horloge T/2, on peut scinder le multiplieur en deux modules asynchrones montés en cascade et réaliser une opération à chevauchement d'instructions, ou "pipelinée" (détermination de PP 1, PP 2 et calcul de Pl = P Pl + PP 2 pendant une demi-période; détermination de PP 3, PP 4 et calcul de P 3 = (Pl + PP 3) + PP 4 pendant la demi-période suivante). On utilise alors une unité de calcul telle que celle représentée à la figure 4 Les opérandes A, B sont adressés à l'unité de calcul 21 par l'intermédiaire des bus d'entrée BE 1 l 0:3 l, BE 2 l 0:3 l comportant chacun quatre conducteurs Le produit P est fourni par l'unité de calcul 21 sur le bus de sortie BS l 0:7 l ayant huit conducteurs. Les registres d'entrée REG A, REG B pour le stockage des opérandes A, B sont constitués chacun par quatre couples de bascules parallèles du type représenté à la figure 2 Les quatre bits de l'opérande A sont adressés au premier module MULTI par un bus à quatre conducteurs A l 0:3 l, et les deux bits de poids faible de l'opérande B sont adressés au module MULT 1 par le bus à deux conducteurs B l 0:1 l Le premier module MULT 1 calcule les produits partiels P Pl et PP 2, ainsi que la somme (P Pl + PP 2) = Pi Cette somme Pl, codée sur huit bits, est délivrée par le module MULT 1 sur le bus à huit conducteurs Pl l 0:71. Entre les deux modules successifs montés en cascade MULT 1, MULT 2, est disposé un registre tampon Tl Ce registre tampon Ti est un registre numérique constitué de dix (= 8 + 2) couples de bascules parallèles du type représenté à la figure 2 Les huit premiers couples de bascules parallèles du registre Tl servent au stockage temporaire des huit bits de la somme partielle Pl fournie par le premier module MULT 1, et les deux derniers couples de bascules parallèles du registre Ti servent au stockage temporaire des deux bits de poids fort de l'opérande B, qui lui sont adressés par le bus à deux conducteurs B l 2:31 relié au registre d'entrée REG B (les deux bits de poids fort de l'opérande B sont nécessaires seulement pour calculer les produits partiels PP 3, PP 4) Les valeurs des bits stockés dans le registre tampon Tl sont fournies au second module MULT 2 par l'intermédiaire d'un bus à huit conducteurs Pl R l 0:71 et d'un bus à deux conducteurs BR l 2:3 l Le second module MULT 2 calcule les produits partiels PP 3, PP 4 puis les sommes P 2 = (Pl + PP 3) et P 3 = (P 2 + PP 4) Le nombre P 3 codé sur huit bits correspond au produit des deux opérandes A, B Ce produit est adressé au registre de sortie REG P par l'intermédiaire d'un bus à huit conducteurs P 3 l 0:7 l. Les registres d'entrée REG A, REG B, le registre tampon Tl, et le registre de sortie REG P sont tous constitués par des couples de bascule parallèle du type représenté à la figure 2 et sont tous activés par les mêmes signaux d'horloge HO. L'unité de calcul 21 permet de calculer les produits des opérandes A, B à une cadence égale au double de la fréquence d'horloge F des signaux HO On réalise ainsi un multiplieur pouvant atteindre, par exemple, une cadence de 40 M Hz avec une fréquence d'horloge de 20 M Hz (il n'existe pas actuellement de quartz oscillant à M Hz). Les valeurs présentes sur les différents bus de l'unité de calcul 21 sont représentées sur les chronogrammes de la figure 5 A un instant donné, le module MULTI calcule la somme partielle Pl avec les opérandes i, alors que le module MULT 2 calcule le produit global P 3 des opérandes i 1 Pour calculer le produit de deux valeurs données des opérandes A, B, il y a un décalage d'une demi- période T/2 entre le calcul de la somme partielle Pl (module MULT 1) et le calcul définitif du produit global P 3 (module MULT 2) Ce retard est assuré par le registre tampon Tl. Bien qu'on ait décrit l'invention en référence à des exemples de réalisation préférés, on comprendra que ces exemples ne sont pas limitatifs et que diverses modifications peuvent leur être apportées sans sortir du cadre de l'invention. Ainsi, la forme de réalisation de l'invention illustrée à la figure 4 peut être généralisée à un circuit multiplieur Nbits x Mbits avec un nombre quelconque de modules montés en cascade, un registre tampon conforme à l'invention étant disposé entre chaque paire de modules successifs montés en cascade. L'invention peut également être appliquée à une unité arithmétique autre qu'un multiplieur, ou à une unité logique. REVENDICATIONS 1 Procédé pour échanger des données numériques comportant au moins un bit avec un opérateur asynchrone (OP; MULT 1, MULT 2) au moyen d'un registre numérique (El, E 2, S; REG A, REG B Tl, REG P), caractérisé en ce que ce registre numérique comprend, pour chaque bit, un couple de bascules ( 2, 12) montées en parallèle, chacune de ces bascules comportant respectivement une cellule de mémoire ( 3, 13), un moyen de chargement ( 4, 14) pour inscrire dans la cellule de mémoire ( 3, 13) une valeur du bit, et un moyen de lecture ( 5, 15) pour fournir la valeur du bit inscrite dans la cellule de mémoire ( 3, 13), en ce que les moyens de chargement ( 4, 14) et les moyens de lecture ( 5, 15) des deux bascules ( 2, 12) sont activés et désactivés de façon cyclique à une même fréquence d'horloge (F), en ce que les moyens de lecture respectifs ( 5, 15) des deux bascules ( 2, 12) sont activés de façon sensiblement alternée, et en ce que le moyen de lecture ( 5, 15) de chaque bascule ( 2, 12) est désactivé pendant que le moyen de chargement ( 4, 14) de cette bascule est activé. 2 Procédé conforme à la revendication 1, caractérisé en ce que, pour chaque bit, les moyens de chargement ( 4, 14) respectifs des deux bascules ( 2, 12) sont activés de façon sensiblement alternée. 3 Procédé conforme à la revendication 2, caractérisé en ce que, pour chaque bit, le moyen de chargement ( 4) de la première bascule ( 2) et le moyen de lecture ( 15) de la seconde bascule ( 12) sont activés lorsqu'un premier signal d'horloge (HO) est à l'état haut, et le moyen de lecture ( 5) de la première bascule ( 2) et le moyen de chargement ( 14) de la seconde bascule ( 12) sont activés lorsqu'un second signal d'horloge (NHO), qui est complémentaire du premier signal d'horloge (HO), est à l'état haut. 4 Registre numérique (El, E 2, S; REG A, REG B, Tl, REG P) pour échanger des données numériques comportant au moins un bit avec un opérateur asynchrone (OP; MULT 1, MULT 2), caractérisé en ce qu'il comprend, pour chaque bit, il un couple de bascules ( 2, 12) montées en parallèle, chacune de ces bascules comportant respectivement une cellule de mémoire ( 3, 13), un moyen de chargement ( 4, 14) pour inscrire dans la cellule de mémoire ( 3, 13) une valeur du bit, et un moyen de lecture ( 5, 15) pour fournir la valeur du bit inscrite dans la cellule de mémoire ( 3, 13), et en ce que les moyens de chargement ( 4, 14) et les moyens de lecture ( 5, 15) des deux bascules ( 2, 12) sont agencés pour être activés et désactivés de façon cyclique à une même fréquence d'horloge (F) de façon telle que les moyens de lecture respectifs ( 5, 15) des deux bascules soient activés de façon sensiblement alternée et que le moyen de lecture ( 5, 15) de chaque bascule ( 2, 12) soit désactivé pendant que le moyen de chargement ( 4, 14) de cette bascule est activé. Registre numérique conforme à la revendication 4, caractérisé en ce que, pour chaque bit, les moyens de chargement ( 4, 14) respectifs des deux bascules ( 2, 12) sont agencés pour être activés de façon sensiblement alternée. 6 Registre numérique conforme à la revendication , caractérisé en ce que pour chaque bit, le moyen de chargement ( 4) de la première bascule ( 2) et le moyen de lecture ( 15) de la seconde bascule ( 12) sont activés lorsqu'un premier signal d'horloge (HO) est à l'état haut, et le moyen de lecture ( 5) de la première bascule ( 2) et le moyen de chargement ( 14) de la seconde bascule ( 12) sont activés lorsqu'un second signal d'horloge (NHO), qui est complémentaire du premier signal d'horloge (HO), est à l'état haut. 7 Unité de calcul ( 1; 21), comprenant un opérateur asynchrone (OP; MULT 1, MULT 2), au moins un registre d'entrée (El, E 2; REG A, REG B), et un registre de sortie (S; REG P), caractérisée en ce que chaque registre d'entrée et le registre de sortie sont des registres numériques conformes à l'une des revendications 4 à 6. 8 Unité de calcul ( 21) conforme à la revendication 7, dans lequel l'opérateur comporte plusieurs modules asynchrones (MULT 1, MULT 2) montés en cascade, caractérisée en ce qu'un registre numérique (Tl) conforme à l'une des revendications 4 à 6 est disposé entre chaque paire de modules successifs montés en cascade.