FR2856162A1 - Procede pour la synchronisation d'au moins deux horloges d'un systeme microprocesseurs. - Google Patents

Procede pour la synchronisation d'au moins deux horloges d'un systeme microprocesseurs. Download PDF

Info

Publication number
FR2856162A1
FR2856162A1 FR0406133A FR0406133A FR2856162A1 FR 2856162 A1 FR2856162 A1 FR 2856162A1 FR 0406133 A FR0406133 A FR 0406133A FR 0406133 A FR0406133 A FR 0406133A FR 2856162 A1 FR2856162 A1 FR 2856162A1
Authority
FR
France
Prior art keywords
clock
stamp
transition
time
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0406133A
Other languages
English (en)
Other versions
FR2856162B1 (fr
Inventor
Werner Heinrich
Andreas Weitl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Airbus Defence and Space GmbH
Original Assignee
EADS Deutschland GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EADS Deutschland GmbH filed Critical EADS Deutschland GmbH
Publication of FR2856162A1 publication Critical patent/FR2856162A1/fr
Application granted granted Critical
Publication of FR2856162B1 publication Critical patent/FR2856162B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

On décrit un procédé de synchronisation d'au moins deux horloges d'un système multiprocesseurs, dans lequel une première horloge génère des estampilles successives affichant individuellement le temps, et au moins une seconde horloge est synchronisée avec la première horloge à des intervalles de temps déterminés. Il est prévu que a) à des intervalles de temps prédéterminés, la position temporelle réciproque soit détectée par des flancs de la première et de la seconde horloge, représentant la transition entre deux estampilles successives, que b) un facteur de correction représentant l'écart de temps entre la première et la seconde horloge soit déterminé à partir de la modification de la position temporelle réciproque, que c) à l'aide du facteur de correction, la durée de cycle de la seconde horloge soit ajustée pour réduire l'écart de temps entre la première et la seconde horloge, et que d) les étapes a) à c) soient répétées.

Description

