You are on page 1of 56

Arquitectura IA-32

Introducción

Erwin Meza Vega


Arquitectura Intel IA-32
Arquitectura de microprocesadores creada por Intel
• Incluye una gran cantidad de procesadores Intel e
Intel Compatibles (AMD, VIA, etc.)
• Comienza con los procesadores 386 (registros de
32 bits), en 1985.
• Abarca hasta procesadores de última generación
• Cada generación de procesadores incluye mejoras
a la arquitectura, pero a nivel básico todas son
compatibles.
Modos de Operación
• Modo protegido: Modo nativo de operación del procesador.
• Modo Real (Modo Real de Direcciones): Modo de operación en el
cual opera el procesador cuando es iniciado o re-iniciado
• Modo de Mantenimiento: Permite realizar tareas de mantenimiento
y depuración
• Modo IA32e : Modo de operación que existe en procesadores de
64 bits
• Modo de Compatibilidad: Permite ejecutar código en modo protegido
• Modo de 64 bits: Permite tener acceso a todas las capacidades de 64
bits (Registros, instrucciones, direccionamiento de memoria, etc).
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Espacio de Direcciones de Memoria
Permite manejar la memoria como una secuencia de
bytes
• Espacio Lineal de Direcciones: Es aquel que puede ser
referenciado por los registros del procesador
• Espacio Físico de Direcciones: Espacio de memoria
que efectivamente se tiene (RAM)
• El espacio lineal en la Arquitectura IA-32 se referencia
en “Regiones”, denominadas “Segmentos”. De esta
forma en IA-32 se opera con memoria “Segmentada”
Espacio Lineal vs. Espacio Físico
Espacio Lineal de Memoria
2N – 1 bytes
Registro de N bits
Dirección de memoria
Espacio Físico de
Si los registros del Memoria (RAM)
procesador tienen N bits y
se usan para almacenar
direcciones de memoria
(bytes), es posible tener un
espacio Lineal de 2N bytes.

Dir. Lineal Dato en Memoria Dir. Física Dato

0
Espacio Lineal y Espacio Físico
Espacio Lineal de Direcciones

La Dirección Lineal se Espacio Físico


transforma en Dirección
Física de acuerdo con el
Modo Operación del
Procesador y las
características habilitadas

Dirección Lineal Dirección Física


Segmentación
Conceptualmente existen tres modos diferentes de usar el
espacio de direcciones de memoria:
• Modo Segmentado: El espacio lineal se divide en Segmentos de
tamaño variable.
• Modo Real: El espacio lineal se maneja como una serie de
“Segmentos” de tamaño fijo (64 KB)
• Modo Plano (Flat): El espacio lineal se maneja como segmentos
que ocupan todo el espacio lineal
Los dos últimos casos son casos especiales del Modo
Segmentado, por lo cual el procesador siempre usa
segmentación.
En IA-32 los segmentos se pueden superponer.
Dirección Lógica, Lineal, Física
El procesador en todo momento usa segmentación,
por lo tanto las direcciones que se especifican en
los programas son Direcciones Lógicas
Las Direcciones Lógicas en formato selector:offset se
transforman en Direcciones Lineales, de acuerdo
con el modo de operación del procesador
Las Direcciones Lineales se transforman en
Direcciones Físicas, de acuerdo con el modo de
operación del procesador
Segmentos y Referencias a Memoria
2N - 1 Espacio lineal de Memoria
Segmento en
Dirección Lógica memoria lineal
selector : Offset (N bits)

Espacio físico de Memoria


Con el selector se
halla la dirección Byte referenciado Byte en memoria física
lineal de inicio del
segmento (base)
offset
+
base
0
Dirección lógica Dirección lineal Dirección Física
Selector : offset
Modo Real
220 - 1 Espacio lineal de Memoria

Dirección Lógica Segmento en


memoria (64
selector : offset
KB)

En Modo Real el selector


almacena la dirección base Dirección lineal
Byte referenciado
del segmento dividida en 16
offset
+
En modo Real se
base puede acceder
sólo al primer
En Modo Real solo se puede usar un MegaByte de
offset de 16 bits, por lo cual el 0 memoria
tamaño de los segmentos es de 64 KB
Modo Plano
232 - 1 Segmento en
Dirección lógica memoria
(Mismo
selector : offset tamaño del
espacio
lineal)
En el modo plano
el selector Byte referenciado Dirección
siempre lineal
referencia un offset
segmento con En el modo plano el
base 0 tamaño de todos
base los segmentos es
igual al tamaño del
espacio lineal. Para
0 procesadores de 32
bits, este tamaño es
offset = Dirección lineal 232 = 4 GB
Modo de Operación vs. Modo de
Organización de Memoria
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Espacio de Direcciones de E/S
Espacio de direcciones independiente que tiene un
tamaño de 65536 bytes (64K)
Las direcciones de este espacio se mapean a los
registros de los controladores de dispositivos de
entrada / salida como el teclado, los discos o el
mouse.
Su acceso se realiza a través de un par de
instrucciones específicas del procesador (in y out).
Los registros poseen por lo general un tamaño de
un byte o dos bytes
Espacio de Direcciones de E/S
Espacio de direcciones de
65535 E/S

