SEGMENTACIÓN DEL CAUCE

50
3. SEGMENTACIÓN DEL CAUCE 1

description

SEGMENTACIÓN DEL CAUCE. SEGMENTACIÓN DEL CAUCE. Conceptos básicos Etapas del MIPS64 Riesgos Operaciones muticiclo. SEGMENTACIÓN DEL CAUCE. Conceptos básicos. 3. Conceptos básicos. Ciclo de Instrucción. Acceso a Memoria (PC) Actualización PC (+4). Extracción de la instrucción. - PowerPoint PPT Presentation

Transcript of SEGMENTACIÓN DEL CAUCE

Page 1: SEGMENTACIÓN DEL CAUCE

3. SEGMENTACIÓN DEL CAUCE

1

Page 2: SEGMENTACIÓN DEL CAUCE

SEGMENTACIÓN DEL CAUCE

2

1.1. Conceptos básicosConceptos básicos

2.2. Etapas del MIPS64Etapas del MIPS64

3.3. RiesgosRiesgos

4.4. Operaciones muticicloOperaciones muticiclo

Page 3: SEGMENTACIÓN DEL CAUCE

1. Conceptos básicos

3

SEGMENTACIÓN DEL CAUCE

Page 4: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

Segmentación

Ciclo de Instrucción

Extracción de la instrucción

Decodificación / Lectura Registros

Ejecución

Acceso a Memoria

Escritura de Registros

• Acceso a Memoria (PC)

• Actualización PC (+4)

• Lectura de operandos (registros)

• Comprobación de saltos

• Cálculo dirección efectiva

• Operación aritmética

• Extensión de signo

• Lectura o escritura

• Escritura del resultado (registro)

4

Page 5: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

Segmentación

Ciclo de InstrucciónAlternativas de implementación: UN ÚNICO CICLO

– Todas las instrucciones utilizan para su ejecución un único ciclo de reloj

– CPI (Clocks Per Instruction) = 1– La duración del ciclo de reloj viene determinada por la instrucción

más compleja de ejecutar– Aunque es un alternativa correcta es ineficiente

Instrucción 1 Instrucción 2 Instrucción 3

Ciclo Ciclo Ciclo

5

Page 6: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

Segmentación

– No todas las instrucciones pasan por todas las fases– El ciclo de reloj se ajusta a la duración de la fase más larga– CPI (Clocks Per Instruction) depende de las instrucciones y de su

frecuencia de aparición en los programas– Cada tipo de instrucción tiene asociada una duración (nº ciclos)– Por ejemplo (suponiendo que cada fase dura 1 ciclo):

• La instrucción branch requiere 2 ciclos (F y D)• load 5 ciclos (F, D, E, M, y W)• Store 4 ciclos (F, D, E,y M)

Ciclo de InstrucciónAlternativas de implementación: VARIOS CICLOS

Instrucción 1 Instrucción 2 Instrucción 3

Ciclo

6

Page 7: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

7Segmentación

Ciclo de InstrucciónDeterminar el CPI de una arquitectura

Instrucción Nº Ciclos Frecuencia

load 5 20%

store 4 10%

branch 2 25%

aritméticas 4 45%

CPI = 5*0,2 + 4*0,1 + 2*0,25 + 4*0,45 = 3,7

Page 8: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

• Reduciendo el ciclo de reloj • Reduciendo el CPI

– En arquitecturas con más de un ciclo de reloj por instrucción– El CPI ya es igual a 1 en arquitecturas de un único ciclo

• O … reduciendo ambos

8Segmentación

¿Cómo podemos aumentar las prestaciones de los procesadores?

¿Alternativas?

• Circuitos más rápidos, pero ¿precio? ¿limites físicos? …• Explotar la concurrencia a nivel del procesador: Arquitecturas Paralelas• Explotar el paralelismo a nivel de las instrucciones: SEGMENTACIÓN

Page 9: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

