Browse Prior Art Database

Speculative Execution Beyond Branch with Outstanding Branch Target

IP.com Disclosure Number: IPCOM000108329D
Original Publication Date: 1992-May-01
Included in the Prior Art Database: 2005-Mar-22
Document File: 2 page(s) / 50K

Publishing Venue

IBM

Related People

Kahle, JA: AUTHOR [+3]

Abstract

Branch instructions which have their target addresses stored in registers are frequently used for subroutine call/return, but they would stall the processor when the register content is still outstanding. For processors capable to speculatively execute instructions beyond normal conditional branches, this penalty is just too costly to pay.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 89% of the total text.

Speculative Execution Beyond Branch with Outstanding Branch Target

       Branch instructions which have their target addresses
stored in registers are frequently used for subroutine call/return,
but they would stall the processor when the register content is still
outstanding. For processors capable to speculatively execute
instructions beyond normal conditional branches, this penalty is just
too costly to pay.

      In this invention, a scheme is invented to predict outstanding
branch targets so that the processor is able to continue its
speculative execution. There would be no penalty if the prediction is
correct, and if predicted wrong, the processor would pay as much
penalty as if it stalls until the outstanding target gets resolved.

      For a processor with prefetch table for instruction
prefetching, it will prefetch instructions based upon the target
information stored in prefetch table even when the next address is
still outstanding.  Therefore, when processor sees a branch-to-link
instruction, it can predict the prefetch target is the branch target,
and speculatively execute instruction beyond the branch. When the
target gets resolved, processor will know if the prediction is
correct. If the prediction is correct, there is no penalty;
otherwise, the processor has to fetch the correct branch target, and
in the meantime, all speculatively executed instructions and their
data should be discarded. Since all the cancellation hardware and
pending branch...