Вы находитесь на странице: 1из 118

GRUPO DE ARQUITECTURA

DE COMPUTADORES

PARALELISMO A NIVEL DE
INSTRUCCIN
ARQUITECTURA E INGENIERA DE
COMPUTADORES
TEMA2

NDICE (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de


almacenamiento
Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado

Prediccin dinmica de saltos

Especulacin
AEC: TEMA2

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Rendimiento de un procesador

Medida de rendimiento de un procesador:

TCPU = Tiempo de CPU requerido para completar un tarea especfica


C = Nmero de ciclos de reloj de CPU para ejecutar una tarea
T = Duracin de un ciclo de reloj (velocidad de reloj

TCPU = C x T
CPI = Nmero medio de ciclos por instruccin
I = Nmero de instrucciones por tarea

CPI = C/I => TCPU = CPI x T x I

Disminucin de CPI, T o I => disminucin TCPU => Aumento del


rendimiento

Problema: Los tres factores no son independientes => las tcnicas


utilizadas para conseguir disminuir uno de estos 3 factores pueden
provocar el aumento de alguno de los otros
AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Rendimiento de un procesador (II)

El rendimiento de la CPU depende de tres factores:

El cambio de uno de ellos afecta a los dems

Cada factor depende de unas tecnologas bsicas interdependientes


(1) Duracin del ciclo de reloj: Tecnologa hardware, organizacin
(2) CPI: Organizacin, arquitectura a nivel de lenguaje mquina
(3) Recuento de instrucciones: Arquitectura a nivel de lenguaje
mquina, tecnologa de compiladores

Aplicando solamente segmentacin, en el caso ideal:

Lmite inferior CPI = 1

Objetivo del tema: tcnicas para la mejora del rendimiento de la CPU,


haciendo nfasis en la reduccin del CPI.
AEC: TEMA2

NDICE (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Mejora del rendimiento : evolucin

Objetivo: mejorar el rendimiento de un procesador que


se comporta conceptualmente como muestra la figura.

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Una primera mejora: Segmentacin(I)

Segmentacin => disminucin CPI, y de ciclo de proc. t


AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Una primera mejora: Segmentacin(II)

Las fases de ejecucin de una instruccin no necesitan


necesariamente la misma cantidad de tiempo
Durante el desarrollo de los primeros microprocesadores,
dada la tecnologa disponible:

Tiempos muy elevados para realizar la llamada de


instrucciones (fetch) frente al tiempo de decodificacin y
ejecucin
Poco solapamiento entre instrucciones
La mejora del rendimiento debida a la segmentacin se ve
reducida

AEC: TEMA2

10

Planteamiento utilizado en las


arquitecturas CISC (I)

Codificacin muy densa de las instrucciones

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Aumento del nmero medio de ciclos para decodificar y ejecutar


una instruccin
Aumento del solapamiento del tiempo de llamada con los de
decodificacin y ejecucin

Utilizacin de instrucciones de mltiples ciclos

Disminucin nmero total de instrucciones


Reduccin de tiempo de ejecucin total al reducirse el nmero de
llamadas
AEC: TEMA2

11

Evolucin de la tecnologa de
memorias y empaquetamiento

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Reduccin del tiempo de llamada de las instrucciones

El factor limitante del rendimiento son ahora los tiempos de


decodificacin y ejecucin
El nmero de instrucciones no afecta tanto al rendimiento como
el nmero medio de ciclos requeridos para ejecutar una
instruccin
AEC: TEMA2

12

Planteamiento utilizado en las


arquitecturas RISC

Utilizacin de instrucciones simples

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Reduccin del nmero de ciclos para ejecutar una


instruccin

Limitacin: no es posible conseguir un nmero medio de ciclos


por instruccin inferior a la unidad
AEC: TEMA2

13

Soluciones avanzadas para la


mejora del rendimiento (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

En funcin del factor componente del rendimiento que se pretende reducir obtenemos
otras tantas soluciones arquitectnicas.

Reduccin del ciclo reloj (T): Procesadores supersegmentados

Las etapas principales de un procesador supersegmentado se dividen a su vez en


subetapas

Procesador supersegmentado de grado n: puede iniciar operaciones con una


frecuencia n veces la correspondiente al procesador segmentado base

AEC: TEMA2

14

Soluciones avanzadas para la


mejora del rendimiento(II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Reduccin del nmero medio de ciclos por instruccin (CPI):


Procesadores superescalares

Se incrementa el nmero de pipelines de instrucciones para permitir la


ejecucin de ms de una instruccin por ciclo de reloj

AEC: TEMA2

15

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Ejemplo procesador superescalar

Procesador superescalar de grado 2:

AEC: TEMA2

16

Comparacin superescalar supersegmentado

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

17

Soluciones avanzadas para la


mejora del rendimiento(III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Reduccin del nmero de instrucciones(I): Procesadores de

palabra-instruccin muy larga (Very-Long-Instruction-Word, VLIW)

Una nica instruccin en un VLIW especifica mltiples operaciones

independientes entre s.

Se utilizan mltiples unidades funcionales independiente.

Las operaciones especificadas por una nica instruccin se ejecutan

simultneamente sobre estas unidades funcionales.


AEC: TEMA2

18

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Procesadores VLIW
El anlisis de dependencias en tiempo de compilacin
Muchas operaciones por instruccin ( IA64 packet, Tramsmeta molecula)
Todas las operaciones de una instruccin se ejecutan en paralelo
Instrucciones con muchos bits
Muchas operaciones vacas (NOP)
IP
Instruccin: Incluye varias instrucciones
convencionales de tres operandos
una por ALU
Bloque de registros,
3 puertas por ALU

AEC: TEMA2

19

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Microcesadores comerciales (I)


Evolucin de la Familia Intel
Ao/Mes

asf

Clock =1/tc.
108 KHz.

Transistors.

Micras

2300

10

I4004

1971/11

I8080
I8086

1974/04
1978/06

2 MHz.
10 MHz.

6000
29000

6
3

I80286
I486DX

1982/02
1989/04

12 MHz.
25 MHz.

0.13 m.
1.2 m.

1.50
1

Intel DX2
Pentium

1992/03
1993/03

100 MHz.
60 MHz.

1.6 m
3.1 m

0.8
0.8

Pentium Pro
Pentium II

1995/11
1998/

200 MHz.
450 MHz

5.5 m
7.5 m.

0.35
0.25

Pentium III
P4

2000/01
2000/09

1000 MHz.
1400 MHz.

28 m.
42 m.

0.18
0.18

PEE (2cores)
Core Du o

2005/09
2006

3200 MHz
2160 Mhz

230 m.
152 m

0.09
0.65

Core 2 Duo

2007

2930 Mhz

192m

0,65

AEC: TEMA2

20

Microcesadores comerciales
(hace 5 aos)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

asf

AEC: TEMA2

21

Microcesadores comerciales
(2010)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

asf

AEC: TEMA2

22

NDICE (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

23

Aumento del paralelismo a


nivel de instruccin (I)

Objetivos:

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Obtencin del mximo solapamiento entre instrucciones en la segmentacin


Obtencin de mxima simultaneidad de ejecucin de instrucciones en el caso
superescalar y VLIW

Estrategias:

Planificacin esttica: El compilador es el responsable de planificar el


orden de las instrucciones con objeto de minimizar el nmero de detenciones
debidas a dependencias.

Planificacin esttica bsica

Desenrollamiento de bucles

Software pipelining

Renombre de registros software

Prediccin esttica de saltos

Salto retardado
AEC: TEMA2

24

Aumento del paralelismo a


nivel de instruccin(II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica: Se utiliza hardware adicional

para decir en tiempo de ejecucin el orden de emisin y/o finalizacin


de las instrucciones

Planificacin dinmica con algoritmo de Tomasulo

Renombre de registros hardware

Prediccin dinmica de saltos

Especulacin (tambin puede tener soporte parcial del compilador)

AEC: TEMA2

25

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Revisin: mquina segmentada

Etapas de la mquina segmentada (RISC)


Etapa IF : Llamada de instruccin (Instruction Fetch)

Etapa ID :

Decodificacin de la instruccin
Acceso al fichero de registros

Etapa EX :

Clculo de la direccin efectiva para acceso a memoria


Ejecucin

Clculo del destino de salto

Etapa MEM :

Acceso a memoria
Modificacin PC

Etapa WB :

Escritura del resultado en el fichero de registros (Inst. ALU)

Escritura en el fichero de registros del resultado de una instruccin

de carga (LOAD)
AEC: TEMA2

26

Revisin:Problemas de la
segmentacin -> dependencias (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Dependencias de datos

Ejemplo: ADD R1,R2,R3


SUB R4,R5,R1

Ejecucin segmentada:
ADD R1,R2,R3
SUB R4,R5,R1

IF

--

---

ID EX MEM WB

Dependencias de control

Ejecucin segmentada de un salto condicional:


Inst. salto cond.
Inst tras el salto

IF ID EX MEM WB

IF ID EX MEM WB
IF

--

---

IF ID EX MEM WB

Dependencias de recursos o estructurales

AEC: TEMA2

27

Revisin:Problemas de la
segmentacin -> dependencias (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

AEC: TEMA2

28

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

29

Planificacin software en la
segmentacin

Mediante la planificacin software se intenta buscar secuencias de instrucciones no


relacionadas que puedan ser solapadas en la segmentacin
Supongamos una CPU segmentada en la que, aplicadas las tcnicas hardware que el diseador
ha considerado convenientes, persiste la posibilidad de detencin de una instruccin debido a su
dependencia respecto de otra anterior, tal como muestra esta tabla:

GRUPO DE ARQUITECTURA
DE COMPUTADORES

(*)Latencia en ciclos : nmero de ciclos que debe ser detenida la instruccin destino en el caso de que la
instruccin lanzada a ejecutar en el ciclo anterior sea la instruccin que produce el resultado

Adicionalmente:

Los saltos requieren un retardo de un ciclo de reloj

Es posible la emisin de una instruccin cada ciclo de reloj


AEC: TEMA2

30

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica bsica (I)

Para ilustrar las tcnicas mostradas se propone el bucle ejemplo siguiente:

Bucle de suma de un escalara a un vector de memoria


for (i=1;i<=1000;i++)
x[i] = x [i]+5
Loop: LD F0,0(R1); carga el elemento del vector
ADD F4,F0,F2; suma el escalar de F2
SD 0(R1),F4; almacena el elemento del vector
SUB R1,R1,#8; decrementa el puntero en 8 bytes (palabra doble)
BNEZ R1,LOOP; salta cuando no es cero

Suponemos que el vector comienza en la posicin de memoria 0

El tamao de todas sus instrucciones es de 32 bits, al igual que las direcciones

de memoria y los registros de prposito general.

Los registros para punto flotante son de 64 bits (F)


AEC: TEMA2

31

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica bsica (II)

LD F0,0(R1)

=>

Carga doble long.: F0 M[0+R1]

ADDD F4,F0,F2

=>

Suma en punto flotante: F4 F0+F2

SD 0(R1),F4

=>

Almacenamiento de doble longitud: M[0+R1] F4

SUB R1,R1,#8

=>

Resta: R1 R1-8(byte)

BNEZ R1,LOOP

=>

Salta si es distinto de cero: Si (R1!=0) IC LOOP

AEC: TEMA2

32

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica bsica (III)

Ejecucin del bucle sin planificacin

Loop:

LD

F0,0(R1)

detencin

ADDD F4,F0,F2

detencin

detencin

SD 0(R1),F4

SUB R1,R1,#8

BNEZ

R1,LOOP

detencin

9 ciclos por iteracin


AEC: TEMA2

33

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica bsica(IV)

Ejecucin del bucle planificado

Loop:

LD
F0,0(R1)
detencin
ADDD F4,F0,F2
SUB R1,R1,#8
BNEZ R1,LOOP
SD 8(R1),F4

1
2
3
4
5
6

; salto retardado
; cambiado a causa del intercambio con SUB

6 ciclos por iteracin

El compilador debe poder determinar la posibilidad de intercambio de


sub y sd : la direccin de sd pasa de ser 0(R1) a 8(R1)
Esto no es trivial en un compilador: en la mayora de los casos
detectara la dependencia entre SD y SUB y rechazara el cambio
AEC: TEMA2

34

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

35

Desenrollamiento de bucles
(loop unrolling)(I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

En el ejemplo anterior cada iteracin requera 6 ciclos: 3 ciclos de operacin real

sobre el vector (LD,ADDD,SD) y 3 ciclos debidos a gastos del bucle (SUB,BNEZ y una detencin).

Podemos eliminar ciclos gastados en el bucle incrementando el nmero de instrucciones

entre las ejecuciones de los saltos del bucle; esta tcnica recibe el nombre de desenrollamiento de bucles.

Loop

LD

F0,0(R1)

ADDD F4,F0,F2
SD

0(R1),F4

LD

F6,-8(R1)

se eliminan SUB & BNEZ

ADDD F8,F6,F2
SD

-8(R1),F8

LD

F10,-16(R1)

se eliminan SUB & BNEZ

ADDD F12,F10,F2
SD
LD

-16(R1),F12
F14,-24(R1)

se eliminan SUB & BNEZ

ADDD F16,F14,F2
SD

-24(R1),F16

SUB

R1,R1,#32

BNEZ R1,LOOP
AEC: TEMA2

36

Desenrollamiento de bucles
(loop unrolling) (II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

El cdigo anterior corresponde al bucle ejemplo desenrollando tres veces (se


mantienen cuatro copias del cuerpo del bucle):

Se supone que inicialmente R1 es un multiplo de 4.


Se han eliminado las operaciones sub y bnez duplicadas durante el
desenrolllamiento.
El bucle desenrollado no est planificado LD necesita 2 ciclos, ADDD
necesita 3 ciclos, el salto 2 ciclos y las instrucciones restantes 1 ciclo:

Cada iteracin del bucle desenrollado requiere 27 ciclos.

Cada uno de los cuatro elementos requiere 6'75 ciclos.

La versin desenrollada del bucle es menos eficiente que la versin


planificada del bucle original.

AEC: TEMA2

37

Desenrollamiento de bucles
(loop unrolling) (III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Veamos una versin desenrollada y planificada:

Cada iteracin del bucle requiere ahora 14 ciclos.

Cada uno de los cuatro elementos requiere 3'5 ciclos.

Loop:

LD

F0,0(R1)

LD

F6,-8(R1)

LD

F10,-16(R1)

LD

F14,-24(R1)

ADDD F4,F0,F2
ADDD F8,F6,F2
ADDD F12,F10,F2
ADDD F16,F14,F2
SD

0(R1),F4

SD

-8(R1),F8

SD

-16(R1),F12

SUB

R1,R1,#32 ;dependencia de salto

BNEZ R1,LOOP
SD

8(R1),F16 ;8-32 = -24


AEC: TEMA2

38

Desenrollamiento de bucles
(loop unrolling) (IV)

La ganancia obtenida mediante la planificacin en el bucle desenrollado (27 <--> 14) es


incluso superior a la obtenida en el bucle original (9 <--> 6):

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Al desenrollar el bucle se descubre ms cdigo susceptible de ser planificado


eficientemente.

Esta transformacin del cdigo en tiempo de compilacin es muy importante al intentar


disminuir el CPI emitiendo instrucciones a elevada frecuencia.

AEC: TEMA2

39

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

40

Planificacin esttica software


superescalar (I)

Otra posibilidad para evitar las detenciones en un diseo superescalar consiste en dotar al
compilador de capacidades de optimizacin del cdigo a ser introducido en la CPU superescalar.
Para ilustrar este tipo de planificacin utilizamos el diseo superescalar siguiente:

Construimos una versin superescalar de 2-emisiones de la arquitectura propuesta en el


apartado de este tema dedicado a planificacin software de la segmentacin.
Las etapas de los dos pipelines son:
1)

IF

2)

ID

Decodificacin de la instruccin

3)

EX

Ejecucin de la instruccin

4)

MEM Carga de un dato desde memoria

5)

WB

Fetch de la instruccin

Almacenamiento del resultado

El primer pipeline se dedica a instrucciones del tipo:


Carga

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Almacenamiento

Salto

Operacin entera de la ALU

El segundo pipeline se dedica de forma exclusiva a:


Instrucciones de operaciones en punto flotante de la ALU

Los ciclos de retardo entre instrucciones que pueden provocar conflictos siguen siendo los
mismos que los de los considerados en la tabla del comienzo de este apartado.
AEC: TEMA2

41

Planificacin esttica software


superescalar (II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Ejemplo de segmentacin superescalar en la arquitectura ejemplo:

La mejora del rendimiento ser verdaderamente eficiente en aquellos


programas con una cantidad respetable de operciones en punto flotante.

AEC: TEMA2

42

Planificacin esttica software


superescalar (III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin superescalar sobre el diseo del ejemplo para un bucle desenrollado:

Para conseguir que no haya ninguna detencin hemos de desenrollar 4 veces el


bucle original obteniendo 5 copias del cuerpo (se supone que R1 es mltiplo de 5).

Cada iteracin requiere 12 ciclos de reloj (16 en la segmentacin ordinaria).

2'4 ciclos por elemento (3'5 en la segmentacin ordinaria)

AEC: TEMA2

43

Planificacin esttica software


superescalar (IV)

El rendimiento del diseo superescalar est delimitado por el equilibrio entre


los clculos enteros y de punto flotante:

GRUPO DE ARQUITECTURA
DE COMPUTADORES

No hay en este ejemplo suficientes instrucciones de punto flotante para


mantener a pleno rendimiento el pipeline de punto flotante.

Resumen:

Diseo segmentado ordinario:

Bucle planificado: 6 ciclos/iteracin


Bucle planificado y desenrollado: 3,5 ciclos/iteracin.

Versin superescalar: 2,5 ciclos/iteracin (esta mejora de 1 ciclo proviene


de la posibilidad de emitir ms de una instruccin por ciclo de reloj en el
diseo superescalar).

AEC: TEMA2

44

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

45

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica VLIW (I)

Sea un procesador VLIW capaz de emitir 2 referencias a memoria, 2 operaciones de punto flotante y
una operacin entera o de salto en cada ciclo de reloj.

Suponer los ciclos de detencin debidos a dependencias entre instrucciones de la tabla utilizada en
los casos anteriores.
Suponer que no existen huecos de retardo de salto.

La tabla muestra el bucle ejemplo utilizado utilizado en los casos anteriores desenrollado y planificado
para ejecutarse sin detenciones sobre la arquitectura VLIW propuesta.

Nota: donde aparece sub R1,R1,#48 es sub R1,R1,#56 y en sd -0(R1),F28 es sd 8(R1),F28

AEC: TEMA2

46

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin esttica VLIW (II)

El bucle se ha desenrollado 6 veces para eliminar las detenciones.

Se proporcionan 7 resultados cada 9 ciclos 1'28 ciclos por resultado.

Se realizan 23 operaciones en 9 ciclos 2'5 operaciones por ciclo.

Pese a que la planificacin ha evitado las detenciones:

Muy complicado conseguir el mximo rendimiento de la arquitectura debido a


la dificultad de mantener todas las unidades funcionales ocupadas en cada
ciclo de reloj.

AEC: TEMA2

47

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software (software pipelining)

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

48

Software pipelining (I)


Idea:
Si las diferentes iteraciones de un bucle son independientes, tomemos instrucciones
de diferentes iteraciones para aumentar el ILP
Reorganiza los bucles de manera que cada instruccin pertenece a una
iteracin diferente
Iteracin 1
Iteracin 2
Iteracin 3

Iteracin 4
Iteracin 5

Iteracin SW
Pipelened

49

Software pipelining (II)


Despus: Software Pipelined
1 SD 0(R1),F4 ; Stores M[i]
2 ADDD F4,F0,F2 ; Adds to M[i-1]
3 LD F0,-16(R1); Loads M[i-2]
4 SUBI
R1,R1,#8
5 BNEZ R1,LOOP
SW Pipeline
overlapped ops

Antes: Unrolled 3 veces


1 LD F0,0(R1)
2 ADDD F4,F0,F2
3 SD 0(R1),F4
4 LD F6,-8(R1)
5 ADDD F8,F6,F2
6 SD -8(R1),F8
7 LD F10,-16(R1)
8 ADDD F12,F10,F2
9 SD -16(R1),F12
10 SUBI
R1,R1,#24
11 BNEZ R1,LOOP

Time
Loop Unrolled

b Loop unrolling simblico


Maximiza la distancia resultado-uso
Menor tamao del cdigo
Llenado y vaciado del pipe solo una vez
50

Time

Software pipelining (III)


F0 M(1000)
F4 F0 + F2 ; M(1000)+F2
Cabecera
F0 M(992)
------------------------------------------------------------------------------M(1000) F4 ; M(1000)+F2
SD 0(R1),F4 ; Stores M[i]
Iteracin 1
F4 F0 + F2 ; M(992)+F2
ADDD F4,F0,F2 ; Adds to M[i-1]
F0 M(984)
LD F0,-16(R1); Loads M[i-2]
R1 992
-------------------------------------------------------------------------------M(992) F4 ; M(992)+F2
F4 F0 + F2 ; M(984)+F2
Iteracin 2
F0 M(976)
R1 984
Ejecucin SW pipelined (suposicin
--------------------------------------R1=1000)

F0 M(0) ; Ahora R1=16


Iteracin n
R1 8
--------------------------------------M(8) F4 ; M(8)+F2
F4 F0 + F2 ; M(0)+F2
Cola
M(0) F4 ; M(0)+F2
51

Comparacin: Software pipelining vs. Loop unrolling


Loop Unrolling

Software Pipelining

No hay dependencias en el cuerpo del bucle


No reduce el numero de saltos
Necesita inicio y finalizacin especial

Bloque grande para planificar


Reduce el numero de saltos
Incrementa el tamao del cdigo
Tiene que incluir iteraciones extra
Presin sobre el uso de registros

52

NDICE (I)

Rendimiento de un procesador

Soluciones bsicas para la mejora del rendimiento: Evolucin

Tcnicas para el aumento del paralelismo a nivel de instruccin

Planificacin esttica/software

Planificacin esttica bsica

Desenrollamiento de bucles

Planificacin esttica superescalar

Planificacin esttica VLIW

Segmentacin software

Deteccin y eliminacin de dependencias

AEC: TEMA2

GRUPO DE ARQUITECTURA
DE COMPUTADORES

53

Deteccin y eliminacin de
dependencias (I)

La deteccin de dependencias es parte fundamental en tres tareas

Planificacin de cdigo eficiente

Determinacin de los lazos que pueden contener paralelismo.

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Eliminacin de dependencias de nombre (antidependencias y dependencias


de salida): renombre de registros.

Ejemplo 1:

for (i=1;i<=100;i=i+1){
A[i] = B[i] + C[i];
D[i] = A[i] * E[i];
}

La dependencia sobre A[] no es a travs de iteraciones:

Podemos desenrollar el bucle y conseguir ILP.

No podemos intercambiar las dos referencias a A[].


La segunda referencia a A[] no necesita ser traducida a una instruccin de
carga:

Puede ser simplemente una referencia al registro sobre el que se hizo el


computo de A[].
AEC: TEMA2

54

Deteccin y eliminacin de
dependencias (II)

Ejemplo 2 :

Importancia de las recurrencias => son construcciones software frecuentes en


un cdigo:

Algunas arquitecturas (computadores vectoriales) poseen soporte especial


para ejecucin de recurrencias.

Algunas recurrencias pueden ser fuente de una cantidad razonable de


paralelismo.

Ejemplo 3 :

for (i=2;i<=100;i=i+1) {
Y[i] = Y[i-1] + Y[i]; }

Variable de recurrencia: variable definida en funcin del valor de esa


misma variable tomada de una iteracin anterior (en el ejemplo anterior de la
inmediatamente anterior).

GRUPO DE ARQUITECTURA
DE COMPUTADORES

for (i=6;i<=100;i=i+1) {
Y[i] = Y[i-5] + Y[i]; }

Distancia de dependencia 5.
A mayor distancia de dependencia ms paralelismo puede obtenerse
potencialmente en el bucle.
AEC: TEMA2

55

Deteccin y eliminacin de
dependencias (III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Deteccin de dependencias por parte del compilador:

En general, los algoritmos de anlisis de dependencias asumen ndices de los arrays tipo afn:

Los ndices son de la forma a x i + b, donde a y b son constantes e i es la variable ndice del
lazo.

Determinacin de existencia de dependencias entre dos referencias al mismo array dentro de un


lazo => determinacin de si dos funciones afines pueden tomar el mismo valor para ndices
diferentes dentro de los lmites del lazo.
Almacenamiento array con ndice a x i + b ; m<=i<=n
Carga del mismo array con ndice c x i + d

; m<=i<=n

=> Existe dependencia si se dan estas las siguientes condiciones:


1)

existen dos ndices j y k dentro de los lmites del lazo: m<=j, k<=n para lo que

2)

el lazo almacena el elemento del array indexado por a x j + b y despus carga el mismo
elemento del array indexado por c x k + d tal que:

axj+b=cxk+d

En general, es complicado determinar la existencia de dependencia en tiempo de compilacin.

Los valores de a,b,c y d pueden no conocerse en tiempo de compilacin

Los accesos pueden depender de los ndices de varios lazos anidados

AEC: TEMA2

56

Deteccin y eliminacin de
dependencias (IV)

Test de dependencias GCD (Greatest Common Divisor)

Test en tiempo de compilacin: es el test ms sencillo de los existentes.

Aplicabilidad : ndices simples y afines donde a,b,c y d son constantes.

Si existe dependencia entre iteraciones se verifica:


GCD(c,a) debe dividir a (d-b)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

/*divisin entera*/

El test GCD slo garantiza que no existen dependencias, pero no el caso


contrario: pueden no existir dependencias aunque el test GCD sea
positivo (esto ltimo es debido a que el test GCD no tiene en cuenta los
lmites del lazo -> Test de Banerjee).

En general, el problema de determinacin de si una dependencia realmente


existe es NP-Completo.
Eliminacin de dependencia de nombre por parte del compilador: renombre
de registros software (ver apartado posterior)
AEC: TEMA2

57

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin
AEC: TEMA2

58

Planificacin dinmica
superescalar:
emisin de instrucciones

GRUPO DE ARQUITECTURA
DE COMPUTADORES

La poltica utilizada por el procesador para llamar decodificar y ejecutar instrucciones


posee un efecto significativo sobre su capacidad para descubrir instrucciones que puede
ejecutar de forma concurrente.
Emisin de una instruccin: proceso de iniciacin de la ejecucin de una instruccin
en las unidades funcionales del procesador.
Poltica de emisin de instrucciones: protocolo utilizado para emitir instrucciones.

Influencia sobre el rendimiento:

Determinan la capacidad del procesador de examinar instrucciones ms all


del punto actual de ejecucin

Objetivo: consecucin de instrucciones independientes para ejecutar

Tipos:

Emisin en orden con finalizacin en orden

Emisin en orden con finalizacin fuera de orden

Emisin fuera de orden con finalizacin fuera de orden

AEC: TEMA2

59

Emisin en orden con


finalizacin en orden (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Se emiten instrucciones en el orden marcado por el programa (emisin en


orden) y se almacenan sus resultados en el mismo orden (finalizacin en
orden).
Ejemplo: secuencia de instrucciones que posee las siguientes restricciones/
dependencias sobre el paralelismo:

I1 requiere dos ciclos en la fase de ejecucin.

I3 e I4 requieren la misma unidad funcional.

I5 depende del valor generado por I4.

I5 e I6 requieren la misma unidad funcional.

AEC: TEMA2

60

Emisin en orden con


finalizacin en orden (II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Finalizacin en orden => Detencin de la emisin de una instruccin


cuando:
1) Hay un conflicto respecto de una unidad funcional (dependencia de
recursos).
2) Una instruccin depende de un resultado no computado todava
(dependencia verdadera).
3) Una unidad funcional requiere ms de un ciclo para generar un
resultado (operacin multiciclo).

AEC: TEMA2

61

Emisin en orden con finalizacin


fuera de orden (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Se permite el almacenamiento de resultados de instrucciones en orden


diferente a su emisin.
Aumenta el rendimiento de un procesador superescalar ante operaciones de
larga duracin.
Diferencias respecto a la finalizacin en orden:
1) La emisin de las instrucciones no es detenida cuando una unidad
funcional requiere ms de un ciclo para computar un resultado.
2) El nmero de instrucciones ejecutadas simultneamente es superior.

AEC: TEMA2

62

Emisin en orden con finalizacin


fuera de orden (II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Consideramos la misma secuencia de instrucciones del ejemplo


anterior

La emisin de I3 no es detenida y puede ejecutarse concurrentemente


con el ltimo ciclo de I1.
Reduccin del tiempo total a 7 ciclos.
AEC: TEMA2

63

Emisin en orden con finalizacin


fuera de orden (III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Finalizacin fuera de orden Detencin de la emisin de una instruccin cuando:


1)

Hay un conflicto respecto de una unidad funcional.

2)

Una instruccin depende de un resultado no computado todava.

3)

Existe una dependencia de salida entre instrucciones

Ejemplo:

I1 R3 := R3 op R5
I2 R4 := R3 + 1
I3 R3 := R5 + 1
I4 R7 := R3 op R4

Si se permite que I3 finalice antes que I1:

En el registro R3 se almacena un valor antiguo de R3 (proporcionado por I1).

Resultado incorrecto de la instruccin I4.

La finalizacin fuera de orden mejora el rendimiento pero requiere mayor complejidad


hardware:

Lgica de deteccin de dependencias: mayor nmero de chequeos de dependencias de


datos entre las instrucciones decodificadas y las instrucciones en ejecucin
El hardware debe asegurar que la correccin en el almadenamiento de los resultados
AEC: TEMA2

64

Emisin fuera de orden con


finalizacin fuera de orden (I)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Se permite la emisin de instrucciones en orden diferente al marcado por el programa.

En la emisin en orden

Detencin de la decodificacin si la instruccin decodificada posee una dependencia


verdadera, de salida o de recursos respecto a otra no finalizada.
El procesador no posee capacidad de operar sobre instrucciones posteriores a la
causante de la dependencia.

Solucin:

Aislamiento del decodificador de la etapa de ejecucin Ventana de


instrucciones
Funcionamiento de una ventana de instrucciones:
1.

El procesador decodifica instrucciones y las coloca en la ventana mientras


exista espacio disponible.

2.

Entre las instrucciones situadas en la ventana busca aquellas que puedan ser
ejecutadas sin problemas de dependecias respecto a otra en ejecucin.

3.

Las instrucciones situadas en la ventana pueden ser emitidas fuera de orden


mientras se preserve el comportamiento correcto del programa.
AEC: TEMA2

65

Emisin fuera de orden con


finalizacin fuera de orden (II)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Consideramos la misma secuencia de instrucciones que en casos anteriores

La ventana de instrucciones no es una nueva etapa del pipeline.


La situacin de una instruccin sobre la ventana implica que el proceador posee suficiente
informacin sobre sta para ser emitida o no.
I6 puede ser decodificada pese a la presencia de dependencias entre las instrucciones
anteriores:

El procesador descubre la independencia de I6 respecto a I4.

I6 se ejecuta fuera de orden simultneamente con I4.

Reduccin del tiempo total a 6 ciclos.


AEC: TEMA2

66

Emisin fuera de orden con


finalizacin fuera de orden (III)

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Emisin fuera de orden Detencin de la emisin cuando:

Se detectan dependencias verdaderas, de salida y de recursos.

Se detecta una antidependencia.

Ejemplo:

I1 R3:= R3 op R5
I2
R4:= R3 + 1
I3
R3:= R5 + 1
I4
R7:= R3 op R4

Si se permite que I3 se complete antes de que I2 comience su ejecucin:

En el registro R3 se alamacena un valor demasiado nuevo para ser


utlizado por I2.
I2 depende a suvez de I1:

I3 no debe emitirse hasta la finalizacin de I1 (incluso aunque I3 sea


independiente de sta ltima).

AEC: TEMA2

67

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin
AEC: TEMA2

68

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros (I)

Diferenciacin entre los tipos de dependencias de datos:

Dependencia verdadera o de flujo: representa el flujo de datos e informacin

entre instrucciones en un programa

Es una dependencia inherente al programa conflicto RAW

Dependencia de salida y antidependencia -> reciben tambin el nombre de

dependencias de nombre:

Ocurren cuando dos instrucciones utilizan el mismo

registro o posicin de memoria (nombre) pero no hay flujo de datos entre


las instrucciones asociadas a dicho nombre conflictos WAR y WAW.

Realmente antidependencias y dependencias de salida son

dependencias de recursos de almacenamiento: Pueden evitarse sus


efectos replicando los recursos de almacenamiento RENOMBRE DE REGISTROS:

Software (compilador)

Hardware (en tiempo de ejecucin)


AEC: TEMA2

69

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros software (II)


Loop:LD

F0,0(R1)

ADDD

F4,F0,F2

SD

0(R1),F4

LD

F0,-8(R1)

ADDD

F4,F0,F2

SD

-8(R1),F4

LD

F0,-16(R1)

ADDD

F4,F0,F2

SD

-16(R1),F4

SUBI

R1,R1,#24

BNEZ

R1,Loop

Las dependecias de nombre obligan a que las instrucciones del lazo se ejecuten

prcticamente ordenadas (slo las instrucciones LD tras las SD podran intercambiarse).

AEC: TEMA2

70

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros software (III)

SOLUCIN: El renombre de registros utilizado en cada copia del cuerpo del lazo

elimina las dependencias de nombre.


Loop:LD

F0,0(R1)

ADDD

F4,F0,F2

SD

0(R1),F4

LD

F6,-8(R1)

ADDD

F8,F6,F2

SD

-8(R1),F8

LD

F10,-16(R1)

ADDD

F12,F10,F2

SD

-16(R1),F12

SUBI

R1,R1,#24

BNEZ

R1,Loop

Nota: Algunas optimizaciones del compilador pueden tener efectos opuestos:

Renombre de registros vs gestin del nmero de registros disponibles por el procesador

AEC: TEMA2

71

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin
AEC: TEMA2

72

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (I)

Implementacin tpica del renombre de registros hardware:

Buffer de reordenamiento.

Organizacin superescalar ejemplo (ver figura siguiente):

Una unidad entera y una unidad de punto flotante:

Se comunican a travs de la memoria de datos y la memoria cach.

Controladas por una nica cadena de instrucciones.

La cach de instrucciones puede proporcionar mltiples instrucciones por


llamada.

AEC: TEMA2

73

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (II)

AEC: TEMA2

74

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (II)

Emisin fuera de orden utilizacin de una ventana de instrucciones.

Dos implementaciones bsicas:


1.

Ventana centralizada: se almacenan todas las instrucciones decodificadas en


una ventana comn

2.

Estaciones de reserva: se distribuyen buffers de almacenamiento de


instrucciones decodificadas a la entrada de cada unidad funcional.

Operacin del procesador:


1.

Un decodificador de mltiples instrucciones coloca las instrucciones y


operandos en las estaciones de reserva de las unidades funcionales
apropiadas.

2.

Emisin de una instruccin el ciclo siguiente a la decodificacin la


instruccin no posee dependencias y la unidad funcional no est ocupada.

3.

En caso contrario, la instruccin se almacena en la estacin de reserva hasta


que desaparezcan las condiciones anteriores.

4.

Ms de una instruccin en la estacin de reserva lista para ser emitida el


procesador selecciona aquella que apareci en primer lugar en la secuencia de
instrucciones.
AEC: TEMA2

75

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (III)

Renombre de registros eliminacin de antidependencias y dependencias de salida


respecto a los registros.

buffer de reordenamiento: memoria direccionable por contenidos.

Modo de operacin de un buffer de reordenamiento:


1.

2.

3.

Decodificada una instruccin:


a)

Se asigna una posicin en el buffer de reordenamiento a su resultado.

b)

Su nmero de registro de destino se asocia a esa posicin renombre del


registro destino mediante la posicin del buffer de reordenamiento.

Simultneamente: Creacin por hardware de una marca (tag)


a)

Identificador temporal del resultado.

b)

Alamacenamiento en la posicin del buffer de reordenamiento asignada.

Referencia de una instruccin subsiguiente al registro destino renombrado. La


instruccin obtiene:
a)

