WO2005096123A2 - Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges. - Google Patents

Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges. Download PDF

Info

Publication number
WO2005096123A2
WO2005096123A2 PCT/FR2005/000379 FR2005000379W WO2005096123A2 WO 2005096123 A2 WO2005096123 A2 WO 2005096123A2 FR 2005000379 W FR2005000379 W FR 2005000379W WO 2005096123 A2 WO2005096123 A2 WO 2005096123A2
Authority
WO
WIPO (PCT)
Prior art keywords
time
clock
values
common
interval
Prior art date
Application number
PCT/FR2005/000379
Other languages
English (en)
Other versions
WO2005096123A3 (fr
Inventor
Philippe Bonnifait
Paul François Pierre CRUBILLE
Véronique Noëlle Marie CHERFAOUI
El Hadji Amadou Gning
Mohamed Shawky
Olivier Michel Bezet
Géry BRISSOT
Original Assignee
Centre National De La Recherche Scientifique (Cnrs)
Universite De Technologie De Compiegne (Utc)
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 Centre National De La Recherche Scientifique (Cnrs), Universite De Technologie De Compiegne (Utc) filed Critical Centre National De La Recherche Scientifique (Cnrs)
Priority to JP2007501304A priority Critical patent/JP4829876B2/ja
Priority to US10/598,442 priority patent/US7889764B2/en
Priority to EP05729336.7A priority patent/EP1728140B1/fr
Publication of WO2005096123A2 publication Critical patent/WO2005096123A2/fr
Publication of WO2005096123A3 publication Critical patent/WO2005096123A3/fr

Links

Classifications

    • 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
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • 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
    • 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/14Time supervision arrangements, e.g. real time clock

Definitions

  • the invention relates to a method for determining a correspondence between the times indicated by the internal clocks of a plurality of machines connected to a network, such as sensors or computers, as well as to a method for synchronizing the data originating from said machines. .
  • a network such as sensors or computers
  • synchronizing data means ordering them chronologically according to their acquisition time; in a more limited sense, it also means “dating” these same data with respect to a single time reference.
  • Synchronize clocks means forcing them to indicate the same time at a given time.
  • a data synchronization process is necessary, for example, in the field of validation of driving assistance devices.
  • test motor cars are equipped with various sensors connected in a network and making it possible to acquire information on the vehicle at the same time (average speed, acceleration ... ), on the interaction with other vehicles (relative distance and speed %) and on the driver's behavior (reaction time, gaze direction ).
  • the data acquired by these various sensors and those recorded by the driving assistance devices must be synchronized in order to be able to be used by an ergonomist, and the precision of the synchronization must be better than a millisecond, and preferably better than 100 ⁇ s, for data acquisition rates up to 1 kHz.
  • the most obvious solution to the problem of synchronizing data from a plurality of devices is to synchronize all clocks. Each device assigns a “date” to the data it records and, since the clocks are synchronized with each other, all the dates can be directly compared.
  • Clock synchronization can be performed in hardware or software: a general introduction to these techniques is provided in the article by JA Fonseca and P. Fonseca "An overview of clock synchronization solutions", 4 th IFAC International Symposium, Sicica, Argentina , 2000. Hardware solutions are based on the use of an external clock signal, common to all devices. In this way one can obtain a very high precision, for example by the use of an atomic clock, such as that of the GPS system. On the other hand, these solutions have the drawback of requiring dedicated hardware: it is not possible to connect devices that are not designed to use an external clock signal to the network.
  • Software solutions include the use of software clocks (variables stored in memory) controlled by the "hardware" clock of each device connected to the network. These software clocks are synchronized, so as to indicate approximately the same time at all times.
  • software clocks variables stored in memory
  • These software clocks are synchronized, so as to indicate approximately the same time at all times.
  • two classes can still be distinguished: either a single synchronization is carried out at the start of the network usage session, and it is assumed that the clocks drifting can be neglected; either resynchronizations are also carried out during use; this is the technique adopted, for example, by the NTP protocol (Network Time Protocol).
  • the clocks of the latter exhibit drifts which can reach 300 ⁇ s / s, more than one second per hour. Replacing these clocks with better quality components amounts to a material, expensive and inflexible solution.
  • the second class of solutions presents a difficulty linked to the monotony of clocks. If, for example, a clock has moved ahead of the reference time, it will be brought back during resynchronization. If a first data item was recorded immediately before the resynchronization instant and a second data item immediately after, the date of the second recording is earlier than that of the first one and the temporal order of the data is reversed.
  • An object of the present invention is a method for establishing a correspondence between the local times of two or more machines whose clocks are not synchronized. Another object of the present invention is such a method, with improved precision compared to the prior art. Yet another object of the present invention is such a method, with known precision and modeled by an interval.
  • the present invention also relates to a method for synchronizing data recorded by two or more machines, or generated by two or more devices, which does not require synchronization of the clocks of said devices or machines, and which is based on establishing a correspondence between the local times of two or more machines whose clocks are not synchronized.
  • At least one of the aforementioned objects is achieved using a method for establishing an interval correspondence between the time indicated by a first monotonic clock and the time indicated by a second clock, also monotonic, characterized in that it puts implementing, over at least one time range, a first time reference common to the first and the second clock and monotonic on said range, and in that said method comprises the following steps: a) determination of a first delimited time interval by a first pair of time values of the first clock and belonging to a first time range over which said said exists first time reference common to the first and to the second clock; b) determining a second time interval delimited by a second pair of values of the time of the first clock and belonging to a second time range over which there is said first time reference common to the first and to the second clock; c) determination, using the common time reference, of a third time interval, delimited by a first pair of time values of the second clock, and containing the first time interval; d) determination, using the common time reference, of a fourth time interval, de
  • step c) comprises the following operations: d) determination of a seventh and an eighth time interval, delimited by a fourth and fifth pair of time values of the second clock respectively and belonging to the first time range, such that said first time interval is between said seventh and eighth time intervals; c2) determining a first, second and third value of the first common time reference, included in said first, seventh and eighth time intervals respectively; c3) calculation by interpolation of said third time interval, using said first, seventh and eighth time intervals and said first, second and third values of the first common time reference; and step d) comprises the following operations: d1) determination of a ninth and a tenth time interval, delimited by a sixth and seventh pair of time values of the second clock respectively and belonging to the second time range, such that said second time interval is between said ninth and tenth intervals; d2) determining a fourth, fifth and sixth value of the first common time reference, included in said second, ninth and tenth time intervals respectively; d3) calculation by inter
  • operation c3) is carried out by replacing said first, second and third values of the common time reference by time intervals whose width is equal to the discretization of the first common time reference over the first time range, and l operation d3) is performed by replacing said fourth, fifth and sixth values of the common time reference with time intervals whose width is equal to the discretization of the first common time reference over the second time range.
  • a first reading of the first clock is repeatedly recorded, followed by a reading of the first common time reference and then by a second reading of the first clock.
  • step c) comprises the following operations: d) determination of a seventh and an eighth value of the time of the second clock belonging to the first time range, such that said first time interval is between said seventh and eighth values; c2) determining a first, second and third interval of values of the first common time reference, comprising said first time interval and said seventh and eighth time values of the second clock respectively; c3) calculation by interpolation of said third time interval, using said first time value interval of the first clock, said seventh and eighth time values of the second clock and said first, second and third value intervals of the first common time reference; and step d) comprises the following operations: d1) determining a ninth and a tenth time value of the second clock belonging to the second time range, such that said second time interval is between said ninth and tenth values; d2) determining a fourth, fifth and sixth value interval of the first common time reference, comprising said second time interval and said ninth and tenth time values of the second clock; d3) calculation by interpolation of said fourth
  • operations c3) and d3) are carried out by replacing said seventh, eighth, ninth and tenth values of the time of the second clock by time intervals whose width is equal to the discretization of the time of the second clock.
  • a first reading of the first common time reference is repeatedly recorded, followed by a reading of the first clock and then by a second reading of the first reference common time, and independently a first reading of the first common time reference is also recorded several times, followed by a reading of the of the second clock (and then by a second reading of the first common time reference, and operations d), c2), c3), d1), d2) and d3) are performed using these records.
  • the calculations by interpolation or extrapolation mentioned above are more precisely linear interpolations or extrapolations, or linear by intervals.
  • the first time reference common to the first and to the second clock exists over at least two distinct time ranges and may include a break in monotony from one time range to another, a second common monotonic time reference is used in order to to resolve the ambiguities which result from the non-monotony of the first common time reference.
  • the invention also relates to a method for synchronizing the data recorded and dated by a first machine, having a first clock, with respect to the local time of a second machine, having a second clock, characterized in that the dating takes place by associating with each data recorded by the first machine a fifth time interval, delimited by a third pair of values of the time of the first clock, and in that the synchronization is effected by determining, by a method as described above, a sixth time interval, delimited by a third pair of values of the time of the second clock and containing said fifth time interval.
  • the first common time reference is provided by the clock of a synchronous bus which at least temporarily connects said first and second machines.
  • such a method of synchronizing data is broken down into a first sub-method of recording clock readings as described above, performed locally by each machine for which it is desired to be able to synchronize the data, and a second synchronization process proper, carried out by a single machine to which all the data has been transferred after the end of the data recording session.
  • FIG. 1A and 1B illustrate how the determination can be made a correspondence between the times indicated by two separate and non-synchronized clocks
  • Figures 2, 3A - 3L, 4 and 5, as well as tables Tab.A, Tab.B and Tab.C, illustrate by a concrete example a method constituting an embodiment of the invention
  • Figure 6 shows a flow diagram of this process.
  • real time is meant physical time, which cannot be known precisely and of which the clocks give only an approximation; in this document, “t” indicates a real time value.
  • clock is meant a digital clock, constituted by an oscillator coupled to a counter.
  • a "synchronous bus” is a bus on which a clock signal is broadcast.
  • local time of a machine is meant the time measured by the clock of this machine.
  • a local time value is indicated by "T”.
  • date of a data recorded by a machine is meant either the time read on the clock of the machine at the time of the recording of the data, or the interval between two readings of this clock, carried out before and after said registration. Any ambiguity will be removed by the context and by the notation: thus, the date indicated by "[TJ" is in fact the interval between T and T. With T ⁇ T. In reality, any date can be considered as an interval: even if we know with certainty what was the value indicated by the clock of the machine at the time of the recording of a data, there remains an indeterminacy ⁇ due to the discretization of said clock.
  • offset is meant the difference between the time indicated by two clocks at a given instant, or between the time of a clock and the real time.
  • drift between two clocks, or a clock and real time, we mean the derivative of the offset from local time of one of the clocks or real time. Unless otherwise indicated in this document, it is considered that, for each pair of clocks, the drift is constant over time and that, consequently, the offset is a linear function with respect to time (assumption of linear drifts). In this case, the drift can be calculated by knowing two offsets determined on different dates. If the offsets and / or dates are intervals, the drift is also one:
  • Exhibitors 1 and 2 refer to the first and second dates on which an offset is determined.
  • synchronization by intervals of the data of machine B with respect to machine A is meant the determination, for each data recorded by machine B with a date [T B ], of an interval [T AB ] of local time of machine A as T AB precedes
  • FIGS. 1A and 1 B illustrate how one can proceed to determine the correspondence between the times T A and T B indicated by two clocks A and B.
  • the discretization of the clocks has been neglected ( ⁇ -> 0) and therefore the lines T A (t) and T B (t), which actually have a staircase shape, have been approached by straight lines.
  • A, B and C such as computers, each having an internal clock H A , H B and H c which measures a local time 7 A (t), T B (t) and 7 " c (t) respectively, as well as a synchronous BUS bus, such as a FireWire ® bus (IEEE 1394) having its own clock H BU s having an accuracy better than 3 ⁇ s in the most case unfavorable according to the IEEE1394a standard.
  • the machines can connect and disconnect from the BUS bus independently of each other, whenever a reconfiguration of the system occurs (for example, each time a machine connects or disconnects), an interrupt signal is transmitted on the bus.
  • reference machine One of the machines connected to the network is named "reference machine” and its name is known by the other machines; in the figure it is machine B, characterized by a thick outline.
  • the reference machine cannot be considered as a “master” machine in a centralized system: any machine on the network can be chosen to temporarily assume this function. Indeed, a new reference machine is chosen randomly at each interruption, which makes it possible to ensure the functioning of the system even in the event of disconnection of the old reference machine.
  • Each machine is also equipped with a bus interface l A , l B and l c , comprising a clock, HI A , HI B and Hl c respectively, controlled by H BU s-
  • the clock of the bus H BU s occurred by one of the I interfaces (called “Cycle Master” in the IEEE FireWire standard).
  • the Hl clocks are slaved on H BU s.
  • the bus clock H B us has a limited capacity counter, which is reset to zero every 128 s, but the interface clocks have a software extension with a capacity large enough so that overruns do not occur during the duration of the system.
  • the time measured by the clock of the interface HI A , HI B and Hic ("interface time") of machine A, B and C is indicated by NT A (t), NT B (t) and NT c (t) respectively.
  • One of the machines is chosen to "give the network time”: this means that the interface clocks of all the other machines are synchronized with its own.
  • a new machine is chosen for this task and the software extension of the interface clocks is reset to zero: after the interruption, all clocks therefore indicate the same time as the clock on the bus H B us-
  • the machine which gives the network time is not necessarily the reference machine. If a machine is disconnected from the network, it is its own reference machine and its network time is the time of its own interface clock.
  • time NT of the network constitutes a first temporal reference common to all the machines connected to the bus BUS, but not monotonic.
  • the time of the reference machine constitutes a second time reference common to all the machines connected to the BUS bus and, moreover, monotonous.
  • This second time reference is nevertheless very imprecise because, in order to know it, a machine other than the reference one must make a request via the bus, which requires a relatively long time which cannot be determined a priori.
  • each machine records, independently of the others, data and their date in the form of an interval, for example sensor acquisitions.
  • each machine builds a so-called “parking meter” file, which consists of a series of lines.
  • the lines are filled at approximately regular intervals, for example of about one second, and they include five fields: TL1 is a first reading of the local time of the machine; TR is a reading of the network time; TL2 is a second reading of the local time of the machine; NMR is the name of the reference machine; and TMR is the local time of the reference machine.
  • the first three readings must be taken in order, so that TR is between TL1 and TL2.
  • the machine fills an "exception line" by assigning the fields TL1, TR, TL2 and TMR the value 0 and the field NMR the conventional name "BUS_RESET".
  • Filling time stamp files is a low-priority, low-cost process that does not significantly interfere with recording and dating events.
  • the time stamp files are transferred to the same computer and a proper resynchronization sub-procedure can be started.
  • Tables Tab.A, Tab.B and Tab.C show part of the content of the time stamp files of machines A, B and C respectively, hereinafter called FHA, FHB and FHC respectively. Only the two lines which precede and follow each interruption are shown; moreover, for the sake of clarity and space saving, the TL2 field does not contain the value of the second reading of the local time of the machine, but the difference between the second and the first reading, which is clearly equivalent.
  • the times indicated are in microseconds ( ⁇ s), but this is not essential for understanding the process.
  • the interrupts subdivide each file into sections ⁇ 1 - ⁇ , ⁇ 1 - ⁇ 9 and ⁇ 1 - ⁇ 9, separated by exception lines. It is important to observe that there is an interruption at each break in monotony, so we can consider that the network time is in fact “locally” monotonous on each section.
  • the NMR and TMR fields are used to determine a temporal correspondence between the sections of the different files. For example, we see that sections ⁇ 1 and ⁇ 2 were recorded simultaneously, while machines A and C were both connected to the BUS bus, with machine A as the reference machine. In this way, the "history" of the system can be reconstructed, as illustrated in FIGS. 3A - 3L. Initially (fig.
  • FIG. 3F the three machines are disconnected from the bus and fill sections ⁇ .2, ⁇ 3 and ⁇ 5 with the respective time stamp files (machine A, which was already disconnected, does not receive the interrupt signal caused by the disconnection of B and C).
  • machines A and B connect again to the bus, with A as the reference machine, and thus pass to sections ⁇ 3 and ⁇ 4, while machine C remains disconnected and, not receiving an interrupt signal, continues to complete section ⁇ 5.
  • Figure 3H the three machines are connected to the bus (sections ⁇ 4, ⁇ 5 and ⁇ 6), with B as the reference machine. When the latter (B) disconnects (figure 31, sections ⁇ 5, ⁇ 6 and ⁇ 7), A becomes the reference machine.
  • TMR time stamp file
  • NT first time reference
  • FIG. 4 is a graphic representation of the information contained in the FHA and FHB files (the discretization of the clocks is neglected: the steps corresponding to the discrete increments of the counters are not distinguished).
  • the ordinate axis carries the local times of machines A and B and the times of the networks to which said machines are connected, that of the abscissae the real time.
  • the lines TMA and TMB respectively represent the local times of A and B.
  • the lines TRA (dotted line) and TRB (circles) represent the times of the network of A and B respectively.
  • the common areas P1, P2, P3 and P4 are highlighted by shaded areas.
  • each datum recorded by machine B is characterized by a date [T B ], which is an interval between two readings of the clock H B surrounding a value of the network time, [NT] .
  • the objective is to determine [T AB ], the local time interval of the machine A corresponding to [T B ].
  • the first operation consists in determining two dates [T A ⁇ 1 ] and [T A2 1 ] of machine A belonging to the same range and located before and after [T B 1 ]. In fact, these “dates” are intervals determined by the method described with reference to FIG. 1 B and corresponding to the times of the network [NT A 1 ] and [NT A2 1 ] respectively.
  • the linear clock drift hypothesis makes it possible to calculate [T AB 1 ] by a linear interpolation:
  • [T B ] ⁇ [T B 1 ] is a simplified notation for T B ⁇ T B and [T B ] ⁇ [T B 2 ] for T B > T B.
  • Figure 5 is a graphic representation of equations 6 - 8. We observe that the width of the interval [T AB ], and therefore the imprecision of the synchronization, is roughly constant for
  • FIG. 6 is illustrated a flowchart of the method of interval resynchronization of the data of the machine B with respect to the machine A described above. The process can be reproduced for the synchronization of several machines.
  • the first step (E1) involves filling in the FHA and FHB time stamp files for machines A and B, as well as those of all the other machines in the system (C, in particular) and, in parallel, recording locally dated data . These operations are executed until the end of the data recording session.
  • the second step (E2) involves determining, using the NMR and TMR fields of the FHA, FHB and FHC files, the temporal relationships between the different sections of these files, as well as "Common time ranges" of machines A and B, that is to say periods during which these two machines were connected to the same network. Then, step E3, two lines LB1 and LB2 of the file FHB are chosen, each belonging to a "common time range".
  • step E4 two lines (LA1 and LA2) of the FHA file belonging to the same time range as the line LB1 of FHB and recorded respectively before and after the latter are determined. In the same way, the lines LA3 and LA4 which “surround” LB2 are determined.
  • LA1 and LA3 are the last lines recorded before LB1 and LB2, and that LA2 and LA2 are the first lines recorded after LB1 and LB2 respectively.
  • step E6 all the data from machine B (or only part of it) is resynchronized by interpolation or extrapolation, using equations 6.1, 6.2, 7 and 8.
  • a method of resynchronizing the data according to the flow diagram of FIG. 6 has been experimentally tested by the inventors.
  • two computers based on an Intel ® Pentium ® IV processor with a clock rate of 1, 8 and 2 GHz respectively and a RAM of 512 MB, equipped with Microsoft operating system ® Windows 2000 Professional ® and a FireWire ® MindReady ® interface with the Sednet 2 ® API, linked together and to a UNIBRAIN ® Fire-I ® digital camera by a FireWire ® network bus.
  • determining an offset [off AB 1 ] requires the use of a couple of network time readings, [NT A - ⁇ 1 ] and [NT A2 1 ].
  • any couple surrounding [T B ] can be chosen, and the result is always an interval [off A ⁇ 1 ] containing with certainty the "true" value off AB 1 V r a ⁇ of the offset (impossible to know).

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)
  • Electric Clocks (AREA)

