Cap. 6: Pipelining.
Encauzamiento
de procesadores
Normalmente traducido como segmentación.
Una
técnica que mejora ostensiblemente la
productividad.
Paralelismo a nivel de instrucciones (ILP)
Overview:
De este capítulo, sólo estamos interesados
en los conceptos.
Pipelining.
 Traducción:
 Segmentación. Usada en la versión española
del libro de texto –la más usada.
 Encauzamiento. Usada traducciones de otros
libros sobre computadores –¿La más
apropiada?
Pipelining: Concepto
Técnica de mejora del rendimiento del
procesador:
 Permite la ejecución de varias instrucciones al
mismo tiempo.
 Incrementa la productividad del procesador
 Pero, el tiempo empleado por cualquier
instrucción es el mismo que en el procesador
no encauzado.
Estructuras básicas: Unidad de memoria
dividida en datos e instrucciones
Clk
Memoria de instrucciones
lw $t1, 0($t0)
lw $t2, 4($t0)
add $t3, $t1, $t2
sw $t3, 12($t0)
Instrucción
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
...
Memoria de datos
PC
RF
IR
Dato
MIPS
0x00101000
0x00000000
0x00ff0000
0xffffff00
0x00000000
0xffffffff
...
Estructuras básicas

Cola prioritaria:
 Estructurales
 De datos
 De control
Memoria de instrucciones
lw $t1, 0($t0)
lw $t2, 4($t0)
PC
add $t3, $t1, $t2
sw $t3, 12($t0)
Instrucción
lw $t4, 8($t0)
add $t5, $t1, $t4
sw $t5, 16($t0)
...
Cola de instrucciones
Clk
 Las instrucciones
se ejecutan en su
orden natural
 5 etapas
 La mejora
productividad
obtenida tiende a
ser x5.
 Pero, surgen
conflictos entre
las instrucciones
IF
MIPS
ID
EX MEM
WB
Las instrucciones de ejemplo
base para este capítulo.
lw, sw, add, sub, and, or, slt y beq.
 En principio, asumiremos que todas
ellas son ejecutadas en 5 fases.
 La pipa (La cola de instrucciones):

5 etapas.
Mejora de velocidad = x5.
Mas fases  Mas mejora de velocidad
Es necesario un compromiso
La ruta de datos uniciclo
encauzada
IF: Instruction fetch
ID: Instruction decode/
register file read
EX: Execute/
address calculation
MEM: Memory access
WB: Write back
0
M
u
x
1
Add
4
Add
Add
result
Shift
left 2
PC
Read
register 1
Address
Instruction
Instruction
memory
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
0
M
u
x
1
Zero
ALU ALU
result
Address
Data
memory
Write
data
16
Sign
extend
32
Read
data
1
M
u
x
0
Ejejmplo de ejecución
encauzada


Time (in clock cycles)
Program
execution
order
(in instructions)
lw $1, 100($0)
CC 1
CC 2
IM
Reg
CC 3
ALU
CC 4
CC 5
DM
Reg
CC 6
CC 7

lw $2, 200($0)
lw $3, 300($0)
IM
Reg
IM
ALU
Reg
DM
ALU
Reg
DM
Reg
¿Ves un “bug” en
este diseño?
Este computador
no es
funcionalmente
equivalente al
computador
uniciclo conocido
¿Cómo
arreglamos el
“bug”?
Solución al “bug” anterior

0
M
u
x
1
IF/ID
ID/EX
EX/MEM
 Deben ser de
suficiente ancho
 128, 97, 64, ...
MEM/WB

Add
Add
Add result
4
Address
Instruction
memory
Instruction
Shift
left 2
PC
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
0
M
u
x
1
Zero
ALU ALU
result
Address
Data
memory
Write
data
16
Sign
extend
32
Read
data
Etapas de la pipa
desacopladas entre sí
mediante registros
de pipa:
1
M
u
x
0
Pero, todavía existe
un “bug” en el diseño
¿?
 Pensemos en una
instrucción lw
 ¿A qué registro se
transfiere el dato
procedente de la
memoria?
Registros inter-fase:
La instrucción “conserva” el registro de destino para
usarlo en su 5ª fase
0
M
u
x
1
MEM/WB
EX/MEM
ID/EX
IF/ID
•A medida que
una instrucción
progresa en su
ejecución, lleva
consigo la
información
necesaria
para su ejecución
completa.
Add
Add
4
Add
result
PC
Address
Instruction
memory
Instruction
Shift
left 2
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
0
M
u
x
1
Zero
ALU ALU
result
Address
Data
memory
Write
data
16
Sign
extend
32
Read
data
1
M
u
x
0
•Esta información
se pasa de una
fase a la siguiente,
a través de los
registros inter-fase
Diseño de la unidad de
control
Necesitamos generar el conjunto de
microórdenes que controlen cada
etapa de la pipa.
 ¿En qué instante deben estar listas?

