Procesadores de 32 bits Tecnologías y Arquitectura Tecnología de Integración Como se llega a la nanotecnología Tecnología de Integración 65 nm nanotechnology Imágenes obtenidas con TEM (Transmission Electron Microscope) de una cepa del virus de la influenza, y de un transistor construido con la tecnología de 65 nm utilizada desde este año en el Procesador Pentium IV. Los 30 nm representan el ancho del Gate del transistor NMOS Autor: Alejandro Furfaro - 2005 3 Tecnología de Integración: EUV MET EUV MET = Extreme Ultra Violet Micro Exposure Tool Luz Ultravioleta Proceso de Litografía Máscara Autor: Alejandro Furfaro - 2005 Lentes para reducir la imagen Oblea de metal grabado a ser expuesta Tamaño=K1*λ*NA K1: Factor de complejidad λ: Longitud de onda de la exposición NA: Apertura Numérica 4 (tamaño) del lente Proceso y componentes de la técnica de Litografía Litografía (Lithography): Proceso por el cual se crean patrones específicos en un chip. 2 Los chips actuales consisten en un sustrato de silicio encima del cual se crean mas de 20 capas de materiales de diferentes tipos. 2 Éstos forman los transistores y las pistas que los interconectan en una configuración particular, formando un microprocesador, su chipset, la memoria, o cualquier otro chip. 2 Autor: Alejandro Furfaro - 2005 5 Arquitectura IA-32 Diferentes versiones de Micro-Arquitecturas Arquitectura y Micro-Arquitectura Arquitectura 2 Recursos accesibles para el programador 2 Estos recursos se mantienen y evolucionan a lo largo de los diferentes modelos de procesadores de esa arquitectura Microarquitectura 2 Registros Set de instrucciones Estructuras de memoria (descriptores de segmento y de página p. ej.) Implementación en el silicio de la arquitectura La arquitectura IA-32 se inicia con el procesador 80386 en 1985, y hasta ahora llega al procesador Pentium IV Extreme Edition. Abarca diferentes generaciones de procesadores desde el punto de vista de la Micro-Arquitectura Autor: Alejandro Furfaro - 2005 7 Antecedentes: Familia iAPx86 de Intel Se presenta en 1978 con el Microprocesador 8086. 2 Arquitectura de 16 bits. 2 Intel se compromete a mantener compatibilidad ascendente en los posteriores procesadores En 1982 se presenta el 80286. 2 Capacidad de direccionamiento de Memoria 16 Mbytes. 2 Mantiene la arquitectura de 16 bits 2 Incorpora capacidades para implementar Multitarea Autor: Alejandro Furfaro - 2005 8 Micro-Arquitectura 386 80386DX, 80386SX Procesador 80386DX (1985) Primer miembro de la Arquitectura IA-32 de Intel Características Extiende la capacidad de los registros internos a 32 bits, manteniendo compatibilidad con los registros de 16 bits de los procesadores iAPx86. 2 Buses de Datos y Direcciones de 32 bits. 2 2 Lee palabras de 32 bits en un solo ciclo de bus Direcciona hasta 4 Gbytes de memoria física (RAM). Unidad de Gestión de Memoria Avanzada Capacidad de Direccionamiento de 4 Gbytes de memoria Física y 64 Tbytes de Memoria Virtual. Gestión de memoria por Segmentación y por Paginación. Arquitectura Pipeline avanzada 2 3 Modos de trabajo 2 Real Protegido Autor: Alejandro Furfaro - 2005 10 Procesador 80386DX: Diagrama Interno B.I.U. M.M.U. UNIDAD DE TESTEO Y PROTECCION UNIDAD DE EJECUCION ARCHIVO DE REGISTROS PLA DE LIMITES Y ATRIBUTOS BUS DE INTERNO STATUS FLAG ALU CONTROL DECODIFICACION Y SECUENCIAMIENTO PREDECODIFICADOR DE INSTRUCCIONES ROM DE CONTROL COLA DE HASTA 3 INSTRUCCIONES DECODIFICADAS CONTROL UNIDAD DE CONTROL DEL BUS 32 PRIORIZACION DE REQUERIMIENTOS CACHE DE PAGINAS PLA DE CONTROL Y ATRIBUTOS DRVER DE DIRECCIONES C.P.U. CONTROL DE PIPELINE / TAMAÑO DEL BUS CONTROL MULTIPLEXORES / TRANSCEPTORES UNIDAD DE BUSQUEDA BE0 BE3 A2 - A31 M/IO, D/C, W/R, LOCK ADS, NA, BS16 READY D0 - D31 32 PREBÚSQUEDA / CHEQUEO DE LIMITES STREAM DE CODIGO DE 32 BITS HOLD, INTR,NMI, ERROR, BUSY RESET,HLDA CONTROL 32 UNIDAD DE DECODIFICACION DESPLAZADOR SUMADOR MULTIPLICAR DIVIDIR SUMADOR RGISTROS DESCRIPTORES 32 BUS DE DESPLAZAMIENTO BUS DE DIRECCION EFECTIVA 32 BUS DE DIRECCIONES LINEALES BUS DE DIRECCION EFECTIVA UNIDAD DE PAGINACION UNIDAD DE SEGMENTACIO N SUMADOR DE 3 ENTRADAS BUS DE DIRECCIONES FISICAS BUS DE BUSQUEDA DE CODIGO Y TABLA DE PAGINAS COLA DE HASTA 16 BYTES DE CÓDIGO 32 BUS DEDICADO A LA ALU Autor: Alejandro Furfaro - 2005 11 80386: Manejo de Memoria organizada en bytes con 32 líneas de address 0 4 8 C A2-A31 1 5 9 D A2-A31 2 Dirección 0 1-2 3-6 7-8 9 A-B C-F Byte Alineado Word No Alineada Doble Word No Alineada Word No Alineada Byte No Alineado Word No Alineado Doble Word Alineada A2-A31 E 3 B F A2-A31 D0-D7 A2-A31 D8-D15 D16-D23 D24-D31 D0-D31 80386 BE0 BE1 BE2 Be3 CS CS CS CS Autor: Alejandro Furfaro - 2005 13 Ciclo de instrucciones Búsq. Búsq. Instruc. Instruc. Decod Decod Busq. Busq. Operando Operando Ejec Ejec Result Result Requiere una cantidad de hardware considerable. En los procesadores sencillos solo una parte del hardware se activa en un determinado momento: la que se necesita para resolver la micro operación. Este método es poco eficiente. En nuestro ejemplo el procesador podrá ejecutar una instrucción cada 5 ciclos de clock Autor: Alejandro Furfaro - 2005 18 Pipeline de instrucciones Técnica que permite superponer en el tiempo la ejecución de varias instrucciones a la vez Busq. No requiere hardware Inst. 1 adicional. Solo se necesita lograr que todas las partes del procesador trabajen a la vez Trabaja con el concepto de una línea de montaje: 2 2 2 Cada operación se descompone en partes Se ejecutan en un mismo momento diferentes partes de diferentes operaciones Cada parte se denomina etapa (stage) Busq. Busq. Busq. Busq. Busq. Busq. Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 Inst. 7 Dec.FI Dec. Dec. Dec. Dec. Dec. Inst. 1 Inst. 2 Inst. 3 Inst. 4 Inst. 5 Inst. 6 Busq. Busq. Busq. Busq. Busq. Op. 1 Op. 2 Op. 3 Op. 4 Op. 5 Ejec. Ejec. Ejec. Ejec. Inst. 1 Inst. 2 Inst. 3 Inst. 4 Escrib. Escrib. Escrib. Res. 1 Res. 2 Res. 3 Resultado Una vez entrado en régimen ejecuta a razón de una instrucción por ciclo de clock Autor: Alejandro Furfaro - 2005 19 Memorias – Tiempo de Acceso y consumo Línea de Bit Diagrama de un bit elemental de DRAM. Línea de Bit # Selección CAS RAS Cd Buffer Diagrama del biestable de un bit básico de SRAM. Línea de Bit Línea de Bit # Selección Bit de datos de salida al bus Diagrama del biestable de un bit básico de SRAM con carga activa para lograr mayor confiabilidad Autor: Alejandro Furfaro - 2005 20 Estructura de Bus clásica Bus Busde de Control Control Buffer Buffer de de Datos Datos ADDRESS DATOS CONTROL Procesador Procesador Bus Loca del Procesador Buffer Buffer de de Address Address BUS DEL SISTEMA Memoria Memoriadel del Sistema Sistema Autor: Alejandro Furfaro - 2005 E/S E/S del del Sistema Sistema Desde el 80386, los procesadores desarrollaban velocidades de clock muy superiores a los tiempos de acceso a memoria. En este esquema, si el sistema utiliza memoria DRAM, el procesador necesita generar wait states para esperar que la memoria esté lista (“READY”) para el acceso. ¿Que sentido tiene lograr altos clocks en los procesadores si no puede aprovecharla por esperar a la memoria? 21 El problema CAS RAS RAM estática (SRAM) 2 Cd 2 Buffer 2 2 Bit de datos de salida al bus RAM dinámica vs. RAM Estática Línea de Bit Línea de Bit # RAM dinámica 2 Selección 2 Autor: Alejandro Furfaro - 2005 Consumo mínimo. (El MOSFET normalmente está al corte) Tiempo de acceso muy lento. (Circuito de regeneración de carga por lectura destructiva. Costo por bit alto Si usamos memoria estática, el costo de la computadora es alto y su consumo es inviable. 2 Alto consumo relativo (Tres MOSFET están al corte, pero los otros tres están saturados, conduciendo un valor de corriente considerable. El tiempo de acceso es muy rápido. Si usamos memoria dinámica 22 La solución: Memoria cache SRAM de muy alta velocidad El procesador la accede a 0 wait states 2 Asegurar mediante hardware adicional que en esa memoria están los datos e instrucciones mas frecuentemente utilizados por el procesador 2 Principio de vecindad espacial Principio de vecindad temporal Suficientemente grande para que el procesador resuelva la mayor cantidad posible de búsquedas de código y datos en esta memoria asegurando una alta performance 2 Suficientemente pequeña para no afectar el consumo ni el costo del sistema. 2 Combinada con una gran cantidad de memoria DRAM, para almacenar el resto de códigos y datos, resuelve el problema mediante una solución de compromiso típica. Autor: Alejandro Furfaro - 2005 23 Memoria Cache Procesador Procesador Cantidad de accesos con presencia en Memoria Cache hitrate = Cantidad total de accesos a memoria Bus del Procesador (Bus local) Subsistema caché Controlador Controladorde de Memoria caché Memoria caché Baja capacidad, pero…. Accesible al clock del procesador Memoria Memoria SRAM SRAM ultrarrápida ultrarrápida (cache) (cache) Bus del Sistema Hardware adicional. Mantiene el cache con los datos mas frecuentemente utilizados por el procesador Control del bus local del controlador cache Memoria DRAM Interfaz con el Arbitración del Bus Bus Local Control del bus Local del Procesador Interfaz con el Procesador Bus de Address del procesador Directorio de Cache Control del Cache Bus de Snoop Bus de Control de la Memoria Cache Decodificaciones del bus local del procesador Configuración Autor: Alejandro Furfaro - 2005 24 Estructura de Bus del sistema con cache ADDRESS DATOS CONTROL Procesador Procesador CONTROL Memoria Memoria cache cache Controlador Controladorde de Memoria caché Memoria caché Buffer Buffer de de Datos Datos Bus Local del procesador Buffer Buffer de de Bus Local del Address Address controlador cache Bus Busde de Control Control Autor: Alejandro Furfaro - 2005 BUS DEL SISTEMA 25 Coherencia de un cache Una variable que está en el caché también está alojada en alguna dirección de la DRAM. Ambos valores deben ser iguales Cuando el procesador la modifica hay varios modos de actuar 2 2 2 Write through: el procesador escribe en la DRAM y el controlador cache refresca el cache con el dato actualizado Write through buffered: el procesador actualiza la SRAM cache, y el controlador cache luego actualiza la copia en memoria DRAM mientras el procesador continúa ejecutando instrucciones y usando datos de la memoria cache Copy back: Se marcan las líneas de la memoria cache cuando el procesador escribe en ellas. Luego en el momento de eliminar esa línea del caché el controlador cache deberá actualizar la copia de DRAM. Si el procesador realiza un miss mientras el controlador cache está accediendo a la DRAM para actualizar el valor, deberá esperar hasta que controlador cache termine la actualización para recibir desde este la habilitación de las líneas de control para acceder a la DRAM. 26 Autor: Alejandro Furfaro - 2005 Estructura de Bus del sistema Multiprocesador con cache Memoria Memoria cache cache Controlador Controladorde de Memoria caché Memoria caché ADDRESS DATOS CONTROL Memoria Memoria cache cache Buffer Buffer de de Datos Datos SNOOP BUS CONTROL CONTROL Procesador Procesador ADDRESS DATOS CONTROL Procesador Procesador Buffer Buffer de de Address Address Controlador Controladorde de Memoria caché Memoria caché SNOOP BUS Buffer Buffer de de Datos Datos Buffer Buffer de de Address Address Bus del cache Bus Busde de Control Control Bus local del procesador Bus local del controlador cache BUS DEL SISTEMA Autor: Alejandro Furfaro - 2005 27 Conexión de Snooping en un Sistema Multi-Master, basado en 80386 A d d ress Bu ffe r 80 3 86 80 3 85 A d d ress SA 2- SA 3 1 S EN SST B# Data SRA M System Bus Co n tro l Data Bu ffe r BA D S# BW /R# BM /I O# Otro M as ter d el Sis tema Autor: Alejandro Furfaro - 2005 28 Organización del caché de mapeo directo Bit de v alidez del Tag Tag de 17 bits Bits de v alidez de la línea Set 0 Set 1 Tamaño de Página = 32 Kbytes (8 KDwords) 17 Pag.2 -1 Set 1023 Directorio de Caché Interno Autor: Alejandro Furfaro - 2005 Caché Externa Pag.0 4 Gbytes de Memoria Principal 29 Organización del caché de mapeo directo Caché Address (1 de 8 KLíneas) A 15 A 14 A 31 Tag de 17 bits (1 de las 217 páginas) A5 A4 A 2 Set Address (1 de 1024 sets) Selector de Línea (1 de 8 líneas) Bit de validez del Tag 0 Nro de Set Bits de validez de la línea 1 1023 Directorio de Caché Interno Autor: Alejandro Furfaro - 2005 30 Organización del caché asociativo de dos vías Directorio A Bit de validez del Tag Tag de 18 bits Tag de 18 bits Set 0 Bits de validez de la línea Directorio B LRU bits Banco A 32 bits Banco B 32 bits Bits de validez de la línea Set 1 Tamaño de Página = 32 Kbytes (4 KDwords) 18 Pag.2 -1 Set 511 Directorio de Caché Externa Caché Interno Autor: Alejandro Furfaro - 2005 Pag.0 4 Gbytes de Memoria Principal 31 Organización del caché asociativo de dos vías Caché Address (1 de 4 KLíneas) A 31 A Tag de 17 bits (1 de las 218 páginas) A 14 13 A 5A 4 A 2 Set Address (1 de 512 sets) Selector de Línea (1 de 8 líneas) Bit de validez del Tag 0 Nro de Set Bits de validez de la línea 1 512 Directorio de Caché Interno Autor: Alejandro Furfaro - 2005 32 Manejo del contenido Algoritmos de reemplazo del contenido de la memoria cache 2 LRU: Last Recently Used. Se corresponde con el principio de vecindad temporal. 2 LFU: Last Frecuently Used 2 Random 2 FIFO Autor: Alejandro Furfaro - 2005 33 Ejemplo: Interfaz entre la CPU 386DX y el controlador cache 82385 12 ó 13 Desde circuito de OSC/RESET 32 A la memoria CACHE 82385 CALEN CT/R# 4 2 2 CLK2 CLK2 CS0#-CS3# ADS# ADS# NA# COEA#-COEB# CWEA#-CWEB# 386D X RESET RESET NA# LOCK# LOCK# 3 4 M/IO#,D/C#,W/R# BE0#-BE3# M/IO#,D/C#,W/R# BE0#-BE3# 30 32 A2-A31 A2-A31 D0-D31 BHOLD READY# BHLDA READYO# WBS BRDYEN# FLUSH BREADY# MISS# READY# BACP BLOCK# BAOE# BNA# LDSTB BADS# DOE# BBE0#-BBE3# BT/R# READY de otro 386DX CAB OE# DIR SBA CBA 32 4 Autor: Alejandro Furfaro - 2005 A D 4x646 CP OE# BUS LOCAL DEL 386DX 4x374 374 Q B SAB BD0-BD31 D CP OE# 30 Q BA2-BA31 3 BM/IO# BD/C# BW/R# BREADY 34 Implementaciones prácticas de memoria cache (1) Intel 80486 8 Kbytes de cache L1 on chip 2 Tamaño de línea: 16 bytes 2 Organización asociativa de 4-vías 2 Pentium dos caches on-chip, uno para datos y otro para instrucciones. 2 Tamaño de cada cahe: 8 Kbytes 2 Tamaño de línea: 32 bytes 2 Organización asociativa de 4-vías 2 PowerPC 601 cache on-chip de 32 Kbytes 2 Tamaño de línea: 32 bytes 2 Organización asociativa de 8-vías 2 Autor: Alejandro Furfaro - 2005 35 Implementaciones prácticas de memoria cache (2) PowerPC 603 2 2 2 2 PowerPC 604 2 2 2 2 Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 8 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 2-vías (organización del cache más simple que en el 601 pero un procesador mas fuerte) Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 16 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 4-vías PowerPC 620 2 2 2 2 Dos caches on-chip, una para datos y otra para instrucciones Tamaño de cada cache: 32 Kbytes Tamaño de línea: 64 bytes Organización asociativa de 8-vías Autor: Alejandro Furfaro - 2005 36 Micro-Arquitectura 486 80486DX, 80486SX, 80486DX2, 80486DX4 Procesador 80486: Diagrama Interno Autor: Alejandro Furfaro - 2005 38 Cache Multi Level (L1, y L2 cache) CPU CPU Memoria Cache L1 Memoria Memoria Cache Cache L2 L2 Memoria Memoria DRAM DRAM principal principal Interfaz Interfaz con con el el sistema sistema Arquitectura de cache en dos niveles Autor: Alejandro Furfaro - 2005 Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta arquitectura 39 Micro-Arquitectura P5 Pentium, Pentium MMX Arquitectura Superescalar Arquitectura de procesamiento en la que se puede iniciar varias instrucciones en forma simultánea y ejecutarse en forma independiente El pipeline permite que varias instrucciones estén ejecutándose en un mismo momento, pero siempre que se encuentren cada una en diferentes etapas del pipeline Un procesador superescalar extiende este paralelismo permitiendo que en una etapa del pipeline se puedan ejecutar varias instrucciones en forma independiente en un mismo ciclo de clock Existen dos modelo para lograr este efecto 2 2 Superpipeline Superescalar Autor: Alejandro Furfaro - 2005 41 Arquitectura superpipeline de dos vías. Cada etapa del pipeline se subdivide en su etapas de modo de procesar cada etapa varias instrucciones por cada ciclo de clock Autor: Alejandro Furfaro - 2005 42 Arquitectura superescalar de dos vías. Dos Pipelines de instrucciones Al tener dos unidades de ejecución paralelas, se duplica la actividad interna del procesador alcanzando la velocidad teórica de dos instrucciones por ciclo de clock Autor: Alejandro Furfaro - 2005 43 Limitaciones al modelo superescalar Dos o mas instrucciones compiten por acceso en el mismo momento al mismo recurso: 2 2 2 Registro. Dirección de Memoria Unidad funcional del procesador Las instrucciones de transferencia de flujo (denominadas branch, y que son generalemnet saltos, o call), hacen que todas las que vienen a continuación sean descartadas de las etapas del pipeline en el que se ejecuta la instrucción de transferencia de flujo. Instrucciones con interdependencia de resultados. Una instrucción en la que uno de los operandos es el resultado de otra que se está ejecutando al mismo tiempo, debe ser detenida hasta que se obtenga el resultado mencionado. Autor: Alejandro Furfaro - 2005 44 Procesador Pentium: Características Arquitectura Superescalar 2 Dos pipelines de instrucciones U pipeline: Ejecuta instrucciones enteras o de punto flotante (equivale a la Unidad de ejecución del 486) V pipeline. Ejecuta solo instrucciones enteras en paralelo con el U. Dependencia de Información. 2 Dependencia de Recursos. 2 Bus externo de datos de 64 líneas 2 Branch Prediction 2 Asegura la lectura de dos instrucciones a la vez ya que ejecuta dos instrucciones a la vez Branch Target Buffer Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código (8 Kbytes) Autor: Alejandro Furfaro - 2005 45 Procesador Pentium: Diagrama Interno Branch Prediction Bus externo de datos de 64 líneas. Asegura la lectura de dos instrucciones a la vez para que pueda ejecutar dos instrucciones a la vez Autor: Alejandro Furfaro - 2005 Dos pipelines de instrucciones U pipeline: Ejecuta instrucciones V pipeline. Ejecuta enteras o de punto solo instrucciones flotante enteras(equivale en paralelo a con la Unidad el U. de ejecución del 486) Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código 46 (8 Kbytes) Branch Prediction Emplea Predicción estática de salto (es decir, asume que siempre salta). Brach Target Buffer (BTB). El procesador guarda en ese buffer la dirección destino de una instrucción de branch durante la etapa de decodificación. 2 En el caso de que la predicción almacenada por la Unidad de decodificación del pipeline (U o V) haya sido exacta la instrucción se ejecuta sin atascos ni flushes del pipeline. 2 Si al momento de la evaluación de la dirección de salto esta no coincide con la predicción almacenada en el BTB, debe buscarse el target correcto y se flushea el contenido de los pipelines. 2 4 ciclos de clock de demora en V pipeline 3 ciclos de clock de demora en el U Pipeline Autor: Alejandro Furfaro - 2005 47 Pentium MMX Modelo de Ejecución SIMD (Single Instruction Múltiple Data). A partir del procesador Pentium, Intel introdujo en la arquitectura un set de recursos para el tratamiento de señales. 2 Aplicaciones multimedia (audio, gráficos y video), y de comunicaciones 2 Permite efectuar en una sola instrucción varias operaciones aritméticas de cálculo 2 La mayor parte del trabajo en los algoritmos de procesamiento de gráficos, audio, video, o filtros digitales para telecomunicaciones, consiste en ejecutar la misma operación sobre una extensa lista de datos relativamente pequeños (en general de 8 o 16 bits). 2 Autor: Alejandro Furfaro - 2005 48 Single Instruction Multiple Data SIMD R1 X1 Op .Básica Y1 ; R2 X2 Op .Básica Y2 ; R3 X3 Op .Básica Y3 ; R4 X4 Op .Básica Y4 ; Autor: Alejandro Furfaro - 2005 49 MMX : Tipos de datos 7 0 N 15 7 0 High Low byte byte N+1 N 31 16 15 0 High word Low word N+2 63 Autor: Alejandro Furfaro - 2005 word Double word N 32 31 0 High Doubleword Low Doubleword N+4 byte quadword N 50 MMX : Registros y Tipos de datos empaquetados Registros de la FPU 79 63 63 0 0 MM0 MM1 MM2 MM3 MM4 MM5 MM6 MM7 Registros MMX Autor: Alejandro Furfaro - 2005 Bytes enteros empaquetados en 64 bits 8 bytes empaquetados Wordsenteras empaquetadas en 64 bits 4 words empaquetadas Doble Wordsenteras empaquetadas en 64 bits 2 doble words empaquetadas 51 Algoritmos DSP Características 2 (1) tipos de datos de poco tamaño, 2 (2) patrones de acceso secuencial a memoria, y 2 (3) operaciones simples y recurrentes sobre los datos de entrada. Aritmética Saturada Aritmética de desborde Autor: Alejandro Furfaro - 2005 52 Interrupciones en SMP: El APIC A partir del Procesador Pentium, Intel agregó al chip del procesador un módulo llamado APIC: Advanced Programable Interrupt Controller, es decir Controlador de Interrupciones embebido que soporta multiprocesamiento El APIC requiere ser específicamente habilitado. Su utilidad se nota cuando se diseñan sistemas con mas de un procesador (Symmetrical Multi Processor = SMP) En un sistema Mono Procesador, se puede trabajar sin habilitarlo, y usar los conocidos 8259 Si se lo habilita el procesador transforma los pines de interrupción en: 2 2 PICCLK: Terminal de sincronización con el otro procesador PICD0 y PICD1 bus de comunicación de dos alambres Autor: Alejandro Furfaro - 2005 53 Interrupciones en SMP: El APIC El I/O APIC está incluido en el chipset que acompaña a cada procesador Si tenemos, por ejemplo, 4 procesadores, los APICs se conectan a través de un juego de tres líneas y por cada requerimiento de interrupción recibido desde los dispositivos de E/S conectados, el I/O APIC reparte las interrupciones entre los diferentes procesadores de acuerdo a las condiciones de disponibilidad obrando como balanceador de carga Autor: Alejandro Furfaro - 2005 54 Interrupciones en SMP: El APIC Autor: Alejandro Furfaro - 2005 55 APIC Interrupt Controller Fuentes de interrupciones del APIC: 2 2 2 2 2 2 2 Locales: Ingresan por los pines del procesador (con el APIC habilitado se llaman LINT0 y LINT1). Externas: El I/O APIC externo genera cuando recibe una interrupción desde algún dispositivo de E/S en particular. Inter Processor Interrupts (IPIs): Son enviadas y recibidas por un procesador para interrumpir a otro o a un grupo de procesadores conectados al mismo bus de sistema. Timer del APIC: Se lo programa para enviar a éste interrupciones periódicas Overflow en el timer de Monitoreo de performance. Sensor térmico. Estos procesadores se auto interrumpen cuando su temperatura supera un valor tope determinado. Error interno en el APIC. SI se accede a un registro inexistente por ejemplo, el APIC se auto genera una interrupción. Autor: Alejandro Furfaro - 2005 56 Micro-Arquitectura P6 Pentium Pro, Pentium II, Pentium II Xeon, Celeron, Pentium III, Pentium III Xeon Micro Arquitectura Three core engines System Bus L2 L2 Cache Cache Bus Bus Interface Interface Unit Unit L1 L1 ICache ICache Fetch Fetch Fetch // Decode Decode Unit Unit Dispatch Dispatch /Execute /Execute Unit Unit Instruction Instruction Pool Pool Autor: Alejandro Furfaro - 2005 L1 L1 DCache DCache Load Store Retire Retire Unit Unit Emplea Dynamic Instruction Scheduling Basado en una ventana de instrucciones y no en un pipeline superescalar. Las instrucciones se traducen en micro operaciones básicas (µops) Las µops ingresan a un pool (ventana) en donde se mantienen para su ejecución Los tres cores tienen plena visibilidad de esa ventana de ejecución Se aplica la técnica de ejecución fuera de orden y ejecución especulativa. La unidad de despacho y ejecución mantiene el modelo superescalar y lo combina con un super pipeline de 20 etapas 58 Funcionamiento del Core Se tiene un código de este tipo r1<r2 <r5 <r6 <- mem [r0] /* instrucción 1*/ r1 + r2 /* instrucción 2*/ r5 + r4 /* instrucción 3*/ r6 - r3 /* instrucción 4*/ Instrucción 1 genera un cache miss La instrucción 2 depende de r1. No es ejecutable hasta no completar r1 En este punto un Pentium se detuvo hasta que se recupere el operando apuntado por [r0] desde la memoria del sistema Al extender la ventana de ejecución el procesador tiene visibilidad de mayor cantidad de instrucciones. El P6 es capaz de ejecutar fuera de orden las instrucciones 3 y 4 que no son dependientes de la 1, mientras la unidad de interfaz con el bus consigue el operando [r0]. La unidad de retiro no enviará al exterior los resultados fuera de orden, sino que lo hará de acuerdo a la secuencia establecida en el programa. La Unidad de Retiro puede enviar 3 resultados por ciclo de clock al exterior De este modo agrandando tolo lo posible la ventana de ejecución el procesador puede ejecutar fuera de orden y en forma especulativa mayor cantidad de instrucciones ante demoras en el acceso a los datos. Las primeras versiones eran capaces de “ver” 20 instrucciones. Autor: Alejandro Furfaro - 2005 59 Three core engines en detalle System Bus EU: Execution Unit IEU = Integer EU FEU = Floating Point EU JEU = Jump EU AGU = Address Generation Unit L2 L2 Cache Cache Memory Memory Reorder Reorder Buffer Buffer Bus Bus Interface Interface Unit Unit ICache L1 L1 DCache DCache Next_IP Reservation Reservation Station Station Branch Branch Table Table Buffer Buffer Simple Simple Instruction Instruction Decoder Decoder Simple Simple Instruction Instruction Decoder Decoder Microcode Microcode Instruction Instruction Sequencer Sequencer Complex Complex Instruction Instruction Decoder Decoder Register Register Alias Table Alias Table Port Port00 Port Port11 WIRE WIRE SIMD0 SIMD0 FEU FEU IEU IEU Memory Memory Interface Interface Unit Unit SIMD1 SIMD1 JEU JEU IEU IEU Store Port Port22 AGU AGU Port Port3,4 3,4 AGU AGU Retirement Retirement Register Register File File Load Re Order Buffer (Instruction Pool) µop1 µop2 µop3 µop4 µop5 Autor: Alejandro Furfaro - 2005 µop6 µop7 µop8 µop9 µop10 µop11 µop12 µop13 µop14 µop15 µop16 60 Three core engines en detalle (cont.) Next_IP: Índice al cache de Instrucciones basado en el contenido que le provee el BTB ICache, envía a la Unidad de Decodificación la línea apuntada por Next_IP y la siguiente, (total = 16 bytes alineados) La Unidad de Prebúsqueda rota los 16 bytes para justificarlos a los decodificadores y les marca el comienzo y fin de cada instrucción Los decodificadores de Instrucción toman las instrucciones IA-32 contenidas en los 16 bytes y las convierten en µops (código de operación decodificado listo para ejecutar, dos operandos fuentes, un operando destino, y algunos bits de estado) 2 Instrucciones simples 2 La mayoría se traduce en 1 µop El resto entre 2 y 4 µops Instrucciones complejas: Son tomadas por el Microcode Instruction Sequencer que generará la secuencia necesaria de µops Autor: Alejandro Furfaro - 2005 61 Three core engines en detalle (cont.) Las µops se encolan en el Register Alias Table en donde se convierten las referencias a los registros IA-32 a referencias a registros internos de la Micro Arquitectura P6. Luego las µops se inyectan en el pool (o Re Order Buffer) La Unidad de Despacho y Ejecución las toma de este buffer mediante el bloque denominado Reservation Station y las deriva a sus diferentes puertos de ejecución. 2 El criterio de selección no es el orden que ocupan en el flujo de programa sino el estado que indican los bits correspondientes de cada µop. Si estos bits indican que los operandos fuente de la instrucción están listos, se chequea si el recurso necesario para ejecutar esta µop está disponible. Si lo está se ejecuta Un procesador P6 puede despachar 5 µops por los diferentes ports de ejecución. Sin embargo se despachan 3 a lo sumo. Autor: Alejandro Furfaro - 2005 62 Three core engines en detalle (cont.) Las µops de discontinuidad de flujo (branch) se marcan en el pipeline con la dirección de caída y la dirección que se le predice. Cuando se ejecuta la instrucción en la JEU 2 2 Si la dirección resultante coincide con la predicción almacenada en el BTB el resultado del procesamiento especulativo realizado en el Pool de Instrucciones se considera válido. Si el resultado no coincide entonces la JEU cambia el estado de todas las operaciones de la rama que se ejecutó especulativamente considerándola válida, y se las remueve del Pool Instrucciones. Unidad de Retiro 2 2 Chequea el estado de las µops en el pool (o Re Order Buffer). En busca de ejecutadas y sin ninguna µop precedente aún sin retirar del Pool de Instrucciones. Una vez retirada del Pool, escribe el destino IA-32 de la instrucción original con el resultado. Autor: Alejandro Furfaro - 2005 63 Pentium II y III: Ports de Ejecución Autor: Alejandro Furfaro - 2005 64 Extensiones SSE 0 127 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 Agrega tipos de datos de 128-bit empaquetando dos números de punto flotante doble precisión Agrega a SIMD tipos de datos enteros de 128-bit para operaciones enteras de 16-byte, 8-word, 4-doubleword, o 2-quadword. Agrega a SIMD soporte para aritmética sobre operandos enteros de 64-bit. Agrega instrucciones de conversión entre tipos de datos nuevos y existentes. Extiende el soporte para cacheabilidad y operaciones de ordenamiento de memoria. Autor: Alejandro Furfaro - 2005 65 Extensiones SSE Modelo completo de programación 127 Espacio de Direccionamiento De Memoria 232 -1 0 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 Registros introducidos por las Extensiones SSE 31 MXCSR 63 0 0 MM0 MM1 MM2 MM3 MM4 MM5 MM6 MM7 Registros introducidos por la Tecnología MMX 31 15 CS SS DS ES FS GS 0 0 EAX EBX ECX EDX ESI EDI EBP ESP 0 31 EFlags Registros originales de la IA-32 Modelo de programador de Aplicaciones Autor: Alejandro Furfaro - 2005 31 EIP 0 0 66 Micro Arquitectura NetBurst Pentium IV, Xeon, Pentium IV HT, Pentium M Micro Arquitectura NetBurst: Diagrama System Bus Level Level 11 Data Data Cache Cache Bus Bus Unit Unit Level Level 22 Cache Cache Memory Subsystem Fetch/Decode Fetch/Decode Trace Trace Cache Cache Microcode Microcode ROM ROM BTB/Branch BTB/Branch Prediction Prediction Front End Autor: Alejandro Furfaro - 2005 Excecution Excecution Units Units Integer and FP Excecution Units Out-of-Order Out-of-Order excecution excecution logic logic Retirement Retirement Branch History Update OutOut-OfOf-Order Engine 68 Micro Arquitectura NetBurst: Bloques Front end: 2 Fetch/decode unit Execution trace cache. Tamaño 12K µops. 2 Funciones básicas: 2 Prebúsqueda de instrucciones para ser ejecutadas Búsqueda de instrucciones que aún no han sido pre buscadas Decodificación de las instrucciones en micro-operaciones Generación de micro código para instrucciones complejas Envío al Trace caché de ejecución de las instrucciones decodificadas (µops). Predicción de saltos mediante algoritmos mas avanzados Autor: Alejandro Furfaro - 2005 69 Pentium IV: Out of Order Core Autor: Alejandro Furfaro - 2005 70 Pentium IV: Diagrama detallado Front End BTB (4K entries) Trace Cache BTB (256 entries) Instruction/TLB Prefetcher (256 bits) Instruction Decoder Microcode ROM Trace Cache 12K μops μops Queue Quad Pumped 3.2 Gbyte/seg Bus Interface Unit Allocator / Register Renamer Integer / Floating Point μop Queue Memory μop Queue Fast Memory Scheduler Slow /General FP Scheduler Integer Register File / Bypass Network AGU Load Address AGU Store Address 2xALU Simple Instruc 2xALU Simple Instruc Complex Instruc FP MMX SSE SSE2 L1 Data Cache (8Kbyte 4-way) Autor: Alejandro Furfaro - 2005 Simple FP FP Register / Bypass Slow ALU System Bus Cache L2 256 Kbytes 8 vías FP Move (256 bits) L2 Cache Control Unit 48 Gbytes/seg 71 Pentium IV: Extensiones SIMD2 Seis tipos de datos: 2 2 128-bit packed double-precision floating-point (dos IEEE Standard 754 doble precisión Valores de punto flotante empaquetados en una doble quadword) Instrucciones de soporte para estos tipos de datos Operaciones: 2 2 2 Bytes enteros empaquetados en 128 bits Words enteras empaquetadas en 128 bits doubleword enteras empaquetadas en 128 bits quadword enteras empaquetadas en 128-bits instrucciones sobre punto flotante doble precisión empaquetados y escalares Instrucciones enteras SIMD adicionales de 64 y 128 bits Versiones de 128 bits de las instrucciones SIMD enteras introducidas con la tecnología MMX Extensiones SSE 2 Instrucciones adicionales para control de cacheabilidad y ordenamiento de instruciones Autor: Alejandro Furfaro - 2005 72 SSE, SSE2, SSE3: Tipos de datos 7 0 byte N 15 7 0 High Low byte byte N+1 N 31 16 15 High word 63 32 31 High Doubleword N Low Doubleword 64 63 N+8 quadword N 0 Low Quadword High Quadword Autor: Alejandro Furfaro - 2005 Double word 0 N+4 127 0 Low word N+2 word N double quadword 73 El APIC en la Micro Arquitectura NetBurst Hasta el Pentium III inclusive, los APICs de los diferentes procesadores se interconectaban por un juego de tres líneas: PICCLK, PICD0 y PICD1 En el caso del P IV se tiene que los APICs se circulan IPIs y mensajes directamente a través del Bus del Sistema Autor: Alejandro Furfaro - 2005 74 Tecnología Hyperthreading Autor: Alejandro Furfaro - 2005 75 Tecnología Hyperthreading Front End NetBurst (a) Búsqueda con L1 ICache Hit (b) Búsqueda con L1 ICache Miss Autor: Alejandro Furfaro - 2005 76 Tecnología Hyperthreading Motor de ejecución Fuera de Orden con Hyperthreading Autor: Alejandro Furfaro - 2005 77 Tecnología Hyperthreading Modelo de procesamiento de dos threads (a) Un procesador Hyperthreading (b) Un procesador Dual Core Autor: Alejandro Furfaro - 2005 78 Extensiones SS3 13 instrucciones. 2 Diez instrucciones nuevas de soporte SIMD 2 Una para acelerar el estilo de programación de punto flotante x87 en conversiones a enteros 2 MONITOR y MWAIT aceleran la sincronización de threads. Autor: Alejandro Furfaro - 2005 79