IP Library Granted Patent US 9,207,979
Granted Patent B1
US 9,207,979 · App. 14/288,541 · Granted Dec 8, 2015

Explicit barrier scheduling mechanism for pipelining of stream processing algorithms

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 9,207,979
App. No.
14/288,541
Granted
Dec 8, 2015
Kind
B1
Abstract

A method for pipelined data stream processing of packets includes determining a task to be performed on each packet of a data stream, the task having a plurality of task portions including a first task portion. Determining the first task portion is to process a first packet. In response to determining a first storage location stores a first barrier indicator, enabling the first task portion to process the first packet and storing a second barrier indicator at the first location. Determining the first task portion is to process a second next-in-order packet. In response to determining the first location stores the second barrier indicator, preventing the first task portion from processing the second packet. In response to a first barrier clear indicator, storing the first barrier indicator at the first location, and in response, enabling the first task portion to process the second packet.

Claims (86)

1. A method comprising:

determining a task to be performed on each packet of a data stream, the task comprising a plurality of task portions including a first task portion and a second task portion;

determining that the first task portion of the plurality of task portions is to process a first data packet of the data stream;

in response to determining, at a first time, that a first storage location stores a first barrier indicator, enabling the first task portion to process the first data packet and storing a second barrier indicator at the first storage location;

determining, after the first time, that the first task portion is to process a second data packet that is next-in-order to the first data packet;

in response to determining, at a second time after the first time, that the first storage location stores the second barrier indicator, preventing the first task portion from processing the second data packet;

in response to a first barrier clear indicator, at a third time after the second time, storing the first barrier indicator at the first storage location;

in response to storing the first barrier indicator, enabling, at a fourth time, the first task portion to process the second data packet;

wherein:

the first task portion comprising a first task conflict section portion and a first task end portion;

the first task conflict section portion is operable to access and update shared context data at the second storage location;

the shared context data is associated with the data stream and the first task portion; and

the first barrier clear indicator from the first processing element indicates that:

the performance of the first task conflict section portion on the first data packet has completed;

the first processing element is to perform the first task end portion on the first data packet; and

the first task portion is available to be performed on the second data packet.

2. The method of claim 1 , wherein enabling the first task portion to process the first data packet includes enabling a first processing element to execute the first task portion, and wherein enabling the first task portion to process the second data packet includes enabling a second processing element to execute the first task portion.

3. The method of claim 2 , wherein the first processing element and the second processing element are general purpose instruction-based processors.

4. The method of claim 2 , wherein the first processing element and the second processing element are specific purpose processing devices.

5. The method of claim 1 , wherein enabling the first task portion to process the first data packet includes enabling a first processing element to execute the first task portion, and enabling the first task portion to process the second data packet includes enabling the first processing element to execute the first task portion.

6. The method of claim 1 , wherein

the second task portion is next-in-order after the first task portion to process the first data packet, subsequent to the first barrier clear indicator from the first task portion and in response to determining that a second storage location stores the first barrier indicator, enabling the second task portion to process the first data packet.

7. The method of claim 1 , wherein the second task portion is next-in-order after the first task portion to process the first data packet, and subsequent to the first barrier clear indicator from the first task portion and in response to determining that a second storage location stores the second barrier indicator, preventing the second task portion from processing the first data packet.

8. The method of claim 1 , wherein the first barrier clear indicator from the first task portion indicates that the first task portion processed the first data packet successfully, and that further processing of the data stream can continue in response to the successful completion.

9. The method of claim 1 , wherein the first barrier clear indicator from the first task portion

indicates that an exception occurred during the first task portion to process the first data packet, wherein no further processing of the first data packet of the data stream is to be performed in response to the exception.

10. The method of claim 1 , wherein the first barrier clear indicator from the first task portion is a signal that the first task portion asserts by processing a dedicated instruction.

11. The method of claim 1 , wherein the first barrier clear indicator from the first task portion is stored at a third storage location that the first task portion updates by writing to the third storage location.

12. The method of claim 11 , wherein the third storage location is a register.

13. A processing system comprising:

a first processing element;

a second processing element;

a hardware scheduler module coupled to the first processing element and the second processing element; and

a storage location coupled to the hardware scheduler module, the first processing element, and the second processing element;

the hardware scheduler module being configured to:

determine a task to be performed on each packet of a data stream, the task comprising a first task portion and a second task portion;

determine that the first task portion is to be performed on a first data packet of the data stream;

determine that the storage location stores a first barrier indicator, and in response, to direct the first processing element to perform the first task portion on the first data packet and store a second barrier indicator at the storage location;