Las microórdenes serán generadas
cuando conozcamos la clase de
instrucción de la que se trata...
Detección de conflictos
entre instrucciones.
Time (in clock cycles)
CC 1
Value of
register $2: 10
CC 2
CC 3
CC 4
CC 5
CC 6
CC 7
CC 8
CC 9
10
10
10
10/– 20
– 20
– 20
– 20
– 20
DM
Reg
Program
execution
order
(in instructions)
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
IM
Reg
IM
DM
Reg
IM
DM
Reg
IM
Reg
DM
Reg
IM
Reg
Reg
Reg
DM
Reg
Adelantamiento de resultados.
(Forwarding)
Time (in clock cycles)
CC 1
Value of register $2 : 10
Value of EX/MEM : X
Value of MEM/WB : X
CC 2
CC 3
CC 4
CC 5
CC 6
CC 7
CC 8
CC 9
10
X
X
10
X
X
10
– 20
X
10/– 20
X
– 20
– 20
X
X
– 20
X
X
– 20
X
X
– 20
X
X
DM
Reg
Program
execution order
(in instructions)
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
IM
Reg
IM
Reg
IM
DM
Reg
IM
Reg
DM
Reg
IM
Reg
DM
Reg
Reg
DM
Reg
Conflictos de datos y
detenciones de la pipa.
Un caso de conflicto no resoluble
mediante forwarding es una
instrucción que lee un registro
seguida de una instrucción que
carga ese registro.
 La pipa debe ser detenida
temporalmente (stall)

Pipa detenida: Reg/load.
Program
Time (in clock cycles)
execution
CC 1
CC 2
order
(in instructions)
lw $2, 20($1)
and $4, $2, $5
or $8, $2, $6
IM
CC 3
Reg
IM
Reg
IM
CC 4
CC 5
DM
Reg
Reg
IM
CC 6
CC 7
DM
Reg
Reg
DM
CC 8
CC 9
CC 10
Reg
bubble
add $9, $4, $2
slt $1, $6, $7
IM
DM
Reg
IM
Reg
Reg
DM
Reg
Fallos debidos a instrucciones
de salto condicional.
(Fallos de control)


Al principio de la presentación hemos
asumido que todas las instrucciones se
ejecutan en 5 etapas.
beq $1, $3, 7 también se ejecuta en 5
etapas
 En la etapa MEM se toma la decisión (branch)
 ¿Qué ocurre con las instrucciones
inmediatamente siguientes si de hecho se
produce el salto condicional?
 Deben ser descartadas... Un ejemplo:
Vaciado de la pipa debido a
un salto condicional
ejecutado
Time (in clock cycles)
Program
execution
CC 1
CC 2
order
(in instructions)
40 beq $1, $3, 7
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
72 lw $4, 50($7)
IM
CC 3
Reg
IM
CC 4
CC 5
DM
Reg
Reg
IM
DM
Reg
IM
CC 6
CC 8
CC 9
Reg
DM
Reg
IM
CC 7
Reg
DM
Reg
Reg
DM
Reg
Saltos condicionales en la
pipa

¿Asumir que no se producirán?
 Cuando no acertemos habrá que vaciar la pipa.

¿Observar los condicionales a ver si en el
pasado se produjo el salto?
 Branch target buffer (BTB).

Más trucos con los condicionales:
 Branch delay slot
 La instrucción que sigue al condicional se ejecuta
siempre.
 Acortar las fases de un salto
 Menos instrucciones que descartar si el salto se produce.
Branch delay slot
a. From before
add $s1, $s2, $s3
if $s2 = 0 then
Delay slot
b. From target
sub $t4, $t5, $t6
…
c. From fall through
add $s1, $s2, $s3
if $s1 = 0 then
add $s1, $s2, $s3
Delay slot
if $s1 = 0 then
Delay slot
Becomes
Becomes
sub $t4, $t5, $t6
Becomes
add $s1, $s2, $s3
if $s1 = 0 then
if $s2 = 0 then
add $s1, $s2, $s3
add $s1, $s2, $s3
if $s1 = 0 then
sub $t4, $t5, $t6
sub $t4, $t5, $t6
Excepciones y pipelining

Las excepciones tienen lugar con la pipa llena
de instrucciones
 ¿Cómo afecta esto al resto de instrucciones que están
en el medio?



¿Vaciar la pipa?
A veces es tan complicado saber la instrucción
origen de la excepción que las excepciones se
manejan con imprecisión.
Peticiones de i/o, invocación de servicios del SO,
instrucción no definida, overflow, fallo h/w.
Procesadores
superescalares.

Superescalar
Comenzar mas de una instrucción en
cada ciclo de reloj.
El procesador puede planificar la
ejecución de código para que resulte
más eficiente -“al vuelo”.
Ejecución especulativa de
condicionales sujeta a predicción de
saltos.
Descargar

Fmt. ppt. - ¡Bienvenido a paloalto.unileon.es!