Unidades de instrucción segmentadas

Anuncio
Tema 6:
Unidades de instrucción
segmentadas
Arquitectura de Computadores y
Sistemas Operativos I
4º Curso Plan 96
Escuela Técnica Superior Ingenieros
Telecomunicaciones
DISCA
Tema 6:
Unidades de instrucción
segmentadas
1 La ruta de datos del DLX
2 Segmentación del ciclo de instrucción
3 Riesgos estructurales
4 Riesgos de datos.
5 Riesgos de control.
6 Excepciones.
1 La ruta de datos del DLX
– IF (Instruction Fetch): Fase de búsqueda.
– ID (instruction Decode): Decodificación de instrucción y
lectura de registros.
– EX (Excution): Ejecución/Cálculo de la dirección efectiva
– MEM (Memory access): Acceso a memoria/Finalización
satos condicionales
– WB (Write-back): Escritura en registros
DISCA-3
• Subconjunto del DLX, con la instrucciones
aritméticas de enteros (reg-reg y reg-inm), load-store
y saltos condicionales (branch)
• 5 Ciclos por instrucción:
DISCA-4
1 La ruta de datos del DLX (2)
2 Segmentación del ciclo de instrucción
• Iniciamos una instrucción cada ciclo de reloj
• Cada uno de los 5 ciclos se convierte en una etapa
1
Ins i
Ins i+1
Ins i+2
Ins i+3
3
4
5
6
7
8
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
9
WB
DISCA-5
Ins i+4
IF
2
2 Segmentación del ciclo de instrucción
DISCA-6
- Requisitos hardware
2 Segmentación del ciclo de instrucción
DISCA-7
- La ruta de datos segmentada
NPC
NPC
IR
A
B
Imm
Etapa
IF
ID
Para todas las instrucciones
IF/ID.IR ← Mem[PC];
IF/ID.NPC, PC ← (if EX/MEM.cond {EX/MEM.ALUOutput}
else {PC+4});
ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15];
ID/EX.NPC ← IF/ID.NPC; ID/EX.IR ← IF/ID.IR;
ID/EX.Imm ← (IR16)16##IR16..31;
DISCA-8
IR
NPC
NPC
cond
IR
A
ALUoutput
B
B
Imm
EX
IR
Instrucción ALU
Load/Store
Branch
EX/MEM.IR ← ID/EX.IR;
EX/MEM.ALUOutput ←
(ID/EX.A func ID/EX.B
o
ID/EX.A op ID/EX.Imm);
EX/MEM.cond ← 0;
EX/MEM.IR ← ID/EX.IR;
EX/MEM.ALUOutput ←
ID/EX.A + ID/EX.Imm
EX/MEM.ALUOutput ←
ID/EX.NPC + ID/EX.Imm
EX/MEM.cond ← 0;
EX/MEM.B ← ID/EX.B;
EX/MEM.cond ←
(ID/EX.A op 0);
NPC
DISCA-9
IR
NPC
cond
IR
A
ALUoutput
B
LMD
B
Imm
MEM
IR
Instrucción ALU
Load/Store
MEM/WB.IR ← EX/MEM.IR;
MEM/WB.ALUOutput ←
EX/MEM.ALUOutput
MEM/WB.IR ← EX/MEM.IR;
(MEM/WB.LMD ←
Mem[EX/MEM.ALUOutput];
o
Mem[EX/MEM.ALUOutput] ←
EX/MEM.B;)
ALUoutput
IR
Branch
DISCA-10
IR
NPC
NPC
cond
IR
A
ALUoutput
B
LMD
B
Imm
WB
Instrucción ALU
Load/Store
(Regs[MEM/WB.IR16..20] ←
MEM/WB.ALUOutput;
o
Regs[MEM/ WB.IR11..15] ←
MEM/WB.ALUOutput;)
Regs[MEM/ WB.IR11..15] ←
MEM/WB.LMD;
IR
ALUoutput
IR
Branch
DISCA-11
IR
2 Segmentación del ciclo de instrucción
• Riesgo (hazard): situación en la que no se puede
continuar con la ejecución de una instrucción en la
unidad segmentada.
• Los riesgos se producen entre dos o más
instrucciones que están presentes de forma
simultánea en la unidad de instrucción
segmentada.
– DLX: Si dos instrucciones están distanciadas a
5 ó más ciclos no pueden producir riesgos.
DISCA-12
- Riesgos
2 Segmentación del ciclo de instrucción
- Riesgos (2)
• Clasificación:
– Estructurales
– Datos
– Control
: Utilización del HW
: Utilización de resultados previos
: Instrucciones de salto
• Soluciones:
– Impedir que aparezca el problema evitando la
generación de ciertas secuencias de instrucciones
– Impedir el avance de la instrucción que origina el
conflicto y de todas las que le siguen.
– Modificar el hardware para resolverlos dinámicamente
DISCA-13
→ Modificar el compilador para insertar NOP
→ No puede resolver algunos riesgos estructurales
3 Riesgos estructurales
• El hardware no permite todas las combinaciones
posibles de las instrucciones presentes en la
unidad:
– Un recurso no ha sido replicado suficientemente
– Procesador con antememorias únicas de
instrucciones y datos. Colisión de la fase MEM de
las instrucciones load/store con la IF de la
instrucción a 3 de distancia.
DISCA-14
• Ejemplo:
DISCA-15
3 Riesgos estructurales (2)
3 Riesgos estructurales (3)
• Soluciones:
– Replicar el recurso para que sea posible esa
combinación:
• Aumento del coste
• Ejemplo: Arquitectura Harvard, que utiliza antememorias de
instrucciones y datos separadas.
– Retrasar una de las operaciones que causa el conflicto:
– La solución a elegir dependerán del porcentaje de
aparición de las combinaciones que originen los riesgos
estructurales
DISCA-16
• Stall: Pérdida de prestaciones
DISCA-17
3 Riesgos estructurales (4)
DISCA-18
4 Riesgos de datos
DISCA-19
4 Riesgos de datos: cortocircuito
4 Riesgos de datos:
DISCA-20
cortocircuito (2)
4 Riesgos de datos:
DISCA-21
cortocircuito + ciclos de espera
4 Riesgos de datos:
DISCA-22
cortocircuito + ciclos de espera (2)
4 Riesgos de datos:
Técnicas de compilación
• Inserción de instrucciones NOP
• Reorganización:
Código convencional
Código reorganizado
LW Rb,b
LW Rc,c
ADD Ra,Rb,Rc
LW Re,e
LW Rf,f
SUB Rd,Re,Rf
SW a,Ra
SW d,Rd
LW Rb,b
LW Rc,c
LW Re,e
ADD Ra,Rb,Rc
LW Rf,f
SW a,Ra
SUB Rd,Re,Rf
SW d,Rd
DISCA-23
– Paso adicional al de la compilación estándar que
garantiza que después de instrucciones Load no hayan
instrucciones que lean el registro cargado.
– Ejemplo:
a = b+c; d = e-f;
4 Riesgos de datos:
DISCA-24
Porcentaje de loads con ciclos de espera
4 Riesgos de datos:
DISCA-25
Modificación de la ruta de datos
4 Riesgos de datos:
Generalización de los riesgos de datos
• Read After Write (RAW)
– Inst-1: Escribe x
– Inst-2: Lee x
W
R
• Write After Write (WAW)
– Inst-1: Escribe x
– Inst-2: Escribe x
IF ID EX M
M
WB
IF ID EX WB
• Write After Read (WAR)
R
W
DISCA-26
– Inst-1: Lee x
– Inst-2: Escribe x
DISCA-27
5 Riesgos de control
5 Riesgos de control:
Inserción de ciclos de parada
• Insertamos tres ciclos de parada
– Pérdida de prestaciones
Salto
Ins i+1
Ins i+2
Ins i+3
Ins i+4
IF
2
3
4
5
ID
EX
MEM
WB
IF
stall
stall
IF
6
7
8
9
ID
EX
MEM
WB
IF
ID
EX
MEM
IF
ID
EX
IF
ID
DISCA-28
1
5 Riesgos de control:
DISCA-29
Porcentaje de instrucciones de salto
5 Riesgos de control:
Predicción
• Predict-not taken:
– Suponer que no se salta, las tres instrucciones
siguientes se toman como válidas.
– Si realmente se salta: abortar las tres instrucciones
– Suponer que se salta, cuando se conoce la dirección de
salto se buscan las nuevas instrucciones.
– Si finalmente el salto no es efectivo, se abortan.
– Sólo es útil si se conoce la dirección de salto antes que
la condición de salto: inútil en el DLX
DISCA-30
• Predict-taken:
5 Riesgos de control:
DISCA-31
Porcentaje de saltos realizados
5 Riesgos de control:
Anticipación del cálculo de la dirección destino
• Objetivo:
– Reducir el número de ciclos comprendidos entre la IF
de la instrucción de salto y la IF del destino del salto.
• Modificaciones de la ruta de datos:
– Trasladar el cálculo de la dirección efectiva de EX a ID:
• Hace falta un sumador adicional
– Trasladar la evaluación de la condición de EX a ID:
• Necesitamos leer registro en primer semiciclo
• Número de ciclos = 1
DISCA-32
– Actualizar el PC en la fase ID
5 Riesgos de control:
Etapa
IF
ID
Para todas las instrucciones
IF/ID.IR ← Mem[PC];
IF/ID.NPC, PC ← (if (Regs[IF/ID.IR6..10] op 0) { IF/ID.NPC +
(IR16)16##IR16..31} else {PC+4});
ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15];
ID/EX.IR ← IF/ID.IR;
ID/EX.Imm ← (IR16)16##IR16..31;
DISCA-33
Anticipación del cálculo de la dirección destino
5 Riesgos de control:
Salto retardado
• Compilador:
– Coloca tras el salto instrucciones que sean válidas tanto
si se salta como si no.
– Si no es posible: NOPs
• Branch Delay Slot:
• En el peor de los casos los mismos resultados que
insertar ciclos de parada, pero sin circuitería.
DISCA-34
– Número de instrucciones que hay que colocar detrás del
salto.
– En el DLX modificado es 1.
5 Riesgos de control:
DISCA-35
Estrategias de compilación
5 Riesgos de control:
Salto retardado con cancelación
• Objetivo:
– Eliminar las restricciones impuestas a las instrucciones
que ocupan el delay slot.
• Funcionamiento:
– La instrucción de salto incluye también el sentido del
salto elegido por el compilador
– Si el salto se comporta como se predijo, simplemente se
ejecutan las instrucciones del delay slot.
– En caso contrario se abortan convirtiéndolas en NOP.
DISCA-36
• Se utiliza un bit del formato o se añaden nuevos códigos de
operación.
5 Riesgos de control:
DISCA-37
Porcentaje de delay slots desperdiciados
6 Excepciones
– Síncrona (la excepción ocurre siempre en el mismo
lugar cada vez que se ejecuta el programa) o asíncrona
(E/S).
– A petición del usuario o forzada.
– Enmascarable por el usuario o no.
– A mitad instrucción o entre instrucciones.
– Continuar o terminar el programa.
DISCA-38
• Excepción, interrupción, fallo.
• Clasificación:
6 Excepciones:
Etapa
Excepciones
IF
ID
Fallo de página de instrucción. Acceso
desalineado. Violación de protección. E/S
Instrucción Ilegal. E/S
EX
Excepción aritmética. E/S
MEM
Fallo de página de datos. Acceso desalineado.
Violación de protección. E/S
E/S
WB
DISCA-39
Excepciones posibles en el DLX
6 Excepciones:
Excepciones precisas
– Las instrucciones anteriores a la que origina la
excepción terminan correctamente
– La instrucción que origina la excepción y todas
las siguientes son abortadas
– Tras completar la rutina de servicio se puede
relanzar el programa comenzando por la
instrucción que provocó la excepción
• Comportamiento idéntico a no segmentado
DISCA-40
• Un computador segmentado soporta
excepciones precisas si:
6 Excepciones:
– Forzar instrucción TRAP en el ciclo siguiente, en
la etapa IF.
– Impedir escritura (Mem y Regs) de la instrucción
que provoca la excepción y de las posteriores
(convertir en NOPs)
– Guardar el PC de la instrucción que origina la
excepción en un registro especial
– Cuando finaliza la rutina de servicio restaurar el
PC de la instrucción que originó la excepción.
DISCA-41
Excepciones precisas en el DLX
6 Excepciones:
Problemas con el salto retardado
• Problema:
– Una instrucción en el delay slot origina una
excepción y el salto es efectivo.
– Si guardamos el PC de esta instrucción y la
abortamos junto con el resto, al volver no será
efectivo el salto.
– Hay que guardar dos PCs, el de la instrucción
delay slot y el de la siguiente.
DISCA-42
• Solución:
6 Excepciones:
Excepciones múltiples
• Problema:
– Se pueden producir dos excepciones en el mismo
ciclo de reloj en distintas unidades (MEM y EX)
• Solución:
DISCA-43
– Atender a la que se origina en etapa más
avanzada. El resto se repetirán al devolver el
contol.
6 Excepciones:
Excepciones múltiples (2)
• Problema:
– Se pueden producir dos excepciones en el
distintos ciclos de reloj, siendo primero la de la
instrucción más moderna (IF y MEM)
– Cuando se produce una excepción se activa un bit
y se convierte en NOP la instrucción.
– Cuando se llega a la última etapa, se verifica el bit
y si está activo se anulan todas las instrucciones y
se lanza la trap.
DISCA-44
• Solución:
Descargar