• Técnica que permite solapar en el tiempo la ejecución de varias instrucciones

• La idea está tomada del concepto “cadena de montaje”

• La ejecución de la instrucción se divide en etapas de igual duración (ciclo de reloj)

• La duración del ciclo de reloj lo fija la etapa más “lenta”

• Cada etapa dispone de recursos (hardware) para realizar su cometido

• No visible al programador

• Todas las instrucciones pasan por todas las etapas

9Segmentación

SEGMENTACIÓN

Tiempo

ciclo

F E

F E

F E

F E

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Page 10: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

10Segmentación

SEGMENTACIÓN Mejoras obtenidas

Productividad: nº de instrucciones finalizadas por unidad de tiempo

T instrucción: Duración de la ejecución de la instrucción

Ciclo Reloj: Lo fijan la duración de las etapas, generalmente toma el valor 1

Page 11: SEGMENTACIÓN DEL CAUCE

Conceptos básicos

11Segmentación

Rendimiento SpeedUp = Tiempo Medio SIN segmentación

Tiempo Medio CON segmentación= Nº Etapas

En condiciones ideales CPI = 1 En cada ciclo de reloj finaliza una instrucción (cadena de montaje) En ejecución tantas instrucciones como nº de etapas

Rendimiento: Ejemplo

Procesador NO SEGMENTADO• Ciclo Reloj = 1 ns.• Inst. aritm. 4 ciclos• Inst salto y mem. 5 ciclos

Programa formado por:• 40% inst. aritm.• 20 % inst. Salto• 40 % inst. mem.

Tiempo Medio Ejecución NO SEGMENTADO = (0,4+0,2)*5 + 0,4*4)= 4,6 nsTiempo Medio Ejecución SEGMENTADO = 1 ns + 0,2 ns (retardo por etapa) = 1,2 ns

SpeedUp = 4,6 / 1.2 = 3,83 veces

Procesador SEGMENTADO• 5 etapas• Añadir 0,2 ns. por etapa

Page 12: SEGMENTACIÓN DEL CAUCE

2. Etapas del MIPS64

12

SEGMENTACIÓN DEL CAUCE

Page 13: SEGMENTACIÓN DEL CAUCE

Etapas del MIPS64

Cauce de 5 etapas (F, D, E, M y W) Únicamente para datos enteros 1 ciclo de reloj por etapa Saltos no optimizados

13Segmentación

Extracción / Fetch (F)

IR ← MEM [PC]NPC ← PC + 4 # El tamaño de la instrucción es 4 octetos

Decodificación (D)

A ← Registros [rs]B ← Registros [rt] # Revisar el formato de las instr.Inm ← extensión_signo (campo Inm 16 bits)

Page 14: SEGMENTACIÓN DEL CAUCE

Etapas del MIPS64

14Segmentación

Ejecución (E)

• Referencia a memoria (tipo I)ALUoutput ← A + Inm

• Instrucción aritmética tipo RALUoutput ← A op B

• Instrucción aritmética tipo IALUoutput ← A op Inm

• Salto (tipo J)ALUoutput ← NPC + Inm * 4Cond ← ( A = 0) # boolean

Memoria (M)

• Acceso a memoriaLMD ← MEM [ALUoutput] # load MEM [ALUoutput] ← B # store• SaltoIf (Cond) then PC ← ALUoutput

Write-Back(W)

• Instrucción aritmética tipo RRegistros[rd] ← ALUoutput

• Instrucción aritmética tipo IRegistros[rt] ← ALUoutput

• Acceso a memoria (load)Registros[rt] ← LMD

Page 15: SEGMENTACIÓN DEL CAUCE

Etapas del MIPS64

15Segmentación

Mem

oria

de

Inst

rucc

ione

s

Reg

istr

os

Mem

oria

de

Dat

os

PC

Inm

LMDA

LUou

tputA

B

NP

C

IR

Zer

o?