El valor almacenado en el buffer de reordenamiento.

b)

La marca para ese valor si no ha sido todava computado.


AEC: TEMA2

76

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (IV)

Modo de operacin fichero de registros buffer de reordenamiento para


obtencin de los operandos de una instruccin:
1.

Acceso simultneo: utilizacin de los nmeros de registro de los operandos


fuente de la instruccin decodificada.

2.

Si el buffer de reordenamiento no posee una entrada cuyo contenido coincida


con el nmero de registro fuente seleccin del valor en el fichero de
registros.

3.

En caso contrario seleccin del valor contenido en la entrada del buffer de


reordenamiento (valor ms recientemente referenciado).

4.

Valor no disponible por no haber sido computado seleccin de la marca


para ese valor.

5.

En cualquier caso, el valor o la marca se copia en la estacin de reserva.


AEC: TEMA2

77

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Renombre de registros hardware (V)

En caso de mltiples entradas en el buffer de reordenamiento con el mismo


valor en el campo llave (varias instrucciones han referenciado al mismo registro
destino):

Cuando se produce un resultado:

El buffer de reordenamiento debe proporcionar la entrada ms reciente

Escritura simultnea sobre el buffer de reordenamiento y sobre cualquier


entrada de las estaciones de reserva que contenan una marca para ese
resultado.

