Sticky bit update within a speculative execution processing environment
AssigneeArm Limited
InventorsLuca Scalabrino, Cédric Denis Robert Airaud, Guillaume Schon, Frederic Jean Denis Arsanto
Life of this patent
Estimating the term…
Abstract
A data processing apparatus 2 supports speculative execution and the use of sticky bits. A different version of a sticky bit is associated with each segment of the speculative program flow. The segments of the program flow are separated by speculation nodes corresponding to program instructions which may be followed by a plurality of different alternative program instruction serving as the next program instruction. When a speculation node is resolved, then the segments separated by that speculation node are merged and the sticky bit values for those two segments are merged.
Claims18
Apparatus for processing data in response to program instructions having a program execution order, said apparatus comprising:
- processing circuitry configured to perform processing operation in response to said program instructions;
- sticky bit storage circuitry configured to store one or more sticky bits, each sticky bit having either an initial value or a sticky value and being subject to:
- (i) a first outcome of an event that leaves said sticky bit unchanged independent of whether said sticky bit has said initial value or said sticky value;
- and
- (ii) a second outcome of said event that leaves said sticky bit with said sticky value independent of whether said sticky bit has said initial value or said sticky value;
- and
- speculative execution control circuitry configured to control speculative execution of program instructions by said processing circuitry to follow a speculative sequence of program instructions including a plurality of segments of program instructions, each of said plurality of segments separated from one or more adjacent segments by a respective speculation node corresponding to a program instruction following which a plurality of alternative instructions may serve as a next program instruction to be executed, said speculative execution control circuitry controlling said speculative sequence of program instructions to use one of said alternative instructions as said next program instruction;
- wherein
- said sticky bit storage circuitry is configured to store separate versions of said sticky bit, each version corresponding to a value of said sticky bit associated one of said plurality of segments, and
- said speculative execution control circuitry is configured to respond to resolution of speculation associated with a speculation node corresponding to a condition that a correct one of said plurality of alternative program instruction was selected as said next program instruction to merge segments separated by said speculation node to form a merged segment;
- and
- said sticky bit storage circuitry is configured to respond to any merging of segments to merge respective versions of said sticky bit to form a merged sticky bit such that:
- (i) if both versions of said sticky bit have said initial value, then said merged sticky bit has said initial value;
- and
- (ii) if either or both of said versions of said sticky bit have said sticky value, then said merged version has said sticky value.
Apparatus for processing data in response to program instructions having a program execution order, said apparatus comprising:
- processing means for performing processing operation in response to said program instructions;
- sticky bit storage means for store one or more sticky bits, each sticky bit having either an initial value or a sticky value and being subject to:
- (i) a first outcome of an event that leaves said sticky bit unchanged independent of whether said sticky bit has said initial value or said sticky value;
- and
- (ii) a second outcome of said event that leaves said sticky bit with said sticky value independent of whether said sticky bit has said initial value or said sticky value;
- and
- speculative execution control means for controlling speculative execution of program instructions by said processing means to follow a speculative sequence of program instructions including a plurality of segments of program instructions, each of said plurality of segments separated from one or more adjacent segments by a respective speculation node corresponding to a program instruction following which a plurality of alternative instructions may serve as a next program instruction to be executed, said speculative execution control means controlling said speculative sequence of program instructions to use one of said alternative instructions as said next program instruction;
- wherein
- said sticky bit storage means stores separate versions of said sticky bit, each version corresponding to a value of said sticky bit associated one of said plurality of segments, and
- said speculative execution control means is configured to respond to resolution of speculation associated with a speculation node corresponding to a condition that a correct one of said plurality of alternative program instruction was selected as said next program instruction to merge segments separated by said speculation node to form a merged segment;
- and
- said sticky bit storage means is configured to respond to any merging of segments to merge respective versions of said sticky bit to form a merged sticky bit such that:
- (i) if both versions of said sticky bit have said initial value, then said merged sticky bit has said initial value;
- and
- (ii) if either or both of said versions of said sticky bit have said sticky value, then said merged version has said sticky value.
A method of processing data in response to program instructions having a program execution order, said method comprising the steps of:
- performing processing operation in response to said program instructions;
- storing one or more sticky bits, each sticky bit having either an initial value or a sticky value and being subject to:
- (i) a first outcome of an event that leaves said sticky bit unchanged independent of whether said sticky bit has said initial value or said sticky value;
- and
- (ii) a second outcome of said that leaves said sticky bit with said sticky value independent of whether said sticky bit has said initial value or said sticky value;
- controlling speculative execution of program instructions to follow a speculative sequence of program instructions including a plurality of segments of program instructions, each of said plurality of segments separated from one or more adjacent segments by a respective speculation node corresponding to a program instruction following which a plurality of alternative instructions may serve as a next program instruction to be executed, said speculative execution control circuitry controlling said speculative sequence of program instructions to use one of said alternative instructions as said next program instruction;
- storing separate versions of said sticky bit, each version corresponding to a value of said sticky bit associated one of said plurality of segments;
- in response to resolution of speculation associated with a speculation node corresponding to a condition that a correct one of said plurality of alternative program instruction was selected as said next program instruction, merging segments separated by said speculation node to form a merged segment;
- and
- in response to any merging of segments, merging respective versions of said sticky bit to form a merged sticky bit such that:
- (i) if both versions of said sticky bit have said initial value, then said merged sticky bit has said initial value;
- and
- (ii) if either or both of said versions of said sticky bit have said sticky value, then said merged version has said sticky value.
Dependencies are inferred from the claim text.