Beruflich Dokumente
Kultur Dokumente
)
(
O
p
=
L
W
)
2 6
9
8
1
0
Arquitectura e Ingeniera de Computadores
Segmentacin: Perspectiva General
Tcnica utilizada para optimizar el tiempo de ejecucin de procesos que se
realizan mediante la repeticin de una secuencia de pasos bsicos.
Permite la ejecucin de procesos concurrentemente.
Fundamento: Separar el proceso en etapas y ejecutar cada etapa en un
recurso independiente.
Objetivo: Mejorar la productividad, aumentando el nmero de
instrucciones ejecutadas por unidad de tiempo.
Funcionamiento: Cuando una etapa del proceso termina, el recurso
liberado puede empezar a ejecutar la misma etapa del siguiente proceso.
Se consigue la ejecucin de varios procesos en paralelo cada uno
en una etapa diferente. ILP: Instruction Level Paralelism
Las etapas son ejecutadas secuencialmente.
Arquitectura e Ingeniera de Computadores
Segmentacin: Perspectiva General (un ejemplo)
O
r
d
e
n
d
e
T
a
r
e
a
FUNCIONAMIENTO SECUENCIAL
Realizar 4 tareas
Lavado 30 MIN
Secado 40 MIN
Planchado 20 MIN
Tiempo empleado: 6 horas
Ejemplo de
Hennesy - Patterson
Arquitectura e Ingeniera de Computadores
Segmentacin: Perspectiva General (un ejemplo)
O
r
d
e
n
d
e
T
a
r
e
a
FUNCIONAMIENTO SEGMENTADO
Realizar 4 tareas
Lavado 30 MIN
Secado 40 MIN
Planchado 20 MIN
Tiempo empleado: 3,5 horas
Cada Tarea : 1,5 horas
Arquitectura e Ingeniera de Computadores
Segmentacin: Funcionamiento Ideal
T
p
T
s
T
p
T
s
SECUENCIALMENTE (1 unidad de proceso para todas las etapas)
T
p
es el tiempo de ejecucin de un proceso.
Se puede descomponer en s (s=3) etapas de duracin T
s
(T
p
=sT
s
)
T
t
= NT
p
= NsT
s
Con SEGMENTACIN (unidades independientes para cada etapa)
Si N >>s T
t
NT
s
T
t
= T
p
+ (N-1)T
s
= sT
s
+ (N-1)T
s
= (N+s-1)T
s
1 2 3 N
1
2
3
N-1
N
s=3
Ejecutar N procesos
Arquitectura e Ingeniera de Computadores
Segmentacin: Funcionamiento Ideal
Proceso segmentado vs Proceso secuencial
La segmentacin, aunque no mejora la latencia de un solo proceso,
mejora el rendimiento o productividad (throughput) de una tarea con
muchos procesos.
Varios procesos se ejecutan en paralelo.
VENTAJAS
RESTRICCIONES
La razn de segmentacin est limitada por la etapa ms lenta.
La aceleracin mxima posible = Nmero de etapas de segmentacin.
Etapas de segmentacin desequilibradas Reduccin de productividad.
Arquitectura e Ingeniera de Computadores
Segmentacin: Funcionamiento Ideal
Un procesador segmentado perfecto consigue ejecutar una
instruccin por ciclo.
La segmentacin ms evidente consta de tres etapas:
Obtener instruccin (Fetch)
Decodificar instruccin (Decode)
Ejecutar instruccin (Execute)
La frecuencia de funcionamiento es mayor si el nmero de etapas de
segmentacin se incrementa. Aunque:
La segmentacin fina es muy difcil
Cada nueva etapa aade el retardo de un registro
La independencia entre etapas es ms difcil de conseguir
Arquitectura e Ingeniera de Computadores
Segmentacin: Segmentacin de instrucciones.
EJEMPLO: Segmentacin de instrucciones con 5 etapas (MIPS)
Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
IMem Reg ALU DMem Reg
Obtener instruccin
Acceso a la memoria
de instrucciones
Decodificar instruccin
Lectura de operandos,
carga de registros
Ejecutar instruccin
o bien
Calcular direccin
efectiva memoria.
Acceso a Memoria
o bien
Escribir en PC la
direccin de salto.
Escribir en un
registro el resultado
de la operacin.
Ejemplo para tres instrucciones tipo
Load Rx, 100(Ry)
Arquitectura e Ingeniera de Computadores
Segmentacin: Load vs Operacin entre registros
Las cuatro etapas en operaciones entre registros
Ifetch Reg/Dec Exec Mem Wr 1
er
load
Ifetch Reg/Dec Exec Mem Wr 2 load
Ifetch Reg/Dec Exec Mem Wr 3
er
load
Las cinco etapas de Load
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7
Clock
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec Wr R-type
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6
Clock
Arquitectura e Ingeniera de Computadores
Existen conflictos estructurales
Hay dos instrucciones que intentan acceder a memoria al
tiempo.
Hay dos instrucciones que intentan escribir en el banco de
registros al mismo tiempo y slo existe un puerto de escritura.
Aparecen problemas
Segmentacin: Load vs Operacin entre registros
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec Wr R-type
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7
Clock
Ciclo 8
Arquitectura e Ingeniera de Computadores
Segmentacin: Consideraciones de diseo
Cada unidad funcional pueda usarse slo una vez por instruccin. Deben
aparecer dos unidades de memoria.
Cada unidad funcional se utiliza en la misma etapa para todas las
instrucciones:
Load usa el puerto de escritura en Registros durante su 5 etapa.
Las operaciones entre Registros usan el puerto de escritura en Registros
durante su 4 etapa
Ifetch Reg/Dec Exec Mem Wr Load
1 2 3 4 5
Ifetch Reg/Dec Exec Wr R-type
1 2 3 4
Soluciones posibles: paradas entre etapas, retraso de la escritura en
registro, ...
Arquitectura e Ingeniera de Computadores
Segmentacin: Consideraciones de diseo
Solucin1: Parar el cauce de instrucciones (Pipeline bubble)
Solucin 2: Retrasar la escritura en registro
Ifetch Reg/Dec Mem Wr R-type
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Mem Wr R-type
Ifetch Reg/Dec Mem Wr R-type
Exec
Exec
Exec
Ifetch Reg/Dec Mem Wr R-type Exec
Clock
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9
Ifetch Reg/Dec Exec Wr R-type
Ifetch Reg/Dec Exec
Ifetch Reg/Dec Exec Mem Wr Load
Ifetch Reg/Dec Exec Wr
R-type
Ifetch Reg/Dec Exec Wr
R-type
Pipeline
Bubble
Ifetch Reg/Dec Exec Wr
Clock
Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9
R-type
Es lo utilizado
en la prctica
Arquitectura e Ingeniera de Computadores
Resumen: Ciclo nico vs multiciclo vs segmentacin
Clk
Ciclo 1
Multiciclo
Ifetch Reg Exec Mem Wr
Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9Ciclo 10
Ifetch Reg Exec Mem
Load Store
Ifetch
R-type
Load Ifetch Reg Exec Mem Wr
Segmentacin
Ifetch Reg Exec Mem Wr
Store
Ifetch Reg Exec Mem Wr
R-type
Clk
Ciclo nico
Load
Store Sin uso
Ciclo 1
Ciclo 2
Arquitectura e Ingeniera de Computadores
Ruta de Datos de MIPS segmentado
WB
MEM
La informacin
de derecha a
izquierda va a
producir riesgos
Arquitectura e Ingeniera de Computadores
Segmentacin: Un diseo con 5 etapas
La base es el camino de datos de un ciclo.
Se aaden registros entre etapas.
Hay que analizar si todas las instrucciones funcionan.
Problema: LW R1,inm(R2)
Arquitectura e Ingeniera de Computadores
Etapa IF
Arquitectura e Ingeniera de Computadores
Etapa ID
Arquitectura e Ingeniera de Computadores
Etapa EX para Load
Arquitectura e Ingeniera de Computadores
Etapa MEM para Load
Arquitectura e Ingeniera de Computadores
Etapa WB para Load
Nmero de
registro
errado
Arquitectura e Ingeniera de Computadores
Correccin en la Ruta de Datos
La informacin del
registro de escritura
avanza con la
instruccin
Arquitectura e Ingeniera de Computadores
Segmentacin: Aadir el control
Tambin se deben
retrasar las
seales de control
para que la info de
control avance con
la instruccin
Arquitectura e Ingeniera de Computadores
Segmentacin: Aadir el control
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM MEM/WB
Instruction
Todas las instrucciones tardan los mismos ciclos de reloj.
La secuenciacin de la instruccin est implcita en la estructura del pipeline.
No hay un control especial para la duracin de la instruccin (no hay FSM).
Toda la informacin de control se calcula durante la decodificacin, y se enva
hacia delante a travs de los registros de segmentacin.
Los valores de las lneas de control son los mismos que los calculados en el
control uniciclo.
Arquitectura e Ingeniera de Computadores
Las causas que pueden reducir el rendimiento en un procesador
segmentado de instrucciones son tres:
Riesgos estructurales:
Se intenta usar el mismo recurso de dos maneras diferentes al mismo tiempo.
El hardware impide una cierta combinacin de operaciones.
Riesgos por dependencia de datos:
Se intenta usar un dato antes de que est disponible.
El operando de una instruccin depende del resultado de otra instruccin
precedente que todava no se ha obtenido.
Riesgos de control:
Se intenta tomar una decisin antes de evaluarse la condicin.
Si se salta, las instrucciones posteriores no deben ejecutarse (o al menos,
no deben finalizar).
Segmentacin: Conflictos en funcionamiento real
Arquitectura e Ingeniera de Computadores
Cuando se detecta un riesgo, la solucin ms simple es parar la unidad de
segmentacin (stall the pipeline) hasta que desaparezca el riesgo.
Las instrucciones que preceden a la causante del riesgo pueden continuar.
La instruccin que causa el riesgo y siguientes no continan hasta que
desaparece el riesgo.
Todos estos riesgos se pueden solucionar?.....S
Cmo?...................................................Esperando
Se necesita que el control de la unidad de segmentacin (pipeline) sea
capaz de:
Detectar las causas de riesgo.
Decidir acciones que resuelvan el riesgo (por ejemplo, esperar).
Segmentacin: Conflictos en funcionamiento real
Arquitectura e Ingeniera de Computadores
Casos que se pueden presentar. Accesos simultneos a:
Memoria (si es Von Neuman, nica para datos e instrucciones).
Unidades funcionales.
Registros internos.
Tiempo (ciclos de reloj)
O
r
d
e
n
d
e
i
n
s
t
r
u
c
c
i
n
Segmentacin: Riesgos estructurales
Mem
Load
Instr 1
Instr 2
Instr 3
Instr 4
ALU
Mem Reg
Mem
Reg
ALU
Mem Reg Mem Reg
ALU
Mem Reg Mem Reg
ALU
Reg Mem Reg
ALU
Mem Reg Mem Reg
(La mitad izquierda coloreada indica escritura y la mitad derecha lectura)
Conflicto de lectura
en memoria
Arquitectura e Ingeniera de Computadores
Soluciones:
Introducir esperas.
Duplicar recursos o separar memoria de datos de la memoria de instrucciones
(Harvard en lugar de Von Neuman).
Tiempo ( ciclos de reloj)
O
r
d
e
n
d
e
i
n
s
t
r
u
c
c
i
n
Segmentacin: Riesgos estructurales
Arquitectura e Ingeniera de Computadores
Dependencias que se presentan para 2 instrucciones i y j, con i
ejecutndose antes que j.
RAW (Read After Write): la instruccin posterior j intenta leer una fuente antes
de que la instruccin anterior i la haya modificado.
WAR (Write After Read): la instruccin j intenta modificar un destino antes de
que la instruccin i lo haya ledo como fuente.
WAW (Write After Write): la instruccin j intenta modificar un destino antes de
que la instruccin i lo haya hecho (se modifica el orden normal de escritura).
Ejemplos: RAW WAR WAW
ADD r1, r2, r3 ADD r1, r2, r3 DIV r1, r2, r3
SUB r5, r1, r6 OR r3,r4, r5 AND r1,r4, r5
AND r6, r5, r1
ADD r4, r1, r3
SW r10, 100(r1)
Segmentacin: Riesgos por dependencia de datos
En micros segmentados con ejecucin
en orden slo son problema los RAW
Arquitectura e Ingeniera de Computadores
Segmentacin: Riesgos por dependencia de datos
Aparecen problemas al poder empezar la siguiente instruccin antes de
que la primera haya terminado.
Dependencias
problemticas son
aquellas que necesitan
datos que hay que
buscar hacia atrs en
el esquema de tiempos.
IM Reg
IM Reg
Ciclo1
IM
Reg
DM Reg
IM DM Reg
IM DM Reg
10 10 20
DM
Reg
Reg
Reg
Reg
DM
TIEMPO (CICLOS)
Ciclo2 Ciclo3 Ciclo4 Ciclo5 Ciclo6 Ciclo7 Ciclo8 Ciclo9
Valor de r1
PROGRAMA
add r1, r2, r3
sub r5, r1, r6
and r16, r5, r1
add r4, r1, r3
sw r10, 100(r1)
10 10 10 20 20 20 20
Ejemplo (RAW):
Arquitectura e Ingeniera de Computadores
Soluciones:
Adelantar (forward) el resultado de una etapa a las siguientes.
Definir adecuadamente la secuencia Read/Write (la instruccin add r4,r1,r3 funciona
correctamente si en la etapa WB, Write se realiza en la 1 mitad del ciclo y Read en la 2).
Segmentacin: Riesgos por dependencia de datos
IM Reg
IM Reg
IM
Reg
DM Reg
IM DM Reg
IM DM Reg
DM
Reg
Reg
Reg
Reg
DM
PROGRAMA
add r1, r2, r3
sub r5, r1, r6
and r16, r5, r1
add r4, r1, r3
sw r10, 100(r1)
Arquitectura e Ingeniera de Computadores
Necesidades hardware para adelantar resultados:
Multiplexores adicionales donde se vaya a recibir el dato (p. ej. en las entradas
de datos de la ALU).
Buses extra entre registros internos y multiplexores.
Comparadores entre los operandos de una instruccin y los operandos destino
de instrucciones previas.
Segmentacin: Riesgos por dependencia de datos
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
EX/MEM.RegisterRd
ID/EX EX/MEM MEM/WB
Arquitectura e Ingeniera de Computadores
Los riesgos pueden persistir incluso con adelantamiento de datos
Ej: tras la instruccin LOAD se pueden evitar los riesgos en AND y en OR con
adelantamiento de datos, pero no de SUB (no puede adelantar resultados a etapas que son
de tiempos anteriores)
Tiempo (ciclos de reloj)
O
r
d
e
n
d
e
i
n
s
t
r
u
c
c
i
o
n
e
s
Segmentacin: Riesgos por dependencia de datos
Arquitectura e Ingeniera de Computadores
Soluciones:
Insertar un ciclo de espera (stall) en el ciclo 3, para la instruccin SUB y siguientes
Insertar una operacin NOP detrs del LOAD (es lo ms utilizado, lo puede automatizar el
compilador sin necesidad de ms hardware)
Tiempo (ciclos de reloj)
O
r
d
e
n
d
e
i
n
s
t
r
u
c
c
i
o
n
e
s
Segmentacin: Riesgos por dependencia de datos
Arquitectura e Ingeniera de Computadores
Segmentacin: Ruta de datos con control para adelantamiento
de datos y deteccin de riesgos
Arquitectura e Ingeniera de Computadores
Segmentacin: Control para adelantamiento de datos
Unidad de adelantamiento de datos (forwarding)
Se debe detectar el riesgo y luego anticipar el valor a su destino
Se agrega un bloque combinacional para detectar el riesgo y
multiplexores para adelantar los datos oportunamente
Registers
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
IF/IDRegisterRs
Rt
Rd
Rs
Rt
IF/IDRegisterRt
IF/IDRegisterRt
IF/IDRegisterRd
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
Arquitectura e Ingeniera de Computadores
Segmentacin: Control para adelantamiento de datos
Unidad de adelantamiento de datos (forwarding)
Se debe detectar el riesgo y luego anticipar el valor a la ALU
Existen 4 riesgos potenciales:
1a. EX/MEM.Registro.Rd = ID/EX.Registro.Rs
1b. EX/MEM.Registro.Rd = ID/EX.Registro.Rt
2a. MEM/WB.Registro.Rd = ID/EX.Registro.Rs
2b. MEM/WB.Registro.Rd = ID/EX.Registro.Rt
Analizar por ejemplo con:
Add r1, r2, r3
Sub r5, r1, r6
And r6, r5, r1
Add r4, r1, r3
Registers
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
IF/IDRegisterRs
Rt
Rd
Rs
Rt
IF/IDRegisterRt
IF/IDRegisterRt
IF/IDRegisterRd
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
Arquitectura e Ingeniera de Computadores
Segmentacin: Control para adelantamiento de datos
Unidad de adelantamiento de datos (forwarding)
Pseudo-cdigo del funcionamiento:
(Riesgos en EX)
if (EX/MEM.EscrReg and
EX/MEM.RegistroRd 0 and
EX/MEM.Registro.Rd = ID/EX.Registro.Rs)
then AnticiparA = 10
else AnticiparA = 00
if (EX/MEM.EscrReg and
EX/MEM.RegistroRd 0 and
EX/MEM.Registro.Rd = ID/EX.Registro.Rt)
Then AnticiparB = 10
else AnticiparB = 00
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rd
Rs
Rt
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
Arquitectura e Ingeniera de Computadores
Segmentacin: Control para adelantamiento de datos
Unidad de adelantamiento de datos (forwarding)
Pseudo-cdigo del funcionamiento:
M
u
x
M
u
x
M
u
x
ALU
Data
memory
M
u
x
Forwarding
unit
EX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rd
Rs
Rt
ID/EX EX/MEM MEM/WB
AnticiparA
AnticiparB
(Riesgos en MEM)
if (MEM/WB.EscrReg and
MEM/WB.RegistroRd 0 and
EX/MEM.Registro.Rd ID/EX.RegistroRs
and
MEM/WB.Registro.Rd =
ID/EX.RegistroRs)
then AnticiparA = 01
else AnticiparA = 00
if (MEM/WB.EscrReg and
MEM/WB.RegistroRd 0 and
EX/MEM.Registro.Rd ID/EX.RegistroRt
and
MEM/WB.Registro.Rd = ID/EX.Registro.Rt)
then AnticiparB = 01
else AnticiparB = 00
Arquitectura e Ingeniera de Computadores
Segmentacin: Deteccin de riesgos insalvables
Unidad de deteccin de riesgos (hazard detection unit)
Para cuando el adelantamiento no resuelve los riesgos (caso de load y
uso del registro destino en la siguiente instruccin)
Pseudo-cdigo del funcionamiento:
If (ID/EX.LeerMem and
((ID/EX.Registro.Rt = IF/ID.Registro.Rs) or
(ID/EX.Registro.Rt = IF/ID.Registro.Rt)))
then Bloquear el pipeline
Bloquear el pipeline:
PCWrite = 0
IF/IDWrite = 0
MuxNOP = 1
Todo esto no es necesario si el
compilador / ensamblador aade un
NOP despus del LOAD con riesgo
Arquitectura e Ingeniera de Computadores
Una solucin SW para el caso del lw
El compilador puede reacomodar el cdigo para evitar
stalls
Ejemplo en C: A = B + E; C = B + F;
l w $t 1, 0( $t 0)
l w $t 2, 4( $t 0)
add $t 3, $t 1, $t 2
sw $t 3, 12( $t 0)
l w $t 4, 8( $t 0)
add $t 5, $t 1, $t 4
sw $t 5, 16( $t 0)
l w $t 1, 0( $t 0)
l w $t 2, 4( $t 0)
l w $t 4, 8( $t 0)
add $t 3, $t 1, $t 2
sw $t 3, 12( $t 0)
add $t 5, $t 1, $t 4
sw $t 5, 16( $t 0)
11 ciclos 13 ciclos
stall
stall
Arquitectura e Ingeniera de Computadores
Las instrucciones de salto pueden suponer una alteracin del orden
secuencial de ejecucin.
No se sabe si el salto es efectivo hasta la etapa de ejecucin y no se
actualiza la direccin destino (caso de que sea efectivo) hasta la cuarta
etapa => Prdida de 3 ciclos
Mejora: Adelantar el clculo del destino (target) PC+Inmediato y adelantar la
resolucin de la condicin (y actualizar el PC) a la 2 etapa.
Riesgos de control (instrucciones de salto)
Etapa IF Etapa ID Etapa EX Etapa MEM Etapa WB
Obtener instruccin
Acceso a la memoria
de instrucciones
Decodificar instruccin.
Lectura de operandos,
carga de registros
Ejecutar instruccin
Calcular la direccin
efectiva salto (PC+Inm.)
Acceso a Memoria
o bien
Resolver la condicin
y escribir en PC la
direccin de salto.
Escribir en un
registro el resultado
de la operacin
Arquitectura e Ingeniera de Computadores
Ejemplo: salto efectivo
36: sub $10, $4, $8
40: beq $1, $3, 7
44: and $12, $2, $5
48: or $13, $2, $6
52: add $14, $4, $2
56: sl t $15, $6, $7
. . .
72: l w $4, 50( $7)
Cuando se decide saltar a una instruccin distinta de la siguiente, ya se estn ejecutando
otras instrucciones en el cauce segmentado => Se necesita incluir hardware para vaciar
(flushing) el pipeline
Riesgos de control (instrucciones de salto)
Arquitectura e Ingeniera de Computadores
Ejemplo: Salto Efectivo
Para descartar una instruccin cambia a 0 el campo de instruccin (opcode) del registro de
segmentacin IF/ID NOP
Arquitectura e Ingeniera de Computadores
Ejemplo: Salto Efectivo
Arquitectura e Ingeniera de Computadores
QU HACER CON LAS SIGUIENTES INSTRUCCIONES A LA DE SALTO
CONDICIONAL?
1. Esperar hasta que la direccin y condicin del salto estn definidas.
Conviene conocer la direccin de salto y la condicin tan pronto como sea posible.
2. Salto retardado, la(s) instruccin(es) posterior(es) siempre se ejecuta(n).
El compilador rellena con instrucciones vlidas los huecos de retardo.
3. Predecir si se va a saltar o no.
Se ejecuta especulativamente, en caso de error se debe vaciar el procesador.
4. Anticipar la direccin ms probable para el salto (BTB).
Se ejecuta especulativamente, se almacena en una cach la direccin del ltimo salto.
5. Ejecutar todos los caminos.
Implica la duplicacin del hardware.
6. Ejecucin con predicados.
Riesgos de Control (Instrucciones de salto)
Arquitectura e Ingeniera de Computadores
Riesgos de Control. Salto retardado
add r1, r2, r3
bnz r2, L1
nop
sub r6,r7,r6
mul r2, r3, r8
.................
L1: and r2, r3, r2
andi r5,r6,inm
La siguiente instruccin al salto siempre se termina de ejecutar, se salte o no.
El compilador utiliza tres estrategias para buscar una/varias instrucciones de relleno:
...........
bnz r2, L1
add r1, r2, r3
sub r6,r7,r6
mul r2, r3, r8
.................
L1: and r2, r3, r2
andi r5,r6,inm
add r1, r2, r3
bnz r2, L1
and r2, r3, r2
sub r6,r7,r6
mul r2, r3, r8
.................
L1: andi r5,r6,inm
............
add r1, r2, r3
bnz r2, L1
sub r6,r7,r6
.................
mul r2, r3, r8
.................
L1: and r2, r3, r2
andi r5,r6,inm
DEL BLOQUE BSICO SI SALTO PROBABLE,
DEL BLOQUE DESTINO
SI SALTO NO PROBABLE,
DEL BLOQUE SECUENCIAL
Operacin vlida si la
instruccin no afecta a la
condicin del salto. Siempre
se realiza trabajo til.
Operacin vlida siempre
siempre que r2 no se utilice
como fuente y sea modificada
como destino en el en bloque
secuencial. (CORRECTO)
Operacin vlida siempre
que r6 no se utilice como
fuente y sea modificada como
destino en el en bloque
destino. (INCORRECTO)
Arquitectura e Ingeniera de Computadores
Riesgos de Control. Predecir el salto
Prediccin esttica: siempre predice el mismo sentido del salto.
Ejecuta especulativo hasta que se resuelve la condicin (normalmente, ciclo 3-4)
En caso de error debe eliminar los resultados especulativos
Prediccin efectiva (E), el salto se realiza
Prediccin no efectiva (NE), el salto no se realiza
Prediccin NE si el salto es adelante y E si es hacia atrs
Prediccin dinmica: cambia la prediccin en funcin de la historia del salto.
Utiliza una pequea memoria asociada a cada direccin de salto (BHT, Branch
History Table)
F
PC Direccin Instruccin Salto
BHT
E
NE
A
A
F
F
PREDICCIN DE 1 BIT PREDICCIN DE 2 BITS
Ef Ed A
F
A
NEd NEf A
A
F
F
Arquitectura e Ingeniera de Computadores
Utiliza la tcnica de prediccin histrica anterior
Utiliza una tabla asociativa (tipo cach) que incorpora, para cada instruccin de
salto, la direccin de destino de la prediccin anterior.
A la tabla se la conoce como buffer de destino de saltos o BTB (Branch Target
Buffer).
Direccin
Instruccin
Direccin
Destino
Bits de
historia
Tabla de look-up
completamente asociativa
Contador de Programa
Fetch Decod.
Cargar direc. destino
Direccin
Instruccin
SEGMENTACIN DE INSTRUCCIONES
Direc. destino encontrada
Riesgos de Control. Anticipar la direccin ms probable
Arquitectura e Ingeniera de Computadores
Segmentacin: Tratamiento de excepciones y mejoras
Cmo afecta a la segmentacin el tratamiento de
excepciones (interrupciones, desbordamientos aritmticos, peticiones de
E/S, servicios del sistema operativo, uso de instrucciones no definidas, mal
funcionamiento de la circuitera, etc)?
Bsicamente detectarlo y vaciar el pipeline para dar el control a
alguna rutina de tratamiento de excepciones
Cmo mejorar an ms la segmentacin?
Super-segmentacin (implica segmentacin en operaciones aritmticas)
Superescalares (replicar rutas de datos)
Planificacin dinmica del pipeline