Implementacin del buffer de reordenamiento (BR) : cola FIFO.

Decodificada una instruccin, se le asigna una entrada en la parte superior


del BR.
Al finalizar la instruccin, el valor resultado se escribe en la posicin asignada
del BR.
Cuando el valor alcanza el final del BR, se escribe sobre el fichero de
registros: si esto ocurre cuando la instruccin no ha acabado, el BR no
avanza pero la decodificacin puede continuar si hay entradas en el BR
disponibles
AEC: TEMA2

78

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

AEC: TEMA2

79

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Operaciones load/store (I)

Cargas y almacenamientos Posibilidad de dependencias verdaderas,


antidependencias y dependencias de salida sobre posiciones de memoria externas.
El renombre de posiciones de memoria no se utiliza:
1.

Las direcciones de memoria son bastante grandes (en procesadores RISC una
direccin de memoria es tipicamente de 32 bits).

2.

Posiciones de memoria mucho ms abundantes que registros no es


necesario reutilizarlas como los registros.

3.

Menor nmero de dependencias provocadas por posiciones de memoria que


por registros:
Las instrucciones de carga y almacenamiento son aproximadamente el
25-30% del total en un programa y leen escriben una nica posicin de
memoria, mientras la mayora de las restantes leen dos registros y
escriben sobre uno.

