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 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 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 . Después de que la ejecución pasa a un kernel del sistema operativo que admite x86-64, el kernel verifica la compatibilidad de la CPU con el modo largo y luego ejecuta las instrucciones para ingresarlo. Con una computadora que ejecuta UEFI , el firmware UEFI (excepto CSM y la ROM opcional heredada ), cualquier cargador de arranque UEFI y el kernel del sistema operativo se ejecutan en modo largo.

Limitaciones de memoria

Si bien los tamaños de los registros han aumentado a 64 bits con respecto a la arquitectura x86 anterior , el direccionamiento de la memoria aún no se ha aumentado a los 64 bits completos. Por el momento, no resulta práctico equipar a los ordenadores con memoria suficiente para necesitar 64 bits completos. Mientras ese siga siendo el caso, las unidades de carga/almacenamiento, etiquetas de caché , MMU y TLB se pueden simplificar sin 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 cada vez más grandes a medida que sean compatibles con procesadores y sistemas operativos futuros.

Límites actuales

Las primeras CPU que implementaron la arquitectura x86-64, concretamente 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 se extiende hacia abajo desde la dirección más grande. Intentar utilizar direcciones que queden fuera de este rango provocará un fallo de protección general .

El límite de direccionamiento físico limita la cantidad de RAM instalada a la que la computadora puede acceder. En un sistema multiprocesador ccNUMA (Opteron), esto incluye la memoria que está instalada en los nodos remotos, porque las CPU pueden direccionar (y almacenar en caché) directamente toda la memoria independientemente de si está en el nodo principal 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 las 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 efectos secundarios del software y, al mismo tiempo, ahorrar costos 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

Referencias

  1. ^ ab "Manual del programador de 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 de la familia 10h" (PDF) . pag. 30 . Consultado el 9 de abril de 2015 . El espacio de direcciones físicas aumentó a 48 bits.
  3. ^ AMD 2016, pag. 24: "La arquitectura AMD64 mejora este soporte para permitir la traducción de direcciones virtuales de 64 bits a direcciones físicas de 52 bits, aunque las implementaciones de procesador pueden admitir espacios de direcciones virtuales y físicas más pequeños".

enlaces externos