Modes d'adressage
Les modes d'adressage sont les règles selon lesquelles une instruction spécifie l'emplacement de ses opérandes — dans un registre, intégrés en tant qu'immédiats, ou en mémoire à une adresse calculée à partir de registres et de décalages.
Definition
Un mode d'adressage est une méthode spécifiée par une instruction pour déterminer l'emplacement d'un opérande, allant des valeurs directement contenues dans les registres ou l'instruction elle-même aux adresses calculées à partir de registres de base, de registres d'index et de décalages.
Scope
Ce sujet couvre les différentes manières dont les opérandes sont nommés et localisés : immédiat, registre, indirect par registre, base-plus-déplacement, indexé, relatif au compteur ordinal (PC-relative), et des modes calculés plus complexes. Il aborde l'impact des modes d'adressage sur la taille du code, le nombre d'instructions et la complexité matérielle. Il exclut la manière dont les instructions sont encodées en bits (formats et encodage des instructions) et la traduction virtuel-physique du système (mémoire virtuelle et pagination).
Core questions
- Comment chaque mode d'adressage calcule-t-il l'adresse effective ou la valeur d'un opérande ?
- Quels modes d'adressage sont les plus fréquemment utilisés dans les programmes réels, et pourquoi ?
- Comment des modes d'adressage plus riches réduisent-ils le nombre d'instructions au prix d'une complexité matérielle et de décodage accrue ?
- Pourquoi les architectures de type load-store limitent-elles l'accès à la mémoire à quelques modes simples ?
Key concepts
- adressage immédiat
- adressage par registre
- adressage indirect par registre
- adressage base-plus-déplacement
- adressage indexé
- adressage relatif au compteur ordinal (PC-relative)
- calcul de l'adresse effective
- restriction load-store
Mechanisms
Chaque mode d'adressage définit la manière dont le processeur dérive un opérande. Les opérandes immédiats sont encodés dans l'instruction ; les opérandes de registre sont lus à partir du fichier de registres ; les opérandes en mémoire ont une adresse effective calculée en ajoutant un registre de base, un index mis à l'échelle facultatif et un décalage. L'adressage relatif au compteur ordinal (PC-relative) forme des adresses relatives au compteur ordinal, ce qui prend en charge le code indépendant de la position et les cibles de branchement.
Clinical relevance
Les modes d'adressage influencent la manière dont les compilateurs génèrent le code : le mode base-plus-déplacement correspond naturellement aux champs de structure et aux variables de pile, les modes indexés à l'accès aux tableaux, et l'adressage relatif au compteur ordinal (PC-relative) aux exécutables indépendants de la position et aux bibliothèques partagées. Les architectures RISC de type load-store maintiennent délibérément l'adressage mémoire simple pour faciliter le pipelining, tandis que les machines CISC offrent des modes plus riches pour la densité du code.
History
Les architectures anciennes et CISC ont accumulé de nombreux modes d'adressage élaborés, y compris les formes indirectes en mémoire et à auto-incrémentation. Des études empiriques sur l'utilisation des instructions ont montré qu'un petit ensemble de modes simples représente la plupart des accès, ce qui a motivé la décision des architectures RISC de ne prendre en charge qu'une poignée de modes et de limiter l'accès à la mémoire aux instructions de chargement (load) et de stockage (store).
Key figures
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- Pourquoi les architectures RISC prennent-elles en charge si peu de modes d'adressage ?
- Des études ont montré que les programmes utilisent majoritairement un petit nombre de modes simples. La restriction de l'accès à la mémoire aux modes indirect par registre et base-plus-déplacement permet de maintenir le pipeline simple et le calcul de l'adresse effective rapide, tandis que les compilateurs synthétisent des motifs d'accès plus complexes à partir de ces primitives.
- À quoi sert l'adressage relatif au compteur ordinal (PC-relative) ?
- L'adressage relatif au compteur ordinal (PC-relative) calcule une adresse comme un décalage par rapport au compteur ordinal. Il est utilisé pour les cibles de branchement et de saut et pour l'accès aux données proches, permettant un code indépendant de la position qui s'exécute correctement quel que soit son emplacement en mémoire.