Con

d

MU

X

MU

X

MU

X

MU

X

EX

T S

ign

o

ALU

Add

4

Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W)

16

32

Page 16: SEGMENTACIÓN DEL CAUCE

Etapas del MIPS64

• En condiciones ideales CPI = 1• La duración de las instrucciones es 5 ciclos• Dispone de 2 memorias (instrucciones y datos)• Cada etapa tiene dos subciclos

– Lectura registros en el 2º de la etapa D– Escritura de registros en el 1º de la etapa W

• En las instrucciones de salto la actualización de PC se hace en M– Necesita mejorarse este esquema

• Cada etapa tiene una serie de registros para comunicarse información (F/D, D/E, E/M y M/W)

• Faltan las señales del control del cauce

16Segmentación

Características de la implementación

Page 17: SEGMENTACIÓN DEL CAUCE

3. Riesgos

17

SEGMENTACIÓN DEL CAUCE

Page 18: SEGMENTACIÓN DEL CAUCE

Riesgos

18Segmentación

¿Por qué el CPI es mayor que 1?

Page 19: SEGMENTACIÓN DEL CAUCE

Riesgos Estructurales

• Falta de recursos en el procesador:– accesos a una única memoria o ALU

• Unidades funcionales no segmentadas– Las instrucciones se detienen más de 1 ciclo en ellas

19Segmentación

Casos Típicos

F E

F E

F E

F E

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Acceso simultáneoa memoria

Acceso simultáneo a la ALU

Page 20: SEGMENTACIÓN DEL CAUCE

Riesgos Estructurales

20Segmentación

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

• Falta de recursos en el procesador:– acceso al banco de registros de una sola puerta

Casos Típicos

F E

F E

F E

F E

Escritura 1º subcicloLectura 2º subciclo

Page 21: SEGMENTACIÓN DEL CAUCE

Riesgos Estructurales

21Segmentación

• Falta de recursos en el procesador:– Acceso a memoria: ejecución instrucciones multiciclo

Casos Típicos

mul.d F3,F2,F1add.d F3,F4,F5 F E+

F

Dos unidades funcionales• Multiplicación: 3 ciclos• Suma: 2 ciclos

E* E* E*

E+

La instrucción de mayor latencia pasa primero a la

etapa de memoria (M)

F E+ E+ E+add.d F3,F4,F5

Page 22: SEGMENTACIÓN DEL CAUCE

Riesgos de Datos

22Segmentación

Read After Write (RAW)

daddi R1,R0,10daddi R2,R1,20daddi R3,R1,30

F E

F E

F E

Escritura de R1

Lectura de R1 Se lee un valor de R1 incorrecto

Read After Read (RAR)

daddi R1,R0,10daddi R2,R0,20daddi R3,R0,30

F E

F E

F E

No es un riesgo

Page 23: SEGMENTACIÓN DEL CAUCE

Riesgos de Datos

23Segmentación

Write After Read (WAR)

daddi R2,R1,10dsub R1,R3,R5and R3,R4,R6

dsub R1,R3,R5 daddi R2,R1,10and R3,R4,R6

Ejecución

Se da con ejecución fuera de orden (planificación

dinámica)

Orden CORRECTO: Lec. R1, Esc. R2, Lec. R3, Lec. R5, Esc. R1

Orden INCORRECTO: Lec. R3, Lec. R5, Esc. R1, Lec. R1, Esc. R2

Page 24: SEGMENTACIÓN DEL CAUCE

Riesgos de Datos

24Segmentación

Write After Write(WAW)

mul.d F3,F2,F1add.d F3,F4,F5 F E+

F E*

Dos unidades funcionales• Multiplicación: 4 ciclos• Suma: 2 ciclos

E* E* E*

E+

Se da con ejecución fuera de orden (planificación dinámica) y

en instrucciones multiciclo

Incorrecto

Page 25: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

25Segmentación

MIPS64

