IP Library Granted Patent US 7,584,344
Granted Patent B2
US 7,584,344 · App. 11/381,284 · Granted Sep 1, 2009

Instruction for conditionally yielding to a ready thread based on priority criteria

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,584,344
App. No.
11/381,284
Granted
Sep 1, 2009
Kind
B2
Abstract

An integrated circuit ( 10 ) has a conditional yield instruction ( 305 ) which may be used to conditionally yield execution of a currently active thread based on priority and status of other threads. In one embodiment, an I bit 304 may be used to designate whether the priority selection bits ( 50 ) are stored in the instruction itself. If the priority selection bits ( 50 ) are not stored in the instruction itself, a portion of the instruction ( 302 ) may be used to store a location indicator which indicates where the priority selection bits ( 50 ) are located (e.g. register file 22 ).

Claims (47)

1. A method for operating an integrated circuit having a processor, the method comprising:

representing an instruction of the processor using a plurality of bits;

using a first portion of the plurality of bits to determine that the instruction is a conditional yield instruction;

using a second portion of the instruction to determine where at least one priority selection bit is located;

when the second portion of the instruction determines that the at least one priority selection bit is located in the instruction itself, using a third portion of the instruction to store the at least one priority selection bit;

when the second portion of the instruction determines that the at least one priority selection bit is not located in the instruction itself, using a register to store the at least one priority selection bit;

using the at least one priority selection bit to select a selected priority criterion from a plurality of priority criteria;

when the selected priority criterion is a first criterion, comparing a priority of a currently executing thread with a priority of a second thread that is ready to run to produce a comparison result; and

when the selected priority criterion is the first criterion, using the comparison result to determine if the currently executing thread should yield to the second thread, wherein the step of using the comparison result to determine if the currently executing thread should yield to the second thread comprises yielding to the second thread when the priority of the second thread is higher than the priority of the currently executing thread,

wherein none of the plurality of priority criteria produce a change in priority of any thread.

2. A method as in claim 1 , wherein the selected priority criterion comprises whether the second thread is ready to run.

3. A method as in claim 1 , wherein the conditional yield instruction uses “yield” as its mnemonic.

4. A method as in claim 1 , further comprising:

when the selected priority criterion is a second criterion, causing the currently executing thread to yield to the second thread regardless of the priority of the currently executing thread and regardless of the priority of the second thread.

5. A method as in claim 1 , wherein the step of using the comparison result to determine if the currently executing thread should yield to the second thread comprises continuing to execute the currently executing thread when the priority of the second thread is equal to the priority of the currently executing thread.

6. A method as in claim 1 , further comprising:

providing storage circuitry for storing thread state information.

7. A method as in claim 6 , wherein the thread state information comprises a thread identifier.

8. A method as in claim 6 , wherein the thread state information comprises a thread priority portion.

9. A method as in claim 6 , wherein the thread state information comprises a thread ready portion.

10. An apparatus, comprising:

first storage circuitry for storing an identifier for a currently executing thread;

second storage circuitry for storing a priority value for the currently executing thread;

third storage circuitry for storing an identifier for a second thread;

fourth storage circuitry for storing a priority value for the second thread;

fifth storage circuitry for storing a ready value for the second thread;

at least one priority selection bit; and

control circuitry, coupled to the first, second, third, fourth, and fifth storage circuitry, and coupled to receive the at least one priority selection bit,

wherein the control circuitry uses the at least one priority selection bit to select one of a plurality of priority criteria,

wherein the one of the plurality of priority criteria comprises when another thread with priority at least equal to the priority value for the currently executing thread minus one is ready to run, then thread switch,

wherein during execution of a conditional yield instruction, said control circuitry uses both the ready value for the second thread and the at least one priority selection bit in determining whether the currently executing thread should yield at least one resource to the second thread,

wherein no value of the one or more priority selection bits results in a change in priority of the currently executing thread.

11. An apparatus as in claim 10 , further comprising:

sixth storage circuitry for storing an identifier for a third thread;

seventh storage circuitry for storing a priority value for the third thread; and

eighth storage circuitry for storing a ready value for the third thread,

