Espace d'adressage système 16 bits : 64 Kio expliqués
Un système avec des **adresses 16 bits** peut générer 216 adresses uniques = **65 536 (64 Kio)**. Chaque adresse référence généralement **un octet** (8 bits), donc l'espace mémoire directement adressable total est de **64 Kio**.
Découpage espace d'adressage
| Plage (Hex) | Plage (Décimal) | Taille | Usage typique (8086/8088 Real Mode classique) |
|---|---|---|---|
| 00000–0FFFF | 0–65 535 | 64 Kio | Espace d'adressage entier |
| 00000–003FF | 0–1 023 | 1 Kio | Table vecteurs d'interruption (IVT) — 256 vecteurs × 4 octets |
| 00400–004FF | 1 024–1 279 | 256 o | Zone données BIOS (BDA) |
| 00500–7FFFF | 1 280–524 287 | ~512 Kio* | **Mémoire conventionnelle** (apps DOS, TSRs, drivers) — *en fait limite 640 Kio |
| 80000–9FFFF | 524 288–655 359 | 128 Kio | RAM vidéo (VGA: A0000–BFFFF), ROMs option (C0000–DFFFF), Extension BIOS |
| A0000–FFFFF | 655 360–1 048 575 | 384 Kio | Zone mémoire haute (UMA) — BIOS système (F0000–FFFFF), Adaptateurs |
*Note : L'adressage *segmenté* 16 bits (segment:offset) permet adresses physiques 20 bits (1 Mio) sur 8086/8088. Adressage 16 bits pur plat = 64 Kio.
Segmentation : Franchir la barrière des 64 Kio
Le 8086 utilise **Segment:Offset** (16 bits chacun) → Adresse physique = (Segment × 16) + Offset. Cela donne **adressage 20 bits (1 Mio)**.
- Segment Code (CS):IP → Récupération instructions.
- Segment Données (DS):SI/DI → Accès données.
- Segment Pile (SS):SP → Opérations pile.
- Segment Extra (ES):DI → Opérations chaînes, pointeurs far.
Segments chevauchants permettent fenêtres multiples de 64 Kio dans l'espace 1 Mio.
Techniques gestion mémoire (Au-delà 1 Mio)
- EMS (Expanded Memory Spec / LIM 4.0) : Pages 16 Kio commutées en fenêtre UMA (page frame). Jusqu'à 32 Mio (80386+).
- XMS (Extended Memory Spec) : HIMEM.SYS gère >1 Mio sur 286+ (mode protégé). VCPI/DPMI pour extenders DOS.
- Pagination (386+) : Pages 4 Kio, tables pages, registre CR3 → 4 Gio virtuel (32 bits).
- Segmentation (Mode Protégé) : Tables descripteurs (GDT/LDT), sélecteurs, anneaux privilèges (0-3).
Contexte moderne
- MCU 16 bits (MSP430, AVR, PIC24, STM32F0) : Plat 64 Kio ou bancé (MSP430X = 20 bits, 1 Mio).
- Bootloaders / Firmware : Tournent souvent en mode réel 16 bits initialement (x86 BIOS, UEFI CSM).
- DOS / Rétro-informatique : Encore pertinent pour legacy embarqué, émulateurs, éducation.
En résumé : Bus d'adresses 16 bits = espace 64 Kio octet-adressable. Segmentation, pagination, bank switching sont les hacks historiques pour s'en échapper. 64 bits moderne = 264 octets (16 Eio) —virtuellement infini pour l'instant.
