Descripción de la arquitectura de 64 bits
Introducción
En una entrada anterior hacía una descripción general de la arquitectura de un ordenador, en esta entrada voy a afinar un poco y voy
a hacer una breve visión de la arquitectura de 64 bits también conocida como x86-64 porque se trata
de una ampliación de la arquitectura
x86. La arquitectura x86 comenzó con Intel con el procesador Intel 8086 en el
año 1978 como arquitectura de 16 bits. Después esta arquitectura evolucionó hasta
una arquitectura de 32 bits cuando apareció el procesador Intel 80386 en el año
1985, denominada i386 o
x86-32. AMD amplió esta arquitectura de 32 bits de Intel hasta
una de 64 bits y la llamó x86-64.
Intel pronto adoptó las
extensiones de la arquitectura de AMD bajo el nombre Intel 64.
Tomado de datuopinion.com |
Con el procesador Itanium, Intel lanzó la arquitectura
denominada IA-64, derivada de la IA-32 y que no es compatible con las
arquitecturas x86, x86-32 o x86-64. La arquitectura IA-64 se originó en
Hewlett-Packard (HP) y más tarde fue desarrollada con Intel para utilizarse en
sistemas de alto rendimiento.
Modos de operación
Los procesadores con arquitectura x86-64 deben mantener
la compatibilidad con los procesadores de 32 bits por eso presentan los mismos
modos de operación lo que permite ejecutar aplicaciones de 16 y 32 bits, por
otra parte incluyen un modo nuevo llamado modo extendido en el que es posible trabajar en modo real de 64 bits.
Además de los múltiples modos de operación con los que
puede contar un microprocesador, existen dos modos fundamentales que todo microprocesador
debe tener: El modo supervisor y el modo protegido.
El modo supervisor
Es el que utilizar el núcleo del sistema para ejecutar
tareas de bajo nivel que precisan de un acceso sin restricciones al hardware, suelen
ser tareas como el control de la memoria o la comunicación con otros dispositivos.
El modo protegido
Se utiliza para casi todo el resto de las tareas. Al
ejecutar programas en modo protegido utilizaremos el hardware haciendo llamadas
al sistema operativo, que a su vez es el que lo controla en modo supervisor.
Puede haber otros modos similares al protegido, por
ejemplo el modo virtual se utiliza para
emular otros procesadores de la misma familia, y de este modo mantiene la compatibilidad con procesadores anteriores.
Cuando se enciende un equipo, se ejecutan los programas
de la BIOS que tienen acceso ilimitado al hardware en modo, una vez iniciado el
sistema operativo, se pasa el control a otros programas con lo que el procesador
se pone ya en modo protegido.
En modo protegido, los programas pueden acceder a un
conjunto de instrucciones más limitado, sólo podrán abandonar el modo protegido realizando
una petición de interrupción que devuelva
el control al sistema operativo; de este modo se garantiza el control para
acceder al hardware.
El modo de 64 bits
Los elementos que son visibles desde el punto de vista
del programador son los siguientes:
Espacio de memoria: un programa trabajando este modo tiene acceso a un
espacio de direcciones de 264 bytes. El espacio real que puede gestionar el procesador depende de
la implementación de la arquitectura.
Registros:
suelen consistir en 16 registros de propósito general de 64 bits cada uno, y
permiten operaciones
de byte (8 bits), palabra (16 bits), palabra doble (32 bits) y palabra
cuadruple (64 bits).
Además dispone de un registro contador de programa
(RIP, instruction pointer
register)
de 64 bits.
El registro de bits de estado también es de 64 bits
(RFLAGS). Los 32 bits de la parte alta están reservados y son inaccesibles; los
32 bits de la parte baja son accesibles y corresponden a los mismos bits que
una arquitectura de 32 bits. (registro EFLAGS).
Organización de la memoria
El procesador lee la memoria usando direcciones físicas
de memoria.
El tamaño físico de la memoria accesible para los
procesadores depende de la implementación: supera los 4 Gbytes, pero es
inferior a los 264 bytes posibles.
En el modo de 64 bits, la arquitectura permite un
espacio de direcciones virtual o lineal de 64 bits (direcciones de 0 a 264 –
1), pero el espacio de direcciones físico es inferior al espacio de direcciones
lineal, esto hace necesario un mecanismo de correspondencia entre las
direcciones lineales y las direcciones físicas que llamaremos mecanismo de
paginación.
Paginación
Este mecanismo lo gestiona el hardware del procesador y
el sistema operativo. Las direcciones virtuales son traducidas a direcciones
físicas de memoria utilizando un sistema jerárquico de tablas de traducción
gestionadas por el software del sistema (sistema operativo).
Una dirección virtual se divide en campos, y cada campo
se comporta como un índice dentro de una de las tablas de traducción. Cada uno
de estos valores en la posición indexada actuará como una dirección base de la
tabla de traducción siguiente.
Orden de los bytes
Los procesadores 64 bits utilizan un sistema de
ordenación de los bytes cuando se accede a los datos que se encuentran
almacenados en la memoria. En concreto, se utiliza un sistema en el cual el
byte de menos peso de un dato ocupa la dirección más baja de memoria (little-endian).
Los registros también utilizan el modelo little-endian y por este motivo el byte menos significativo de un
registro se denomina byte 0.
Tamaño de las direcciones
Los programas que son ejecutados en modo de 64 bits
generan directamente direcciones de 64 bits.
Modo compatibilidad
Los programas que se ejecutan en el modo compatibilidad
generan direcciones de 32 bits.
Estas direcciones se extienden a 64 bits añadiendo
ceros a los 32 bits más significativos de la dirección. Este proceso es
gestionado por el hardware del procesador.
Tamaño de los desplazamientos y de los valores inmediatos
En el modo de 64 bits las instrucciones de desplazamiento
de los direccionamientos relativos y los valores inmediatos es de 32 bits excepto
la instrucción MOV que permite cargar un valor inmediato de 64 bits.
No hay comentarios:
Publicar un comentario