IP Library Granted Patent US 7,239,581
Granted Patent B2
US 7,239,581 · App. 10/924,640 · Granted Jul 3, 2007

Systems and methods for synchronizing the internal clocks of a plurality of processor modules

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,239,581
App. No.
10/924,640
Granted
Jul 3, 2007
Kind
B2
Abstract

In a multiprocessor system that includes a plurality of processor modules, each one of which includes its own internal clock, one of the plurality of processor modules is designated as a master processor module having a master internal clock. Each other processor module is designated as a slave processor module having a slave processor module internal clock. Each slave processor module synchronizes its internal clock with the master internal clock.

Claims (37)

1. In a multiprocessor system comprising a plurality of processor modules, each one of the plurality of processor modules comprising an internal clock, a method for maintaining a substantially consistent running clock for the multiprocessor system, the method comprising:

(a) designating one processor module to be a master processor module having a master internal clock;

(b) designating each other processor module to be a slave processor module having a slave processor module internal clock; and

(c) synchronizing each slave processor module internal clock by, for each slave processor module,

(i) requesting, by the slave processor module at a first time according to the slave processor module internal clock, a current time according to the master internal clock;

(ii) receiving, by the slave processor module at a second time according to the slave processor module internal clock, the current time according to the master internal clock;

(iii) computing, by the slave processor module, an expected time by using at least the first time according to the slave processor module internal clock and the second time according to the slave processor module internal clock;

(iv) determining, by the slave processor module, whether the expected time differs from the received current time according to the master internal clock; and

(v) upon determining that the expected time differs from the received current time according to the master internal clock, correcting, by the slave processor module, the slave processor module internal clock.

2. The method of claim 1 , wherein step (c) further comprises determining, by the slave processor module after completing sub-steps (i) and (ii) but before completing sub-steps (iii), (iv), and (v), whether the first time according to the slave processor module internal clock differs from the second time according to the slave processor module internal clock by less than a pre-determined amount.

3. The method of claim 2 , wherein sub-steps (iii), (iv), and (v) of step (c) are performed upon the slave processor module determining that the first time according to the slave processor module internal clock differs from the second time according to the slave processor module internal clock by less than the pre-determined amount.

4. The method of claim 1 , wherein computing the expected time comprises computing a round trip time, wherein the round trip time is computed by subtracting the first time according to the slave processor module internal clock from the second time according to the slave processor module internal clock.

5. The method of claim 4 , wherein computing the expected time further comprises computing the sum of the first time according to the slave processor module internal clock and one half the round trip time.

6. The method of claim 1 , wherein determining whether the expected time differs from the received current time according to the master internal clock comprises determining whether the expected time differs from the received current time according to the master internal clock by more than a pre-determined amount.

7. The method of claim 6 , wherein sub-step (v) of step (c) is only performed when the slave processor module determines that the expected time differs from the received current time according to the master internal clock by more than the pre-determined amount.

8. The method of claim 6 , wherein, upon determining that the expected time is greater than the received current time according to the master internal clock by more than the pre-determined amount, correcting the slave processor module internal clock comprises slowing down the slave processor module internal clock.

9. The method of claim 8 , wherein the multiprocessor system comprises a free-running counter, and wherein slowing down the slave processor module internal clock comprises increasing the number of counts that the slave processor module uses in a given time interval.

10. The method of claim 6 , wherein, upon determining that the received current time according to the master internal clock is greater than the expected time by more than the pre-determined amount, correcting the slave processor module internal clock comprises speeding up the slave processor module internal clock.

11. The method of claim 10 , wherein the multiprocessor system comprises a free-running counter, and wherein speeding up the slave processor module internal clock comprises decreasing the number of counts that the slave processor module uses in a given time interval.

12. The method of claim 1 , wherein the slave processor module internal clock is corrected such that it continually moves forwards in time.

13. The method of claim 1 further comprising periodically repeating step (c).

14. The method of claim 1 , wherein the multiprocessor system is a server in a network, and further comprising receiving, by the slave processor module, a write operation.

15. The method of claim 14 further comprising acknowledging, by the slave processor module when the expected time is determined to differ from the received current time according to the master internal clock by less than a specified amount of time, the received write operation before a write is actually completed.

16. The method of claim 15 , wherein the specified amount of time is one half the minimum amount of time in which a host in the network can request that the multiprocessor system process a first write operation, thereafter receive an acknowledgement of the request from the multiprocessor system, and thereafter request that the multiprocessor system process a second write operation.

17. The method of claim 14 further comprising refraining from acknowledging, by the slave processor module when the expected time is determined to differ from the received current time by more than a specified amount of time, the received write operation.

18. The method of claim 17 , wherein the specified amount of time is one half the minimum amount of time in which a host in the network can request that the multiprocessor system process a first write operation, thereafter receive an acknowledgement of the request from the multiprocessor system, and thereafter request that the multiprocessor system process a second write operation.

19. The method of claim 1 further comprising maintaining, by the master processor module, a table that relates the master internal clock to a real world clock.

20. The method of claim 1 , wherein the current time according to the master internal clock is requested by the slave processor module in a packet.

21. The method of claim 1 , wherein the current time according to the master internal clock is received by the slave processor module in a packet.

22. A multiprocessor system for maintaining a substantially consistent running clock, comprising:

a master processor module comprising a master internal clock; and

at least one slave processor module comprising a slave processor module internal clock, the at least one slave processor module configured to:

(a) request, at a first time according to the slave processor module internal clock, a current time according to the master internal clock;

(b) receive, at a second time according to the slave processor module internal clock, the current time according to the master internal clock;

(c) compute an expected time by using at least the first time according to the slave processor module internal clock and the second time according to the slave processor module internal clock;

(d) determine whether the expected time differs from the received current time according to the master internal clock; and

(e) correct, upon determining that the expected time differs from the received current time according to the master internal clock, the slave processor module internal clock.

Assignments (14)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2007
From: REVIVIO, INC.
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 019032/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2004
From: DELGADO, DIANE; DARCY, JEFF
To: REVIVIO, INC.
Reel/Frame 016044/0154 →