IP Library Granted Patent US 7,188,060
Granted Patent B1
US 7,188,060 · App. 10/113,121 · Granted Mar 6, 2007

Emulation of a high-speed, high-stability clock

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,188,060
App. No.
10/113,121
Granted
Mar 6, 2007
Kind
B1
Abstract

A method and apparatus for emulating a high-precision, high-accuracy clock. In one embodiment, two clocks are used in the emulation. The first clock has precision greater than precision of the second clock and accuracy less than accuracy of the second clock. A checkpoint time relative to elapsed cycles of the second clock and a checkpoint cycle count of cycles of the first clock are periodically stored relative to a checkpoint period that lasts for a selected number of cycles of the second clock. A reference cycle rate of the first clock is calculated relative to the cycle rate of the second clock. The current time is determined as a function of the checkpoint time, a number of cycles of the first clock elapsed since storing the most recent checkpoint cycle count, and the reference cycle rate of the first clock.

Claims (56)

1. A computer-implemented method for emulating a high-precision, high-accuracy clock using a first clock and a second clock, comprising:

periodically storing, relative to a checkpoint period lasting for a selected number of cycles of the second clock, a checkpoint time indicating a number of elapsed cycles of the second clock at the end of the period and a checkpoint cycle count indicating a number of elapsed cycles of the first clock at the end of the period, wherein the first clock operates with a greater rate of oscillation and lesser accuracy than the second clock;

calculating a first-clock-delta value as a difference between a current count of elapsed cycles of the first clock and a most recently stored checkpoint cycle count of the first clock;

converting the first-clock-delta value to units compatible with a most recently stored checkpoint time of the second clock; and;

determining a current time as a sum of the most recently stored checkpoint time and the first-clock-delta value;

periodically calculating, according to the checkpoint period, a reference cycle rate of the first clock relative to the rate of oscillation of the second clock and using the reference cycle rate in converting the first-clock-delta value to units compatible with the most recently stored checkpoint time of the second clock;

finding a current rate of oscillation of the first clock relative to the rate of oscillation of the second clock; and

in response to an absolute value of a difference between the current rate of oscillation of the first clock and the reference cycle rate being less than a selected first threshold, changing the reference cycle rate by one-eighth the difference between the current rate of oscillation of the first clock and the reference cycle rate.

2. The method of claim 1 , further comprising reporting an error condition if an absolute difference between the current rate of oscillation of the first clock and the reference cycle rate is not less than a selected second threshold.

3. A computer-implemented method for emulating a high-precision, high-accuracy clock using a first clock and a second clock, comprising:

generating an initial value for a reference cycle rate for the first clock;

periodically saving a first checkpoint cycle count that indicates a total of elapsed cycles of the first clock according to a checkpoint period lasting for one or more cycles of the second clock, wherein the first clock operates with a greater rate of oscillation and lesser accuracy than the second clock, and the second clock rate having an assigned constant value;

periodically saving a second checkpoint cycle count, concurrent with saving the first checkpoint cycle count, wherein the second checkpoint cycle count indicates a total of elapsed cycles of the second clock according to the checkpoint period;

periodically generating an observed cycle rate of the first clock according to the first period and using the second checkpoint cycle count, a current cycle count of the second clock, and the constant value of the second clock rate;

adjusting the reference cycle rate as a function of the observed cycle rate;

calculating a first-clock-delta value as a difference between a current count of elapsed cycles of the first clock and a most recently saved first checkpoint cycle count of the first clock;

converting the first-clock-delta value to units compatible with a most recently saved second checkpoint time of the second clock and adjusting the first-clock-delta value as a function of the reference cycle rate; and

indicating a current time value as a sum of the most recently saved second checkpoint cycle count and the first-clock-delta value;

determining a current cycle rate from the second checkpoint cycle count, a current cycle count of the second clock, the cycle rate of the second clock, the first checkpoint cycle count, and a current cycle count of the first clock; and