PROCEDE POUR LA SYNCHRONISATION D'AU MOINS DEUX HORLOGES D'UN SYSTEME
MICROPROCESSEURS
La présente invention concerne un procédé pour la 5 synchronisation d'au moins deux horloges d'un système multiprocesseurs.
Dans un système multiprocesseurs, comme celui utilisé, par exemple, pour le traitement de grandes quantités de données et/ou de tâches différentes en temps 10 réel, il est difficile de synchroniser les horloges des processeurs individuels de manière à ce qu'elles fonctionnent de manière identique, c'est-à-dire que leur écart temporel ne dépasse pas une certaine valeur de tolérance prédéterminée. Il faut comprendre ici sous le 15 terme "horloge" un registre d'horloge ou générateur d'impulsions sous forme, par exemple, d'un compteur ("counter") ou d'un registre d'horloge ("timer") qui génère une donnée temporelle d'abord relative sous forme d'une estampille, mais qui peut être convertie en temps 20 réel à la manière d'une horloge en temps absolu. Un compteur est réalisé, la plupart du temps, par un quartz piézoélectrique précis qui oscille à une fréquence déterminée qui est plus ou moins précise en fonction de la qualité et du type de quartz. Un registre de comptage, 25 qui est incrémenté de 1 après chaque durée de période P ou une fraction de celle- ci, est, la plupart, du temps, relié au quartz. Le registre d'horloge est semblable au compteur, mais par contre il comporte un registre supplémentaire sous forme d'un registre appelé registre 30 d'arrêt. Après chaque durée de période T du quartz ou un multiple de celle-ci, le registre de comptage est décrémenté. Dès que celui-ci est décrémenté à zéro; une interruption est générée et le registre de comptage est mis sur la valeur dans le registre d'arrêt.
Un problème résulte, d'une part, d'une déviation fondamentale de l'oscillation de quartz du fait que celui-ci "va" trop rapidement ou trop lentement et, d'autre part, d'une "dérive" en fonction de la température. La figure 2a) représente l'allure de la déviation d'un quartz à température constante, la figure 2b) la dérive d'abord en cas de changement de 5 température, par exemple lors du démarrage du processeur, puis une allure de déviation constante à température constante.
La présente invention part d'un procédé pour la synchronisation d'au moins deux horloges contenues dans 10 un système multiprocesseur, dans lequel une première horloge avec une durée de cycle prédéterminée génère des estampilles successives affichant individuellement le temps et au moins une seconde horloge, qui comporte une durée de cycle réglable, est synchronisée avec la 15 première horloge selon des intervalles de temps déterminés.
L'objectif de la présente invention est de proposer un procédé de ce type de manière à ce qu'un bus, par l'intermédiaire duquel les processeurs du système 20 multiprocesseurs sont reliés les uns aux autres, soit chargé le moins possible par la synchronisation.
Cet objectif est atteint selon la présente invention par le procédé de synchronisation indiqué dans la revendication 1.
Les perfectionnements du procédé selon la présente invention sont indiqués dans les sous-revendications.
Grâce à la présente invention, on propose un procédé pour la synchronisation d'au moins deux horloges contenues dans un système multiprocesseurs, dans lequel 30 une première horloge avec une durée de cycle prédéterminée génère des estampilles successives affichant individuellement le temps et au moins une seconde horloge, qui comporte une durée de cycle réglable, est synchronisée avec la première horloge selon 35 des intervalles de temps déterminés. Il est prévu, selon la présente invention, que a) à des intervalles de temps prédéterminés, la position temporelle réciproque soit détectée par des flancs de la première et de la seconde horloge, représentant la transition entre deux estampilles successives, en que b) un facteur de 5 correction représentant l'écart de temps entre la première et la seconde horloge soit déterminé à partir de la modification de la position temporelle réciproque des flancs de transition de la première et de la seconde horloge, en que c) à l'aide du facteur de correction 10 représentant l'écart de temps entre la première et la seconde horloge, la durée de cycle de la seconde horloge soit ajustée dans le sens d'une réduction de l'écart de temps entre la première horloge et la seconde horloge, et en que d) les étapes a) à c) soient répétées.
Selon un aspect de la présente invention, la position temporelle des flancs de transition de la première horloge et/ou de la seconde horloge peut être détectée par scrutation ("polling") pendant lequel l'estampille de l'horloge concernée est lue au moins deux 20 fois successivement et les estampilles ainsi obtenues sont comparées les unes aux autres et la lecture de l'estampille est répétée jusqu'à ce que l'estampille obtenue en dernier se différencie de l'estampille précédente.
Selon un autre aspect de la présente invention, la modification de la position temporelle du flanc de transition de la première horloge et de la seconde horloge peut être détectée par une recherche de flanc en deux étapes, en lisant l'estampille de l'horloge 30 concernée une fois avant un flanc de transition supposé entre deux estampilles successives et une fois après un flanc de transition supposé entre deux estampilles successives et, à chaque fois, en comparant l'estampille obtenue à l'estampille prévue pour le moment de la 35 lecture et ce processus est poursuivi, moyennant quoi i) une concordance aussi bien de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, que de l'estampille obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue est évaluée dans le sens d'une 5 position correcte du flanc de transition supposé, ii) une concordance de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue et de l'estampille obtenue lors de la lecture après le flanc de transition supposé avec l'estampille 10 prévue, mais avec une estampille plus précoce que l'estampille prévue, est évaluée dans le sens d'une position retardée du flanc de transition supposé ou dans le sens d'un instant de lecture trop précoce, et iii) une concordance de l'estampille obtenue lors de la lecture 15 après le flanc de transition supposé avec l'estampille prévue et de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, mais avec une estampille plus tardive que l'estampille prévue, est évaluée dans le sens d'une 20 position prématurée du flanc de transition supposé ou dans le sens d'un instant de lecture trop tardif.
La lecture des estampilles peut se faire à chaque fois avant et après des flancs de transition supposés différents entre deux estampilles successives différentes.
La lecture des estampilles se fait toutefois, de préférence, à chaque fois avant et après des flancs de transition supposés différents entre deux estampilles successives différentes, en particulier alternativement. 30 Il est particulièrement avantageux que la lecture des estampilles se fasse à chaque fois alternativement avant et après des flancs de transition supposés différents qui se suivent à des intervalles de temps égaux.
Selon un exemple de réalisation particulièrement avantageux de la présente invention, il est prévu que, au début du processus de synchronisation, la position des flancs de transition soit détectée par scrutation en lisant l'estampille de l'horloge concernée au moins deux fois de suite et en comparant les estampilles ainsi 5 obtenues les unes aux autres et en répétant la lecture de l'estampille jusqu'à ce que l'estampille obtenue en dernier se différencie de l'estampille précédente, et qu'ensuite la modification de la position temporelle soit détectée par une recherche de flanc en deux étapes en 10 lisant l'estampille de l'horloge concernée une fois avant un flanc de transition supposé entre deux estampilles successives et une fois après un flanc de transition supposé entre deux estampilles successives et, à chaque fois, en comparant l'estampille obtenue à l'estampille 15 prévue à l'instant de la lecture et que ce processus soit poursuivi, moyennant quoi i) une concordance aussi bien de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, que de l'estampille obtenue lors de la lecture après le flanc de 20 transition supposé avec l'estampille prévue est évaluée dans le sens d'une position correcte du flanc de transition supposé, ii) une concordance de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue et de l'estampille 25 obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue, mais avec une estampille plus précoce que l'estampille prévue, est évaluée dans le sens d'une position retardée du flanc de transition supposé ou dans le sens d'un instant de 30 lecture trop précoce, et iii) une concordance de l'estampille obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue et de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, mais avec 35 une estampille plus tardive que l'estampille prévue, est évaluée dans le sens d'une position prématurée du flanc de transition supposé ou dans le sens d'un instant de lecture trop tardif.
Il est prévu, de préférence, que le facteur de correction représentant l'écart de temps entre la 5 première et la seconde horloge soit déterminé par la comparaison de l'intervalle de temps entre deux flancs de transition mutuellement correspondants de la première et de la seconde horloge.
Selon un autre mode de réalisation préféré de la 10 présente invention, il est prévu que la durée de cycle de la seconde horloge soit ajustée dans le sens d'une réduction de l'écart de temps entre la première et la seconde horloge (étape c)) lorsqu'au moins deux processus de lecture successifs ont eu pour résultat un écart de 15 temps dans la même direction dans le sens soit d'une position retardée des flancs de transition supposés ou dans le sens d'un instant trop précoce de lecture, ou dans le sens d'une position prématurée des flancs de transition supposés ou dans le sens d'un instant trop 20 tardif de lecture.
Selon un mode de réalisation préféré du procédé selon la présente invention, la première horloge est une horloge centrale de précision.
La au moins seconde horloge est, de préférence, une 25 horloge interne d'un processeur contenu dans le système multiprocesseurs.
La seconde horloge interne est, de préférence, une horloge virtuelle qui est générée par un logiciel.
Le système multiprocesseurs comprend, de préférence, 30 plusieurs processeurs avec plusieurs secondes horloges associées à ceux-ci, qui sont synchronisés avec la première horloge ou par l'intermédiaire de celle-ci.
Il est prévu ici, de préférence, que les plusieurs secondes horloges soient synchronisées avec la première 35 horloge respectivement à différents instants successifs.
Des exemples de réalisation du procédé selon la présente invention sont expliqués en détail ci-après à l'aide des dessins.
Les figures montrent: Figure 1 une représentation schématisée d'un système multiprocesseurs dans lequel plusieurs processeurs sont synchronisés à l'aide d'une horloge centrale; Figures 2a) et b) des diagrammes pour expliquer la dérive de temps mesurée à l'aide d'un quartz 10 piézoélectrique; Figure 3 un diagramme pour expliquer une synchronisation continue d'une horloge virtuelle par rapport à une horloge centrale de précision; Figure 4 un diagramme pour expliquer une 15 synchronisation discontinue d'une horloge virtuelle par rapport à une horloge centrale de précision; Figure 5 un diagramme pour expliquer la problématique de l'accès en lecture lors de la synchronisation de deux horloges; Figure 6 un diagramme pour expliquer ce que l'on appelle une recherche de flancs en deux étapes lors de la réalisation du procédé selon la présente invention; Figure 7 un diagramme pour expliquer l'erreur de lecture maximale lors de la recherche de flancs en deux 25 étapes; Figure 8 un diagramme pour expliquer une synchronisation pendant laquelle une horloge interne d'un processeur est synchronisée de manière idéale avec une horloge centrale de précision; Figure 9 un diagramme pour expliquer une synchronisation pendant laquelle une horloge interne d'un processeur fonctionne trop lentement par rapport à une horloge centrale de précision; Figure 10 un diagramme pour expliquer une 35 synchronisation pendant laquelle une horloge interne d'un processeur fonctionne trop rapidement par rapport à une horloge centrale de précision; Figures lia) et b) chacune un diagramme pour expliquer la formation d'un facteur de correction avec 5 une horloge interne d'un processeur fonctionnant trop rapidement ou trop lentement; Figure 12 un diagramme pour expliquer la réalisation d'une correction de démarrage au début de l'exécution du procédé de synchronisation selon la présente invention 10 selon un exemple de réalisation de l'invention; Figure 13 un diagramme pour expliquer la détermination d'un facteur de correction avec une horloge interne d'un processeur fonctionnant trop lentement; Figure 14 un diagramme pour expliquer la 15 détermination d'un facteur de correction avec une horloge interne d'un processeur fonctionnant trop rapidement; Figure 15 un diagramme pour expliquer le problème du "balancement" tel qu'il peut se produire en cas de modification trop directe du facteur de correction; Figures 16 et 17 des diagrammes pour expliquer la modification du facteur de correction avec une horloge interne d'un processeur fonctionnant trop lentement ou trop rapidement selon un exemple de réalisation du procédé selon la présente invention; Figure 18 un diagramme pour expliquer le principe d'une répartition des accès sur un bus commun du système multiprocesseurs; Figure 19 un diagramme pour expliquer les plages de temps différentes pendant lesquelles divers processeurs 30 ont accès au bus commun; et Figure 20 un diagramme qui représente une vue d'ensemble d'un procédé de synchronisation selon un exemple de réalisation de la présente invention.
La figure 1 montre une représentation schématisée 35 d'un système multiprocesseurs dans lequel plusieurs processeurs CPU 1 à CPU 16 sont reliés les uns aux autres par une liaison par bus sous forme d'un bus VME. Pour la synchronisation de ce système multiprocesseurs, il est prévu une première horloge qui est désignée par le terme "Mem Clock". Cette horloge doit être réalisée par un 5 quartz piézoélectrique auquel est couplé un registre de comptage qui est incrémenté de 1 après chaque durée de période T du quartz.
Chacun des processeurs CPU 1 à CPU 16 est muni d'une horloge interne virtuelle, qui est l'une de plusieurs 10 secondes horloges au sens de la présente invention qui doivent être synchronisées avec la première horloge. Ces horloges virtuelles dont réalisées par logiciel et non pas par du matériel. Dans l'exemple de réalisation décrit, l'objectif doit être de maintenir une déviation 15 maximale souhaitée de chacune des secondes horloges virtuelles par rapport à la première horloge, "Mem Clock". Cette déviation peut être prévue, par exemple, inférieure à 5 ps. Cela signifie que deux processeurs différents parmi les processeurs CPU 1 à CPU 16 ne 20 doivent pas dévier de plus de 10 us l'un par rapport à l'autre.
Sans mesures particulières pour la synchronisation de la première et de la second horloge, on obtiendrait une "dérive", comme déjà décrit au début en référence aux 25 figures 2a) et b).
Pour la synchronisation des secondes horloges virtuelles avec la première horloge, il y a principalement deux possibilités pour adapter l'allure de chaque seconde horloge à la première horloge par une correction. La 30 première possibilité, représentée sur la figure 3, consiste à asservir en continu la seconde horloge à la première horloge, c'est-à-dire à corriger l'allure de la seconde horloge à des moments de synchronisation respectifs S de telle manière qu'elle oscille autour de 35 l'allure de la première horloge. L'horloge virtuelle fonctionne ainsi en continu, elle est seulement réglée pour fonctionner respectivement plus rapidement ou plus lentement pour l'asservir à la première horloge.
Dans la synchronisation discontinue représentée sur la figure 4, la seconde horloge virtuelle est remise à la 5 valeur de la première horloge centrale aux moments de synchronisation respectifs S et elle redémarrée à partir de là. L'horloge virtuelle "saute" donc à un autre moment et, suivant que l'horloge virtuelle fonctionne trop rapidement ou trop lentement, il se produit un trou dans 10 la base de temps (pour rattraper le temps "perdu") ou une période de temps est répétée (pour recouvrir le temps "excédentaire").
Une réponse temporelle continue, comme celle représentée sur la figure 3, est, la plupart du temps, 15 préférable, toutefois si les sauts sont suffisamment petits dans un système avec une réponse temporelle discontinue selon la figure 4, des solutions avec une réponse temporelle discontinue sont également praticables.
Une problématique est la résolution de la première horloge, la "Mem Clock". Si cette résolution est, par exemple, de 10 ps, c'est-à-dire que le registre de comptage est incrémenté toutes les 10 ps, cela peut représenter une erreur allant jusqu'à 10 ls lors de la 25 lecture instantanée de l'estampille de la première horloge. comme montré sur la figure 5. Pour l'estampille 150 ps, la valeur 150 us peut être sortie, par exemple lors de la lecture peu après le dernier flanc, la valeur réelle serait d'environ 151 ps. Lors d'un autre accès en 30 lecture peu avant le dernier flanc, une valeur de 150 ps serait de nouveau sortie, la valeur réelle serait cependant de 159 ps. Cela correspond à une erreur absolue de 9 ps, ce qui est trop pour une synchronisation adéquate. On entend par flanc le seuil entre deux 35 estampilles, c'est-à-dire par exemple entre l'estampille ps et 150 us ou entre l'estampille 150 ps et 160 ps.
Il n'est donc pas si facile de prélever la valeur de l'estampille dans la première horloge sans exclure une plus grande erreur de lecture.
Une possibilité simple consiste à chercher le flanc 5 par scrutation, c'est-à-dire que le processeur respectif CPU 1... 16 lit l'estampille de la première horloge au moins deux fois de suite et compare les deux estampilles.
Si elles sont identiques, le CPU lit encore une estampille de la première horloge. Cela est répété 10 jusqu'à ce que l'estampille lue en dernier se différencie de l'estampille précédente. Si cela est le cas, le flanc de la première horloge a été trouvé. Ce principe est très simple à mettre en oeuvre, mais il présente l'inconvénient de charger beaucoup le bus.
Une meilleure possibilité, liée à une charge du bus moindre, consiste en une procédure qui doit être désignée ici par le terme "recherche de flanc en deux étapes".
L'idée ici est de trouver le flanc de la première horloge le plus près possible du flanc supposé de la première 20 horloge simplement à l'aide de deux processus de lecture différents, et ainsi de déterminer le taux de dérive de l'horloge interne du CPU respectif et de la synchroniser avec la vitesse de la première horloge.
Sur la figure 6, les flancs sont représentés par des 25 barres épaisses et minces entre les estampilles respectives. Ici, les flancs à 100 ps, 1100 ps et 2100 ps, c'est-à-dire tous les 1000 ps, doivent être pris comme exemple. A 100 ps, il se produit une lecture peu avant le flanc attendu, elle est désignée par le terme 30 SBF (SyncBeforeFlank). A 1100 ps, la lecture se fait peu après le flanc prévu, ce qui est désigné par le terme SAF (SyncAfterFlank). A 2100 ps, il se produit de nouveau une lecture SBF. Ces deux opérations de lecture ou de synchronisation sont exécutées alternativement. L'écart 35 entre deux opérations de synchronisation, c'est-à-dire l'intervalle de synchronisation tsyncIntervall est constant et il doit être le plus grand possible afin de conduire à une charge du bus réduite. Pour des raisons de clarté, on a utilisé sur le graphique un intervalle de synchronisation tsyncIntervall = 1 ms, mais en réalité, 5 on utiliserait un intervalle plus grand. Pour la lecture SBF à 100 ps, on attend l'estampille 90 ps. Si celle-ci est effectivement lue, une opération de lecture a été effectivement réalisée avant le flanc. Pour la lecture SAF au flanc 1100 ps, on attend une estampille 1100 ps. 10 Si celle-ci est effectivement lue, une opération de lecture a été effectivement réalisée après le flanc. Pour une lecture SBF pour le flanc 2100 ps, on attend de nouveau l'estampille 2090 ps. Si celle-ci est effectivement lue, une opération de lecture a été 15 effectivement réalisée avant le flanc.
Toutefois, si à 100 ps l'estampille 100 ps était déjà lue au lieu de l'estampille 90 ps, le flanc 100 ps de la première horloge serait prématuré, ce qui revient à dire que l'horloge interne du CPU a lu trop tard, c'est20 à-dire qu'elle fonctionne trop lentement. De manière appropriée, cela est également valable pour la lecture SBF au flanc 1100 us. Cependant, si lors de la lecture SAF au flanc 1100 ps, seule l'estampille 1090 ps est lue au lieu de l'estampille prévue 1100 ps, le flanc 1100 ps 25 de la première horloge est trop lent, ce qui revient à dire à l'inverse que l'horloge interne du CPU fonctionne trop rapidement.
Cette recherche de flanc en deux étapes est représentée encore une fois sur la figure 7 de telle 30 manière que les deux opérations de lecture et de synchronisation avant le flanc SBF ou après le flanc SAF sont regroupées en une opération pour le même flanc.
L'intervalle entre SBF et SAF correspond en même temps à l'erreur de lecture maximale.
Pour pouvoir exécuter avec succès la recherche de flanc en deux étapes de cette manière, il est avantageux qu'un flanc soit trouvé par scrutation au départ de la manière décrite au début, puis que la recherche de flanc en deux étapes soit réalisée.
La figure 8 montre la synchronisation d'une horloge 5 interne de CPU qui fonctionne de manière idéale en synchronisation avec la première horloge. Les synchronisations SAF peu après le flanc supposé ou SBF peu avant le flanc supposé se trouvent respectivement dans l'estampille correcte, aucune correction n'a donc 10 besoin d'être effectuée.
La figure 9 montre un cas dans lequel l'horloge interne du CPU fonctionne trop lentement par rapport à la première horloge. Aux repères 1, 2 et 3, les synchronisations SAF, SBF et SAF sont encore dans 15 l'estampille correcte prévue, la déviation d'allure n'est pas encore détectée. Toutefois, au repère 4, l'opération de lecture SBF fournit à la première horloge l'estampille qui se trouve déjà après le flanc, mais on attend l'estampille avant le flanc. Ici, la dérive est détectée, 20 le flanc de la première horloge s'est déjà produit, l'horloge interne du CPU fonctionne donc trop lentement.
Si on corrige l'horloge interne du CPU, une lecture SBF fournit alors au repère 6 effectivement de nouveau la valeur prévue avant le flanc. Au repère 5, lors de la 25 lecture SAF, la valeur est fournie après le flanc.
Dans le cas montré sur la figure 10, l'horloge interne du CPU fonctionne trop rapidement par rapport à la première horloge. Alors qu'aux repères 1 et 2, la lecture SAF fournit la valeur correcte respectivement 30 prévue après le flanc et la lecture SBF fournit la valeur correcte respectivement prévue avant le flanc, au repère 3, lors de la lecture SAF, la valeur de l'estampille est attendue après le flanc, mais en réalité la valeur de l'estampille est fournie avant le flanc. Cela signifie 35 que le flanc au repère 3 est plus tardif que ce que l'on attendait ou que l'horloge interne du CPU fonctionne trop rapidement. En diminuant la durée de cycle, la valeur correcte de l'estampille après le flanc est de nouveau fournie au repère 5, comme prévu pour la lecture SAF. Au repère 4, l'estampille correcte est fournie pour la lecture SBF avant le flanc.
Les figures lia) et b) montrent des exemples du facteur de correction pour une horloge trop rapide ou pour une horloge trop lente.
Sur la figure lia), l'horloge interne fonctionne 10 trop rapidement, pour l'intervalle de temps réel tDistanz = 1 seconde de la première horloge. l'horloge interne a besoin, sur son axe de temps, d'un intervalle corrigé tKorrDistanz = 1,00000655 s.
Sur la figure 11b), l'horloge interne fonctionne 15 trop lentement, pour l'intervalle de temps réel tDistanz = 1 seconde, l'horloge interne a simplement besoin, sur son axe de temps, d'un intervalle de temps corrigé tKorrDistanz = 0,99999345 s.
On peut donc déterminer un facteur de correction à 20 l'aide des opérations de synchronisation de la manière suivante. D'abord, un flanc de la première horloge est déterminé par scrutation, une période fixe est attendue et le flanc de la première horloge est de nouveau déterminé par scrutation. Le temps de l'horloge interne 25 est mesuré pour cette période. De même, le temps de la première horloge est mesuré pour cette période. A partir de là, on peut calculer un premier facteur de correction kF = tinternDifferenz / tMemClockDifferenz - 1 (1) voir figure 12.
Avec ce facteur de correction de départ, la 35 synchronisation peut commencer. Si une erreur est détectée pendant la synchronisation, le facteur de correction doit être adapté.
La figure 13 montre le calcul du facteur de correction pour une horloge interne fonctionnant trop 5 lentement sur l'axe de temps de la première horloge. Les intervalles tsyncIntervall entre les opérations de synchronisation SBF, SAF sont choisis volontairement très courts pour mettre en évidence le principe de calcul du facteur de correction. Normalement, ceux-ci sont à une 10 plus grande distance les uns des autres. Au repère 1, la valeur de l'estampille peu après le flanc de la première horloge a été lue pour une lecture SBF, l'horloge interne fonctionnait donc trop lentement et a dû être corrigée.
Au repère 2, c'est de nouveau la valeur de l'estampille 15 peu après le flanc de la première horloge. au lieu de l'estampille prévue avant le flanc, qui a été lue pour une lecture SBF, l'horloge interne fonctionne toujours trop lentement et doit être de nouveau corrigée. Entre les deux déviations erronées détectées de l'horloge 20 interne de la première horloge se trouvent cinq opérations de synchronisation ou un intervalle de temps de tgesIntervall = 6. tsyncIntervall. En outre, le facteur de correction kF existant jusqu'à présent est connu. Le nouveau facteur de correction peut être calculé 25 pour kF = kF - tKorrZeit / tgesIntervall (2) Moyennant quoi tKorrZeit = tmaxFlankIntervall / 2 (3) avec l'erreur de lecture maximale tmaxFlankIntervall montrée sur la figure 7. La nouvelle erreur doit être 35 soustraite car l'horloge interne fonctionne trop lentement. Cette formule n'est donc valable que pour la lecture SBF.
Si l'horloge interne fonctionne trop rapidement, ce qui est détecté pendant la lecture SAF, le facteur de 5 correction doit être modifié, la formule valable est alors kF = kF + tKorrZeit / tgesIntervall (4) La correction de l'horloge interne trop rapide est montrée sur la figure 14.
Si le facteur de correction était modifié dès que l'on détecte une alluretrop rapide ou trop lente de l'horloge interne comparée avec la première horloge, cela 15 pourrait conduire à un "balancement" de telle manière qu'à chaque opération de synchronisation SAF, au cours de laquelle l'estampille située avant le flanc est lue au lieu de l'estampille prévue après le flanc, ce qui revient à une allure trop rapide de l'horloge interne, 20 celle-ci est ralentie jusqu'à ce que, lors de la lecture BSF suivante, la valeur de l'estampille qui suit le flanc est lue au lieu de l'estampille prévue avant le flanc, après quoi l'horloge interne est de nouveau accélérée, ce qui conduit de nouveau à une allure trop rapide et ainsi 25 de suite. Une séquence de synchronisation exagérée de ce type est montrée sur la figure 15.
Pour empêcher cela, une modification du facteur de correction kF n'est effectuée que lorsqu'une dérive constante est constatée de telle manière qu'une première 30 détection d'une déviation d'allure dans une direction déterminée est suivie d'une deuxième détection d'une déviation d'allure dans la même direction, comme représenté sur la figure 16 pour une dérive constante d'une horloge fonctionnant trop lentement, et sur la 35 figure 17 pour une dérive constante d'une horloge fonctionnant trop rapidement.
La figure 18 montre le principe de la répartition des accès au bus de plusieurs processeurs CPU 0 à CPU 15 contenus dans le système multiprocesseurs avec pour objectif d'éviter une collision. Pendant la phase 5 d'initialisation au début de l'opération de synchronisation, chaque CPU prend une estampille de la première horloge comme valeur de référence à l'aide de laquelle on peut calculer le point de départ de la synchronisation. Pour cela, chaque CPU doit avoir une 10 identification claire pour pouvoir mettre à disposition de chaque CPU un point de départ différent. Chaque autre opération de synchronisation ou accès à la première horloge ne peut alors être exécutée qu'après multiplication d'un intervalle minimal défini préalablement. On garantit ainsi que les CPU ne se bloquent pas mutuellement lors de l'accès en lecture de la première horloge.
La figure 19 montre des plages de temps respectivement séparées par un intervalle de sécurité 20 suffisant dans lesquelles les CPU individuels, ici le CPU 1 et le CPU 2, peuvent lire l'estampille de la première horloge. représentée sur l'axe de temps de la première horloge.
La figure 20 montre une vue d'ensemble d'un modèle 25 de synchronisation selon un exemple de réalisation de la présente invention dans lequel le "temps interne" de plusieurs processeurs contenus dans un système multiprocesseurs est synchronisé avec un "temps réel" fourni par une première horloge "Mem Clock". Les 30 processeurs individuels fournissent alors, pour une utilisation par leur propre application, un "temps virtuel" qui dévie du "temps réel" au maximum d'une tolérance de temps prédéterminée. Ici, la première horloge est utilisée purement passivement comme esclave. 35 Pendant la phase d'initialisation, les accès en lecture au bus des divers CPU doivent être répartis sur la première horloge de manière à ce qu'ils ne se perturbent pas mutuellement ou de manière à éviter des temporisations lors de l'accès à la première horloge.
Pour cela, pendant l'initialisation, un premier moment 5 d'accès valable à la première horloge et le point de départ pour la première opération de synchronisation sont calculés pour chaque CPU, comme déjà expliqué précédemment.
Pour la synchronisation, on utilise la recherche de 10 flanc en deux étapes, c'est-à-dire qu'il existe deux opérations de synchronisation différentes, à savoir une synchronisation peu avant le flanc suivant SBF et une synchronisation peu après le dernier flanc SAF. Celles-ci sont démarrées alternativement avec un intervalle de 15 synchronisation déterminé tsyncIntervall.
Enfin, l'horloge virtuelle est synchronisée et corrigée cycliquement, c'est-à-dire que la différence d'horloge actuelle est déterminée entre l'horloge interne et l'horloge virtuelle après un intervalle de mise à jour 20 (update) déterminé. Cette opération de mise à jour de l'horloge virtuelle est appelée "UpdateVirtualClock" (UVC).
Il existe ainsi deux "algorithmes de synchronisation", à savoir "SyncBeforeFlank" ou 25 "SyncAfterFlank" pour le calcul ou la mise à jour du facteur de correction à partir du "temps réel" de la première horloge et du temps interne du registre de base de temps de chaque CPU, et "UpdateVirtualClock" pour le calcul ou la mise à jour de la différence d'horloge de 30 l'horloge interne et l'horloge virtuelle à partir de leurs valeurs de référence, du facteur de correction actuel kF et d'un temps interne actuel du registre de base de temps.
Dans l'exemple de réalisation décrit ci-dessus, la 35 première horloge centrale de précision a été considérée comme la première horloge au sens de la présente invention dont les flancs ont été trouvés avec les opérations de lecture SAF peu après le flanc et SBF peu avant le flanc sur la base de la base de temps de chaque horloge interne de CPU comme seconde horloge. En d'autres 5 termes, les opérations de lecture SAF ou SBF, qui ont pour objectif d'obtenir les flancs supposés de la première horloge, sont "déclenchées" par les flancs de chaque horloge interne de CPU.
Avec une modification appropriée de l'algorithme de 10 synchronisation, on peut cependant exécuter la recherche de flanc en deux étapes également dans l'autre direction, c'est-à-dire que les opérations de lecture SAF ou SBF sont "déclenchées" par la première horloge pour trouver les flancs supposés de chaque horloge interne de CPU.
15 Pour cela, il suffit d'échanger la première horloge et "l'horloge interne de CPU" sur les figures 8 à 17 et de procéder à des modifications correspondantes dans les équations (1) à (4).

