Je lisais cet article sur l'informatique 64 bits, et il mentionne:
Par exemple, l'architecture AMD64 en 2011 autorisait 52 bits pour la mémoire physique et 48 bits pour la mémoire virtuelle
Je pense qu'il serait plus logique de permettre plus de mémoire virtuelle que de mémoire physique, alors pourquoi est-ce vraiment l'inverse?
Question bonus: que signifie "autoriser" 52 ou 48 bits sur une architecture 64 bits? À quoi servent les autres bits?
Réponses:
Voici une image d'un tableau de pages AMD64 (extrait du Guide du programmeur d'architecture AMD, Vol. 2, Rev 3.23, 2013, page 132).
La taille "naturelle" d'une page dans l'architecture AMD64 est de 2 12 = 4096 octets. (Il existe des modes dans lesquels vous pouvez avoir 2 pages de 21 = 2 Mo, mais nous allons les ignorer pour l'instant.)
Chaque entrée de table de page (PTE) (ou, selon le niveau appelé PDE, PDPE ou PML4E) est de 64 bits = 2 3 octets. Il y a donc 2 9 entrées par page. Ainsi, 4 niveaux de table de pages vous permettent d'obtenir 4x9 + 12 = 48 bits d'adresse virtuelle par processus. Marcher sur la table des pages coûte cher, donc ils ne s'étendent pas à 5 ou 6 niveaux à moins que / jusqu'à ce qu'il y ait une demande des consommateurs.
Je ne sais pas pourquoi ils ont décidé d'une limite d'adresse physique de 52 bits. Cela peut être étendu jusqu'à 63 bits à l'avenir. Aux prix d'octobre 2013 (environ 1US $ / Gigabit pour les puces 4Gbit), il coûterait plus de 32000000,00 $ US pour construire une mémoire de 2 52 octets, il faudra donc un certain temps avant qu'il n'y ait une demande importante pour augmenter la limite d'adresse physique. Il y a toutes sortes de raisons pour lesquelles vous voulez garder les adresses physiques aussi petites que possible: les balises TLB et cache doivent contenir des adresses physiques, par exemple.
Ce n'est pas nécessairement à l'envers qu'il y a plus de mémoire physique que virtuelle. La mémoire virtuelle est par processus tandis que la mémoire physique est partagée par tous les processus. Ainsi, un serveur avec des adresses virtuelles 48 bits et 2 52 octets de mémoire pourrait prendre en charge 16 processus simultanés tout en garantissant de ne pas avoir à échanger.
la source
Quelques points à considérer, la RAM physique coûte cher. Bien sûr, 16 Go sont moins chers maintenant que 4 Go étaient il y a seulement quelques années, mais 2 ^ 64 (16 exaoctets) ridiculement grands.
Les extensions AMD de x86 pour x64 "ont permis" jusqu'à 2 ^ 52 en limitant les registres . Cela fait deux choses, réduit le coût des processeurs et améliore les performances. Plus de registres non utilisés signifient qu'il y a beaucoup d'espace vide qui doit encore être pris en compte lors des opérations.
Et, au cas où vous n'êtes pas un mathématicien ... La différence entre trois tailles est énorme! Je ne suis pas un gourou des mathématiques, mais en décimal, 52 bits représentent environ 0,02% de 64 bits. 48 bits est 6% de 52. (quelqu'un vérifie mes mathématiques?)
Quant à savoir pourquoi AMD a autorisé plus de RAM physique que virtuelle, l'article indique que c'est parce qu'AMD pensait aux serveurs. Les serveurs ont besoin de grandes quantités de RAM physique. La RAM virtuelle est trop lente pour prendre en charge les applications serveur moyennes pour des centaines ou des milliers d'employés.
Mes propres pensées: Nous avons laissé le temps où la RAM était petite et les disques durs devaient supporter la RAM. Le prix de la RAM est tombé à un point où le personnage moyen peut y mettre plus de suffisamment de RAM. Prenez des applications typiques, comme Office qui nécessite 1 à 2 Go de RAM. Il y a 7 ans, mon ordinateur pouvait gérer cela. Bien qu'avec des vitesses de lecture et d'écriture sur le disque, j'espère que je n'ai jamais eu à récupérer un fichier de 7 Go de la mémoire virtuelle (en utilisant l'ancienne philosophie PM * 2.5).
Je peux également supposer qu'AMD voulait laisser de la place aux registres qui utilisent les registres de RAM physiques, comme la RAM sur les GPU intégrés.
la source