historia del “pipeline” - Arquitectura de Computadores y Automática
Transcripción
historia del “pipeline” - Arquitectura de Computadores y Automática
HISTORIA DEL “PIPELINE” Juan Antonio Romano Largo. Arquitectura de Computadores. CRONOLOGÍA • • • • • • Introducción IBM 704 IBM 7030 (proyecto Stretch) CDC 6600 VAX 8800 RISC vs CISC (MIPS vs VAX 8700) • R4000 (Supersegmentado) • Arq. Superescalar y VLIW Otros aspectos de la segmentación: 1.- Interrupciones precisas 2.- Bifurcaciones (procesador CRISP) Juan Antonio Romano Largo. Arquitectura de Computadores. ppo. S. XX 1955 1956-1961 1964 1987 1989 1991 actualmente Introducción “pipeline” podría traducirse como: segmentación de cauce Se aplicó por primera vez en la fabricación del Ford T a principios del siglo XX. Bucholtz en el año 1962: “The data flor through the computer [...] is comparable to a pipeline which, once filled, has a large output rate no matter what its length” Juan Antonio Romano Largo. Arquitectura de Computadores. IBM 704 (año 1955) circuitos aritméticos paralelos binarios unidad de punto flotante 5 KFLOPS Problema: operaciones de entrada/salida suponían un cuello de botella. Solución: incorporar procesadores de E/S independientes (posteriormente llamados canales) en su sucesor, el IBM 709, que apareció en el año 1958. mejora del rendimiento del 60% utilizando la misma frecuencia de reloj. Juan Antonio Romano Largo. Arquitectura de Computadores. Proyecto Strecht (1956): IBM 7030 Objetivo: conseguir una máquina 100 veces más rápida que el IBM 704 era necesario que el procesador fuese capaz de ejecutar simultáneamente varias instrucciones En 1961, con los “benchmarks”, se demostró que sólo habían conseguido ser 30 veces más rápidos que el IBM 704, debido a que tardaba demasiado tiempo en recuperarse de un error, lo cual originó una fuerte caída del precio de la máquina. Juan Antonio Romano Largo. Arquitectura de Computadores. 1964: CDC 6600 Seymour Cray diseña y “Control Data Corporation” produce el CDC 6600: fue el primer computador en usar múltiples unidades funcionales así como procesadores periféricos (en realidad se trataba de 10 pequeñas computadoras que dirigían los datos hacia una unidad central de proceso). La máquina tuvo gran éxito, tanto tecnológico como comercial, ya que consiguió multiplicar por tres la velocidad del Stretch, alcanzando 3 MIPs. El “pipelining” pasó a tener un papel menos importante a finales de la década de los ’70 porque se buscaba simplificar el software. Juan Antonio Romano Largo. Arquitectura de Computadores. Segmentación y rendimiento del procesador VAX 8800 • 1987: El VAX 8800 es el procesador más rápido Tiempo de ciclo menor Profundidad del pipeline Juan Antonio Romano Largo. Arquitectura de Computadores. Microinstrucciones segmentadas 1.- Decodificación. 2.- Control de store y secuenciamiento. 3.- Transferencia de operandos y lectura de registros. 4.- Ejecución (cálculo de resultados y de direcciones virtuales). 5.- Escritura de registros y/o acceso a la memoria caché. Juan Antonio Romano Largo. Arquitectura de Computadores. RENDIMIENTO Tprogama = Nº instrucciones * CPI * Tciclo 45 ns Speedup = 5.6 Juan Antonio Romano Largo. Arquitectura de Computadores. Arquitecturas RISC y CISC Comparación: Benchmarks (SPEC) RISC vs CISC MIPS VAX 8700 MIPS mayor rendimiento que CISC para la misma arquitectura Tprogama = Nº instrucciones * CPI * Tciclo Juan Antonio Romano Largo. Arquitectura de Computadores. LAS MÁQUINAS Para conseguir que la diferencia de rendimiento no se deba a las distintas arquitecturas, se eligieron dos máquinas con organizaciones similares - Muchos registros de propósito general. - Instrucciones que involucran 3 registros de un solo ciclo de duración. - Cortocircuito de la ALU que permite leer el registro justo después de que haya sido escrito. - Load y Store de un ciclo que calculan la EA sumando al registro un desplazamiento. - Cortocircuito de caché. - El ciclo de “delay slot” tras un load se puede rellenar con otra instrucción. - Bifurcaciones retardadas. Juan Antonio Romano Largo. Arquitectura de Computadores. Benchmarks y resultados Los SPEC usados (oct. 89) 4 benchmarks enteros (gcc, espresso, eqntott y li) escritos en C 6 de punto flotante (spice, doduc, nasa7, matrix3000, fpppp y tomcatv) escritos en fortran. En operaciones de punto flotante, loads y stores y comportamiento de la caché también tiene un mejor comportamiento el MIPS frente al VAX. Juan Antonio Romano Largo. Arquitectura de Computadores. • - En la arquitectura VAX se necesita al menos un ciclo para decodificar cada operando, lo que en el caso de una suma que usa 3 registros nos llevaría al menos 4 ciclos, mientras que en MIPS solo tardaríamos un ciclo. • - MIPS dispone de 32 registros generales (32 bits) y 16 de punto flotante (64 bits), mientras que VAX solo dispone de 15 registros generales lo que va a producir más referencias a memoria que conllevará un mayor número de ciclos. • - En VAX cuando hay operaciones de punto flotante debemos mover los operandos de la CPU a la FPU, lo cual se evita en MIPS debido al gran número de registros de punto flotante disponibles. • - En VAX el tiempo para las bifurcaciones simples tomadas es de 5 ciclos, mientras que en MIPS es de 1 ciclo si se rellena el “delay slot” o de dos si no se rellena. • - La arquitectura MIPS permite cambiar de posición instrucciones para rellenar posibles paradas del pipeline. • - La TLB del MIPS en mucho mayor, lo cual permite captar mejor la localidad de las instrucciones. Juan Antonio Romano Largo. Arquitectura de Computadores. FUTURO DEL VAX Juan Antonio Romano Largo. Arquitectura de Computadores. Procesadores supersegmentados Constituidos por un gran número de etapas del “pipeline” (cauce profundo) R4000 (1991): - Extendía el juego de instrucciones del MIPS a una arquitectura de 64 bits - Integraba la FPU dentro del chip - Operaba a unas frecuencias de reloj mucho mayores (cuando fue introducido, trabajaba a 100 MHz). -Las cachés se redujeron hasta unos 8Kb cada una y costaba tres ciclos de reloj acceder a ellas. Estas grandes velocidades de operación fueron posibilitadas usando la técnica llamada pipelining profundo (conocida como super-pipelining). Juan Antonio Romano Largo. Arquitectura de Computadores. Arquitecturas superescalar y VLIW Lanzamiento de múltiples instrucciones en un solo ciclo: - tener recursos disponibles - resolver las dependencias de datos y de control. Superescalar simple (2 vías) lanza en cada ciclo de reloj una instrucción en punto flotante y otra de otro tipo. Así reduciríamos los CPI a 0.5 Limitado por los saltos, los “load” y las dependencias de datos. Se minimiza con técnicas de predicción complejas para los saltos y técnicas de prebúsqueda para los “load”. Juan Antonio Romano Largo. Arquitectura de Computadores. • VLIW (Very Long Instruction Word) Separa una instrucción muy larga en varias operaciones básicas que pueden ser ejecutadas de forma paralela por un procesador. Cada operación básica se asigna a las unidades funcionales apropiadas del equipo logrando que sean atendidas en un mismo instante. • Ventaja: la complejidad se mueve del HW al SW logrando que los equipos puedan ser de menor dimensión, costo y consumo. • Reto: diseñar un compilador que sea lo suficientemente inteligente para decidir como construir los larguísimos juegos de instrucciones. Juan Antonio Romano Largo. Arquitectura de Computadores. Otros aspectos de la segmentación: 1.- Interrupciones precisas Interrupción precisa: salva el contexto en orden secuencial, para lo cual una instrucción debe acabar antes de que empiece la siguiente. Problemas en el pipeline, ya que habrá varias Instrucciones ejecutándose a la vez. -TRAPS: Se deben a errores de SW tales como opcode ilegal, errores numéricos, desbordamiento, … -Interrupciones externas: causadas por fuentes externas a la ejecución del programa como interrupciones I/O, del temporizador, … Juan Antonio Romano Largo. Arquitectura de Computadores. Soluciones 1.- Forzar a que las instrucciones modifiquen el estado en orden: penalización y degradación del rendimiento. 2.- Buffer de reordenamiento. 3.- Bypass Path. 4.- Buffer de historia. 5.- Buffer futuro. Juan Antonio Romano Largo. Arquitectura de Computadores. Rendimiento Degradación del rendimiento: Solución básica: 26% Buffer de reordenamiento (tamaño 8) 18% a 12 % Bypass paths 12% a 3% Buffer de historia mismo rendimiento pero con una complejidad HW mucho menor Buffer futuro Juan Antonio Romano Largo. Arquitectura de Computadores. 2.- Bifuraciones El microprocesador CRISP • Técnicas HW + SW: reducir a cero las paradas del pipeline ocasionadas por las instrucciones de bifurcación. • Esto nos permite aprovechar al máximo el rendimiento potencial del pipeline CRISP Estructuras HW para implementar los saltos Técnicas de compilación Diseño de un nuevo conjunto de instrucciones Juan Antonio Romano Largo. Arquitectura de Computadores. Problema de las bifurcaciones Interrumpen el flujo de instrucciones en el pipeline La productividad media disminuye si la predicción de la bifurcación no es correcta Elecciones de diseño en el CRISP: Separar comparaciones y bifurcaciones condicionales. Solo las comparaciones puedan modificar el flag de condición. Evitar efectos laterales. Juan Antonio Romano Largo. Arquitectura de Computadores. • PREDICCIÓN DE BIFURCACIÓN: Bifurcación retardada: no es eficiente Se usa un único bit de predicción estática • DESPLEGADO DE BIFURCACIONES (Branch Spreading) Separamos con NOP la instrucción de condición y la de bifurcación • PLEGADO DE BIFURCACIONES (Branch Folding) Durante la ejecución la PDU reconoce que una instrucción que no es de bifurcación va seguida de la bifurcación y “despliega” las dos instrucciones juntas, con lo que las bifurcaciones desaparecen del pipeline y así el retardo de ejecución será cero. Para las bifurcaciones condicionales además se necesita mecanismos adicionales, como por ejemplo un campo de 31 bits llamado próximo PC alternativo, que se usa para mantener los dos posibles caminos de una bifurcación condicional. Juan Antonio Romano Largo. Arquitectura de Computadores. Evaluación Juan Antonio Romano Largo. Arquitectura de Computadores. Resumen • Evolución de las máquinas: IBM 704, IBM 7030, CDC 6600, VAX 8800, R4000 … • Comparativa entre arq. RISC y CISC • ILP: superescalar y VLIW • Interrupciones • Bifurcaciones Juan Antonio Romano Largo. Arquitectura de Computadores.