in response to an absolute value of a difference between the current cycle rate and the reference cycle rate being less than a selected first threshold, changing the reference cycle rate by one-eighth the difference between the current cycle rate and the reference cycle rate.

4. The method of claim 3 , wherein a plurality of homogenous processors are inter-coupled, and each processor has a respective first clock and second clock, further comprising:

generating the observed cycle rate at a selected one of the processors;

updating respective first checkpoint cycle counts on all the processors as a function of the observed cycle rate; and

at each processor, indicating a current time value as a function of the respective second checkpoint cycle counts, the reference cycle rate, and a number of cycles of the respective first clock elapsed since the saved second checkpoint cycle count.

5. The method of claim 4 , further comprising generating the initial value for the reference cycle rate as a function of observed cycle rates of respective first clocks on the plurality of processors.

6. The method of claim 5 , wherein the initial value for the reference cycle rate is an average of observed cycle rates of respective first clocks on the plurality of processors.

7. The method of claim 3 , further comprising if the absolute value of the difference between the current cycle rate and the reference cycle rate is not less than a selected first threshold and is less than a second selected threshold, then after waiting for an interval that is less than the checkpoint period, saving a current cycle count of the first clock as the first checkpoint cycle count, saving a current cycle count of the second clock as the second checkpoint cycle count, generating an observed cycle rate of the first clock using the second checkpoint cycle count, a current cycle count of the second clock, and the constant value of the second clock rate.

8. An apparatus for emulating a high-precision, high-accuracy clock using a first clock and a second clock, comprising:

means for periodically storing, relative to a checkpoint period lasting for a selected number of cycles of the second clock, a checkpoint time indicating a number of elapsed cycles of the second clock at the end of the period and a checkpoint cycle count indicating a number of elapsed cycles of the first clock at the end of the period, wherein the first clock operates with a greater rate of oscillation and lesser accuracy than the second clock;

means for calculating a first-clock-delta value as a difference between a current count of elapsed cycles of the first clock and a most recently stored checkpoint cycle count of the first clock;

means for converting the first-clock-delta value to units compatible with a most recently stored checkpoint time of the second clock; and;

means for determining a current time as a sum of the most recently stored checkpoint time and the first-clock-delta value;

means for periodically calculating, according to the checkpoint period, a reference cycle rate of the first clock relative to the rate of oscillation of the second clock and using the reference cycle rate in converting the first-clock-delta value to units compatible with the most recently stored checkpoint time of the second clock;

means for finding a current rate of oscillation of the first clock relative to the rate of oscillation of the second clock; and

means, responsive to an absolute value of a difference between the current rate of oscillation of the first clock and the reference cycle rate being less than a selected first threshold, for changing the reference cycle rate by one-eighth the difference between the current rate of oscillation of the first clock and the reference cycle rate.

9. An apparatus for emulating a high-precision, high-accuracy clock using a first clock and a second clock, comprising:

means for generating an initial value for a reference cycle rate for the first clock;

means for periodically saving a first checkpoint cycle count that indicates a total of elapsed cycles of the first clock according to a checkpoint period lasting for one or more cycles of the second clock, wherein the first clock operates with a greater rate of oscillation and lesser accuracy than the second clock, and the second clock rate having an assigned constant value;

means for periodically saving a second checkpoint cycle count, concurrent with saving the first checkpoint cycle count, wherein the second checkpoint cycle count indicates a total of elapsed cycles of the second clock according to the checkpoint period;

means for periodically generating an observed cycle rate of the first clock according to the first period and using the second checkpoint cycle count, a current cycle count of the second clock, and the constant value of the second clock rate;

means, responsive to an absolute value of a difference between the observed cycle rate and the reference cycle rate being less than a selected first threshold, for changing the reference cycle rate by one-eighth the difference between the observed cycle rate and the reference cycle rate;

