Segmentation Mémoire dans le 8086 : Pourquoi les Segments Chevauchants sont Impossibles
L'architecture mémoire segmentée du microprocesseur Intel 8086 empêche explicitement le chevauchement des segments, un choix de conception qui simplifie la gestion mémoire et élimine les erreurs de segmentation courantes dans des architectures plus flexibles.
Fonctionnement de la Segmentation 8086
Le 8086 utilise un bus d'adresse 20 bits (espace d'adressage 1 Mo) mais seulement des registres 16 bits. Pour combler cet écart, il combine un registre de segment 16 bits (décalé de 4 bits vers la gauche) avec un registre d'offset 16 bits pour former une adresse physique 20 bits :
Adresse Physique = (Registre Segment × 16) + Registre Offset
Pourquoi le Chevauchement est Structurellement Impossible
Chaque registre de segment (CS, DS, SS, ES) définit une fenêtre distincte de 64 Ko dans l'espace d'adressage de 1 Mo. Bien que différentes combinaisons segment:offset puissent mathématiquement résoudre vers la même adresse physique (aliasing), l'architecture traite chaque segment comme un bloc logiquement indépendant, autocontenu de 64 Ko. Le processeur ne maintient pas de métadonnées de frontières de segment ni de détection de chevauchement — il calcule simplement les adresses à la demande.
Rationale de Conception
- Simplicité : Pas de tables de descripteurs de segment, vérifications de limites, ou logique de validation de chevauchement nécessaires.
- Performance : Le calcul d'adresse est une seule opération décalage-et-addition.
- Compatibilité : Permettait aux logiciels 16 bits d'accéder à 1 Mo mémoire avec modifications minimales.
- Déterminisme : Disposition mémoire prévisible sans surcharge de gestion complexe.
Implications Pratiques
Les programmeurs doivent manuellement s'assurer que les segments ne se chevauchent pas involontairement de manière à corrompre les données. Le chevauchement peut être utilisé intentionnellement (ex: code accédant au segment de données), mais c'est une technique de programmation délibérée, pas une fonctionnalité matérielle. Le 80286 et ultérieurs ont introduit le mode protégé avec segmentation basée sur descripteurs qui empêche formellement le chevauchement non autorisé.
Point Clé
Le modèle de segmentation du 8086 privilégie la simplicité et la compatibilité descendante plutôt que la protection mémoire. Les segments chevauchants au sens moderne — isolation imposée matériellement avec détection de chevauchement — n'existent tout simplement pas dans cette architecture.
