46/48 adresses virtuelles physiques

0

Certains processeurs prennent en charge les adresses physiques de 46 bits et les adresses virtuelles de 48 bits. Pourquoi 46 bits, pourquoi 48 bits? Est-ce que x86 ne supporte pas les adresses 64 bits? Pourquoi les adresses virtuelles n'ont-elles pas la même longueur que les adresses physiques?

Les applications doivent-elles être configurées pour utiliser une adresse physique / virtuelle 46/48? La plupart des applications le prennent-il en charge?

Kiriloff
la source

Réponses:

2

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
1

Les 44 bits ont été utilisés dans la version Windows 64 bits jusqu'à Windows 8.1 (avant le correctif cumulatif de novembre 2014 ) pour faciliter la gestion de la mémoire. Depuis la mise à jour Windows 8.1 de novembre 2014 ou Windows 10, Windows utilise désormais 64 bits pour les adresses virtuelles . Avec cet espace d'adressage plus grand, il est possible de sécuriser davantage Windows en fournissantControl Flow Guard (CFG)

magicandre1981
la source