¿Cuánta memoria puede manejar una máquina de 64 bits a la vez?

32

Si la memoria es byte direccionable, ¿no debería ser

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

Una búsqueda general en Google dice 8GB o 16GB máx.

¿Cómo es eso cierto? Además, ¿cómo depende del sistema operativo?

Moeb
fuente
Obviamente, 8 GB están fuera de la pared ya que mi máquina de trabajo tiene 12 GB y puede solucionarlo todo, más un GB de RAM de video, más todo mi hardware más toda mi memoria virtual.
Newegg vende un paquete de 32 GB de RAM, destinado a una computadora. 32 bits admite 3.2 GB y 128 bits admitirá millones de terabytes, por lo que creo que 64 bits es mucho más del doble de lo que tenía 32 bits.
tkbx

Respuestas:

53

Hay múltiples factores de intercalación.

En primer lugar, nunca podrá ensamblar un sistema que tenga 2 64 bytes (16 exibytes) de RAM física.

En segundo lugar, el hecho de que una arquitectura use punteros de 64 bits no significa que todos los bits de esos punteros se usen realmente. En particular, las CPU x86-64 actuales (también conocidas como AMD64 y los chips actuales de 64 bits de Intel) en realidad usan líneas de dirección de 48 bits (AMD64) y líneas de dirección de 42 bits (Intel) (consulte http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), que teóricamente permite 256 terabytes de RAM física.

En segundo lugar, las placas base tienen sus propios límites sobre la cantidad de RAM que pueden soportar, tanto física como lógicamente. Físicamente, solo habrá tantas ranuras disponibles para RAM. En cuanto a los límites "lógicos", no entiendo completamente por qué este sigue siendo el caso para x86-64 (el controlador de memoria se migró hace mucho tiempo a la CPU), pero ahí está. Presumiblemente, se están cortando esquinas en las líneas de dirección para ahorrar unos cuantos dólares en diseño y fabricación.

En tercer lugar, un sistema operativo puede tener limitaciones internas en cuanto a la cantidad de RAM que puede soportar de manera eficiente. En parte, esto es en realidad para evitar la necesidad de estructuras de datos demasiado grandes para realizar un seguimiento del uso de la memoria que realmente no existe. La última vez que lo verifiqué, Linux permite 128 TB de espacio de direcciones virtuales por proceso en x86-64 y, en teoría, puede admitir 64 TB de RAM física.

Cuarto, algunos sistemas operativos (por ejemplo, Windows) limitarán artificialmente la cantidad de RAM que se puede usar como táctica para que los usuarios actualicen a versiones más costosas si quieren más RAM (Windows 7 Starter está limitado a 2 GB, Home Basic a 8, Home Premium a 16, y Professional y superior son 192GB, y las versiones de Windows Server tienen límites mucho más altos).

Nicholas Knight
fuente
1
+1 por mencionar que las líneas de dirección física suelen ser << número de bits en un registro de dirección en arquitecturas de 64 bits
Paul R
3
Se agradecería una fuente para las líneas de dirección de 42 bits (agregada por edición anónima). Hasta entonces, personalmente no considero que esa información sea confiable.
Bob
21
Nunca digas nunca. La Ley de Moore todavía está vigente, lo último que escuché, por lo que los sistemas con 16 exabytes de RAM bien pueden aparecer en nuestras vidas. Entonces todos tendremos que pasar a los sistemas operativos de 128 bits ...
Michael Hampton
Las direcciones físicas también están limitadas por el número de bits proporcionados para las direcciones físicas en los TLB (y por el tamaño de las etiquetas de caché con el etiquetado de direcciones físicas) y por los bits disponibles para las direcciones físicas en las entradas de la tabla de páginas (si tales están definidas por arquitectura como en x86-64 que admite un espacio de direcciones físicas de 52 bits con páginas 4KiB). Este último es un límite más firme (arquitectónico no basado en la implementación), aunque incluso las arquitecturas se pueden cambiar.
Paul A. Clayton
2
@MichaelHampton - NecroReply, pero no pude resistir :) Duplicar cada 2 años (que es más rápido que las tendencias recientes) todavía tomaría 60 años para pasar de 16 GB a 16 EB. Para entonces dudo que las "leyes" sobre los transistores de silicio tengan alguna relevancia;)
MatBailie
9

