Brevet FR2675600A1 — publié le 19921023

PROCEDE DE SYNCHRONISATION DE DONNEES D'ENTREE D'UN PROCESSEUR DE CALCUL ET DISPOSITIF POUR LA MISE EN OEUVRE DUDIT PROCEDE. La présente invention concerne un procédé de synchronisation de données d'entrées susceptible d'être mis en oeuvre dans un système informatique maillé, ainsi que les circuits pour la mise en oeuvre dudit procédé. L'invention trouve son application dans des réseaux informatiques maillés dans lesquels les liens s'établissent entre deux ou plusieurs noeuds en fonction des applications supportées.Les noeuds sont constitués par une matrice d'entrée-sortie associée le cas échéant à une unité de calcul. Afin d'augmenter la puissance de calcul, on utilise plusieurs unités de calcul en parallèles. Pour traiter une application dans un minimum de temps, il faut faire coopérer plusieurs unités de calcul dans un minimum de temps, ce qui pose des problèmes d'échanges d'informations entre les unités de calculs. La figure 1 représente la structure générale d'un tel réseau. Le réseau représenté comprend 5 noeuds Ni à N5 reliés entre eux par des branches Dij où i désigne l'indice du noeud de départ et j l'indice du noeud d'arrivée. La machine coopère par ailleurs avec l'extérieur pour recevoir des données ou en émettre par des branches d'interface DE et DS. La structure du réseau est déterminée en fonction des applications qu'elle est amenée à supporter, c'est-à-dire des traitements informatiques qui sont effectués à l'intérieur des noeuds, et des échanges de données nécessaires entre les noeuds pour ces traitements. Chaque noeud Ni à N5 comprend un dispositif de couplage (1 à 5) recevant des informations numériques sur les branches entrantes et réémettant des informations sur les branches sortantes du noeud considéré. Le traitement des informations se fait le cas échéant dans un processeur local (6 à 10) relié au dispositif de couplage respectivement (1 à 5) par un bus local (11 à 15). Certains noeuds constituent une simple étape de liaison intermédiaire dans laquelle les informations ne subissent aucun traitement par le processeur de calcul. Chaque noeud comporte par ailleurs un circuit reconstituant une horloge haute fréquence à partir d'une horloge basse fréquence commune distribuée à tous les noeuds. La transmission des signaux entre deux noeuds consécutifs entraîne toutefois des retards qui peuvent fluctuer de façon significative autour d'une valeur prévisible. De même, le temps de propagation de la bascule de l'horloge locale et le temps de propagation dans les mémoires tampons locales peuvent fluctuer légèrement en fonction de différents paramètres tels que la température. Il en résulte des différences de phases aléatoires ou, pour prendre une terminologie anglo-saxonne, des skews de phase qui doivent être éliminés pour permettre un fonctionnement optimal du calculateur. A cet effet, l'invention concerne un procédé de synchronisation des signaux d'entrée du dispositif de couplage consistant à générer à partir d'une horloge centrale une pluralité d'horloges locales déphasées les unes par rapport aux autres, à échantillonner les données d'entrée avec chacune desdites horloges locales et à sélectionner le signal échantillonné présentant des fronts montants positionnés temporellement au milieu des états stables. On réalise ainsi un automate de synchronisation réémettant les signaux d'entrée après synchronisation avec l'horloge centrale. De préférence, le nombre d'horloges locales est au moins égal à t- où min - To représente la période de l'oscillateur local - tintin représente le retard minimum entre deux horloges consécutives. Cette condition permet de déterminer dans tous les cas la bonne horloge. Selon un mode de mise en oeuvre préféré, on dérive chacun desdits signaux échantillonnés avant de remettre lesdits signaux dérivés en phase avec l'horloge de base pour former un mot de N+1 bits où N représente le nombre d'horloges locales. On sélectionne ensuite l'horloge locale Hi correspondant à deux bits consécutifs différents puis on sélectionne le signal échantillonné par ladite horloge locale Hi. La présente invention concerne également un circuit pour la mise en oeuvre du procédé de synchronisation exposé dans ce qui précède. La présente invention sera mieux comprise à la lecture de la description qui suit, faisant référence aux dessins où - la figure 2 représente le schéma général de l'automate selon 1 invention; - la figure 3 représente le schéma du circuit d'échantillonnage et de dérivation - la figure 4 représente le schéma du circuit de remise en phase ; - la figure 5 représente le schéma du module de vote. La figure 2 représente le schéma de principe de l'automate de synchronisation selon l'invention. Le signal d'horloge central est exploité par un circuit (20) comprenant un oscillateur local générant un signal haute fréquence et par des circuits de retards générant N signaux d'horloge haute fréquence déphasés. A titre d'exemple, la fréquence des N horloges locales est de 125 mégahertz. Le nombre d'horloges locales retardées est déterminé de façon à permettre la détection de deux fronts montants. On doit avoir: N. Tmin > 2.T0 d'où N > Trnin Tmin To désigne la période de l'horloge locale de base Tmin désigne le retard minimum introduit par les différents phénomènes générateurs de déphasages. Il faut en outre que le retard maximum Tmax entre deux horloges locales consécutives soit inférieur à la moitié de la largeur de l'oeil, qui peut être estimé à 60% de la période de l'horloge locale lorsque le signal d'horloge est véhiculé par un bifilaire torsadé. En conséquence, il faut que (60%. To) Tmax Dans un exemple de réalisation, on a Train = 1,21 nanosecondes Tmax = 1,936 nanosecondes d'où N =14 Dans ce qui suivra, on se limitera, pour simplifier la description au cas où N = 3. Le circuit (20) génère N signaux d'horloge locale déphasés, qui sont exploités par le circuit (21) destiné à l'échantillonnage de la donnée d'entrée. Ce circuit, dont le schéma de principe constitue la figure 3, comporte une première série de bascules D (101 à 104). La valeur présente sur l'entrée D de chacune desdites bascules quand l'horloge locale Hi correspondante est à UN, est chargée à la sortie Q et conservée jusqu'à ce que l'horloge locale Hi revienne à UN.On synchronise donc le signal d'entrée avec respectivement chacune des horloges locales Hi. Le fait d'utiliser plusieurs horloges décalées les unes par rapport aux autres revient à avoir un circuit séquentiel fonctionnant dans un environnement asynchrone, car l'information à l'entrée des N+1 bascules (101 à 104) arrive de manière aléatoire par rapport au front actif de chacune des horloges locales Hi. Pour éviter les états métastables, on met en oeuvre des bascules qui ont la particularité de détecter les états métastables et de forcer de manière aléatoire la sortie à un des deux états stables. Le signal de sortie de chacune des bascules (101 à 104) est ensuite dérivé de façon connue par une deuxième série de bascules D (105 à 108). Le circuit de dérivation (22) ainsi réalisé permet de détecter les fronts montants par rapport aux différentes horloges locales Hi. Le signal ainsi dérivé est ensuite traité par une matrice de bascules (23) assurant une translation temporelle de sorte que toutes les sorties des bascules (111 à 115) du dernier étage sont synchronisées à la même fréquence de base Fo. Le module (23) dont le schéma de principe est représenté en figure 4, effectue une remise en phase par rapport à l'horloge de base Fo, pour générer en sortie un mot de N+1 bits que l'on analyse ensuite à chaque coup d'horloge. Chaque bit de ce mot correspond à une des sorties du module dérivateur (22) qui ont été resynchronisées à la fréquence de base Fo. Les bits qui sont à l'état UN indiquent que le dérivateur qui lui est associé a détecté un front montant sur la donnée arrivant.Les bits qui sont à l'état ZERO indiquent que le dérivateur qui lui est associé n'a pas détecté de front montant sur la donnée arrivant. Ce mot de N+1 bits est donc constitué d'une suite de ZERO, puis d'une suite de UN, puis d'une suite de ZERO, puis d'une nouvelle suite de UN, ou inversement. Les bits adjacents qui sont différents permettent de localiser les fronts montants de la donnée par rapport aux différentes horloges Hi . En effet, puisque l'on utilise N+1 dérivateurs, chacun ayant sa propose horloge Hi, et que ces N+1 horloges Hi sont telles que l'on couvre au moins deux périodes de Fo , on détectera dans le cas où T = Tmin deux positions des fronts montants sur la donnée. Pour analyser de manière plus pratique ce mot de N+1 bits, on relie deux-à-deux les bits adjacents par des portes OU~EXCLUSIF.Ainsi, lorsque la sortie i d'une porte OU~EXCLUSIF est à l'état UN, cela signifiera que les horloges Hi et H1+1 se trouvent de chaque coté du front de la donnée, puisque les sorties des dérivateurs correspondants sont différentes. Ces données sont ensuite transmises à un module intégrateur (24). Ce module à pour fonction de mémoriser la dernière détection lorsqu'il n'y a pas de transition sur la ligne pendant un certain temps. Par ailleurs, lorsque la détection de front se fait tantôt entre Hi et Hi+lt et tantôt entre H1#1 et Hi, c'est-à-dire dans le cas où la donnée d'entrée est quasiment en phase avec l'horloge locale Hi, le module intégrateur (24) permet de stabiliser le signal. Ce module est en fait constituer par un circuit RC, c'est-à-dire en numérique par un compteur-décompteur qui s'incrémente plus vite qu'il ne se décrémente.Le signal est ensuite traité par un module "CODE GRAY" (25) destiné à empêcher la situation dans laquelle deux lignes adjacentes ont toutes les deux le même état UN en même temps. Un tel résultat provient du fonctionnement des bascules du module échantillonnage. On a donc en sortie de ce module (25) un mot de N bits composé d'au moins deux bits i et j non adjacents à l'état UN. Le bit i (j) indique que le front montant de la donnée d'entrée se situe entre les horloges Hi et Hi+i (Hj et Ho+1), et qu'il faut donc choisir l'horloge qui se trouve au milieu de celles-ci. Le module (26) suivant dont la figure 5 représente un schéma de principe, permet de sélectionner la bascule qui échantillonne la donnée d'entrée avec une bonne horloge. Pour cela, on doit déterminer la position du premier bit et du deuxième bit à l'état UN, et donner le numéro du bit qui se trouve au milieu des deux bits considérés. Pour le premier bit à l'état UN, on utilise un encodeur de priorité (120) et pour le deuxième bit un automate (121) qui masque le premier bit suivi d'un second encodeur de priorité (122). La sortie de chacun desdits encodeurs (120), (122) donne respectivement le numéro du premier et du deuxième bit à l'état UN. Il suffit alors d'utiliser un additionneur (123) et de faire une division par deux. Le résultat de ce module (26) donne le numéro de la bascule (101 à 104) du module d'échantillonnage (21) que l'on doit sélectionner. Cette information est exploitée par un circuit de multiplexage (27) pour délivrer une trame de sortie resynchronisée. La présente invention est décrite dans ce qui précède à titre d'exemple non limitatif. Il est bien entendu que l'Homme de Métier sera à même de'réaliser de nombreuses variantes d'exécution sans pour autant sortir du cadre de l'invention. REVENDICATIONS 1 - Procédé de synchronisation de données d'entrée d'un processeur de calcul caractérisé en ce que l'on génère à partir d'une horloge centrale une pluralité d'horloges locales déphasées les unes par rapport aux autres, que l'on échantillonne les données d'entrée avec chacune desdites horloges locales et que l'on sélectionne le signal échantillonné présentant des fronts montants positionnés temporellement au milieu des états stables. 2 - Procédé de synchronisation de données selon la revendication 1 caractérisé en ce que le nombre d'horloges locales est au moins égal à 2T0/t min ou - To représente la période de l'oscillateur local - t min représente le retard minimum entre deux horloges consécutives 3 - Procédé de synchronisation de données selon la revendication 2 caractérisé en ce que on dérive chacun desdits signaux échantillonnés, que l'on remette lesdits signaux dérivés en phase avec l'horloge de base pour former un mot de N+1 bits où N représente le nombre d'horloges locales, en ce que l'on sélectionne l'horloge locale Hi correspondant à deux bits consécutifs différents et en ce que l'on sélectionne le signal échantillonné par ladite horloge locale Hi. 4 - Procédé de synchronisation de données selon la revendication 3 caractérisé en ce que la sélection de l'horloge locale Hi est réalisée par détermination du premier et du deuxième bit à l'état UN dudit mot de N+1 bits et par addition du numéro desdits premier et second bit et par division par deux. 5 - Procédé de synchronisation de données selon la revendication 4 caractérisé en ce que l'on traite ledit mot de N+1 bits de façon à obtenir au moins deux bits non adjacents à l'état UN, les autres N-l bits étant à l'état ZERO. 6 - Dispositif de synchronisation de données caractérisé en ce qu'il comporte un générateur (20) d'une pluralités d'horloges locales Hi déphasées reliées à un circuit (21) d'échantillonnage des données d'entrée comportant un étage dérivateur (22), une matrice (23) délivrant à sa sortie un mot de N+1 bits synchrone avec l'horloge de base Fo dont chaque bit correspond à l'une des sorties du module dérivateur (22), et un circuit (24) de sélection de l'horloge Hi échantillonnant les données d'entrée de façon à ce que les fronts montants soient positionnés temporellement entre deux états stables. 7 - Dispositif de synchronisation de données selon la revendication 4 caractérisé en ce qu'il comporte en outre un circuit intégrateur (24) comportant N compteurs-décompteurs stincrémentant plus vite qu'ils ne se décrémentent.