ESTRUCTURA DE MICROPROCESADORES La arquitectura IA32 Profesor Ing. Johan Carvajal Godínez JCG-2009 AGENDA DE LA CLASE 1. Conceptos básicos 2. La arquitectura IA32 3. Evolución de los microprocesadores Intel 4. Administración de la memoria en IA32 5. Componentes de una microcomputadora IA32 6. Niveles de programación para IA32 JCG-2009 Diseño básico de un microcomputador • El reloj sincroniza la operación del sistema • Una unidad de control (CU) coordina la secuencia de ejecución de instrucciones. • Una unidad aritmético-lógica (ALU) realiza los cálculos y operaciones lógicas data bus registers Central Processor Unit (CPU) ALU CU Memory Storage Unit clock control bus address bus JCG-2009 I/O Device #1 I/O Device #2 Importancia del reloj • Sincroniza los elementos del sistema (CPU-BUS-componentes) • Establece la base del tiempo para medir el rendimiento del sistema. • Se utiliza para disparar eventos que determinan la operación del sistema one cycle 1 0 JCG-2009 Ciclo de ejecución de una instrucción PC I-1 memory op1 op2 program I-2 I-3 I-4 fetch read registers registers write write I-1 decode • Búsqueda de la instrucción (Fetch) • Decodificacion (Decode) • Búsqueda de operandos • Ejecución • Almacenamiento del resultado flags ALU execute (output) JCG-2009 instruction register Implementación multimulti-etapa • La implementación multi-etapa (pipelining) posibilita la ejecución de instrucciones en paralelo. • La instrucción se divide en etapas discretas con una función específica Stages Etapas usadas comúnmente: S1 1. Bus Interface Unit (S1) 1 5. Segment Unit (S5) Cycles 4. Execution Unit (S4) 7 10 11 12 JCG-2009 S6 I-1 I-1 6 9 La figura muestra el flujo de un procesador sin ¨PIPELINING¨ S5 I-1 5 8 6. Paging Unit (S6) S4 I-1 3 4 3. Instruction Decode Unit (S3) S3 I-1 2 2. Code Pre-fetch Unit (S2) S2 I-1 I-2 I-2 I-2 I-2 I-2 I-2 Ejecución PIPELINED Hace un uso eficiente de las estructuras del microprocesador y logra mejor rendimiento a nivel de cantidad de instrucciones procesadas Cycles Stages S2 1 S1 I-1 2 I-2 I-1 3 4 5 6 7 I-2 S3 S4 S5 S6 Para k estados y n instrucciones se requieren un número de ciclos: I-1 I-2 I-1 I-2 k + (n – 1) I-1 I-2 JCG-2009 I-1 I-2 Riesgos del ¨Pipelining¨ Pipelining¨ Cuando una etapa requiere dos ciclos de reloj o más, esos ciclos adicionales se pierden en ¨ las otras etapas del ¨PIPE¨ Stages Cycles S1 S2 S3 exe S4 1 I-1 2 I-2 I-1 3 I-3 I-2 I-1 I-3 I-2 I-1 I-3 I-1 4 5 S5 k + (2n – 1) 6 7 I-2 I-2 I-1 8 I-3 I-2 9 I-3 10 11 S6 Para k estados y n instrucciones se requieren un número de ciclos: I-1 I-2 I-3 I-3 JCG-2009 burbujas Procesador Superescalar Un procesador superescalar tiene múltiples etapas de ejecución. Por ejemplo en el siguiente diagrama la unidad de ejecución posee dos flujos (u y v) Stages Cycles S4 S2 1 S1 I-1 2 I-2 I-1 3 4 I-3 I-4 I-2 I-3 I-1 I-2 I-1 I-4 I-3 I-4 I-1 I-3 I-2 I-2 I-1 I-3 I-4 I-2 I-1 I-4 I-3 I-4 I-2 I-3 5 6 7 8 9 S3 u v S5 S6 Para k estados y n instrucciones se requieren un número de ciclos: k +n 10 I-4 JCG-2009 Lectura de Memoria Normalmente el ciclo de lectura de memoria en un sistema basado en microprocesador requiere la introducción de ciclos de espera puesto que la memorias de almacenamiento masivo son lentas. Cycle 1 Cycle 2 Cycle 3 CLK Address ADDR RD Data DATA JCG-2009 Cycle 4 Memoria caché • La caché es una memoria SRAM de alta velocidad que se encuentra en el CPU – Level-1 caché: Acceso ultra-rápido por el núcleo (datos para unidades de ejecución) – Level-2 caché: Acceso rápido por el núcleo (instrucciones precargadas al núcleo) – Level-3 caché: Acceso rápido por todos los núcleos • Cache hit: cuando el dato a leer se encuentra en la memoria caché • Cache miss: cuando el dato a leer NO se encuentra en la memoria caché JCG-2009 Como se ejecuta un programa JCG-2009 Ambiente multitarea • Actualmente los sistemas operativos pueden ejecutar múltiples programas simultáneamente • Un mismo programa puede generar múltiples ¨hilos¨ ¨ en su ejecución • El sistema operativo administra los recursos del sistema asignando un tiempo especifico a cada programa en ejecución. • El sistema debe tener habilidad para cambiar de tareas rápidamente de forma que el usuario perciba ejecución en tiempo real JCG-2009 Arquitectura IA32 • • • • Modos de operación Ambiente básico de ejecución Unidad de punto flotante Evolución de los microprocesadores Intel JCG-2009 Modos de operación • Modo Protegido: – Modo Nativo (Windows, Linux) • Modo Real – Nativo MS-DOS • Modo de manejo del Sistema – Diagnostico, recuperación, debug Virtual-8086 • Híbrido protegido-real • Cada aplicación tiene su sistema 8086 JCG-2009 Ambiente básico de ejecución Permite conocer para cada aplicación: • Administración de la memoria • Utilización de los registros – Registros de propósito general – Registros de uso específico • Banderas de estado (FLAGS) • Manejo de operaciones específicas – MMX – FPU – SSE JCG-2009 Administración de la memoria En ambiente de diseño con microprocesadores se habla de • Memoria Física • Memoria lógica Administración del acceso a memoria • Segmentación • Paginación JCG-2009 Utilización de los registros 32-bit General-Purpose Registers EAX EBP EBX ESP ECX ESI EDX EDI 16-bit Segment Registers EFLAGS EIP JCG-2009 CS ES SS FS DS GS Acceso de los Registros • Se pueden utilizar con su nombre de 8,16 y 32 bits • Aplica para EAX, EBX, ECX, y EDX 8 8 AH AL AX EAX 8 bits + 8 bits 16 bits 32 bits JCG-2009 Registros Base e índice A continuación se muestra como se accede a los registros Base e índice: JCG-2009 Utilización especifica de los registros • Registros de propósito general – EAX – Acumulador – ECX – Contador – ESP – Puntero de pila – ESI, EDI – Índices – EBP – Puntero de base • Segmento – CS – Segmento de código – DS – segmento de datos – SS – segmento de pila – ES, FS, GS – segmentos adicionales JCG-2009 Utilización especifica de los registros Control de ejecución • EIP – Apuntador de Instrucción (PC) • EFLAGS – Banderas de control y estado JCG-2009 Banderas de estado (FLAGS) • Carry – Desbordamiento en una operación aritmética sin signo • Overflow – Desbordamiento en una operación aritmética con signo • Sign – El resultado es negativo • Zero – El resultado es cero • Auxiliary Carry – Acarreo entre los bits 3 y 4 • Parity – La suma de unos es un numero par JCG-2009 FPU, MMX, SSE • Ocho registros de 80 bits para datos de FPU • ST(0), ST(1), . . . , ST(7) – Ordenados en una pila – Accesibles por todas las operaciones del FPU • Ocho registros de 64 bits para operaciones MMX • Ocho registros de 128 bits para operaciones SIMD (Single Instruction, Multiple Data ) JCG-2009 ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) Evolución de los microprocesadores INTEL • • • • • Intel 8086, 80286 Familia de procesadores IA32 Familia de Procesadores P6 Core I7 Evolución de CISC a RISC JCG-2009 Los Clásicos Intel • Intel 8080 – – – – – Espacio de memoria direccionable hasta 64KB Registros de 8 bits Sistema operativo CP/M Arquitectura de bus S-100 Unidad de disco magnético de 8 pulgadas!!! • Intel 8086/8088 – – – – – Núcleo de la IBM-PC (8088) Espacio de memoria direccionable hasta 1MB Registros de 16 bits Bus de datos de 16 bits (8 bits para 8088) Unidad de punto flotante(8087) por separado JCG-2009 La microcomputadora IBM-AT • Intel 80286 – Hasta 16 MB de memoria RAM – Memoria protegida – Más rápido que 8086 – Introdujo la arquitectura de interconexión IDE – Unidad de punto flotante(80287) JCG-2009 Familia de procesadores IA32 • Intel386 – Hasta 4 GB RAM, Registros de 32 bits, paginación y manejo de memoria virtual • Intel486 – Se implementó ¨pipelining¨ ¨ de instrucciones • Pentium – Superescalar, bus de direcciones de 32 bits, bus interno de 64 bits. JCG-2009 La familia Intel P6 • Pentium Pro – Optimización del manejo de los microcódigos • Pentium II – Mejorado para multimedia con set MMX • Pentium III – Implementa set de instrucciones SSE (SIMD) • Pentium 4 – Microarquitectura Intel NetBurst, optimizado para aplicaciones multimedia • Core2 – Mejora el manejo de caché y el consumo de potencia. Elimina HT. Virtualización nativa JCG-2009 La microarquitectura P6 JCG-2009 La arquitectura Corei7 • Primer Quadcore nativo de INTEL • Implementa tecnología Simultaneous Multi-Threading (SMT) • Mejoras en la memoria caché con una nueva arquitectura de tres niveles • Tecnología de interfaz Intel QuickPath Interconnect • Nuevo Conjunto de Instrucciones SSE 4.2 JCG-2009 Set de Instrucciones • CISC – complex instruction set – – – – Gran variedad de instrucciones Operaciones de alto nivel Se requiere de un interprete de microcódigo ejemplo: Intel 8086 • RISC – reduced instruction set – – – – Instrucciones simples y compactas Set de instrucciones reducido Ejecutadas directamente por hardware ejemplos: • ARM (Advanced RISC Machines) • DEC Alpha (de HP) JCG-2009 Manejo de la memoria en IA32 • Arquitectura administración de la memoria • Modo Real • Cálculo de una dirección lineal • Modo Protegido • Modo multi-segmento • Paginación JCG-2009 Arquitectura de acceso de la memoria IA32 JCG-2009 Modo Real • Máximo 1MB de memoria direccionable • La aplicación puede acceder cualquier localización de memoria • Monotarea • Ambiente de operación MS-DOS • Esquema de direccionamiento segmentado – Segmento (16 bits) – Desplazamiento (16 bits) JCG-2009 Memoria segmentada El calculo de la dirección física (linear address) es la combinación de del segmento y del desplazamiento a partir de la dirección de segmento F0000 E0000 8000:FFFF D0000 Un segmento C0000 B0000 A0000 90000 80000 Dir. Física= Seg*16+Offset 70000 60000 8000:0250 50000 0250 40000 30000 8000:0000 20000 10000 00000 seg ofs JCG-2009 Cálculo de una dirección física Ejemplo: A que valor de dirección física corresponde el siguiente conjunto de segmento : desplazamiento? • 08F1:0100 Valor del segmento ajustado: 0 8 F 1 0 Valor del desplazamiento: Dirección Física: + 0 1 0 0 0 9 0 1 0 JCG-2009 Modo Protegido(1/2) • Memoria mapeable hasta 4GB (00000000 hasta FFFFFFFFh) • A cada programa se le asigna una partición de memoria que solo es accesible por dicho programa, lo cual lo protege • Diseñado para ambiente multi-tarea • La asignación de monto de memoria está a cargo del OS JCG-2009 Modo Protegido(2/2) • Se administra una tabla de descriptores de segmento • Cada programa obtiene: – Área para CS, DS, SS – Un descriptor de segmento – Un descriptor global asociado a GDT • Utiliza un modelo de segmentación plano (flat) JCG-2009 Modelo de segmentación plano • Tabla de descriptores globales única (GDT) • Todos los segmentos se mapean en un área de 32 bits not used Segment descriptor, in the Global Descriptor Table FFFFFFFF (4GB) 00040000 limit access 00000000 00040 ---- physical RAM base address 00000000 JCG-2009 Modelo multimulti-segmento • Cada programa tiene tabla de descriptores locales – Esa tabla administra cada segmento utilizado por el programa RAM Local Descriptor Table 26000 base limit 00026000 0010 00008000 000A 00003000 0002 access 8000 3000 JCG-2009 Paginación • Administrado directamente por el CPU • Se divide cada segmento en paginas de 4K las cuales se denominan paginas • La suma de la memoria utilizada por todos los programas no puede exceder a la memoria física • Los programas que se están ejecutando pueden estar activos pero no estar cargados en memoria RAM física, sino Virtual • El Virtual memory manager (VMM) – OS es el encargado de administrar la carga y descarga de las páginas. • El CPU envía dispara un evento llamado ¨page fault¨ ¨ cuando una pagina requiere ser cargada del disco JCG-2009 Componentes de una microcomputadora IA32 • • • • Tarjeta Madre Salida de Video Memoria Puertos de E/S JCG-2009 Tarjeta Madre • Permite la infraestructura de operación entre los siguientes componentes: – CPU – Caché externo – Memoria del sistema – BIOS – Tarjeta de sonido (opcional) – Tarjeta de video (opcional) – Controlador de disco duro, USB, VIDEO, ETC – Tarjetas de expansión (PCI) JCG-2009 Tarjeta Madre Intel D850MD Puertos de E/S Video Tarjeta de Sonido Chipset Ranuras PCI Microprocesador Ranuras AGP DRAM BIOS Controlador IDE Speaker Batería Fuente alimentación Conector CD/DVD Conector IDE Fuente: Intel® Desktop Board D850MD/D850MV Technical Product Specification JCG-2009 Administración del Video • Existe un controlador de video que puede ser – Integrado en el chipset – Discreto en una tarjeta (AGP, PCI) • El controlador administra una sección de memoria RAM especializada en video (VRAM) • Normalmente se tienen dos formatos de salida de Video: – Pantallas de tubos de rayos catódicos (CRT) – Monitores de LCD JCG-2009 Tipos de memoria • ROM – read-only memory • EPROM – erasable programmable read-only memory • Dynamic RAM (DRAM) – Almacenamiento masivo, requiere una lógica de refrescamiento • Static RAM (SRAM) – Alta velocidad, caras, no requieren refrescamiento • Video RAM (VRAM) – Optimizadas para alto refrescamiento • CMOS RAM – complimentary metal-oxide semiconductor – BIOS JCG-2009 Puertos de entrada/Salida • USB (universal serial bus) – Conexión flexible de alta velocidad – Hasta 12 Mbps – Un HUB puede administrar múltiples dispositivos usando un esquema de numeración – Permite conexión OTG • Paralelo (PPI) – Corto alcance, alta velocidad – Usado en impresoras – Bidireccional – Controlador Intel 8255 JCG-2009 Puertos de entrada/Salida • Serie – Estándar RS-232C – Se transmiten tramas – Soporta mas distancia que paralelo – 16550 UART (universal asynchronous receiver transmitter) – Se puede programar desde ensamblador JCG-2009 Niveles de programación • Nivel 3: Bibliotecas o funciones en C, C++, Java – Fáciles de implementar; Transparentes para el hardware; bajo rendimiento • Nivel 2: Llamadas a funciones del sistema operativo – Específicos a un sistema operativo, sistema – Rendimiento medio • Nivel 1: Llamada funciones de BIOS (basic inputoutput system) – Puede producir variaciones de rendimiento de sistema a sistema – Varía dependiendo de la versión del BIOS – Buen rendimiento • Nivel 0: Programación directa del HW – Muy eficiente, algunos sistemas operativos lo restringen JCG-2009 Flujo de ejecución de un programa El siguiente diagrama muestra el flujo de ejecución ejecuci n de un programa JCG-2009 Application Program Level 3 OS Function Level 2 BIOS Function Level 1 Hardware Level 0 Niveles de programación en ensamblador Las funciones de entrada/salida de un programas pueden realizar usando cualquiera de las siguientes estratégicas ASM Program JCG-2009 OS Function Level 2 BIOS Function Level 1 Hardware Level 0 Tarea • Investigar sobre la estructura del descriptor del sistema que se utilizan para administrar la memoria para los siguientes procesadores: – 80286 – 80386 – 486 – Pentium • Como se distribuye el mapa de memoria para el modo protegido JCG-2009 Bibliografía • Irvine, Kip; Assembly Language for IntelBased Computers. 5th Edition. Pearson Education. 2007 JCG-2009