Claims (14)

REVENDICATIONS
1. Procédé pour la synchronisation d'au moins deux horloges contenues dans un système multiprocesseurs, dans 5 lequel une première horloge avec une durée de cycle prédéterminée génère des estampilles successives affichant individuellement le temps, et au moins une seconde horloge qui comporte une durée de cycle réglable est synchronisée avec la première horloge selon des 10 intervalles de temps déterminés, caractérisé en ce que a) à des intervalles de temps prédéterminés, la position temporelle réciproque est détectée par des flancs de la première horloge et de la seconde horloge, représentant la transition entre deux estampilles successives, en ce 15 que b) un facteur de correction représentant l'écart de temps entre la première horloge et la seconde horloge est déterminé à partir de la modification de la position temporelle réciproque des flancs de transition de la première horloge et de la seconde horloge, en ce que c) à 20 l'aide du facteur de correction représentant l'écart de temps entre la première horloge et la seconde horloge, la durée de cycle de la seconde horloge est ajustée dans le sens d'une réduction de l'écart de temps entre la première horloge et la seconde horloge, et en ce que d) 25 les étapes a) à c) sont répétées.
2. Procédé selon la revendication 1, caractérisé en ce que la position temporelle des flancs de transition de la première horloge et/ou de la seconde horloge est 30 détectée par scrutation pendant lequel l'estampille de l'horloge concernée est lue au moins deux fois de suite et les estampilles ainsi obtenues sont comparées les unes aux autres, et la lecture de l'estampille est répétée jusqu'à ce que l'estampille obtenue en dernier se 35 différencie de l'estampille précédente.
3. Procédé selon la revendication 1 ou 2, caractérisé en ce que la modification de la position temporelle du flanc de transition de la première horloge et de la seconde horloge est détectée par une recherche 5 de flanc en deux étapes en lisant l'estampille de l'horloge concernée une fois avant un flanc de transition supposé entre deux estampilles successives, et une fois après un flanc de transition supposé entre deux estampilles successives, et à chaque fois, en comparant 10 l'estampille obtenue à l'estampille prévue pour le moment de la lecture, et ce processus est poursuivi, moyennant quoi i) une concordance aussi bien de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, que de l'estampille 15 obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue, est évaluée dans le sens d'une position correcte du flanc de transition supposé, ii) une concordance de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec 20 l'estampille prévue et de l'estampille obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue, mais avec une estampille plus précoce que l'estampille prévue, est évaluée dans le sens d'une position retardée du flanc de transition supposé, 25 et iii) une concordance de l'estampille obtenue lors de la lecture après le flanc de transition supposé avec l'estampille prévue et de l'estampille obtenue lors de la lecture avant le flanc de transition supposé avec l'estampille prévue, mais avec une estampille plus 30 tardive que l'estampille prévue, est évaluée dans le sens d'une position prématurée du flanc de transition supposé.
4. Procédé selon la revendication 3, caractérisé en ce que la lecture des estampilles se fait à chaque fois 35 avant et après le même flanc de transition supposé entre les deux mêmes estampilles successives.
5. Procédé selon la revendication 3, caractérisé en ce que la lecture des estampilles se fait à chaque fois avant et après des flancs de transition supposés 5 différents entre deux estampilles successives différentes.
6. Procédé selon la revendication 5, caractérisé en ce que la lecture des estampilles se fait à chaque fois 10 alternativement avant et après des flancs de transition supposés différents qui se suivent à des intervalles de temps égaux.
7. Procédé selon l'une quelconque des revendications 15 2 à 6, caractérisé en ce que, au début du processus de synchronisation, la position des flancs de transition est détectée par scrutation selon la revendication 2, et en ce qu'ensuite, la modification de la position temporelle est détectée par une recherche de flanc en deux étapes 20 selon la revendication 3.
8. Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce que le facteur de correction représentant l'écart de temps entre la première horloge 25 et la seconde horloge est déterminé par la comparaison de l'intervalle de temps entre deux flancs de transition mutuellement correspondants de la première et de la seconde horloge.
9. Procédé selon l'une quelconque des revendications 3 à 8, caractérisé en ce que la durée de cycle de la seconde horloge est ajustée dans le sens d'une réduction de l'écart de temps entre la première horloge et la seconde horloge (étape c)) lorsqu'au moins deux processus 35 de lecture successifs ont eu pour résultat un écart de temps dans la même direction dans le sens soit d'une position retardée, soit d'une position prématurée des flancs de transition supposés.
10. Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que la première horloge est une horloge centrale de précision.
11. Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce que la au moins 10 seconde horloge est une horloge interne d'un processeur contenu dans le système multiprocesseurs.
12. Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce que la seconde 15 horloge interne est une horloge virtuelle qui est générée par un logiciel.
13. Procédé selon l'une quelconque des revendications 1 à 12, caractérisé en ce que le système 20 multiprocesseurs comprend plusieurs processeurs avec plusieurs secondes horloges associées à ceux-ci, qui sont synchronisées avec la première horloge.
14. Procédé selon la revendication 13, caractérisé 25 en ce que les plusieurs secondes horloges sont synchronisées avec la première horloge respectivement à différents moments successifs.
FR0406133A 2003-06-13 2004-06-07 Procede pour la synchronisation d'au moins deux horloges d'un systeme microprocesseurs. Expired - Fee Related FR2856162B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10327116A DE10327116B4 (de) 2003-06-13 2003-06-13 Verfahren zur Zeitsynchronisation von mindestens zwei in einem Mikroprozessorsystem enthaltenden Uhren

