La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Hazards.

Presentaciones similares


Presentación del tema: "Hazards."— Transcripción de la presentación:

1 Hazards

2 Solución Ideal: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 IF ID EX MEM WB IF

3 Diagrama en Detalle + + IF/ ID ID/ EX EX/ Mem Mem/ WB 1 eq? valA
U X + 1 + target PC+1 PC+1 R0 eq? regA R1 ALU result A L U Register file regB R2 valA PC Inst mem Data memory M U X instruction R3 ALU result mdata R4 R5 valB R6 M U X data R7 offset dest valB Bits 11-15 dest dest dest Bits 16-20 M U X IF/ ID ID/ EX EX/ Mem Mem/ WB

4 Ejemplo de Pipeline

5 Hazards I Los Hazards son causados por conflictos entre instrucciones. Pueden derivar en un comportamiento anómalo si no son solucionados. Los hay de tres tipos: Structural: dos instrucciones usan el mismo h/w en el mismo ciclo – conflictos de memoria(e.g. un solo puerto de memoria). Data: dos instrucciones usan el mismo almacenamiento(register/memory) – depende de las instrucciones. Control: una instrucción afecta a la siguiente– el PC modifica la posición de la instrucción.

6 Hazards II Forzar el uso de stalls o burbujas en el pipe
Demorar/para instrucciones previas Flush pipeline Sacar instrucciones del pipeline Refetch posterior de nuevas instrucciones – resuelve hazards de control

7 Hazards III (Estructurales)
Stall + simple, bajo costo en h/w Decrementa IPC Replicar el recurso + bueno para la performance Incremento h/w Usado con recursos baratos Pipeline en los recursos Complejidad, e.g. RAM Util para loops

8 Hazards IV (Datos) Dos instrucciones distintas usan el mismo lugar para almacenar sus datos. Reordenar! add R1, R2, R3 sub R2, R4, R1 or R1, R6, R3 add R1, R2, R3 sub R2, R4, R1 or R1, R6, R3 add R1, R2, R3 sub R2, R4, R1 or R1, R6, R3 read-after-write (RAW) write-after-read (WAR) write-after-write (WAW) True dependence (real) anti dependence (artificial) output dependence (artificial)

9 Hazards V (Control) Problemas en el BRANCH: Soluciones:
Los branches se resuelven en la etapa de Ejecución (EX)  Penalidad de 2 ciclos en un branch tomado Teóricamente: CPI = *2 (asumiento 2 ciclos de penalty y que en un programa hay un 32% de branches) = 1.64 Soluciones: Reducir la penalidad: cambiar el datapath – nuevo sumador necesario en la etapa de ID. branch delay slot(s) => utilizarlo con una instrucción. Fixed branch prediction. Static branch prediction. Dynamic branch prediction.


Descargar ppt "Hazards."

Presentaciones similares


Anuncios Google