IP Library Granted Patent US 7,178,005
Granted Patent B1
US 7,178,005 · App. 10/881,225 · Granted Feb 13, 2007

Efficient implementation of timers in a multithreaded processor

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,178,005
App. No.
10/881,225
Granted
Feb 13, 2007
Kind
B1
Abstract

A method and mechanism for managing timers in a multithreaded processing system. A storage device stores a plurality of count values corresponding to a plurality of timers. A read address generator is coupled to convey a read address to the storage device. The read address generator is configured to maintain and increment a first counter. In response to determining the counter does not equal a predetermined value, the mechanism conveys a first read address for use in accessing a count value in the storage device. In response to determining the count equals the predetermined value, the mechanism conveys a second read address for use in accessing a count value in the storage device. The predetermined value is utilized to repeat accesses to a given count value a predetermined number of times.

Claims (43)

1. A mechanism for managing timers in a multithreaded processing system, the mechanism comprising:

a storage device configured to store a plurality of count values corresponding to a plurality of control programs;

a reference count; and

a read address generator coupled to convey a read address to the storage device, wherein the read address generator is configured to:

increment a first count;

convey a first read address as a current timer read address in response to determining said count does not equal a predetermined value; and

convey a second read address as the current timer read address in response to determining said count equals the predetermined value.

2. The mechanism as recited in claim 1 , wherein said plurality of count values correspond to a plurality of threads.

3. The mechanism as recited in claim 2 , wherein the second read address comprises an incrementation of the first read address.

4. The mechanism as recited in claim 3 , wherein the read address generator is further configured to convey a third read address in lieu of either said first read address or the second read address, in response to detecting a software initiated read access to one of the plurality of count values in said storage device.

5. The mechanism as recited in claim 4 , wherein said storage device is further configured to receive a software initiated write access, wherein said write access may occur on a cycle immediately preceding or following a software read access to the storage device corresponding to the third read address.

6. The mechanism as recited in claim 4 , wherein software is configured to initiate a maximum of N accesses to said plurality of count values during a given period of M cycles, and wherein the predetermined value is selected to be equal to N+1.

7. The mechanism as recited in claim 6 , wherein in response to receiving a current timer read address, the storage device is configured to convey a timer count stored therein which corresponds to the current timer read address, and wherein the mechanism is configured to convey a timer expiration signal in response to determining the timer count equals the reference count.

8. The mechanism as recited in claim 7 , wherein the mechanism includes a single comparator for comparing the reference count to values conveyed from the storage device.

9. A method for managing timers in a multithreaded processing system, the method comprising:

storing a plurality of count values corresponding to a plurality of control programs;

maintaining a reference count; and

incrementing a first count;

conveying a first read address as a current timer read address in response to determining said count does not equal a predetermined value; and

conveying a second read address as the current timer read address in response to determining said count equals the predetermined value.

10. The method as recited in claim 9 , wherein said plurality of count values correspond to a plurality of threads.

11. The method as recited in claim 10 , further comprising incrementing the first read address to generate the second read address.

12. The method as recited in claim 11 , further comprising conveying a third read address in lieu of either said first read address or the second read address, in response to detecting a software initiated read access to one of the plurality of count values.

13. The method as recited in claim 12 , further comprising receiving a software initiated write access to the storage device, wherein the write access may occur on a cycle immediately preceding or following a software read access to the storage device corresponding to the third read address.

14. The method as recited in claim 12 , wherein software is configured to initiate a maximum of N accesses to said plurality of count values during a given period of M cycles, and wherein the predetermined value is selected to be equal to N+1.

15. The method as recited in claim 14 , further comprising conveying a first count value of said plurality of count values which corresponds to a received current timer read address, and conveying a timer expiration signal in response to determining the first count value equals the reference count.

16. The method as recited in claim 15 , further comprising utilizing no more than one comparator for comparing the reference count to values of the plurality of count values.

17. A multithreaded, multicore microprocessor comprising:

a crossbar; and

a plurality of cores coupled to said crossbar;

wherein a first core of said cores includes:

a storage device configured to store a plurality of count values corresponding to a plurality of control programs;

a reference count; and

a read address generator coupled to convey a read address to the storage device, wherein the read address generator is configured to:

increment a first count;

convey a first read address as a current timer read address in response to determining said count does not equal a predetermined value; and

convey a second read address as the current timer read address in response to determining said count equals the predetermined value.

18. The microprocessor as recited in claim 17 , wherein said first core is configured to execute a plurality of threads, and wherein said plurality of count values correspond to the plurality of threads.

19. The microprocessor as recited in claim 18 , wherein the read address generator is further configured to convey a third read address in lieu of either said first read address or the second read address, in response to detecting a software initiated read access to one of the plurality of count values in said storage device.

20. The microprocessor as recited in claim 19 , wherein software is configured to initiate a maximum of N accesses to said plurality of count values during a given period of M cycles, and wherein the predetermined value is selected to be equal to N+1.

21. The microprocessor as recited in claim 20 , wherein in response to receiving a current timer read address, the storage device is configured to convey a timer count stored therein which corresponds to the current timer read address, and wherein the mechanism is configured to convey a timer expiration signal in response to determining the timer count equals the reference count.

22. The microprocessor as recited in claim 21 , wherein the mechanism includes a single comparator for comparing the reference count to values conveyed from the storage device.

23. The microprocessor as recited in claim 19 , wherein the storage device is further configured to receive a software initiated write access, wherein said write access may occur on a cycle immediately preceding or following a software read access to the storage device corresponding to the third read address.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2004
From: JORDAN, PAUL J.; SAULSBURY, ASHLEY N.; JOHNSON, JOHN G.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015816/0106 →