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.

Documentos relacionados