Si usa MS Windows, la memoria máxima está limitada por el sistema operativo.

Para Windows 7, los máximos son:

  • Starter: 2GB
  • Home Basic: 8GB
  • Home Premium: 16 GB
  • Profesional: 192 GB
  • Empresa: 192 GB
  • Ultimate: 192 GB

Windows Server 2008 varía de 8 GB para el nivel de entrada a 2 TB para la parte superior de la línea.

Consulte http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx para obtener una lista completa.

Estos límites son principalmente por razones de marketing. Al restringir las versiones más baratas, hacen que las versiones de gama alta (comparativamente) sean más atractivas.

Creo que las compilaciones recientes de Linux funcionan con alrededor de 32 TB de RAM, aunque no todo el hardware puede soportar eso.

Michael J
fuente
44
Esos no son realmente límites técnicos. Esos son límites artificiales introducidos por razones comerciales.
kasperd
8

Una máquina de 64 bits debería poder direccionar hasta 2 64 unidades direccionables (en arquitecturas diseñadas en las últimas décadas, las unidades direccionables son invariablemente bytes, también conocidos como octetos). Si define un "gigabyte" como 2 30 unidades direccionables, entonces sí, 2 34 gigabytes sería otra forma de expresar el mismo recuento.

¿Qué búsqueda de Google produjo esos pequeños resultados ridículos? Tal vez la página que encontró hablaba de las cantidades de RAM que puede comprar en cajas razonablemente baratas de cierto modelo; definitivamente puede tener mucha más RAM (todas accesibles, por supuesto) incluso en cajas que están lejos de ser muy costosas .

Los sistemas operativos definitivamente pueden restringir y limitan la cantidad de memoria direccionable (por ejemplo, pueden hacerlo limitando el tamaño de las tablas de páginas, tal vez a un máximo configurable que se puede configurar volviendo a compilar o reconfigurando el sistema operativo; es difícil ser más específico sin centrarse en algún grupo específico de sistemas operativos).

Alex Martelli
fuente
¿Por qué 2 ^ 30 unidades direccionables son 1 GB? Cada unidad de dirección almacena 1 bit, por lo tanto, 2 ^ 30 unidades de dirección almacenan tantos bits que suman 0.134217728 gigabytes. ¿Qué me estoy perdiendo?
Darshan Chaudhary
1
@DarshanChaudhary 2 ^ 30 es el número de direcciones distintas. Cada dirección identifica un byte de memoria, no un bit.
David Moles
3

Puede tener tanta RAM como desee, pero todo depende del sistema operativo y la aplicación que esté ejecutando, como dijo otra persona.

Si está ejecutando una aplicación que requiere mucha CPU y que también requiere mucho otro hardware como su disco duro, lo mejor es considerar una segunda CPU, en una máquina completamente separada. Por ejemplo, ejecutar una aplicación de base de datos y un servidor de correo electrónico en máquinas separadas.

No importa la cantidad de memoria que tenga: en el mercado actual, todo el sistema se detendrá. Las CPU individuales simplemente no pueden manejar la multitarea de la manera que esperarías.

Para una sola máquina con mucha memoria, es mejor pero no tan brillante si tiene múltiples aplicaciones ejecutándose en el mismo sistema, independientemente de la cantidad de memoria instalada. Esta es la razón por la cual las grandes empresas usan no solo la arquitectura de 64 bits para direccionar más memoria, sino que también equilibran la carga de todo el lote con dos o más servidores.

