System and method for synchronizing clocks in distributed computer nodes
First Claim
1. In a distributed computer system having a plurality of computer nodes arranged logically adjacent to each other in a communications ring so that each computer node receives communications from a preceding computer node and sends communications to a succeeding computer node, wherein the computer nodes maintain local clocks with local time values (c);
- a method of synchronizing the local clocks, the method comprising the following steps;
measuring an approximate local offset (d) of the local time value (c) of each computer node relative to the local time value (c) of the logically adjacent computer node in the communications ring;
passing a plurality of collation variables from a lead one of the computer nodes, through the computer nodes forming the communications ring, and back to the lead computer node in a single pass;
distributively processing the collation variables at each computer node as they are passed around the communications ring, said processing being based at least in part on the measured approximate local offsets (d) at each computer node;
calculating a difference (m) at the lead computer node between the local time value (c) of the lead computer node and a mean of the local time values (c) of at least some of the computer nodes based upon the collation variables received back at the lead computer node after being passed around the communications ring;
adjusting the local clocks of at least some of the computer nodes as a function of the calculated difference (m).
2 Assignments
0 Petitions
Accused Products
Abstract
Described herein is a distributed computer system having a plurality of computer nodes arranged logically adjacent to each other in a communications ring. Each computer node receives communications from a preceding computer node and sends communications to a succeeding computer node. The computer nodes maintain individual local clocks with local time values c. The clocks are synchronized to each other through a sequence of distributed processing steps. The steps include a step of measuring an approximate local offset d of the local time value of each computer node relative to the local time value of a logically adjacent computer node in the communications ring. A subsequent step includes passing a plurality of collation variables from a lead computer node, through the computer nodes forming the communications ring, and back to the lead computer node in a single pass. The collation variables are processed at each computer node as they are passed around the communications ring. This processing is based at least in part on the measured approximate local offsets d at each computer node. The lead computer then calculates a difference m between its local time value and the mean of the local time values of all the computer nodes based upon the collation variables received back at the lead computer node after being passed around the communications ring. Based upon difference m, values are provided to the distributed computer nodes representing their offsets from the mean. Each computer node then adjusts the rate of its local clock to achieve synchronization. To prevent frequency runaway, each computer node updates its clock through a PLL which limits the amount of correction which can be applied to the local clock.
147 Citations
65 Claims
-
1. In a distributed computer system having a plurality of computer nodes arranged logically adjacent to each other in a communications ring so that each computer node receives communications from a preceding computer node and sends communications to a succeeding computer node, wherein the computer nodes maintain local clocks with local time values (c);
- a method of synchronizing the local clocks, the method comprising the following steps;
measuring an approximate local offset (d) of the local time value (c) of each computer node relative to the local time value (c) of the logically adjacent computer node in the communications ring; passing a plurality of collation variables from a lead one of the computer nodes, through the computer nodes forming the communications ring, and back to the lead computer node in a single pass; distributively processing the collation variables at each computer node as they are passed around the communications ring, said processing being based at least in part on the measured approximate local offsets (d) at each computer node; calculating a difference (m) at the lead computer node between the local time value (c) of the lead computer node and a mean of the local time values (c) of at least some of the computer nodes based upon the collation variables received back at the lead computer node after being passed around the communications ring; adjusting the local clocks of at least some of the computer nodes as a function of the calculated difference (m). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
- a method of synchronizing the local clocks, the method comprising the following steps;
-
21. A method of synchronizing a local clock to a time reference, the method comprising:
-
regulating the rate of the local clock as a function of a clock rate adjustment factor; obtaining a periodic sequence of error values indicating the offset of the local clock from the time reference; for each respective error value in the sequence, changing the clock rate adjustment factor as a function of the respective error value; attenuating changes in the clock rate adjustment factor by a variable term that constrains the clock rate adjustment factor within upper and lower bounds. - View Dependent Claims (22)
-
-
23. A method of synchronizing a local clock to a time reference, the method comprising:
-
obtaining a periodic sequence of error values indicating the offset of the local clock from the time reference; regulating the rate of the local clock as a function of a sequence of clock rate adjustment factors calculated to correspond respectively to the error values; calculating each sequential clock rate adjustment factor by adding a corresponding adjustment differential to a previous clock rate adjustment factor; calculating the adjustment differential corresponding to a particular clock rate adjustment factor as a function of an attenuated error value, the attenuated error value being the difference between (a) the error value corresponding to the particular clock rate adjustment factor and (b) a variable attenuation term which is proportional to a previous clock rate adjustment factor. - View Dependent Claims (24, 25, 26)
-
-
27. A computer node in a distributed computer system having a plurality of computer nodes arranged logically adjacent to each other in a communications ring so that each computer node receives communications from a preceding node and sends communications to a succeeding node, wherein the computer nodes maintain respective clocks with time values;
- the computer node comprising;
a data processor; communications means for exchanging communications with logically adjacent computers in the communications ring; a local clock having a local time value (c); the data processor being programmed to perform the following steps; (i) measuring an approximate local offset (d) of the local time value (c) relative to the time value of the logically adjacent computer node in the communications ring; (ii) receiving a plurality of collation variables from the preceding computer node in the communications ring; (iii) processing the collation variables based at least in part on the measured approximate local offset (d); (iv) sending the processed collation variables to the succeeding computer node in the communications ring; (v) receiving a correction variable (n) from the preceding computer node in the communications ring, said correction variable (n) being calculated as a function of the processed collation variables; (vi) adjusting the local clock as a function of the correction variable (n). - View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
- the computer node comprising;
-
43. A computer node in a distributed computer system having a plurality of computer nodes arranged logically adjacent to each other in a communications ring so that each computer node receives communications from a preceding node and sends communications to a succeeding node, wherein the computer nodes maintain respective clocks with time values;
- the computer node comprising;
a data processor; communications means for exchanging communications with logically adjacent computers in the communications ring; a local clock having a local time value (c); the data processor being programmed to configure the computer node alternatively as a lead node and as follower node; the data processor being programmed when configuring the computer node as a lead node to perform the following steps; (i) initializing and passing a plurality of collation variables to the succeeding computer node in the communications ring; (ii) receiving the collation variables back from the preceding computer node in the communications ring; (iii) calculating a difference (m) between the local time value (c) of the local clock and a mean of the time values of the clocks of other computer nodes in the communications ring based upon the received collation variables; (iv) adjusting the local clock as a function of the calculated difference (m); (v) sending a correction variable (n) to the succeeding computer node in the communications ring; the data processor being programmed when configuring the computer node as a follower node to perform the following steps; (vi) measuring an approximate local offset (d) of the local time value (c) relative to the time value of the logically adjacent computer node in the communications ring; (vii) receiving the collation variables from the preceding computer node in the communications ring; (viii) processing the collation variables based at least in part on the measured approximate local offset (d); (ix) sending the processed collation variables to the succeeding computer node in the communications ring; (x) receiving the correction variable (n) from the preceding computer node in the communications ring; (xi) adjusting the local clock as a function of the correction variable (n). - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60)
- the computer node comprising;
-
61. A clock for maintaining a local time value in synchronization with a time reference in response to a periodic sequence of error values indicating the offset of the local time value from the time reference, comprising:
-
means for regulating the rate of the local clock as a function of a clock rate adjustment factor; means for periodically changing the clock rate adjustment factor as a function of the error values; means for attenuating changes in the clock rate adjustment factor by a variable term that constrains the clock rate adjustment factor within upper and lower bounds; and means for increasing the magnitude of the variable term in response to an increasing magnitude of the clock rate adjustment factor.
-
-
62. A clock for maintaining a local time value in synchronization with a time reference in response to a periodic sequence of error values indicating the offset of the local time value from the time reference, comprising:
-
means for regulating the rate of the local clock as a function of a sequence of clock rate adjustment factors calculated to correspond respectively to the error values; means for calculating each sequential clock rate adjustment factor by adding a corresponding adjustment differential to a previous clock rate adjustment factor; means for calculating the adjustment differential corresponding to a particular clock rate adjustment factor as a function of an attenuated error value, the attenuated error value being the difference between (a) the error value corresponding to the particular clock rate adjustment factor and (b) a variable attenuation term which is proportional to a previous clock rate adjustment factor. - View Dependent Claims (63, 64, 65)
-
Specification