AEC: TEMA2

80

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Operaciones load/store (II)

En el procesador superescalar (emisin fuera de orden con finalizacin fuera de orden) propuesto en
la seccin anterior:

Las cargas y almacenamientos pueden ser decodificados al mismo tiempo y colocados en sus
respectivas estaciones de reserva.

Poltica de emisin/finalizacin de cargas y almacenamiento:


1.

Slo una carga o almacenamiento es emitida por ciclo desde las estaciones de reserva a la cach
de datos utilizando un nico interfaz (dependencia de recursos por la utilizacin de la cach de
datos).

2.

Prioridad de una carga sobre un almacenamiento en la utilizacin de la interfaz con la cach de


datos.
La carga probablemente producir un valor necesitado por el procesador para continuar la
computacin.

3.

En caso de conflicto de un almacenamiento con una carga por el interfaz de la cach de datos:
El almacenamiento se realiza sobre un buffer de almacenamiento hasta poder ser
finalizado.

4.

Emisin en orden de un almacenamiento respecto de otros almacenamientos:


Adems finalizacin en orden del almancenamiento respecto a la finalizacin de todas las
instrucciones previas (incluidas las cargas).

5.

Emisin fuera de orden de una carga respecto a las instrucciones previas de almacenamiento:
se permite a las cargas sobrepasar (se emiten fuera de orden) a los almacenamientos
precedentes en espera en el buffer de almacenamiento y utilizar los datos cargados en
computaciones subsiguientes

