ESTRUCTURA DE DATOS BÁSICA DEL MARCADOR 12 (Gp:) Reg (Gp:) …. (Gp:) r1 (Gp:) r2 (Gp:) r4 (Gp:) r3 (Gp:) rm
(Gp:) Busy (Gp:) Op (Gp:) Ufunc 1 (Gp:) Fi (Gp:) Fj (Gp:) Fk (Gp:) Qj (Gp:) Rj (Gp:) Qk (Gp:) Rk (Gp:) Ufunc 2 (Gp:) Ufunc n (Gp:) Ufunc 3 (Gp:) . . (Gp:) . .
(Gp:) Instr 1 Instr 2 Instr 3
Instr n (Gp:) Ro (Gp:) Wb (Gp:) Ex (Gp:) . .
Etapa IS While inst no emitida and inst previa emitida do if R[dest] = 0 and (UF[f] capaz ejecutar Op and UF[f,Busy]=0) // f = tipo de unidad funcional then R[dest] := f; UF[f,Busy] := 1; Inst[j,RO] := Inst[j,Ex] := Inst[j,Wb] := 0; UF[f,Op] := Op; UF[f,Fi] := dest; UF[f,Fj] := src1; if R[src1]=0 then UF[f,Rj]:=1; // válido else UF[f,Rj]:=0; UF[f,Qj]:=R[src1]; UF[f,Fk] := src2; if R[src2]=0 then UF[f,Rk]:=1; // válido else UF[f,Rk]:=0; UF[f,Qk]:=R[src2]; enddo 13 ACTUALIZACIÓN DE LOS DATOS EN EL MARCADOR: EJEMPLO
14 (Gp:) Read operands (Gp:) Execution complete (Gp:) Instruction status (Gp:) Write result (Gp:) Issue (Gp:) Bookkeeping (Gp:) Rj ? No; Rk ? No (Gp:) ?f(if Qj(f)=FU then Rj(f) ? Yes); ?f(if Qk(f)=FU then Rj(f) ? Yes); Result(Fi(FU)) ? 0; Busy(FU) ? No (Gp:) Busy(FU) ? yes; Op(FU) ? op; Fi(FU) ? `D’; Fj(FU) ? `S1’; Fk(FU) ? `S2’; Qj ? Result(‘S1’); Qk ? Result(`S2’); Rj ? not Qj; Rk ? not Qk; Result(‘D’) ? FU; (Gp:) Rj and Rk (Gp:) Functional unit done (Gp:) Wait until (Gp:) ?f((Fj( f )?Fi(FU) or Rj( f )=No) & (Fk( f ) ?Fi(FU) or Rk( f )=No)) (Gp:) Not busy (FU) and not result(D)
CONTROL DEL CAUCE CON SCOREBOARD
CAUCE DLX CON SCOREBOARD 15 IS (Gp:) Scoreboard
(Gp:) IF (Gp:) FP Mult (Gp:) FP Add (Gp:) Integer ALU (Gp:) FP Div (Gp:) MEM (Gp:) Wb (Gp:) RO (Gp:) Exint (Gp:) ExFU1 (Gp:) ExFU2 (Gp:) ExFU3
IS
Limitaciones del scoreboard: No hay hardware para forwarding. Limitado a instrucciones en bloques básicos (ventanas pequeñas). Pequeño número de unidades funcionales (riesgos estructurales), especialmente unidades enteras/load store. No se emite en caso de riesgo estructural. Se espera por los riesgos WAR. Previene los riesgos WAW. No permite que dos instrucciones terminen el mismo ciclo. No permite manejar unidades funcionales segmentadas. Mejoras Una mejora fácil de introducir es permitir que el algoritmo pueda manejar unidades funcionales segmentadas. 16 SCOREBOARD: LIMITACIONES
Para eliminar la limitaciones del scoreboard básico en el manejo de las unidades segmentadas recordemos que: En scoreboard básico, la UF se libera cuando el resultado generado en la UF entra en la etapa WB (en el primer semiciclo de reloj). Esto implica que en una instrucción larga la UF está asignada durante muchos ciclos. Solución Liberar la UF cuando el resultado de la primera etapa segmentada de la unidad funcional entra en el segundo segmento o si no está segmentada la UF cuando pase al WB. En la arquitectura DLX propuesta el cauce aritmético entero está segmentado en dos etapas la EX y la MEM, mientras que las demás UF requieren varios ciclos pero no están segmentadas. Veamos el efecto en el ejemplo anterior (sobre el cronograma). 17 SCOREBOARD CON UF SEGMENTADAS
18 La ganacia se limita a un ciclo ya que la única UF segmentada es la entera y sólo hay dos instrucciónes load. DLX CON MARCADOR PARA UF SEGMENTADAS: EJEMPLO CRONOGRAMA
Paralelismo a nivel de instrucción (ILP) en SW o HW. Paralelismo a nivel de bucle es más fácil de ver. Dependencias del paralelismo SW definidas por programa, riesgos si no pueden ser resueltas por el HD. Las dependencias software y la sofisticación del compilador determinan si el compilador puede desenrollar los bucles. Las dependencias de memoria son más difíciles de determinar. HW explotando el ILP. Funciona cuando no es posible determinar las dependencias en run time. El código para una máquina funciona bien en otra. Idea clave del Scoreboard: permite proseguir a instrucciones posteriores a una detenida (Decode => Issue instr & read operands). Permite la ejecución out-of-order => finalización out-of-order. Etapa ID verifica los riesgos estructurales. 19 SUMARIO
Página anterior | Volver al principio del trabajo | Página siguiente |