Upload
erwin-meza
View
1.150
Download
3
Embed Size (px)
DESCRIPTION
Introduccion IA-32
Citation preview
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
Dirección de memoria
Registro de N bits
Espacio Lineal de Memoria 2N – 1 bytes
0
Espacio Físico de Memoria (RAM) Si los registros del
procesador tienen N bits y se usan para almacenar direcciones de memoria (bytes), es posible tener un espacio Lineal de 2N bytes.
Dir. Lineal Dir. Física Dato en Memoria Dato
Espacio Lineal y Espacio Físico
Espacio Lineal de Direcciones
Dirección Lineal
Espacio Físico La Dirección Lineal se transforma en Dirección Física de acuerdo con el Modo Operación del Procesador y las características habilitadas
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
selector Offset (N bits)
Dirección Lógica
Espacio lineal de Memoria Segmento en memoria lineal
:
base
offset
Con el selector se halla la dirección lineal de inicio del segmento (base)
Byte referenciado
Dirección lineal
2N - 1
0
Espacio físico de Memoria
Byte en memoria física
Dirección Física Dirección lógica Selector : offset
+
Modo Real
selector offset
Dirección Lógica
Espacio lineal de Memoria
Segmento en memoria (64 KB)
:
base
offset
En Modo Real el selector almacena la dirección base del segmento dividida en 16
Byte referenciado Dirección lineal
220 - 1
0
En Modo Real solo se puede usar un offset de 16 bits, por lo cual el tamaño de los segmentos es de 64 KB
En modo Real se puede acceder sólo al primer MegaByte de memoria
+
Modo Plano
selector offset
Dirección lógica
Segmento en memoria
(Mismo tamaño del espacio lineal)
:
base
offset
En el modo plano el selector siempre referencia un segmento con base 0
Byte referenciado Dirección lineal
0
232 - 1
offset Dirección lineal =
En el modo plano el tamaño de todos los segmentos es igual al tamaño del espacio lineal. Para procesadores de 32 bits, este tamaño es 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
1 byte
0
65535
1 byte
Disco
estado
control
Controlador del disco
Espacio de direcciones de E/S
Mecanismo físico del Disco
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
IDT
Selector : offset
Selector : offset
Selector : offset
…
Selector : offset
0
255
Rutina de Manejo de Interrupción
Rutina de Manejo de Interrupción
Descriptor
Tabla de Descriptores de Interrupción
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
Selector Offset
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
…
Protección | Tipo Base | Límite
Dirección Lógica
Índice
TI
R P L
3
0
2 1 15
15
TI: Indicador de Tabla 0 = GDT, 1 = LDT
RPL: Nivel de Privilegios: 0 - 3
31 0
base
0 31
offset
0 31 +
Dirección Lineal
Base de la GDT Tamaño de la GDT
0 31 0 15
Registro GDTR
0
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
Selector Offset
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
Protección | Tipo Base | Límite
…
Protección | Tipo Base | Límite
Dirección Lógica
Índice TI
R P L
3
0
2 1 15
15
TI: Indicador de Tabla 0 = GDT, 1 = LDT
RPL: Nivel de Privilegios: 0 - 3
31 0
base
0 31
offset
0 31 +
Dirección Lineal
Base de la GDT Tamaño de la GDT
0 31 0 15
Registro GDTR
0
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
Interrupción N
Tabla de Descriptores de Interrupción (IDT)
Descriptor de Interrupción N
Descriptor de Interrupción 0
Espacio Lineal de Direcciones
Límite (tamaño de la IDT) : 16 bits
Dirección Lineal de la IDT: 32bits IDTR
Descriptor de Segmento
Selector: Offset
Tabla Global de Descriptores (GDT)
Base
Offset
Rutina de Manejo de la Interrupción N Segmento
GDTR Límite de la GDT
Base de la GDT
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