Publications (2)

Publication Number Publication Date
FR2856162A1 true FR2856162A1 (fr) 2004-12-17
FR2856162B1 FR2856162B1 (fr) 2008-05-16

Family

ID=32731189

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0406133A Expired - Fee Related FR2856162B1 (fr) 2003-06-13 2004-06-07 Procede pour la synchronisation d'au moins deux horloges d'un systeme microprocesseurs.

Country Status (5)

Country Link
US (1) US7194648B2 (fr)
DE (1) DE10327116B4 (fr)
FR (1) FR2856162B1 (fr)
GB (1) GB2403566B (fr)
IT (1) ITMI20041129A1 (fr)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237152B2 (en) * 2003-10-24 2007-06-26 Honeywell International Inc. Fail-operational global time reference in a redundant synchronous data bus system
US7512826B2 (en) * 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
DE102006012421B3 (de) * 2006-03-17 2007-12-13 Görlitz Ag Verfahren zum Abgleich der Geräteuhr eines Energiemessgeräts
US8108364B2 (en) * 2008-08-06 2012-01-31 International Business Machines Corporation Representation of system clock changes in time based file systems
DE102008049161A1 (de) * 2008-09-24 2010-04-01 Siemens Aktiengesellschaft Mikroprozessorsystem mit mehreren signaltechnisch miteinander verbundenen Mikroprozessoren
US8977881B2 (en) 2011-08-12 2015-03-10 Apple Inc. Controller core time base synchronization
US9759703B2 (en) 2013-09-27 2017-09-12 Li-Cor, Inc. Systems and methods for measuring gas flux
US9705892B2 (en) * 2014-06-27 2017-07-11 Intel Corporation Trusted time service for offline mode
US9507646B2 (en) * 2015-02-11 2016-11-29 International Business Machines Corporation Cycle-level thread alignment on multi-threaded processors
US10838450B2 (en) * 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US11962306B2 (en) 2021-06-29 2024-04-16 Nvidia Corporation Clock anomaly detection
US20230244264A1 (en) * 2022-01-31 2023-08-03 Nvidia Corporation Fast Clock Detection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5070517A (en) * 1987-11-23 1991-12-03 Erika Kochler Method and circuit for retuning the frequency of a frequency source
US5875320A (en) * 1997-03-24 1999-02-23 International Business Machines Corporation System and method for synchronizing plural processor clocks in a multiprocessor system
WO2001050674A1 (fr) * 1999-12-30 2001-07-12 Nokia Networks Oy Synchronisation dans un systeme de telecommunication a commutation par paquets
US6449291B1 (en) * 1998-11-24 2002-09-10 3Com Corporation Method and apparatus for time synchronization in a communication system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5896524A (en) * 1997-02-06 1999-04-20 Digital Equipment Corporation Off-line clock synchronization for multiprocessor event traces
US6125368A (en) * 1997-02-28 2000-09-26 Oracle Corporation Fault-tolerant timestamp generation for multi-node parallel databases
US6011823A (en) * 1998-01-06 2000-01-04 Maker Communications, Inc. Combined synchronous residual time stamp generator and service clock regenerator architecture
US6199169B1 (en) * 1998-03-31 2001-03-06 Compaq Computer Corporation System and method for synchronizing time across a computer cluster
US7191354B2 (en) * 2001-03-29 2007-03-13 Nokia Corporation Method for synchronizing a first clock to a second clock, processing unit and synchronization system
US7043651B2 (en) * 2001-09-18 2006-05-09 Nortel Networks Limited Technique for synchronizing clocks in a network
US20030179780A1 (en) * 2002-03-20 2003-09-25 Zarlink Semiconductor V.N. Inc. Method of detecting drift between two clocks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5070517A (en) * 1987-11-23 1991-12-03 Erika Kochler Method and circuit for retuning the frequency of a frequency source
US5875320A (en) * 1997-03-24 1999-02-23 International Business Machines Corporation System and method for synchronizing plural processor clocks in a multiprocessor system
US6449291B1 (en) * 1998-11-24 2002-09-10 3Com Corporation Method and apparatus for time synchronization in a communication system
WO2001050674A1 (fr) * 1999-12-30 2001-07-12 Nokia Networks Oy Synchronisation dans un systeme de telecommunication a commutation par paquets

