Pour répondre à la question initiale : Il n'y avait pas besoin d'ajouter plus de 48 Bits de PA.
Les serveurs ont besoin d'une quantité maximale de mémoire, alors essayons de creuser davantage.
1) La plus grande configuration de serveur (couramment utilisée) est un système à 8 sockets. Un système 8S n'est rien d'autre que 8 processeurs de serveur connectés par une interconnexion cohérente à haute vitesse (ou simplement, un "bus" à haute vitesse) pour former un seul nœud. Il existe des clusters plus grands, mais ils sont rares. Nous parlons ici des configurations les plus courantes. Notez que dans le monde réel, le système à 2 sockets est l'un des serveurs les plus couramment utilisés, et le système à 8 sockets est généralement considéré comme très haut de gamme.
2) Les principaux types de mémoire utilisés par les serveurs sont la mémoire DRAM ordinaire adressable par octet (par exemple, la mémoire DDR3/DDR4), la mémoire MMIO (Memory Mapped IO) (comme la mémoire utilisée par une carte d'extension), ainsi que l'espace de configuration utilisé pour configurer les périphériques présents dans le système. Le premier type de mémoire est celui qui est généralement le plus grand (et qui nécessite donc le plus grand nombre de bits d'adresse). Certains serveurs haut de gamme utilisent également une grande quantité de MMIO, en fonction de la configuration réelle du système.
3) Supposons que chaque CPU de serveur puisse accueillir 16 DIMM DDR4 dans chaque emplacement. Avec une taille maximale de DIMM DDR4 de 256 Go. (Selon la version du serveur, ce nombre de DIMM possibles par socket est en réalité inférieur à 16 DIMM, mais continuez à lire pour les besoins de l'exemple).
Chaque socket peut donc théoriquement disposer de 16*256GB=4096GB = 4 TB. Pour notre exemple de système 8S, la taille de la DRAM peut atteindre un maximum de 4*8= 32 TB. Cela signifie que le nombre maximum de bits nécessaires pour adresser cet espace DRAM est de 45 (=log2 32TB/log2 2).
Nous n'entrerons pas dans les détails des autres types de mémoire (MMIO, MMCFG, etc.), mais ce qu'il faut retenir, c'est que le type de mémoire le plus "exigeant" pour un système à 8 sockets avec les plus grands types de DIMM DDR4 disponibles aujourd'hui (DIMM de 256 Go) n'utilise que 45 bits.
Pour un système d'exploitation qui supporte 48 bits (WS16 par exemple), il reste (48-45=) 3 bits. Ce qui signifie que si nous utilisons les 45 bits inférieurs uniquement pour 32 To de DRAM, il nous reste 2^3 fois la mémoire adressable qui peut être utilisée pour MMIO/MMCFG pour un total de 256 To d'espace adressable.
Donc, pour résumer : 1) 48 bits d'adresse physique, c'est beaucoup de bits pour prendre en charge les plus grands systèmes d'aujourd'hui qui sont "entièrement chargés" avec de copieuses quantités de DDR4 et aussi beaucoup d'autres dispositifs d'E/S qui demandent de l'espace MMIO. 256 To pour être exact.
Notez que cet espace d'adressage de 256 To (=48bits d'adresse physique) n'inclut PAS les lecteurs de disques tels que les lecteurs SATA car ils ne font PAS partie de la carte d'adressage, mais uniquement la mémoire adressable par octet et exposée au système d'exploitation.
2) Le matériel de l'unité centrale peut choisir d'implémenter 46, 48 ou > 48 bits en fonction de la génération du serveur. Mais un autre facteur important est de savoir combien de bits le système d'exploitation reconnaît. Aujourd'hui, WS16 supporte des adresses physiques de 48 bits (=256 TB).
Pour l'utilisateur, cela signifie que, même s'il dispose d'un gros processeur de serveur ultra moderne capable de prendre en charge >48 bits d'adressage, s'il exécute un système d'exploitation qui ne prend en charge que 48 bits de PA, il ne peut tirer parti que de 256 To.
3) Dans l'ensemble, il y a deux facteurs principaux pour profiter d'un nombre plus élevé de bits d'adresse (= plus de capacité de mémoire).
a) Combien de bits le HW de votre CPU supporte-t-il ? (Cela peut être déterminé par l'instruction CPUID dans les CPU Intel).
b) Quelle version de système d'exploitation utilisez-vous et combien de bits de PA reconnaît-il/supporte-t-il ?
Le minimum de (a,b) déterminera finalement la quantité d'espace adressable dont votre système peut profiter.
J'ai rédigé cette réponse sans examiner en détail les autres réponses. De même, je n'ai pas approfondi les nuances de MMIO, MMCFG et l'ensemble de la construction de la carte d'adresses. Mais j'espère que cela vous aidera.
Merci, Anand K Enamandram, Architecte de plate-forme de serveur Intel Corporation
19 votes
Le livre devait parler spécifiquement de l'implémentation actuelle de l'architecture AMD64 (x86-64). Seuls les 48 bits de poids faible sont utilisés. Il ne s'agit pas d'une limitation matérielle, cependant - tous les 64 bits sont disponibles.
13 votes
C'est toujours une bonne idée d'identifier le livre.
1 votes
Je suppose que les lignes d'adresses physiques ne sont pas libres (il faut au moins 16 broches supplémentaires pour le processeur). Et je ne connais pas encore de matériel capable de remplir un espace de 48 bits avec des puces de RAM physique sur le même processeur. Lorsque cela deviendra possible, je suis sûr qu'AMD ajoutera les 16 broches manquantes :)
0 votes
@Cody : Je sais ce que vous voulez dire, mais n'est-ce pas exactement une limitation matérielle, si elle est spécifique à l'implémentation actuelle de l'AMD64 ;)
8 votes
Même,
The 32-bit processors have 2^32 possible addresses
n'est pas nécessairement vrai, il peut exister des processeurs 32 bits avec seulement 24 "broches" pour l'adressage de la mémoire. Par exemple, le 68EC020 (version 68020 moins chère) est un processeur 32 bits mais avec 24 bits pour l'adressage de la mémoire.28 votes
Il y a un problème très réel avec l'adressage physique 64 bits, la taille des pages de la mémoire virtuelle est trop petite. Il en résulte d'énormes répertoires de pages et des vidages de cache TLB extrêmement coûteux à chaque changement de contexte. Passer de 4KB à 4MB est une option, mais elle est très incompatible avec les systèmes d'exploitation actuels.
1 votes
En outre,
The 32-bit processors have 2^32 possible addresses
est plutôt vague ; par exemple, un certain nombre de CPU x86 32 bits (généralement des serveurs/stations de travail) prennent en charge le PAE, qui permet un espace d'adressage physique de 36 bits. Un certain nombre de CPU x86_64 modernes prennent en charge un espace d'adressage physique de 48 bits et un espace d'adressage virtuel de 52 bits.1 votes
@HansPassant Pouvez-vous développer ce point ? Je ne suis pas tout à fait sûr de ce que vous voulez dire. Comment la taille de la page individuelle d'un système d'exploitation est-elle liée à l'espace d'adressage ? En quoi le fait de modifier la taille des pages permet-il d'augmenter l'espace d'adressage physique ?
1 votes
@AaronFranke : pour une taille de page et un nombre d'entrées TLB fixes, vous ne pouvez couvrir qu'une quantité fixe de la taille de l'ensemble de travail virtuel. Avec plus de RAM, c'est une fraction de plus en plus petite de la mémoire disponible, et comme la bande passante de la mémoire s'améliore, vous mâchez cet ensemble plus rapidement et obtenez plus d'échecs TLB. Mais je pense que Hans parlait principalement de la quantité d'espace nécessaire uniquement pour les tables de pages afin d'indiquer au CPU où se trouve la page physique pour chaque page virtuelle. Avec des tables de pages imbriquées plus profondément, le page walker est plus coûteux, et les TLB plus grandes coûtent plus cher si vous les videz toutes.