MIPS64

Page 26: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

26Segmentación

• La implementa el compilador, sin intervención del procesador• Retrasar la etapa D (lectura) de la instrucción con el riesgo

Reordenación

and R6,R8,R9daddi R1,R0,10daddi R2,R1,20dsub R3,R4,R5

F E

F E

F E

F E

Op

ció

n 1

No siempre es posible una reordenación de

código

daddi R1,R0,10and R6,R8,R9dsub R3,R4,R5 daddi R2,R1,20

Reorden

ación

Nuevo R1

Page 27: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

27Segmentación

Inserción de NOPs

daddi R1,R0,10nopnopdaddi R2,R1,20

F E

F E

F E

F E

Nuevo R1

Con instrucciones multiciclo es necesario insertar más NOP

Problemas:•Tamaño código•Ineficiente

Op

ció

n 2

Page 28: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

28Segmentación

• La implementa el procesador (más complicado)• Para la instrucción (riesgo) en la etapa D (lectura) del cauce

Detección y parada de cauce

daddi R1,R0,10daddi R2,R1,20dsub R5,R5,R6

F E

F E

F EF F

El tiempo de ejecución es idéntico al de la solución con inserción de NOPs

MIPS64

Page 29: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

29Segmentación

Detección y anticipación

daddi R1,R0,10

daddi R2,R1,20

dsub R5,R2,R6

F E

• Técnica para pasar información entre diferentes etapas

F E

F E

nuevo R1

nuevo R2

Lectura incorrecta de registros

Elimina las paradas. ¿Pero que ocurre con load?

MIPS64

Page 30: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

30Segmentación

Detección y anticipación

• Anticipación con instrucciones load (lectura de memoria)

ld R1,0(R0)

daddi R2,R1,20

dsub R5,R2,R6

F E

nuevo R1

F E

F

nuevo R2

Con instrucciones load no se eliminan por completo las paradas

MIPS64

EF

Page 31: SEGMENTACIÓN DEL CAUCE

Riesgos de datos

31Segmentación

Tipos de adelantamiento

E

E1 2E E3

4 5

daddi R1,R0,10daddi R2,R1,20

daddi R1,R0,10sd R1,0(R15)

daddi R1,R2,10beq R1,R0,ETIQ

ld R1,0(R10)sd R1,10(R8)

ld R1,10(R8)beq R1,R0,ETIQ

MIPS64

6

ld R1,10(R8)daddi R2,R1,5

Page 32: SEGMENTACIÓN DEL CAUCE

Riesgos de control

• Ante un salto hay que parar hasta conocer la dirección destino• Provocan paradas del cauce (3 ciclos)• Degradan el rendimiento entre un 10% y 30% dependiendo de la

frecuencia de los saltos• Se puede reducir la penalización a 1 ciclo

32Segmentación

beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)

ETIQ: dsub R5,R5,R6

F E

El problema

F E

F E

o

Salto NO TOMADO

Salto TOMADO

Page 33: SEGMENTACIÓN DEL CAUCE

Riesgos de control

33Segmentación

Mem

oria

de

Inst

rucc

ione

s

Reg

istr

os

Mem

oria

de

Dat

os

PC

Inm

LMDA

LUou

tputA

B

IR

Zer

o?

MU

X

MU

X

MU

X

MU

X

EX

T S

ign

o

ALU

Add

4

Extracción (F) Decodificación (D) Ejecución (E) Memoria (M) Write (W)

16

32

Add

Una Mejora: Hacer efectivos los saltos en D

Page 34: SEGMENTACIÓN DEL CAUCE

Riesgos de control

34Segmentación

beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)

ETIQ: dsub R5,R5,R6

F E

F E

F E

o

Salto TOMADO

Salto NO TOMADO

Una Mejora: Hacer efectivos los saltos en D

• Se reduce la penalización a 1 ciclo (parada)

¿Es posible reducir todavía más la penalización?

