IP Library Granted Patent US 8,387,061
Granted Patent B2
US 8,387,061 · App. 13/174,560 · Granted Feb 26, 2013

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 8,387,061
App. No.
13/174,560
Granted
Feb 26, 2013
Kind
B2
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 (34)

1. A method of synchronizing a group of tasks executed by an execution unit, said method comprising:

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

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

granting access to said shared resource, based on the plurality of signals, to a second task in said group after a first task in said group declares via another signal no need to access said shared resource;

said first task executing without accessing said shared resource;

said second task accessing said shared resource only after said granting; and

a third task in said group declaring need to access the shared resource and later declaring no need to access the shared resource to indicate a change in expectation on the access to the shared resource by the third task.

2. The method of claim 1 wherein:

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

3. The method of claim 1 wherein:

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

said initial determination is made based on information in a second unit of data.

4. The method of claim 3 wherein:

said first unit of data comprises a packet.

5. The method of claim 3 wherein:

said first unit of data comprises a cell.

6. An apparatus comprising:

a network processor executing a group of tasks, 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 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;

a co-processor coupled to said network processor, said co-processor receiving the plurality of signals from the network processor, said co-processor granting access to said shared resource, based on the plurality of signals, to one 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 no need to access said shared resource;

wherein said network processor executes said task A without accessing said shared resource and said network processor executes said task B by accessing said shared resource only after receiving a grant signal from said co-processor.

7. The apparatus of claim 6 wherein:

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

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

8. A processor assembly for synchronizing a group of tasks, said assembly comprising:

a circuitry;

said circuitry allowing for 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;

said circuitry allowing for 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;

said circuitry receiving the plurality of signals from the group of tasks;

said circuitry granting access to said shared resource, based on the plurality of signals, to one 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 no need to access said shared resource;

said circuitry allowing said task A to execute without accessing said shared resource; and

said circuitry allowing said task B to access said shared resource only after receiving the granting access to said shared resource.

9. The assembly of claim 8 wherein:

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

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

Assignments (8)
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 054198/0029 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054244/0566 →
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 →