« Fonctionnement d'un ordinateur/Exécution dans le désordre » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 34 :
===Compactage===
 
À chaque cycle, les instructions décodées vont être ajoutées dans la fenêtre d'instruction. Lors de cet ajout, ondans nedes doitentrées pasvides. écraserVu que les instructions déjàquittent présentes, ce qui demande d'ajouter les nouvelles instructionscelle-ci dans lesle entrées vides. Ordésordre, ces vides sont dispersés dans la fenêtre d'instruction, vuce quequi lespose instructionsproblème quittentpour celle-ci dans le désordre : on ne sait pasdéterminerajouterplacer les nouvelles instructions. La solution la plus triviale consiste à conserver une liste des vides, liste mise à jour à chaque insertion ou émission d'instruction. Une autre solution consiste à éliminer les vides en compactant la fenêtre d'instruction à chaque cycle d'horloge. Des circuits se chargent de détecter les vides et de regrouper les instructions en un unique bloc. Il faut signaler que certaines processeurs arrivent à se passer de cette étape de compactage, mais au prix de fenêtres d'instruction nettement plus complexes.
 
Autre problème : quand il faut choisir quelle instruction émettre, il y a toujours plusieurs candidats. Si on choisit mal, des instructions restent en attente trop longtemps parce que d'autres instructions plus jeunes leur passent devant. Pour éviter cela, les instructions les plus vielles, les plus anciennes, sont prioritaires. Pour cela, on peut utiliser une FIFO un peu spéciale pour la fenêtre d'instruction. Si les ajouts d'instruction se font dans l'ordre, les instructions ne quittent pas forcément la fenêtre d'instruction dans l'ordre imposé par une FIFO : les instructions restent triées dans leur ordre d'ajout, même s'il y a des vides entre elles. Dans ces condition, il est préférable que le compactage conserve l'ordre FIFO des instructions. Dans ces conditions, l'instruction la plus ancienne est celle qui est située à l'adresse la plus faible : le circuit de sélection peut donc être fabriqué avec des encodeurs, et est relativement simple.
 
Pour éliminer les vides, le contenu de la fenêtre d'instruction est compacté à chaque cycle d'horloge. Des circuits se chargent de détecter les vides, et de copier les instructions de manière à les regrouper en un unique bloc. Cette copie conserve l'ordre d'ajout des instructions : les instructions sont toujours triées dans l'ordre d'ajout/d'ancienneté. Dans ces conditions, l'instruction la plus ancienne est celle qui est située à l'adresse la plus faible : le circuit de sélection peut donc être fabriqué avec des encodeurs, et est relativement simple. Il faut signaler que certaines processeurs arrivent à se passer de cette étape de compactage, mais au prix de fenêtres d'instruction nettement plus complexes.
 
==Un problème de latence…==