Abstract

La présente invention porte sur un procédé de mise en correspondance entre le temps local d'une première machine (B), ayant une première horloge (HB), et celui d'une deuxième machine (A), ayant une deuxième horloge (HA). L'invention porte également sur un procédé de synchronisation entre des données enregistrées et datées par ladite première machine (B) par rapport au temps local de ladite deuxième machine (A). Afin de permettre une plus grande flexibilité et robustesse, ce procédé ne comporte pas une synchronisation desdites horloges (HA, HB), mais se base sur l'établissement d'une correspondance ' par intervalles ' entre les temps qu'elles indiquent. Pour établir cette correspondance, une référence temporelle non-monotone peut être constituée par l'horloge d'un bus synchrone, reliant au moins temporairement les deux machines (et éventuellement d'autres dispositifs).

Description

PROCEDE DE SYNCHRONISATION DE DONNEES, NOTAMMENT DISTRIBUEES, PRENANT EN COMPTE LES IMPRECISIONS ET DERIVES DES HORLOGES. L'invention porte sur un procédé pour déterminer une correspondance entre les temps indiqués par les horloges internes d'une pluralité de machines reliées à un réseau, telles que des capteurs ou des ordinateurs, ainsi que sur un procédé de synchronisation des données provenant desdites machines. Ces deux types de procédés sont intimement liés, le deuxième constituant une application directe du premier. Dans ce contexte, «synchroniser des données» signifie les ordonner chronologiquement en fonction de leur temps d'acquisition ; dans un sens plus restreint, il signifie également «dater» ces mêmes données par rapport à une référence temporelle unique. « Synchroniser des horloges », par contre, signifie forcer ces dernières à indiquer le même temps à un instant donné. Un procédé de synchronisation des données est nécessaire, par exemple, dans le domaine de la validation des dispositifs d'aide à la conduite automobile. Pour étudier l'influence de ces dispositifs sur le comportement d'un conducteur, des voitures automobiles de test sont équipées de différents capteurs reliés en réseau et permettant d'acquérir à la fois des informations sur le véhicule (vitesse moyenne, accélération...), sur l'interaction avec d'autres véhicules (distance et vitesse relatives...) et sur le comportement du conducteur (temps de réaction, direction du regard...). Les données acquises par ces différents capteurs et celles enregistrées par les dispositifs d'aide à la conduite doivent être synchronisées pour pouvoir être exploitées par un ergonome, et la précision de la synchronisation doit être meilleure qu'une milliseconde, et de préférence meilleure que 100 μs, pour des cadences d'acquisition des données pouvant atteindre 1 kHz. En même temps, on souhaite utiliser des dispositifs matériels standard et disposer d'une grande flexibilité, permettant de reconfigurer le réseau d'acquisition en cours d'utilisation, et d'une grande robustesse vis-à-vis des pannes et des problèmes de connexion. La solution la plus évidente au problème de la synchronisation des données provenant d'une pluralité de dispositifs consiste à synchroniser toutes les horloges. Chaque dispositif attribue une « date » aux données qu'il enregistre et, comme les horloges sont synchronisées entre elles, toutes les dates peuvent être directement comparées. Dans ce contexte, le problème de déterminer une correspondance entre les temps locaux ne se pose pas, car tous ces temps coïncident sensiblement. La synchronisation des horloges peut être effectuée de façon matérielle ou logicielle : une introduction générale à ces techniques est fournie dans l'article de J.A. Fonseca et P. Fonseca « An overview of clock synchronization solutions », 4th IFAC International Symposium, Sicica, Argentina, 2000. Les solutions matérielles sont basées sur l'utilisation d'un signal d'horloge externe, commun à tous les dispositifs. De cette façon on peut obtenir une précision très élevée, par exemple par l'utilisation d'une horloge atomique, telle que celle du système GPS. Par contre, ces solutions présentent l'inconvénient de demander un matériel dédié : il n'est pas possible de brancher au réseau des dispositifs qui ne sont pas conçus pour utiliser un signal d'horloge externe. Les solutions logicielles comportent l'utilisation d'horloges logicielles (variables stockées en mémoire) pilotées par l'horloge « matérielle » de chaque dispositif connecté au réseau. Ces horloges logicielles sont synchronisées, de manière à indiquer approximativement le même temps à tout instant. Parmi ces solutions, on peut encore distinguer deux classes : soit on effectue une seule synchronisation au début de la session d'utilisation du réseau, et on suppose de pouvoir négliger les dérives des horloges ; soit on effectue également des resynchronisations en cours d'utilisation ; il s'agit de la technique adoptée, par exemple, par le protocole NTP (Network Time Protocol). En ce qui concerne la première classe de solutions, l'hypothèse de dérives négligeables est difficilement vérifiée, du moins pour des durées d'acquisition de plusieurs heures et lorsqu'on utilise des ordinateurs du commerce : les horloges de ces derniers présentent des dérives qui peuvent atteindre les 300 μs/s, soit plus d'une seconde par heure. Remplacer ces horloges par des composantes de meilleure qualité revient à une solution matérielle, coûteuse et peu flexible. La seconde classe de solutions présente une difficulté liée à la monotonie des horloges. Si, par exemple, une horloge a pris de l'avance par rapport au temps de référence, elle sera ramenée en arrière lors de la resynchronisation. Si une première donnée à été enregistrée immédiatement avant l'instant de resynchronisation et une deuxième donnée immédiatement après, la date du deuxième enregistrement est antérieure à celle du premier et l'ordre temporel des données se trouve inversé. De plus, les algorithmes connus qui imposent la conservation de la monotonie du temps présentent une convergence relativement lente. En tout cas, baser la synchronisation des données sur la synchronisation des horloges ou sur l'utilisation d'une horloge unique pose des limites aux possibilités de reconfiguration du réseau de dispositifs. Voici un exemple concret d'un cas où les techniques connues de l'art antérieur montrent leurs limites. Considérons deux machines, X et Y, connectées à un même réseau et dont les horloges sont maintenues synchrones par une méthode matérielle ou logicielle. A un moment donné, la machine Y est coupée du réseau, volontairement ou à cause d'un problème de connexion, mais continue à enregistrer des données ; enfin la machine Y est reconnectée au bout d'un certain temps. On comprend facilement qu'il n'est pas possible d'ordonner chronologiquement les données acquises pendant la période de déconnexion, car la synchronisation entre les horloges des machines X et Y est irrémédiablement perdue. Pour cette raison, ces procédés de synchronisation sont très sensibles à d'éventuels problèmes de connexion au réseau. De plus, si pendant la période de déconnexion la machine Y avait été reliée à un deuxième réseau comprenant également une machine Z, il n'y aurait aucun moyen de synchroniser les données enregistrées par X avec celles enregistrées par Z. La reconnexion de la machine Y est également problématique, notamment si l'on veut conserver la monotonie de son horloge. Pour cette raison, ces procédés connus de synchronisation posent des limites aux possibilités de reconfiguration « à chaud » (pendant le fonctionnement) des réseaux auxquels ils sont appliqués. Il est également connu de l'art antérieur d'utiliser des marquages temporels pour établir une correspondance approximative entre les temps locaux de dispositifs dont les horloges internes ne sont pas synchronisées. Dans ce cas, la synchronisation des données se fait le plus souvent a posteriori, c'est à dire après la fin de la session d'enregistrement, et pour cette raison on parle parfois de « resynchronisation » des données. Un tel cas se présente fréquemment dans le domaine du multimédia, où il est par exemple nécessaire de synchroniser des images, acquises par une caméra numérique, avec des sons, acquis par un microphone externe. Dans le domaine du multimédia les exigences en termes de précision sont cependant assez modestes, des erreurs jusqu' à environ 33 millisecondes (ms) étant indétectables par les êtres humains. Plusieurs techniques de synchronisation des données utilisées dans les applications multimédia sont décrites dans l'article de G. Blakowski et R. Steinmetz, "A média synchronization survey : référence model, spécification, and case studies", IEEE J. Selected Areas Commun. 141 (1996), pages 5 - 35. Ces techniques sont robustes et permettent une grande flexibilité, mais leur précision est très limitée et insuffisante pour de nombreuses applications. De plus, il n'est pas possible de déterminer avec certitude une limite supérieure de l'amplitude des erreurs de synchronisation commises. Un objet de la présente invention est un procédé pour établir une correspondance entre les temps locaux de deux ou plusieurs machines dont les horloges ne sont pas synchronisées. Un autre objet de la présente invention est un tel procédé, avec une précision améliorée par rapport à l'art antérieur. Encore un autre objet de la présente invention est un tel procédé, avec une précision connue et modélisée par un intervalle. Encore un autre objet de la présente invention est un tel procédé, qui soit robuste face à des problèmes de connexion du réseau auquel sont connectées les machines dont on veut mettre en correspondance les temps locaux. Encore un autre objet de la présente invention est un tel procédé, qui permette une reconfiguration dynamique d'un tel réseau. Encore un autre objet de la présente invention est un tel procédé, qui permette d'utiliser uniquement du matériel standard. La présente invention a également pour objet un procédé de synchronisation des données enregistrées par deux ou plusieurs machines, ou engendrées par deux ou plusieurs dispositifs, qui ne demande pas de synchronisation des horloges desdits dispositifs ou machines, et qui se base sur l'établissement une correspondance entre les temps locaux de deux ou plusieurs machines dont les horloges ne sont pas synchronisées. D'autres objets de la présente invention consistent à fournir un tel procédé avec une précision améliorée par rapport à l'art antérieur, avec une précision connue, qui soit robuste face à des problèmes de connexion du réseau auquel sont connectées les machines dont on veut mettre en correspondance les temps locaux, et/ou qui permette d'utiliser uniquement du matériel standard. Au moins un des objets précités est atteint à l'aide d'un procédé pour établir une correspondance par intervalles entre le temps indiqué par une première horloge monotone et le temps indiqué par une deuxième horloge, également monotone, caractérisé en ce qu'il met en œuvre, sur au moins une plage temporelle, une première référence temporelle commune à la première et à la deuxième horloge et monotone sur ladite plage, et en ce que ledit procédé comporte les étapes suivantes : a) détermination d'un premier intervalle temporel délimité par un premier couple de valeurs du temps de la première horloge et appartenant à une première plage temporelle sur laquelle existe ladite première référence temporelle commune à la première et à la deuxième horloge ; b) détermination d'un deuxième intervalle temporel délimité par un deuxième couple de valeurs du temps de la première horloge et appartenant à une deuxième plage temporelle sur laquelle existe ladite première référence temporelle commune à la première et à la deuxième horloge ; c) détermination, à l'aide de la référence temporelle commune, d'un troisième intervalle temporel, délimité par un premier couple de valeurs du temps de la deuxième horloge, et contenant le premier intervalle temporel ; d) détermination, à l'aide de la référence temporelle commune, d'un quatrième intervalle temporel, délimité par un deuxième couple de valeurs du temps de la deuxième horloge, et contenant ledit deuxième intervalle temporel ; e) pour un cinquième intervalle temporel quelconque délimité par un troisième couple de valeurs du temps de la première horloge, calcul d'un sixième intervalle temporel, délimité par un troisième couple de valeurs du temps de la deuxième horloge et contenant ledit cinquième intervalle temporel, le calcul étant effectué par interpolation ou extrapolation à l'aide desdits premier, deuxième, troisième et quatrième intervalles. Dans un mode particulier de réalisation de l'invention, l'étape c) comporte les opérations suivantes : d ) détermination d'un septième et d'un huitième intervalle temporel, délimités par un quatrième et cinquième couple de valeurs du temps de la deuxième horloge respectivement et appartenant à la première plage temporelle, tels que ledit premier intervalle temporel est compris entre lesdits septième et huitième intervalles temporels; c2) détermination d'une première, deuxième et troisième valeur de la première référence temporelle commune, comprises dans lesdits premier, septième et huitième intervalles temporels respectivement ; c3) calcul par interpolation dudit troisième intervalle temporel, à l'aide desdits premier, septième et huitième intervalles temporels et desdites première, deuxième et troisième valeurs de la première référence temporelle commune ; et l'étape d) comporte les opérations suivantes : d1) détermination d'un neuvième et d'un dixième intervalle temporel, délimités par un sixième et septième couple de valeurs du temps de la deuxième horloge respectivement et appartenant à la deuxième plage temporelle, tels que ledit deuxième intervalle temporel est compris entre lesdits neuvième et dixième intervalles ; d2) détermination d'une quatrième, cinquième et sixième valeur de la première référence temporelle commune, comprises dans lesdits deuxième, neuvième et dixième intervalles temporels respectivement ; d3) calcul par interpolation dudit quatrième intervalle temporel, à l'aide desdits deuxième, neuvième et dixième intervalles temporels et desdites quatrième, cinquième et sixième valeurs de la première référence temporelle commune. De préférence, l'opération c3) est effectuée en remplaçant lesdites première, deuxième et troisième valeurs de la référence temporelle commune par des intervalles temporels dont la largeur est égale à la discrétisation de la première référence temporelle commune sur la première plage temporelle, et l'opération d3) est effectuée en remplaçant lesdites quatrième, cinquième et sixième valeurs de la référence temporelle commune par des intervalles temporels dont la largeur est égale à la discrétisation de la première référence temporelle commune sur la deuxième plage temporelle. Avantageusement, pendant la ou les plages temporelles sur lesquelles existe une première référence temporelle commune, on enregistre à plusieurs reprises une première lecture de la première horloge, suivie par une lecture de la première référence temporelle commune et ensuite par une deuxième lecture de la première horloge, et de manière indépendante on enregistre, également à plusieurs reprises, une première lecture de la deuxième horloge, suivie par une lecture de la première référence temporelle commune et ensuite par une deuxième lecture de la deuxième horloge, et les opérations d ), c2), c3), d1 ), d2) et d3) sont effectuées à l'aide de ces enregistrements. Dans un autre mode particulier de réalisation de l'invention l'étape c) comporte les opérations suivantes : d ) détermination d'une septième et d'une huitième valeur du temps de la deuxième horloge appartenant à la première plage temporelle, tels que ledit premier intervalle temporel est compris entre lesdits septième et huitième valeurs; c2) détermination d'une première, deuxième et troisième intervalle de valeurs de la première référence temporelle commune, comprenant ledit premier intervalle temporel et lesdites septième et huitième valeurs du temps de la deuxième horloge respectivement; c3) calcul par interpolation dudit troisième intervalle temporel, à l'aide dudit premier intervalle de valeurs du temps de la première horloge, desdites septième et huitième valeurs du temps de la deuxième horloge et desdits premier, deuxième et troisième intervalles de valeurs de la première référence temporelle commune ; et l'étape d) comporte les opérations suivantes : d1 ) détermination d'une neuvième et d'une dixième valeurs du temps de la deuxième horloge appartenant à la deuxième plage temporelle, tels que ledit deuxième intervalle temporel est compris entre lesdites neuvième et dixième valeurs ; d2) détermination d'un quatrième, cinquième et sixième intervalle de valeur de la première référence temporelle commune, comprenant ledit deuxième intervalle temporel et lesdites neuvième et dixième valeurs du temps de la deuxième horloge; d3) calcul par interpolation dudit quatrième intervalle temporel, à l'aide dudit deuxième intervalle de valeurs du temps de la première horloge, desdites neuvième et dixième valeurs du temps de la deuxième horloge et desdits quatrième, cinquième et sixième intervalles de valeurs de la première référence temporelle commune. De préférence, les opérations c3) et d3) sont effectuées en remplaçant lesdites septième, huitième, neuvième et dixième valeurs du temps de la deuxième horloge par des intervalles temporels dont la largeur est égale à la discrétisation du temps de la deuxième horloge. Avantageusement, pendant la ou les plages temporelles sur lesquelles existe une première référence temporelle commune, on enregistre à plusieurs reprises une première lecture de la première référence temporelle commune, suivie par une lecture de la première horloge et ensuite par une deuxième lecture de la première référence temporelle commune, et de manière indépendante on enregistre, également à plusieurs reprises, une première lecture de la première référence temporelle commune, suivie par une lecture de la de la deuxième horloge (et ensuite par une deuxième lecture de la première référence temporelle commune, et les opérations d), c2), c3), d1 ), d2) et d3) sont effectuées à l'aide de ces enregistrements. Dans des modes particuliers de réalisation de l'invention, les calculs par interpolation ou extrapolation mentionnés ci-dessus sont plus précisément des interpolations ou extrapolations linéaires, ou linéaires par intervalles. Avantageusement, lorsque la première référence temporelle commune à la première et à la deuxième horloge existe sur au moins deux plages temporelles distinctes et peut comporter une rupture de monotonie d'une plage temporelle à l'autre, une deuxième référence temporelle commune monotone est utilisée afin de résoudre les ambiguïtés qui résultent de la non-monotonie de la première référence temporelle commune. L'invention porte également sur un procédé de synchronisation des données enregistrées et datées par une première machine, ayant une première horloge, par rapport au temps local d'une deuxième machine, ayant une deuxième horloge, caractérisé en ce que la datation s'effectue en associant à chaque donnée enregistrée par la première machine un cinquième intervalle temporel, délimité par un troisième couple de valeurs du temps de la première horloge, et en ce que la synchronisation s'effectue en déterminant, par un procédé tel que décrit ci-dessus, un sixième intervalle temporel, délimité par un troisième couple de valeurs du temps de la deuxième horloge et contenant ledit cinquième intervalle temporel. Dans un mode particulier de réalisation d'un tel procédé de synchronisation des données, la première référence temporelle commune est fournie par l'horloge d'un bus synchrone qui relie au moins temporairement lesdites première et deuxième machine. Dans un mode particulier de réalisation de l'invention, un tel procédé de synchronisation des données se décompose en un premier sous- procédé d'enregistrement de lectures d'horloges tel que décrit plus haut, effectué localement par chaque machine dont on veut pouvoir synchroniser les données, et un deuxième procédé de synchronisation proprement dite, effectué par une seule machine vers laquelle toutes les données ont été transférées après la fin de la session d'enregistrement des données. D'autres caractéristiques, détails et avantages de l'invention ressortiront à la lecture de la description faite en référence aux dessins annexés, donnés à titre d'exemple et dans lesquels : Les figures 1A et 1 B illustrent comment on peut procéder à la détermination d'une correspondance entre les temps indiqués par deux horloges distinctes et non synchronisées; les figures 2, 3A - 3L, 4 et 5, ainsi que les tableaux Tab.A, Tab.B et Tab.C, illustrent par un exemple concret un procédé constituant un mode de réalisation de l'invention; et la figure 6 montre un organigramme de ce procédé. Avant de procéder à la description des dessins, il est opportun de définir précisément certains des termes et des notations utilisées dans la suite. Par « vrai temps » on entend le temps physique, qui ne peut pas être connu précisément et dont les horloges ne donnent qu'une approximation ; dans ce document, « t » indique une valeur du vrai temps. Par « horloge » on entend une horloge numérique, constituée par un oscillateur couplé à un compteur. A chaque cycle de l'oscillateur, le compteur est incrémenté d'une quantité discrète δ (discrétisation). Par conséquent, le diagramme du temps mesuré par une horloge par rapport au vrai temps a une forme en escalier, avec des marches de hauteur δ. Le compteur d'une horloge a nécessairement une capacité finie et est remis à zéro quand un dépassement se produit. Des horloges peuvent néanmoins avoir une capacité suffisamment grande pour que ce problème soit négligé. Un « bus synchrone » est un bus sur lequel est diffusé un signal d'horloge. Par « temps local » d'une machine on entend le temps mesuré par l'horloge de cette machine. Une valeur du temps local est indiquée par « T ». Par « date » d'une donnée enregistrée par une machine on entend soit le temps lu sur l'horloge de la machine à l'instant de l'enregistrement de la donnée, soit l'intervalle compris entre deux lectures de cette horloge, effectuées avant et après ledit enregistrement. Toute ambiguïté sera levée par le contexte et par la notation: ainsi, la date indiquée par « [TJ » est en fait l'intervalle compris entre T et T .avec T < T . En réalité, toute date peut être considérée comme un intervalle : même si on sait avec certitude quelle était la valeur indiquée par l'horloge de la machine au moment de l'enregistrement d'une donnée, il reste une indétermination δ due à la discrétisation de ladite horloge. Par « monotonie » on entend la propriété d'une horloge telle que, si h<t2, T(f,)< J(t2). Par « décalage » (offset) on entend la différence entre le temps indiqué par deux horloges à un instant donné, ou entre le temps d'une horloge et le vrai temps. Le décalage entre deux temps définis à l'aide d'intervalles est aussi un intervalle: soit _T ]= [TA , TA ] et [TB]= [!B . B ], alors le décalage permettant de passer de [TB] à [TA] vaut :
[offAB]=[offAB , offAB ]=[TA -TB , TAB ] (1 ) tel que [TA]=[TB]+[offAB]. Par « dérive » (drift) entre deux horloges, ou une horloge et le vrai temps, on entend la dérivée du décalage par rapport au temps local d'une des horloges ou du vrai temps. Sauf indication contraire dans ce document on considère que, pour chaque couple d'horloges, la dérive est constante dans le temps et que, par conséquent, le décalage est une fonction linéaire par rapport au temps (hypothèse de dérives linéaires). Dans ce cas, la dérive peut être calculée en connaissant deux décalages déterminés à des dates différentes. Si les décalages et/ou les dates sont des intervalles, la dérive aussi en est un :
[driftAB] = [ drift AB ,
Figure imgf000014_0001
] = off *» °ff AB i (2)
Figure imgf000014_0002
au sens du calcul par intervalles. Les exposants 1 et 2 se réfèrent à la première et à la deuxième date à la quelle un décalage est déterminé. Par « synchronisation par intervalles des données de la machine B par rapport à la machine A » on entend la détermination, pour chaque donnée enregistrée par la machine B avec une date [TB], d'un intervalle [TAB] du temps local de la machine A tel que TAB précède
l'enregistrement de ladite donnée et TAB le suit. Dans un souci de concision on dit que [TAB] est le temps local de la machine A qui « correspond » à [TB]. On observe que le rôle des deux machines n'est pas symétrique et qu'en général l'intervalle [TAB] est plus large que [TB]. Dans la suite, lorsque le contexte ne se prête pas à des ambiguïtés, l'expression « synchronisation par intervalles » est remplacée par « synchronisation » tout simplement. Par « resynchronisation » on entend plus spécifiquement une synchronisation effectuée après que toutes les données aient été enregistrées. La « précision » d'une synchronisation par intervalles est déterminée par l'élargissement de [TAB] par rapport [TB]. La « précision » d'un procédé de synchronisation qui se propose d'établir une relation entre des valeurs ponctuelles de TA et TB est la différence entre la valeur calculée de TAB et sa valeur « vraie ». Les techniques de calcul par intervalles sont exposées dans l'ouvrage « Applied Interval Analysis », L. Jaulin, M. Kieffer, O. Dirit et E. Walter, Springer-Verlag, 2001 , ISBN : 1-85233-219-0. Les figures 1A et 1 B illustrent comment on peut procéder à la détermination de la correspondance entre les temps TA et TB indiqués par deux horloges A et B. Dans un souci de simplicité, la discrétisation des horloges a été négligée (δ-> 0) et donc les lignes TA(t) et TB(t), qui ont en réalité une forme en escalier, ont été approchées par des droites. La première possibilité, qui vient immédiatement à l'esprit, consiste simplement à lire « simultanément » les deux horloges à un instant to pour trouver une correspondance entre TA(t0) à et TB(t0). En fait, cette lecture « simultanée » n'est pas possible dans le cas de machines réelles ; de plus, chaque lecture demande un temps fini, qui ne peut pas être prédéterminé et qui dépend des temps de transmission des données sur des lignes ou bus, ainsi que des latences des processeurs et des systèmes d'exploitation. Si les exigences de précision de la synchronisation sont relativement modestes, comme dans le cas des applications multimédia, l'imprécision sur le temps nécessaire à effectuer la double lecture peut être inférieure à la marge d'erreur admise. Il est donc licite d'ignorer le problème et considérer que les deux lectures sont effectuées sensiblement en même temps. Cette hypothèse n'est pas justifiée si une précision plus élevée est requise. Comme il n'est pas possible d'établir une correspondance biunivoque TA<- TB, on est donc amené à adopter une approche « par intervalles », comme expliqué plus haut. Un avantage majeur de cette approche par rapport à toute technique essayant de déterminer une équivalence approximative entre dates « ponctuelles » est qu'elle permet de connaître exactement l'incertitude de la synchronisation, qui est égale à la largeur de l'intervalle. Comme illustré sur la figure 1 B, pour déterminer une correspondance par intervalles entre les temps locaux des machines A et B, d'abord, à un instant t-i, on lit le temps local de la machine A, T'A, ensuite, à un instant to, celui de la machine B, TB, et enfin, à un instant t2, à nouveau celui la machine A, T"A (il ne faut pas oublier que les valeurs exactes de t0, ti et t2 ne peuvent pas être connues). On comprend aisément qu'il faut vérifier qu'aucune rupture de monotonie du temps local de la machine A n'ait lieu entre la première et la dernière lecture. Un exemple d'un procédé selon l'invention pour déterminer une correspondance entre les temps indiqués par des horloges distinctes et synchroniser ainsi des données est maintenant décrit en détail à l'aide des figures 2, 3A - 3L, 4 et 5, ainsi que des tableaux Tab.A, Tab.B et Tab.C. Pour l'instant on se limite à considérer une synchronisation « a posteriori » (resynchronisation), c'est-à-dire que les données sont synchronisées après la fin de la session de fonctionnement du système (appelée également « session d'acquisition des données » par la suite). Le cas de la synchronisation « en temps réel » (pendant la session de fonctionnement du système) sera considéré plus loin. Un système informatique, représenté sur la figure 2, comprend trois machines, A, B et C, telles que des ordinateurs, chacune ayant une horloge interne HA, HB et Hc qui mesure un temps local 7A(t), TB(t) et 7"c(t) respectivement, ainsi qu'un bus synchrone BUS, tel qu'un bus FireWire® (IEEE 1394) ayant une horloge propre HBUs présentant une précision meilleure que 3μs dans le cas le plus défavorable selon la norme IEEE1394a. Les machines peuvent se connecter et se déconnecter du bus BUS indépendamment les unes des autres ; à chaque fois qu'une reconfiguration du système se produit (par exemple, à chaque fois qu'une machine se connecte ou se déconnecte), un signal d'interruption est transmis sur le bus. Une des machines connectées au réseau est nommée « machine de référence » est son nom est connu par les autres machines ; dans la figure il s'agit de la machine B, caractérisé par un contour en trait épais. La machine de référence ne peut pas être considérée comme une machine « maître » dans un système centralisé : n'importe quelle machine du réseau peut être choisie pour assumer temporairement cette fonction. En effet, une nouvelle machine de référence est choisie de manière aléatoire à chaque interruption, ce qui permet d'assurer le fonctionnement du système même en cas de déconnexion de l'ancienne machine de référence. Chaque machine est également équipée d'une interface de bus lA, lB et lc, comportant une horloge, HIA, HIB et Hlc respectivement, pilotée par HBUs- L'horloge du bus HBUs est produite par l'une des interfaces I (appelée « Cycle Master » dans la norme IEEE FireWire). Les horloges Hl sont asservies sur HBUs. L'horloge du bus HBus a un compteur de capacité limitée, qui est remis à zéro toutes les 128 s, mais les horloges des interfaces comportent une extension logicielle ayant une capacité suffisamment grande pour que des dépassements ne se produisent pas pendant la durée de fonctionnement du système. Le temps mesuré par l'horloge de l'interface HIA, HIB et Hic (« temps d'interface ») de la machine A, B et C est indiqué par NTA(t), NTB(t) et NTc(t) respectivement. Une des machines est choisie pour « donner le temps du réseau » : cela signifie que les horloges d'interface de toutes les autres machines sont synchronisées sur la sienne. A chaque interruption, une nouvelle machine est choisie pour cette tache et l'extension logicielle des horloges d'interface est remise à zéro : après l'interruption, toutes les horloges indiquent donc le même temps que l'horloge du bus HBus- II faut noter que la machine qui donne le temps du réseau n'est pas nécessairement la machine de référence. Si une machine est déconnectée du réseau, elle est sa propre machine de référence et son temps du réseau est le temps de sa propre horloge d'interface. On comprend que le temps NT du réseau constitue une première référence temporelle commune à toutes les machines reliées au bus BUS, mais non monotone. Le temps de la machine de référence constitue une deuxième référence temporelle commune à toutes les machines reliées au bus BUS et, en plus, monotone. Cette deuxième référence temporelle est néanmoins très imprécise car, pour la connaître, une machine autre que celle de référence doit effectuer une requête par l'intermédiaire du bus, ce qui demande un temps relativement important et non déterminable a priori. Tout au long de son fonctionnement, chaque machine enregistre, indépendamment des autres, des données et leur date sous forme d'intervalle, par exemple des acquisitions de capteurs. En même temps, chaque machine construit un fichier dit « horodateur », qui est constitué par une suite de lignes. Les lignes sont remplies à intervalles approximativement réguliers, par exemple d'une seconde environ, et elles comprennent cinq champs : TL1 est une première lecture du temps local de la machine ; TR est une lecture du temps du réseau ; TL2 est une deuxième lecture du temps local de la machine ; NMR est le nom de la machine de référence ; et TMR est le temps local de la machine de référence. Les trois premières lectures doivent être effectuées dans l'ordre, de telle sorte que TR soit compris entre TL1 et TL2. Quand un signal d'interruption est reçu, la machine remplit une « ligne d'exception » en attribuant aux champs TL1 , TR, TL2 et TMR la valeur 0 et au champ NMR le nom conventionnel « BUS_RESET ». Le remplissage des fichiers horodateurs est un processus de basse priorité et peu onéreux, qui n'interfère pas sensiblement avec l'enregistrement et la datation des événements. Une fois la session terminée, les fichiers horodateurs sont transférés à un même ordinateur et une sous-procédure de resynchronisation proprement dite peut être démarrée. On se pose, par exemple, le problème spécifique de resynchroniser les données enregistrées par les machines A et B. Les tableaux Tab.A, Tab.B et Tab.C montrent une partie du contenu des fichiers horodateurs des machines A, B et C respectivement, appelés par la suite FHA, FHB et FHC respectivement. Seulement les deux lignes qui précèdent et suivent chaque interruption sont représentées ; de plus, dans un souci de clarté et de gain de place, le champ TL2 ne contient pas la valeur de la deuxième lecture du temps local de la machine, mais la différence entre la deuxième et la première lecture, ce qui est clairement équivalent. Les temps indiqués sont en microsecondes (μs), mais cela n'est pas essentiel à la compréhension du procédé. Les interruptions subdivisent chaque fichier en sections α1 - αδ, β1 - β9 et γ1 - γ9, séparées par des lignes d'exception. Il est important d'observer qu'il y a une interruption à chaque rupture de monotonie, donc on peut considérer que le temps du réseau est en fait « localement » monotone sur chaque section. Les champs NMR et TMR permettent de déterminer une correspondance temporelle entre les sections des différents fichiers. Par exemple, on voit que les sections α1 et γ2 ont été enregistrées simultanément, pendant que les machines A et C étaient toutes deux reliées au bus BUS, avec la machine A comme machine de référence. De cette façon on peut reconstituer I' « histoire » du système, comme illustré sur les figures 3A - 3L. Initialement (fig. 3A) seulement la machine C est en fonction et elle remplit la section γ1 de son fichier horodateur. Ensuite, (fig. 3B), la machine A se met en fonction et les deux machines se connectent au bus pendant un certain temps (sections α1 et γ2), A étant la machine de référence. Puis, figure 3C, elles se séparent à nouveau (sections α2 et γ3). Pendant ce temps (fig. 3D) la machine B se met en fonction, mais reste déconnectée du réseau (section β1 ), donc ne produit pas d'interruption. Pendant la cinquième période (figure 3E, sections α2, β2 et γ4) les machines B et C sont connectées au bus, et C est la machine de référence. La machine A ne reçoit pas le signal d'interruption provoqué par la connexion de la machine B, donc elle continue à remplir la section α2 de son fichier horodateur. Lors de la sixième période, figure 3F, les trois machines sont déconnectées du bus et remplissent les sections α.2, β3 et γ5 des fichiers horodateurs respectifs (la machine A, qui était déjà déconnectée ne reçoit pas le signal d'interruption provoqué par la déconnexion de B et C). Figure 3G, les machines A et B se branchent à nouveau sur le bus, avec A comme machine de référence, et passent ainsi aux sections α3 et β4, alors que la machine C reste déconnectée et, ne recevant pas de signal d'interruption, continue à remplir la section γ5. Ensuite, figure 3H, les trois machines se retrouvent connectées au bus (sections α4, β5 et γ6), avec B comme machine de référence. Quand cette dernière (B) se déconnecte (figure 31, sections α5, β6 et γ7), A devient la machine de référence. Peu après (figure 4J, sections α6, β7 et γ8) B se reconnecte et redevient machine de référence. Figure 3K, la machine C se déconnecte (sections α.7, β8 et γ9) et A redevient machine de référence. Enfin (figure 3L, sections αδ et β9) les machines A et B se déconnectent aussi, après quoi on ne s'intéresse plus à l'évolution du système. On a ainsi réalisé, grâce à la deuxième référence temporelle
(TMR) une sorte de resynchronisation, qui est cependant très grossière car les lignes des fichiers horodateurs sont remplies à basse cadence. Cette mise en correspondance des sections α, β et γ permet de pallier la non-monotonie de la première référence temporelle (NT) et de s'en servir pour effectuer la resynchronisation par intervalles proprement dite. Dans cet exemple on a considéré le cas où un seul bus est présent. En revenant au problème de resynchroniser les données de la machine B par rapport au temps de la machine A, il faut d'abord déterminer les « plages temporelles communes », c'est-à-dire les périodes pendant lesquelles ces deux machines se sont retrouvées connectées au même réseau par le bus BUS, qui est celui du seul réseau considéré dans l'exemple. II y a quatre de ces plages : P1 , qui correspond aux sections α3 et β4 ; P2, qui correspond aux sections α4 et β5 ; P3, qui correspond aux sections α6 et β7 et P4, qui correspond aux sections α7 et β8. Les plages P1 et P2, ainsi que P3 et P4, sont limitrophes, mais séparées par une interruption. La figure 4 est une représentation graphique de l'information contenue dans les fichiers FHA et FHB (la discrétisation des horloges est négligée : on ne distingue pas les marches correspondant aux incréments discrets des compteurs). L'axe des ordonnées porte les temps locaux des machines A et de B et les temps des réseaux auxquels lesdites machines sont connectées, celui des abscisses le vrai temps. Les lignes TMA et TMB représentent respectivement les temps locaux de A et de B. Les lignes TRA (pointillée) et TRB (cercles) représentent les temps du réseau de A et de B respectivement. Les plages communes P1 , P2, P3 et P4 sont mises en évidence par des zones ombrées. Comme il a été expliqué plus haut, chaque donnée enregistrée par la machine B est caractérisée par une date [TB], qui est un intervalle compris entre deux lectures de l'horloge HB entourant une valeur du temps du réseau, [NT]. On se pose comme objectif de déterminer [TAB], l'intervalle du temps local de la machine A correspondant à [TB]. On considère d'abord le cas où [TB]=[TB 1], situé à l'intérieur d'une plage temporelle commune, par exemple P1 , comme illustré sur la figure 4. La première opération consiste à déterminer deux dates [TAι1] et [TA2 1] de la machine A appartenant à la même plage et situées avant et après [TB 1]. En fait, ces « dates » sont des intervalles déterminés par la méthode décrite en référence à la figure 1 B et correspondants aux temps du réseau [NTA 1] et [NTA2 1] respectivement. L'hypothèse de dérive linéaire des horloges permet de calculer [TAB 1] par une interpolation linéaire :
Figure imgf000022_0001
Comme toutes les dates sont des intervalles, le résultat est aussi un intervalle. Il est clair que l'équation (3) ne pourrait pas être utilisée si entre [NTA1 1] et [NTA2 1] s'était produite une interruption, et donc une rupture de monotonie du temps du réseau. Pour cette raison, il a été requis que [TA1] et [TA2 1] appartiennent à la même plage temporelle. Le décalage (offset) entre les horloges des machines A et B à la date [TB] est simplement donné par :
[offAB 1] = [TAB 1] - [TB 1] (4) S'agissant de la différence entre deux intervalles, le décalage est aussi un intervalle. En connaissant le décalage entre les horloges à deux dates différentes, [TB 1] et [TB 2], il est possible de déterminer la dérive (drift), supposée linéaire :
°ff AB 2 \- [ °ff AB ' J
[ drift AB ] = (5) [ T B 2 H T .* } où [off1] et [off2] sont les valeurs du décalage entre les horloges HA et de HB aux dates [TB 1] et [TB2] respectivement. Il est important d'observer que la présence d'interruptions entre [TB1] et [TB 2] ne constitue pas un obstacle à l'application de l'équation (5), car le temps du réseau ne figure pas directement dans cette dernière. Au contraire, l'homme du métier comprendra facilement qu'il est avantageux de 1 2 maximiser l'écart entre les dates [TB ] et [TB ] : par conséquent on prend pour [TB ] la première date de la plage P1 et pour [TB ] la dernière de la plage P4. A ce point on dispose de toute l'information nécessaire pour calculer la correspondance entre des dates lues sur les horloges HA et HB, même à l'extérieur des plages communes P1 - P4. On peut en effet démontrer que :
S [TB ]c alors :
[TAB]=[Ï -AABB. TAB] (6) avec:
Figure imgf000023_0001
et
Figure imgf000023_0002
si [TB] <[TB 1], alors : [TAB ]=[TB ]+[τB ] ]+([τB ]-[ TB })-[ drift AB ] ;et (7) si [TB] >[TB 2], alors : [TA
Figure imgf000023_0003
). 8)
[TB]≤[TB 1] est une notation simplifiée pour TB <TB et [TB]≥[TB 2] pour TB >TB . La figure 5 constitue une représentation graphique des équations 6 - 8. On observe que la largeur de l'intervalle [TAB], et donc l'imprécision de la synchronisation, est à peu près constante pour
[T. ]• B > B et augmente au fur et à mesure que l'on s'éloigne
de cette plage (intervalles [TB'], [TAB'] et [TB"], [TAB"], situés respectivement avant p ] et après [TB 2]). On comprend donc pourquoi il est avantageux de choisir les intervalles [TB 1] et [TB ] les plus éloignés possibles. Sur les axes TA et TB de la figure 5, les temps connus
(J 'Α >^ '?k 'Ik 'I 'τ * 'Tkei ^ ) sont indjqués Par un rond plein et les temps inconnus (TAB , TAB , TAB , TAB , TAB et TAB ) par un rond en pointillé. II est intéressant d'observer que le fichier FHC, après avoir contribué à la mise en correspondance des sections α, β et γ, n'est plus utilisé pour la resynchronisation. On peut maintenant revenir à l'exemple, considéré plus haut, d'une reconfiguration « à chaud » d'un réseau, incompatible avec les procédés de synchronisation des données connus de l'art antérieur. Tout d'abord, on observe que la reconnexion d'une machine Y au réseau comprenant une machine X ne pose aucun problème de monotonie, car les horloges des machines ne sont jamais synchronisées entre elles. De plus, comme aussi bien la machine X que la machine Z ont été reliées au même réseau que la machine Y pendant une partie de leur histoire, toutes les données enregistrées par ces machines peuvent être resynchronisées avec celles de Y par un procédé selon l'invention. On peut donc obtenir indirectement une synchronisation des données de la machine X avec celles de la machine Y, bien qu'avec une moindre précision. Sur la figure 6 est illustré un organigramme du procédé de resynchronisation par intervalles des données de la machine B par rapport à la machine A décrit ci-dessus. Le procédé peut être reproduit pour la synchronisation de plusieurs machines. La première étape (E1) comporte le remplissage des fichiers horodateurs FHA et FHB des machines A et B, ainsi que de ceux de toutes les autres machines du système (C, en particulier) et, en parallèle, l'enregistrement des données datées localement. Ces opérations sont exécutées jusqu'à la fin de la session d'enregistrement des données. La deuxième étape (E2) comporte la détermination, à l'aide des champs NMR et TMR des fichiers FHA, FHB et FHC des relations temporelles entre les différentes sections de ces fichiers, ainsi que des « plages temporelles communes » des machines A et B, c'est-à-dire des périodes pendant lesquelles ces deux machines étaient reliées à un même réseau. Ensuite, étape E3, on choisit deux lignes LB1 et LB2 du fichier FHB, appartenant chacune à une « plage temporelle commune ». Il n'est pas nécessaire, que ces deux lignes appartiennent à la même plage : comme discuté précédemment, il est préférable que l'écart entre ces deux lignes soit le plus grand possible. Les deux lectures du temps local de la machine B (TL1.TL2) contenues dans les lignes LB1 et LB2 définissent les intervalles [TB1] et [TB2]. A l'étape E4 on détermine deux lignes (LA1 et LA2) du fichier FHA appartenant à la même plage temporelle que la ligne LB1 de FHB et enregistrées respectivement avant et après cette dernière. De la même manière on détermine les lignes LA3 et LA4 qui « entourent » LB2. Plus synthétiquement : [TA1 1] < [TB 1] < [TA2 1] ; [TA1 2] < [TB 2] < [TA2 2] Il est avantageux que LA1 et LA3 soient les dernières lignes enregistrées avant LB1 et LB2, et que LA2 et LA2 soient les premières lignes enregistrées après LB1 et LB2 respectivement. Les temps du réseau [NTA1 1], [NTA2 1], [NTAι2] et [NTA2 2] sont définis comme correspondant au champ TR des lignes LA1 - LA4 respectivement : [NTA1 1]= TR ligne LA1 [NTA2 1]= TR ligne LA2 [NTA1 2]= TR ligne LA3 [NTA2 2]= TR ligne LA4 La largeur de ces intervalles est donnée par la discrétisation δ du temps du réseau. A l'étape E5 on calcule [TAB 1], [TAB 2], [offAB 1], [offAB 2] et [driftAB] par interpolation, à l'aide des équations 3 - 5. Enfin, à l'étape E6 on effectue la resynchronisation de toutes les données de la machine B (ou seulement d'une partie d'entre elles) par interpolation ou extrapolation, à l'aide des équations 6.1 , 6.2, 7 et 8. Un procédé de resynchronisation des données selon l'organigramme de la figure 6 a été testé expérimentalement par les inventeurs. Lors d'une première expérience ont été utilisés deux ordinateurs basés sur un processeur INTEL® Pentium IV® avec une cadence d'horloge de 1 ,8 et 2 GHz respectivement et une mémoire vive de 512 Mo, équipés du système d'exploitation Microsoft® Windows 2000 Professional® et d'une interface FireWire® MindReady® avec l'API Sednet 2®, reliés entre eux et à une caméra numérique UNIBRAIN® Fire-I® par un bus de réseau FireWire®. Les ordinateurs devaient enregistrer et dater les images transmises par la caméra sur le bus de réseau ; la synchronisation était considérée obtenue si les dates des images enregistrées par les deux ordinateurs étaient constituées par des intervalles se recouvrant. La largeur des intervalles de resynchronisation ainsi obtenus ([TAB], en reprenant la notation de l'exemple) a été de 250 - 300 μs. Une deuxième expérience a été réalisée en suivant le même protocole, mais utilisant deux ordinateurs basés sur un processeur INTEL Pentium III® avec une cadence d'horloge de 800 MHz et une mémoire vive de 128 et 256 Mo respectivement, équipés du système d'exploitation Linux RTAI® et d'une interface FireWire® OHCI®, reliés entre eux et à une caméra numérique UNIBRAIN® Fire-I® par un bus de réseau FireWire®. Dans ce cas, des intervalles de resynchronisation de 30 - 50 μs on été obtenus, grâce au fait que Linux RTAI® s'exécute avec un sous-noyau en temps réel, qui permet d'atteindre une discrétisation du temps de réseau de l'ordre de 5 μs, contre 130 μs avec l'utilisation de l'API Sednet 2® dans le cas de Microsoft® Windows 2000 Professional®. La description fait en référence aux figures 3A - 6 et aux tableaux Tab.A, Tab.B et Tab.C porte sur un mode de réalisation où les fichiers horodateurs sont remplis en enregistrant deux lectures de l'horloge de chaque machine et une lecture du temps de réseau comprise entre les deux. Il est également possible, dans le cadre de l'invention, d'effectuer deux lectures du temps de réseau et une lecture du temps local de chaque machine, comprise entre les deux : l'algorithme de la figure 6 s'applique mutatis mutandis.
De nombreuses autres variantes et améliorations du procédé sont possibles, sans sortir du cadre de la présente invention. Par exemple, la détermination d'un décalage [offAB 1] (équation 4) demande l'utilisation d'un couple de lectures du temps du réseau, [NTA1] et [NTA2 1]. En fait, n'importe quel couple entourant [TB] peut être choisi, et le résultat est toujours un intervalle [offAβ1] contenant avec certitude la « vraie » valeur offAB 1 Vraι du décalage (impossible à connaître). Si, à partir d'une pluralité de tels couples, on détermine une pluralité d'intervalles [offAB 1]', [offAB 1]",etc, on sait avec certitude que offAB1vraι<≡[offAB 1]'n[offAB 1]'' n... On obtient de telle sorte un intervalle plus étroit, donc une précision améliorée. On peut réduire de la même façon la largeur des intervalles qui représentent la dérive et les différentes dates TAB. Les principes de cette méthode, dite de « propagation de contraintes sur les intervalles » sont exposés dans l'article de L. Jaulin, M. Kieffer, O. Dirit et E. Walter cité plus haut. En effet, la méthode de propagation des contraintes à permis d'obtenir une réduction la largeur d'intervalle de l'ordre de 20% - 40% pour le décalage ([offAB]), et de l'ordre de 20% pour la dérive ([driftAB]). Une autre amélioration consiste à relâcher l'hypothèse de dérives linéaires, qui peut être remplacée par une hypothèse de linéarité par intervalles sans modifications notables de l'algorithme. Encore une autre variante consiste à effectuer la synchronisation des données pendant la session de fonctionnement du réseau : à intervalles réguliers, la synchronisation est effectuée en utilisant les informations disponibles, tout en continuant à acquérir des données et à ajouter des lignes aux fichiers horodateurs des différentes machines. Après chaque étape de synchronisation, on effectue l'intersection des intervalles ainsi obtenus avec ceux déterminés en précédence. Dans le présent document on a toujours considéré que chaque machine attribue une date à des données et les enregistre localement. Il est cependant entendu que le cas dans lequel les données sont datées localement par une première machine et ensuite transmises sur le réseau pour être enregistrées par une deuxième machine fait également partie du cadre de l'invention. Bien que, dans l'exemple considéré plus haut, on ait choisi de synchroniser les données de deux machines (A et B) par rapport au temps local d'une d'entre elles (A), on aurait pu également synchroniser ces données par rapport à une autre référence temporelle monotone, telle que le temps local de la machine C.
Tab.A
TL1 TR TL2 NMR TMR 7847371499 0002053250 0000000033 A 7847371792 7848387044 0003069125 0000000029 A 7848387342 αl 7860580135 0015265875 0000000012 A 7860580402 7861589993 0016276000 0000000035 A 7861590339 0 0 0 BUS RESET 0 7863621113 0001457250 0000000030 A 7863621392 7864636709 0002473125 0000000030 A 7864636991 α2 7908307691 0046157250 0000000028 A 7908308006 7909323310 0047173250 0000000029 A 7909323615 0 0 0 BUS. .RESET 0 7911354504 0001500125 0000000029 A 7911354787 7912370110 0002516000 0000000028 A 7912370388 α3 7922526148 0012675125 0000000033 A 7922526444 7923541829 0013691125 0000000025 A 7923542076 0 0 0 BUS. .RESET 0 7925572961 0001587625 0000000029 B 8070483980 7926588585 0002603375 0000000028 B 8071499635 α4 7937760209 0013776000 0000000029 B 8082671426 7938775811 0014791625 0000000029 B 8083687070 0 0 0 BUS. RESET 0 7940807022 0001060125 0000000016 A 7940807282 7941822622 0002075750 0000000013 A 7941822884 α5 7947916246 0008170000 0000000013 A 7947916494 7948931871 0009185625 0000000029 A 7948932165 0 0 0 BUS. RESET 0 7950963061 0001708500 0000000029 B 8095874551 7951978665 0002724500 0000000026 B 8096890166 αβ 7957056687 0007804000 0000000030 B 8101968339 7958072288 0008819875 0000000026 B 8102983900 0 0 0 BUS. RESET 0 7960103503 0001121000 0000000028 A 7960103794 7961119119 0002136875 0000000024 A 7961119386 α7 7966197126 0007216500 0000000028 A 7966197419 7967212732 0008232375 0000000028 A 7967213023 0 0 0 BUS. RESET 0 7969243956 0001133375 0000000029 A 7969244557 7970259542 0002149250 0000000030 A 7970259820 αδ 8006821287 0038722000 0000000028 A 8006821557 8007836894 0039738000 0000000029 A 8007837177 0 0 0 BUS RESET 0 Tab.B
TL1 TR TL2 NMR TMR
8022330108 0002126375 0000000066 B 8022331080
8023345715 0003142125 0000000042 B 8023346654
8030533201 0010330625 0000000037 B 8030534217
8031564504 0011362125 0000000048 B 8031565573 0 0 0 BUS_RESET O
8033642626 0001864375 0000000048 C 0301503876
8034673830 0002895625 0000000025 C 0302534856
8049111328 0017335250 0000000028 C 0316972351
8050142610 0018366750 0000000038 C 0318003740 0 0 0 BUS_RF.SET 0
8052220716 0001644125 0000000042 B 8052221861
8053251969 0002675500 0000000052 B 8053253220
8054283215 0003706875 0000000038 B 8054284434 0 0 0 BUS_RESET 0
8056377004 0001603625 0000000040 A 7911467875
8057423861 0002650750 0000000076 A 7912514861
8066845695 0012073875 0000000028 A 7921936130
8067892623 0013121000 0000000079 A 7922983134 0 0 0 BUS_RESET 0
8069986326 0001090375 0000000023 B 8069987185
8071017587 0002121750 0000000044 B 8071018683
8083392603 0014497625 0000000033 B 8083393725 8084423819 0015528875 0000000027 B 8084424600 0 0 0 BUS RESET 0
8086501954 0001835750 0000000035 B 8086502686
8087533237 0002867125 0000000088 B 8087534237
8092689512 0008024125 0000000056 B 8092690667
8093720757 0009055625 0000000076 B 8093721770 0 0 0 BUS_RESET 0
8095798825 0001624750 0000000031 B 8095799819
8096830098 0002656125 0000000045 B 8096831121
8101986351 0007813125 0000000021 B 8101987503
8103017580 0008844500 0000000037 B 8103018294 0 0 0 BUS_RESET 0
8105111335 0001208875 0000000026 A 7960200939
8106158227 0002256000 0000000027 A 7961247922
8111392602 0007491125 0000000032 A 7966482229
8112439473 0008538125 0000000043 A 7967529242 0 0 0 BUS_RESET 0
8114533236 0001501875 0000000056 B 8114534120
8115564503 0002533375 0000000033 B 8115565530
8126908239 0013878750 0000000078 B 8126909116
8127939466 0014910125 0000000029 B 8127940507 0 0 0 BUS RESET 0 Tab.C
TL1 TR TL2 NMR TMR 0245148935 0001123529 0000000016 C 0245149153 0246149331 0002124009 0000000014 c 0246149485
Yl 0256150754 0012126272 0000000015 c 0256150859 0257150892 0013126494 0000000015 c 0257150996 0 0 0 BUSJ RESET 0 0259151823 0001063357 0000000015 A 7846381976 0260152246 0002063865 0000000015 A 7847382391 Y2 0273269802 0015182521 0000000014 A 7860499923 0274272003 0016184806 0000000015 A 7861502121 0 0 0 BUSJ RESET 0 0276282222 0001348304 0000000015 C 0276282326 0277282343 0002348510 0000000015 C 0277282446
Y3 0298284888 0023352815 0000000015 C 0298284991 0299284994 0024353005 0000000015 C 0299285096 0 0 0 BUSJ RESET 0 0301285283 0001656149 0000000015 C 0301285386 0302285388 0002656338 0000000015 C 0302285493
Y4 0317286883 0017659090 0000000014 C 0317286987 0318286979 0018659270 0000000015 C 0318287084 0 0 0 BUSJ RESET 0 0320287256 0001859382 0000000015 C 0320287363 0321287352 0002859562 0000000015 C 0321287454
Y5 0335288551 0016861934 0000000014 C 0335288653 0336288634 0017862101 0000000015 C 0336288737 0 0 0 BUSJ RESET 0 0338293102 0001537616 0000000015 B 8070433663 0339303052 0002547650 0000000015 B 8071443653
Y6 0351413246 0014658859 0000000015 B 8083554023 0352423266 0015668964 0000000015 B 8084564099 0 0 0 BUSJ RESET 0 0354433721 0001916670 0000000015 A 7941663622 0355447719 0002930752 0000000014 A 7942677620 γ7 0360493391 0007976846 0000000014 A 7947723296 0361503412 0008986952 0000000014 A 7948733336 0 0 0 BUSJ RESET 0 0363515461 0001490559 0000000014 B 8095656411 0364523458 0002498640 0000000014 B 8096664477
Y8 0370583555 0008559245 0000000014 B 8102724637 0371593569 0009569344 0000000015 B 8103734677 0 0 0 BUSJ RESET 0 0373603746 0001851003 0000000015 C 0373603849 0374603801 0002851142 0000000015 C 0374603904
Y9 0394604775 0022853791 0000000015 C 0394604877 0395604811 0023853910 0000000015 C 0395604914 0 0 0 BUS I RESET 0

Claims

REVENDICATIONS
1. Procédé pour établir une correspondance par intervalles ([TB], [TAB]) entre le temps (TB) indiqué par une première horloge (HB) monotone et le temps (TA) indiqué par une deuxième horloge (HA), également monotone, caractérisé en ce qu'il met en œuvre, sur au moins une plage temporelle (P1 , P4), une première référence temporelle (NT) commune à la première et à la deuxième horloge et monotone sur ladite plage, et en ce que ledit procédé comporte les étapes suivantes : a) détermination d'un premier intervalle temporel ([TB 1]) délimité par un premier couple de valeurs du temps (TB) de la première horloge (HB) et appartenant à une première plage temporelle (P1 ) sur laquelle existe ladite première référence temporelle (NT) commune à la première et à la deuxième horloge ; b) détermination d'un deuxième intervalle temporel ([TB 2]) délimité par un deuxième couple de valeurs du temps (TB) de la première horloge (HB) et appartenant à une deuxième plage temporelle (P4) sur laquelle existe ladite première référence temporelle (NT) commune à la première et à la deuxième horloge ; c) détermination, à l'aide de la référence temporelle commune (NT), d'un troisième intervalle temporel ([TAB 1]), délimité par un premier couple de valeurs du temps (TA) de la deuxième horloge (HA), et contenant le premier intervalle temporel ([TB 1]) ; d) détermination, à l'aide de la référence temporelle commune (NT), d'un quatrième intervalle temporel ([TAB2]), délimité par un deuxième couple de valeurs du temps (TA) de la deuxième horloge (HA), et contenant ledit deuxième intervalle temporel ([TB 2]) ; e) pour un cinquième intervalle temporel ([TB]) quelconque délimité par un troisième couple de valeurs du temps (TB) de la première horloge (HB), calcul d'un sixième intervalle temporel ([TAB]), délimité par un troisième couple de valeurs du temps (TA) de la deuxième horloge (HA) et contenant ledit cinquième intervalle temporel ([TB]), le calcul étant effectué par interpolation ou extrapolation à l'aide desdits premier ([TB 1]), deuxième ([TB 2]), troisième ([TAB 1]) et quatrième ([TAB 2]) intervalles.
2. Procédé selon la revendication 1 , dans lequel l'étape c) comporte les opérations suivantes : d ) détermination d'un septième ([TA1 1]) et d'un huitième
([T 2 1]) intervalle temporel, délimités par un quatrième et cinquième couple de valeurs du temps (TA) de la deuxième horloge (HA) respectivement et appartenant à la première plage temporelle (P1 ), tels que ledit premier intervalle temporel ([TB 1]) est compris entre lesdits septième ([TAι1]) et huitième ([TA2 1]) intervalles temporels; c2) détermination d'une première (NTB 1), deuxième (NTAι1) et troisième (NTA2 1) valeur de la première référence temporelle commune (NT), comprises dans lesdits premier ([TB 1]), septième ([TAι1]) et huitième ([TA2 1]) intervalles temporels respectivement ; c3) calcul par interpolation dudit troisième ([TAB 1]) intervalle temporel, à l'aide desdits premier ([TB 1]), septième ([TA1 1]) et huitième ([TA2 1]) intervalles temporels et desdites première (NTB 1), deuxième (NTAι1) et troisième (NTA2 1) valeurs de la première référence temporelle commune (NT) ; et dans lequel l'étape d) comporte les opérations suivantes : d1 ) détermination d'un neuvième ([TAι2]) et d'un dixième ([TA22]) intervalle temporel, délimités par un sixième et septième couple de valeurs du temps (TA) de la deuxième horloge (HA) respectivement et appartenant à la deuxième plage temporelle (P4), tels que ledit deuxième intervalle temporel ([TB 2]) est compris entre lesdits neuvième ([TAι2]) et dixième ([TA2 2]) intervalles ; d2) détermination d'une quatrième (NTB 2), cinquième (NTAι2) et sixième (NTA2 2) valeur de la première référence temporelle commune (NT), comprises dans lesdits deuxième ([TB 2]), neuvième ([TAι2]) et dixième ([TA2 2]) intervalles temporels respectivement ; d3) calcul par interpolation dudit quatrième ([TAB 2]) intervalles temporels, à l'aide desdits deuxième ([TB2]), neuvième ([TA1 2]) et dixième ([TA2 2]) intervalle temporel et desdites quatrième (NTB 2), cinquième (NTAι2) et sixième (NTA2 2) valeurs de la première référence temporelle commune (NT).
3. Procédé selon la revendication 1 , dans lequel l'étape c) comporte les opérations suivantes : d ) détermination d'une septième (TA1 1) et d'une huitième
(TA2 1) valeur du temps (TA) de la deuxième horloge (HA) appartenant à la première plage temporelle (P1 ), tels que ledit premier intervalle temporel
([TB 1]) est compris entre lesdits septième (TA1) et huitième (TA2 1) valeurs; c2) détermination d'une première ([NTB 1]), deuxième
([NTA1]) et troisième ([NTA2 1]) intervalle de valeurs de la première référence temporelle commune (NT), comprenant ledit premier intervalle temporel
([TB 1]) et lesdites septième (TA1 1) et huitième (TA2 1) valeurs du temps (TA) de la deuxième horloge (HA) respectivement; c3) calcul par interpolation dudit troisième ([TAB 1]) intervalle temporel, à l'aide dudit premier intervalle ([TB 1]) de valeurs du temps (TB) de la première horloge (HB), desdites septième (TAι1) et huitième (TA2 1) valeurs du temps (TA) de la deuxième horloge (HA) et desdits premier ([NTB 1]), deuxième ([NTA1 1]) et troisième ([NTA2 1]) intervalles de valeurs de la première référence temporelle commune (NT) ; et dans lequel l'étape d) comporte les opérations suivantes : d1) détermination d'une neuvième (TA2) et d'une dixième (TA22) valeurs du temps (TA) de la deuxième horloge (HA) appartenant à la deuxième plage temporelle (P4), tels que ledit deuxième intervalle temporel ([TB 2]) est compris entre lesdites neuvième (TAι2) et dixième (TA2 2) valeurs ; d2) détermination d'un quatrième ([NTB 2]), cinquième
([NTA1 2]) et sixième ([NTA2 2]) intervalle de valeur de la première référence temporelle commune (NT), comprenant ledit deuxième ([TB 2]) intervalle temporel et lesdites neuvième (TAι2) et dixième (TA2 2) valeurs du temps (TA) de la deuxième horloge (HA); d3) calcul par interpolation dudit quatrième ([TAB 2]) intervalle temporel, à l'aide dudit deuxième intervalle ([TB 2]) de valeurs du temps (TB) de la première horloge (HB), desdites neuvième (TA1 1) et dixième (TA2 1) valeurs du temps (TA) de la deuxième horloge (HA) et desdits quatrième ([NTB 1]), cinquième ([NTAι1]) et sixième ([NTA2 1]) intervalles de valeurs de la première référence temporelle commune (NT).
4. Procédé selon la revendication 2, dans lequel l'opération c3) est effectuée en remplaçant lesdites première (NTB 1), deuxième (NTA1) et troisième (NTA2 1) valeurs de la référence temporelle commune (NT) par des intervalles temporels ([NTB 1], [NTAι1], [NTA2 1]) dont la largeur est égale à la discrétisation de la première référence temporelle commune (NT) sur la première plage temporelle (P1 ), et dans lequel l'opération d3) est effectuée en remplaçant lesdites quatrième (NTB 2), cinquième (NTA-|2) et sixième (NTA2 2) valeurs de la référence temporelle commune (NT) par des intervalles temporels ([NTB 2], [NTA1 2], [NTA2 2]) dont la largeur est égale à la discrétisation de la première référence temporelle commune (NT) sur la deuxième plage temporelle (P4).
5. Procédé selon la revendication 3, dans lequel les opérations c3) et d3) sont effectuées en remplaçant lesdites septième (TAι1), huitième (TA2 1), neuvième (TAι2) et dixième (TA2 2) valeurs du temps (TA) de la deuxième horloge (HA) par des intervalles temporels ([TA1 1], [TAι2], [T^1], [TA2 2]) dont la largeur est égale à la discrétisation du temps (TA) de la deuxième horloge (HA).
6. Procédé selon la revendication 2 ou 4 dans lequel, pendant la ou les plages temporelles (P1 , P4) sur lesquelles existe une première référence temporelle commune (NT), on enregistre à plusieurs reprises une première lecture de la première horloge (TL1 - FHB), suivie par une lecture de la première référence temporelle commune (TR - FHB) et ensuite par une deuxième lecture de la première horloge (TL2 - FHB), et de manière indépendante on enregistre, également à plusieurs reprises, une première lecture de la deuxième horloge (TL1 - FHA), suivie par une lecture de la première référence temporelle commune (TR - FHA) et ensuite par une deuxième lecture de la deuxième horloge (TL2 - FHA), et dans lequel les opérations d ), c2), c3), d1 ), d2) et d3) sont effectuées à l'aide de ces enregistrements.
7. Procédé selon la revendication 3 ou 5 dans lequel, pendant la ou les plages temporelles (P1 , P4) sur lesquelles existe une première référence temporelle commune (NT), on enregistre à plusieurs reprises une première lecture de la première référence temporelle commune (NT), suivie par une lecture de la première horloge (HB) et ensuite par une deuxième lecture de la première référence temporelle commune (NT), et de manière indépendante on enregistre, également à plusieurs reprises, une première lecture de la première référence temporelle commune (NT), suivie par une lecture de la de la deuxième horloge (HA) et ensuite par une deuxième lecture de la première référence temporelle commune (NT), et dans lequel les opérations d ), c2), c3), d1 ), d2) et d3) sont effectuées à l'aide de ces enregistrements.
8. Procédé selon l'une des revendications 1 à 7 dans lequel l'étape e) s'effectue par interpolation linéaire par intervalles ou par extrapolation linéaire par intervalles.
9. Procédé selon l'une des revendications 2 à 7, ou 8 lorsque cette dernière dépend des revendications 2 ou 3, dans lequel les opérations c3) et d3) s'effectuent par interpolation linéaire par intervalles.
10. Procédé selon l'une des revendications 1 à 9 dans lequel la première référence temporelle (NT) commune à la première et à la deuxième horloge existe sur au moins deux plages temporelles distinctes (P1 , P4) et peut comporter une rupture de monotonie d'une plage temporelle à l'autre, une deuxième référence temporelle commune monotone (TMR - NMR) étant utilisée afin de résoudre les ambiguïtés qui résultent de la non- monotonie de la première référence temporelle commune (NT).
11. Procédé de synchronisation des données enregistrées et datées par une première machine (B), ayant une première horloge (HB), par rapport au temps local d'une deuxième machine (A), ayant une deuxième horloge (HA), caractérisé en ce que la datation s'effectue en associant à chaque donnée enregistrée par la première machine un cinquième intervalle temporel ([TB]), délimité par un troisième couple de valeurs du temps (TB) de la première horloge (HB), et en ce que la synchronisation s'effectue en déterminant, par un procédé selon l'une des revendications 1 à 10, un sixième intervalle temporel ([TAB]), délimité par un troisième couple de valeurs du temps (TA) de la deuxième horloge (HA) et contenant ledit cinquième intervalle temporel ([TB]).
12. Procédé selon la revendication 11 dans lequel la première référence temporelle commune (NT) est fournie par une horloge (HBus) d'un bus (BUS) qui relie au moins temporairement lesdites première et deuxième machines.
13. Procédé selon l'une des revendications 11 ou 12, qui se décompose en un premier sous-procédé d'enregistrement de lectures d'horloges selon la revendication 6 ou 7, effectué localement par chaque machine dont on veut pouvoir synchroniser les données, et un deuxième procédé de synchronisation proprement dite, effectué par une machine vers laquelle des données ont été transférées après la fin de la session d'enregistrement des données.
PCT/FR2005/000379 2004-03-03 2005-02-17 Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges. WO2005096123A2 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007501304A JP4829876B2 (ja) 2004-03-03 2005-02-17 クロックドリフトおよび不正確さを考慮した分散型データなどのデータ同期方法。
US10/598,442 US7889764B2 (en) 2004-03-03 2005-02-17 Method for the synchronization of data, such as distributed data, taking account of clock drifts and inaccuracies
EP05729336.7A EP1728140B1 (fr) 2004-03-03 2005-02-17 Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges.

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0402189A FR2867288B1 (fr) 2004-03-03 2004-03-03 Procede de synchronisation de donnees, notamment distribuees prenant en compte les imprecisions et derives des horloges
FR0402189 2004-03-03

