Browse Prior Art Database

Solving Timing Problems at Execution Unit Boundaries

IP.com Disclosure Number: IPCOM000120550D
Original Publication Date: 1991-May-01
Included in the Prior Art Database: 2005-Apr-02
Document File: 3 page(s) / 72K

Publishing Venue

IBM

Related People

Fry, RE: AUTHOR [+2]

Abstract

A common timing problem in microprocessors today is a logical path referred to as the Execute/Hold Execute path. In this path, one functional unit is trying to start execution of the next operation when the execution unit may be holding the previous operation. This path is shown by the single lined arrows in Fig. 1.

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

Solving Timing Problems at Execution Unit Boundaries

      A common timing problem in microprocessors today is a
logical path referred to as the Execute/Hold Execute path. In this
path, one functional unit is trying to start execution of the next
operation when the execution unit may be holding the previous
operation.  This path is shown by the single lined arrows in Fig. 1.

      This article describes a method of eliminating this critical
path by making this interface (execute decision - execution unit)
asynchronous.

      To do this, a latch is introduced into the hold_instruction
path and a second register is used to "back-up" the execution
register.  The modified implementation is shown in Fig. 2.

      Now, in this implementation, the execute logic is controlled by
the latched version of the hold signal coming from the execution
unit.  This approximately cuts the critical path in half.  Meanwhile,
the execution unit itself selects which instruction it should
execute.  If hold_instr=b'0' (i.e., it is not holding the instruction
currently in execution), it will select the next instruction that is
being held in the execution register.  If, however, hold_instr=b'1'
(i.e., the instruction in execute is being held), the old/held
instruction will be selected again, this time from the back-up
register.  The execution register will be allowed to proceed to the
next instruction, since it will not see the hold_instr until the next
cycle.  Therefore, wh...