IP Library Granted Patent US 8,413,153
Granted Patent B2
US 8,413,153 · App. 12/483,501 · Granted Apr 2, 2013

Methods and systems for sharing common job information

Inventors: Anne C. Harris (Chandler, AZ); Timothy G. Boland (Phoenix, AZ); Steven D. Millman (Gilbert, AZ)
Assignee: Freescale Semiconductor Inc.
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,413,153
App. No.
12/483,501
Granted
Apr 2, 2013
Kind
B2
Abstract

Apparatus and methods are provided for utilizing a plurality of processing units. A method comprises selecting a pending job from a plurality of unassigned jobs based on a plurality of assigned jobs for the plurality of processing units and assigning the pending job to a first processing unit. Each assigned job is associated with a respective processing unit, wherein the pending job is associated with a first segment of information that corresponds to a second segment of information for a first assigned job. The method further comprises obtaining the second segment of information that corresponds to the first segment of information from the respective processing unit associated with the first assigned job, resulting in an obtained segment of information and performing, by the first processing unit, the pending job based at least in part on the obtained segment of information.

Claims (77)

1. A method for utilizing a plurality of processing units, the method comprising:

obtaining, by a first processing unit of the plurality of processing units, a first shared descriptor segment of first job information for a first job assigned to the first processing unit from a memory communicatively coupled to the plurality of processing units via an interface;

obtaining, by a job control module, a subset of second job information for a second job;

selecting, by the job control module, the second job from a plurality of unassigned jobs to be assigned to a second processing unit of the plurality of processing units by identifying the second job as a parallel pending job when a second shared descriptor segment of the second job information matches the first shared descriptor segment for the first job and sharing criteria for the first job indicates that the first shared descriptor segment is available for sharing in parallel;

providing, by the job control module, the subset of second job information to the second processing unit;

obtaining, by the second processing unit, the first shared descriptor segment from the first processing unit assigned the first assigned job by copying the first shared descriptor segment from the first processing unit to the second processing unit, resulting in an obtained segment of information; and

performing, by the second processing unit, the second job based at least in part on the subset of second job information and the obtained segment of information.

2. The method of claim 1 , the plurality of unassigned jobs being maintained in a plurality of registers, each register maintaining a burst of job information for a respective unassigned job of the plurality of unassigned jobs, wherein:

selecting the second job comprises selecting a first unassigned job of the plurality of unassigned jobs when the burst of job information for the first unassigned job indicates the second shared descriptor segment matches first shared descriptor segment, the burst of job information for the first unassigned job being maintained in a first register of the plurality of registers and comprising the subset of second job information;

providing the subset of second job information comprises providing, by the job control module, the burst of job information for the first unassigned job maintained the first register to the second processing unit; and

performing the second job comprises performing the first unassigned job based on the burst of information for the first unassigned job and the obtained segment of information.

3. The method of claim 1 , wherein selecting the second job from the plurality of unassigned jobs comprises:

determining the second shared descriptor segment is available for sharing.

4. The method of claim 1 , wherein selecting the second job from the plurality of unassigned jobs comprises determining a pointer for the second shared descriptor segment of the second job in memory is equal to a pointer for the first shared descriptor segment for the first job.

5. The method of claim 1 , wherein:

the first shared descriptor segment of first job information for the first job comprises a cryptographic key, an authentication key, a sequence number, a next header field, or a security parameters index for processing a first packet; and

the second shared descriptor segment of second job information for the second job comprises the cryptographic key, the authentication key, the sequence number, the next header field, or the security parameters index for processing a second packet.

6. The method of claim 1 , further comprising obtaining, by the first processing unit, additional second job information for the second job from the memory, wherein performing the second job comprises performing the second job based on the subset of second job information, the obtained segment of information, and the additional second job information.

7. A method of obtaining information for a first processing unit of one or more processing units, each processing unit of the one or more processing units being associated with a respective assigned job, the method comprising:

