La limite d'adresses virtuelles sur 48 bits pour x86-64 est basée sur la profondeur de la hiérarchie des tables de pages. Avec 4 pages KiB et des entrées de table de pages 64 bits, chaque niveau de la table de pages utilise neuf bits. L'utilisation de trois recherches aurait fourni des adresses virtuelles 39 bits, ce qui a probablement été reconnu comme une solution à trop court terme, car l'ajout de niveaux nécessite une prise en charge du système d'exploitation. L'utilisation de quatre recherches fournit un espace d'adressage virtuel de 48 bits.
L'ajout de niveaux a tendance à augmenter la latence d'un échec TLB (bien que des noeuds intermédiaires puissent également être mis en cache pour réduire la latence s'il y a un hit dans ces caches) car les recherches sont dépendantes.
En ce qui concerne la limite d'adresse physique, l'entrée de la table de pages est de 64 bits. Elle contient les autorisations d'accès et d'autres informations (9 bits: présent, lecture / écriture, utilisateur / superviseur, écriture au niveau de la page, verrouillage du cache au niveau de la page, accès , dirty, PAT et global). Les entrées de table de pages x86-64 sont actuellement définies pour inclure 14 bits pouvant être utilisés par le système d'exploitation [9:11, 52:62] et sont ignorés par le matériel. Cela laisse 41 bits disponibles pour spécifier un numéro de page qui (pour 4 pages KiB) prend en charge les adresses physiques 53 bits.
Le choix de prendre en charge un espace d'adressage physique plus petit que celui pris en charge par le format d'entrée de table de pages est spécifique à l'implémentation. La fourniture d'un espace d'adressage physique plus grand que l'espace d'adressage virtuel soulève des problèmes pour les systèmes d'exploitation, en particulier pour ceux qui mappent l'intégralité de l'espace d'adressage physique dans l'espace d'adressage virtuel.
Pour un processeur donné avec un contrôleur de mémoire intégré, le nombre de canaux de mémoire et les types de mémoire pris en charge sont fixes, ce qui crée une contrainte importante sur la capacité de mémoire maximale. L'ajout de puces avec des contrôleurs de mémoire pose des problèmes de dimensionnement, notamment en ce qui concerne le temps de latence. (Les systèmes avec des facteurs NUMA importants peuvent être utiles mais de tels systèmes ne constituent pas une cible significative pour les x86-64.)
L'augmentation de l'espace d'adressage physique augmente la taille des balises de cache (dans les caches étiquetés physiquement courants) et introduit d'autres frais généraux. Si les adresses ne sont pas utiles pour les utilisations attendues du système, ces coûts réduiraient directement la rentabilité. (Il peut également y avoir une certaine incitation à limiter la capacité pour encourager les futures mises à niveau.)
Paul A. Clayton
la source