Pregunta

Estoy leyendo "Entendiendo el kernel de Linux".

paginación para arquitecturas de 64 bits

Como hemos visto en el anterior. Las secciones, la paginación de dos niveles es comúnmente Utilizado por microprocesadores de 32 bits. Sin embargo, la paginación de dos niveles no es Adecuado para computadoras que adoptan un Arquitectura de 64 bits. Vamos a usar un Pensamiento experimento para explicar por qué:

Comience por asumir un tamaño de página estándar de 4 kb. Porque 1 kb cubre un rango de 2 10 Direcciones, 4 kb Cubiertas 2 12 direcciones, por lo que el campo offset es 12 bits. Esto deja hasta 52 bits de la Dirección lineal a distribuir entre la tabla y el directorio campos. Si ahora decidimos usar Solo 48 de los 64 bits para abordar. (Esta restricción nos deja con un Cómodo espacio de direcciones de 256 tb!) , Los 48-12= 36 bits restantes Hay que dividirse entre la mesa y la Campos de directorio. Si ahora decidamos Reserve 18 bits para cada uno de estos dos. Campos, tanto el directorio de la página como Las tablas de página de cada proceso deben Incluir 2 entradas 18 que es, más de 256,000 entradas.

  1. "Si ahora decidimos usar solo 48 de los 64 bits para abordar". ¿Por qué? ¿Y por qué solo 48 bits? ¿Por qué no algún otro número?

  2. Bueno, solo soy un usuario regular de PC y programador. Es simplemente difícil de creer para mí que la direccionamiento de 32 bits I.E. 4GB (2GB / 3GB para ser más correcta) El espacio de direcciones por proceso es un límite. Si usted realmente se encuentra con este límite. Por favor dame ejemplo

  3. ¿Qué es este límite para Windows?

  4. ¡Sé que la memoria virtual!= Los pines de la dirección física y la dirección del procesador no tienen nada que ver con la memoria virtual. Esta es una pregunta completamente diferente. Cómo conocer el número de pines de dirección (= tamaño del bus de dirección) para un procesador. http://ark.intel.com Las especificaciones de un procesador no incluyen esta especificación.

  5. Respuesta:

    ver Respuesta de Paul Betts para una respuesta razonable para la 1ª pregunta.

¿Fue útil?

Solución

"Si ahora decidimos usar solo 48 de los 64 bits para abordar". ¿Por qué? ¿Y por qué solo 48bits? ¿Por qué no algún otro número?

Los arquitectos del sistema hacen compensaciones. 256TB parece más que suficiente espacio para 1 espacio de direcciones del proceso. ¡Recuerde la dirección virtual!= Dirección física, y en general, cada proceso tiene su propio espacio de direcciones.

Mientras los punteros tengan 64 bits, esto es más un problema de capacidad de rendimiento que cualquier otra cosa. Si & cuando 48 bits se convierte en una limitación, el sistema operativo podría ajustarse para usar más bits del espacio de direcciones de 64 bits sin romper la incompatibilidad de la aplicación. Por ahora, los arquitectos se están comprando una cantidad de tiempo muy cómoda.

Es posible que tenga que ver con las capacidades de direccionamiento virtual del lado del procesador, ya que muchos procesadores ahora tienen una unidades de administración de memoria para manejar la asignación de memoria virtual ->.

Cómo conocer el número de pines de dirección (= tamaño del bus de dirección) para un procesador. http://ark.intel.com Las especificaciones de un procesador no incluyen esta especificación.

Esto es en su mayor parte irrelevante. Es una forma de que un procesador implemente varios esquemas de direccionamiento físico. Un procesador de 64 bits podría lograr una dirección / buses de datos externos para su espacio de direcciones completo con 64, 32, 16, 8, 4, 2 o 1 PIN de direcciones si el bus es sincrónico y los bits de dirección se multiplican en el tiempo. De nuevo, dirección virtual!= Dirección física; El direccionamiento virtual de 64 bits podría implementarse con direcciones físicas de 48 bits o 32 bits (solo que se limitará a 2 48 o 2 32 Palabras de memoria).

Actualización: Si realmente desea saber, debe mirar la hoja de datos de cada procesador en cuestión. P.ej. Intel Core 2 DUO - Sección 4.2 de la hoja de datos habla sobre el Señales: el bus de dirección es de 36 bits de ancho (pero es realmente 33 líneas de señal; el ancho de los datos es de 64 bits= 8 bytes, por lo que las otras 3 líneas probablemente son innecesarias con la alineación de datos adecuada)

