Exécution dans l’ordre vs dans le désordre : aléas, coût, IPC
Un CPU à exécution dans l’ordre émet et exécute les instructions dans l’ordre du programme. Si une instruction antérieure attend, par exemple à cause d’un défaut de cache, les instructions suivantes s’arrêtent aussi. Un CPU à exécution dans le désordre (out-of-order) analyse les dépendances, exécute d’abord les instructions prêtes et valide les résultats dans l’ordre du programme grâce au tampon de réordonnancement (ROB). Comme d’autres instructions avancent pendant les attentes, l’IPC est plus élevé, mais il faut un renommage de registres et des circuits de sélection des instructions, ce qui augmente la taille des circuits et la consommation.
| Critère | Exécution dans l’ordre | Exécution dans le désordre |
|---|---|---|
| Ordre d’émission et d’exécution | Ordre du programme | Les instructions prêtes sont exécutées en premier, dans un ordre modifié |
| Validation des résultats (retrait) | Ordre du programme | Dans l’ordre du programme, via le tampon de réordonnancement (ROB) |
| Quand une instruction antérieure attend | Les instructions suivantes s’arrêtent aussi (blocage) | Les instructions suivantes indépendantes avancent |
| Traitement des aléas de données | Transfert anticipé (forwarding) et blocages. L’ordre des instructions est confié au compilateur | En plus du transfert anticipé, le matériel ordonnance dynamiquement les instructions |
| Fausses dépendances (WAR, WAW) | L’ordre étant respecté, elles posent rarement problème | Supprimées par le renommage de registres, qui réattribue des registres physiques |
| Principaux circuits supplémentaires | Peu. Pipeline simple | Table de renommage, registres physiques, file d’émission, ROB, files de chargement et de rangement |
| Effet des défauts de cache | Important. Chaque défaut a tendance à bloquer le pipeline | D’autres instructions avancent dans une fenêtre de plusieurs centaines d’instructions, ce qui masque une partie de l’attente |
| IPC | Plus faible. À largeur d’émission égale, inférieur à l’exécution dans le désordre | Élevé. Combiné à une large émission, nettement supérieur à 1 |
| Taille des circuits et consommation | Faibles. Il est facile d’obtenir de bonnes performances par unité de surface ou de puissance | Importantes. Les circuits de sélection et le ROB augmentent la surface et la consommation |
| Domaines d’utilisation | Microcontrôleurs, petits cœurs embarqués, certains cœurs privilégiant l’efficacité énergétique, cœurs de calcul des GPU | Cœurs hautes performances des PC, serveurs et smartphones |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.