web-dev-qa-db-fra.com

Combien de mémoire une adresse d'ordinateur 64 bits peut-elle gérer à la fois?

Si la mémoire est un octet adressable, ne devrait-il 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?

32
Moeb

Il y a plusieurs facteurs d'entrelacement.

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

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

Deuxièmement, les cartes mères ont leurs propres limites sur la quantité RAM qu'elles peuvent supporter, à la fois physiquement et logiquement. Physiquement, il n'y aura qu'un nombre limité 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 a depuis longtemps migré dans la CPU elle-même), mais c'est le cas. Vraisemblablement, des coins sont coupés sur les lignes d'adresse pour économiser quelques dollars en conception et en fabrication.

Troisièmement, un système d'exploitation peut avoir des limitations internes quant à la quantité RAM qu'il peut efficacement prendre en charge. Cela permet en partie d'éviter d'avoir à utiliser des structures de données trop volumineuses pour suivre l'utilisation de la mémoire qui n'y est pas réellement. La dernière fois que j'ai vérifié, Linux autorise 128 To d'espace d'adressage virtuel par processus sur les x86-64, et peut théoriquement prendre en charge 64 To de RAM physique.

Quatrièmement, certains systèmes d’exploitation (Windows, par exemple) limitent artificiellement la quantité de RAM pouvant être utilisée comme tactique pour inciter les utilisateurs à passer à des versions plus chères s’ils en souhaitent plus RAM (Windows 7 Starter est limité à 2 Go , Édition Familiale Basique à 8, Édition Familiale Premium à 16 ans, et Professionnelle et au-dessus de 192 Go, et les versions de Windows Server ont des limites beaucoup plus élevées).

52
Nicholas Knight

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

Pour Windows 7, les maximums sont les suivants:

  • Entrée: 2 Go
  • Familiale Basique: 8 Go
  • Home Premium: 16 Go
  • Professionnel: 192 Go
  • L'entreprise: 192GB
  • Ultime: 192 Go

Windows Server 2008 va de 8 Go pour le niveau d'entrée à 2 To pour le haut de la ligne.

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 limitant les versions les moins chères, elles rendent (comparativement) les versions haut de gamme 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.

9
Michael J

Une machine 64 bits devrait pouvoir traiter jusqu'à 264 unités adressables (dans les architectures conçues au cours des dernières décennies, les unités adressables sont invariablement des octets, des octets.k.a.). Si vous définissez un "gigaoctet" comme 230 unités adressables, alors oui, 234 gigaoctets serait un autre moyen d’exprimer le même nombre.

Quelle recherche Google a produit ces résultats minuscules 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 d’un bon modèle d’un prix raisonnable - vous pouvez très certainement avoir beaucoup plus de RAM (toutes adressables, de 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 doivent effectivement limiter 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 soyez plus précis sans vous focaliser sur un groupe spécifique de systèmes d’exploitation).

8
Alex Martelli

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 l'a déjà déclaré quelqu'un d'autre.

Si vous exécutez une application gourmande en ressources du processeur qui sollicite également d’autres matériels tels que votre disque dur, envisagez sérieusement l’utilisation d’un second processeur, sur une machine complètement séparée. Par exemple, vous exécutez une application de base de données et un serveur de messagerie sur des ordinateurs distincts.

Peu importe la quantité de mémoire dont vous disposez - sur le marché actuel, tout le système sera paralysé. Les processeurs simples ne peuvent tout simplement pas gérer le multitâche comme vous le souhaiteriez.

Pour une seule machine avec beaucoup de mémoire, c'est mieux mais pas génial si vous avez plusieurs applications s'exécutant 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 gérer davantage de mémoire, mais elles équilibrent également la charge avec au moins deux serveurs.

Si vous êtes vraiment sérieux au sujet des performances, optez pour le 64 bits, mais envisagez également l'équilibrage de la charge avec un deuxième serveur.

Je suis sur cette route - la configuration d'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 processeur lui-même ne peut pas le gérer.

Mon conseil est d'économiser votre argent sur la mémoire et d'acheter un deuxième serveur, puis équilibrer la charge des deux. C'est beaucoup plus simple, une fois que vous vous y êtes mis, il est facile de prendre de l'expansion lorsque vous avez besoin de plus de puissance de traitement et de vitesse.

En outre, une machine à architecture 64 bits peut gérer un logiciel 32 bits, mais avec une machine 32 bits, vous ne pouvez utiliser que des applications 32 bits ou moins, système d'exploitation compris.

Puisque tout le marché utilise du matériel et des logiciels 64 bits, je vous conseillerais de le faire à long terme, mais oubliez l’idée de tout écraser sur une seule machine avec beaucoup de mémoire, car vous serez déçu.

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

3
ThinkBIG

Je pense que cela peut prendre plus qu'un exabyte "EB".

Regardez ce processeur 32 bits peut prendre 232 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 264 B = 16 EB, mais je ne peux pas comment les adresses verrouillées pour inversées sont utilisées. nous pouvons donc dire qu'un processeur 64 bits prend plus d'un EB. et cette spécification ne dépend pas de ce que le système d’exploitation utilisé par le PC ou de son modèle.

2

En prenant comme exemple un processeur Intel ou AMD, 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 existe également des limitations internes.

Une entrée de table de page de terminal dans le MMU contient 52 bits significatifs d’adresse physique et peut théoriquement mapper jusqu’à 4 096 To de RAM physique.

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

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

Ainsi, la plupart des systèmes d’exploitation 64 bits (tous?) Pour Intel/AMD, la mémoire physique prise en charge est limitée à environ 64 To, ce qui laisse 64 To pour la mémoire virtuelle du noyau général et 128 To pour la mémoire virtuelle utilisateur.

-

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 à 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 liens DMI.

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

1
Matthew Dillon