En la arquitectura de computadora x86-64 , el modo largo es el modo en el que un sistema operativo de 64 bits puede acceder a las instrucciones y registros de 64 bits . Los programas de 64 bits se ejecutan en un submodo denominado modo de 64 bits, mientras que los programas de 32 bits y los programas en modo protegido de 16 bits se ejecutan en un submodo denominado modo de compatibilidad. Los programas en modo real o virtual 8086 no se pueden ejecutar de forma nativa en modo largo.
Descripción general
Un procesador x86-64 actúa de manera idéntica como un procesador IA-32 cuando se ejecuta en modo real o en modo protegido, que son submodos admitidos cuando el procesador no está en modo largo.
Un bit en el campo de atributos extendidos de CPUID informa a los programas en modo real o protegido si el procesador puede pasar al modo largo, lo que permite que un programa detecte un procesador x86-64. Esto es similar al bit de atributos de CPUID que utilizan los procesadores Intel IA-64 para permitir que los programas detecten si se están ejecutando bajo la emulación IA-32.
Con una computadora que ejecuta BIOS heredado , el BIOS y el cargador de arranque se ejecutan en modo Real , luego el kernel del sistema operativo de 64 bits verifica y cambia la CPU al modo Long y luego inicia nuevos subprocesos en modo kernel que ejecutan código de 64 bits. Con una computadora que ejecuta UEFI , el firmware UEFI (excepto CSM y la ROM de opción heredada ), el cargador de arranque UEFI y el kernel del sistema operativo UEFI se ejecutan en modo largo.
Limitaciones de memoria
Si bien los tamaños de registro han aumentado a 64 bits desde la arquitectura x86 anterior , el direccionamiento de memoria aún no se ha incrementado a los 64 bits completos. Por el momento, no es práctico equipar las computadoras con suficiente memoria para requerir 64 bits completos. Siempre que ese sea el caso, las unidades de carga / almacenamiento, las etiquetas de caché , las MMU y las TLB se pueden simplificar sin ninguna pérdida de memoria utilizable. A pesar de esta limitación, el software se programa utilizando punteros completos de 64 bits y, por lo tanto, podrá utilizar espacios de direcciones progresivamente más grandes a medida que sean compatibles con los futuros procesadores y sistemas operativos.
Límites actuales
Las primeras CPU que implementaron la arquitectura x86-64, a saber, las CPU AMD Athlon 64 / Opteron (K8), tenían direcciones físicas virtuales [1] de 48 bits : 129-130 y 40 bits . [1] : 4
El espacio de direcciones virtuales de estos procesadores se divide en dos regiones de 47 bits, una que comienza en la dirección más baja posible y la otra se extiende hacia abajo desde la más grande. Si intenta utilizar direcciones que se encuentren fuera de este rango, se producirá una falla de protección general .
El límite del direccionamiento físico limita la cantidad de RAM instalada a la que puede acceder la computadora. En un sistema multiprocesador ccNUMA (Opteron), esto incluye la memoria que está instalada en los nodos remotos, porque las CPU pueden direccionar directamente (y almacenar en caché) toda la memoria sin importar si está en el nodo doméstico o remoto. El límite de 1 TB (40 bits) de memoria física para el K8 es enorme para los estándares típicos de computadoras personales, pero podría haber sido una limitación para su uso en supercomputadoras. En consecuencia, la microarquitectura K10 (o "10h") implementa direcciones físicas de 48 bits y, por lo tanto, puede direccionar hasta 256 TB de RAM. [2]
Cuando sea necesario, la microarquitectura se puede ampliar paso a paso sin los efectos secundarios del software y, al mismo tiempo, ahorrar costes con su implementación. Para una futura expansión, la arquitectura admite la expansión del espacio de direcciones virtuales a 64 bits y el direccionamiento de la memoria física a 52 bits (limitado por el formato de entrada de la tabla de páginas ). [3] Esto permitiría al procesador direccionar 2 64 bytes (16 exabytes ) de espacio de direcciones virtuales y 2 52 bytes (4 petabytes ) de espacio de direcciones físicas.
Ver también
- x86-64
- Modo de compatibilidad de 64 bits
Referencias
- ^ a b "Volumen 2 del manual del programador de la arquitectura AMD64: Programación del sistema" (PDF) . 2016 . Consultado el 9 de abril de 2015 .
- ^ "Guía del desarrollador de BIOS y kernel (BKDG) para procesadores AMD de la familia 10h" (PDF) . pag. 30 . Consultado el 9 de abril de 2015 .
El espacio de direcciones físicas aumentó a 48 bits.
- ^ AMD 2016 , p. 24: "La arquitectura AMD64 mejora este soporte para permitir la traducción de direcciones virtuales de 64 bits en direcciones físicas de 52 bits, aunque las implementaciones de procesador pueden admitir espacios de direcciones virtuales y físicos más pequeños".
enlaces externos
- Zeichick, Alan (3 de diciembre de 2003). "Plataformas y herramientas para el procesador AMD Athlon 64" . Desarrollador. AMD. Archivado desde el original el 14 de febrero de 2012.
Una guía de las nuevas funciones del modo largo
- Chourdakis, Michael (21 de mayo de 2015). "El tutorial de montaje en modo Real, Protegido, Largo para PC" . Proyecto de código .