Brevet FR2788865A1 — publié le 20000728

Dispositif de mémorisation à accès multiple. L'invention concerne un dispositif de mémorisation à accès multiple. Plus particulièrement, l'invention se rapporte à un dispositif à mémoire parallèle utilisable pour remplacer une pluralité de registres à décalage de grande dimension. Pour réaliser des dispositifs de calcul sur des nombres codés avec un nombre de bits important, il est connu d'utiliser des architectures de type série. Les architectures de type série ont pour avantage principal de réduire de manière considérable les éléments de calcul (additionneur, soustracteur, multiplieur, etc). Cependant, des éléments très utilisés dans les architectures séries sont d'une taille légèrement augmentée par rapport aux architectures parallèles, il s'agit des éléments de mémorisation, à savoir les registres à décalage. Afin de mieux cerner le problème, on fait à présent référence à un exemple de coprocesseur d'arithmétique modulaire à architecture série par exemple dévoilé dans les documents EP-A-0 601 907, EP-A-0 712 070, EP-A-0 712 071, EP-A-0 712 072, EP-A-0 778 518, EP-A-0 784 262, EP- A-0 785 502, EP-A-0 785 503, EP-A-0 793 165, EP-A-0 853 275, WO/97 25668, et aussi dans la demande européenne déposée le 26 août 1998 sous le numéro 98 470020.3. Comme peut le constater l'homme du métier à la lecture de ces documents, il est utilisé trois ou quatres registres (suivant les documents) de grande dimension (256, 512, 1024 bits ou plus). Par ailleurs, les registres de grande dimension peuvent être agencés de différentes manières afin de procurer une taille variable rendant l'utilisation plus souple, et aussi afin de réduire la consommation desdits registres. La figure 1 de la présente demande correspond à la figure 1 de la demande européenne déposée sous le numéro 98 470020.3. Le circuit de la figure 1 représente un coprocesseur 1 d'arithmétique modulaire qui comporte: quatre registres 2 à 5 à décalage de m * Bt bits, m et Bt étant classiquement égal à une puissance de deux (par exemple 8 ou 16 pour m et 32 ou 64 pour Bt); - quatre multiplexeurs 6 à 9 associés respectivement à chacun desdits quatre registres 2 à 5; - des moyens de calcul 10, 11, 19, 20, 26, 29 et 35 de type additionneur série, soustracteur série, multiplieur série; - des moyens de mémorisation 17, 18, 22, 23 et 25 pour mémoriser des mots de Bt bits de type registre à décalage série/parallèle et de type bascule transparente à verrouillage; - des moyens de retard 28, 32 et 33 pour introduire des retards de Bt cycles d'horloge; - des moyens de multiplexage 12 à 16, 21, 24, 27, , 31, 34, 37 et 38 pour assurer le transit des données entre les différents éléments du coprocesseur 1. Le coprocesseur 1 permet de réaliser différentes opérations modulaires et non modulaires par décalage des données contenues dans un ou plusieurs des quatre registres 2 à 5. Pour plus de renseignements sur le fonctionnement du coprocesseur 1, l'homme du métier peut se reporter aux documents cités précédemment. Par ailleurs, un tel coprocesseur 1 est utilisé dans une carte à puce conjointement à une mémoire et à un microprocesseur classique qui sert, entre autre, à le contrôler. Le rôle de ce coprocesseur 1 est d'effectuer des calculs de cryptage. Les clefs utilisées en cryptage sont d'une taille de plus en plus importante et nécessitent l'utilisation de registres 2 à 5 de taille de plus en plus importante (actuellement 512 ou 1024 bits). La taille de ces registres représente environ 40% de la surface du coprocesseur 1. Par ailleurs, l'utilisation de registres à décalage nécessite un chargement des données en série ce qui est particulièrement néfaste aux performances du circuit lors d'échange de données entre une mémoire et le coprocesseur 1. On peut également remarquer que l'utilisation des registres entraîne une perte de temps lorsque l'on désire échanger le contenu de deux registres. L'invention a pour but de proposer un dispositif de mémorisation de taille plus réduite et présentant plus de souplesse pour les transferts de données. Le dispositif prévu par l'invention ne se limite pas à un coprocesseur d'arithmétique modulaire. En effet, tout dispositif de calcul utilisant un cheminement de données de type série et au moins un registre de grande dimension est susceptible d'utiliser l'invention. L'invention a pour objet un dispositif de mémorisation comportant: au moins une mémoire disposant d'un bus de donnée parallèle et d'un bus d'adresse parallèle; une première bascule à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus de donnée; un premier registre à décalage de k bits ayant une entrée parallèle et une sortie série, l'entrée parallèle étant connectée à la sortie de la première bascule; une deuxième bascule à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, la sortie parallèle étant connectée au bus de donnée; un deuxième registre à décalage de k bits ayant une entrée série et une sortie parallèle, la sortie parallèle étant connectée à l'entrée de la deuxième bascule. Selon différentes configurations, le dispositif peut comporter: des troisième à cinquième bascules à verrouillage de k bits ayant chacune une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus de donnée; des troisième à cinquième registres à décalage de k bits ayant chacun une entrée parallèle et une sortie série, l'entrée parallèle de -1T- chaque troisième à cinquième registres étant connectée respectivement à la sortie de chacune des troisième à cinquième bascules. Selon un mode préféré de réalisation, le dispositif comporte un circuit de contrôle connecté au bus d'adresse, et en ce que le circuit de contrôle comporte des registres d'adresse pour mémoriser autant de pointeurs d'adresse que le dispositif comporte de registre à décalage de k bits. L'invention porte également sur un coprocesseur comportant une borne d'entrée série, une borne de sortie série, et des éléments de calcul disposés sur au moins un parcours de donnée entre la borne d'entrée série et la borne de sortie série de telle sorte que si l'on décale une donnée en série sur l'entrée série alors on récupère un résultat en série sur la borne de sortie après avoir traversé au moins une partie des éléments de calcul, caractérisé en ce qu'il comporte ledit dispositif de mémorisation, et en ce que la borne d'entrée série est connectée à la sortie du premier registre à décalage, et la borne de sortie est connectée à l'entrée du deuxième registre à décalage. L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels: la figure 1 représente un coprocesseur fonctionnant par décalage de donnée en série sur un parcours donné, selon l'état de la technique, la figure 2 représente le coprocesseur de la figure 1 modifié selon l'invention, les figures 3 et 4 représentent des registres à décalages suivant l'invention, la figure 5 représente une variante de l'invention, la figure 6 représente un diagramme temporel illustrant un exemple de fonctionnement du circuit de la -.... T'- figure 5. La figure 1 ayant été décrite précédemment et constituant l'état de la technique, elle ne sera pas décrite plus en détail. La figure 2 représente le coprocesseur de la figure 1 modifié selon l'invention. Les éléments de la figure 2 qui portent les mêmes numéros de référence que sur la figure 1 sont identiques aux éléments de la figure 1. Le coprocesseur de la figure 2 assure les mêmes fonctions que le coprocesseur 1 de la figure 1. Le coprocesseur de la figure 2 diffère essentiellement par la suppression des quatre registres 2 à 5 et des quatre multiplexeurs 6 à 9 qui sont remplacés par le dispositif de mémorisation 140. Le dispositif de mémorisation 140 comporte: - des premier à quatrième registres 150 à 153 à décalage de k bits disposant chacun d'une entrée parallèle de k bits et d'une sortie série; - un cinquième registre 154 à décalage de k bits disposant d'une entrée série et d'une sortie parallèle de k bits; - des première à cinquième bascules 155 à 159 transparente à verrouillage disposant chacune d'une entrée parallèle et d'une sortie parallèle, les sorties des première à quatrième bascules 155 à 158 étant connectées respectivement aux entrées des premier à quatrième registres, l'entrée de la cinquième bascule 159 étant connectée à la sortie du cinquième registre 154; - une mémoire 160, par exemple de type RAM, disposant d'une entrée/sortie de données parallèle de k bits et d'une entrée d'adresse, l'entrée d'adresse étant une entrée parallèle de taille suffisante pour adresser les mots de la mémoire 160; - un bus de données 161 de k bits connecté d'une part à l'entrée/sortie de donnée de la mémoire 160, et d'autre part aux entrées des première à quatrième bascules 155 à 158 et à la sortie de la cinquième bascule 159; - un port d'entrée/sortie de données 162 connecté au bus de données 161. Le dispositif de mémorisation 140 peut être contrôlé par un processeur externe ou par une machine d'état. Le principe de fonctionnement du dispositif de mémorisation 140 est cyclique et comporte les étapes suivante dans l'ordre indiqué: - lecture d'une donnée dans la mémoire 160 à une première adresse et stockage de cette donnée dans la première bascule 155, puis incrémentation de la première adresse, - lecture d'une donnée dans la mémoire 160 à une deuxième adresse et stockage de cette donnée dans la deuxième bascule 156, puis incrémentation de la deuxième adresse, - lecture d'une donnée dans la mémoire 160 à une troisième adresse et stockage de cette donnée dans la troisième bascule 157, puis incrémentation de la troisième adresse, - lecture d'une donnée dans la mémoire 160 à une quatrième adresse et stockage de cette donnée dans la quatrième bascule 158, puis incrémentation de la quatrième adresse, chargement du contenu des première à quatrième bascules 155 à 158 respectivement dans les premier à quatrième registres 150 à 153, et simultanément chargement du contenu du cinquième registre 154 dans la cinquième bascule 159, - lecture de la donnée présente dans la cinquième bascule 159 et stockage de la donnée dans la mémoire 160 à une cinquième adresse, puis incrémentation de la cinquième adresse. Pour faire fonctionner le coprocesseur complet, l'homme du métier se reportera aux documents cités -rT- précédemment en se contentant de remplacer les registres à décalage 2 à 5 par les registres 150 à 154. Si l'on se reporte aux documents de l'art antérieur cités précédemment, l'homme du métier peut s'apercevoir que seulement un, deux ou trois des premier à quatrième registres peuvent être sollicités simultanément pour un calcul donné. D'une manière générale, les dispositifs de calcul autorisent des fréquences d'horloge beaucoup plus importantes que la fréquence que peut supporter une mémoire. Un avantage de ce dispositif de mémorisation 140 est de masquer les temps d'accès de la mémoire vis à vis des éléments de calcul. En effet, la seule chose importante est d'effectuer le transfert de donnée entre les première à cinquième bascules 155 à 159 et les premier à cinquième registres 150 à 154 au moment o le dernier bit est chargé dans le cinquième registre 154, c'est à dire juste avant que l'on ait besoin des premiers bits des premier à quatrième registres 150 à 153. Les opérations de lecture et d'écriture dans la mémoire 160 peuvent être réparties dans le temps de manière plus ou moins importante en fonction de k. A titre d'exemple, si k = 16 et si l'on interdit les transferts de données entre le dispositif de mémorisation 140 et l'extérieur pendant le fonctionnement, alors la fréquence maximale d'utilisation du coprocesseur est limitée à quatre fois la fréquence maximale d'utilisation de la mémoire. Bien évidemment, l'un des intérêts de la présente invention est de pouvoir échanger des données entre une mémoire centrale et le dispositif de mémorisation 140 pendant le calcul. On peut par exemple autoriser un à trois accès extérieurs pendant un cycle complet, ce qui se traduit pour k = 16 par l'utilisation d'une fréquence comprise entre deux fois et deux fois et demi la fréquence maximale de la mémoire 160 pour les éléments de calcul. L'homme du métier peut remarquer d'autres changement dans le schéma du coprocesseur de la figure 2 par rapport au coprocesseur de la figure 1. Le multiplexeur 16 de la figure 1 est remplacé par un multiplexeur 116 qui ne dispose que de deux entrées au lieu de cinq. L'utilisation du dispositif de mémorisation permet d'utiliser le premier registre 150 comme entrée extérieure (via la mémoire 160) d'o la suppression de la borne Din. On peut également charger des zéros dans le premier registre 150 (ou remettre ledit registre 150 à zéro si il est prévu pour cela) ce qui remplace l'entrée recevant un zéro logique car le premier registre ne sert pas à mémoriser une donnée mais seulement à la mettre en forme pour les circuits de calcul. De même, la connexion reliant la sortie du multiplexeur 15 au multiplexeur 16 devient inutile car son but était de pouvoir aiguiller la donnée contenue dans le registre 3 vers le registre 17, il suffit avec le dispositif de mémorisation 140 d'affecter au premier registre 140 un pointeur d'adresse qui corresponde au pointeur d'adresse du deuxième registre pour avoir le même effet. Le multiplexeur 15 est remplacé par un multiplexeur disposant de deux entrées au lieu de 4 car les "zéro"s et "un"s logiques peuvent être fournis par le deuxième registre 151. Un grand intérêt de l'invention pour ce type de coprocesseur est l'échange de données entre les registres. En effet, sur le schéma de la figure 1, le multiplexeur 37 sert à pouvoir-échanger des données entre les registres 2 à 5. Avec le dispositif de mémorisation de l'invention, l'échange de données devient virtuel. En effet, il suffit de changer les pointeurs d'adresse qui correspondent aux différents registres 150 à 153 pour échanger des données. Le changement de pointeur peut se faire dès que les dernières données d'un calcul ont été fournies. Ainsi on peut enchaîner deux calculs de manière successives, même si on a besoin du résultat du calcul précédent. Le gain obtenu en terme de temps de traitement est considérable car on peut économiser un nombre de cycles d'une horloge égal au nombre de bits des données à échanger. En terme de surface, le dispositif de mémorisation est de taille plus réduite que l'utilisation de quatre registres. A titre d'exemple, si les quatres registres 2 à 5 sont d'une taille de 1024 bits, ils nécessitent l'utilisation d'environ 65 000 transistors. Un dispositif de mémorisation équivalent peut être constitué de cinq bascules et de cinq registres, par exemple de 16 bits, et d'une mémoire de 4 kbits, par exemple de type DRAM, ce qui représente moins de 10 000 transistors. Avec l'invention, le gain en surface est de l'ordre de 85%. Si on désire utiliser une mémoire SRAM plus rapide, le même dispositif de mémorisation représente moins de 30 000 transistors, ce qui correspond à un gain de plus de 50%. Les premier à quatrième registres 150 à 153 ont une structure analogue. Les première à quatrième bascules 155 à 158 ont également une structure analogue. La figure 3 représente un exemple de réalisation du registre 150 et de la bascule 155. Cet exemple est donné à titre indicatif afin de montrer à l'homme du métier la totalité des fonctionnalités requises pour ce type d'élément. La bascule 155 comporte k verrous 301 constitués d'une paire d'inverseurs montés tête-bêche en parallèle, chaque verrou disposant de deux extrémités, et k inverseurs 302 à sortie trois états, chaque inverseur 302 disposant d'une entrée de donnée, d'une entrée de validation et d'une sortie. La sortie de chacun des inverseurs 302 est respectivement connectée à l'une des extrémités de chacun des verrous 301. Les entrées de validation de sortie des inverseurs 302 sont connectées ensembles et forment une entrée de chargement qui reçoit un signal de chargement LD. Les entrées de données des inverseurs 302 sont connectées au bus 161. Le registre 150 comporte des première à k-ième bascules 303 de type D et des premier à k-ième multiplexeurs 304. Chacune des bascules 303 comporte une entrée de donnée, une entrée de validation, une entrée d'horloge, une entrée de remise à zéro, une entrée de mise à "un", et une sortie. Les entrées de validation des bascules 303 sont connectées ensembles et reçoivent un signal de validation de décalage EN. Les entrées d'horloge des bascules 303 sont connectées ensembles et reçoivent un signal d'horloge CLK. Les entrées de remise à zéro sont connectées ensembles et reçoivent un signal de remise à zéro RST. Les entrées de mise à "un" des bascules 303 sont connectées ensembles et reçoivent un signal de mise à "un" SET. Chacun des multiplexeurs 304 dispose de première et deuxième entrées de donnée, d'une entrée de sélection, et d'une sortie. Les entrées de sélection de tous les multiplexeurs sont connectées ensembles et reçoivent un signal de sélection D/L qui, lorsqu'il est dans un premier état, établit une connexion entre la première entrée et la sortie de chaque multiplexeur 304, et qui, lorsqu'il est dans un deuxième état, établit une connexion entre la deuxième entrée et la sortie de chaque multiplexeur 304. La première entrée du premier multiplexeur 304 reçoit un zéro logique. Les premières entrées des deuxième à k-ième multiplexeurs 304 sont respectivement connectées aux sorties des première à (k-1)-ième bascules 303. Les deuxièmes entrées des k multiplexeurs 304 étant respectivement connectées aux autres extrémités des k verrous 301. Lorsque la bascule 155 et le registre 150 de la figure 3 sont incorporés dans le dispositif de mémorisation de la figure 2, seul les signaux d'horloge CLK et de sélection D/L sont communs aux premier à quatrième registres 150 à 153. Les autres signaux doivent être pilotés de manière individuelle. Lorsque l'on désire charger un mot dans la bascule , on effectue une lecture dans la mémoire 160 puis on active le signal de chargement LD. Lorsque l'on veut transférer la donnée présente dans la bascule 155 dans le registre 150, on positionne le signal de sélection D/L dans le deuxième état, on active le signal de validation de décalage EN, et dès qu'un front actif de l'horloge survient, la donnée présente dans la bascule 155 se mémorise dans le registre 155. Pour décaler le contenu du registre 155, il suffit de positionner le signal D/L dans le premier état et de valider le signal de validation de décalage EN, lors de chaque front actif du signal d'horloge CLK, la donnée présente dans le registre 150 est décalée d'un bit vers la droite. Les signaux de remise à "zéro" RST et de mise à "un" SET servent à positionner le registre 150 dans un état prédéterminé. L'homme du métier peut remarquer que lorsque l'on décale le contenu du registre 150 vers la droite, on charge des zéros à partir de la gauche. A l'issue de k décalages, le registre 150 contient donc k zéros. Il peut, dans certains cas, ne pas être nécessaire d'avoir de signal de remise à zéro étant donné que le registre 150 se remet à zéro de lui-même par propagation de zéros. Si l'on se réfère à la figure 1, l'homme du métier peut s'apercevoir que seuls les multiplexeurs 14 et 15 prévoient de fournir des "un"s logiques. Il est donc évident que pour diminuer la taille des registres, seuls les registres 151 et 153 peuvent intégrer une mise à "un". De plus, il est possible de n'effectuer la mise à "un" que sur la bascule 303 dont la sortie correspond à la sortie du registre 150. Bien évidemment, il est possible de remplacer la bascule 155 et le registre 150 décrits sur la figure 3 par d'autres dispositifs équivalents. L'homme du métier pourra par exemple utiliser des dispositifs équivalents qui permettent d'aboutir au même résultat en réalisant une fonction analogue. A titre d'exemple, les multiplexeurs 304 peuvent être supprimés si l'on utilise des bascules 303 disposant d'entrées multiples et de moyens de sélection. De même, étant donné la spécificité de l'ensemble bascule 155 et registre 150, il est tout à fait envisageable de réaliser une architecture spécifique plus compacte. La figure 4 représente l'ensemble constitué de la cinquième bascule 159 et du cinquième registre 155. La figure 4 est donnée à titre indicatif afin de montrer à l'homme du métier les fonctionnalités que peut incorporer cet ensemble. La bascule 159 comporte k verrous 401 constitués d'une paire d'inverseurs montés tête-bêche en parallèle, chaque verrou disposant de deux extrémités, k premiers inverseurs 402 à sortie trois états, et k deuxièmes inverseurs 403 à sortie trois états, chaque premier inverseur 402 et chaque deuxième inverseur 403 disposant d'une entrée de donnée, d'une entrée de validation et d'une sortie. L'entrée de donnée de chacun des premiers inverseurs 402 est respectivement connectée à l'une des extrémités des verrous 401. Les entrées de validation de sortie des premiers inverseurs 402 sont connectées ensembles et forment une entrée de validation de déchargement qui reçoit le signal de déchargement LDO. La sortie de chacun des deuxièmes inverseurs 403 étant respectivement connectée à l'autre des extrémités des verrous 401. Les entrées de validation de sortie des deuxièmes inverseurs 402 sont connectées ensembles et forment une entrée de validation de chargement qui reçoit le signal de validation de chargement LDI. Les sorties des premiers inverseurs 402 sont connectées au bus 161. Le registre 154 comporte de première à k-ième bascules 404 de type D, chacune des bascules 404 comportant une entrée de donnée, une entrée de validation, une entrée d'horloge, une sortie non- inverseuse et une sortie inverseuse. Les entrées de validation des bascules 404 sont connectées ensembles et reçoivent un signal de validation de décalage EN. Les entrées d'horloge des bascules 404 sont connectées ensembles et reçoivent un signal d'horloge CLK. L'entrée de donnée de la première bascule 404 forme l'entrée série du registre 154. Les sorties non-inverseuses des première à (k-1)-ième bascules 404 sont respectivement connectées aux entrées de données des deuxième à k-ième bascules 404. Les sorties inverseuses des première à k-ième bascules 404 sont connectées à chacune des entrées de donnée des deuxièmes inverseurs 403. Pour charger des données dans le registre 154, il suffit d'activer le signal de validation de décalage EN du registre, afin que, à chaque front actif du signal d'horloge CLK, les bits contenus dans le registre 154 soient décalés d'une unité vers la droite, la première bascule 404 recevant un bit de résultat. Une fois qu'un mot est chargé dans le registre 154, il suffit d'activer le signal de chargement LDI pour charger dans la bascule 159 le mot contenu dans le registre 154. Le stockage du mot contenu dans la bascule 159 se fait en activant le signal de déchargement LDO et en effectuant une écriture dans la mémoire 160. Bien évidemment, il est possible de remplacer la bascule 159 et le registre 154 décrits sur la figure 4 par d'autres dispositifs équivalents. Etant donné la spécificité de l'ensemble bascule 159 et registre 154, il est tout à fait envisageable de réaliser une architecture spécifique plus compacte qui réalise une fonction analogue pour aboutir au même résultat. La figure 5 représente une variante du dispositif de mémorisation 140. Les éléments possédant les mêmes repères que sur la figure 2 correspondent à des éléments identiques. Le dispositif de mémorisation 140 de la figure 5 diffère essentiellement par un découpage de la mémoire 160 en première et deuxième mémoire 160-A et 160- B et par l'ajout d'un circuit de contrôle 170 pour gérer lesdites mémoires 160-A et 160-B. Chacune des première et deuxième mémoires 160-A et -B dispose d'un bus de donnée, d'un bus d'adresse, et d'entrées de commande classique (validation de la mémoire, lecture/écriture,. ). Le bus de donnée de chacune desdites mémoires 160-A et 160- B est organisé en mots de k' bits, en ayant 2 * k' = k. Ainsi, le bus de donnée de la première mémoire est connecté aux fils de poids faible du bus 161, et le bus de donnée de la deuxième mémoire est connecté aux fils de poids fort du bus 161. L'avantage d'un tel système est d'avoir la possibilité d'adresser les première et deuxième mémoires -A et 160-B en mémoire paire et impaire à partir d'un..DTD: port de communication 262 à l'aide d'un multiplexeur- démultiplexeur 263. L'intérêt d'un tel dispositif vient essentiellement du fait que le coprocesseur qui comporte le dispositif de mémorisation 140 est souvent utilisé sur des cartes à puce qui utilisent de petit processeur (par exemple 8 bits ou 16 bits) alors que l'on désire avoir un accès d'une taille supérieure (par exemple 16 ou 32 bits) sur le bus 161. Le circuit de contrôle 170 sert à décharger le processeur externe de la gestion du dispositif de mémorisation. Le circuit de contrôle 170 comporte une machine d'états 171 et une banque de registres 172. La banque de registres 172 comporte autant de registres d'adresse qu'il y a de registre à décalage 150 à 154, chaque registre d'adresse contenant un pointeur d'adresse associé à l'un des registres à décalage 150 à 154. La banque de registres 172 comporte également un ou plusieurs registres d'adresse supplémentaires pour contenir une ou plusieurs adresses fournies par un processeur externe qui désire lire et/ou écrire des données dans les mémoires 160-A et 160- B. Tous les registres d'adresse sont munis de moyens d'incrémentation qui incrémentent le contenu du registre après chaque utilisation. La banque de registre 172 peut contenir un registre d'instruction pour permettre différentes configurations de la machine d'états 171 et aussi un registre d'état pour renseigner le processeur externe. La machine d'états 171 sert à commander les mémoires 160- A et 160-B ainsi que les registres à décalage 150 à 154 et les bascules 155 à 159. Il peut être prévu différents cycles d'états en fonction du registre de commande. A titre d'exemple, la figure 6 représente un exemple de chronogrammes produit par la machine d'états 171 pour un cycle d'états correspondant à une opération dans le coprocesseur pour laquelle: seul les premier, deuxième et cinquième registres 150, 151 et 154 sont utilisés par le coprocesseur; les données correspondant aux premier et deuxième registres 150 et 151 sont stockées respectivement à partir de première et deuxième adresses Al et A2; la donnée correspondant au résultat est stockée à partir d'une troisième adresse A3; de plus, on désire remplacer la donnée se situant à partir de la première adresse Al au fur et à mesure qu'elle est utilisée; on désire lire le résultat présent à l'adresse A3. On considère que les données des premier et deuxième registres sont déjàprésentes dans les mémoires 160-A et -B. La figure 6 ne représente que les signaux dont l'état doit changer pendant le cycle d'états correspondant à l'exemple décrit précédemment. Le signal CLK correspond au signal d'horloge utilisé par les éléments de calcul du coprocesseur ainsi que par les registres 150 à 154. Le signal noté @ correspond aux adresses envoyées simultanément sur les mémoires 160-A et -B. Les signaux ENM1 et ENM2 correspondent respectivement aux signaux de validation des première et deuxième mémoires 160-A et 160-B. Le signal R/W sert à indiquer aux deux mémoires si il s'agit d'une lecture (niveau "1") ou d'une écriture (niveau "0"), le signal de validation ENM1 ou ENM2 servant à valider l'opération de lecture ou d'écriture dans la mémoire concernée. Le signal D/L indique si les premier à quatrième registres à 153 fonctionnent en décalage de données ou en chargement de données à partir des première à quatrième bascules 155 à 158. Les signaux LD1 à LD4 correspondent respectivement aux signaux de chargement des première à quatrième bascules 155 à 158, les signaux LD3 et LD4 n'étant pas représentés car ils sont toujours à "0" dans l'exemple représenté. Les signaux RST1 à RST4 correspondent respectivement aux signaux de remise à "zéro" des premier à quatrième registres 150 à 153, les signaux RST1 et RST2 n'étant pas représentés car ils sont toujours à "0" dans l'exemple représenté. Le signal LDO correspond au signal de déchargement de la cinquième bascule 159. Le signal LDI correspond au signal de chargement de la cinquième bascule 159. Le signal SEL correspond au signal de sélection du multiplexeur/démultiplexeur 263, le port de communication 262 étant mis en contact avec la première mémoire 160-A lorsque le signal SEL est à "0", et le port de communication 262 étant mis en contact avec la deuxième mémoire lorsque le signal SEL est à "1". Le signal OE sert à valider la sortie de donnée pour le port de communication 262. Le signal IE sert à valider l'entrée de donnée pour le port 262. Les signaux EN1 à EN5 correspondent respectivement aux signaux de validation de décalage des premier à cinquième registres 150 à 154, les signaux EN3 et EN4 n'étant pas représentés car ils sont constamment à "0". Des signaux SET1 à SET4 servent à mettre à "1" les premier à quatrième registres 150 à 153, lesdits signaux n'étant pas représentés car ils sont constamment à "0" dans l'exemple représenté. Par ailleurs, des niveaux intermédiaires ont été représentés sur le signal @ et sur le signal SEL. Ces niveaux intermédiaires signifient que le niveau du signal n'est pas pris en compte et qu'il peut prendre n'importe quelle valeur. Le signal d'horloge CLK sert également à synchroniser la machine d'état qui produit les différents signaux. Ainsi les signaux sont représentés synchronisés sur les fronts montants du signal CLK. Comme le sait l'homme du métier, les signaux découlant du signal CLK sont forcément légèrement décalés par rapport à ce signal, ce qui permet d'avoir un bon fonctionnement des éléments synchronisés. A chaque front montant du signal CLK est associé un instant ti. Les chronogrammes commencent à l'instant to et finissent normalement à la fin de l'opération réalisée par le coprocesseur (à titre d'exemple, pour des données de 512 bits, on peut aller jusqu'à un instant t550). Pour des raisons pratiques, les chronogrammes s'arrêtent à l'instant t48 et les instants sont marqués de quatre en quatre. A l'instant to, on initialise le dispositif de mémorisation. Une impulsion est envoyée sur les signaux RST3 et RST4 pour mettre les troisième et quatrième registres 152 et 153 à zéro. Simultanément, le pointeur d'adresse Pi contenu dans le registre d'adresse correspondant au premier registre 150 est fourni sur les bus d'adresse des deux mémoires 160-A et 160-B. Le signal R/W est mis à "1" afin d'indiquer que les mémoires fonctionnent en mode lecture. Tous les autres signaux sont mis à "0". A l'instant tl, les signaux RST3 et RST4 sont remis à "0" pour le reste du cycle. On déclenche une lecture simultanée dans les deux mémoires en mettant à "1" les signaux ENM1 et ENM2. A l'instant t2, on active le signal LD1 afin de charger dans la première bascule 155 les données lues dans les mémoires 160-A et 160-B. On désactive les signaux ENM1 et ENM2. Il est à noter que le signal LD1 aurait pu être activé plus tôt si les mémoires permettent d'effectuer une lecture en moins d'un cycle du signal d'horloge. De même, les signaux ENM1 et ENM2 peuvent être désactivés plus tard. Bien évidemment, la forme de ces signaux dépend également des choix technologiques faits sur la mémoire et sur la bascule qui peuvent dicter des formes différentes. A l'instant t3, le premier mot de k bits de la donnée stockée à partir de la première adresse Al est chargé dans la première bascule 155. Le signal LD1 est désactivé alors que l'on change l'adresse fournie aux mémoires 160-A et 160-B. De l'instant t3 à l'instant t6, on effectue le chargement du premier mot de la donnée située à partir de la deuxième adresse A2 dans la deuxième bascule 156. Le chargement dans la deuxième bascule 156 s'effectue comme indiqué précédemment, en remplaçant le signal LD1 par le signal LD2. A l'instant t6, on active le signal D/L afin de provoquer au front actif suivant le chargement synchrone des premier et deuxième registres 150 et 151. Les signaux de validation EN1, EN2 et EN5 sont activés afin que le cycle de calcul commence à partir de la prochaine itération. Parallèlement, on commence à changer le mot situé à la première adresse Ai en fournissant la première adresse Ai aux mémoires 160-A et 160-B, en positionnant le signal R/W à un niveau qui indique que l'on va effectuer une écriture, et en présentant un mot de k' bits de poids faible sur le port de communication 262. On positionne le signal SEL à un niveau bas afin de sélectionner le bus de donnée de la première mémoire 160- A, et on active le signal IE afin de recevoir une donnée de l'extérieur. De l'instant to à l'instant t7, s'est déroulée une étape d'initialisation. A l'instant t7, commence le calcul dans le processeur et donc la première boucle de fonctionnement du dispositif de mémorisation. Pendant cette première boucle, on effectue le chargement d'un mot de k bits à l'adresse Ai. On active le signal ENM1 pour écrire le mot de k' bits présent sur le port de communication 262 dans la première mémoire 160-A. A l'instant t8, on désactive le signal ENM1. Parallèlement, on positionne le signal SEL à un niveau haut afin de sélectionner le bus de donnée de la deuxième mémoire 160-B et on présente un mot de k' bits de poids fort sur le port de communication 262. A l'instant t9, on active le signal ENM2 pour écrire le mot de k' bits présent sur le port de communication 262 dans la deuxième mémoire 160-B. A l'instant to10, on désactive le signal ENM2 et le signal IE. De l'instant t16 à l'instant t26, on effectue une synchronisation des signaux D/L, ENM1, ENM2, R/W, LD1, LD2, SEL et IE identique à la synchronisation qui s'est déroulée entre les instants to et to10. Toutefois, il est à noter que les pointeurs d'adresse utilisés sont incrémentées d'une unité. Entre les instants t22 et t23, on active le signal LDI afin de charger le contenu du cinquième registre 154 dans la cinquième bascule 159 à l'instant t23, l'instant t23 marquant la fin de la première boucle et le début d'une deuxième boucle. La deuxième boucle comporte une phase supplémentaire par rapport à la première boucle. La phase supplémentaire consiste à écrire un premier mot de la donnée de résultat à l'adresse A3 et à sortir du dispositif de mémorisation ledit mot. Cette phase se déroule entre les instants t28 et t32. La troisième adresse A3 est fournie aux mémoires 160-A et 160-B alors que le signal R/W indique que l'on va effectuer une écriture. Parallèlement, on active le signal LDO pour avoir le mot contenu dans la cinquième bascule 159 présent sur le bus 161, et on active le signal OE pour faire sortir une donnée par le port de communication 262. L'écriture du mot s'effectue simultanément dans les deux mémoires 160-A et 160-B par l'activation des signaux ENM1 et ENM2 entre les instants t29 et t30. La sortie du mot s'effectue en deux temps en positionnant le signal SEL à l'état bas pour sélectionner la première mémoire -A entre les instants t28 et t30 et en positionnant le signal SEL à l'état haut pour sélectionner la deuxième mémoire 160-B entre les instants t30 et t32. La deuxième boucle se termine à l'instant t39. Les boucles suivantes sont identiques à la deuxième boucle, en prenant soin d'incrémenter les pointeurs d'adresse à chaque boucle. Les boucles se succèdent à l'identique tant que les données à fournir sont à sortir du dispositif de mémorisation. Des boucles réduites (sans chargement dans les premier et deuxième registres 150 et 151) terminent le calcul pour pouvoir mémoriser la totalité du résultat qui est généralement décalé du temps nécessaire à la réalisation du calcul. L'homme du métier peut remarquer qu'avec le dispositif présenté, seul sept périodes d'horloge sont nécessaires pour initialiser le calcul. De plus une donnée est changée dans la mémoire pendant le calcul, ce qui permet d'enchaîner deux calculs avec seulement un nombre réduit (inférieur à k d'une manière générale, k étant égal à 16 ou 32) de périodes du signal d'horloge lors de la transition. A titre indicatif, un tel enchaînement avec des registres de 512 bits conçus selon l'état de la technique nécessite 512 périodes du signal d'horloge au minimum pour effectuer un nouveau calcul en changeant une donnée. L'homme du métier comprendra que de très nombreuses variantes sont possibles en fonction notamment du type de mémoires choisies. Ainsi les valeurs indiquées pour les signaux peuvent changer en fonction des différentes contraintes imposées par la mémoire. De même, les chronogrammes peuvent être fortement modifier en fonction des signaux nécessaires pour commander la ou les mémoires et en fonction des temps d'accès de la mémoire et de la période du signal d'horloge utilisé. _T-Il= REVENDICATIONS 1. Dispositif de mémorisation (140) comportant: - au moins une mémoire (160) disposant d'un bus (161) de donnée parallèle et d'un bus d'adresse parallèle; - une première bascule (155) à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus (161) de donnée; - un premier registre (150) à décalage de k bits ayant une entrée parallèle et une sortie série, l'entrée parallèle étant connectée à la sortie de la première bascule (155); - une deuxième bascule (159) à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, la sortie parallèle étant connectée au bus (161) de donnée; - un deuxième registre (154) à décalage de k bits ayant une entrée série et une sortie parallèle, la sortie parallèle étant connectée à l'entrée de la deuxième bascule (159). 2. Dispositif selon la revendication 1 caractérisé en ce qu'il comporte: une troisième bascule (156) à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus (161) de donnée; - un troisième registre (151) à décalage de k bits ayant une entrée parallèle et une sortie série, l'entrée parallèle étant connectée à la sortie de la troisième bascule (156). 3. Dispositif selon la revendication 2 caractérisé en ce qu'il comporte: une quatrième bascule (157) à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus (161) de donnée; - un quatrième registre (152) à décalage de k bits ayant une entrée parallèle et une sortie série, l'entrée parallèle étant connectée à la sortie de la quatrième bascule (157). 4. Dispositif selon la revendication 3 caractérisé en ce qu'il comporte: une cinquième bascule (158) à verrouillage de k bits ayant une entrée parallèle et une sortie parallèle, l'entrée parallèle étant connectée au bus (161) de donnée; - un cinquième registre (153) à décalage de k bits ayant une entrée parallèle et une sortie série, l'entrée parallèle étant connectée à la sortie de la cinquième bascule (158). 5. Dispositif selon l'une des revendications 1 à 4, caractérisé en ce qu'il comporte un circuit de contrôle (170) connecté au bus d'adresse, et en ce que le circuit de contrôle (170) comporte des registres d'adresse (172) pour mémoriser autant de pointeurs d'adresse (Pi à P5) que le dispositif comporte de registres à décalage (150 à 159) de k bits. 6. Dispositif selon l'une des revendications 1 à 5, caractérisé en ce qu'il comporte un port parallèle (162) de k bits connectée au-bus (161) de donnée pour communiquer avec l'extérieur. 7. Dispositif selon l'une des revendications 1 à , caractérisé en ce que la mémoire (160) est constituée de deux mémoires (160-A et 160-B) indépendantes disposant chacune d'un accès de donnée de k' bits, avec k = 2 * k', et en ce que l'une (160-A) des mémoires est reliée aux fils de poids faible du bus (161) de donnée et en ce que l'autre (160-B) des mémoires est reliée aux fils de poids fort du bus (161) de donnée. z 8. Dispositif selon la revendication 7, caractérisé en ce qu'il comporte un port parallèle (262) de k' bits relié pouvant être relié sélectivement aux fils de poids fort ou aux fils de poids faible du bus (161) de donnée. 9. Dispositif selon l'une des revendications 1 à 8, caractérisé en ce que le premier registre (150) à décalage comporte des moyens pour mettre à "0" tous les bits dudit registre et/ou des moyens pour mettre à "1" tous les bits dudit registre (150). 10. Coprocesseur comportant une borne d'entrée série, une borne de sortie série, et des éléments de calcul disposés sur au moins un parcours de donnée entre la borne d'entrée série et la borne de sortie série de telle sorte que si l'on décale une donnée en série sur l'entrée série alors on récupère un résultat en série sur la borne de sortie après avoir traversé au moins une partie des éléments de calcul, caractérisé en ce qu'il comporte le dispositif de l'une des revendications 1 à 9, et en ce que la borne d'entrée série est connectée à la sortie du premier registre à décalage, et la borne de sortie est connectée à l'entrée du deuxième registre à décalage.