Page 35: SEGMENTACIÓN DEL CAUCE

Riesgos de control

• Cada vez que aparezca un salto evitar la parada• Utilizar un mecanismo de predicción de salto:

– estático: Tomar el salto o no– estático + compilador: predicción en el código de operación (1 bit)– dinámico: el procesador tiene en cuenta la “historia” del salto

35Segmentación

Una Mejora más: Predecir el sentido del salto

Predicción estática NO TOMAR EL SALTO

MIPS64

beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)

ETIQ: dsub R5,R5,R6

F E

F E

F E

R1 ≠ R0 → ACIERTO

Continua con la instrucción siguiente

Page 36: SEGMENTACIÓN DEL CAUCE

Riesgos de control

• En MIPS 64 no tiene sentido predecir “Tomar el salto”

36Segmentación

Predicción estática NO TOMAR EL SALTO

beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)

ETIQ: dsub R5,R5,R6and R10,R11,R12

F E

F

F E

R1 = R0 → FALLOAbortar la instrucción. Penalización de 1 ciclo

F E

beq R1,R0,ETIQdaddi R2,R2,20ld R8,10(R0)

ETIQ: dsub R5,R5,R6and R10,R11,R12

F E

R1 = R0 → ACIERTO

F E

F E

La dirección del salto se conoce al final de D

Page 37: SEGMENTACIÓN DEL CAUCE

Riesgos de control

• Implementado por:– el procesador retardando el efecto del salto– y el compilador insertando instrucciones que se ejecutan siempre

37Segmentación

SALTO RETARDADO

beq R1,R0,ETIQdaddi r0,r0,0daddi R2,R2,20

ETIQ: dsub R5,R5,R6

F E

F E

F E

R1 ≠ R0 → ACIERTO

beq R1,R0,ETIQdaddi r0,r0,0daddi R2,R2,20

ETIQ: dsub R5,R5,R6

F E

F E

F E

R1 = R0 → FALLO

MIPS64

Page 38: SEGMENTACIÓN DEL CAUCE

Riesgos de control

• En MIPS64 el salto retardado es de 1 hueco• Si el cálculo de la dirección efectiva se realizase en la etapa M, los huecos

serían 3.• Cuándo no se encuentran instrucciones para los huecos se insertan NOP´s

38Segmentación

SALTO RETARDADO

dadd R1,R2,R3IF R2 = 0 HuecoENDIF

IF R2 = 0 dadd R1,R2,R3ENDIF

dsub R4,R5,R6dadd R1,R2,R3IF R1 = 0 HuecoENDIF

dadd R1,R2,R3IF R1 = 0 dsub R4,R5,R6 ENDIF

dadd R1,R2,R3 IF R1 = 0 Hueco or R7,R8,R9ENDIFsub R4,R5,R6

dadd R1,R2,R3 IF R1 = 0 sub R4,R5,R6 or R7,R8,R9ENDIF

Ejemplos de reordenación de código

MIPS64

Reordenación (compilador)

Page 39: SEGMENTACIÓN DEL CAUCE

4. Operaciones multiciclo

39

SEGMENTACIÓN DEL CAUCE

Page 40: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

• Nuestro cauce no soporta operaciones en coma flotante– Sumas, multiplicaciones y divisiones es imposible que terminen en 1 o 2

ciclos– Las instrucciones en coma flotante pueden ir desde una negación (un

par de ciclos) hasta una raíz cuadrada (más de un centenar)

• Soluciones

1. Adaptar el ciclo de reloj a la instrucción más lenta

2. Repetir la etapa EX tantas veces como sea necesario

3. Añadir nuevas unidades funcionales (segmentadas o no)

• Las dos primeras soluciones no son prácticas (rendimiento)

40Segmentación

Instrucciones en coma flotante

Page 41: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

41Segmentación

Nuevo cauce con soporte en coma flotante

F D

E

