Procesadores de 32 bits Tecnologías, Organización y Micro Arquitectura Tecnología de Integración 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 reemplazada en el 2007 por la de 45 nm, con la que se construyen los procesadores Core2Duo y Xeon Quad Core de Intel. Los 30 nm representan el ancho del Gate del transistor NMOS Autor: Alejandro Furfaro - 2008 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 - 2008 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. Los chips actuales consisten en un sustrato de silicio encima del cual se crean mas de 20 capas de materiales de diferentes tipos. É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. Autor: Alejandro Furfaro - 2008 5 Ley de Moore Autor: Alejandro Furfaro - 2008 6 Pipeline Tecnológico: Fuente IDF2009 Autor: Alejandro Furfaro - 2008 7 Relación entre el pipeline tecnológico y las microarquitecturas Autor: Alejandro Furfaro - 2008 8 Organización de un computador Conceptos generales: Arquitectura vs. Micro-Arquitectura Arquitectura y Micro-Arquitectura Arquitectura Recursos accesibles para el programador Registros Set de instrucciones Estructuras de memoria (descriptores de segmento y de página p. ej.) Estos recursos se mantienen y evolucionan a lo largo de los diferentes modelos de procesadores de esa arquitectura Micro Arquitectura Implementación en el silicio de la arquitectura. Es lo que hay detrás del set de registros y del modelo de programación Puede ser muy simple o sumamente robusta y poderosa. La arquitectura IA-32 se inicia con el procesador 80386 en 1985, y llega hasta el procesador Intel Core2Duo actualmente. Esto se traduce en seis diferentes generaciones de MicroArquitectura para mas de 15 modelos de procesadores. Autor: Alejandro Furfaro - 2008 10 Enfoques CISC (Complex Instruction Set Computer) Instrucciones que realizan tareas complejas RISC (Reduced Instruction Set Computer) Instrucciones que realizan operaciones sencillas Autor: Alejandro Furfaro - 2008 11 Ejemplo CISC (Intel) Prefijo OpCode 0xF3 0xA4 Instrucción: REP MOVS Copia CX bytes de DS:SI, a ES:DI. MOVS: Copia el dato en DS:SI, a ES:DI. Dependiendo de un flag, SI y DI son incrementados (+1) o decrementados (-1) REP: Prefijo. Decrementa CX y hace que se repita la operación hasta que CX llegue a 0 Autor: Alejandro Furfaro - 2008 12 Ejemplo RISC La misma instrucción implementada en una MIPS: Asumamos que en $s3 esta el fuente, $s4 el destino y $s5 es el contador bucle: lb $t0,0,($s3) ; sb $t0,0, $s4 ; add $s3,$s3,1 add $s4,$s4,1 sub $s5,$s5,1 be $s5,0,fin j bucle fin: t0 = mem[s3] mem[s4] = t0 Autor: Alejandro Furfaro - 2008 13 Ciclo de instrucciones: Etapas clock Búsq. Instruc. Decod Busq. Operando Ejec 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 - 2008 14 Pipeline de instrucciones Técnica que permite superponer en el tiempo la ejecución de varias B usq. B usq. instrucciones a la vez In st. 1 In st. 2 No requiere hardware adicional. Solo se necesita D e c .F I lograr que todas las partes In st. 1 del procesador trabajen a la vez Trabaja con el concepto de una línea de montaje: Cada operación se descompone en partes Se ejecutan en un mismo momento diferentes partes de diferentes operaciones Cada parte se denomina etapa (stage) B usq. B usq. B usq. Busq. B usq. In st. 3 In st. 4 In st. 5 In st. 6 In st. 7 D ec. D ec. D ec. D ec. D ec. In st. 2 In st. 3 In st. 4 In st. 5 In st. 6 B usq. O p. 1 B usq. O p. 2 B usq. O p. 3 Busq. O p. 5 E je c . E je c . E je c . E je c . In st. 1 In st. 2 In st. 3 In st. 4 E s c r ib . E s c r ib . E s c r ib . Res. 1 Res. 2 Res. 3 Resultado Una vez en régimen ejecuta a razón de una instrucción por ciclo de clock Autor: Alejandro Furfaro - 2008 B usq. O p. 4 15 Etapas de un pipeline Podemos desagregar mas las micro operaciones y generar pipelines de mas etapas. Ej: Autor: Alejandro Furfaro - 2008 16 Etapas de un pipeline Incluir el chequeo de interrupciones Autor: Alejandro Furfaro - 2008 17 Profundidad del pipeline. Casos concretos μArchitecture Pipeline stages ARM7TDMI(-S) 3 ARM7EJ-S 5 ARM810 5 ARM9TDMI 5 ARM1020E 6 XScale PXA210/PXA250 7 ARM1136J(F)-S 8 ARM1156T2(F)-S 9 ARM Cortex-A5 8 ARM Cortex-A8 13 AVR32 AP7 7 AVR32 UC3 3 DLX 5 Intel P5 (Pentium) 5 Intel P6 (Pentium Pro) 14 Intel P6 (Pentium III) 10 Autor: Alejandro Furfaro - 2008 μArchitecture Pipeline stages Intel NetBurst (Willamette) 20 Intel NetBurst (Northwood) 20 Intel NetBurst (Prescott) 31 Intel NetBurst (Cedar Mill) 31 Intel Core 14 Intel Atom 16 LatticeMico32 6 R4000 8 StrongARM SA-110 5 SuperH SH2 5 SuperH SH2A 5 UltraSPARC 9 UltraSPARC T1 6 UltraSPARC T2 8 WinChip 4 LC2200 32 bit 5 18 Pipeline de seis etapas Autor: Alejandro Furfaro - 2008 19 Efecto de un branch en un Pipeline de seis etapas Autor: Alejandro Furfaro - 2008 20 Branchs versus eficiencia del pipeline Para tratar de minimizar este impacto se implementan unidades de predicción de saltos. Criterios Asumir que nunca se salta Asumir que siempre se salta Predecir Branch por OpCOde de las instrucciones previas. Target Buffer Utilizar una memoria ultrarrápida con una tabla de historia de saltos. Autor: Alejandro Furfaro - 2008 21 Predicción de saltos Ej: JECXZ continuar Asumir que nunca se salta otro: lodsd ; aqui hacemos algo con eax stosb Asumir que loop otro siempre se salta continuar: Autor: Alejandro Furfaro - 2008 22 Branch Target Buffer Con un contador de 2 bits se implementa una máquina de estados. Cada vez que salta incrementa. Cada vez que no salta decrementa. En los extremos de cuenta, satura. Con los dos valores mas bajos del contador predice “No Saltar” Con los dos mas altos predice “Saltar” Autor: Alejandro Furfaro - 2008 23 Branch Target Buffer Autor: Alejandro Furfaro - 2008 Algoritmo que salta una vez cada dos. La máquina arranca “Strongly Not Taken” Pasa de “Strongly Not Taken” a Weakly Not Taken”, y vuelve a “Srongly Not Taken”. No acierta nunca!! Con un buffer puede corregir y la máquina de estados avanza entre los estados 2 y 3 y predice correctamente24 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 modelos para lograr este efecto Super pipeline Superescalar Autor: Alejandro Furfaro - 2008 25 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 - 2008 26 Limitaciones al modelo superescalar Dos o mas instrucciones compiten por acceso en el mismo momento al mismo recurso: Registro. Dirección de Memoria Unidad funcional del procesador Las instrucciones de transferencia de flujo (denominadas branch, y que son generalmente 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 - 2008 27 Arquitectura super pipeline 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 - 2008 28 Comparaciones Autor: Alejandro Furfaro - 2008 29 Efecto de las Dependencias Autor: Alejandro Furfaro - 2008 30 Casos de Pipelining en el IA-32 Autor: Alejandro Furfaro - 2008 31 Ejemplo de Super pipeline: Pentium IV Autor: Alejandro Furfaro - 2008 32 Memoria Cache Memorias: Evolución Pioneros: Maurcice Wilkes con la primer memoria de tanque de mercurio para la computadora EDSAC. 2 bytes: 1947. Visionarios…. "640K debe ser suficiente para cualquiera.” Bill Gates, 1981 Autor: Alejandro Furfaro - 2008 34 Tecnología de memorias: RAM Dinámica CAS RAS Cd Buffer Bit de datos de salida al bus Transistor Diagrama de un bit elemental de DRAM (Dynamic RAM). Almacena la información como una carga en una capacidad espuria de un transistor. Una celda (un bit) se implementa con un solo transistor ⇒ máxima capacidad de almacenamiento por chip. Ese transistor consume mínima energía ⇒ Muy bajo consumo. Al leer el bit, se descarga la capacidad ⇒ necesita regenerar la carga ⇒ aumenta entonces el tiempo de acceso de la celda. Autor: Alejandro Furfaro - 2008 35 Tecnología de memorias: RAM Estática Línea de Bit Línea de Bit Selección 1 3 4 2 5 6 Diagrama del biestable de un bit básico de SRAM (Static RAM). Almacena la información en un biestable. Una celda (un bit) se compone de seis transistores ⇒ menor capacidad de almacenamiento por chip. 3 transistores consumen energía máxima en forma permanente y los otros 3 consumen mínima energía ⇒ Mayor consumo La lectura es directa y no destructiva ⇒ tiempo de acceso muy bajo Autor: Alejandro Furfaro - 2008 36 Estructura de Bus clásica CONTROL DATOS ADDRESS Procesador Bus de Control Buffer de Datos Buffer de Address Bus Local del Procesador BUS DEL SISTEMA Memoria del Sistema Autor: Alejandro Furfaro - 2008 E/S del Sistema Desde fines de los años 80, los procesadores desarrollaban velocidades muy superiores a los tiempos de acceso a memoria. En este escenario, el procesador necesita generar wait states para esperar que la memoria esté lista (“READY”) para el acceso. ¿Tiene sentido lograr altos clocks en los procesadores si no puede aprovecharlos por tener que esperar (wait) a la memoria? 37 Crecimiento de la velocidad de clock de las CPU versus memoria 1100 1000 Pentium III 1GHz 900 800 700 600 Pentium II 400 MHz. 500 400 486 DX4 100 MHz. 300 Memorias 200 386 DX 33 MHz 100 89 90 Autor: Alejandro Furfaro - 2008 91 92 93 94 95 96 97 98 99 00 38 El problema RAM dinámica (DRAM) Consumo mínimo. Capacidad de almacenamiento comparativamente alta. Costo por bit bajo. Tiempo de acceso alto (lento), debido al circuito de regeneración de carga. Si construimos el banco de memoria utilizando RAM dinámica, no aprovechamos la velocidad del procesador. RAM estática (SRAM) Alto consumo relativo. Capacidad de almacenamiento comparativamente baja. Costo por bit alto. Tiempo de acceso bajo (es mas rápida). Si construimos el banco de memoria utilizando RAM estática, el costo y el consumo de la computadora son altos. Autor: Alejandro Furfaro - 2008 39 La solución: Memoria cache Se trata de un banco de SRAM de muy alta velocidad, que contiene una copia de los datos e instrucciones que están en memoria principal El arte consiste en que esta copia esté disponible justo cuando el procesador la necesita permitiéndole acceder a esos ítems sin recurrir a wait states. 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. Requiere de hardware adicional que asegure que este pequeño banco de memoria cache contenga los datos e instrucciones mas frecuentemente utilizados por el procesador. Autor: Alejandro Furfaro - 2008 40 Referencias El tamaño del banco de memoria cache debe ser: 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 Suficientemente pequeña para no afectar el consumo ni el costo del sistema. Se dice que se logra un hit cuando se accede a un ítem (dato o código) y éste se encuentra en la memoria cache. En caso contrario, se dice que el resultado del acceso es un miss. Se espera un hit rate lo mas alto posible hit rate = Cantidad de accesos con presencia en Memoria Cache Cantidad total de accesos a memoria Autor: Alejandro Furfaro - 2008 41 Operación de Lectura de memoria Inicio CPU envía señal de lectura Hit!! Busca ítem en cache Busca ítem en cache y envía a la CPU Miss Busca ítem en memoria del sistema Escribe ítem en el cache Actualiza directorio cache Envía ítem a la CPU Fin Autor: Alejandro Furfaro - 2008 42 Estructura de Bus del sistema con cache Memoria cache CONTROL ADDRESS DATOS CONTROL Procesador Bus Local del procesador Controlador de Memoria caché Buffer de Datos Buffer de Address Bus Local del controlador cache Bus de Control Autor: Alejandro Furfaro - 2008 BUS DEL SISTEMA 43 Como trabaja el controlador cache El controlador cache trabaja mediante dos principios que surgen de analizar el comportamiento de los algoritmos de software que se emplean habitualmente. Principio de vecindad temporal: temporal Si un ítem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Principio de vecindad espacial: espacial Si un ítem es referenciado, es altamente probable que sean referenciados sus ítems vecinos. Ejemplo: Algoritmo de convolución for (i = 0 ; i < 256 ; i++ ){ suma = 0.0f; for (j = 0 ; (j <= i && j < 256) ; j++) suma += v0[i-j] * v1[j]; fAux[i] = suma; } i, j, suma, se utilizan a menudo. Por lo tanto si se mantienen en el cache, el tiempo de acceso a estas variables por parte del procesador es óptimo. Autor: Alejandro Furfaro - 2008 44 Estructura de memoria cache Tag Línea Dirección 0 1 2 3 4 5 6 7 8 9 Línea: Elemento mínimo de palabra de datos dentro del cache. Corresponde a un múltiplo del tamaño de la palabra de datos de memoria. Razón: Cuando se direcciona un ítem en memoria generalmente se requerirá de los ítem que lo rodean (Principio de vecindad espacial) Autor: Alejandro Furfaro - 2008 Línea Ancho de palabra 45 Memoria Cache Procesador Bus del Procesador (Bus local) Baja capacidad, pero ¡¡accesible a la velocidad del procesador!! Subsistema caché Controlador de Memoria caché Memoria SRAM ultrarrápida (cache) Hardware adicional. Mantiene el cache con los datos mas frecuentemente utilizados por el procesador Bus del Sistema 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 - 2008 46 Organización del caché: Mapeo Directo Bit de validez del Tag 1 Línea = 4 bytes Línea Tag 17 bits Set 0 Línea Bits de validez de las líneas 32 Kbytes (igual tamaño Que el del cache) Set 1 Pag.217 -1 Set 1023 Directorio de Caché Interno Autor: Alejandro Furfaro - 2008 Memoria Caché Pag.0 4 Gbytes de Memoria Principal 47 Organización del caché de mapeo directo Caché Address (1 de 8 KLíneas) A5 A 4 A 15 A 14 A 31 Tag de 17 bits (1 de las 217 páginas) Set Address (1 de 1024 sets) A2 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 Autor: Alejandro Furfaro - 2008 Directorio de Caché Interno 48 Organización del caché: Asociativo de dos vías Bit de validez del Tag Línea Tag Set 0 18 bits Bits de Bits validez LRU de las líneas Bits LRU Línea Línea 18 bits 18 bits Set 1 18 bits Bits LRU 16 Kbytes (igual tamaño Que el de cada banco del cache) 18 bits 1 Línea = 4 bytes Pag.218 -1 18 bits Set 511 Directorio de Caché Interno Autor: Alejandro Furfaro - 2008 Memoria Caché Pag.0 4 Gbytes de Memoria Principal 49 Organización del caché asociativo de dos vías Caché Address (1 de 4 KLíneas) A31 A5 A4 A14 A13 Tag de 18 bits (1 de las 218 páginas) Set Address (1 de 512 sets) A2 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 Autor: Alejandro Furfaro - 2008 Directorio de Caché Interno 50 Manejo del contenido Algoritmos de reemplazo del contenido de la memoria cache LRU: Least Recently Used. Se corresponde con el principio de vecindad temporal. LFU: Last Frecuently Used Random FIFO Autor: Alejandro Furfaro - 2008 51 Cache miss: Impacto en el Pipeline de instrucciones Pipeline: permite superponer en el tiempo la ejecución de varias instrucciones a la vez. No requiere hardware 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: B usq. B usq. B usq. B usq. B usq. B usq. B usq. In st. 1 In st. 2 In st. 3 In st. 4 In st. 5 In st. 6 In st. 7 D e c .F I D e c . D ec. D ec. D ec. D ec. In st. 1 In st. 2 In st. 3 In st. 4 In st. 5 In st. 6 B usq. B usq. Op. 1 Op. 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) B usq. Op. 3 B usq. Op. 4 B usq. Op. 5 E je c . E je c . E je c . E je c . In st. 1 In st. 2 In st. 3 In st. 4 E s c r ib . E s c r ib . E s c r ib . Res. 1 Res. 2 Res. 3 Resultado Una vez en régimen ejecuta a razón de una instrucción por ciclo de clock Autor: Alejandro Furfaro - 2008 52 Cache miss: Impacto en el Pipeline de instrucciones Si la búsqueda de una instrucción o de un operando en el cache falla, entonces el procesador debe recurrir a la memoria principal. La demora en el acceso hace que el pipeline se atasque (stall) Una vez recuperado el dato de memoria principal se requieren (en este ejemplo), 5 ciclos de reloj adicionales para recuperar el ritmo de operación del pipeline!! Autor: Alejandro Furfaro - 2008 53 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 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. Autor: Alejandro Furfaro - 2008 54 Estructura de Bus del sistema Multiprocesador con cache SNOOP BUS Buffer de Datos ADDRESS Memoria CONTROL Controlador de cache Memoria caché DATOS Buffer de Address CONTROL ADDRESS Buffer de Datos Memoria CONTROL Controlador de cache Memoria caché SNOOP BUS Procesador DATOS CONTROL Procesador Buffer de Address Bus del cache Bus de Control Bus local del procesador Bus local del controlador cache BUS DEL SISTEMA Autor: Alejandro Furfaro - 2008 55 Multilevel cache Cache Level1 On chip Cache Level 2 Tamaño Cache L2 > Tamaño Cache L1 Velocidad Cache L1 > Velocidad Cache L2 Autor: Alejandro Furfaro - 2008 CPU Cache controller System Memory (DRAM) 56 Coherencia de cache Protocolo MESI M - Modified: Línea presente solamente en éste cache que varió respecto de su valor en memoria del sistema (dirty). Requiere write back hacia la memoria del sistema antes que otro procesador lea desde allí el dato (que ya no es válido). E – Exclusive: Línea presente solo en esta cache, que coincide con la copia en memoria principal (clean). S – Shared: Línea del cache presente y puede estar almacenada en los caches de otros procesadores. I – Invalid: Línea de cache no es válida. Aplica a cache L1 de datos y L2/L3 Para cache L1 de código solo Shared e Invalid Autor: Alejandro Furfaro - 2008 57 Implementaciones prácticas de memoria cache (1) Intel 80486 8 Kbytes de cache L1 on chip Tamaño de línea: 16 bytes Organización asociativa de 4-vías Pentium dos caches on-chip, uno para datos y otro para instrucciones. Tamaño de cada cahe: 8 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 4-vías PowerPC 601 cache on-chip de 32 Kbytes Tamaño de línea: 32 bytes Organización asociativa de 8-vías Autor: Alejandro Furfaro - 2008 58 Implementaciones prácticas de memoria cache (2) PowerPC 603 PowerPC 604 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 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 - 2008 59 Micro-Arquitectura 386 80386DX, 80386SX Antecedentes: Familia iAPx86 de Intel Se presenta en 1978 con el Microprocesador 8086. Arquitectura de 16 bits. Intel se compromete a mantener compatibilidad ascendente en los posteriores procesadores En 1982 se presenta el 80286. Capacidad de direccionamiento de Memoria 16 Mbytes. Mantiene la arquitectura de 16 bits Incorpora capacidades para implementar Multitarea Autor: Alejandro Furfaro - 2008 61 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. Buses de Datos y Direcciones de 32 bits. 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 3 Modos de trabajo Real Protegido Virtual 86 Autor: Alejandro Furfaro - 2008 62 Procesador 80386DX: Diagrama Interno B.I.U. M.M.U. BUS DE DIRECCION EFECTIVA UNIDAD DE PAGINACION 32 SUMADOR DE 3 ENTRADAS SUMADOR 32 RGISTROS DESCRIPTORES 32 PLA DE LIMITES Y ATRIBUTOS ARCHIVO DE REGISTROS DE CONTROL UNIDAD DE DECODIFICACION DESPLAZADOR SUMADOR MULTIPLICAR DIVIDIR BUS DE DES PLA ZAM IEN TO UNIDAD DE EJECUCION BUS STATUS FLAG ALU CONTROL PRIORIZACION DE REQUERIMIENTOS DRVER DE DIRECCIONES C.P.U. CONTROL DE PIPELINE / TAMAÑO DEL BUS INTERNO MULTIPLEXORES / TRANSCEPTORES UNIDAD DE BUSQUEDA PREDECODIFICADOR DE INSTRUCCIONES PREBÚSQUEDA / CHEQUEO DE LIMITES ROM DE CONTROL COLA DE HASTA 3 INSTRUCCIONES DECODIFICADAS COLA DE HASTA 16 BYTES DE CÓDIGO STREAM DE CODIGO DE 32 BITS HOLD, INTR,NMI, ERROR, BUSY RESET,HLDA CACHE DE PAGINAS DECODIFICACION Y SECUENCIAMIENTO CONTROL 32 PLA DE CONTROL Y ATRIBUTOS BU S DE DI RE CCI ON ES LIN EAL ES UNIDAD DE TESTEO Y PROTECCION UNIDAD DE CONTROL DEL BUS CON TRO L BUS DE DIRECCION EFECTIVA UNIDAD DE SEGMENTACION BUS DE DIRECCIONES FISICAS BE0 BE3 A2 - A31 M/IO, D/C, W/R, LOCK ADS, NA, BS16 READY D0 - D31 32 BUS DE BUSQUEDA DE CODIGO Y TABLA DE PAGINAS 32 BUS DEDICADO A LA ALU Autor: Alejandro Furfaro - 2008 63 80386 - Pinout P 1 2 5 6 7 N M L K J G F E D C A8 V ss V cc V cc A 31 A 29 A 24 V ss A 18 V cc V ss A13 A10 A7 A5 V ss V ss V cc A 28 A 25 V ss A 19 V cc V ss A12 A9 A6 A4 A3 D 29 V cc V ss A2 NC NC D26 D 27 D 31 V cc V ss V cc V ss D 25 D 28 NC V ss D 24 V cc V cc N C IN T R V cc V cc D 23 V ss 10 11 12 13 14 A A16 A15 A14 A11 8 9 B A30 A27 A26 A23 A21 A20 A17 3 4 O NC R ESET B U SY# Vss V cc D 19 D 17 V ss V ss D 18 D 16 D 15 V cc C LK2 B e0# V cc V ss D 13 D 11 V cc D 8 D5 Vss D 1 READY# N C N C N A # B e1# B e2# B e3# Vss D 9 H LD A D 6 D4 D3 D2 L K J N M D0 V ss D 14 D 12 D 10 V cc D 7 O 2 3 4 5 6 7 8 PREQ NM I ERRO R# D22 D 21 D 20 P 1 Autor: Alejandro Furfaro - 2008 V c c N C M /IO # V cc V ss A D S# H O LD B s16# V ss V cc G F E D C B 9 10 11 12 13 14 Alimentación. 20 terminales para Vcc y 21 para Vss (o tierra) Reloj CLK2 Bus de Datos D0 a D31 Se pueden agrupar en bytes (D0-D7, D8-D15, D16-D23, D24-D31) Bus de Address A2 a A31 BE0# BE1# BE2# BE3# A 64 80386: Manejo de Memoria organizada en bytes con 32 líneas de address 0 4 8 C A 2-A 1 5 9 D A 2-A 2 A 2-A E 3 B F A 2-A 31 D 24 -D 31 D 0-D 16 -D 31 B y te A lin e a d o W o r d N o A l in e a d a D o b le W o r d N o A l in e a d a W o r d N o A l in e a d a B y t e N o A li n e a d o W o r d N o A l in e a d o D o b le W o r d A l in e a d a 31 D 8-D D 31 D i r e c c ió n 0 1 - 2 3 - 6 7 - 8 9 A - B C - F 23 A 2-A 7 15 D 0-D BE 80386 31 0 31 BE 1 BE 2 Be3 CS CS CS CS Autor: Alejandro Furfaro - 2008 65 80386 - Generación de A0 y A1 a partir de BE0-3# BE3# BE2# BE1# BE0# A1 A0 = BLE# BHE# 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 x 1 0 1 0 0 0 x x 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 x x x 1 x x x 1 x x x 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 x 1 0 0 1 x 0 0 0 0 x 1 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 x x x Significado Dword alineada 3 1 eros bytes de dword no alineada * word o 2 1 eros bytes de dword no alineada * * * byte solo o principio de una word o dword no alineada 3 últimos bytes de dword no alineada word no alineada * Byte word alineada o mitad final de una dword no alineada byte byte solo o final de una word o dword no alineada ** BE3 BE1 BE0 00 BE2 00 01 11 10 Autor: Alejandro Furfaro - 2008 0 X 0 0 01 11 10 0 X 0 0 1 1 X X X X 0 X A1= BE1.BE0 BE1# BE0# A1 66 80386 - Generación de A0 y A1 a partir de BE0-3# BE3 BE1 BE0 BE2 00 01 11 10 00 01 11 10 0 X 0 0 1 X 1 1 0 1 X 0 X X 0 X A0= BE1.BE0+BE2.BE0= BLE# BE1# BE0# A0 BE2# BE0# BLE# BE1 BE3 BE0 00 BE2 00 01 11 10 0 X 0 0 Autor: Alejandro Furfaro - 2008 01 11 10 0 X 0 0 0 0 X 1 X X 1 X BHE#= BE1.BE30 BE1# BE3# BHE# 67 80386 - Pinout Señales de estado del ciclo de Bus ciclo de bus = tiempo que transcurre para realizar una transferencia completa por el bus del sistema W/R# : Write/Read#. M/IO# : Memoria/Input Output#. D/C# : Data/Control#. M/IO# D/C# W/R# 0 0 0 LOCK# 0 0 1 0 1 0 ADS# : Address 0 1 1 1 0 0 Status. 1 0 1 1 Autor: Alejandro Furfaro - 2008 1 0 Tipos de ciclo de Bus Reconocimiento de Interrupción Bus Inhibido - Si - Lectura de E/S Escritura de E/S No No Lectura de código de Memoria HALT SHUTDOWN Dirección = 2 Dirección = 0 BE0# = 1 BE0# = 0 BE1# = 1 BE1# = 1 BE2# = 0 BE2# = 1 BE3# = 1 BE3# = 1 A2-A31 = 0 A2-A31 = 0 No Lectura de datos de memoria No Algunos ciclos 68 80386 - Pinout Señales de estado del ciclo de Bus Marcan la finalización de un ciclo de bus, el ancho del bus de datos para cada ciclo, y la posibilidad de adelantar durante el ciclo de bus en curso información correspondiente al ciclo de bus siguiente Ready# BS16# : Bus Size 16. NA# : Next Address. 8 80386 HOLD : Requerimiento del bus. HLDA : Reconocimiento de requerimiento de bus. D0-D7 MEMORIA CS 30 A2-A31 BE3# BE2# BE1# BE0# Señales de Interrupción. INTR : INTerrupt Request. NMI : Non Maskable Autor: Alejandro Furfaro - 2008 MEMORIA CS 8 Arbitraje del Bus D8-D15 Interrupt A1 LOGICA AUXILIAR BLE# BHE# 69 Ejemplo: Interfaz entre la CPU 386DX y el controlador cache 82385 12 ó 13 Desde circuito de OSC/RESET 32 82385 A la memoria CACHE 4 2 2 CALEN CLK2 CT/R# RESET CS0#-CS3# CLK2 ADS# ADS# NA# COEA#-COEB# CWEA#-CWEB# NA# LOCK# BE0#-BE3# BHLDA READYO# WBS BRDYEN# FLUSH BREADY# MISS# BAOE# BNA# LDSTB BADS# DOE# BBE0#-BBE3# BT/R# A2-A31 D0-D31 READY# READY de otro 386DX CAB OE# DIR SBA CBA 32 Autor: Alejandro Furfaro - 2008 BE0#-BE3# BACP BLOCK# 4 M/IO#,D/C#,W/R# 30 32 A2-A31 READY# LOCK# 3 4 M/IO#,D/C#,W/R# BHOLD 386D X RESET 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 70 Micro-Arquitectura 486 80486DX, 80486SX, 80486DX2, 80486DX4 Procesador 80486: Diagrama Interno Autor: Alejandro Furfaro - 2008 72 Cache Multi Level (L1, y L2 cache) Ejemplo práctico: Procesador 80486DX. Fue el primero en introducir esta arquitectura Autor: Alejandro Furfaro - 2008 73 Micro-Arquitectura P5 Pentium, Pentium MMX Procesador Pentium: Características Arquitectura Superescalar 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. Dependencia de Recursos. Bus externo de datos de 64 líneas Branch Prediction 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 - 2008 75 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 - 2008 Dos pipelines de instrucciones U pipeline: Ejecuta instrucciones enteras V pipeline. Ejecuta o solo de punto flotante instrucciones (equivale a laparalelo Unidad enteras en decon ejecución el U. del 486) Dos Cache L1 internas: una de datos (8 Kbytes) y otra de código 76 (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. 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. 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. 4 ciclos de clock de demora en V pipeline 3 ciclos de clock de demora en el U Pipeline Autor: Alejandro Furfaro - 2008 77 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, 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 PIC’s 8259 presentes en el motherboard (siempre!! Necesario para asegurar Compatibilidad) Si se lo habilita el procesador transforma los pines de interrupción en: PICCLK: Terminal de sincronización con el otro procesador PICD0 y PICD1 bus de comunicación de dos alambres Autor: Alejandro Furfaro - 2008 78 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 - 2008 79 Interrupciones en SMP: El APIC Autor: Alejandro Furfaro - 2008 80 APIC Interrupt Controller Fuentes de interrupciones del APIC: 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 - 2008 81 Micro-Arquitectura P6 Pentium Pro, Pentium II, Pentium II Xeon, Celeron, Pentium III, Pentium III Xeon Micro Arquitectura Three core engines System Bus L2 Cache Bus Interface Unit L1 ICache Fetch Fetch / Decode Unit Dispatch /Execute Unit L1 DCache Load Store Retire Unit Instruction Pool Autor: Alejandro Furfaro - 2008 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 83 Funcionamiento del Core Consideremos el siguiente código genérico r1<- mem [r0] /* instrucción 1*/ r2 <- r1 + r2 /* instrucción 2*/ r5 <- r5 + r4 /* instrucción 3*/ r6 <- r6 - r3 /* instrucción 4*/ La instrucción 1 genera un cache miss. La instrucción 2 depende del registro r1, => no puede ejecutarse hasta no cargarse r1 con el valor válido en la instrucción 1. En este punto cualquier core basado en ejecución en orden, se detiene hasta que se obtenga el operando apuntado por [r0] desde la memoria del sistema. Autor: Alejandro Furfaro - 2008 84 Funcionamiento del Core Al crear una ventana de ejecución el procesador tiene visibilidad de mayor cantidad de instrucciones. De este modo, un procesador 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. Además puede ejecutar en forma especulativa ambas ramas de un branch, descartando luego de verificar la condición aquellas correspondientes a la rama que no se debe ejecutar Las primeras versiones eran capaces de “ver” 20 instrucciones. Autor: Alejandro Furfaro - 2008 85 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 Cache Memory Reorder Buffer Bus Interface Unit ICache L1 DCache Next_IP WIRE Reservation Station Branch Table Buffer Simple Instruction Decoder Simple Instruction Decoder Microcode Instruction Sequencer Complex Instruction Decoder Register Alias Table Port 0 SIMD0 FEU IEU Memory Interface Unit SIMD1 Port 1 JEU IEU Port 2 AGU Port 3,4 AGU Store Retirement Register File Load Re Order Buffer (Instruction Pool) µop1 µop2 µop3 µop4 µop5 Autor: Alejandro Furfaro - 2008 µop6 µop7 µop8 µop9 µop10 µop11 µop12 µop13 µop14 µop15 µop16 86 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) Instrucciones simples 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 - 2008 87 Three core engines en detalle (cont.) Las µops se encolan en el Register Alias Table en donde las referencias a los registros IA-32 se convierten en 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. 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. Si no se espera a que se libere el recurso y se envía Un procesador P6 puede despachar 5 µops por los diferentes ports de ejecución. Autor: Alejandro Furfaro - 2008 88 Three core engines en detalle (cont.) Las µops de 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 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 asumiéndosela como válida, y las remueve del Pool Instrucciones. Unidad de Retiro 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 - 2008 89 Pentium II y III: Ports de Ejecución Autor: Alejandro Furfaro - 2008 90 Micro Arquitectura NetBurst Pentium IV, Xeon, Pentium IV HT, Pentium M Micro Arquitectura NetBurst: Diagrama System Bus Level 1 Data Cache Bus Unit Level 2 Cache Memory Subsystem Fetch/ Decode Trace Cache Microcode ROM BTB/Branch Prediction Front End Autor: Alejandro Furfaro - 2008 Excecution Units Integer and FP Excecution Units Out-of-Order excecution logic Retirement Branch History Update Out-Of-Order Engine 92 Micro Arquitectura NetBurst: Bloques Front end: Fetch/decode unit Execution trace cache. Tamaño 12K µops. Funciones básicas: 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 - 2008 93 Pentium IV: Out of Order Core Autor: Alejandro Furfaro - 2008 94 Pentium IV: Diagrama detallado Front End BTB (4K entries) Trace Cache BTB (256 entries) Instruction/TLB Prefetcher System Bus (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 FP Register / Bypass Slow ALU Complex Instruc L1 Data Cache (8Kbyte 4-way) Autor: Alejandro Furfaro - 2008 Simple FP FP MMX SSE SSE2 Cache L2 256 Kbytes 8 vías FP Move (256 bits) L2 Cache Control Unit 48 Gbytes/seg 95 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 - 2008 96 Tecnología Hyperthreading Autor: Alejandro Furfaro - 2008 97 Tecnología Hyperthreading Front End NetBurst (a) Búsqueda con L1 ICache Hit (b) Búsqueda con L1 ICache Miss Autor: Alejandro Furfaro - 2008 98 Tecnología Hyperthreading Motor de ejecución Fuera de Orden con Hyperthreading Autor: Alejandro Furfaro - 2008 99 Tecnología Hyperthreading Modelo de procesamiento de dos threads (a) Un procesador Hyperthreading (b) Un procesador Dual Core Autor: Alejandro Furfaro - 2008 100 Microarquitectura Core Core2Duo Core2Quad Xeon Quad Core Dual Core CORE 1 CORE 2 INSTRUCTION FETCH AND PRE-DECODE INSTRUCTION FETCH AND PRE-DECODE INSTRUCTION QUEUE INSTRUCTION QUEUE DECODE DECODE RENAME / ALLOC RENAME / ALLOC RETIREMENT UNIT (REORDER BUFFER) RETIREMENT UNIT (REORDER BUFFER) SCHEDULERS SCHEDULERS EXECUTE EXECUTE Autor: Alejandro Furfaro - 2008 102 Diagrama de arquitectura Core Autor: Alejandro Furfaro - 2008 103 Quad Core Autor: Alejandro Furfaro - 2008 104 Core i7 Autor: Alejandro Furfaro - 2008 105 Diagrama de arquitectura Core Autor: Alejandro Furfaro - 2008 106 Pipeling en Core i7 Autor: Alejandro Furfaro - 2008 107 Wide Dynamic Execution El pipeline se reduce a 14 etapas para suavizar penalizaciones en los saltos al vaciar los pipelines. Cuatro vías de ejecución de Micro operaciones en paralelo por cada core Cuatro decodificadores. Hasta 5 decodificaciones por ciclo de clock. (contra las tres de la μarquitectura anterior) Microfusion Macrofusion ALU’s mejoradas Autor: Alejandro Furfaro - 2008 108 Macrofusion Cola de instrucciones Target inc ebx DEC 0 mov [esi],ebx DEC 1 cmp ebx,50000 DEC 2 jne Target DEC 3 Clock 1 Clock 2 mov eax,[esi+8] Autor: Alejandro Furfaro - 2008 109 Macrofusion Target Cola de instrucciones inc ebx DEC 0 mov [esi],ebx DEC 1 cmp ebx,50000 DEC 2 jne Target DEC 3 mov eax,[esi+8] Macro Fusion uCODE ROM cmpjne eax, [esi+4],Target DECODE EXECUTE Autor: Alejandro Furfaro - 2008 110 Microfusion Una vez decodificadas las instrucciones se traducen en μops. La mayoría de las instrucciones se traducen en 1 μop. Las instrucciones complejas se convierten en varias μops. Las ALU ejecutan μops Microfusion permite agrupar varias μops en una mas compleja de modo de minimizar la cantidad de μops que se schedularán en cada unidad de ejecución. Autor: Alejandro Furfaro - 2008 111 Advanced Digital Media Boost Las instrucciones SIMD de 128 bits se ejecutan en 1 ciclo de clock (contra 2 de las μarquitecturas anteriores). Tres ports de ejecución para instrucciones SIMD, en cada core. Hasta 8 operaciones de punto flotante por ciclo de clock en cada core Autor: Alejandro Furfaro - 2008 112 Memory Disambiguation En general las operaciones Load esperan a una operación store precedente, aun cuando no tienen relación (dependencia) entre si. A veces conviene alterar ese orden siempre que no traiga consecuencias a la lógica del programa, si permite ganar tiempo. Micro arquitectura Core INST 2 “LOAD [Y]” INST 1 “STORE [X]” Otras IN ORDER INST 2 “LOAD [Y]” INST 1 “STORE [X]” DECODE/SCHEDULE DECODE/SCHEDULE INST 2 “LOAD [Y]” INST 2 “LOAD [Y]” INST 1 “STORE [X]” INST 1 “STORE [X]” INST 2 “LOAD [Y]” EXECUTE INST 1 “STORE [X]” Inst. 2 “Load” puede ejecutarse Antes de la Inst. 1 “Store” Autor: Alejandro Furfaro - 2008 OUT OF ORDER INST 2 “LOAD [Y]” STALL EXECUTE INST 1 “STORE [X]” Inst. 2 debe Esperar a la Inst. 1 “Store” Para completarse 113 Smart Cache L2 Compartida Microarquitectura Core Se decrementa Tráfico L2 Independiente Se Incrementa Tráfico Disponible Bi-Direccionalmente En forma dinámica L1 CACHE CORE 1 L1 CACHE CORE 2 Autor: Alejandro Furfaro - 2008 x L1 CACHE CORE 1 No Compartible L1 CACHE CORE 2 114 Consumo Tecnología SpeedStep. Las unidades inician su operación sub clockeadas, y aumentan la frecuencia a medida que la operación lo requiere (Pentium M) Autor: Alejandro Furfaro - 2008 115 Referencias Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture. Capítulo 2 https://www.cs.tcd.ie/Jeremy.Jones/vivio/ca ches/MESIHelp.htm Organización y Arquitectura de Computadores. 5ta. Ed. William Stallins. Capítulos 4, 12, 13, y 16 Autor: Alejandro Furfaro - 2008 116