Circuits and methods for recovering link stack data upon branch instruction mis-speculation
First Claim
1. A method for managing a link stack comprising the steps of:
- for a first type instruction;
setting a first data value corresponding to a first address stored in said link stack in a first portion of an entry in a queue having a plurality of entries; and
for a second type instruction;
setting a current value of a first pointer into said link stack in a first register; and
setting said current value of said first pointer in a second portion of said entry in said queue.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of performing operations to a link stack including the step of performing a Pop operation from the link stack which includes the substeps of storing a first pointer value to the link stack, the first pointer value being the value of a pointer to the link stack before the Pop operation, and storing a first address including a first tag popped from the link stack. The method further includes the step of performing a Push operation to the link stack which includes the substeps of storing a second address including a second tag being Pushed into the link stack and storing a second pointer to the link stack, the second pointer being the value of the pointer to the link stack after the Push operation. The method additionally provides for the recovering of the link stack following an instruction flush which includes the substeps of comparing the first pointer value and the second value, comparing the first tag and the second tag, and replacing an address at the top of the link stack with the first address when the first and second pointers match and the first and second tags match.
-
Citations
48 Claims
-
1. A method for managing a link stack comprising the steps of:
-
for a first type instruction;
setting a first data value corresponding to a first address stored in said link stack in a first portion of an entry in a queue having a plurality of entries; and
for a second type instruction;
setting a current value of a first pointer into said link stack in a first register; and
setting said current value of said first pointer in a second portion of said entry in said queue. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of managing a link stack comprising:
-
for a first type instruction;
setting, in a first register, a first data value from a link stack entry pointed to by a current value of a first pointer;
setting said current value of said first pointer in a second register; and
setting a second data value in said link stack at an entry pointed to by said current value of said first pointer; and
for a second type instruction;
setting said decremented value of said first pointer into a second portion of an entry in a queue having a plurality of entries. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41)
-
-
18. A data processing system comprising:
a central processing unit (CPU), said CPU including;
a link stack; and
first logic operable for, for a first type instruction, setting a first data value corresponding to a first address stored in said link stack in a first portion of an entry in a queue having a plurality of entries, and for a second type instruction, setting a current value of a first pointer into said link stack in a first register, and setting said current value of said first pointer in a second portion of said entry in said queue
-
28. A data processing system comprising:
a central processing unit (CPU), said CPU including;
a link stack;
a first register;
a second register first logic operable for, for a first type instruction, setting, in said first register, a first data value from a link stack entry pointed to by a current value of a first pointer, setting said current value of said first pointer in said second register, and setting a second data value in said link stack at an entry pointed to by said current value of said first pointer; and
second logic operable for, for a second type instruction, decremnenting a current value of said first pointer, reading from said link stack a first address stored at a stack entry at said decremented current value of said first pointer, setting said decremented value of said first pointer into a second portion of an entry in a queue having a plurality of entries, said queue operable for tracking instructions and incrementing a current value of a second pointer, said second pointer pointing to an entry point in said queue.
-
36. A method for managing a link stack comprising the steps of:
-
for a first type instruction;
setting a first address in a first portion of an entry in a queue having a plurality of entries; and
setting a current value of a first pointer into said link stack in a second portion of said entry in said queue; and
.for a second type instruction;
setting a second current value of said first pointer in said second portion of said entry in said queue.
-
-
42. A data processing system comprising:
a central processing unit (CPU), said CPU including;
a link stack;
a queue having a plurality of entries, said queue operable for tracking instructions; and
first logic operable for, for a first type instruction, setting a first address into a stack entry in said link stack at a current value of a first pointer and setting a current value of said first pointer into a first portion of an entry in said queue. - View Dependent Claims (43, 44, 45, 46, 47, 48)
Specification