obtaining job information for a first assigned job from memory communicatively coupled to the one or more processing units, resulting in obtained job information for the first assigned job;

obtaining a burst of second job information for a second job;

selecting the second job to be assigned to the first processing unit when the burst of second job information indicates a first segment of the second job information in memory matches a subset of the obtained job information for the first assigned job, wherein selecting the second job comprises selecting a first unassigned job from a plurality of unassigned jobs maintained in a plurality of registers, each register maintaining a respective burst of job information for a respective unassigned job of the plurality of unassigned jobs;

assigning the second job to the first processing unit by providing the burst of second job information for the first unassigned job from a first register of the plurality of registers to the first processing unit;

obtaining the subset of the obtained job information for the first assigned job from a respective processing unit associated with the first assigned job; and

performing, by the first processing unit, the second job based at least in part on the subset of the obtained job information for the first assigned job and the burst of second job information.

8. The method of claim 7 , wherein selecting the first unassigned job comprises selecting a serial pending job for the first processing unit from the plurality of unassigned jobs.

9. The method of claim 8 , the first assigned job being associated with the first processing unit, wherein selecting the serial pending job comprises:

determining a shared descriptor segment for the first unassigned job matches a shared descriptor segment for the first assigned job, the subset of the obtained job information for the first assigned job comprising the shared descriptor segment for the first assigned job; and

selecting the first unassigned job for the first processing unit when the shared descriptor segment for the first assigned job is available for sharing.

10. The method of claim 7 , wherein selecting the first unassigned job comprises selecting a parallel pending job for the first processing unit from the plurality of unassigned jobs when no serial pending job exists among the plurality of unassigned jobs and no non-pending job exists among the plurality of unassigned jobs.

11. The method of claim 7 , wherein obtaining the subset of the obtained job information for the first assigned job comprises copying the shared descriptor segment for the first assigned job from a second processing unit of the one or more processing units to the first processing unit.

12. A system comprising:

an interface for coupling to a memory;

a job source; and

an acceleration architecture communicatively coupled to the job source and communicatively coupled to the memory via the interface

obtain a plurality of jobs from the job source,

obtain job information for a first job of the plurality of jobs from the memory, resulting in obtained job information for the first job,

perform the first job based on the obtained job information for the first job,

obtain a burst of second job information for a second job of the plurality of jobs from the job source or the memory, and

when a segment of the second job information corresponds to a subset of the obtained job information for the first job, perform the second job based at least in part on the subset of the obtained job information for the first job and the burst of the second job information, wherein the acceleration architecture includes:

a plurality of processing units, the first job being assigned to a respective processing unit of the plurality of processing units, the respective processing unit associated with the first job being configured to obtain job information for the first job from the memory; and

a control module coupled to the plurality of processing units, the control module being configured to:

identify a first processing unit of the plurality of processing units as being available; and

assign the second job to the first processing unit, wherein the first processing unit is configured to obtain the subset of the obtained job information for the first job corresponding to the segment of information for the second job from the respective processing unit associated with the first job.

13. The system of claim 12 , wherein the acceleration architecture includes a plurality of registers, each register being configured to maintain a respective burst of job information for a respective job of the plurality of jobs obtained from the job source, wherein:

the burst of the second job information is maintained in a first register of the plurality of registers;

the control module is configured to assign the second job to the first processing unit by providing the burst of the second job information from the first register to the first processing unit; and

the first processing unit is configured to perform the second job based on the burst of the second job information and the subset of the obtained job information for the first job.

14. The system of claim 12 , wherein:

when the first job is assigned to the first processing unit, the first processing unit is configured to maintain the subset of the obtained job information for the first job in its job buffer; and

when the first job is assigned to a second processing unit of the plurality of processing units, the first processing unit is configured to copy the subset of the obtained job information for the first job from the second processing unit to its job buffer.

15. The system of claim 12 , wherein the interface comprises a parallel bus interface.

