56
Arquitectura IA-32 Introducción Erwin Meza Vega

Ia32 introduccion

Embed Size (px)

DESCRIPTION

Introduccion IA-32

Citation preview

Page 1: Ia32 introduccion

Arquitectura IA-32

Introducción

Erwin Meza Vega

Page 2: Ia32 introduccion

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.

Page 3: Ia32 introduccion

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).

Page 4: Ia32 introduccion

Entorno de Ejecución

• Espacio de Direcciones de Memoria

• Espacio de Direcciones de Entrada/Salida

• Registros

• Estructuras de Datos

Page 5: Ia32 introduccion

Entorno de Ejecución

• Espacio de Direcciones de Memoria

• Espacio de Direcciones de Entrada/Salida

• Registros

• Estructuras de Datos

Page 6: Ia32 introduccion

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”

Page 7: Ia32 introduccion

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

Page 8: Ia32 introduccion

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

Page 9: Ia32 introduccion

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.

Page 10: Ia32 introduccion

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

Page 11: Ia32 introduccion

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

+

Page 12: Ia32 introduccion

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

+

Page 13: Ia32 introduccion

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

Page 14: Ia32 introduccion

Modo de Operación vs. Modo de Organización de Memoria

Page 15: Ia32 introduccion

Entorno de Ejecución

• Espacio de Direcciones de Memoria

• Espacio de Direcciones de Entrada/Salida

• Registros

• Estructuras de Datos

Page 16: Ia32 introduccion

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

Page 17: Ia32 introduccion

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

Page 18: Ia32 introduccion

Entorno de Ejecución

• Espacio de Direcciones de Memoria

• Espacio de Direcciones de Entrada/Salida

• Registros

• Estructuras de Datos

Page 19: Ia32 introduccion

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

Page 20: Ia32 introduccion

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

Page 21: Ia32 introduccion

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

Page 22: Ia32 introduccion

Registros de Propósito General

Page 23: Ia32 introduccion

Registros de Propósito General

Page 24: Ia32 introduccion

Registros y Memoria – Little Endian

Page 25: Ia32 introduccion

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

Page 26: Ia32 introduccion

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

Page 27: Ia32 introduccion

Traducción de Dirección Lógica a Lineal (Modo Real)

Page 28: Ia32 introduccion

Traducción de Dirección Lógica a Lineal (Modo Protegido)

Page 29: Ia32 introduccion

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

Page 30: Ia32 introduccion

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

Page 31: Ia32 introduccion

Registro EFLAGS

Page 32: Ia32 introduccion

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

Page 33: Ia32 introduccion

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…

Page 34: Ia32 introduccion

Registro EIP

Page 35: Ia32 introduccion

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

Page 36: Ia32 introduccion

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.

Page 37: Ia32 introduccion

Registro CR0

Page 38: Ia32 introduccion

Registro CR1

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

Page 39: Ia32 introduccion

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

Page 40: Ia32 introduccion

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.

Page 41: Ia32 introduccion

Registro CR4

Page 42: Ia32 introduccion

Entorno de Ejecución

• Espacio de Direcciones de Memoria

• Espacio de Direcciones de Entrada/Salida

• Registros

• Estructuras de Datos

Page 43: Ia32 introduccion

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

Page 44: Ia32 introduccion

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

Page 45: Ia32 introduccion

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

Page 46: Ia32 introduccion

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

Page 47: Ia32 introduccion

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.

Page 48: Ia32 introduccion

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

Page 49: Ia32 introduccion

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

Page 50: Ia32 introduccion

Formato de un Descriptor de Segmento

Page 51: Ia32 introduccion

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’

Page 52: Ia32 introduccion

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

Page 53: Ia32 introduccion

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

Page 54: Ia32 introduccion

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

Page 55: Ia32 introduccion

Descriptor de Interrupción

Page 56: Ia32 introduccion

Referencias

Manuales de Intel

http://www.intel.com/products/processor/manuals/

Intel® 64 and IA-32 Architectures Software Developer's Manual System Programming Guide