Bueno, solo soy un usuario regular de PC y programador. Es difícil de creer para mí que se aborda 32 bits, es decir, 4 GB (2GB / 3GB para ser más correcto), el espacio de direcciones por proceso es un límite. Si realmente encontraste este límite. Por favor, dame ejemplo.

DOS PALABRAS: Archivos asignados a la memoria .

Otros consejos

Ninguna de estas respuestas es correcta, la razón por la que OSS no use los 64 bits completos es porque las tablas de página serían mucho más grandes (64 bits ya es de hasta 3 niveles de tablas de página), y no hayRazón para pagar la indirección adicional necesaria, 48 bits es suficiente.48-bits también es conveniente porque obtiene algunos bits adicionales para almacenar banderas en (marcador de puntero)

No Current X86-64 Design utiliza más de 48 bits para esto -- Así que es un número conveniente para elegir, y también es automáticamente el mismo límite en Windows.

Es difícil de creer para mí que se aborda el espacio de 32 bits .. 4GB (2GB / 3GB para ser más correcto) El espacio de direcciones por proceso es un límite.Si realmente encontraste este límite.Por favor, dame ejemplo.

Es más eficiente (más rápido) para obtener datos de la RAM que para obtenerlo del disco.

La velocidad de SQL Server depende en parte de la cantidad de datos (por ejemplo, cuántos de sus páginas de índice y datos) se puede mantener en RAM en lugar de en el disco.

Por lo tanto, las bases de datos SQL (por ejemplo) pueden ser más rápidas en máquinas con más de 4 GB de RAM.

Lo mismo ocurre con otros tipos de servidores (por ejemplo, servidores de archivos, proxies HTTP, etc.), que pueden ser más rápidos si pueden tener cachés de RAM más grandes.

Creo que la respuesta más sencilla es - La ley de Moore.

La ley de Moore básicamente dice que los ICS se reducen a la mitad en costo cada 18 meses. Hay algunas formas de interpretar esto: la cantidad de memoria instalada en una PC tiende a duplicarse cada 18 meses. La velocidad efectiva se duplica (al menos si toma los núcleos * la MHz en lugar de solo el MHz).

De todos modos, hemos quedado realmente sin espacio de la dirección de 32 bits, por lo que un salto de 32 a 48 significa que, en el lado del hardware, hemos asignado espacio de expansión durante aproximadamente 16 iteraciones de la ley de Moore, que funciona hasta aproximadamente 20 años.

Estoy bastante seguro de que, si bien algunas PC puedan ser presionadas a la marca de 10 años, 20 años de expansión de la sala de estar parecen una compensación decente: las computadoras en 20 años serán diferentes: no usarán las mismas CPU y Los autobuses de RAM, tal como eran diferentes hace 20 años. El diseño de más de 20 años de cabecera en una interfaz es simplemente tonta en ingeniería que nunca voy a ver, de todos modos.

y no es tan corto que el hardware existente ejecuta un riesgo real de estar obsoletido demasiado pronto.

Es difícil de creer para mí que se aborda el espacio de 32 bits .. 4GB (2GB / 3GB para ser más correcto) El espacio de direcciones por proceso es un límite.Si realmente encontraste este límite.Por favor, dame ejemplo.

Ya no existe (excepto en algunas máquinas personales de algunos empleados antiguos), pero trabajé en un suito de software llamado realimación a fines de la década de 1990 / principios de la década de 2000.Fue un motor 3D en tiempo real para la visualización y la simulación.Uno de nuestros clientes creó regularmente modelos altamente detallados que afectan el límite de memoria de 2 GB.Cargaríamos texturas sobre la marcha y cuando sea necesario y teníamos que agregar código para verificar la falla de asignación de memoria, por lo que podríamos continuar mostrando el modelo, aunque no seastextured.

de un hardware prespectivo, otra consideración es la alineación.

Una vez que necesita un tipo de datos de más de 4 bytes, digamos 6, debe colocarlos en límites de 8 bytes para recuperarlos en una sola instrucción.Si no se alinea, debe hacer un poco de enmascaramiento y cambiarlo, y agregue cheques para esto en el código (ensamblaje).

Muchas personas estaban molestadas en el cambio a 64 bits que sus programas consumían mucho más memoria.Los tendrían buscados 48 bits, y si las restricciones de alineación no estaban allí, los fabricantes de CPU probablemente habrían hecho una arquitectura de 48 bits.

Tenga en cuenta que si está tan galloso para la memoria que desea que sus punteros sean 6 bytes, hay formas de hacerlo.Pero hay una sanción al tiempo de ejecución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top