PIPELINED MICROPROCESSOR WITH FAST CONDITIONAL BRANCH INSTRUCTIONS BASED ON STATIC SERIALIZING INSTRUCTION STATE
First Claim
1. A pipelined microprocessor, comprising:
- a control register, configured to store a control value that affects operation of the microprocessor;
an instruction set architecture, that includes a conditional branch instruction that specifies a branch condition based on the control value stored in the control register, wherein the instruction set architecture further includes a serializing instruction that updates the control value in the control register, wherein the microprocessor is configured to complete all modifications to flags, registers, and memory by instructions previous to the serializing instruction and to drain all buffered writes to memory before it fetches and executes the next instruction after the serializing instruction;
execution units, coupled to the control register, configured to update the control value in the control register in response to the serializing instruction; and
a fetch unit, coupled to the control register, configured to fetch, decode, and unconditionally correctly resolve and retire the conditional branch instruction based on the control value stored in the control register rather than dispatching the conditional branch instruction to the execution units to be resolved.
1 Assignment
0 Petitions
Accused Products
Abstract
A microprocessor includes a control register that stores a control value that affects operation of the microprocessor. An instruction set architecture includes a conditional branch instruction that specifies a branch condition based on the control value stored in the control register, and a serializing instruction that updates the control value in the control register. The microprocessor completes all modifications to flags, registers, and memory by instructions previous to the serializing instruction and to drain all buffered writes to memory before it fetches and executes the next instruction after the serializing instruction. Execution units update the control value in the control register in response to the serializing instruction. A fetch unit fetches, decodes, and unconditionally correctly resolves and retires the conditional branch instruction based on the control value stored in the control register rather than dispatching the conditional branch instruction to the execution units to be resolved.
32 Citations
33 Claims
-
1. A pipelined microprocessor, comprising:
-
a control register, configured to store a control value that affects operation of the microprocessor; an instruction set architecture, that includes a conditional branch instruction that specifies a branch condition based on the control value stored in the control register, wherein the instruction set architecture further includes a serializing instruction that updates the control value in the control register, wherein the microprocessor is configured to complete all modifications to flags, registers, and memory by instructions previous to the serializing instruction and to drain all buffered writes to memory before it fetches and executes the next instruction after the serializing instruction; execution units, coupled to the control register, configured to update the control value in the control register in response to the serializing instruction; and a fetch unit, coupled to the control register, configured to fetch, decode, and unconditionally correctly resolve and retire the conditional branch instruction based on the control value stored in the control register rather than dispatching the conditional branch instruction to the execution units to be resolved. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for fast execution of a conditional branch instruction in a pipelined microprocessor having a control register that stores a control value that affects operation of the microprocessor, the microprocessor also having instruction set architecture that includes a serializing instruction that updates the control value in the control register, wherein the microprocessor is configured to complete all modifications to flags, registers, and memory by instructions previous to the serializing instruction and to drain all buffered writes to memory before it fetches and executes the next instruction after the serializing instruction, the method comprising:
-
including in the instruction set architecture a conditional branch instruction that specifies a branch condition based on the control value stored in the control register; updating the control value in the control register in response to the serializing instruction, wherein said updating the control value in the control register is performed by execution units of the microprocessor; and fetching, decoding, and unconditionally correctly resolving and retiring the conditional branch instruction based on the control value stored in the control register rather than dispatching the conditional branch instruction to the execution units to be resolved, wherein said fetching, decoding, and unconditionally correctly resolving and retiring are performed by a fetch unit of the microprocessor. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. A computer program product for use with a computing device, the computer program product comprising:
a computer usable storage medium, having computer readable program code embodied in said medium, for specifying a pipelined microprocessor, the computer readable program code comprising; first program code for specifying a control register, configured to store a control value that affects operation of the microprocessor; second program code for specifying an instruction set architecture, that includes a conditional branch instruction that specifies a branch condition based on the control value stored in the control register, wherein the instruction set architecture further includes a serializing instruction that updates the control value in the control register, wherein the microprocessor is configured to complete all modifications to flags, registers, and memory by instructions previous to the serializing instruction and to drain all buffered writes to memory before it fetches and executes the next instruction after the serializing instruction; third program code for specifying execution units, coupled to the control register, configured to update the control value in the control register in response to the serializing instruction; and fourth program code for specifying a fetch unit, coupled to the control register, configured to fetch, decode, and unconditionally correctly resolve and retire the conditional branch instruction based on the control value stored in the control register rather than dispatching the conditional branch instruction to the execution units to be resolved.
Specification