Browse Prior Art Database

Delayed Branches with Packed Instruction Stream

IP.com Disclosure Number: IPCOM000123879D
Original Publication Date: 1999-Jun-01
Included in the Prior Art Database: 2005-Apr-05
Document File: 1 page(s) / 39K

Publishing Venue

IBM

Related People

Slane, AA: AUTHOR

Abstract

A typical method to increase the performance of branch instructions in a processor is to use a method called delayed branches. This method allows some number (typically 1-2) of instructions located after the branch instruction to be unconditionally executed, while the branch condition is evaluated. This allows the instruction pipeline to not stall, and hence get more useful work done. The one draw back is that if no instructions can be moved into the delay slots, then a NOP (no operation) instruction must be inserted.

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

Delayed Branches with Packed Instruction Stream

   A typical method to increase the performance of branch
instructions in a processor is to use a method called delayed
branches.  This method allows some number (typically 1-2) of
instructions located after the branch instruction to be
unconditionally executed, while the branch condition is evaluated.
This allows the instruction pipeline to not stall, and hence get more
useful work done.  The one draw back is that if no instructions can
be moved into the delay slots, then a NOP (no operation) instruction
must be inserted.

   In prior designs, the extra code is not a problem because
RISC (reduced instruction set computer/cycles) processors design for
performance, not space.  However, in some designs, space is just as
important as speed due to the limited code space.  For example, code
space is an extremely valuable resource in a nano-processor with a
limited 32-64 instruction code space.

   The solution to this problem is new packed delayed branch
instructions.  They are called JMP (jump) and PJMP (packed jump).
They act like normal jump instructions for the most part.  The JMP
instruction is a normal delayed branch with a single delay slot that
is filled with a user instruction to execute.  The PJMP instruction
is the same, except that an implicit NOP is inserted in the
instruction stream and the instruction following the PJMP is not
executed immediately.
  So the following are functionally equivalent:
    jmp...