Ia32 introduccion

1,617 views
1,404 views

Published on

Introduccion IA-32

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,617
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
41
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ia32 introduccion

  1. 1. Arquitectura IA-32 Introducción Erwin Meza Vega
  2. 2. Arquitectura Intel IA-32Arquitectura 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.
  3. 3. 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).
  4. 4. Entorno de Ejecución• Espacio de Direcciones de Memoria• Espacio de Direcciones de Entrada/Salida• Registros• Estructuras de Datos
  5. 5. Entorno de Ejecución• Espacio de Direcciones de Memoria• Espacio de Direcciones de Entrada/Salida• Registros• Estructuras de Datos
  6. 6. Espacio de Direcciones de MemoriaPermite 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”
  7. 7. Espacio Lineal vs. Espacio Físico Espacio Lineal de Memoria 2N – 1 bytesRegistro de N bitsDirección de memoria Espacio Físico deSi los registros del Memoria (RAM)procesador tienen N bits yse usan para almacenardirecciones de memoria(bytes), es posible tener unespacio Lineal de 2N bytes. Dir. Lineal Dato en Memoria Dir. Física Dato 0
  8. 8. Espacio Lineal y Espacio FísicoEspacio 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
  9. 9. SegmentaciónConceptualmente 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 linealLos 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.
  10. 10. Dirección Lógica, Lineal, FísicaEl procesador en todo momento usa segmentación, por lo tanto las direcciones que se especifican en los programas son Direcciones LógicasLas Direcciones Lógicas en formato selector:offset se transforman en Direcciones Lineales, de acuerdo con el modo de operación del procesadorLas Direcciones Lineales se transforman en Direcciones Físicas, de acuerdo con el modo de operación del procesador
  11. 11. Segmentos y Referencias a Memoria 2N - 1 Espacio lineal de Memoria Segmento enDirección Lógica memoria lineal selector : Offset (N bits) Espacio físico de MemoriaCon el selector sehalla la dirección Byte referenciado Byte en memoria físicalineal de inicio delsegmento (base) offset + base 0 Dirección lógica Dirección lineal Dirección Física Selector : offset
  12. 12. 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 primerEn Modo Real solo se puede usar un MegaByte deoffset de 16 bits, por lo cual el 0 memoriatamaño de los segmentos es de 64 KB
  13. 13. Modo Plano 232 - 1 Segmento en Dirección lógica memoria (Mismoselector : offset tamaño del espacio lineal)En el modo planoel selector Byte referenciado Direcciónsiempre linealreferencia un offsetsegmento con En el modo plano elbase 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
  14. 14. Modo de Operación vs. Modo de Organización de Memoria
  15. 15. Entorno de Ejecución• Espacio de Direcciones de Memoria• Espacio de Direcciones de Entrada/Salida• Registros• Estructuras de Datos
  16. 16. Espacio de Direcciones de E/SEspacio 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
  17. 17. Espacio de Direcciones de E/S Espacio de direcciones de65535 E/S Disco estado 1 byte control 1 byte Controlador del disco Mecanismo físico del Disco 0
  18. 18. Entorno de Ejecución• Espacio de Direcciones de Memoria• Espacio de Direcciones de Entrada/Salida• Registros• Estructuras de Datos
  19. 19. RegistrosPermiten 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
  20. 20. RegistrosPermiten 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
  21. 21. Registros de Propósito GeneralSe 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
  22. 22. Registros de Propósito General
  23. 23. Registros de Propósito General
  24. 24. Registros y Memoria – Little Endian
  25. 25. RegistrosPermiten 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
  26. 26. Registros de SegmentoPermiten 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
  27. 27. Traducción de Dirección Lógica a Lineal (Modo Real)
  28. 28. Traducción de Dirección Lógica a Lineal (Modo Protegido)
  29. 29. RegistrosPermiten 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
  30. 30. Registro EFLAGSContiene 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
  31. 31. Registro EFLAGS
  32. 32. RegistrosPermiten 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
  33. 33. Registro EIPEl 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…
  34. 34. Registro EIP
  35. 35. RegistrosPermiten 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
  36. 36. Registros de ControlEl 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.
  37. 37. Registro CR0
  38. 38. Registro CR1Este registro se encuentra “reservado” en IA-32 para uso futuro.
  39. 39. Registro CR2Só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ísicaCuando 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
  40. 40. Registro CR3Este 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.
  41. 41. Registro CR4
  42. 42. Entorno de Ejecución• Espacio de Direcciones de Memoria• Espacio de Direcciones de Entrada/Salida• Registros• Estructuras de Datos
  43. 43. Estructuras de Datos del ProcesadorNecesarias 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
  44. 44. Modo Real: IDTIDT: Tabla de Descriptores de InterrupciónCuando ocurre una interrupción, el procesador “detiene” lo que está ejecutando y “pasa” a ejecutar una Rutina para atender la interrupciónLa 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
  45. 45. Modo Real: IDT Memoria RAMRutina de Manejo de Tabla de Descriptores de InterrupciónInterrupciónRutina de Manejo de Selector : offsetInterrupción 255 … Selector : offset Selector : offset 0 Selector : offset Descriptor IDT
  46. 46. Estructuras de Datos en Modo ProtegidoControlan 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
  47. 47. Estructuras de Datos en Modo ProtegidoPara 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.
  48. 48. 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
  49. 49. 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 offset15 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
  50. 50. Formato de un Descriptor de Segmento
  51. 51. 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’
  52. 52. 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 offset15 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
  53. 53. IDT: Tabla de Descriptores de InterrupciónEn 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
  54. 54. Funcionamiento General de la IDT Espacio Lineal de Direcciones Selector: Offset Interrupción N Tabla Global de Descriptores (GDT) Rutina deTabla de Descriptores Manejo de lade 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
  55. 55. Descriptor de Interrupción
  56. 56. Referencias Manuales de Intel http://www.intel.com/products/processor/manuals/Intel® 64 and IA-32 Architectures Software Developers Manual System Programming Guide

×