One embodiment of the present invention provides a system that selects
instructions to be executed in a computer system that supports
out-of-order execution of program instructions. The system receives
dependency information for a first instruction. This dependency
information identifies preceding instructions in the execution stream of a
program that need to complete before the first instruction can be
executed. The system divides this dependency information into a recent set
and a less recent set. The recent set includes dependency information for
a block of instructions immediately preceding the first instruction that
need to complete before the first instruction can be executed. The less
recent set includes dependency information for instructions not in the
block of instructions immediately preceding the first instruction that
need to complete before the first instruction can be executed. The system
stores the recent set of dependency information in a first store, and
stores the less recent set of dependency information in a second store.
The first store is smaller and faster than the second store so that an
update to dependency information takes less time to propagate through the
first store than the second store. In one embodiment of the present
invention, the system receives the dependency information for the first
instruction from the first store and the second store, and determines from
the dependency information if the first instruction is available to be
executed by determining whether all preceding dependencies related to the
first instruction have been satisfied. In one embodiment of the present
invention, the system selects a second instruction from instructions that
are available to be executed, and executes the second instruction.
Un mode de réalisation de la présente invention fournit un système qui choisit des instructions d'être exécuté dans un système informatique qui soutient l'exécution out-of-order des instructions de programme. Le système reçoit l'information de dépendance pour une première instruction. Cette information de dépendance identifie les instructions précédentes dans le jet d'exécution d'un programme qui doivent accomplir avant que la première instruction puisse être exécutée. Le système divise cette information de dépendance en jeu récent et un ensemble moins récent. L'ensemble récent inclut l'information de dépendance pour un bloc d'instructions juste avant la première instruction qui doivent accomplir avant que la première instruction puisse être exécutée. L'ensemble moins récent inclut l'information de dépendance pour des instructions pas dans le bloc d'instructions juste avant la première instruction qui doivent accomplir avant que la première instruction puisse être exécutée. Le système stocke l'ensemble récent d'information de dépendance dans un premier magasin, et stocke l'ensemble moins récent d'information de dépendance dans un deuxième magasin. Le premier magasin est plus petit et plus rapidement que le deuxième magasin de sorte qu'une mise à jour aux prises de l'information de dépendance moins d'heure de propager par le premier magasin que le deuxième magasin. Dans un mode de réalisation de la présente invention, le système reçoit l'information de dépendance pour la première instruction du premier magasin et du deuxième magasin, et détermine à partir de l'information de dépendance si la première instruction est disponible pour être exécutée en déterminant si toutes les dépendances précédentes liées à la première instruction ont été satisfaites. Dans un mode de réalisation de la présente invention, le système choisit une deuxième instruction à partir des instructions qui sont disponibles pour être exécutées, et exécute la deuxième instruction.