IP Library Granted Patent US 7,421,693
Granted Patent B1
US 7,421,693 · App. 10/117,781 · Granted Sep 2, 2008

Logic for synchronizing multiple tasks at multiple locations in an instruction stream

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,421,693
App. No.
10/117,781
Granted
Sep 2, 2008
Kind
B1
Abstract

Logic (also called “synchronizing logic”) in a co-processor (that provides an interface to memory) receives a signal (called a “declaration”) from each of a number of tasks, based on an initial determination of one or more paths (also called “code paths”) in an instruction stream (e.g. originating from a high-level software program or from low-level microcode) that a task is likely to follow. Once a task (also called “disabled” task) declares its lack of a future need to access a shared data, the synchronizing logic allows that shared data to be accessed by other tasks (also called “needy” tasks) that have indicated their need to access the same. Moreover, the synchronizing logic also allows the shared data to be accessed by the other needy tasks on completion of access of the shared data by a current task (assuming the current task was also a needy task).

Claims (70)

1. A method of synchronizing a group of tasks in a microcontroller, said method comprising:

receiving a plurality of packets in sequence;

each task in said group of tasks processing a packet in said plurality of packets;

each task in said group of tasks making an initial determination of one or more paths that said each task is likely to follow, based on information in said packet;

each task in said group of tasks declaring one of “need” or “no need” to access a shared resource via a signal in a plurality of signals, based on said initial determination;

receiving the plurality of signals from the group of tasks;

granting access to said shared resource, based on the plurality of signals, to a task B in said group of tasks that declares a need to access said shared resource if another task A in said group of tasks has declared via another signal no need to access said shared resource;

wherein said task A executes without accessing said shared resource;

wherein said task B accesses said shared resource only after said granting;

wherein said task A processes a first packet that is received prior to receipt of a second packet processed by said task B;

wherein one path to be followed by said task B is to use said shared resource to process said second packet; and

wherein another path to be followed by said task A is to not use said shared resource to process said first packet.

2. The method of claim 1 wherein:

each of said task B and said task A perform policing operations on the second packet and the first packet respectively.

3. The method of claim 1 wherein:

said microcontroller comprises a network processor.

4. The method of claim 1 wherein:

said task A and said task B execute a common set of instructions.

5. The method of claim 1 further comprising:

declaring by a task C in said group of tasks of a “need” to access said shared resource; and

subsequent to said declaring by the task C, further declaring by said task C of “no need” to access said shared resource.

6. A method of synchronizing a group of tasks in a microcontroller, said method comprising:

each task in said group of tasks making an initial determination of one or more paths that said each task is likely to follow;

each task in said group of tasks declaring one of “need” or “no need” to access a shared resource via a signal in a plurality of signals, based on said initial determination;

receiving the plurality of signals from the group of tasks;

granting access to said shared resource, based on the plurality of signals, to a task B in said group of tasks that declares a need to access said shared resource if another task A in said group of tasks has declared via another signal no need to access said shared resource;

said task A executing without accessing said shared resource; and

said task B accessing said shared resource only after said granting;

wherein said task A and said task B execute a common set of instructions.

7. The method of claim 6 wherein:

said microcontroller comprises a network processor.

8. The method of claim 6 wherein:

said initial determination is made by said task A based on information in header of a first unit of data; and

said initial determination is made by said task B based on information in header of a second unit of data.

9. The method of claim 6 wherein:

said first unit of data comprises a packet.

10. The method of claim 6 wherein:

said first unit of data comprises a cell.

11. The method of claim 6 wherein:

said granting is performed based on a sequence number assigned to each task.

12. The method of claim 6 further comprising:

declaring by a task C in said group of tasks of a “need” to access said shared resource; and

subsequent to said declaring by the task C, further declaring by said task C of “no need” to access said shared resource.

13. The method of claim 12 wherein:

said further declaring is performed after reaching a predefined synchronization point.

14. The method of claim 6 wherein:

each of said task B and said task A perform policing operations on a second packet and a first packet respectively.

15. The method of claim 6 wherein:

wherein said task A processes a first data unit that is received prior to receipt of a second data unit processed by said task B.

16. Circuitry for synchronizing a group of tasks, said circuitry comprising:

means for allowing each task in said group of tasks to make an initial determination of one or more paths that said each task is likely to follow;

means for allowing each task in said group of tasks to declare one of “need” or “no need” to access a shared resource via a signal in a plurality of signals, based on said initial determination;

means for receiving the plurality of signals from the group of tasks;

means for granting access to said shared resource, based on the plurality of signals, to a task B in said group of tasks that declares a need to access said shared resource if a task A in said group of tasks has declared no need to access said shared resource;

means for allowing said task A to execute without accessing said shared resource;

means for allowing said task B to access said shared resource only after receiving a grant from the means for granting;

means for receiving a plurality of packets in sequence;

means for allowing said task A to process a first packet that is received prior to receipt of a second packet to be processed by said task B;

means for allowing said task B to use said shared resource to process said second packet; and

means for allowing said task A to process said first packet without use of said shared resource.

17. The circuitry of claim 16 further comprising:

means for allowing each of said task B and said task A to perform policing operations on the second packet and the first packet respectively.

18. Circuitry for synchronizing a group of tasks, said circuitry comprising:

means for allowing each task in said group of tasks to make an initial determination of one or more paths that said each task is likely to follow;

means for allowing each task in said group of tasks to declare one of “need” or “no need” to access a shared resource via a signal in a plurality of signals, based on said initial determination;

means for receiving the plurality of signals from the group of tasks;

means for granting access to said shared resource, based on the plurality of signals, to a task B in said group of tasks that declares a need to access said shared resource if a task A in said group of tasks has declared no need to access said shared resource;

means for allowing said task A to execute without accessing said shared resource;

means for allowing said task B to access said shared resource only after receiving a grant from the means for granting; and

means for allowing said task B and said task A to execute a common set of instructions.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054244/0566 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054198/0029 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 046486/0433 →
RELEASE (REEL 038041 / FRAME 0001) Recorded Jan 2, 2018
From: JPMORGAN CHASE BANK, N.A.
To: RPX CORPORATION; RPX CLEARINGHOUSE LLC
Reel/Frame 044970/0030 →
SECURITY AGREEMENT Recorded Mar 9, 2016
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038041/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2016
From: NET NAVIGATION SYSTEMS, LLC
To: RPX CORPORATION
Reel/Frame 037679/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2013
From: PACKETQ SOLUTIONS LLC
To: NET NAVIGATION SYSTEMS, LLC
Reel/Frame 031645/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2011
From: APPLIED MICRO CIRCUITS CORPORATION
To: NET NAVIGATION SYSTEMS, LLC
Reel/Frame 026714/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2004
From: JOFFE, ALEXANDER; KHAMISY, ASAD
To: APPLIED MICRO CIRCUITS CORPORATION
Reel/Frame 015432/0285 →