Disco

estado

1 byte control

1 byte
Controlador del
disco Mecanismo
físico del Disco

0
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Propósito General
Se usan para almacenar datos y/o referencias a la
memoria.
En procesadores de 32 bits existen ocho (8) registros
de propósito general, cada uno de los cuales tiene
un tamaño de 32 bits. Estos registros son: EAX,
EBX, ECX, EDX, ESI, EDI, ESP y EBP.
Para procesadores de 64 bits, los registros se
denominan RAX, RBX, RCX, RDX, RSI, RDI, RSP y
RBP
Registros de Propósito General
Registros de Propósito General
Registros y Memoria – Little Endian
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Segmento
Permiten almacenar apuntadores al espacio de direcciones lineal.
Los procesadores IA-32 poseen seis (6) registros de segmento.
Estos son:
CS (código)
DS (datos)
ES (datos)
FS (datos)
GS (datos)
SS (pila)
Los registros de segmento almacenan la parte del “Selector” de una
dirección lógica en IA-32
Traducción de Dirección Lógica a Lineal
(Modo Real)
Traducción de Dirección Lógica a Lineal
(Modo Protegido)
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registro EFLAGS
Contiene una serie de banderas (Flags) que tienen
diversos usos. Algunas reflejan el estado del
procesador y otras controlan su ejecución.
Existen instrucciones específicas para modificar el
valor de EFLAGS (ej: sti, cli).
Para procesadores de 64 bits, este registro se
denomina RFLAGS
Registro EFLAGS
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registro EIP
El procesador siempre ejecuta la instrucción que se
encuentra en la dirección lineal obtenida a partir de la
dirección lógica CS: EIP (en modo protegido) o CS: IP
(en modo real)
Ciclo Fetch – Decode – Execute:
• El procesador lee la instrucción apuntada por CS:EIP
• Incrementa EIP
• Decodifica la instrucción y los operandos
• Ejecuta la instrucción
• El proceso se repite…
Registro EIP
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Control
El procesador posee cinco (5) registros de control
CR0 a CR4. Estos registros junto con EFLAGS
controlan la ejecución del procesador. En
procesadores de 64 bits, el procesador cuenta
además con el registro CR8.
Registro CR0
Registro CR1

Este registro se encuentra “reservado” en IA-32 para


uso futuro.
Registro CR2

Sólo se usa cuando se ha activado la “Paginación”, una


característica usada por la MMU en modo protegido
para traducir una dirección lineal a dirección física
Cuando una dirección lineal no referencia a una “página”
que se encuentre en memoria, el procesador lanza una
Excepción (Fallo de página) y almacena la dirección
que generó en fallo en CR2
Registro CR3

Este registro almacena la dirección de memoria en l


cual se almacena el “Directorio de Tablas de
Página”. Esta estructura de datos se usa por la
MMU cuando se ha habilitado la paginación en
Modo Protegido.
Registro CR4
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Estructuras de Datos del Procesador
Necesarias para la ejecución del procesador, en sus
diferentes modos de operación
• En Modo Real: IDT
• En Modo Protegido: GDT, LDT, IDT
• Multi – Tarea: TSS
Modo Real: IDT
IDT: Tabla de Descriptores de Interrupción
Cuando ocurre una interrupción, el procesador “detiene” lo que está
ejecutando y “pasa” a ejecutar una Rutina para atender la
interrupción
La IDT almacena “Descriptores” que le permiten al procesador
conocer la ubicación de memoria de cada rutina de manejo de
interrupción
• En Modo Real, la IDT se encuentra al inicio de la memoria física
(posición 0) y contiene 256 entradas.
• La entrada i (descriptor) contiene la dirección lógica (selector : offset)
en la cual se encuentra la Rutina de Manejo de la Interrupción i
• Es configurada por la BIOS cuando inicia el sistema
Modo Real: IDT
Memoria RAM

