ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 14 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and Design (The hardware / software interface), 4ta Edición, de David A. Patterson y John L. Hennessy. Editorial Morgan Kaufmann
AGENDA Camino de datos encauzado (Pipelining)
Camino de datos de un solo ciclo
Implementación de un solo ciclo Es ineficiente EL ciclo de reloj debe durar lo mismo que la instrucción que tarde más. Generalmente, la instrucción load El CPI = 1, pero la duración del ciclo es muy grande ¿Qué ocurre si añadimos instrucciones punto flotante o más complejas a este camino de datos?
Pipelining Múltiples instrucciones solapan su ejecución Como en un línea de ensamblaje Analogía de lavar ropa: –Colocar la ropa sucia en la lavadora –Cuando termine, colocar la ropa mojada en la secadora –Cuando termine, colocar la ropa en una mesa y doblarla –Ubicar la ropa en el closet
Analogía con lavar la ropa
Camino de datos encauzado
Implicaciones del pipeline Idealmente: –Tiempo entre instrucciones con pipeline = Tiempo entre instrucciones sin pipeline / # etapas ¿Mejoramos tiempo de ejecución o productividad? Productividad, el tiempo de ejecución probablemente empeore La duración del ciclo de reloj será igual a lo que tarde la etapa más lenta
Peligros Estructurales: El hardware no soporta cierta combinación de instrucciones De datos: Una instrucción debe esperar por el resultado de otra add $s0,$t0,$t1 sub $t2,$s0,$t3 Se utiliza hardware extra para pasar el dato (Adelantar: forwarding o bypassing)
Peligros De datos (cont.: Pero a veces hace falta introducir una instrucción de detención (stall): Pipeline stall o burbuja
Peligros De datos (cont.: También el compilador puede ayudar reordenando el código:
Peligros De Control (o Salto): El flujo no es el esperado. 1a solución: Detenernos cuando hagamos fetch de un salto.
Peligros De Control (o Salto): 2da solución: Intentar predecir, por ejemplo; nunca se toman los saltos. 3ra solución: “Branch prediction”, tomar el salto algunas veces y otras veces no tomarlo. Por ejemplo, llevando una historia. ¿Qué ocurre si falla la predicción?