Method and apparatus for expanding instructions

Electrical computers and digital processing systems: processing – Processing control – Instruction modification based on condition

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C712S232000

Reexamination Certificate

active

06216221

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates generally to the processing of program instructions in a microprocessor, and more particularly, to expanding program instructions.
2. Description of the Related Art
Data structures, such as register files or queue structures store data for use in a digital system. Present microprocessors require multi-ported queue structures to allow more than one data entry to be written into the queue during a single clock cycle. Due to the data requirements, each port of the queue structure is wide (100+bits). As the number of ports increases the area occupied by the queue structure also increases. Due to the increased size a queue structure with a large number of ports may also encounter speed problems. Typically there is a trade off between the performance of the microprocessor (based on the number of ports) and the size of the queue structure.
Present microprocessors are capable of executing instructions out of order (OOO). Instructions are decoded in program order and stored into a queue structure. The instructions are read out of the queue structure by the OOO portion of the microprocessor. The OOO portion renames the instructions and executes them in an order based on the available resources of the microprocessor and the interdependency relationships between the various instructions. The queue structure represents the boundary between the in order portion of the microprocessor and the OOO portion.
One type of instruction executed out of order is a load instruction. Load instructions require that data be read from a storage device such as a register, cache memory, main memory, or external data storage device (e.g., hard drive). In order to hide the latency of load instructions (i.e., the time required to locate and load the requested data), it is desirable to execute the load instruction as soon as possible.
Referring to
FIG. 1A
, a program sequence of a computer program as seen by the in order portion of the microprocessor is shown. The program sequence includes instructions A, B, and C, a store instruction
100
, a load instruction
105
, and instructions D, E, and F. If the load instruction
105
is not dependent on instructions A, B, or C, the OOO portion can schedule the load instruction
105
ahead of any or all of the other instructions. The early execution hides the latency of the load instruction, such that the microprocessor can complete the load before it actually needs the data (e.g., in instructions D, E, or F) and will not have to stall while the load is completing.
The early execution of the load instruction
105
is effective, as long as there is no conflict between the store address of the store instruction
100
and the load address of the load instruction
105
. If there is a conflict, then the load instruction
105
has loaded incorrect data. To address such a conflict, the load instruction
105
is expanded into a speculative load instruction
110
and an architectural load instruction
115
, as represented by the program sequence of FIG.
1
B.
The speculative load instruction
110
is free of any dependency restrictions and can be scheduled by the OOO portion at any time. Conversely, the architectural load instruction
115
is always executed in program order. As a result, conflicts are identified when the architectural load instruction
115
is executed and the load can be reissued to retrieve the correct data, and the instructions following the load can be reissued.
When a load instruction
105
is decoded, both the speculative load instruction
110
and the architectural load instruction
115
are entered into the queue structure. Accordingly, two ports must be used for each load instruction. Assuming the queue structure has 5 ports, instructions A, B, C, the store instruction
100
, and the load instruction
105
, cannot be loaded during the same clock cycle due the expansion of the load instruction
105
. To increase the performance of the queue structure an additional port would be required, thus increasing the area of the queue structure and introducing the potential for speed problems due to the increase in the number of wires and the length of the wires.
The present invention is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above.
SUMMARY OF THE INVENTION
An aspect of the invention is seen in a microprocessor including a decoder, a queue, and a renamer. The decoder is adapted to receive a program instruction and decode the program instruction to provide a first decoded instruction. The first decoded instruction includes a plurality of instruction bits. The queue is coupled to the decoder and adapted to store the first decoded instruction. The renamer has a first input port and a first and second output port. The renamer is coupled to the queue and adapted to receive the first decoded instruction at the input port, provide the first decoded instruction on the first output port, change at least one of the instruction bits to generate a second decoded instruction, and provide the second decoded instruction on the second output port.
Another aspect of the invention is seen in a method for expanding program instructions in a microprocessor having a renamer. The renamer includes a first input port and first and second output ports. The method includes receiving a first decoded instruction in the first input port. The first decoded instruction includes a plurality of instruction bits. At least one of the instruction bits of the first instruction is changed to generate a second instruction. The first decoded instruction is provided on the first output port, and the second decoded instruction is provided on the second output port.


REFERENCES:
patent: 3737871 (1973-06-01), Katzman
patent: 5611063 (1997-03-01), Loper et al.
patent: 5671383 (1997-09-01), Valentine
patent: 5778245 (1998-07-01), Papworth et al.
patent: 5860017 (1999-01-01), Sharangpani et al.
patent: 5872948 (1999-02-01), Mallick et al.
patent: 5961615 (1999-10-01), Zaidi et al.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for expanding instructions does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for expanding instructions, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for expanding instructions will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2496707

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.