Ia32 introduccion

Preview:

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

Recommended