Rutina de Manejo de
Tabla de Descriptores de Interrupción
Interrupción

Rutina de Manejo de Selector : offset


Interrupción 255

Selector : offset

Selector : offset

0 Selector : offset Descriptor

IDT
Estructuras de Datos en Modo Protegido
Controlan la ejecución del procesador en Modo
Protegido
• GDT: Tabla Global de Descriptores de Segmento
• LDT: Tabla Local de Descriptores de Segmento
• IDT: Tabla de Descriptores de Interrupción
• TSS: Segmento de Estado de Tarea
• PTD: Directorio de Tablas de Página
Estructuras de Datos en Modo Protegido
Para operar en Modo Protegido no es necesario configurar
todas las estructuras de datos
• Como mínimo se requiere configurar y cargar la GDT para entrar
en Modo Protegido
• Si se planea usar interrupciones (e.g. usar dispositivos de E/S o el
timer), se debe configurar y cargar la IDT
• Si se planea implementar multi-tarea, se debe configurar y cargar
un TSS
• Si se planea usar paginación para administrar la memoria, se debe
configurar y cargar un Directorio de Tablas de Página
• Cada tarea puede tener opcionalmente su propia Tabla Local de
Descriptores (LDT) o puede usar la GDT.
GDT: Tabla Global de Descriptores
• Controla la gestión de la memoria en Modo Protegido
• Consiste en una secuencia (arreglo) de “Descriptores” de
Segmento, cada uno describe un segmento de memoria
• Se debe configurar como mínimo un descriptor de segmento
para el código del kernel, y un descriptor de segmento para
los datos del kernel
• El procesador referencia la GDT con un registro especial,
llamado GDTR.
• Toda dirección en código es lógica
• Un registro de segmento almacena el selector
• Un registro de propósito general almacena el desplazamiento
Funcionamiento General de la GDT
Dirección Lógica
15 0 31 0
Selector Offset
31 0

Protección | Tipo base


Base | Límite
T R
I P … 31
+ 0
Índice
L
Protección | Tipo
offset
15 3 2 1 0
Base | Límite
Protección | Tipo
Base | Límite Dirección Lineal
Protección | Tipo
Base | Límite
TI: Indicador de Tabla Registro GDTR
0 = GDT, 1 = LDT
31 0 15 0
RPL: Nivel de Base de la GDT Tamaño de la GDT
Privilegios: 0 - 3
Formato de un Descriptor de Segmento
LDT: Tabla Local de Descriptores
• Tiene el mismo formato de la GDT
• Todas sus entradas (incluyendo la primera) se
pueden utilizar
• Puede ser usada para definir segmentos de
memoria para múltiples tareas
• El procesador sabe en cual tabla buscar un
descriptor de segmento a partir de un selector, por
su atributo ‘TI’
Funcionamiento General de la GDT / IDT
Dirección Lógica
15 0 31 0
Selector Offset
31 0

Protección | Tipo base


Base | Límite
T R +

Índice I P 31 0
L
Protección | Tipo
offset
15 3 2 1 0
Base | Límite
Protección | Tipo
Base | Límite Dirección Lineal
TI: Indicador de Tabla
Protección | Tipo
0 = GDT, 1 = LDT
Base | Límite
Registro GDTR
31 0 15 0
RPL: Nivel de Base de la GDT Tamaño de la GDT
Privilegios: 0 - 3
IDT: Tabla de Descriptores de Interrupción
En modo protegido, cada entrada de la IDT
almacena un descriptor que contiene la dirección lógica
(selector : offset) en la cual se encuentra la Rutina de
Manejo de una interrupción (generalmente dentro del
código del kernel).
• No es necesario configurarla inicialmente, pero hasta
que no se configura no se pueden habilitar las
interrupciones
• Debe ser configurada por el kernel antes de habilitar
las interrupciones
Funcionamiento General de la IDT
Espacio Lineal de Direcciones
Selector: Offset
Interrupción N
Tabla Global de
Descriptores (GDT)

Rutina de
Tabla de Descriptores
Manejo de la
de Interrupción (IDT)
Interrupción N Segmento
Offset
Descriptor de
Segmento

Base
Descriptor de
Interrupción N

Base de la GDT
Descriptor de Límite de la GDT
GDTR
Interrupción 0

Dirección Lineal de la IDT: 32bits IDTR

Límite (tamaño de la IDT) : 16 bits


Descriptor de Interrupción
Referencias

Manuales de Intel
http://www.intel.com/products/processor/manuals/
Intel® 64 and IA-32 Architectures Software Developer's Manual
System Programming Guide

You might also like