Publications (2)

Publication Number Publication Date
WO2005096123A2 true WO2005096123A2 (fr) 2005-10-13
WO2005096123A3 WO2005096123A3 (fr) 2006-03-02

Family

ID=34855009

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2005/000379 WO2005096123A2 (fr) 2004-03-03 2005-02-17 Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges.

Country Status (5)

Country Link
US (1) US7889764B2 (fr)
EP (1) EP1728140B1 (fr)
JP (1) JP4829876B2 (fr)
FR (1) FR2867288B1 (fr)
WO (1) WO2005096123A2 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO20076533L (no) * 2007-12-18 2009-06-19 Tandberg Telecom As Fremgangsmåte og system for klokkedriftskompensering

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2424136B1 (fr) 2010-08-24 2013-10-02 Siemens Aktiengesellschaft Système et procédé pour obtenir une synchronisation temporelle dans un réseau de communication
EP2567741A1 (fr) * 2011-09-07 2013-03-13 Research In Motion Limited Appareil et procédé associé de fourniture d'une lecture de média synchronisée
US11776053B2 (en) * 2014-09-07 2023-10-03 Codrut Radu Radulescu Synchronized exchange system
KR20180074684A (ko) * 2015-10-23 2018-07-03 퀄컴 인코포레이티드 제어기와 센서들을 동기화하기 위한 장치 및 방법들
US20180224887A1 (en) * 2017-02-06 2018-08-09 Qualcomm Incorporated Apparatus and method for asynchronous event timestamping
CN112689963B (zh) * 2020-03-30 2022-01-11 华为技术有限公司 一种数据处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0042924A2 (fr) * 1980-06-30 1982-01-06 International Business Machines Corporation Appareil de transfert de données
US20020150189A1 (en) * 1997-10-10 2002-10-17 Rambus Incorporated Apparatus and method for generating a distributed clock signal using gear ratio techniques
EP1380918A2 (fr) * 2002-07-12 2004-01-14 Ensequence, Inc. Appareil et procédé associé permettant de synchroniser l'operation d'un compteur temporel éloigné avec une centrale de commande

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07128463A (ja) * 1993-11-08 1995-05-19 Nippon Telegr & Teleph Corp <Ntt> 通信装置の時刻管理方式
JP2000010933A (ja) * 1998-06-25 2000-01-14 Nippon Telegr & Teleph Corp <Ntt> データ同期補正方法及び装置及びデータ同期補正プログラムを格納した記憶媒体
US6278694B1 (en) * 1999-04-16 2001-08-21 Concord Communications Inc. Collecting and reporting monitoring data from remote network probes
US7668099B2 (en) * 2003-06-13 2010-02-23 Apple Inc. Synthesis of vertical blanking signal

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0042924A2 (fr) * 1980-06-30 1982-01-06 International Business Machines Corporation Appareil de transfert de données
US20020150189A1 (en) * 1997-10-10 2002-10-17 Rambus Incorporated Apparatus and method for generating a distributed clock signal using gear ratio techniques
EP1380918A2 (fr) * 2002-07-12 2004-01-14 Ensequence, Inc. Appareil et procédé associé permettant de synchroniser l'operation d'un compteur temporel éloigné avec une centrale de commande

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO20076533L (no) * 2007-12-18 2009-06-19 Tandberg Telecom As Fremgangsmåte og system for klokkedriftskompensering
WO2009078733A1 (fr) * 2007-12-18 2009-06-25 Tandberg Telecom As Procédé et système de compensation de dérive d'horloge
US8515086B2 (en) 2007-12-18 2013-08-20 Trygve Frederik Marton Method and system for clock drift compensation

