US9292346B1ActiveUtilityA1

System and method for dynamically managed task switch lookahead

67
Assignee: HOLT JAMES CPriority: Aug 26, 2014Filed: Aug 26, 2014Granted: Mar 22, 2016
Est. expiryAug 26, 2034(~8.1 yrs left)· nominal 20-yr term from priority
G06F 9/50G06F 9/4881G06F 9/321G06F 9/461G06F 9/3869G06F 9/3851G06F 9/3009G06F 9/462
67
PatentIndex Score
2
Cited by
5
References
19
Claims

Abstract

A processing system includes a processor pipeline, a detector circuit, and a task scheduler. The detector circuit includes a basic block detector circuit to determine that the processor pipeline received a first instruction of a first instance of a basic block, and to determine that a last-in-order instruction of the first instance of the basic block is a resource switch instruction (RSWI), and an indicator circuit to provide an indication in response to determining that the processor pipeline received the first instruction of a second instance of the basic block. The task scheduler initiates a resource switch, in response to the indication, at a time subsequent to the first instruction being received that is based on a cycle count that indicates a first number of processor cycles between receiving the first instruction and receiving the RSWI.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method comprising:
 processing, by a processor core of a processing system, a first instruction of a first instance of a first basic block, wherein the first instruction of the first instance of the first basic block is a first-in-order instruction of the first instance of the first basic block; 
 determining, by the processor core of the processing system, that a last-in-order instruction of the first instance of the first basic block is a resource switch instruction (RSWI); 
 in response to determining that the last-in-order instruction of the first instance of the first basic block is the RSWI, storing, by the processor core of the processing system, a cycle count indicating a first number of processor cycles occurring between processing of the first instruction of the first instance of the first basic block and processing of the RSWI; 
 processing, by the processor core of the processing system, a first instruction of a second instance of the first basic block; and 
 initiating, by a hardware task scheduler of the processing system, a resource switch in response to processing the first instruction of the second instance of the first basic block, wherein the resource switch is initiated based on the cycle count. 
 
     
     
       2. The method of  claim 1 , further comprising:
 receiving, by the processor core of the processing system, a last-in-order instruction of a first instance of a second basic block immediately prior to receiving the first instruction of the first instance of the first basic block; and 
 providing, by the processor core of the processing system, a first indication that a next instruction is a first-in-order instruction of the first instance of the first basic block, wherein the next instruction is the first instruction of the first instance of the first basic block. 
 
     
     
       3. The method of  claim 2 , further comprising:
 storing, by the processor core of the processing system, an address associated with the next instruction in response to the first indication. 
 
     
     
       4. The method of  claim 3 , further comprising:
 determining, by the processor core of the processing system, that the next instruction is the first-in-order instruction of the first instance of the first basic block based upon the address. 
 
     
     
       5. The method of  claim 3 , wherein storing the cycle count is in response to determining that the cycle count of the first basic block is not currently stored. 
     
     
       6. The method of  claim 1 , further comprising:
 storing, by the processor core of the processing system, a launch delay in a first counter in response to receiving the first instruction of the second instance of the first basic block, wherein the launch delay is a difference of the cycle count and a number of processor cycles associated with processing the resource switch; and 
 wherein initiating the resource switch by the hardware task scheduler is based upon the stored launch delay. 
 
     
     
       7. The method of  claim 1 , further comprising:
 in response to initiating the resource switch, loading, by the processor core of the processing system, context information for a next basic block of instructions into an alternate register file of the processor core of the processing system. 
 
     
     
       8. The method of  claim 7 , further comprising:
 receiving, by the processor core of the processing system, the RSWI of the second instance of the first basic block; 
 receiving, by the processor core of the processing system, a second instruction of a first instance of a second basic block, immediately after receiving the RSWI of the second instance of the first basic block, wherein the second instruction of the first instance of the second basic block is a first-in-order instruction of the first instance of the second basic block; and 
 executing, by the processor core of the processing system, the second instruction of the first instance of the second basic block using the context information from the alternate register file of the processor core of the processing system. 
 
     
     
       9. A processing system comprising:
 a processor pipeline to receive an instruction stream; 
 a detector circuit including:
 a basic block detector circuit coupled to the processor pipeline configured to determine that the processor pipeline received a first instruction of a first instance of a first basic block, to determine that the first instruction of the first instance of the first basic block is a first-in-order instruction of the first instance of the first basic block, and to determine that a last-in-order instruction of the first instance of the first basic block is a resource switch instruction (RSWI); and 
 an indicator circuit coupled to the basic block detector circuit configured to provide a first indication in response to the basic block detector circuit determining that the processor pipeline received a first instruction of a second instance of the first basic block; and 
 
 a hardware task scheduler coupled to the indicator circuit configured to initiate a resource switch, in response to the first indication, at a time subsequent to the first instruction of the first instance of the first basic block being received that is based on a cycle count that indicates a first number of processor cycles that occurred between receiving the first instruction of the first instance of the first basic block and receiving the RSWI. 
 
     
     
       10. The processing system of  claim 9 , wherein the basic block detector circuit is further configured to determine that the first instruction of the first instance of the first basic block is the first-in-order instruction of the first instance of the first basic block based upon an address associated with the first instruction of the first instance of the first basic block. 
     
     
       11. The processing system of  claim 10 , wherein the detector circuit is configured to store the address associated with the first instruction of the first instance of the first basic block for a prior instance of the first basic block. 
     
     
       12. The processing system of  claim 9 , further comprising:
 a counter configured to maintain the cycle count. 
 
     
     
       13. The processing system of  claim 12 , wherein the cycle count is based upon a number of cycles between when processing of the first instruction of the first instance of the first basic block begins and when processing of the RSWI begins. 
     
     
       14. The processing system of  claim 13 , wherein the hardware task scheduler is further configured to initiate the resource switch based upon a difference between the cycle count and a number of processor cycles needed to process the resource switch. 
     
     
       15. The processing system of  claim 9 , wherein the hardware task scheduler is further configured to initiate the resource switch based upon a number of processor cycles needed to process the resource switch. 
     
     
       16. A method comprising:
 determining, by a basic block detector circuit of a processing system, that a processor pipeline of the processing system received a first instruction of a first instance of a first basic block; 
 determining, by the basic block detector circuit of the processing system, that the first instruction of the first instance of the first basic block is a first-in-order instruction of the first instance of the first basic block; 
 determining, by the basic block detector circuit of the processing system, that a last-in-order instruction of the first instance of the first basic block is a resource switch instruction (RSWI); 
 determining, by the basic block detector circuit of the processing system, that the processor pipeline of the processing system received a first instruction of a second instance of the first basic block; 
 providing, by an indicator circuit of the processing system, an indication in response to the basic block detector circuit of the processing system determining that the processor pipeline of the processing system received the first instruction of the second instance of the first basic block; and 
 initiating, by a hardware task scheduler of the processing system, a resource switch, in response to the indication, at a time subsequent to the first instruction of the first instance of the first basic block being received that is based on a cycle count that indicates a first number of processor cycles that occurred between receiving the first instruction of the first instance of the first basic block and receiving the RSWI. 
 
     
     
       17. The method of  claim 16 , further comprising:
 storing, by the basic block detector circuit of the processing system, an address associated with the first instruction of the first instance of the first basic block; 
 wherein determining that the first instruction of the first instance of the first basic block is a first-in-order instruction of the first instance of the first basic block is based upon the address associated with the first instruction of the first instance of the first basic block. 
 
     
     
       18. The method of  claim 16 , further comprising:
 maintaining, by a counter of the processing system, the cycle count; 
 wherein initiating the resource switch is based upon the cycle count. 
 
     
     
       19. The method of  claim 18 , wherein initiating the resource switch is based upon a difference between the cycle count and a number of processor cycles needed to process the resource switch.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.