cap. 6: pipelining. encauzamiento encauzamiento de procesadores normalmente traducido como...

21
Cap. 6: Pipelining. Encauzamiento 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.

Upload: luis-miguel-diaz-rico

Post on 24-Jan-2016

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Cap. 6: Pipelining.

EncauzamientoEncauzamiento de procesadoresNormalmente 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.

Page 2: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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?

Page 3: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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.

Page 4: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Estructuras básicas: Unidad de memoria dividida en datos e instrucciones

MIPS

PC

Memoria de datoslw $t1, 0($t0)lw $t2, 4($t0)add $t3, $t1, $t2sw $t3, 12($t0)lw $t4, 8($t0)add $t5, $t1, $t4sw $t5, 16($t0)...

Memoria de instrucciones

IR

InstrucciónRF Dato

0x001010000x000000000x00ff00000xffffff000x000000000xffffffff...

Clk

Page 5: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Estructuras básicas

Cola prioritaria: Las instrucciones

se ejecutan en su orden natural

5 etapas La mejora

productividad obtenida tiende a ser x5.

Pero, surgen conflictos entre las instrucciones

Estructurales De datos De control

MIPSPC

lw $t1, 0($t0)lw $t2, 4($t0)add $t3, $t1, $t2sw $t3, 12($t0)lw $t4, 8($t0)add $t5, $t1, $t4sw $t5, 16($t0)...

Memoria de instrucciones

Instrucción

Clk

IF ID EX MEM WB

Cola de instrucciones

Page 6: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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

Page 7: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

La ruta de datos uniciclo encauzada

Instructionmemory

Address

4

32

0

Add Addresult

Shiftleft 2

Instruction

Mux

0

1

Add

PC

0Writedata

Mux

1Registers

Readdata 1

Readdata 2

Readregister 1

Readregister 2

16Sign

extend

Writeregister

Writedata

ReaddataAddress

Datamemory

1

ALUresult

Mux

ALUZero

IF: Instruction fetch ID: Instruction decode/register file read

EX: Execute/address calculation

MEM: Memory access WB: Write back

Page 8: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Ejejmplo de ejecución encauzada

¿Ves un “bug” en este diseño?

Este computador no es funcionalmente equivalente al computador uniciclo conocido

¿Cómo arreglamos el “bug”?

IM Reg DM RegALU

IM Reg DM RegALU

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7

Time (in clock cycles)

lw $2, 200($0)

lw $3, 300($0)

Programexecutionorder(in instructions)

lw $1, 100($0) IM Reg DM RegALU

Page 9: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Solución al “bug” anterior

Instructionmemory

Address

4

32

0

Add Addresult

Shiftleft 2

Inst

ruct

ion

IF/ID EX/MEM MEM/WB

Mux

0

1

Add

PC

0Writedata

Mux

1Registers

Readdata 1

Readdata 2

Readregister 1

Readregister 2

16Sign

extend

Writeregister

Writedata

Readdata

1

ALUresult

Mux

ALUZero

ID/EX

Datamemory

Address

Etapas de la pipa desacopladas entre sí mediante registros de pipa:

Deben ser de suficiente ancho

128, 97, 64, ... 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?

Page 10: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Registros inter-fase:La instrucción “conserva” el registro de destino

para usarlo en su 5ª fase

Instructionmemory

Address

4

32

0

Add Addresult

Shiftleft 2

Inst

ruct

ion

IF/ID EX/MEM MEM/WB

Mux

0

1

Add

PC

0

Address

Writedata

Mux

1Registers

Readdata 1

Readdata 2

Readregister 1

Readregister 2

16Sign

extend

Writeregister

Writedata

Readdata

Datamemory

1

ALUresult

Mux

ALUZero

ID/EX

•A medida que una instrucciónprogresa en suejecución, lleva consigo la información necesariapara su ejecucióncompleta.

•Esta informaciónse pasa de una fase a la siguiente,a través de los registros inter-fase

Page 11: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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...

Page 12: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Detección de conflictos entre instrucciones.

IM Reg

IM Reg

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

sub $2, $1, $3

Programexecutionorder(in instructions)

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2:

DM Reg

Reg

Reg

Reg

DM

Page 13: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Adelantamiento de resultados.

(Forwarding)

IM Reg

IM Reg

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Time (in clock cycles)

sub $2, $1, $3

Programexecution order(in instructions)

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2 :

DM Reg

Reg

Reg

Reg

X X X – 20 X X X X XValue of EX/MEM :X X X X – 20 X X X XValue of MEM/WB :

DM

Page 14: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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)

Page 15: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Pipa detenida: Reg/load.

lw $2, 20($1)

Programexecutionorder(in instructions)

and $4, $2, $5

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

Reg

IM

Reg

Reg

IM DM

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6Time (in clock cycles)

IM Reg DM RegIM

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9 CC 10

DM Reg

RegReg

Reg

bubble

Page 16: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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:

Page 17: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Vaciado de la pipa debido a un salto condicional

ejecutado

Reg

Reg

CC 1

Time (in clock cycles)

40 beq $1, $3, 7

Programexecutionorder(in instructions)

IM Reg

IM DM

IM DM

IM DM

DM

DM Reg

Reg Reg

Reg

Reg

RegIM

44 and $12, $2, $5

48 or $13, $6, $2

52 add $14, $2, $2

72 lw $4, 50($7)

CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

Reg

Page 18: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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.

Page 19: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

Branch delay slot

a. From before b. From target c. From fall through

sub $t4, $t5, $t6

add $s1, $s2, $s3

if $s1 = 0 then

add $s1, $s2, $s3

if $s1 = 0 then

add $s1, $s2, $s3

if $s1 = 0 then

sub $t4, $t5, $t6add $s1, $s2, $s3

if $s1 = 0 then

sub $t4, $t5, $t6

add $s1, $s2, $s3

if $s2 = 0 then

BecomesBecomesBecomes

Delay slot

Delay slot

Delay slot

sub $t4, $t5, $t6

if $s2 = 0 then

add $s1, $s2, $s3

Page 20: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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.

Page 21: Cap. 6: Pipelining. Encauzamiento Encauzamiento de procesadores Normalmente traducido como segmentación. Una técnica que mejora ostensiblemente la productividad

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.