Also Published As

Publication number Publication date
JP2007526570A (ja) 2007-09-13
EP1728140B1 (fr) 2017-04-26
FR2867288A1 (fr) 2005-09-09
FR2867288B1 (fr) 2006-06-02
US7889764B2 (en) 2011-02-15
US20070297457A1 (en) 2007-12-27
EP1728140A2 (fr) 2006-12-06
WO2005096123A3 (fr) 2006-03-02
JP4829876B2 (ja) 2011-12-07

Similar Documents

Publication Publication Date Title
EP1728140B1 (fr) Procede de synchronisation de donnees, notamment distribuees, prenant en compte les imprecisions et derives des horloges.
WO2009043923A1 (fr) Procede de synchronisation de flux video
EP2572319A1 (fr) Procede et systeme pour fusionner des donnees issues de capteurs d&#39;images et de capteurs de mouvement ou de position
EP3004912A1 (fr) Procédé et dispositif de métrologie pour la calibration de la géométrie d&#39;un réseau de balises acoustiques sous-marines
EP2572164A1 (fr) Aide a la navigation a traitement de donnees d&#39;affichage perfectionne
EP3793142B1 (fr) Communication par bus can
EP2751637A1 (fr) Procédé de synchronisation d&#39;une grappe de serveurs et grappe de serveurs mettant en oeuvre ce procédé.
EP1118943B1 (fr) Dispositif de régénération d&#39;une horloge à partir d&#39;au moins deux bits de synchronisation
EP3793132B1 (fr) Communication par bus can
FR3093606A1 (fr) Procédé et dispositif de correction de l’heure définie par une horloge interne d’une entité
EP4033680A1 (fr) Procédé de synchronisation de domaines temporels d&#39;un système sur puce
FR3073957B1 (fr) Systeme et procede de datation d&#39;un evenement detecte dans un vehicule automobile
FR2997206A1 (fr) Unite de calcul d&#39;un appareil de commande et son procede de gestion
EP1120714B1 (fr) Dispositif de régénération d&#39;une horloge
FR3065343A1 (fr) Procede de traitement d’informations acquises par une pluralite de capteurs d’un vehicule automobile
EP1580893B1 (fr) Dispositif et procédé de détection de phase d&#39;un signal
EP1127305A1 (fr) Procede et dispositif de synchronisation d&#39;une horloge locale sur l&#39;horloge d&#39;un reseau de communication sans fil
FR2676152A1 (fr) Procede, systeme et dispositif de synchronisation des horloges d&#39;un reseau.
EP2791687B1 (fr) Procede et systeme d&#39;auto-calibration d&#39;un dispositif de mesure de vitesse d&#39;un vehicule circulant dans un espace tridimensionnel
JP7482291B2 (ja) クロック同期
WO2020104567A1 (fr) Système et procédé de mise à jour d&#39;horloge
WO2005064271A1 (fr) Procede de capture du mouvement d&#39;un solide, utilisant une mesure absolue associee a une mesure par double integration
EP3469986B1 (fr) Procede de synchronisation d&#39;un systeme de localisation magnetique
EP0077249B1 (fr) Procédé de chronométrie, système de gestion centralisée mettant en oeuvre ce procédé, et son application à la détection de fuites dans un réseau de transport de fluides
EP0343062B1 (fr) Procédé d&#39;émission de données avec compression et de réception de données avec expansion sur ligne téléphonique numérisée

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007501304

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Ref document number: DE

REEP Request for entry into the european phase

Ref document number: 2005729336

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2005729336

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2005729336

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 10598442

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 10598442

Country of ref document: US