AEC: TEMA2

81

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Operaciones load/store (III)

Consecuencias sobre las dependencias de la poltica de emisin/finalizacin


elegida para las instrucciones de carga y almacenamiento:
1.

Dependencias verdaderas: una carga que ha sobrepasado a un


almacenamiento puede necesitar obtener datos de ese almacenamiento
previo no realizado.
El procesador debe chequear si puede existir dependencia comparando
las direcciones sobre las que se realiza la carga y todos los
almacenamientos previos no completados (pendientes de finalizacin en
el buffer de almacenamiento)

2.

Dependencias de salida y antidependencias no producen conflictos:


a) Las cargas pueden sobrepasar almacenamientos previos pero un
almacenamiento no puede sobrepasar una carga previa -> no hay
antidependencias entre cargas y almacenamientos.
b) Un almacenamiento se emite en orden de programa respecto de otros
almacenamientos -> no hay dependencias de salida entre
almacenamientos.

AEC: TEMA2

82

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Operaciones load/store (IV)


Cdigo Ejemplo:

V, W y X son variables del programa (cargas y almacenamientos se realizan sobre las


mismas posiciones de memoria identificadas por el mismo nombre de variable que
manejan en el cdigo mostrado).
1.

STORE V

2.

ADD

3.

LOAD W

