stringtranslate.com

Modo largo

En la arquitectura informática x86-64 , el modo largo es el modo 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 modo 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 a un procesador IA-32 cuando se ejecuta en modo real o modo protegido, que son modos compatibles 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 en la emulación IA-32.

En una computadora que ejecuta BIOS heredado , el BIOS y el cargador de arranque se ejecutan en modo real . Después de que la ejecución pasa a un núcleo de sistema operativo que admite x86-64, el núcleo verifica la compatibilidad de la CPU con el modo largo y luego ejecuta las instrucciones para ingresarlo. En una computadora que ejecuta UEFI , el firmware UEFI (excepto CSM y la ROM opcional heredada ), cualquier cargador de arranque UEFI y el núcleo del sistema operativo se ejecutan en modo largo.

Limitaciones de memoria

Si bien los tamaños de los registros 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 a las computadoras con suficiente memoria para requerir 64 bits completos. Mientras 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 de 64 bits completos y, por lo tanto, podrá utilizar espacios de direcciones progresivamente más grandes a medida que sean compatibles con los procesadores y sistemas operativos futuros.

Límites actuales

Las primeras CPU que implementaron la arquitectura x86-64, es decir, las CPU AMD Athlon 64 / Opteron (K8), tenían direccionamiento virtual de 48 bits [1] : 129–130  y 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 la otra que se extiende hacia abajo desde la más grande. Intentar utilizar direcciones que se encuentren fuera de este rango provocará un fallo de protección general .

El límite de 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 que está instalada en los nodos remotos, porque las CPU pueden direccionar directamente (y almacenar en caché) toda la memoria independientemente de si está en el nodo local o 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 tanto, puede direccionar hasta 256  TB de RAM. [2]

Cuando es necesario, la microarquitectura se puede ampliar paso a paso sin efectos secundarios del software y, al mismo tiempo, ahorrar costos con su implementación. Para futuras ampliaciones, 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. ^ ab "Manual del programador de la arquitectura AMD64, volumen 2: Programación del sistema" (PDF) . 2016. Consultado el 9 de abril de 2015 .
  2. ^ "Guía para desarrolladores de BIOS y kernel (BKDG) para procesadores AMD Family 10h" (PDF) . p. 30 . Consultado el 9 de abril de 2015 . El espacio de direcciones físicas aumentó a 48 bits.
  3. ^ AMD 2016, pág. 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 procesadores pueden soportar espacios de direcciones virtuales y físicas más pequeños".

Enlaces externos