IP Library Granted Patent US 9,507,654
Granted Patent B2
US 9,507,654 · App. 14/694,601 · Granted Nov 29, 2016

Data processing system having messaging

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,507,654
App. No.
14/694,601
Granted
Nov 29, 2016
Kind
B2
Abstract

A processing system includes a first processing system element, and a second processing system element configured to communicate with the first processing system. The second processing system element includes a set of messaging queues. Each of the messaging queues includes one or more entries for storing data, a set of delegate queue addresses associated with one of the set of messaging queues; and a delegate queue associated with the set of messaging queues. The delegate queue includes a set of entries corresponding to the delegate queue addresses, and each of the entries of the delegate queue indicates whether a corresponding one of the set of messaging queues is storing data.

Claims (88)

1. A processing system comprising:

a first processing system element;

a second processing system element configured to communicate with the first processing system element, wherein the second processing system element includes:

a set of messaging queues, each of the messaging queues includes one or more entries for storing data;

a set of delegate queue addresses, each of the set of delegate queue addresses is associated with one of the set of messaging queues;

a delegate queue associated with the set of messaging queues, the delegate queue including a set of entries corresponding to the delegate queue addresses, and each of the entries of the delegate queue indicating whether a corresponding one of the set of messaging queues is storing data.

2. The processing system of claim 1 , wherein the second processing element further comprises:

queue control circuitry configured to:

receive a message from the first processing system element, wherein the message includes a queue address for one of the set of messaging queues,

provide data associated with the message to the one of the set of messaging queues specified by the queue address, and

add the queue address to the delegate queue to indicate the one of the set of messaging queues is storing data.

3. The processing system of claim 2 wherein the queue control circuitry is further configured to:

schedule a thread that is waiting for the data in response to a receive instruction being executed.

4. The processing system of claim 2 , wherein the second processing element further comprises:

a processor configured to, upon execution of a receive instruction for the delegate queue:

determine whether there is data in the delegate queue;

if there is data in the delegate queue,

read the queue address from the delegate queue; and

store the queue address in a processor register for subsequent use by other instructions.

5. The processing system of claim 4 wherein the processor is further configured to:

upon execution of the receive instruction for the delegate queue;

if there is no data in the delegate queue,

deschedule a thread associated with the receive instruction, and

re-schedule the thread associated with the receive instruction when there is data in the delegate queue.

6. The processing system of claim 2 , wherein the second processing element further comprises:

a processor configured to:

determine whether there is data in the delegate queue;

if there is data in the delegate queue,

determine whether a next highest priority messaging queue of the set of messaging queues has the data;

if the data is in the next highest priority messaging queue,

execute a receive instruction for the next highest priority messaging queue to transfer the data to the processor.

7. The processing system of claim 6 wherein the processor is further configured to:

select another next highest priority messaging queue of the set of messaging queues;

determine whether there is data in the delegate queue;

if there is data in the delegate queue,

determine whether the other next highest priority messaging queue of the set of messaging queues has the data;

if the data is in the other next highest priority messaging queue,

execute a receive instruction for the other next highest priority messaging queue to transfer the data to the processor.

8. The processing system of claim 2 , further comprising:

a timer coupled to the queue control circuitry, wherein the queue control circuitry is configured to include a timeout indicator in the set of messaging queues.

9. A processing system element comprising:

a processor;

messaging queue circuitry coupled to the processor, wherein the messaging queue circuitry includes:

queue control circuitry;

a plurality of messaging queues coupled to the queue control circuitry;

a delegate queue associated with the plurality of messaging queues and coupled to the queue control circuitry;

wherein the queue control circuitry is configured to:

receive a message including a queue address;

store the message in one of the plurality of messaging queues specified by the queue address; and

store the queue address in the delegate queue.

10. The processing system of claim 9 , wherein the queue control circuitry is further configured to:

determine whether there is a delegate queue associated with the plurality of messaging queues before storing the queue address in the delegate queue.

11. The system of claim 9 wherein the queue control circuitry is further configured to:

store the queue address in the delegate queue if the delegate queue is empty.

12. The system of claim 9 wherein the processing system element is further configured to:

reschedule execution of a thread that is waiting for data in the message once the queue address is stored in the delegate queue.

13. The system of claim 9 wherein the processor is configured to:

execute a receive instruction for the delegate queue;

determine whether there is data in the delegate queue;

if there is data in the delegate queue:

read the queue address of the one of the plurality of messaging queues; and

execute a receive instruction to transfer the message from the one of the plurality of messaging queues to the processor.

14. The system of claim 9 wherein the processor is configured to:

execute a receive instruction for the delegate queue;

determine whether there is data in the delegate queue;

if there is data in the delegate queue:

determine whether a next highest priority messaging queue of the plurality of messaging queues has the data;

if the data is in the next highest priority messaging queue,

execute a second receive instruction for the next highest priority messaging queue to transfer the data to the processor.

15. A method of passing messages between elements in a processing system comprising:

associating a set of messaging queues with a delegate queue for each of the elements in the processing system;

executing a receive instruction for the delegate queue for one of the elements;

when there is data in the delegate queue for the one of the elements:

executing a second receive instruction for a selected one of the set of messaging queues for the one of the elements to transfer a message from the selected one of the set of messaging queues to the one of the elements based on the data in the delegate queue.

16. The method of claim 15 further comprising:

storing an address of the selected one of the set of messaging queues in the delegate queue for the one of the elements as the data.

17. The method of claim 15 further comprising:

when there is data for more than one of the set of messaging queues in the delegate queue for the one of the elements, choosing a highest priority one of the set of messaging queues as the selected one of the set of messaging queues.

18. The method of claim 15 further comprising:

when there is no data in the delegate queue for the one of the elements:

descheduling a thread being executed;

rescheduling the thread when there is data in the delegate queue.

19. The method of claim 15 further comprising:

storing the message in the selected one of the messaging queues when the message is received.

20. The method of claim 15 further comprising:

receiving a message from another one of the elements in the one of the elements;

storing the message in the selected one of the set of messaging queues for the one of the elements; and

storing an address in the message in the delegate queue as the data, wherein the address identifies the one of the set of messaging queues for the one of the elements.

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: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT DOCUMENTATION - INITIAL CONVENYANCE LISTED CHANGE OF NAME. PREVIOUSLY RECORDED ON REEL 040579 FRAME 0827. ASSIGNOR(S) HEREBY CONFIRMS THE UPDATE CONVEYANCE TO MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Dec 15, 2016
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 040945/0252 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
CHANGE OF NAME Recorded Nov 9, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040579/0827 →
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 →
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 20, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037565/0527 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 20, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037565/0510 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0859 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 6, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 036284/0105 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 6, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 036284/0363 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 6, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 036284/0339 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2015
From: WILSON, PETER J.; KAHNE, BRIAN C.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 035483/0525 →