Estaba leyendo este artículo sobre computación de 64 bits, y menciona:
Por ejemplo, la arquitectura AMD64 a partir de 2011 permitió 52 bits para la memoria física y 48 bits para la memoria virtual
Creo que tendría más sentido permitir más memoria virtual que memoria física, entonces, ¿por qué en realidad es al revés?
Pregunta adicional: ¿Qué significa "permitir" 52 o 48 bits en una arquitectura de 64 bits? ¿Para qué se usan los otros bits?
memory
64-bit
computer-architecture
dougvk
fuente
fuente
Respuestas:
Aquí hay una imagen de una tabla de páginas AMD64 (de la Guía del Programador de Arquitectura AMD, Vol. 2, Rev 3.23, 2013, página 132).
El tamaño "natural" de una página en la arquitectura AMD64 es 2 12 = 4096 bytes. (Hay modos en los que puede tener 2 páginas de 21 = 2Mbytes, pero las vamos a ignorar por ahora).
Cada entrada de tabla de página (PTE) (o, dependiendo del nivel llamado PDE, PDPE o PML4E) es de 64 bits = 2 3 bytes. Entonces hay 2 9 entradas por página. Entonces, 4 niveles de tabla de páginas le dan 4x9 + 12 = 48 bits de dirección virtual por proceso. Recorrer la tabla de páginas es costoso, por lo que no se expandirán a 5 o 6 niveles a menos que exista / hasta que exista una demanda del consumidor.
No estoy seguro de por qué decidieron un límite de dirección física de 52 bits. Esto puede extenderse hasta 63 bits en el futuro. A precios de octubre de 2013 (aproximadamente 1US $ / Gigabit para chips de 4Gbit) costaría más de 32,000,000.00 US $ construir una memoria de 2 52 bytes, por lo que pasará un tiempo antes de que haya una demanda significativa para aumentar el límite de dirección física. Hay todo tipo de razones por las que desea mantener las direcciones físicas lo más pequeñas posible: las etiquetas TLB y de caché deben contener direcciones físicas, por ejemplo.
No es necesariamente al revés que haya más memoria física que virtual. La memoria virtual es por proceso, mientras que la memoria física es compartida por todos los procesos. Por lo tanto, un servidor con direcciones virtuales de 48 bits y 2 52 bytes de memoria podría admitir 16 procesos simultáneos y aún así garantizar que no sea necesario intercambiar.
fuente
Algunos puntos a considerar, la RAM física es costosa. Claro, 16 GB es más barato ahora que 4 GB era solo hace unos años, pero 2 ^ 64 (16 exabytes) ridículamente grandes.
Entonces, las extensiones de AMD de x86 para x64 "permitieron" hasta 2 ^ 52 al limitar los registros . Esto hace dos cosas, reduce el costo de los procesadores y mejora el rendimiento. Más registros que no se utilizan significa que hay mucho espacio vacío que aún debe tenerse en cuenta durante las operaciones.
Y, en caso de que no seas matemático ... ¡La diferencia entre tres tamaños es enorme! No soy un gurú de las matemáticas, pero el número decimal de 52 bits es aproximadamente 0,02% de 64 bits. 48 bits es el 6% de 52. (¿alguien revisa mis matemáticas?)
En cuanto a por qué AMD permitió más RAM física que virtual, el artículo establece que es porque AMD estaba pensando en servidores. Los servidores necesitan grandes cantidades de RAM física. La RAM virtual es demasiado lenta para admitir las aplicaciones de servidor promedio para cientos o miles de empleados.
Mis propios pensamientos: hemos dejado el tiempo en que la RAM era pequeña, y los discos duros tenían que soportar RAM. El precio en RAM ha caído a un punto en el que la persona promedio puede poner RAM más que suficiente. Tome aplicaciones típicas, como Office, que requiere 1-2 GB de RAM. Mi computadora hace 7 años pudo manejar eso. Aunque con velocidades de lectura y escritura en el disco, espero nunca tener que recuperar un archivo de 7GB de la memoria virtual (usando la antigua filosofía PM * 2.5).
También puedo suponer que AMD quería dejar espacio para los registros que usan los registros físicos de RAM, como la RAM en las GPU integradas.
fuente