wherein during execution of the conditional yield instruction, when the control circuitry compares the priority value for the currently executing thread and the priority value for the second thread, said control circuitry uses the at least one priority selection bit to determine how to compare the priority value for the currently executing thread and the priority value for the second thread,

wherein during execution of the conditional yield instruction, when both the ready value for the second thread and the at least one priority selection bit indicate that a comparison is needed, the control circuitry compares the priority value for the currently executing thread and the priority value for the second thread and produces a comparison result,

wherein during execution of the conditional yield instruction, when the control circuitry produces the comparison result, the comparison result is used in determining whether the currently executing thread should yield at least one resource to the second thread,

wherein during execution of the conditional yield instruction, said control circuitry uses both the ready value for the third thread and the at least one priority selection bit in determining whether the currently executing thread should yield at least one resource to the third thread,

wherein during execution of the conditional yield instruction, when the control circuitry compares the priority value for the currently executing thread and the priority value for the third thread, said control circuitry uses the at least one priority selection bit to determine how to compare the priority value for the currently executing thread and the priority value for the third thread,

wherein during execution of the conditional yield instruction, when both the ready value for the third thread and the at least one priority selection bit indicate that a comparison is needed, the control circuitry compares the priority value for the currently executing thread and the priority value for the third thread and produces a second comparison result, and

wherein during execution of the conditional yield instruction, when the control circuitry produces the second comparison result, the second comparison result is used in determining whether the currently executing thread should yield at least one resource to the third thread.

12. An apparatus as in claim 10 , wherein the a second one of the plurality of priority criteria comprises when another thread with priority at least equal to the priority value for the currently executing thread is ready to run, then thread switch.

13. An apparatus as in claim 12 , wherein a third one of the plurality of priority criteria comprises when another thread with higher priority is ready to run, then thread switch.

14. An apparatus as in claim 13 , wherein the conditional yield instruction is never able to change thread priority.

15. An apparatus as in claim 10 , wherein the at least one resource comprises an execution unit.

Assignments (20)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY'S NAME PREVIOUSLY RECORDED AT REEL: 057857 FRAME: 0193. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Aug 28, 2023
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: MOSAID TECHNOLOGIES INCORPORATED
Reel/Frame 064741/0939 →
CHANGE OF NAME Recorded Oct 19, 2021
From: CONVERSANT INTELLECTUAL PROPERTY INC.
To: MOSAID TECHNOLOGIES INCORPORATED
Reel/Frame 057857/0193 →
RELEASE OF SECURITY INTEREST Recorded Nov 6, 2020
From: CPPIB CREDIT INVESTMENTS INC.
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 054445/0503 →
RELEASE OF U.S. PATENT AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Oct 12, 2018
From: ROYAL BANK OF CANADA, AS LENDER
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 047645/0424 →
AMENDED AND RESTATED U.S. PATENT SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Aug 22, 2018
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CPPIB CREDIT INVESTMENTS, INC.
Reel/Frame 046900/0136 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0854 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
U.S. PATENT SECURITY AGREEMENT (FOR NON-U.S. GRANTORS) Recorded Sep 9, 2014
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CPPIB CREDIT INVESTMENTS INC., AS LENDER; ROYAL BANK OF CANADA, AS LENDER
Reel/Frame 033706/0367 →
CHANGE OF ADDRESS Recorded Sep 3, 2014
From: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 033678/0096 →
CHANGE OF NAME Recorded Mar 13, 2014
From: MOSAID TECHNOLOGIES INCORPORATED
To: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC.
Reel/Frame 032439/0638 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: MOSAID TECHNOLOGIES INC.
Reel/Frame 030878/0547 →
RELEASE OF SECURITY INTEREST Recorded Jul 2, 2013
From: CITIBANK, N.A.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 030726/0338 →
RELEASE OF SECURITY INTEREST Recorded Jul 2, 2013
From: CITIBANK, N.A.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 030726/0285 →
SECURITY AGREEMENT RELEASE Recorded Jul 1, 2013
From: CITIBANK N.A.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 030744/0754 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Feb 3, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 023882/0834 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2006
From: MOYER, MR. WILLIAM C.; WHISENHUNT, MR GARY L.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 017568/0509 →