Also Published As

Publication number Publication date
DE10327116B4 (de) 2006-03-16
DE10327116A1 (de) 2005-01-13
US20050066211A1 (en) 2005-03-24
FR2856162B1 (fr) 2008-05-16
GB0413094D0 (en) 2004-07-14
GB2403566A (en) 2005-01-05
GB2403566B (en) 2006-03-22
ITMI20041129A1 (it) 2004-09-04
US7194648B2 (en) 2007-03-20

Similar Documents

Publication Publication Date Title
US11177896B2 (en) Time synchronization device and time synchronization method
FR2856162A1 (fr) Procede pour la synchronisation d'au moins deux horloges d'un systeme microprocesseurs.
CN108923876B (zh) 时间同步方法、装置及系统
US7916758B2 (en) Method and system for precise-clock synchronization, and device for precise-clock frequency/time synchronization
US9331838B2 (en) Method for synchronizing clocks in nodes of a vehicle network and node designed to perform the method
EP1756987B1 (fr) Procede et systeme de synchronisation distribuee
KR101242419B1 (ko) 병렬처리 기반의 시각 동기화 장치
CN111510237B (zh) 修改时钟信号的控制器和方法、同步装置
US9952620B2 (en) Time-synchronizing a group of nodes
CN106533399B (zh) 修改时钟信号的电路和方法及执行时间敏感任务的装置
CH690526A5 (fr) Procédé pour maintenir et ajuster la précision de pièces d'horlogerie électroniques et pièces d'horlogerie utilisant un tel procédé.
CN107402534B (zh) 调节方法、EtherCAT主站及计算机可读存储介质
CN112019835B (zh) 动态视觉传感器模组的帧率验证装置、方法及存储介质
EP0015014A1 (fr) Dispositif de resynchronisation rapide d'une horloge
US20200382233A1 (en) Information processing apparatus and time synchronization method
CA3053707A1 (fr) Procede et systeme de synchronisation
US11949767B2 (en) Communication apparatus, method of controlling communication apparatus, and storage medium
EP3142286B1 (fr) Dispositifs et procédé de synchronisation
JP2011083841A (ja) ロボット制御装置、ロボット制御システム及びロボット制御方法
EP0526359B1 (fr) Procédé et dispositif de synchronisation d'un signal
EP4033680A1 (fr) Procédé de synchronisation de domaines temporels d'un système sur puce
JP2021182808A (ja) 同期制御システム
JP2018189592A (ja) 時刻同期装置、時刻同期方法及び時刻同期プログラム
JP2010212763A (ja) データ再生装置
WO2012141711A1 (fr) Appareil de génération de signal d'horloge

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 13

ST Notification of lapse

Effective date: 20180228