determine that the first task portion is to be performed on a second data packet that is next-in-order to the first data packet;

determine that the storage location stores the second barrier indicator, and in response, prevent the first task portion from being performed on the second data packet;

receive a first barrier clear indicator from the first processing element, and in response, to store the first barrier indicator at the storage location;

in response to storing the first barrier indicator, direct the second processing element to perform the first task portion on the second data packet;

a second storage location coupled to the hardware scheduler module, the first processing element, and the second processing element;

wherein:

the first task portion comprising a first task conflict section portion and a first task end portion;

the first task conflict section portion is operable to access and update shared context data at the second storage location;

the shared context data is associated with the data stream and the first task portion; and

the first barrier clear indicator from the first processing element indicates that:

 the performance of the first task conflict section portion on the first data packet has completed;

 the first processing element is to perform the first task end portion on the first data packet; and

 the first task portion is available to be performed on the second data packet.

14. The processing system of claim 13 , wherein

the hardware scheduler module is further configured to:

receive a ready to proceed to next task portion indicator from the first processing element, and in response, determine that the second task portion that is next-in-order to the first task portion is to be performed on the first data packet, wherein the ready to proceed to next task portion indicator indicates that the performance of the first task end portion on the first data packet has completed; and

determine that the second storage location storing the first barrier indicator, and in response, direct the first processing element to perform the second task portion on the first data packet.

15. The processing system of claim 13 , further comprising:

a second storage location coupled to the hardware scheduler module, the first processing element, and the second processing element;

wherein:

the first task portion comprising a first task conflict section portion, the first task conflict section portion is operable to access and update shared context data at the second storage location, the shared context data is associated with the data stream and the first task portion;

the processing system further comprising a hardware mechanism operable to allow the first task conflict section portion to access and update the shared context data if the first processing element to perform the first task conflict section portion has access and update permissions for the shared context data;

the processing system is configured to utilize the hardware mechanism to enforce the access and update permissions; and

the first processing element is configured to have the access and update permissions when performing the first task conflict section portion.

16. The processing system of claim 13 , wherein

the first processing element and the second processing element are general purpose instruction-based processor cores.

17. The processing system of claim 13 , wherein

the first processing element and the second processing element are specific purpose processing devices.

18. The processing system of claim 13 , wherein

the first processing element and the second processing element are the same processing element.

19. A method comprising:

determining that a first data packet of a data stream is an initial data packet of the data stream;

in response to determining that a first storage location stores a null data stream resources pointer, allocating the data stream resources at a second storage location and storing the address of the second storage location at the first storage location;

determining a task to be performed on each packet of the data stream, the task comprising a plurality of task portions including a first task portion and a second task portion;

determining that the first task portion of the plurality of task portions is to process the first data packet;

in response to determining, at a first time, that a third storage location stores a first barrier indicator, enabling the first task portion to process the first data packet and storing a second barrier indicator at the third storage location;

determining, after the first time, that the first task portion is to process a second data packet that is next-in-order to the first data packet;

in response to determining, at a second time after the first time, that the third storage location stores the second barrier indicator, preventing the first task portion from processing the second data packet;

in response to a first barrier clear indicator, at a third time after the second time, storing the first barrier indicator at the third storage location;

in response to storing the first barrier indicator, enabling, at a fourth time, the first task portion to process the second data packet;

wherein:

the first task portion comprising a first task conflict section portion and a first task end portion;

the first task conflict section portion is operable to access and update shared context data at the second storage location;

the shared context data is associated with the data stream and the first task portion; and

the first barrier clear indicator from the first processing element indicates that:

the performance of the first task conflict section portion on the first data packet has completed;

the first processing element is to perform the first task end portion on the first data packet; and

the first task portion is available to be performed on the second data packet.

Assignments (17)
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 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
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 OF INCORRECT APPLICATION 14/258,829 PREVIOUSLY RECORDED ON REEL 037444 FRAME 0109. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Aug 10, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039639/0208 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 14/258,829 AND REPLACE ITWITH 14/258,629 PREVIOUSLY RECORDED ON REEL 037444 FRAME 0082. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OFSECURITY INTEREST IN PATENTS. Recorded Aug 10, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039639/0332 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0109 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0082 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0903 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033460/0337 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033462/0293 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033462/0267 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2014
From: HOLT, JAMES C.; GERGEN, JOSEPH P.; KRAMER, DAVID B.; MOYER, WILLIAM C.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 032973/0281 →