Electrical computers and digital processing systems: processing – Processing control – Logic operation instruction processing
Reexamination Certificate
1998-12-08
2001-05-22
Coleman, Eric (Department: 2183)
Electrical computers and digital processing systems: processing
Processing control
Logic operation instruction processing
C712S226000
Reexamination Certificate
active
06237085
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates in general to a method and system for data processing and, in particular, to a method and apparatus for computing condition code bits in a processor. Still more particularly, the present invention relates to a method and apparatus for computing less than (LT), greater than (GT), and equal to (EQ) condition code bits in a processor concurrent with the execution of an instruction.
2. Description of the Related Art
A state-of-the-art superscalar processor can comprise, for example, an instruction cache for storing instructions, an instruction buffer for temporarily storing instructions fetched from the instruction cache for execution, one or more execution units for executing sequential instructions, a branch processing unit (BPU) for executing branch instructions, a dispatch unit for dispatching sequential instructions from the instruction buffer to particular execution units, and a completion buffer for temporarily storing sequential instructions that have finished execution, but have not completed.
Branch instructions executed by the branch processing unit (BPU) of the superscalar processor can be classified as either conditional or unconditional branch instructions. Unconditional branch instructions are branch instructions that change the flow of program execution from a sequential execution path to a specified target execution path and that do not depend upon a condition supplied by the occurrence of an event. Thus, the branch specified by an unconditional branch instruction is always taken. In contrast, conditional branch instructions are branch instructions for which the indicated branch in program flow may be taken or not taken depending upon a condition within the processor, for example, the state of specified condition register bits or the value of a counter. Conditional branch instructions can be further classified as either resolved or unresolved, based upon whether or not the condition upon which the branch depends is available when the conditional branch instruction is evaluated by the branch processing unit (BPU). Because the condition upon which a resolved conditional branch instruction depends is known prior to execution, resolved conditional branch instructions can typically be executed and instructions within the target execution path fetched with little or no delay in the execution of sequential instructions. Thus, it is advantageous to determine condition register bits or another condition upon which a conditional branch instruction may depend as quickly as possible so that the conditional branch instruction can be resolved prior to execution. Even if a conditional branch instruction is not resolved prior to its execution, meaning that the conditional branch is speculatively predicted, it is still advantageous to compute the condition upon which the branch instruction depends as quickly as possible because the performance penalty incurred in the event of misprediction is thereby minimized.
Condition register bits upon which conditional branch instructions may depend are set in response to predetermined architecturally defined instructions, for example, compare instructions and certain “recording” forms of add, subtract, and other arithmetic and logical instructions. The condition register bits set by compare instructions and recording instructions include a less than (LT) bit, a greater than (GT) bit, and an equal to (EQ) bit, which indicate whether the result of a particular instruction is less than, greater than, or equal to zero, respectively. Conventional processors first determine the result of an instruction (e.g., add) and then compare the result with zero in subsequent cycle(s) to produce the condition register bits. As will be appreciated, this serial architecture places an inherent limitation upon how early the condition register bits can be determined. More recently, various techniques have been employed in order to determine the value of the EQ bit in parallel with the execution of certain types of instructions. Although the early determination of the value of the EQ bit provides some performance advantages over the prior serial approach, there remains a need in the art for a method and apparatus for computing the value of all of the LT, GT, and EQ bits concurrent with arithmetic and logical operations in order to enhance branch processing performance.
SUMMARY OF THE INVENTION
A processor includes execution resources and condition code logic. The execution resources execute an arithmetic or logical instruction by arithmetically or logically combining at least two operands. Concurrent with the execution of the arithmetic or logical instruction by the execution resources, the condition code logic determines less than, greater than, and equal to condition code bits associated with the result of the arithmetic or logical instruction. In one embodiment, the condition code logic includes a single computation stage that receives as inputs individual bit values of bit positions within first and second operands and logically combines the individual bit values. The single computation stage outputs, for each bit position, propagate, generate, and kill signals that collectively indicate values for the less than, greater than, and equal to condition code bits. One or more merging stages coupled to the computation stage then merge the propagate, generate, and kill signals into output signals that set the condition code bits. The condition code logic is also capable of receiving externally computed condition code bits associated with complex instructions and utilizing such condition code bits to produce the output signals.
All objects, features, and advantages of the present invention will become apparent in the following detailed written description.
REFERENCES:
patent: 5440702 (1995-08-01), Brewer
patent: 5815695 (1998-09-01), James
patent: 6061367 (2000-05-01), Siemers
Burns Jeffrey
Dhong Sang Hoo
Nowka Kevin John
Bracewell & Patterson L.L.P.
Coleman Eric
International Business Machines - Corporation
Salys Casimer K.
LandOfFree
Processor and method for generating less than (LT), Greater... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Processor and method for generating less than (LT), Greater..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Processor and method for generating less than (LT), Greater... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2501431