En la arquitectura de computadoras x86-64 , el modo largo es aquel en el que un sistema operativo de 64 bits puede acceder a instrucciones y registros de 64 bits . Los programas de 64 bits se ejecutan en un submodo llamado 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 llamado modo de compatibilidad. Los programas en modo real o en modo virtual 8086 no se pueden ejecutar de forma nativa en modo largo.
Descripción general
Un procesador x86-64 se comporta de forma idéntica a un procesador IA-32 cuando funciona en modo real o en modo protegido, que son modos compatibles cuando el procesador no está en modo largo.
Un bit en el campo de atributos extendidos 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 CPUID que utilizan los procesadores Intel IA-64 para permitir que los programas detecten si se están ejecutando bajo emulación IA-32.
En un ordenador con BIOS heredada , la BIOS y el gestor de arranque se ejecutan en modo real . Tras pasar la ejecución al núcleo del sistema operativo compatible con x86-64, el núcleo verifica la compatibilidad de la CPU con el modo largo y ejecuta las instrucciones para acceder a él. En un ordenador con UEFI , el firmware UEFI (excepto CSM y la ROM de opción heredada ), cualquier gestor de arranque UEFI y el núcleo del sistema operativo se ejecutan en modo largo.
Limitaciones de memoria
Si bien el tamaño de los registros ha aumentado a 64 bits con respecto a la arquitectura x86 anterior , el direccionamiento de memoria aún no se ha ampliado a los 64 bits completos. Por el momento, no es práctico equipar las computadoras con suficiente memoria como para requerir 64 bits completos. Mientras esto siga siendo así, las unidades de carga/almacenamiento, las etiquetas de caché , las MMU y las TLB se pueden simplificar sin pérdida de memoria utilizable. A pesar de esta limitación, el software se programa utilizando punteros de 64 bits completos y, por lo tanto, podrá utilizar espacios de direcciones progresivamente mayores a medida que los futuros procesadores y sistemas operativos los admitan.
Límites actuales
Las primeras CPU que implementaban la arquitectura x86-64, a saber, las CPU AMD Athlon 64 / Opteron (K8), tenían direccionamiento virtual de 48 bits [ 1 ] : 129–130 y direccionamiento físico de 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 otra que se extiende hacia abajo desde la más alta. Intentar usar direcciones que queden fuera de este rango provocará un fallo de protección general .
El límite del direccionamiento físico restringe la cantidad de RAM instalada a la que puede acceder el ordenador. En un sistema multiprocesador ccNUMA (Opteron), esto incluye la memoria instalada en los nodos remotos, ya que las CPU pueden direccionar directamente (y almacenar en caché) toda la memoria, independientemente de si se encuentra en el nodo principal o en uno remoto. El límite de 1 TB (40 bits) para la memoria física del K8 es enorme para los estándares típicos de los ordenadores personales, pero podría haber sido una limitación para su uso en superordenadores. 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 puede expandirse paso a paso sin efectos secundarios del software y, al mismo tiempo, ahorrar costos en su implementación. Para futuras expansiones, la arquitectura admite la expansión del espacio de direcciones virtuales a 64 bits y el direccionamiento de 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.
Véase también
Referencias
- 1 2 "Manual del programador de la arquitectura AMD64 Volumen 2: Programación del sistema" (PDF) . 2016. Archivado (PDF) del original el 13-07-2018 . Recuperado el 09-04-2015 .
- ↑ "Guía del desarrollador de BIOS y kernel (BKDG) para procesadores AMD de la familia 10h" (PDF) . pág. 30. Archivado (PDF) del original el 9 de agosto de 2017. Recuperado el 9 de abril de 2015.
El espacio de direcciones físicas se aumentó a 48 bits.
- ↑ AMD 2016 , pág. 24: "La arquitectura AMD64 mejora esta compatibilidad para permitir la traducción de direcciones virtuales de 64 bits a direcciones físicas de 52 bits, aunque las implementaciones del procesador pueden admitir espacios de direcciones virtuales y físicas 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 del original el 14 de febrero de 2012.
Una guía de las nuevas características del modo largo.
- Chourdakis, Michael (2015-05-21). "El tutorial de ensamblador en modo real, protegido y largo para PC" . Code Project .
- Modos de funcionamiento X86
- Implementación del lenguaje de programación