Processor architecture and operation for exploiting improved branch control instruction
First Claim
Patent Images
1. A microprocessor comprising:
- an instruction decoder decoding an instruction; and
a plurality of address registers, each of which stores an address calculated based on address fields contained in one or more of said decoded instructions; and
a plurality of instruction registers, each of which stores a target instruction related to a corresponding address held in one of said plurality of address registers;
wherein a number of said plurality of address registers is greater than that of said plurality of instruction registers.
3 Assignments
0 Petitions
Accused Products
Abstract
A processor is disclosed utilizing improved branch control and branch instructions for optimizing performance of programs run on such processors. Flexible instruction parameter fields permit a variety of new branch control and branch instruction implementations best suited for a particular computing environment. These instructions also have separate prediction bits, which are used to optize loading of target instruction buffers in advance of program execution, so that a pipeline within the processor achieves superior performance during actual program execution.
37 Citations
23 Claims
-
1. A microprocessor comprising:
-
an instruction decoder decoding an instruction; and
a plurality of address registers, each of which stores an address calculated based on address fields contained in one or more of said decoded instructions; and
a plurality of instruction registers, each of which stores a target instruction related to a corresponding address held in one of said plurality of address registers;
wherein a number of said plurality of address registers is greater than that of said plurality of instruction registers.
-
-
2. A microprocessor comprising:
-
an instruction decoder decoding an instruction; and
a plurality of address registers, each of which stores an address calculated based on address fields contained in one or more of said decoded instructions; and
a plurality of instruction registers, each of which stores a target instruction related to a corresponding address held in one of said plurality of address registers;
a plurality of second address registers each of which can store an address that represents an incremented version of an address held in one of said plurality of address registers.
-
-
3. A branch target instruction memory for use in a computing system comprising:
-
a plurality of target instruction registers, each register configured for storing a branch target instruction, said branch target instruction constituting a target instruction of a branch instruction within a program that can be executed by the computing system; and
said plurality of target instruction registers being randomly accessible, so that any one of said branch target instructions can be loaded to a decoder circuit in the processor in accordance with a target instruction address associated with said branch target instruction;
the memory being further configured such that one or more of said target instruction registers can be speculatively loaded with branch target instructions before a corresponding branch instruction of said program is executed by the computing system;
wherein said speculative loading is based on evaluating target address entries in a separate branch target address memory to determine if said target address entries represent branch target instructions likely to be needed for execution by the computing system.
-
-
4. A branch target instruction memory for use in a computing system comprising:
-
a plurality of target instruction registers, each register configured for storing a branch target instruction, said branch target instruction constituting a target instruction of a branch instruction within a program that can be executed by the computing system; and
said plurality of target instruction registers being randomly accessible, so that any one of said branch target instructions can be loaded to a decoder circuit in the processor in accordance with a target instruction address associated with said branch target instruction;
the memory being further configured such that one or more of said target instruction registers can be speculatively loaded with branch target instructions before a corresponding branch instruction of said program is executed by the computing system;
wherein said speculative loading is based on evaluating target address entries in a separate branch target address memory to determine if said target address entries represent branch target instructions likely to be needed for execution by the computing system;
further wherein said speculative loading is based on evaluating a priority of said target address entries in said separate branch target address memory, such that higher priority target address entries are used for speculative loading before lower priority target address entries.
-
-
5. A circuit for controlling loading of instructions from an instruction cache to a pipeline in a computing system, said circuit including:
-
monitoring means for determining whether branch target instructions available for loading in the pipeline are invalid;
selecting means for selecting a replacement branch target instruction when an invalid branch target instruction is found, said replacement branch instruction being selected by ranking a number of potential branch target addresses;
loading means for replacing said invalid branch target instruction with said replacement branch target instruction by causing said instruction cache to load said replacement branch target instruction for execution in the pipeline. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method of maintaining a supply of instructions to a pipeline in a computing system, said method including the steps of:
-
(a) monitoring a status condition of any branch target instructions already available in the pipeline for execution; and
(b) ranking a number of potential branch target addresses; and
(c) selecting a new branch target instruction based on said status condition and said ranking; and
(d) loading a highest ranked new branch target instruction based on said ranking of said potential branch target addresses, so that said highest ranked new branch instruction is available as needed for loading in the pipeline. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
Specification