16. A method for utilizing a plurality of processing units, the method comprising:

obtaining, by a first processing unit of the plurality of processing units, a first shared descriptor segment of first job information for a first job assigned to the first processing unit from a memory communicatively coupled to the plurality of processing units via an interface;

obtaining, by a job control module, a subset of second job information for a second job;

selecting, by the job control module, the second job from a plurality of unassigned jobs to be assigned to a second processing unit of the plurality of processing units based on a second shared descriptor segment of the second job information, the plurality of unassigned jobs being maintained in a plurality of registers, each register maintaining a burst of job information for a respective unassigned job of the plurality of unassigned jobs, wherein selecting the second job comprises selecting a first unassigned job of the plurality of unassigned jobs when the burst of job information for the first unassigned job indicates the second shared descriptor segment matches first shared descriptor segment, the burst of job information for the first unassigned job being maintained in a first register of the plurality of registers and comprising the subset of second job information;

providing, by the job control module, the burst of job information for the first unassigned job maintained the first register to the second processing unit;

obtaining, by the second processing unit, the first shared descriptor segment from the first processing unit assigned the first assigned job, resulting in an obtained segment of information; and

performing, by the second processing unit, the second job based on the burst of information for the first unassigned job and the obtained segment of information.

17. The method of claim 16 , wherein:

the first job corresponds to processing a first packet;

the first unassigned job corresponds to processing a second packet having a segment of job information for processing the second packet that corresponds to a segment of job information for processing the first packet; and

performing, by the second processing unit, the second job comprises processing the second packet based on the burst of job information for the first unassigned job and the segment of job information for processing the first packet maintained by the first processing unit.

18. The method of claim 16 , wherein:

selecting the second job from the plurality of unassigned jobs comprises identifying the second job as a parallel pending job from the plurality of unassigned jobs when the second shared descriptor segment of the second job information matches the first shared descriptor segment and sharing criteria for the first job indicates that the first shared descriptor segment is available for sharing in parallel; and

obtaining the first shared descriptor segment comprises copying the first shared descriptor segment from the first processing unit to the second processing unit.

19. The method of claim 16 , wherein selecting the second job from the plurality of unassigned jobs comprises determining a pointer for the second shared descriptor segment of the second job in memory is equal to a pointer for the first shared descriptor segment for the first job.

20. The method of claim 19 , wherein:

selecting the second job from the plurality of unassigned jobs comprises identifying the second job as a parallel pending job from the plurality of unassigned jobs when the pointer for the second shared descriptor segment of the second job in memory is equal to the pointer for the first shared descriptor segment for the first job and sharing criteria for the first job indicates that the first shared descriptor segment is available for sharing in parallel; and

obtaining the first shared descriptor segment comprises copying the first shared descriptor segment from the first processing unit to the second processing unit.

21. A method for utilizing a plurality of processing units, the method comprising:

obtaining, by a first processing unit of the plurality of processing units, a first shared descriptor segment of first job information for a first job assigned to the first processing unit from a memory communicatively coupled to the plurality of processing units via an interface;

obtaining, by a job control module, a subset of second job information for a second job;

selecting, by the job control module, the second job from a plurality of unassigned jobs to be assigned to a second processing unit of the plurality of processing units based on a pointer for a second shared descriptor segment of the second job in memory being equal to a pointer for the first shared descriptor segment for the first job;

providing, by the job control module, the subset of second job information to the second processing unit;

obtaining, by the second processing unit, the first shared descriptor segment from the first processing unit assigned the first assigned job, resulting in an obtained segment of information; and

performing, by the second processing unit, the second job based at least in part on the subset of second job information and the obtained segment of information.

Assignments (27)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0823 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Sep 23, 2009
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 023273/0099 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2009
From: HARRIS, ANNE C.; BOLAND, TIMOTHY G.; MILLMAN, STEVEN D.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 022988/0942 →
Continuity (1)
Related Publication 20100318996A1 · Dec 16, 2010