Si realmente toma en serio el rendimiento, definitivamente vaya a 64 bits, pero también considere el equilibrio de carga con un segundo servidor.

He estado en ese camino, configurando una sola máquina con la máxima RAM. Sin embargo, cuando ejecuta múltiples aplicaciones, todavía se ejecuta como un perro. Eso es porque la CPU en sí misma no puede manejarlo.

Mi consejo es que ahorre dinero en la memoria y compre un segundo servidor y luego equilibre la carga de los dos. Es mucho más simple, una vez que se familiariza con él, es fácil de expandir cuando necesita más potencia de procesamiento y velocidad.

Además, una máquina de arquitectura de 64 bits puede hacer frente al software de 32 bits, pero con una máquina de 32 bits está limitado a solo 32 bits o menos aplicaciones, incluido el sistema operativo.

Dado que todo el mercado está pasando a 64 bits en términos de hardware y software, recomendaría ir a 64 bits a largo plazo, pero olvide la idea de aplastar todo en una sola máquina con grandes cantidades de memoria porque se sentirá decepcionado.

Si no está seguro de qué es el "equilibrio de carga", búsquelo en Google.

Piensa en grande
fuente
2

Creo que puede tomar más que un exabyte "EB".

Mire este procesador de 32 bits puede tomar 2 32 B = 4 GB, pero a lo sumo toma 3 GB "porque son 1 GB para direcciones invertidas"

Eso significa que el procesador de 64 bits puede tomar 2 64 B = 16 EB, pero no sé cómo se usan las direcciones que se bloquearon para revertir. entonces podemos decir que el procesador de 64 bits toma más de 1 EB. y esta especificación no depende del sistema operativo que utilizó la PC o de su modelo.

Mohammad Malkawie
fuente
1
En la práctica, los procesadores de 64 bits suelen tener un espacio de direcciones de 48 bits que es suficiente para 256 terabytes de memoria.
465544
Creo que te refieres a exbibyte , no a exabyte .
Martineau
1

Tomando una CPU Intel o AMD como ejemplo, existen varias limitaciones tanto para la memoria física como para la memoria virtual. Otras personas han hablado sobre las limitaciones de hardware y de la placa base, pero también hay limitaciones internas.

Una entrada de tabla de página de terminal en la MMU contiene 52 bits significativos de dirección física y, en teoría, puede mapear hasta 4096 TB de RAM física.

La MMU implementa una tabla de páginas de 4 niveles cuyo nivel superior consta de entradas de 512 × 512 GB. Entonces la memoria virtual está limitada a 256 TB.

Hasta donde sé, todos los sistemas operativos de 64 bits implementan un DMAP (un mapa directo), que es muy conveniente. Sin embargo, debido a que la memoria virtual está limitada a 256 TB, el tamaño del DMAP también está limitado. Normalmente, 128 TB están reservados para el modo de usuario y 128 TB para el núcleo. De esos 128 TB para el núcleo, se puede reservar hasta la mitad para el DMAP. Debido a la utilidad del DMAP, los sistemas operativos generalmente limitarán la memoria física a lo que el DMAP puede manejar.

Entonces, la mayoría (¿todos?) De los sistemas operativos de 64 bits para Intel / AMD, la memoria física admitida está limitada a alrededor de 64 TB, dejando 64 TB para la memoria virtual del núcleo general y 128 TB para la memoria virtual del usuario.

-

Interna a la CPU, los cachés de la CPU también tienen una limitación en el número de bits de dirección física que almacenan, ya que cada bit de dirección adicional consume más transistores a la etiqueta de caché. Las limitaciones del pin del controlador DRAM no son necesariamente la última palabra, ya que la memoria también se puede abordar a través de enlaces DMI.

Las diferentes arquitecturas de CPU (por ejemplo, ARM, PowerPC, etc.) tendrán diferentes limitaciones.

Matthew Dillon
fuente