IP Library › Granted Patent US 9,823,929
Granted Patent B2
US 9,823,929 · App. 13/841,576 · Granted Nov 21, 2017

Optimizing performance for context-dependent instructions

Inventors: Daren Eugene Streett (Cary, NC); Brian Michael Stempel (Raleigh, NC); Thomas Philip Speier (Raleigh, NC); Rodney Wayne Smith (Raleigh, NC); Michael Scott McIlvaine (Raleigh, NC); Kenneth Alan Dockser (Cary, NC); James Norris Dieffenderfer (Apex, NC)
Assignee: QUALCOMM Incorporated
G06F9/30098G06F9/30189G06F9/3842G06F9/3863
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,823,929
App. No.
13/841,576
Granted
Nov 21, 2017
Kind
B2
Abstract

A processor includes a queue for storing instructions processed within the context of a current value of a register field, where for some embodiments the instruction is undefined or defined, depending upon the register field at time of processing. After a write instruction (an instruction that writes to the register field) executes, the queue is searched for any entries that contain instructions that depend upon the executed write instruction. Each such entry stores the value of the register field at the time the instruction in the entry was processed. If such an entry is found in the queue and its stored value of the register field does not match the value that the write instruction wrote to the register field, then the processor flushes the pipeline and restarts at a state so as to correctly execute the instruction.

Claims (88)

1. A method comprising:

processing an instruction having a behavior based upon a configuration value of a register field, the instruction dependent upon a write instruction prior in program order to the instruction, the write instruction to write the configuration value to the register field, the instruction processed before the write instruction executes within a context based upon a current value of the register field at the time the instruction is processed;

storing the instruction in an entry in a queue;

storing in the entry the current value of the register field;

searching the queue for the entry after the write instruction executes; and

comparing the current value stored in the entry with the configuration value after the write instruction executes.

2. The method of claim 1 , further comprising:

provided the current value stored in the entry does not match the configuration value, flushing a pipeline of all in-flight instructions, and setting a program counter to an address of a next instruction in program order after the write instruction.

3. The method of claim 2 , processing the instruction further comprising:

processing the instruction as defined if the current value is a first value; and

processing the instruction as undefined if the current value is not the first value.

4. The method of claim 1 , further comprising:

provided the current value stored in the entry does not match the configuration value, flushing a pipeline of the instruction and all in-flight instructions following the instruction in program order, and setting a program counter to an address of the instruction.

5. The method of claim 4 , further comprising:

storing in the entry a state information of a processor, the state information at a time when the instruction is processed; and

provided the current value stored in the entry does not match the configuration value, retrieving the state information from the entry, and restoring the processor to a state indicated by the state information.

6. The method of claim 1 , wherein the instruction is a vector instruction.

7. The method of claim 1 , wherein the register field comprises one or more fields.

8. The method of claim 1 , processing the instruction further comprising:

processing the instruction as defined if the current value is a first value; and

processing the instruction as undefined if the current value is not the first value.

9. The method of claim 1 , further comprising:

removing the entry from the queue when the instruction commits.

10. A processor comprising:

a register having a field;

a queue;

a pipeline;

a controller configured to:

cause the pipeline to process an instruction within a context determined by a current value of the register field at the time the instruction is processed, the instruction having a behavior based upon a configuration value of the register field, the instruction processed before the pipeline executes a write instruction prior in program order to the instruction, the instruction dependent upon the write instruction, the write instruction to write the configuration value to the register field;

store the instruction in an entry in the queue;

store in the entry the current value of the register field;

search the queue for the entry after the pipeline executes the write instruction; and

compare the current value stored in the entry with the configuration value after the pipeline executes the write instruction.

11. The processor of claim 10 , further comprising:

a program counter;

the controller further configured to, provided the current value stored in the entry does not match the configuration value:

flush the pipeline of all in-flight instructions; and

set the program counter to an address of a next instruction in program order after the write instruction.

12. The processor of claim 11 , the controller further configured to cause the pipeline to:

execute the instruction as defined if the current value is a first value; and

execute the instruction as undefined if the current value is not the first value.

13. The processor of claim 10 , further comprising a program counter, the controller configured to, provided the current value stored in the entry does not match the configuration value:

flush the pipeline of the instruction and all in-flight instructions following in program order the instruction; and