4.

LOAD X

5.

LOAD V

6.

ADD

7.

STORE W

Dependencia verdadera: 1 5
Antidependencia 3 ' 7: No da lugar a conflicto ya que las instrucciones store se
ejecutan slo cuando todas las instrucciones previas se hayan completado.

AEC: TEMA2

83

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Operaciones load/store (V)

Implementacin hardware del buffer de almacenamiento dentro del procesador superescalar


propuesto:

AEC: TEMA2

84

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

AEC: TEMA2

85

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Riesgos de control (I)

Debidos a instrucciones que modifican el contador de instrucciones: saltos, interrupciones

Recordando la unidad de procesamiento de intrucciones bsica:


IF Llamada de instruccin a la cach de instrucciones
ID Decodificacin y obtencin de operandos de la instruccin
EX Clculo de direccin efectiva para acceso a memoria, o ejecucin, o clculo destino de salto.
MEM Acceso a cach de datos, o test de salto y modificacin del PC.
WB Escribir resultado en el fichero de registros.

Ejecucin de una instruccin de salto:

AEC: TEMA2

86

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Riesgos de control (II)


En el IF de la instruccin i+1 todava no sabemos que la anterior es un salto:
Necesitamos 3 ciclos de reloj para resolver el conflicto de control (penalizacin de
salto)
Solucin ideal:
Asignar a la etapa ID el clculo de la direccin de salto y la realizacin del test de
salto, as como la y actualizacin del PC:

slo 1 ciclo para resolver el conflicto de control.

Esta solucin no es siempre posible en el diseo de un procesador, adems:

El objetivo ltimo es conseguir que no haya penalizacin de salto.

AEC: TEMA2

87

Reduccin de la penalizacin
de salto

