Browse Prior Art Database

Combined Circular Dispatch and Completion Queue with Resource Sharing

IP.com Disclosure Number: IPCOM000117916D
Original Publication Date: 1996-Jul-01
Included in the Prior Art Database: 2005-Mar-31
Document File: 2 page(s) / 61K

Publishing Venue

IBM

Related People

Loper, A: AUTHOR [+3]

Abstract

Many of today's microprocessors have dispatch queues where instructions are held until the execution units that are to execute the instructions are free to do so. These microprocessors also have completion queues; when an instruction has been executed by the execution unit, the unit signals the completion queue to "complete" the executed instruction by writing the results from the execution unit to the architected target register. Once the instruction is "complete", it can be removed from the completion queue.

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

Combined Circular Dispatch and Completion Queue with Resource Sharing

      Many of today's microprocessors have dispatch queues where
instructions are held until the execution units that are to execute
the instructions are free to do so.  These microprocessors also have
completion queues; when an instruction has been executed by the
execution unit, the unit signals the completion queue to "complete"
the executed instruction by writing the results from the execution
unit to the architected target register.  Once the instruction is
"complete", it can be removed from the completion queue.

      Because execution units can be pipelined, many times the
completion queue can become full thereby stalling the dispatch of
subsequent instructions.  Once an instruction can be completed and
removed from the bottom of the completion queue, the dispatch unit
can then dispatch another instruction (provided that the target
execution unit is not busy).

      The present invention uses a combined, circular
dispatch/completion queue where pointers distinguish the
"Top-of-Dispatch" (TD) queue, "Bottom-of-Dispatch/Top-of-Completion"
(BD/TC) queue, and "Bottom-of-Completion" (BC) queue.  In this
circular queue, no instructions are actually moved between queue
stages; instead, the pointers are updated.  As instructions are added
to the top of the dispatch queue, the TD pointer is updated to move
up one position.  As instructions are dispatched from the bottom of
the dispatch q...