set the program counter to an address of the instruction.

14. The processor of claim 13 , the controller configured to:

store in the entry a state information of the processor, the state information at a time when the pipeline processes the instruction;

provided the current value stored in the entry does not match the configuration value, retrieve the state information from the entry, and restore the processor to a state indicated by the state information.

15. The processor of claim 13 , the controller configured to cause the pipeline to:

execute the instruction as defined if the current value is a first value; and

execute the instruction as undefined if the current value is not the first value.

16. The processor of claim 10 , the controller configured to cause the pipeline to:

execute the instruction as defined if the current value is a first value; and

execute the instruction as undefined if the current value is not the first value.

17. The processor of claim 10 , the controller configured to remove the entry from the queue when the pipeline commits the instruction.

18. The processor of claim 10 , wherein the instruction is a vector instruction.

19. The processor of claim 10 , wherein the register field comprises one or more fields.

20. A processor comprising:

means for processing an instruction within a context determined by a current value of a register field at the time the instruction is processed, the instruction having a behavior based upon a configuration value of the register field, the instruction dependent upon a write instruction prior in program order to the instruction, the write instruction to write the configuration value to the register field, the instruction processed before the write instruction executes;

means for storing the instruction in an entry in a queue;

means for storing in the entry the current value of the register field;

means for searching the queue for the entry after the write instruction executes; and

means for comparing the current value stored in the entry with the configuration value after the write instruction executes.

21. The processor of claim 20 , further comprising:

provided the current value stored in the entry does not match the configuration value, means for flushing a pipeline of all in-flight instructions, and means for setting a program counter to an address of a next instruction in program order after the write instruction.

22. The processor of claim 20 , further comprising:

provided the current value stored in the entry does not match the configuration value, means for flushing a pipeline of the instruction and all in-flight instructions following in program order the instruction, and means for setting the program counter to an address of the instruction.

23. The processor of claim 20 , the register field comprising one or more fields.

24. The processor of claim 20 , wherein the instruction is a vector instruction.

25. A non-transitory computer-readable medium having instructions stored thereon to cause a controller to perform a method comprising:

processing an instruction within a context determined by a current value of a register field at the time the instruction is processed, the instruction having a behavior based upon a configuration value of the register field, the instruction dependent upon a write instruction prior in program order to the instruction, the write instruction to write the configuration value to the register field, the instruction processed before the write instruction executes;

storing the instruction in an entry in a queue;

storing in the entry the current value of the register field;

searching the queue for the entry after the write instruction executes; and

comparing the current value stored in the entry with the configuration value after the write instruction executes.

26. The non-transitory computer-readable medium of claim 25 , the method further comprising:

provided the current value stored in the entry does not match the configuration value, flushing a pipeline of all in-flight instructions, and setting a program counter to an address of a next instruction in program order after the write instruction.

27. The non-transitory computer-readable medium of claim 25 , the method further comprising:

provided the current value stored in the entry does not match the configuration value, flushing a pipeline of the instruction and all in-flight instructions following in program order the instruction, and setting the program counter to an address of the instruction.

28. The non-transitory computer-readable medium of claim 27 , the method further comprising:

storing in the entry a state information of a processor, the state information at a time when the instruction is processed; and

provided the current value stored in the entry does not match the configuration value, retrieving the state information from the entry, and restoring the processor to a state indicated by the state information.

29. The non-transitory computer-readable medium of claim 25 , processing the instruction further comprising:

processing the instruction as defined if the current value is a first value; and

processing the instruction as undefined if the current value is not the first value.

30. The non-transitory computer-readable medium of claim 25 , the method further comprising:

removing the entry from the queue when the instruction commits.

31. The non-transitory computer-readable medium of claim 25 , the register field comprising one or more fields.

32. The non-transitory computer-readable medium of claim 25 , wherein the instruction is a vector instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2013
From: STREETT, DAREN EUGENE; STEMPEL, BRIAN MICHAEL; SPEIER, THOMAS PHILIP; SMITH, RODNEY WAYNE; MCILVAINE, MICHAEL SCOTT; DOCKSER, KENNETH ALAN; DIEFFENDERFER, JAMES NORRIS
To: QUALCOMM INCORPORATED
Reel/Frame 030084/0186 →
Continuity (1)
Related Publication 20140281405A1 · Sep 18, 2014