# Extension d'adresse physique

La technique d'extension d'adresse physique (EAP) ou Physical Address Extension (PAE) est une fonctionnalité des processeurs x86 qui permet d'adresser jusqu'à 64 Gio de mémoire physique sur des systèmes 32 bits (autrement limités à 4 Gio), pourvu que le système d'exploitation le supporte.

## Description

La PAE est fournie par les processeurs Intel Pentium Pro et suivants (incluant tous les processeurs de la série Pentium à l'exception des Pentium M disposant d'un bus 400 MHz), ainsi que par des processeurs compatibles tels ceux d'AMD. Le drapeau « PAE » du champ d'identification du processeur CPUID permet aux systèmes d'exploitation de déterminer si le processeur supporte cette fonctionnalité.
En externe, le processeur possède quatre lignes (physiquement quatre broches sur le processeur) d'adresse supplémentaires utilisées pour adresser la mémoire additionnelle, et en interne il contient des tables de pages de 36 bits.
Cependant, les applications utilisent encore les instructions 32 bits avec des adresses de 32 bits et un modèle de mémoire limité à 4 Gio. Le système d'exploitation utilise la PAE pour faire correspondre à cet espace d'adresses de 32 bits la totalité des 64 Gio de mémoire. Cette association peut être (et c'est souvent le cas) différente pour chaque processeur d'un système multiprocesseur. Ainsi les 64 Gio sont utilisables bien qu’une application seule ne puisse pas accéder à autant de mémoire.

## Techniques complémentaires

Pour une application nécessitant plus de 4 Gio de mémoire, d'autres mécanismes peuvent être fournis par le système d'exploitation en complément du support de la PAE. Sur Microsoft Windows ce mécanisme est appelé Address Windowing Extensions (en) (AWE), tandis que sur les systèmes Unix une variété d'astuces sont utilisées, telle que recourir à mmap pour associer des régions d'un fichier à l'espace mémoire au besoin, il n'existe pas de méthode standard néanmoins.

## Support par les systèmes d'exploitation
### Windows

Avec les systèmes Windows 32 bits sans PAE, seule une fraction des 4 Gio de mémoire adressable (2 Gio par défaut, jusqu’à 3 Gio en modifiant le fichier boot.ini) est disponible pour les processus utilisateur, le reste étant réservé au noyau.
Par conséquent, sur ces systèmes, non seulement la PAE permettait d'utiliser jusqu'à 64 Gio de mémoire physique, mais elle augmentait aussi l’espace total disponible pour les applications utilisateur. De plus, couplée à la fonctionnalité d’Address Windowing Extensions (en) (AWE), elle augmentait l’espace adressable par chaque application compatible AWE (qui restait limité à 3 Gio pour les applications non compatibles).
Windows XP a implémenté la PAE jusqu'au Service Pack 1, après quoi le support a été abandonné. La PAE sur ce système peut toutefois rester active mais uniquement pour permettre l'utilisation du mode de prévention d'exécution des données (DEP).
Les systèmes 32 bits ultérieurs (dont Windows 7 32 bits) ne supportent plus la PAE et ne reconnaissent donc qu’au plus 3,25 Gio de mémoire physique. Microsoft recommande de plutôt utiliser un système 64 bits si besoin.
Quand la PAE était supportée, son emploi dépendait de l’achat d’une licence spécifique (modification du noyau ou version serveur du système d’exploitation).

### Linux

Le noyau Linux supporte totalement la PAE depuis la version 2.3.23 (octobre 1999), sans restriction sur la quantité de mémoire adressable (64 Gio).
La distribution Ubuntu a cessé d’être installable sur un processeur sans PAE à partir de la version 12.04 LTS sortie en 2012 (sauf pour Xubuntu 12.04 et Lubuntu 12.04). Cependant il reste possible d'installer la version 11.10 puis de la mettre à jour en ligne vers 12.04. Il est encore possible de forcer l'activation de la fonctionnalité qui est parfois disponible sans être annoncée comme telle (instruction forcepae)$^,$.