Quelle quantité de mémoire une machine 64 bits peut-elle adresser à la fois?

32

Si la mémoire est adressable en octets, ne devrait-elle pas être

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Une recherche générale sur Google indique 8 Go ou 16 Go max.

Comment est-ce vrai? En outre, comment cela dépend-il du système d'exploitation?

Moeb
la source
8 Go sont évidemment hors du mur car ma machine de travail a 12 Go et peut tout faire, plus un Go de RAM vidéo, ainsi que tout mon matériel et toute ma mémoire virtuelle.
Newegg vend un paquet de 32 Go de RAM, destiné à un ordinateur. 32 bits pris en charge 3,2 Go, et 128 bits prendront en charge des millions de téraoctets, donc je pense que 64 bits est beaucoup plus que le double de ce que 32 bits avaient.
tkbx

Réponses:

53

Il existe de multiples facteurs d'entrelacement.

Tout d'abord, vous ne pourrez jamais, jamais assembler un système qui a 2 64 octets (16 exibytes) de RAM physique.

Deuxièmement, ce n'est pas parce qu'une architecture utilise des pointeurs 64 bits que tous les bits de ces pointeurs sont réellement utilisés. Notamment, les processeurs x86-64 actuels (alias AMD64 et les puces 64 bits actuelles d'Intel) utilisent en fait des lignes d'adresse 48 bits (AMD64) et des lignes d'adresse 42 bits (Intel) (voir http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), permettant théoriquement 256 téraoctets de RAM physique.

Deuxièmement, les cartes mères ont leurs propres limites quant à la quantité de RAM qu'elles peuvent prendre en charge, à la fois physiquement et logiquement. Physiquement, il n'y aura que tant d'emplacements disponibles pour la RAM. En ce qui concerne les limites "logiques", je ne comprends pas vraiment pourquoi c'est toujours le cas pour x86-64 (le contrôleur de mémoire ayant depuis longtemps migré dans le CPU lui-même), mais il est là. Vraisemblablement, les coins sont coupés sur les lignes d'adresse pour économiser quelques dollars dans la conception et la fabrication.

Troisièmement, un système d'exploitation peut avoir des limites internes quant à la quantité de RAM qu'il peut prendre en charge efficacement. Cela vise en partie à éviter d'avoir besoin de structures de données trop grandes pour garder une trace de l'utilisation de la mémoire qui n'est pas vraiment là. Dernière vérification, Linux autorise 128 To d'espace d'adressage virtuel par processus sur x86-64, et peut théoriquement prendre en charge 64 To de RAM physique.

Quatrièmement, certains systèmes d'exploitation (par exemple Windows) limiteront artificiellement la quantité de RAM pouvant être utilisée comme tactique pour obliger les utilisateurs à passer à des versions plus chères s'ils souhaitent plus de RAM (Windows 7 Starter est limité à 2 Go, Home Basic à 8, Home Premium à 16, et Professional et supérieur à 192 Go, et les versions de Windows Server ont des limites beaucoup plus élevées).

Nicholas Knight
la source
1
+1 pour avoir mentionné que les lignes d'adresse physiques sont généralement << nombre de bits dans un registre d'adresses sur les architectures 64 bits
Paul R
3
Une source pour les lignes d'adresse 42 bits (ajoutées par modification anonyme) serait appréciée. Jusque-là, personnellement, je ne considère pas ces informations comme fiables.
Bob
21
Ne jamais dire jamais. La loi de Moore est toujours en vigueur, la dernière que j'ai entendue, donc des systèmes avec 16 exaoctets de RAM pourraient bien apparaître au cours de notre vie. Ensuite, nous devrons tous passer à des systèmes d'exploitation 128 bits ...
Michael Hampton
Les adresses physiques sont également limitées par le nombre de bits fournis pour les adresses physiques dans les TLB (et par la taille des balises de cache compte tenu du balisage des adresses physiques) et par les bits disponibles pour les adresses physiques dans les entrées du tableau de pages (si ceux-ci sont définis par le comme en x86-64 qui prend en charge l'espace d'adressage physique 52 bits avec des pages de 4 Ko). Ce dernier est une limite plus ferme (architecturale et non basée sur l'implémentation), bien que même les architectures puissent être modifiées.
Paul A. Clayton
2
@MichaelHampton - NecroRponse, mais n'a pas pu résister :) Doubler tous les 2 ans (ce qui est plus rapide que les tendances récentes) prendrait encore 60 ans pour passer de 16 Go à 16EB. D'ici là, je doute que les "lois" sur les transistors au silicium auront une pertinence;)
MatBailie
9

Si vous utilisez MS Windows, la mémoire maximale est limitée par le système d'exploitation.

Pour Windows 7, les maximums sont:

  • Démarreur: 2 Go
  • Home Basic: 8 Go
  • Home Premium: 16 Go
  • Professionnel: 192 Go
  • Entreprise: 192 Go
  • Ultimate: 192 Go

Windows Server 2008 varie de 8 Go pour le niveau d'entrée à 2 To pour le haut de gamme.

Voir http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx pour une liste complète.

Ces limites sont principalement pour des raisons de marketing. En restreignant les versions moins chères, ils rendent les versions haut de gamme (comparativement) plus attrayantes.

Je pense que les versions récentes de Linux fonctionnent avec environ 32 To de RAM, bien que tout le matériel ne puisse pas le supporter.

Michael J
la source
4
Ce ne sont pas vraiment des limites techniques. Ce sont des limites artificielles introduites pour des raisons commerciales.
kasperd
8

Une machine 64 bits devrait être capable d'adresser jusqu'à 2 64 unités adressables (dans les architectures conçues au cours des dernières décennies, les unités adressables sont invariablement des octets, aussi appelés octets). Si vous définissez un "gigaoctet" comme 2 30 unités adressables, alors oui, 2 34 gigaoctets seraient une autre façon d'exprimer le même nombre.

Quelle recherche Google a produit ces minuscules résultats ridicules? Peut-être que la page que vous avez trouvée parlait des quantités de RAM que vous pouvez acheter dans des boîtes raisonnablement bon marché d'un certain modèle - vous pouvez certainement avoir beaucoup plus de RAM (toutes adressables, bien sûr) même dans des boîtes qui sont loin d'être très coûteuses .

Les systèmes d'exploitation peuvent très certainement et limitent la quantité de mémoire adressable (par exemple, ils peuvent le faire en limitant la taille des tables de pages, peut-être à un maximum configurable qui peut être défini en recompilant ou en reconfigurant le système d'exploitation - il est difficile de être plus précis sans se concentrer sur un groupe spécifique d'OS).

Alex Martelli
la source
Pourquoi 2 ^ 30 unités adressables 1 Go? Chaque unité d'adresse stocke 1 bit, donc, 2 ^ 30 unités d'adresse stockent autant de bits qui s'élèvent à 0,134177288 gigaoctets. Qu'est-ce que je rate?
Darshan Chaudhary
1
@DarshanChaudhary 2 ^ 30 est le nombre d'adresses distinctes. Chaque adresse identifie un octet de mémoire, pas un bit.
David Moles
3

Vous pouvez avoir autant de RAM que vous le souhaitez, mais tout dépend du système d'exploitation et de l'application que vous exécutez - comme quelqu'un d'autre l'a déclaré.

Si vous exécutez une application gourmande en ressources processeur, également gourmande en matériel, comme votre disque dur, vous devriez sérieusement envisager un deuxième processeur, sur une machine complètement séparée. Par exemple, exécuter une application de base de données et un serveur de messagerie sur des machines distinctes.

Peu importe la quantité de mémoire dont vous disposez - sur le marché actuel, l'ensemble du système s'arrêtera. Les processeurs simples ne peuvent tout simplement pas gérer le multitâche comme vous vous y attendez.

Pour une seule machine avec beaucoup de mémoire, c'est mieux mais pas si brillant si vous avez plusieurs applications exécutées sur le même système, quelle que soit la quantité de mémoire installée. C'est la raison même pour laquelle les grandes entreprises utilisent non seulement une architecture 64 bits pour adresser plus de mémoire, mais elles équilibrent également la charge de l'ensemble avec deux serveurs ou plus.

Si vous êtes vraiment sérieux au sujet des performances, passez définitivement au 64 bits, mais pensez également à l'équilibrage de charge avec un deuxième serveur.

J'ai été sur cette voie - configurer une seule machine avec un maximum de RAM. Pourtant, lors de l'exécution de plusieurs applications, il fonctionne toujours comme un chien. C'est parce que le CPU lui-même ne peut tout simplement pas le gérer.

Mon conseil est d'économiser de l'argent sur la mémoire et d'acheter un deuxième serveur, puis d'équilibrer la charge des deux. C'est beaucoup plus simple et en plus - une fois que vous maîtrisez la situation - il est facile de s'étendre lorsque vous avez besoin de plus de puissance et de vitesse de traitement.

En outre, une machine d'architecture 64 bits peut gérer un logiciel 32 bits, mais avec une machine 32 bits, vous êtes limité à seulement des applications 32 bits ou moins, y compris le système d'exploitation.

Étant donné que l'ensemble du marché passe au 64 bits en termes de matériel et de logiciels, je conseillerais de passer au 64 bits à long terme, mais oubliez l'idée de tout écraser sur une seule machine avec des charges de mémoire seau car vous serez déçu.

Si vous n'êtes pas certain de ce qu'est l'équilibrage de charge, recherchez-le sur Google.

Voir grand
la source
2

Je pense que cela peut prendre plus d'un exaoctet "EB".

Regardez ce processeur 32 bits peut prendre 2 32 B = 4 Go, mais au plus il faut 3 Go "car ils sont 1 Go pour les adresses inversées"

Cela signifie que le processeur 64 bits peut prendre 2 64 B = 16 EB, mais je ne sais pas comment les adresses verrouillées pour inversées sont utilisées. nous pouvons donc dire que le processeur 64 bits prend plus de 1 EB. et cette spécification ne dépend pas de l'OS utilisé par le PC ni de son modèle.

Mohammad Malkawie
la source
1
En pratique, les processeurs 64 bits ont généralement un espace d'adressage de 48 bits, ce qui est suffisant pour 256 téraoctets de mémoire.
465544
Je pense que vous voulez dire exbibyte , pas exabyte .
martineau
1

En prenant un processeur Intel ou AMD comme exemple, il existe plusieurs limitations à la fois à la mémoire physique et à la mémoire virtuelle. D'autres personnes ont parlé du brochage du matériel et des limitations de la carte mère, mais il y a aussi des limitations internes.

Une entrée de table de page de terminal dans la MMU contient 52 bits significatifs d'adresse physique et peut théoriquement mapper jusqu'à 4096 To de RAM physique.

La MMU implémente une table de pages à 4 niveaux dont le niveau supérieur se compose de 512 × 512 Go d'entrées. La mémoire virtuelle est donc limitée à 256 To.

Pour autant que je sache, tous les systèmes d'exploitation 64 bits implémentent un DMAP (une carte directe), ce qui est super pratique. Cependant, comme la mémoire virtuelle est limitée à 256 To, la taille du DMAP est également limitée. En général, 128 To sont réservés au mode utilisateur et 128 To au noyau. Sur ces 128 To pour le noyau, jusqu'à la moitié peut être réservée au DMAP. En raison de l'utilité du DMAP, les systèmes d'exploitation limiteront généralement la mémoire physique à ce que le DMAP peut gérer.

Ainsi, la plupart (tous?) Des systèmes d'exploitation 64 bits pour Intel / AMD, la mémoire physique prise en charge est limitée à environ 64 To, laissant 64 To pour la mémoire virtuelle générale du noyau et 128 To pour la mémoire virtuelle des utilisateurs.

-

En interne à la CPU, les caches de CPU ont également une limitation du nombre de bits d'adresse physique qu'ils stockent, car chaque bit d'adresse supplémentaire mange plus de transistors vers la balise de cache. Les limitations des broches du contrôleur DRAM ne sont pas nécessairement le dernier mot, car la mémoire peut également être adressée via des liaisons DMI.

Différentes architectures de processeur (par exemple, ARM, PowerPC, etc.) auront des limitations différentes.

Matthew Dillon
la source