Le processeur ne *génère pas* directement des adresses logiques de la même manière qu'un générateur de nombres aléatoires produit des nombres. Au lieu de cela, l'adresse logique est une conséquence des instructions exécutées par le processeur et de la manière dont le système d'exploitation gère la mémoire. Voici une répartition :
1. Récupération et décodage des instructions : Le CPU récupère les instructions de la mémoire. Ces instructions contiennent souvent des opérandes – des données sur lesquelles l'instruction opérera. Les opérandes peuvent être spécifiés en utilisant :
* Enregistrer l'adressage indirect : L'adresse de l'opérande est stockée dans un registre CPU. La CPU utilise le contenu du registre comme adresse logique.
* Adressage immédiat : L'opérande lui-même fait partie de l'instruction. Aucun calcul d'adresse n'est nécessaire.
* Adressage direct : L'instruction spécifie directement l'adresse logique de l'opérande.
* Adressage indirect : L'instruction spécifie un emplacement mémoire qui *contient* l'adresse de l'opérande. Le CPU récupère l'adresse de cet emplacement mémoire pour obtenir l'adresse logique.
* Adressage de base+décalage : Une adresse de base (souvent provenant d'un registre) est ajoutée à un décalage (spécifié dans l'instruction) pour calculer l'adresse logique. Ceci est très courant pour accéder à des éléments ou à des structures de tableau.
* Adressage indexé : Similaire à base+offset, mais le décalage provient d'un registre d'index. Utile pour les accès aux tableaux.
2. Compteur de programme (PC) : Le PC détient l'adresse de la prochaine instruction à exécuter. Il s'agit d'une adresse logique implicitement utilisée par le mécanisme de récupération d'instructions du processeur. Le PC est incrémenté après chaque récupération d'instruction.
3. Implication du système d'exploitation (mémoire virtuelle) : La situation devient plus complexe lorsque la mémoire virtuelle est impliquée. Dans ce cas, le programme ne voit pas les adresses physiques de la mémoire; il voit les adresses logiques (également appelées adresses virtuelles). Le CPU génère une *adresse logique* basée sur l'instruction décrite ci-dessus.
* Unité de gestion de la mémoire (MMU) : La MMU est un composant matériel qui traduit l'adresse logique générée par le CPU en une adresse physique dans la RAM. Cette traduction implique la recherche de l'adresse logique dans les tables de pages, qui sont gérées par le système d'exploitation. Ces tableaux mappent les pages logiques aux trames physiques.
* Segmentation : Certains systèmes utilisent la segmentation en plus de la pagination. La segmentation divise la mémoire en segments logiques, chacun avec sa propre adresse de base et sa propre limite. La CPU produit une adresse logique en tant que sélecteur de segment et un décalage au sein du segment. La MMU les utilise ensuite pour trouver l'adresse physique.
Essentiellement, le processeur ne « génère » pas d’adresse logique dans un processus autonome. Il utilise le mode d'adressage de l'instruction pour calculer l'adresse logique (souvent avec l'aide de registres) qui pourrait ensuite être traduite par la MMU en une adresse physique. Le processus est dicté par l'instruction en cours d'exécution et par le schéma de gestion de la mémoire du système.
|