means for calculating a first-clock-delta value as a difference between a current count of elapsed cycles of the first clock and a most recently stored first checkpoint cycle count of the first clock;

means for converting the first-clock-delta value to units compatible with a most recently stored second checkpoint time of the second clock and for adjusting the first-clock-delta value as a function of the reference cycle rate; and

means for indicating a current time value as a sum of the most recently stored second checkpoint cycle count and the first-clock-delta value.

10. A processor arrangement comprising:

a bus;

a real-time clock coupled to the bus; and

a processor coupled to the bus and including an internal clock, wherein the internal clock has a first clock rate with precision greater than precision of a second clock rate of the real-time clock and accuracy less than accuracy of the real-time clock, wherein the processor is configured to

generate an initial value for a reference cycle rate for the internal clock;

periodically save, according to a checkpoint period, a first checkpoint cycle count that indicates a total of elapsed cycles of the internal clock, wherein the checkpoint period lasts for one or more cycles of the real-time clock;

periodically save a second checkpoint cycle count, concurrent with saving the first checkpoint cycle count, wherein the second checkpoint cycle count indicates a total of elapsed cycles of the real-time clock according to the checkpoint period;

periodically generate an observed cycle rate of the internal clock according to the first period and using the second checkpoint cycle count, a current cycle count of the real-time clock, and the constant value of the second clock rate;

change, in response to an absolute value of a difference between the observed cycle rate and the reference cycle rate being less than a selected first threshold, the reference cycle rate by one-eighth the difference between the observed cycle rate and the reference cycle rate;

calculate a first-clock-delta value as a difference between a current count of elapsed cycles of the internal clock and a most recently stored first checkpoint cycle count of the internal clock;

convert the first-clock-delta value to units compatible with a most recently stored second checkpoint time of the real-time clock and adjust the first-clock-delta value as a function of the reference cycle rate; and

indicate a current time value as a sum of the most recently saved second checkpoint cycle count and the first-clock-delta value.

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Oct 28, 2020
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: UNISYS CORPORATION
Reel/Frame 054231/0496 →
RELEASE OF SECURITY INTEREST Recorded Nov 9, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION (SUCCESSOR TO GENERAL ELECTRIC CAPITAL CORPORATION)
To: UNISYS CORPORATION
Reel/Frame 044416/0358 →
SECURITY INTEREST Recorded Oct 6, 2017
From: UNISYS CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 044144/0081 →
PATENT SECURITY AGREEMENT Recorded Apr 27, 2017
From: UNISYS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 042354/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 26, 2013
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
To: UNISYS CORPORATION
Reel/Frame 030082/0545 →
RELEASE OF SECURITY INTEREST Recorded Mar 15, 2013
From: DEUTSCHE BANK TRUST COMPANY
To: UNISYS CORPORATION
Reel/Frame 030004/0619 →
SECURITY AGREEMENT Recorded Jun 27, 2011
From: UNISYS CORPORATION
To: GENERAL ELECTRIC CAPITAL CORPORATION, AS AGENT
Reel/Frame 026509/0001 →
PATENT SECURITY AGREEMENT (JUNIOR LIEN) Recorded Oct 13, 2009
From: UNISYS CORPORATION
To: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
Reel/Frame 023364/0098 →
PATENT SECURITY AGREEMENT (PRIORITY LIEN) Recorded Oct 12, 2009
From: UNISYS CORPORATION
To: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
Reel/Frame 023355/0001 →
RELEASE BY SECURED PARTY Recorded Sep 14, 2009
From: CITIBANK, N.A.
To: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
Reel/Frame 023263/0631 →
RELEASE BY SECURED PARTY Recorded Jul 31, 2009
From: CITIBANK, N.A.
To: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
Reel/Frame 023312/0044 →
SECURITY AGREEMENT Recorded Jun 20, 2006
From: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
To: CITIBANK, N.A.
Reel/Frame 018003/0001 →