A method, processor architecture, computer program product, and data
processing system for determining when an instruction in a pipelined
processor should be completed is provided. As each instruction is issued
to an execution unit, an entry for that instruction is placed within a
"finish pipe," which consists of a series of consecutively numbered
stages. Each clock cycle, the entries in the finish pipe advance one
stage. When an entry has reached the stage corresponding to the latency of
its associated execution unit, it becomes mature.
Each clock cycle, the finish pipe is scanned to find the entry having the
highest-numbered stage of any entry in the finish pipe. If that entry is
mature, it is removed from the finish pipe and the instructions associated
with that entry is allowed to complete. If not, the entry simply advances
along with the other entries and the pipe rescanned in the next cycle.
Eine Methode, eine Prozessorarchitektur, ein Computerprogrammprodukt und ein Datenverarbeitungssystem für die Bestimmung, wann eine Anweisung in einem durch Rohre geleiteten Prozessor durchgeführt werden sollte, wird zur Verfügung gestellt. Während jede Anweisung zu einer Durchführung Maßeinheit herausgegeben wird, wird eine Eintragung für diese Anweisung innerhalb eines "Enderohres," gesetzt, das aus einer Reihe nacheinander genumerierten Stadien besteht. Jeder Taktgeberzyklus, die Eintragungen im Enderohr rücken ein Stadium vor. Wenn eine Eintragung das Stadium erreicht hat, das der Latenz seiner verbundenen Durchführung Maßeinheit entspricht, wird sie fällig. Jeder Taktgeberzyklus, das Enderohr wird abgelichtet, um die Eintragung zu finden, das hoch-numerierte Stadium jeder möglicher Eintragung im Enderohr zu haben. Wenn diese Eintragung fällig ist, wird sie vom Enderohr entfernt und die Anweisungen, die mit dieser Eintragung verbunden sind, wird durchführen lassen. Wenn nicht, rückt die Eintragung einfach zusammen mit den anderen Eintragungen und dem Rohr vor, die im folgenden Zyklus wiederabgelichtet werden.