DIV

Unidad de división FP/IntegerNO SEGMENTADA

Unidad de multiplicación FP/Integer

Unidad de suma FP

Unidad de enteros

Page 42: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

42Segmentación

E

DIV

Operaciones enteras con ALU, Load, Store y Saltos

Sumas, Restas y Conversiones en FP

Multiplicación de Enteros y FP

División de Enteros y FP

Page 43: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

43Segmentación

Riesgos Estructurales

Acceso a la U.F. de división:

div.d F1,F2,F3div.d F4,F5,F6

F D /0 M W/1 /2 /22 /23. . . .

div.d F1,F2,F3div.d F4,F5,F6

F D /0 M W/1 /2 /22

F D /0 /1 /2

/23

D D D D

. . .

.

. . .

.

. . .

.

F D /0 M W/1 /2 /22 /23. . . .

Solución: Parar en ID.

Page 44: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

44Segmentación

Riesgos Estructurales

Acceso a memoria o al banco de registros:

add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)

F D +0 M W+1 +2

F D E M W

+3

F D E M W

F D E M W

Page 45: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

45Segmentación

Riesgos Estructurales

Soluciones:

Detectar el problema al intentar entrar en MEM o WB y detener a la instrucción de menor latencia.

Detectar y detener en ID.

La solución adoptada por MIPS64 es la última

add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)

F D +0 M W+1 +2

F D E M W

+3

F D E M W

F D E E WM

add.d F1,F2,F3daddi R1,R2,5ld R3,10(R0)ld R4,20(R0)

F D +0 M W+1 +2

F D E M W

+3

F D E M W

F D E WMD

Page 46: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

46Segmentación

¡Se dan con mayor frecuencia!Riesgos RAW

add.d F1,F2,F3nopnops.d F1,10(R4)

F D +0 M W

F D E M W

F D E M W

F D E M W

dadd R1,R2,R3nopnopsd R1,10(R4)

F D E M W

F D E M W

F D E M W

F D E M W

+1 +2 +3

Sin problemas

Sin multiciclo...

Con multiciclo...

Hay problemas

La solución adoptada por MIPS64 es parar en ID

Page 47: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

47Segmentación

Riesgos WAW

mul.d F1,F2,F3add.d F1,F4,F5

F D *0 M W*1 *2 *3

F D +0 M W+1 +2 +3

*4 *5 *6

Si hay una lectura del registro entre ambas instrucciones, desaparece el riesgo.

mul.d F1,F2,F3sub.d F6,F7,F1add.d F1,F4,F5

F D *0 M W*1 *2 *3

F D -0 M W-1 -2 -3

*4 *5 *6

F D +0 M W+1 +2 +3

D D D D D D

F F F F F F

Page 48: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

48Segmentación

Riesgos WAW

Soluciones:

La primera instrucción no escribe el resultado.

mul.d F1,F2,F3add.d F1,F4,F5

F D *0 M W*1 *2 *3

F D +0 M W+1 +2 +3

*4 *5 *6

Detención en ID hasta que la anterior entre en MEM.

mul.d F1,F2,F3add.d F1,F4,F5

F D *0 M W*1 *2 *3

F D +0 M W+1 +2 +3

*4 *5 *6

D D D D D D

La solución adoptada por MIPS64 es la última

Page 49: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

49Segmentación

Riesgos WAR

Los registros se leen en ID

mul.d F1,F2,F3add.d F3,F4,F5

F D *0 M W*1 *2 *3

F D +0 M W+1 +2 +3

*4 *5 *6

¡ No se producen !

Page 50: SEGMENTACIÓN DEL CAUCE

Operaciones multiciclo

50Segmentación

Riesgos de Control

Se presentan los mismos casos, pero hay que tener en cuenta que, si se usa salto retardado, no tiene sentido rellenar el hueco con una instrucción multiciclo.

Interrupciones

¡ Se complica su tratamiento !