GRUPO DE ARQUITECTURA
DE COMPUTADORES

1. Tcnicas estticas (compilador):


Prediccin esttica y salto retardado:
- Basadas en estimaciones en tiempo de compilacin
- En la prediccin esttica, la prediccin realizada para cada salto es fija
durante todo el programa.
2. Tcnicas dinmicas (en tiempo de ejecucin):
Prediccin dinmica :
- Se utiliza hardware adicional para predecir dinmicamente el resultado de un salto.
- La prediccin cambia si los saltos cambian su comportamiento durante la ejecucin del
programa.

Algunas definiciones bsicas:

Direccin destino de salto (branch target address): es la direccin de la instruccin que se


determina como la siguiente a ejecutar (cuando la condicin de salto se cumple) tras la instruccin
de salto actualmente en ejecucin.
Salto tomado o efectivo (taken branch): se utiliza esta expresin para indicar que la condicin
de salto evaluada dentro de la instruccin de salto ha sido positiva y que por tanto la siguiente
instruccin a procesar tras la de salto es la colocada en la direccin destino de salto.
Salto no tomado o no efectivo (untaken branch): se utiliza esta expresin para indicar que la
condicin de salto no se ha cumplido y que por tanto la siguiente instruccin a procesar tras la de
salto es la colocada en la direccin situada en memoria secuencialmente posterior a la instruccin
de salto actualmente en procesamiento.

AEC: TEMA2

88

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

AEC: TEMA2

89

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin de salto esttica (I)

Se realiza una prediccin sobre la direccin destino de salto introducindose en el pipeline


la instruccin correspondiente:

Los resultados son marcados como provisionales , no se sobreescribe registros


accesibles al usuario o posiciones de memoria.

Prediccin correcta Se eliminan las marcas de provisionalidad.


Predicin incorrecta Se eliminan los resultados provisionales y se introduce la
instruccin destino de salto correcta (con la consiguiente prdida de ciclos por
penalizacin de salto).

Dos posibilidades en la prediccin de salto esttica:

Prediccin de salto como no efectivo (se introduce en el pipeline la instruccin


situada secuencialmente en memoria inmediatamente posterior a la direccin de la
instruccin de salto).

Si finalmente el salto no es efectivo, determinado en ID, la instruccin predicha


introducida en el pipeline ha sido la correcta y podemos continuar.
Si el salto es efectivo, debemos detener la segmentacin y reintroducir la
instruccin correcta (la direccin destino de salto).

AEC: TEMA2

90

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin de salto esttica (II)


Prediccin de salto como no efectivo:

Salto no tomado

Salto tomado

AEC: TEMA2

91

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin de salto esttica (III)


Prediccin de salto como efectivo:

Decodificado el salto y calculada la direccin de destino, suponemos que


el salto se realiza por lo que la intruccin predicha que se introduce en
el pipeline es la direccin destino de salto.
Tiene sentido cuando el destino de salto se conoce antes que el
resultado del salto (no es el caso de la mquina segmentada ejemplo):
para poder hacer la prediccin antes de realmente saber si la condicin
se cumple o no.

AEC: TEMA2

92

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado (I)

Idea: utilizacin de los ciclos de penalizacin de salto para introducir en el pipeline intrucciones
que pueden ser tiles posteriormente y que son independientes del resultado del salto.

El compilador se encarga de situar las instrucciones seleccionadas en el hueco de retardo,


y siempre se ejecutan independientemente de que el salto se tome o no.

Implementacin del salto retardado en la mquina ejemplo:

AEC: TEMA2

93

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado (II)


Estrategias de planificacin para el relleno del hueco de retardo cuando se aplica
salto retardado:
a) El hueco de retardo se planifica con una instruccin independiente anterior
al salto.
b) El hueco de retardo se planifica con el destino del salto:

Normalmente, la instruccin de destino debe ser copiada porque puede ser


alcanzada po otro camino.
Es preferible cuando el salto se realiza con alta probabilidad, por ejemplo un
salto de bucle.

c) El hueco de retardo se planifica con la instruccin siguiente


secuencialmente.

AEC: TEMA2

94

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado (III)

b) y c) slo se utilizarn cuando a) no es posible (uso de R1)


AEC: TEMA2

95

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado (IV)


Tabla resumen sobre las estrategias de planificacin en el salto retardado:
-

Primera columna: condiciones que deben cumplirse para rellenar el hueco de retardo

Segunda columna: en qu ocasiones mejora el rendimiento.

AEC: TEMA2

96

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado con anulacin (I)

El compilador debe afrontar un problema para aplicar la tcnica de salto


retardado:

No existencia de suficientes instrucciones candidatas para rellenar el hueco


de retardo.

En el salto retardado con anulacin, la instruccin de relleno del hueco de


retardo puede anularse o no en funcin de acierto o no sobre la prediccin
realizada por el compilador (acerca de si se toma el salto, o no se toma).
Comportamiento del salto retardado con anulacin para prediccin de salto
tomado:
1.

Si el salto se comporta como se haba predicho: se ejecuta la instruccin


situada en el hueco de retardo como si fuera un salto retardado convencional.

2.

Si el salto no se comporta como se haba predicho: la instruccin situada en


el hueco de retardo conmuta a no-op.

AEC: TEMA2

97

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Salto retardado con anulacin (II)


Prediccin de salto tomado:
Finalmente el salto no se toma

Finalmente el salto se toma

Ventajas del salto de retardo con anulacin:

El compilador puede utilizar sin problemas las polticas de planificacin (b) y (c), con lo
que cuenta con mayor nmero de instrucciones disponibles para rellenar el hueco de
retardo.
AEC: TEMA2

98

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Carga retardada

Tcnica similar al salto retardado para rellenar los huecos de retardo


debidos a dependencias de instrucciones respecto a las instrucciones
tipo LOAD.
Penalizacin de carga en la mquina ejemplo: como mnimo 2 ciclos.
inst. carga
inst. que utiliza

IF

ID

EXE MEM WB
IF

ID

EXE

MEM WB

el dato cargado

AEC: TEMA2

99

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

AEC: TEMA2

100

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (I)

Idea: se dota al sistema de prediccin de la capacidad de adaptacin

al comportamiento de la ejecucin del programa.

Ante una instruccin de salto, la prediccin se realiza en un sentido (se toma o no se

toma) en funcin de cmo se comport la ltima vez esa misma instruccin de salto.

Buffer de prediccin de saltos (Branch prediction buffer)

Memoria indexada por la porcin inferior de la direccin de una instruccin de salto.

Contiene un bit que informa sobre si el salto fue recientemente tomado o no:

Prediccin salto tomado: la instruccin predicha es la instruccin destino de salto.

Prediccin salto no tomado: la instruccin predicha en la consecutiva a la inst. de salto.

Slo reduce el retardo de salto cuando ste es superior al tiempo de clculo de los posibles

destinos de salto: se calcula antes la direccin destino de salto que el test de salto.
Prediccin correcta: reduccin penalizacin de salto, y
mantenimiento del bit de prediccin.

Prediccin incorrecta: no hay reduccin de

la penalizacin de salto, y cambio del bit de prediccin.

AEC: TEMA2

101

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (II)

La prediccin puede incluso basarse en el comportamiento anterior de otro salto


con la misma porcin inferior de su direccin .
Inconveniente del esquema de prediccin de 1-Bit:

