departamento de automática - grupo de computación de...
TRANSCRIPT
Prof. Dr. José Antonio de Frutos RedondoDr. Raúl Durán DíazCurso 2010-2011
Departamento de AutomáticaArquitectura e Ingeniería de Computadores
Tema 2Estructuras segmentadas
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 2V1.4
Tema 2. Estructuras segmentadas
Noción de segmentaciónRendimiento.Tipos de cauces.Cauces no lineales y tablas de reserva.Cálculo de latencias en cauces.
Segmentación de instruccionesArquitectura DLX.Encauzamiento de instrucciones en el DLX.Parones.Múltiples unidades funcionales.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 3V1.4
Noción de segmentación
¿Qué es la segmentación o pipelining?
Técnica para la generación de paralelismo en monoprocesadores.
Consiste en dividir una función en subfunciones independientes que pueden realizarse simultáneamente (trabajo en cadena).
En un instante determinado, se está trabajando sobre un número de elementos igual al número de etapas => paralelismo.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 4V1.4
Noción de segmentación
Instrucciones
Resultados
Estructura convencional
UNIDAD DE PROCESAMIENTO DE INSTRUCCIÓN
Instrucciones
Resultados
Proceso encauzado (pipe-line)
f1 f2 f3 f4 f5 f1 f2 f3 f4 f5
Subfunción 1 Subfunción 2 Subfunción 3 Subfunción n
f1 f2 f3 fn
CAUCE PARA EL PROCESO DE INSTRUCCIONES
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 5V1.4
Etapas del cauce
Evolución de los elementos a través de las etapas del cauce:
f1f2f3f4f5
Subfunción
TiempoT1 T2 T3 T4 T5 T6
Tiempos del proceso segmentado
Inst. 1Inst. 1
Inst. 1
Inst. 1Inst. 1
Inst. 2Inst. 2
Inst. 2Inst. 2
Inst. 2
Inst. 3
Inst. 3Inst. 3
Inst. 3
Inst. 4Inst. 4
Inst. 5Inst. 4Inst. 5Inst. 6
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 6V1.4
Mejora del rendimiento
Mejora en el rendimiento:Suponemos que se cumple aproximadamente:
T0 => tiempo en ejecutar el proceso completo sin segmentarT => tiempo en ejecutar una etapak => número de etapas de que consta el cauce
Sin embargo, el tiempo en ejecutar n procesos sin segmentar:
kT
T 0=
0TnnsT ×=
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 7V1.4
Rendimiento del cauce
El tiempo en ejecutar el proceso segmentado sobre un elemento en k etapas será:
Y desde que sale el primer resultado del cauce, va saliendo uno nuevo cada T, por lo que el tiempo de procesar nelementos será:
Con todo esto, la ganancia es:
TksT ×=1
TnTksT ×−+×= )1(
)1()1( −+×=
×−+×××== nk
knTnkT
TknTsTns
kG
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 8V1.4
Rendimiento límite
Observemos que la ganancia límite, cuando n tiende a infinito, es k:
knkG ⎯⎯⎯⎯⎯ →⎯ ∞→
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 9V1.4
Requisitos para la segmentación
Características del proceso necesarias para poder aplicar segmentación:
Se debe poder descomponer en etapas.
Es necesario que las entradas de una etapa estén determinadas únicamente por las salidas de la anterior.
Cada etapa debe poder ser realizada por un circuito específico de forma más rápida que el conjunto del proceso.
Los tiempos de ejecución de cada etapa deben parecidos.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 10V1.4
Tipos de cauces
Tipos de cauces:unifunción: ejecutan un único proceso.
multifunción: pueden ejecutar varios procesos:estáticos: en un instante determinado sólo pueden ejecutar uno.dinámicos: pueden ejecutar simultáneamente varios procesos.
lineal: a cada etapa sólo le puede seguir otra etapa concreta.
no lineal: se pueden establecer recorridos complejos de las etapas.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 11V1.4
Aplicaciones
Aplicación de la segmentación:
A operadores aritméticos:ejecutan una o varias operaciones de la ALU.pueden ser lineales (sumas) o no lineales (división). En este caso suelen ser cíclicos (bucles).los procesadores actuales incluyen varias ALUs segmentadas, y cada una se puede ocupar de varias operaciones.
A ejecución de instrucciones:suelen ser cauces lineales.alguna de sus fases puede a su vez sub-segmentarse (uso de una ALU segmentada para la fase de ejecución).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 12V1.4
Tablas de reserva
Cauces no lineales y tablas de reserva
AAAf3
Af2
AAf1
T6T5T4T3T2T1
BBf3
Bf2
BBf1
T5T4T3T2T1
MUX
MUX
f1
f2
f3
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 13V1.4
Latencia
Latencia:número de ciclos que separan la iniciación de dos operaciones (la distancia en ciclos entre las entradas de dos elementos al cauce)
Latencia prohibida: latencia con la que se producen colisiones (en el ejemplo, 1 es una latencia prohibida)
Latencia permitida: latencia con la que no se produce colisión (en el ejemplo, 2 es una latencia permitida)
ABAABf3
BAf2
ABBAf1
T6T5T4T3T2T1
A
B
T6
BABAf3
Af2
BABAf1
T7T5T4T3T2T1
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 14V1.4
Ciclos de latencia
Ciclo de latencia:secuencia de latencias permitidas que se puede repetir indefinidamente.
Ejemplo. Para la función B, se tiene que (1,4) es un ciclo de latencia:
B2
B3
T6
B3
B4
T7
B4
B3
T8
B3
B4
T9
B3B1B2B1f3
B4B2B1f2
B2B1B2B1f1
T10T5T4T3T2T1
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 15V1.4
Segmentación de instrucciones
Segmentación de instrucciones
Arquitectura DLX.Encauzamiento de instrucciones en el DLX.Parones:
por dependencia estructural,por dependencia de datos,por dependencia de control.
Múltiples unidades funcionales.
Ejemplo: el MIPS R4000.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 16V1.4
Formato de instrucciones DLX
Carga/almacenamiento y operaciones con valores inmediatos, saltos condicionales:
Operaciones aritméticas:
Saltos incondicionales:
6 5 5 16
Opcode Rs Rt InmediatoLW R1,30(R2)SW 50(R4),R3ADDI R1,R2,#3BNEZ R4,LOOP
6 5 5 115
Opcode Rs Rt FunciónRd ADD R1,R2,R3
6 26
Opcode Desplazamiento J nombre
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 17V1.4
Máquina básica
Máquina básica no encauzada
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 18V1.4
Ciclos de cada instrucción
Ejecución de instrucciones en 5 ciclos
Rt ← LMDRd ← ALUoutputo bien (según tipo de instr.)Rt ← ALUoutput
WB
if (cond)PC ← ALUoutput
elsePC ← NPC
LMD ← Mem[ALUoutput]o bien, si es almacenamiento,Mem[ALUoutput] ← By en todo casoPC ← NPC
PC ← NPCMEM
ALUoutput ← NPC + Immcond ←(A op 0)
ALUoutput ← A + ImmALUoutput ← A op B
o bien
ALUoutput ← A op Imm
EX
A ← Rs; B ← RtImm ←
((IR16)16 ## IR16..31)
A ← Rs; B ← RtImm ←
((IR16)16 ## IR16..31)
A ← Rs; B ← RtImm ←
((IR16)16 ## IR16..31)
ID
IR ← Mem(PC)NPC ← PC+4
IR ← Mem(PC)NPC ← PC+4
IR ← Mem(PC)NPC ← PC+4
IF
SaltoCarga-almacenamientoALUEtapa
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 19V1.4
DLX encauzado
Etapas del cauce
Búsqueda (IF)se accede a memoria por la instrucción,se incrementa el CP.
Decodificación / Búsqueda de operandos (ID)se decodifica la instrucción,se accede al banco de registros por los operandos,se calcula el valor del operando inmediato con el signo extendido (por si hace falta más adelante).
WBMEMEXIDIF
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 20V1.4
DLX encauzado
Etapas del cauce
Ejecución / Dirección efectiva (EX)si es una instrucción de proceso, se ejecuta en la ALU,si es un acceso a memoria, se calcula la dirección efectiva,si es un salto, se calcula el destino, y si se toma o no.
Acceso a memoria / terminación del salto (MEM)si es un acceso a memoria, se accede,si es un salto, se almacena el nuevo CP.
Almacenamiento (WB)se almacena el resultado (si lo hay) en el banco de registros.
WBMEMEXIDIF
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 21V1.4
Máquina segmentada
Máquina segmentada
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 22V1.4
Ejecución de instrucciones segmentadas
Ejecución de instrucciones segmentadas
ID/EX.A ← Regs[IF/ID.IR6..10]ID/EX.B ← Regs[IF/ID.IR11..15] ID/EX.NPC ← IF/ID.NPCID/EX.IR ← IF/ID.IRID/EX.Imm ← (IF/ID.IR16)16 ## IF/ID.IR16..31
ID
IF/ID.IR ← Mem(PC)IF/ID.NPC,PC ← if (EX/MEM.cond)
EX/MEM.ALUoutputelsePC + 4
IF
Para todo tipo de instruccionesEtapa
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 23V1.4
Ejecución de instrucciones segmentadas
Ejecución de instrucciones segmentadas
sólo para cargas:Regs[MEM/WB.IR11..15 ] ←
MEM/WB.LMD;
Regs[MEM/WB.IR16..20 ] ←MEM/WB.ALUOutput;
o bienRegs[MEM/WB.IR11..15 ] ←
MEM/WB.ALUOutput;
WB
MEM/WB.IR ← EX/MEM.IR;MEM/WB.LMD ←
Mem[EX/MEM.ALUoutput];o bienMem[EX/MEM.ALUoutput]←
EX/MEM.B;
MEM/WB.IR ← EX/MEM.IR;MEM/WB.ALUOutput ←
EX/MEM.ALUOutput;
MEM
EX/MEM.ALUoutput ←ID/EX.NPC + ID/EX.Imm;
EX/MEM.cond ←(ID/EX.A == 0);
EX/MEM.IR ← ID/EX.IR;EX/MEM.ALUoutput ←
ID/EX.A + ID/EX.Imm;EX/MEM.cond ← 0;EX/MEM.B ← ID/EX.B;
EX/MEM.IR ← ID/EX.IR;EX/MEM.ALUoutput ←
ID/EX.A op ID/EX.B;o bienEX/MEM.ALUoutput ←
ID/EX.A op ID/EX.Imm;EX/MEM.cond ← 0;
EX
SaltoCarga-almacenamientoALUEtapa
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 24V1.4
Ejemplo de ejecución de instrucciones
Ejemplo de ejecución de instrucciones
Ciclo 1 2 3 4 5 6 7 8 9
Inst i IF ID EX MM WB
Inst i + 1 IF ID EX MM WB
Inst i + 2 IF ID EX MM WB
Inst i + 3 IF ID EX MM WB
Inst i + 4 IF ID EX MM WB
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 25V1.4
Ventajas de la segmentación
Ventajas de la segmentación:Principalmente, el mejor rendimiento:
ganancia en rendimiento = Nº etapas del cauce (a reloj constante),pero ¡cuidado!, sólo es el máximo teórico.
Es completamente hardware =>mejor que software.
El modelo de programación no cambia:pero veremos que afecta al programador (sobre todo al compilador).
Problema: hay que tener en cuenta que el control también se vuelve más complejo.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 26V1.4
Parones
Parones:situaciones que impiden a la siguiente instrucción que se ejecute en el ciclo que le corresponde.
Tipos de parones:Por dependencia estructural:
provocados por conflictos por los recursos.Por dependencia de datos (parones por datos):
ocurren cuando dos instrucciones se comunican por medio de un dato (ejemplo: una lo produce y la otra lo usa).
Por dependencia de control (parones por control):ocurren cuando la ejecución de una instrucción depende de cómo se ejecute otra (ejemplo: un salto y los dos posibles caminos).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 27V1.4
Ejemplo de parón
Supongamos un parón en la instrucción i + 2
Ciclo 1 2 3 4 5 6 7 8 9 10
Inst i IF ID EX MM WB
Inst i + 1 IF ID EX MM WB
Inst i + 2 (parón) IF ID EX MM WB
Inst i + 3 IF ID EX MM WB
Inst i + 4 IF ID EX MM WB
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 28V1.4
Efecto de los parones
Efecto: el rendimiento disminuye del máximo teórico.La ganancia de rendimiento, a reloj constante, es:
Máximo teórico: número de etapas del cauce.Con parones:
CPIns / CPI s =CPIns / (CPI ideal + ParonesPorInstrucción) = CPIns / (1 + ParonesPorInstrucción) = EtapasDelCauce / (1 + ParonesPorInstrucción)
CPIns Ciclos por instrucción sin segmentación.CPIs Ciclos por instrucción con segmentación.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 29V1.4
Ejemplo de parón
Ejemplo:una instrucción de carga seguida de otras varias (la máquina tiene un único puerto de memoria).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 30V1.4
Ejemplo del efecto del parón
Efecto: el load y la instrucción 3 tienen un conflicto: compiten por el puerto de memoria. El parón en el cauce:
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 31V1.4
Parones por dependencia estructural
Las limitaciones en los recursos implican parones estructurales:
1 puerto de memoria en lugar de 2;(fetch acceso a memoria).
1 ALU en lugar de 2;(incremento PC instrucción de proceso).
banco de registros con pocos puertos;(lectura escritura).
Solución a los parones estructurales:añadir más recursos, buscando un equilibrio entre rendimiento y coste.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 32V1.4
Parones por dependencia de datos
Código con dependencia de datos
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 33V1.4
Adelanto de resultados
Solución a los parones por dependencia de datos: reenvío/adelanto de resultados (bypassing, forwarding).
La instrucción 1, que calcula el nuevo valor de R1, lo tiene listo al final del ciclo 3.
La instrucción 2, que lo lee, en realidad necesita que esté listo al principio del ciclo 4.
Se puede modificar la ALU con una realimentación, para que el nuevo valor de R1 vaya de la salida a la entrada (además, sigue siendo enviado al banco de registros en la fase WB).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 34V1.4
Ejecución con adelanto
La ejecución queda ahora:
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 35V1.4
Adelanto de resultados
Adelanto de datos
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 36V1.4
Problemas del adelanto de resultados
Observaciones al adelanto de resultados:Se deben habilitar caminos de realimentación de todas a todas las unidades: de la ALU a memoria, de la ALU a la ALU, etc.Las dependencias se dan entre instrucciones de todos los tipos.Hay que tener en cuenta que el control se complica aún más:
hay que decidir cuándo se realimenta un resultado, controlar la realimentación, etc.
Aun así, puede no ser suficiente; por ejemplo, si una instrucción de memoria genera un dato para una operación de la ALU:
lw r1,0(r2)sub r4,r1,r5
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 37V1.4
Problemas del adelanto de resultados
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 38V1.4
Dependencias de datos: clasificación
Clasificación de las dependencias de datos:Lectura después de Escritura (RAW, dependencia):
una instrucción genera un dato que lee otra posterior (la que hemos visto hasta ahora).
Escritura después de Escritura (WAW, dependencia en salida):una instrucción rescribe un dato que otra posterior ya había escrito;en una máquina segmentada simple sólo se da si se permite que las instrucciones se adelanten unas a otras.
Escritura después de Lectura (WAR, antidependencia):una instrucción modifica un valor antes de que lo lea otra instrucción anterior;tampoco se puede dar en nuestro cauce.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 39V1.4
Ejemplos de dependencias de datos
Ejemplos:
RAW: add r1,r2,r3add r4,r1,4
WAW: lw r1,0(r2)add r1,r2,r3
WAR: sw 0(r2),r1add r1,r3,r4
D(i) ∩ F(j) ≠ ∅
D(i) ∩ D(j) ≠ ∅
F(i) ∩ D(j) ≠ ∅
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 40V1.4
Reordenación de instrucciones
Aprovechamiento del cauce:reordenación de instrucciones
Se trata de calcular:
a = b + cd = e - fg = a + d
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 41V1.4
Reordenación de código
lw rb,blw rc,cadd ra,rb,rclw re,elw rf,fsub rd,re,rfadd rg,ra,rdsw g,rg
lw rb,blw rc,clw re,elw rf,fadd ra,rb,rcsub rd,re,rfadd rg,ra,rdsw g,rg
Código inicial Código reordenado
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 42V1.4
Eficacia de la reordenación
Eficacia de la reordenación
Porcentaje de las cargas que provocan un parón
0
10
20
30
40
50
60
70
TeX Spice gcc
ConSin
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 43V1.4
Parones por dependencia de control
Parones por dependencia de controlHasta ahora: el CP se actualiza en la fase de búsqueda (fetch).Si en el cauce entra un salto, hay dos instrucciones que pueden ser la siguiente que hay que buscar:
la que está a continuación del salto, o bienla que es el destino del salto.
Problema: necesitamos saber ya cuál es la siguiente instrucción que vamos a meter en el cauce, pero:
si es un salto condicional, aún no se sabe cuál de las dos es lacorrecta (se sabe en la fase EX);en cualquier caso, el contador de programa incrementado se almacena en la fase (WB).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 44V1.4
Parones por dependencia de control
0
5
10
15
20
25co
mpr
ess
eqnt
ott
espr
esso gc
c li
dodu
c
ear
hydr
o2d
mdl
jdp
su2c
or
cond. hacia delante
cond. hacia atrás
incond.
Esto sólo sería importante si, en el código, el porcentaje de saltos (tomados y no tomados) es significativo.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 45V1.4
Estadísticas de saltos
En promedio, para enteros:13% de instrucciones son saltos condicionales hacia delante,3% de instrucciones son saltos condicionales hacia atrás,4% son saltos incondicionales.Estos datos dependen fuertemente de las optimizaciones que use el compilador, pero como orientación sirven.
Resumiendo:1 de cada 5 instrucciones es un salto.
Conclusión: sí hay que tener en cuenta los saltos.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 46V1.4
Estrategias frente a los saltos
¿Qué se puede hacer?Plan A:
en cuanto veamos que una instrucción es un salto, paramos el cauce, hasta que sepamos adónde salta;sabemos si es un salto en la fase ID;conocemos el destino en MEM.
Total: 3 ciclos de parón.Si el porcentaje de saltos es del 30%, y el CPI ideal es 1, la máquina tiene una ganancia del 50% del máximo teórico aproximadamente.Conclusión: No interesa.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 47V1.4
Estrategias frente a los saltos
¿Qué se puede hacer?Plan B:
intentamos averiguar, en una fase anterior, si el salto se toma o no;vamos calculando el destino lo antes posible, por si acaso hace falta;por ejemplo, en la fase de decodificación (ambas).
Total: 1 ciclo de parón.Necesitamos un recurso adicional (un sumador).
Si el porcentaje de saltos es del 30%, y el CPI ideal es 1, la máquina tiene ahora una ganancia del 77% del máximo teórico, aproximadamente.Conclusión: Puede interesar.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 48V1.4
Rediseño para menor coste en saltos
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 49V1.4
Rediseño para menor coste en saltos
Esquema de la nueva ejecución:
El resto de etapas quedan igual que antes.
ID/EX.A ← Regs[IF/ID.IR6..10]ID/EX.B ← Regs[IF/ID.IR11..15] ID/EX.NPC ← IF/ID.NPCID/EX.IR ← IF/ID.IRID/EX.Imm ← (IF/ID.IR16)16 ## IF/ID.IR16..31
ID
IF/ID.IR ← Mem(PC)IF/ID.NPC,PC ← if ((IF/ID.opcode == “salto”) &&
(Regs[IF/ID.IR6..10] == 0))IF/ID.NPC + (IF/ID.IR16)16 ## IF/ID.IR16..31elsePC + 4
IF
Para todo tipo de instruccionesEtapa
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 50V1.4
Tratamiento de los saltos
Formas de tratar un salto en el flujo de instrucciones:no hacer nada:
es el esquema más sencillo (y barato),también es el que peor rendimiento da;
suponer que el salto no se va a tomar:se siguen buscando instrucciones a continuación del salto,en caso de que se tome, se invalidan;
suponer que el salto se va a tomar:se calcula el destino, y se empieza a buscar por él en nuestra máquina no es viable: se conocen el sentido y el destino a la vez => no es suposición, es certeza
retardar la ejecución del salto:ejecutar la instrucción siguiente, tanto si el salto se toma, como si no.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 51V1.4
Opción “suponer salto no se toma”
Opción: suponer que el salto no se toma.si en realidad no se toma:
si en realidad sí se toma:
i (salto) IF ID EX MM WB i + 1 IF ID EX MM WB i + 2 IF ID EX MM WB i + 3 IF ID EX MM WB
i (salto) IF ID EX MM WB i + 1 IF nada nada nada nada destino IF ID EX MM WB d + 1 IF ID EX MM WB
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 52V1.4
Opción “suponer salto no se toma”
Si en realidad el salto no se toma:el cauce no sufre alteración ninguna.Rendimiento:
penalización 0 ciclos.
Si en realidad el salto se toma:se anula la ejecución de la instrucción siguiente al salto, es decir, se borran los latches entre fases.Rendimiento:
penalización 1 ciclo.
Conclusión:Sería interesante saber qué porcentaje de saltos no se toma.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 53V1.4
01020304050607080
com
pres
s
eqnt
ott
espr
esso gc
c li
dodu
c
ear
hydr
o2d
mdl
jdp
su2c
or
hacia delante
hacia atrás
¿Tomamos salto o no?
Porcentaje de saltos tomados sobre el total de ejecutados:
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 54V1.4
Opción “suponer salto se toma”
En promedio:En programas de enteros, el 62% de los saltos ejecutados se toman.En programas de coma flotante, el porcentaje sube al 70%.
Por lo tanto:sería más interesante la opción de suponer que el salto se va a tomar (es más probable).
Problema:para buscar la instrucción destino del salto, es necesario calcularla;en nuestra máquina, este valor se obtiene en la fase ID;para entonces, también sabemos si el salto se toma o no, por tanto ya no es necesario suponer nada.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 55V1.4
Opción “retardar el salto”
Opción de ejecución retardada del salto.Cuando se llega a un salto, la siguiente instrucción se ejecuta,tanto si el salto se toma como si no se toma (delay-slot).
Implicaciones:a la hora de generar código es necesario tener esto en cuenta
=> cambio en la compilación/programación;el número de instrucciones, situadas a continuación de un salto,que se ejecutan puede variar con la arquitectura;a veces no es posible utilizar el hueco de retardo (delay-slot) para hacer trabajo útil
=> nop’s.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 56V1.4
Relleno del delay-slot
Diferentes posibilidades para rellenar el delay-slot.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 57V1.4
Aprovechamiento del delay-slot
Requisitos para aprovechar el delay-slot.Si las instrucciones se toman de antes del salto:
no debe haber dependencia entre ellas y el salto;siempre mejora el rendimiento.
Si las instrucciones se toman del destino del salto:no debe afectar al programa el que se ejecuten si el salto no setoma;puede haber ocasiones en las que el código no se copie, sino quese duplique (al destino se llega desde varios puntos);sólo mejora el rendimiento si el salto se toma.
Si las instrucciones se toman de a continuación del salto:no debe afectar al programa el que se ejecuten si el salto se toma;sólo mejora el rendimiento si el salto no se toma.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 58V1.4
Dificultades para el aprovechamiento
Problema:Puede ser difícil encontrar instrucciones a continuación del salto, o del destino, que no afecten al programa si se ejecutan cuando el salto se toma o no, respectivamente.
Posibles soluciones:Saltos con anulación (o cancelación):
se predice si se van a tomar o no (por el compilador);se rellenan sus delay-slots con instrucciones según corresponda;si el salto se comporta…
como lo esperado => todo bien;al revés de lo esperado => se anula la ejecución de los delay-slots.
Con esto se relajan los requisitos sobre las instrucciones que van en los delay-slots y se facilita su aprovechamiento.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 59V1.4
Ejecución de los delay-slots
Ejecución de los delay-slots, en porcentaje sobre el total de los saltos condicionales:
05
101520253035404550
com
pres
s
eqnt
ott
espr
esso gc
c li
dodu
c
ear
hydr
o2d
mdl
jdp2
su2c
or
vacío anulado
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 60V1.4
Uso de los delay-slots en la práctica
Observaciones sobre el uso de delay-slots:en promedio, el 30% se desperdician (35% en enteros, 25% en coma flotante) o lo que es igual, hasta un 70% se aprovechan;sin embargo, en nuestra máquina, los saltos sólo tienen 1 delay-slot; en otras, con cauces más largos, pueden tener más;esto puede hacer difícil el rellenarlos con trabajo útil;lo mismo ocurre con procesadores superescalares (ya los veremos en detalle: ejecutan varias instrucciones a la vez).
En resumen:los delay-slots tienen bastante utilidad en cauces sencillos, pero en cauces más complejos su efectividad es poca.
Conclusión: ya no se usan.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 61V1.4
Múltiples unidades funcionales
Múltiples unidades funcionales
Problema: Unas instrucciones tardan más en ejecutarse que otras.
Ejemplo: una multiplicación y un desplazamiento lógicoSi el ciclo de reloj se ajusta a la más lenta, con las rápidas (y con las demás etapas del cauce) se está perdiendo tiempo.Si el ciclo de reloj se ajusta a la más rápida, a las lentas no les da con un ciclo.
Solución: Se segmenta también la fase de ejecución.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 62V1.4
Cauce multifuncional
El nuevo cauce:
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 63V1.4
Nuevo flujo de instrucciones
El flujo de instrucciones a través del cauce es ahora:las instrucciones pasan por las fases IF e ID;a continuación, cada instrucción pasa a la unidad funcional que le corresponda para su ejecución;las instrucciones terminan el recorrido por su unidad funcional, y pasan a recorrer las fases MEM y WB.
Es necesario modificar la máquina:añadiendo latches entre las fases de las unidades funcionales;posibilitando el flujo desde ID hasta cualquier unidad funcional;por supuesto, el control se complica (pero no demasiado).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 64V1.4
Ejemplo de ocupación del nuevo cauce
Ejemplo de ocupación del nuevo cauce
Se supone que las instrucciones no tienen dependencias entre sí.Las fases en cursiva indican cuándo se necesitan los datos.Las fases en negrita indican cuándo se generan los resultados.
MULTD IF ID M1 M2 M3 M4 M5 M6 M7 MM WBADDD IF ID A1 A2 A3 A4 MM WB LD IF ID EX MM WB SD IF ID EX MM WB
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 65V1.4
Complicaciones de la multifunción
Complicaciones que aparecen en el nuevo modelo:Las posibilidades de dependencia (=>parones) aumentan:
algunas unidades funcionales están segmentadas y pueden tener varias instrucciones en ejecución;además, varias unidades funcionales pueden estar activas simultáneamente.
Además los parones serán más largos, puesto que el cauce es más largo (dependiendo de la unidad funcional).Las instrucciones no tienen por qué terminar en orden:
cuidado con las dependencias en salida WAW;puede haber varias instrucciones en la fase WB a la vez (hay riesgo de conflicto estructural).
Buena noticia: las antidependencias WAR no pueden darse.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 66V1.4
Ejemplo de ejecución multifuncional
Ejemplo:
Hay dependencias RAW de cada instrucción con la anterior. Esto implica parones.La instrucción 4 necesita el resultado de la 3, pero para su fase MEM, por lo que puede pasar a la fase EX en el ciclo 13.Hay dependencias estructurales: en el ciclo 16, la instrucción 4 no puede almacenar el dato porque la instrucción 3 está usando la etapa de memoria.
CICLO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16ld f4,0(r2) IF ID EX MM WB multd f0,f4,f6 IF ID P M1 M2 M3 M4 M5 M6 M7 MM WB add f2,f0,f8 IF P ID P P P P P P A1 A2 A3 A4 MM sd 0(r2),f2 P IF P P P P P P ID EX P P P
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 67V1.4
MIPS R4000
El MIPS R4000Representativo de arquitecturas que aparecieron a partir de los años 80.Es una máquina de 64 bits.Implementa el repertorio MIPS-3.Tiene un cauce con gran número de etapas (super-segmentación).Esto le permitía utilizar una frecuencia alta (100-200 MHz)Utilizado por NEC, Nintendo, Silicon Graphics, Sony,...
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 68V1.4
Cauce del R4000
El cauce del R4000
IF: fetch, fase 1IS: fetch, fase 2RF: Decod, búsqueda de operandos, comprobación de dependencias
EX: ejecución, cálculo de dir. efectiva, cálculo/comprobación de saltoDF: acceso a mem, fase 1DS: acceso a mem, fase 2TC: comprobación de acierto de cachéWB: almacenamiento
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 69V1.4
MIPS R4000
Ejecución de un load en el R4000
El retardo de una carga son dos ciclos (implica posible parón, si la siguiente instrucción necesita el dato).
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 70V1.4
MIPS R4000
Ejecución de un salto en el R4000
Cuál es el destino del salto, y si se toma, se sabe al fin de la fase EX; por lo tanto, la penalización son 3 ciclos.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 71V1.4
Delay-slots en el R4000
Los saltos en el R4000El R4000 permite el aprovechamiento de un delay-slot (aunque haya 3).Para los otros dos slots, se predice que el salto no se va a tomar y
ejecuta 2 instrucciones de la continuación del salto, perosi el salto se toma, se anula su ejecución.
Dispone de instrucciones de ‘salto probablemente tomado’:equivalentes a nuestro ‘salto con anulación’.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 72V1.4
Coma flotante en el R4000
Las operaciones de coma flotante:Tiene 3 unidades funcionales:
división,multiplicación,suma.
La unidad de suma se usa también al final de la multiplicación yla división.La duración de las operaciones va de 2 ciclos para una negación a 112 ciclos para una raíz cuadrada.
© J. A. de Frutos Redondo, R. Durán 2005
Arq
uite
ctur
a e
Inge
nier
ía d
e C
ompu
tado
res
2. Estructuras segmentadas 73V1.4
Estadísticas de parones en R4000
0
0,5
1
1,5
2
2,5
3
CPI
com
pres
s
eqnt
ott
espr
esso gc
c li
dodu
c
ear
hydr
o2d
mdl
jdp2
su2c
or
Resultados SPEC92
Estructurales FP
Resultados FP
Salto
Carga
Base