3. SEGMENTACIÓN DEL CAUCE
1
SEGMENTACIÓN DEL CAUCE
2
1.1. Conceptos básicosConceptos básicos
2.2. Etapas del MIPS64Etapas del MIPS64
3.3. RiesgosRiesgos
4.4. Operaciones muticicloOperaciones muticiclo
1. Conceptos básicos
3
SEGMENTACIÓN DEL CAUCE
Conceptos básicos
Segmentación
Ciclo de Instrucción
Extracción de la instrucción
Decodificación / Lectura Registros
Ejecución
Acceso a Memoria
Escritura de Registros
• Acceso a Memoria (PC)
• Actualización PC (+4)
• Lectura de operandos (registros)
• Comprobación de saltos
• Cálculo dirección efectiva
• Operación aritmética
• Extensión de signo
• Lectura o escritura
• Escritura del resultado (registro)
4
Conceptos básicos
Segmentación
Ciclo de InstrucciónAlternativas de implementación: UN ÚNICO CICLO
– Todas las instrucciones utilizan para su ejecución un único ciclo de reloj
– CPI (Clocks Per Instruction) = 1– La duración del ciclo de reloj viene determinada por la instrucción
más compleja de ejecutar– Aunque es un alternativa correcta es ineficiente
Instrucción 1 Instrucción 2 Instrucción 3
Ciclo Ciclo Ciclo
5
Conceptos básicos
Segmentación
– No todas las instrucciones pasan por todas las fases– El ciclo de reloj se ajusta a la duración de la fase más larga– CPI (Clocks Per Instruction) depende de las instrucciones y de su
frecuencia de aparición en los programas– Cada tipo de instrucción tiene asociada una duración (nº ciclos)– Por ejemplo (suponiendo que cada fase dura 1 ciclo):
• La instrucción branch requiere 2 ciclos (F y D)• load 5 ciclos (F, D, E, M, y W)• Store 4 ciclos (F, D, E,y M)
Ciclo de InstrucciónAlternativas de implementación: VARIOS CICLOS
Instrucción 1 Instrucción 2 Instrucción 3
Ciclo
6
Conceptos básicos
7Segmentación
Ciclo de InstrucciónDeterminar el CPI de una arquitectura
Instrucción Nº Ciclos Frecuencia
load 5 20%
store 4 10%
branch 2 25%
aritméticas 4 45%
CPI = 5*0,2 + 4*0,1 + 2*0,25 + 4*0,45 = 3,7
Conceptos básicos
• Reduciendo el ciclo de reloj • Reduciendo el CPI
– En arquitecturas con más de un ciclo de reloj por instrucción– El CPI ya es igual a 1 en arquitecturas de un único ciclo
• O … reduciendo ambos
8Segmentación
¿Cómo podemos aumentar las prestaciones de los procesadores?
¿Alternativas?
• Circuitos más rápidos, pero ¿precio? ¿limites físicos? …• Explotar la concurrencia a nivel del procesador: Arquitecturas Paralelas• Explotar el paralelismo a nivel de las instrucciones: SEGMENTACIÓN
Conceptos básicos
• Técnica que permite solapar en el tiempo la ejecución de varias instrucciones
• La idea está tomada del concepto “cadena de montaje”
• La ejecución de la instrucción se divide en etapas de igual duración (ciclo de reloj)
• La duración del ciclo de reloj lo fija la etapa más “lenta”
• Cada etapa dispone de recursos (hardware) para realizar su cometido
• No visible al programador
• Todas las instrucciones pasan por todas las etapas
9Segmentación
SEGMENTACIÓN
Tiempo
ciclo
F E
F E
F E
F E
Instrucción 1
Instrucción 2
Instrucción 3
Instrucción 4
Conceptos básicos
10Segmentación
SEGMENTACIÓN Mejoras obtenidas
Productividad: nº de instrucciones finalizadas por unidad de tiempo
T instrucción: Duración de la ejecución de la instrucción
Ciclo Reloj: Lo fijan la duración de las etapas, generalmente toma el valor 1
Conceptos básicos
11Segmentación
Rendimiento SpeedUp = Tiempo Medio SIN segmentación
Tiempo Medio CON segmentación= Nº Etapas
En condiciones ideales CPI = 1 En cada ciclo de reloj finaliza una instrucción (cadena de montaje) En ejecución tantas instrucciones como nº de etapas
Rendimiento: Ejemplo
Procesador NO SEGMENTADO• Ciclo Reloj = 1 ns.• Inst. aritm. 4 ciclos• Inst salto y mem. 5 ciclos
Programa formado por:• 40% inst. aritm.• 20 % inst. Salto• 40 % inst. mem.
Tiempo Medio Ejecución NO SEGMENTADO = (0,4+0,2)*5 + 0,4*4)= 4,6 nsTiempo Medio Ejecución SEGMENTADO = 1 ns + 0,2 ns (retardo por etapa) = 1,2 ns
SpeedUp = 4,6 / 1.2 = 3,83 veces
Procesador SEGMENTADO• 5 etapas• Añadir 0,2 ns. por etapa
2. Etapas del MIPS64
12
SEGMENTACIÓN DEL CAUCE
Etapas del MIPS64
Cauce de 5 etapas (F, D, E, M y W) Únicamente para datos enteros 1 ciclo de reloj por etapa Saltos no optimizados
13Segmentación
Extracción / Fetch (F)
IR ← MEM [PC]NPC ← PC + 4 # El tamaño de la instrucción es 4 octetos
Decodificación (D)
A ← Registros [rs]B ← Registros [rt] # Revisar el formato de las instr.Inm ← extensión_signo (campo Inm 16 bits)
Etapas del MIPS64
14Segmentación
Ejecución (E)
• Referencia a memoria (tipo I)ALUoutput ← A + Inm
• Instrucción aritmética tipo RALUoutput ← A op B
• Instrucción aritmética tipo IALUoutput ← A op Inm
• Salto (tipo J)ALUoutput ← NPC + Inm * 4Cond ← ( A = 0) # boolean
Memoria (M)
• Acceso a memoriaLMD ← MEM [ALUoutput] # load MEM [ALUoutput] ← B # store• SaltoIf (Cond) then PC ← ALUoutput
Write-Back(W)
• Instrucción aritmética tipo RRegistros[rd] ← ALUoutput
• Instrucción aritmética tipo IRegistros[rt] ← ALUoutput
• Acceso a memoria (load)Registros[rt] ← LMD
Etapas del MIPS64
15Segmentación
Mem
oria
de
Inst
rucc
ione
s
Reg
istr
os
Mem
oria
de
Dat
os
PC
Inm
LMDA
LUou
tputA
B
NP
C
IR
Zer
o?
Con
d
MU
X
MU
X
MU
X
MU
X
EX
T S
ign
o
ALU
Add
4
Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W)
16
32
Etapas del MIPS64
• En condiciones ideales CPI = 1• La duración de las instrucciones es 5 ciclos• Dispone de 2 memorias (instrucciones y datos)• Cada etapa tiene dos subciclos
– Lectura registros en el 2º de la etapa D– Escritura de registros en el 1º de la etapa W
• En las instrucciones de salto la actualización de PC se hace en M– Necesita mejorarse este esquema
• Cada etapa tiene una serie de registros para comunicarse información (F/D, D/E, E/M y M/W)
• Faltan las señales del control del cauce
16Segmentación
Características de la implementación
3. Riesgos
17
SEGMENTACIÓN DEL CAUCE
Riesgos
18Segmentación
¿Por qué el CPI es mayor que 1?
Riesgos Estructurales
• Falta de recursos en el procesador:– accesos a una única memoria o ALU
• Unidades funcionales no segmentadas– Las instrucciones se detienen más de 1 ciclo en ellas
19Segmentación
Casos Típicos
F E
F E
F E
F E
Instrucción 1
Instrucción 2
Instrucción 3
Instrucción 4
Acceso simultáneoa memoria
Acceso simultáneo a la ALU
Riesgos Estructurales
20Segmentación
Instrucción 1
Instrucción 2
Instrucción 3
Instrucción 4
• Falta de recursos en el procesador:– acceso al banco de registros de una sola puerta
Casos Típicos
F E
F E
F E
F E
Escritura 1º subcicloLectura 2º subciclo
Riesgos Estructurales
21Segmentación
• Falta de recursos en el procesador:– Acceso a memoria: ejecución instrucciones multiciclo
Casos Típicos
mul.d F3,F2,F1add.d F3,F4,F5 F E+
F
Dos unidades funcionales• Multiplicación: 3 ciclos• Suma: 2 ciclos
E* E* E*
E+
La instrucción de mayor latencia pasa primero a la
etapa de memoria (M)
F E+ E+ E+add.d F3,F4,F5
Riesgos de Datos
22Segmentación
Read After Write (RAW)
daddi R1,R0,10daddi R2,R1,20daddi R3,R1,30
F E
F E
F E
Escritura de R1
Lectura de R1 Se lee un valor de R1 incorrecto
Read After Read (RAR)
daddi R1,R0,10daddi R2,R0,20daddi R3,R0,30
F E
F E
F E
No es un riesgo
Riesgos de Datos
23Segmentación
Write After Read (WAR)
daddi R2,R1,10dsub R1,R3,R5and R3,R4,R6
dsub R1,R3,R5 daddi R2,R1,10and R3,R4,R6
Ejecución
Se da con ejecución fuera de orden (planificación
dinámica)
Orden CORRECTO: Lec. R1, Esc. R2, Lec. R3, Lec. R5, Esc. R1
Orden INCORRECTO: Lec. R3, Lec. R5, Esc. R1, Lec. R1, Esc. R2
Riesgos de Datos
24Segmentación
Write After Write(WAW)
mul.d F3,F2,F1add.d F3,F4,F5 F E+
F E*
Dos unidades funcionales• Multiplicación: 4 ciclos• Suma: 2 ciclos
E* E* E*
E+
Se da con ejecución fuera de orden (planificación dinámica) y
en instrucciones multiciclo
Incorrecto
Riesgos de datos
25Segmentación
MIPS64
MIPS64
Riesgos de datos
26Segmentación
• La implementa el compilador, sin intervención del procesador• Retrasar la etapa D (lectura) de la instrucción con el riesgo
Reordenación
and R6,R8,R9daddi R1,R0,10daddi R2,R1,20dsub R3,R4,R5
F E
F E
F E
F E
Op
ció
n 1
No siempre es posible una reordenación de
código
daddi R1,R0,10and R6,R8,R9dsub R3,R4,R5 daddi R2,R1,20
Reorden
ación
Nuevo R1
Riesgos de datos
27Segmentación
Inserción de NOPs
daddi R1,R0,10nopnopdaddi R2,R1,20
F E
F E
F E
F E
Nuevo R1
Con instrucciones multiciclo es necesario insertar más NOP
Problemas:•Tamaño código•Ineficiente
Op
ció
n 2
Riesgos de datos
28Segmentación
• La implementa el procesador (más complicado)• Para la instrucción (riesgo) en la etapa D (lectura) del cauce
Detección y parada de cauce
daddi R1,R0,10daddi R2,R1,20dsub R5,R5,R6
F E
F E
F EF F
El tiempo de ejecución es idéntico al de la solución con inserción de NOPs
MIPS64
Riesgos de datos
29Segmentación
Detección y anticipación
daddi R1,R0,10
daddi R2,R1,20
dsub R5,R2,R6
F E
• Técnica para pasar información entre diferentes etapas
F E
F E
nuevo R1
nuevo R2
Lectura incorrecta de registros
Elimina las paradas. ¿Pero que ocurre con load?
MIPS64
Riesgos de datos
30Segmentación
Detección y anticipación
• Anticipación con instrucciones load (lectura de memoria)
ld R1,0(R0)
daddi R2,R1,20
dsub R5,R2,R6
F E
nuevo R1
F E
F
nuevo R2
Con instrucciones load no se eliminan por completo las paradas
MIPS64
EF
Riesgos de datos
31Segmentación
Tipos de adelantamiento
E
E1 2E E3
4 5
daddi R1,R0,10daddi R2,R1,20
daddi R1,R0,10sd R1,0(R15)
daddi R1,R2,10beq R1,R0,ETIQ
ld R1,0(R10)sd R1,10(R8)
ld R1,10(R8)beq R1,R0,ETIQ
MIPS64
6
ld R1,10(R8)daddi R2,R1,5
Riesgos de control
• Ante un salto hay que parar hasta conocer la dirección destino• Provocan paradas del cauce (3 ciclos)• Degradan el rendimiento entre un 10% y 30% dependiendo de la
frecuencia de los saltos• Se puede reducir la penalización a 1 ciclo
32Segmentación
beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)
ETIQ: dsub R5,R5,R6
F E
El problema
F E
F E
o
Salto NO TOMADO
Salto TOMADO
Riesgos de control
33Segmentación
Mem
oria
de
Inst
rucc
ione
s
Reg
istr
os
Mem
oria
de
Dat
os
PC
Inm
LMDA
LUou
tputA
B
IR
Zer
o?
MU
X
MU
X
MU
X
MU
X
EX
T S
ign
o
ALU
Add
4
Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W)
16
32
Add
Una Mejora: Hacer efectivos los saltos en D
Riesgos de control
34Segmentación
beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)
ETIQ: dsub R5,R5,R6
F E
F E
F E
o
Salto TOMADO
Salto NO TOMADO
Una Mejora: Hacer efectivos los saltos en D
• Se reduce la penalización a 1 ciclo (parada)
¿Es posible reducir todavía más la penalización?
Riesgos de control
• Cada vez que aparezca un salto evitar la parada• Utilizar un mecanismo de predicción de salto:
– estático: Tomar el salto o no– estático + compilador: predicción en el código de operación (1 bit)– dinámico: el procesador tiene en cuenta la “historia” del salto
35Segmentación
Una Mejora más: Predecir el sentido del salto
Predicción estática NO TOMAR EL SALTO
MIPS64
beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)
ETIQ: dsub R5,R5,R6
F E
F E
F E
R1 ≠ R0 → ACIERTO
Continua con la instrucción siguiente
Riesgos de control
• En MIPS 64 no tiene sentido predecir “Tomar el salto”
36Segmentación
Predicción estática NO TOMAR EL SALTO
beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)
ETIQ: dsub R5,R5,R6and R10,R11,R12
F E
F
F E
R1 = R0 → FALLOAbortar la instrucción. Penalización de 1 ciclo
F E
beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)
ETIQ: dsub R5,R5,R6and R10,R11,R12
F E
R1 = R0 → ACIERTO
F E
F E
La dirección del salto se conoce al final de D
Riesgos de control
• Implementado por:– el procesador retardando el efecto del salto– y el compilador insertando instrucciones que se ejecutan siempre
37Segmentación
SALTO RETARDADO
beq R1,R0,ETIQdaddi r0,r0,0daddi R2,R2,20
ETIQ: dsub R5,R5,R6
F E
F E
F E
R1 ≠ R0 → ACIERTO
beq R1,R0,ETIQdaddi r0,r0,0daddi R2,R2,20
ETIQ: dsub R5,R5,R6
F E
F E
F E
R1 = R0 → FALLO
MIPS64
Riesgos de control
• En MIPS64 el salto retardado es de 1 hueco• Si el cálculo de la dirección efectiva se realizase en la etapa M, los huecos
serían 3.• Cuándo no se encuentran instrucciones para los huecos se insertan NOP´s
38Segmentación
SALTO RETARDADO
dadd R1,R2,R3IF R2 = 0 HuecoENDIF
IF R2 = 0 dadd R1,R2,R3ENDIF
dsub R4,R5,R6dadd R1,R2,R3IF R1 = 0 HuecoENDIF
dadd R1,R2,R3IF R1 = 0 dsub R4,R5,R6 ENDIF
dadd R1,R2,R3 IF R1 = 0 Hueco or R7,R8,R9ENDIFsub R4,R5,R6
dadd R1,R2,R3 IF R1 = 0 sub R4,R5,R6 or R7,R8,R9ENDIF
Ejemplos de reordenación de código
MIPS64
Reordenación (compilador)
4. Operaciones multiciclo
39
SEGMENTACIÓN DEL CAUCE
Operaciones multiciclo
• Nuestro cauce no soporta operaciones en coma flotante– Sumas, multiplicaciones y divisiones es imposible que terminen en 1 o 2
ciclos– Las instrucciones en coma flotante pueden ir desde una negación (un
par de ciclos) hasta una raíz cuadrada (más de un centenar)
• Soluciones
1. Adaptar el ciclo de reloj a la instrucción más lenta
2. Repetir la etapa EX tantas veces como sea necesario
3. Añadir nuevas unidades funcionales (segmentadas o no)
• Las dos primeras soluciones no son prácticas (rendimiento)
40Segmentación
Instrucciones en coma flotante
Operaciones multiciclo
41Segmentación
Nuevo cauce con soporte en coma flotante
F D
E
DIV
Unidad de división FP/IntegerNO SEGMENTADA
Unidad de multiplicación FP/Integer
Unidad de suma FP
Unidad de enteros
Operaciones multiciclo
42Segmentación
E
DIV
Operaciones enteras con ALU, Load, Store y Saltos
Sumas, Restas y Conversiones en FP
Multiplicación de Enteros y FP
División de Enteros y FP
Operaciones multiciclo
43Segmentación
Riesgos Estructurales
Acceso a la U.F. de división:
div.d F1,F2,F3div.d F4,F5,F6
F D /0 M W/1 /2 /22 /23. . . .
div.d F1,F2,F3div.d F4,F5,F6
F D /0 M W/1 /2 /22
F D /0 /1 /2
/23
D D D D
. . .
.
. . .
.
. . .
.
F D /0 M W/1 /2 /22 /23. . . .
Solución: Parar en ID.
Operaciones multiciclo
44Segmentación
Riesgos Estructurales
Acceso a memoria o al banco de registros:
add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)
F D +0 M W+1 +2
F D E M W
+3
F D E M W
F D E M W
Operaciones multiciclo
45Segmentación
Riesgos Estructurales
Soluciones:
Detectar el problema al intentar entrar en MEM o WB y detener a la instrucción de menor latencia.
Detectar y detener en ID.
La solución adoptada por MIPS64 es la última
add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)
F D +0 M W+1 +2
F D E M W
+3
F D E M W
F D E E WM
add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)
F D +0 M W+1 +2
F D E M W
+3
F D E M W
F D E WMD
Operaciones multiciclo
46Segmentación
¡Se dan con mayor frecuencia!Riesgos RAW
add.d F1,F2,F3nopnops.d F1,10(R4)
F D +0 M W
F D E M W
F D E M W
F D E M W
dadd R1,R2,R3nopnopsd R1,10(R4)
F D E M W
F D E M W
F D E M W
F D E M W
+1 +2 +3
Sin problemas
Sin multiciclo...
Con multiciclo...
Hay problemas
La solución adoptada por MIPS64 es parar en ID
Operaciones multiciclo
47Segmentación
Riesgos WAW
mul.d F1,F2,F3add.d F1,F4,F5
F D *0 M W*1 *2 *3
F D +0 M W+1 +2 +3
*4 *5 *6
Si hay una lectura del registro entre ambas instrucciones, desaparece el riesgo.
mul.d F1,F2,F3sub.d F6,F7,F1add.d F1,F4,F5
F D *0 M W*1 *2 *3
F D -0 M W-1 -2 -3
*4 *5 *6
F D +0 M W+1 +2 +3
D D D D D D
F F F F F F
Operaciones multiciclo
48Segmentación
Riesgos WAW
Soluciones:
La primera instrucción no escribe el resultado.
mul.d F1,F2,F3add.d F1,F4,F5
F D *0 M W*1 *2 *3
F D +0 M W+1 +2 +3
*4 *5 *6
Detención en ID hasta que la anterior entre en MEM.
mul.d F1,F2,F3add.d F1,F4,F5
F D *0 M W*1 *2 *3
F D +0 M W+1 +2 +3
*4 *5 *6
D D D D D D
La solución adoptada por MIPS64 es la última
Operaciones multiciclo
49Segmentación
Riesgos WAR
Los registros se leen en ID
mul.d F1,F2,F3add.d F3,F4,F5
F D *0 M W*1 *2 *3
F D +0 M W+1 +2 +3
*4 *5 *6
¡ No se producen !
Operaciones multiciclo
50Segmentación
Riesgos de Control
Se presentan los mismos casos, pero hay que tener en cuenta que, si se usa salto retardado, no tiene sentido rellenar el hueco con una instrucción multiciclo.
Interrupciones
¡ Se complica su tratamiento !