Incluso cuando el salto es casi siempre tomado, haremos dos predicciones


incorrectas en lugar de una.

Solucin: esquema de prediccin de 2-bits.

La prediccin debe fallar dos veces antes de cambiar.

AEC: TEMA2

102

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (III)

Implementacin del buffer de prediccin de saltos: dos posibilidades

Un par de bits asociados a cada bloque en la cach de instrucciones y obtenidos


junto con la instruccin.

Funcionamiento:

Cach especial de pequeo tamao accedida con la direccin de la instruccin


durante la etapa IF.

Si la intruccin es decodificada como salto y el salto se predice como efectivo: tan


pronto como se conoce la direccin destino de salto se introduce la instruccin
correspondiente en el pipeline.
En otro caso: la instruccin a introducir en el pipeline es la situada secuencialmente
en la posicin siguiente a la actual.

Observacin:

Este esquema no es vlido para la mquina segmentada ejemplo (el destino de


salto y el resultado del test de salto se calculan al mismo tiempo).

AEC: TEMA2

103

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (IV)

Buffer de destino de saltos (branch target buffer, BTB)

Cmo reducir la penalizacin de salto en la mquina segmentada ejemplo:


Conocer la direccin de salto al final de la etapa IF debemos

saber si la instruccin todava sin decodificar es un salto,


y en caso afirmativo, cual sera el prximo PC.

Implementacin: cach de prediccin de saltos que almacena la direccin

predicha (es decir, utilizamos como prediccin la instruccin a la que salt por
ltima vez la actual instruccin de salto)

El campo llave de esta cach es la direccin de la instruccin actual.

Funcionamiento: Se accede a la cach BTB durante la etapa IF

mediante la direccin de la instruccin en curso.

Acierto en cach la instruccin era un salto por lo que conocemos

la direccin de la instruccin predicha al final de IF (esta direccin


es utilizada como siguiente PC)

Slo se almacenan en la BTB los saltos predichos como efectivos.


AEC: TEMA2

104

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (V)

AEC: TEMA2

105

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (VI)

AEC: TEMA2

106

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Prediccin dinmica de saltos (VII)

Resumen de ganancia/prdida de ciclos usando una BTB:

En la tabla se consideran 2 ciclos de penalizacin por:

1 ciclo debido a que se ha tenido que esperar a conseguir la instruccin


correcta hasta el final del ciclo ID en la mquina ejemplo.
1 ciclo adicional gastado para actualizar la entrada correspondiente en la
BTB.
AEC: TEMA2

107

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

Microprocesadores comerciales: ejemplos.

AEC: TEMA2

108

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Instrucciones con predicado (I)


Instrucciones con predicado (o condicionales, o predicacin):

Eliminan instrucciones de salto.

Ayuda al compilador para mover instrucciones posteriores a los


saltos.
Son extensiones del repertorio de instrucciones.

Concepto de instruccin con predicado:

Una instruccin convencional se extiende de forma que incluye


una condicin que es evaluada en la ejecucin de la propia
instruccin.

Si la condicin es cierta, la instruccin se ejecuta


normalmente.

Si la condicin es falsa, la ejecucin continua como si fuese


una no-op.

AEC: TEMA2

109

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Instrucciones con predicado (II)

Ejemplo representativo:
- Instruccin MOVE condicional (mueve un valor de un registro a otro si la condicin es cierta).
1. Cdigo fuente:

if (A=0) {S=T;}

Se supone que los registros R1,R2,R3 contienen los valores A, S y T respectivamente.


2. Cdigo ensamblador utilizando una instruccin de salto (no se considera alto retardado):
BNEZ R1,L
MOV R2,R3
L:
3. Cdigo ensamblador utilizando MOVE condicional:
CMOVE R2,R3,R1
Se realiza el MOVE slo si el tercer operando es igual a cero

Conversin de la dependencia de control en una dependencia de datos

esta transformacin tambin se conoce con el nombre de if-conversion.


AEC: TEMA2

110

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Instrucciones con predicado (III)


mbito de aplicacin de la predicacin:
Principalmente cuando el cuerpo del cdigo dentro del bloque
if-then es relativamente pequeo.

En la actualidad los repertorios de instrucciones que utilizan


predicacin, poseen variantes predicadas de gran parte de las
instrucciones convencionales: ver arquitectura IA-64.

AEC: TEMA2

111

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Instrucciones con predicado (IV)


Predicacin en la arquitectura IA-64 (ej. Procesador Itanium): tambin
se incluye el concepto de especulacin (ver apartado posterior).

AEC: TEMA2

112

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

Microprocesadores comerciales: ejemplos

AEC: TEMA2

113

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Especulacin (I)

Idea: Permitir la ejecucin de una instruccin antes de que el procesador sepa si esa
instruccin debe ejecutarse o si va a ser til al procesador finalmente.

Si la instruccin ejecutada de forma especulativa no deba haberse ejecutado, hay que


restaurar los cambios que haya podido producir y no se mejora el rendimiento (o incluso
en algunos casos puede empeorar).

Especulacin de control:

Si la instruccin ejecutada de forma especulativa es til posteriormente al procesador se


mejora el rendimiento.

Mueve instrucciones cuya ejecucin depende del resultado de la condicin de una


instruccin de salto, y las ejecuta de forma previa sin conocer el resultado del test de
salto.
Cuando la instruccin especulativa es una carga, se le conoce tambin como carga
especulativa (speculative loading): ver ejemplo IA-64.

Especulacin de datos:

Mueve instrucciones load para ejecutarlas de forma previa a instrucciones store que
podran modificar la misma posicin de memoria que va a ser utilizada por el load.
Se hace un chequeo posterior para comprobar que la instruccin de load ejecutada de
forma especulativa ha proporcionado al procesador un dato vlido (que no ha habido una
instruccin store que debiera haber modificado previamente a la de load la misma posicin
de memoria).
AEC: TEMA2

114

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Especulacin (II)

Espelacin en la arquitectura IA-64 (procesador Itanium):

Especulacin de control: Carga especulativa (speculative loading)

AEC: TEMA2

115

NDICE (II)

Planificacin dinmica/hardware

GRUPO DE ARQUITECTURA
DE COMPUTADORES

Planificacin dinmica superescalar

Renombre de registros

Renombre de registros software

Renombre de registros hardware: Buffer de reordenamiento

Tratamiento de operaciones load/store: buffer de almacenamiento

Tratamiento de riesgos de control

Prediccin de salto esttica, salto retardado (y carga retardada)

Prediccin dinmica de saltos

Instrucciones con predicado

Especulacin

Microprocesadores comerciales: ejemplos.

AEC: TEMA2

116

GRUPO DE ARQUITECTURA
DE COMPUTADORES

AMD Athlon

Tres decodificadores paralelos (instrucciones x86)


128 Kb de cach L1 (64Kb para instrucciones y 64Kb para
datos)
Unidades de coma flotante independientes que ejecutan
instrucciones de coma flotante x87, MMX y 3Dnow!

BTB 2048 entradas => prediccin dinmica de saltos

Profundidad de la segmentacin:

11 (enteros)/15 (punto flotante) etapas de pipeline

AEC: TEMA2

117

GRUPO DE ARQUITECTURA
DE COMPUTADORES

AMD Athlon : Ncleo del procesador

AEC: TEMA2

118

Вам также может понравиться