78
1 ma 4: Segmentación II. Introducció los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmenta Planificación dinámica Predicción dinámica de saltos Renombrado de registros Predicación Procesadores Superescalares Ejemplo: el Pentium Pro

1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

Embed Size (px)

Citation preview

Page 1: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

1

Tema 4: Segmentación II. Introducción a los Superescalares.

•Objetivos•Referencias•Aprovechamiento de una arquitectura segmentada•Planificación dinámica•Predicción dinámica de saltos•Renombrado de registros•Predicación•Procesadores Superescalares•Ejemplo: el Pentium Pro

Page 2: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

2

Segmentación II Objetivos

Objetivos:

•Conocer las técnicas de compilación que permiten sacar más

rendimiento a una máquina segmentada

•Conocer los elementos y técnicas que se pueden añadir a un

procesador para hacer más efectiva la segmentación

•Comprender el concepto de procesador superescalar, como

una extensión natural del de procesador segmentado

Page 3: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

3

Segmentación de instrucciones Referencias

Referencias:

•Este tema está sacado de forma prácticamente íntegra (otra vez)del Hennessy-Patterson (la 2ª edición)•Para algunas transparencias se han usado como modelolas de Al Davis•Como complemento se puede mirar el Kai Hwang(todo como el tema anterior, porque es la continuación)•Para ver más sobre predictores de saltos: ‘Combining Branch Predictors’. Scott McFarling. WRL Techical Note TN-36, junio 93 http://www.research.compaq.com/wrl/admin/publications.html•La descripción del Pentium Pro se puede mirar en los manualesde Intel (en cuanto a diseño, es prácticamente igual que el Pentium III) o en el libro: ‘Pentium Pro Processor System Architecture’. Tom Shanley. Addison-Wesley,1997.Mirar también en la página de Intel.

Page 4: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

4

Segmentación II Aprovechamiento de la segmentación

•Consiste en reordenar las instrucciones para eliminar parones•Hay que tener cuidado con las dependencias•Ejemplo: a partir del bucle siguiente, que suma a un vectorde 1000 componentes en coma flotante un valor escalar:

for(i=1;i<1000;i=i+1)x[i] = x[i] + s;

Reordenación (planificación) del código

Page 5: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

5

Segmentación II Aprovechamiento de la segmentación

El código en ensamblador correspondiente al bucle es:

Bucle:ld f0,0(r1)add f4,f0,f2sd 0(r1),f4subi r1,r1,8bnez r1,bucle

Suponiendo latencias:Productor Consumidor LatenciaFP ALU FP ALU 3 ciclosFP ALU Store 2 ciclosLoad FP ALU 1 cicloLoad Store 0 ciclosenteros: Load - ALU, 1 ciclo; resto 0 ciclos

Page 6: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

6

Segmentación II Aprovechamiento de la segmentación

Con las latencias vistas, la ejecución del bucle es:

instrucción cicloBucle: ld f0,0(r1) 1

parón 2addd f4,f0,f2 3parón 4parón 5sd 0(r1),f4 6subi r1,r1,8 7bnez r1,Bucle 8parón 9

Tiempo de ejecución: 9 ciclos por iteración, 4 parones (44%)

Page 7: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

7

Segmentación II Aprovechamiento de la segmentación

Se puede reordenar el código, para eliminar parones:

Bucle: ld f0,0(r1)parónaddd f4,f0,f2subi r1,r1,8bnez r1,Buclesd 8(r1),f4

Tiempo de ejecución: 6 ciclos (reducción del 33%), 1 parón (17%)

Page 8: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

8

Segmentación II Aprovechamiento de la segmentación

A pesar de la reorganización:•el “cuerpo” de la iteración, lo que hace es:

cargar una componente del vectorsumarle el escalaralmacenar el resultado

•el resto de ciclos (3, el 50%) es sólo recargo

Para reducir el porcentaje de recargo, “desenrollamos” el bucle:

•se copia el cuerpo del bucle varias veces para trabajar sobre varias componentes del vector en cada iteración

Page 9: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

9

•Consiste en solapar distintas iteraciones del mismo bucle•Hay que tener cuidado con las dependencias•Partimos del mismo bucle:

Desenrollado de bucles (“loop unrolling”)

Bucle:ld f0,0(r1)add f4,f0,f2sd 0(r1),f4subi r1,r1,8bnez r1,bucle

Segmentación II Aprovechamiento de la segmentación

Page 10: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

10

Segmentación II Aprovechamiento de la segmentación

Nueva versión del bucle:

Bucle: ld f0,0(r1) ;componente 1add f4,f0,f2sd 0(r1),f4 ld f6,-8(r1) ;componente 2add f8,f6,f2sd -8(r1),f8 ld f10,-16(r1) ;componente 3add f12,f10,f2sd -16(r1),f12 ld f14,-24(r1) ;componente 4add f16,f14,f2sd -24(r1),f16subi r1,r1,32 ;control del buclebnez r1,Bucle

Page 11: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

11

Segmentación II Aprovechamiento de la segmentación

Sin desenrollar (ni reordenar):4 iteraciones supondrían 4 * 9 = 36 ciclos

Desenrollando:1 iteración (lo equivalente) supone 27 ciclos (25% menos)

La ganancia procede de:•eliminar las instrucciones de control del bucle en3 de las 4 iteraciones desenrolladas•eliminar el parón que hay después de la instrucciónde salto en 3 de las 4 iteraciones

En resumen: se elimina el recargo en 3 de las 4 iteraciones

Page 12: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

12

Segmentación II Aprovechamiento de la segmentación

Ahora se reordena el código del bucle desenrollado:

Bucle: ld f0,0(r1) ;componente 1 ld f6,-8(r1) ;componente 2 ld f10,-16(r1) ;componente 3 ld f14,-24(r1) ;componente 4add f4,f0,f2 ;sumasadd f8,f6,f2add f12,f10,f2add f16,f14,f2sd 0(r1),f4 ;almacenamientossd -8(r1),f8sd -16(r1),f12subi r1,r1,32 ;control del buclebnez r1,Buclesd 8(r1),f16 ;8-32=-24

Page 13: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

13

Segmentación II Aprovechamiento de la segmentación

Reordenando, se han rellenado los parones por dependenciascon trabajo útil. Cada iteración se ejecuta ahora en 14 ciclos,42% menos que en la versión reordenada pero no desenrollada

Dificultad:podemos desenrollar el bucle así, si se ejecuta un número de veces múltiplo de 4 (el número de iteraciones antiguas a las que equivale la nueva).

Solución:si el número de iteraciones no es múltiplo de 4, sustituimos elbucle original por dos consecutivos:•el primero, con cuerpo igual al original, se ejecuta n mod 4 veces•el segundo, con cuerpo desenrollado 4 veces, se ejecuta n/4 veces

Page 14: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

14

Segmentación II Planificación dinámica

Planificación dinámicaObjetivo: eliminar parones innecesarios(como la estática, pero más flexible)

divd f0,f2,f4addd f10,f0,f8subd f8,f8,f14

Ej.: en el siguiente código:

•La segunda instrucción no se puede ejecutar hasta que la primera genere f0•Esto impide que se ejecute la tercera, aunque tenga todos sus datos preparados => parón innecesario

Dos soluciones: marcadores (‘scoreboarding’) y el algoritmo de Tomasulo

Page 15: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

15

Segmentación II Planificación dinámica

Tanto con marcadores como con el algoritmo de Tomasulo:•se pretende que una instrucción con sus operandos disponibles no se quede paralizada si tiene posibilidadde ejecutarse (porque otra anterior esté bloqueada)•para ello se divide la fase ID en dos:

–lanzamiento: decodificación y comprobación de dependencias estructurales–lectura de operandos: espera por operandos; cuando están listos, se leen y se pasa a ejecutar (no necesariamente respetando el orden del programa)

•de esta forma, una instrucción puede adelantar a otra que esté bloqueada por dependencias

La idea es que el código se “reordena” solo, de forma dinámica,y según la situación del cauce

Page 16: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

16

Segmentación II Planificación dinámica

Ventajas:•no sólo trabaja sobre dependencias estáticas, sino tambiénsobre dinámicas•el compilador es más sencillo•además, la reordenación en tiempo de compilación sólo valía para el cauce concreto con el que se trabaja: ahoraes más general

Inconvenientes:•el hardware es bastante más complejo (lo de siempre)•ahora ya sí se pueden dar las dependencias EDL•hay que tener cuidado con las excepciones (interrupciones)

Page 17: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

17

Segmentación II Planificación dinámica

Marcadores (‘Scoreboarding’)(CDC 6600, 1964)

Page 18: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

18

Segmentación II Planificación dinámica

Es necesario modificar las etapas del cauce. El flujo ahora es:•Búsqueda: como antes•Lanzamiento: si su UF está libre, y no hay dependencias EDE con otra instrucción, la instrucción se envía a la UF; en caso contrario, el lanzamiento se bloquea•Lectura de operandos: si los datos están listos, el marcadorindica a la UF correspondiente que los lea. Esto permite la ejecución fuera de orden, garantizando que se respetanlas dependencias LDE•Ejecución: puede durar varios ciclos. Cuando termina, la UF avisa al marcador.•Almacenamiento: el marcador comprueba que no hay dependencias EDL, y si no los hay, indica a la UF que actualice el banco de registros

Page 19: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

19

Segmentación II Planificación dinámica

Componentes del marcador:

Estado de las instrucciones:•indica en qué fase se encuentran las instrucciones

Estado de las UFs:•ocupada/no ocupada•operación que tiene que realizar•operandos fuente para la operación (qué registros)(fj,fk)•operando destino (qué registro) (fi)•UF que genera cada operando fuente (qj,qk)•Estado de los operandos fuente (listo/no listo) (rj,rk)

Estado de los registros:•UF que va a generar el siguiente valor del reg (en blanco si no usado)

Page 20: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

20

Segmentación II Planificación dinámica

Ejemplo de ejecución:

Vamos a ejecutar el código:

ld f6,34(r2)ld f2,45(r3)multd f0,f2,f4subd f8,f6,f2divd f10,f0,f6addd f6,f8,f2

El cauce tiene una unidad de enteros y operaciones comunes,dos multiplicadores, un sumador y un divisor

Page 21: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

21

Segmentación II Planificación dinámica

Suponemos que la ejecución se encuentra en el siguiente estado:

Inst lanz. lect. ejec. almac.ld f6,34(r2) sí sí sí síld f2,45(r3) sí sí símultd f0,f2,f4 sísubd f8,f6,f2 sídivd f10,f0,f6 síaddd f6,f8,f2

Page 22: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

22

Segmentación II Planificación dinámica

Estado de las unidades funcionales:

UF ocup op fi fj fk qj qk rj rkint sí load f2 r3 no(*)mult1 sí mult f0 f2 f4 int no símult2 noadd sí sub f8 f6 f2 int sí nodiv sí div f10 f0 f6 mult1 no sí

Estado de los registros:

f0 f2 f4 f6 f8 f10 f12 … f30mult1 int add div

(*) cuando una instrucción se ejecuta, sus operandos se ponen a ‘no’

Page 23: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

23

Segmentación II Planificación dinámica

Inst lanz. lect. ejec. almac.ld f6,34(r2) sí sí sí síld f2,45(r3) sí sí sí símultd f0,f2,f4 sí sí sísubd f8,f6,f2 sí sí sí sídivd f10,f0,f6 síaddd f6,f8,f2 sí sí sí

Estado cuando multd está lista para escribir

(Hemos supuesto add: 2ciclos, mult: 10 ciclos y div: 40 ciclos)

Page 24: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

24

Estado de las unidades funcionales:

UF ocup op fi fj fk qj qk rj rkint nomult1 sí mult f0 f2 f4 no nomult2 noadd sí add f6 f8 f2 no nodiv sí div f10 f0 f6 mult1 no sí

Estado de los registros:

f0 f2 f4 f6 f8 f10 f12 … f30mult1 add div

Segmentación II Planificación dinámica

Page 25: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

25

Segmentación II Planificación dinámica

Inst lanz. lect. ejec. almac.ld f6,34(r2) sí sí sí síld f2,45(r3) sí sí sí símultd f0,f2,f4 sí sí sí sísubd f8,f6,f2 sí sí sí sídivd f10,f0,f6 sí sí síaddd f6,f8,f2 sí sí sí sí

Estado cuando divd está lista para escribir

Page 26: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

26

Segmentación II Planificación dinámica

Estado de las unidades funcionales:

UF ocup op fi fj fk qj qk rj rkint nomult1 nomult2 noadd nodiv sí div f10 f0 f6 no no

Estado de los registros:

f0 f2 f4 f6 f8 f10 f12 … f30div

Page 27: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

27

Segmentación II Planificación dinámica

Ventajas del esquema de marcadores en el CDC 6600:•70% de mejora en programas en FORTRAN•150% de mejora en programas codificados a mano•el coste total del marcador era aprox. el de una UF (es decir,muy bajo; el grueso del coste estaba en los buses)

Todo esto, a pesar de que:•no había cachés•no había memorias de semiconductores•los compiladores eran muy “tontos” (comparados con losde hoy)

Page 28: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

28

Segmentación II Planificación dinámica

Factores que limitan la capacidad del marcador para eliminar parones

•El paralelismo existente en la aplicaciónsi no hay instrucciones independientes, no se pueden eliminar los parones

•El número de entradas en el marcadores decir, con cuántas instrucciones se puede trabajar a la vez(en el ejemplo, hasta el siguiente salto)

•El número y tipo de UFsinfluye sobre la cantidad de parones estructurales

•La existencia de antidependencias (edl) y dependencias de salida (ede)

Page 29: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

29

Segmentación II Planificación dinámica

Algoritmo de TomasuloIBM 360/91 (1967)

•Basado en el esquema de marcadores•Incorpora el concepto de renombrado de registros (que elimina las dependencias EDL y EDE)•Características “malas” del IBM 360:

pocos registros de coma flotante en d.p. (4)accesos a memoria lentosgrandes retardos en coma flotante

•El algoritmo de Tomasulo se diseño para contrarrestar estas características “malas”

Page 30: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

30

Segmentación II Planificación dinámica

La unidad de coma flotante del IBM 360 / 91 podía trabajarde forma simultánea con:

•tres operaciones para el sumador•dos operaciones para el multiplicador•6 loads•3 stores

Usa estaciones de reserva, que almacenan las instrucciones que están pendientes de entrar a una UF (cada UF tiene la suya)

Diferencias con el marcador:•cada ER controla cuándo pueden ejecutarse sus instrucciones•los resultados van directamente de las ER a las UF, sin pasar por los registros

Page 31: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

31

Segmentación II Planificación dinámica

Estructura de la unidad de coma flotante del IBM 360/91

Page 32: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

32

Segmentación II Planificación dinámica

Con la estructura de la máquina, las fases del cauce son:Lanzamiento:

•se toma una instrucción de la cola•si hay espacio en su ER, se coloca ahí•si los operandos están en el banco de registros, se envíana la ER•si no hay espacio en la ER, hay un parón estructural

Ejecución:•si falta algún operando, se vigila el CDB•cuando están listos los dos, se ejecuta la operación

Almacenamiento:•cuando termina la ejecución, los resultados se ponen en•el CDB. De ahí van a los registros y a las UF que los esperen.

Page 33: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

33

Segmentación II Planificación dinámica

Diferencias con el marcador:•no se comprueban las dependencias EDE y EDL: se eliminanal renombrar en la fase de lanzamiento•no se espera a que los datos lleguen a los registros: el CDBlos lleva a las UF que los necesitan•los ‘loads’ y ‘stores’ se tratan como unidades funcionales básicas

Implementación del renombrado del registros:•hay 11 fuentes de datos: 6 entradas del buffer de loads, 3 entradas en la ER de suma y 2 en la de multiplicación•a cada operando en la fase de lanzamiento se le da un identificadorde 4 bits, que indica qué fuente proporciona el dato (0 si listo)•de esta manera, se extiende el nº de registros de 4 a 11

Page 34: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

34

Segmentación II Planificación dinámica

•Información que se almacena en la estación de reserva:•Op: operación que se tiene que ejecutar•Qj,Qk: ER que producen los operandos (0 si listo o no necesario)•Vj,Vk: valor de los operandos•Ocupado: si la entrada está ocupada

Sólo es válida la información de Q o V (no ambas a la vez)

•Información que se almacena en cada registro y en los buffers de stores:

•Qi: ER que genera el valor que hay que enviar a memoria•V: valor que hay que enviar a memoria

Page 35: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

35

Segmentación II Planificación dinámica

Ejemplo de ejecución:

De nuevo vamos a ejecutar el código:

ld f6,34(r2)ld f2,45(r3)multd f0,f2,f4subd f8,f6,f2divd f10,f0,f6addd f6,f8,f2

Page 36: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

36

Inst lanz. ejec. almac.ld f6,34(r2) sí sí síld f2,45(r3) sí símultd f0,f2,f4 sísubd f8,f6,f2 sídivd f10,f0,f6 síaddd f6,f8,f2 sí

Segmentación II Planificación dinámica

Punto de partida: el código se encuentra en esta situación:

OJO!: en este caso, esta información no se encuentra físicamenteen ninguna tabla. Se muestra para facilitar la comprensión

(En negrita las variaciones frente al modelo de marcador)

Page 37: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

37

Estaciones de reserva:

UF ocup op Vj Vk Qj Qkadd1 sí sub M(34+R(r2)) load2add2 sí add add1 load2add3 nomult1 sí mult R(f4) load2mult2 sí div m(34+R(r2)) mult1

Estado de los registros:

f0 f2 f4 f6 f8 f10 f12 … f30mult1 load2 add2 add1 mult2

Segmentación II Planificación dinámica

Page 38: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

38

Inst lanz. ejec. almac.ld f6,34(r2) sí sí síld f2,45(r3) sí sí símultd f0,f2,f4 sí sísubd f8,f6,f2 sí sí sídivd f10,f0,f6 síaddd f6,f8,f2 sí sí sí

Estado cuando multd está lista para escribir

Segmentación II Planificación dinámica

La instrucción de suma ha podido terminar, porque el renombrado elimina la dependencia EDL con la división y la resta

Page 39: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

39

Segmentación II Planificación dinámica

Estaciones de reserva:

UF ocup op Vj Vk Qj Qkadd1 noadd2 noadd3 nomult1 sí mult m(45+R(r3)) R(f4)mult2 sí div m(34+R(r2)) mult1

Estado de los registros:

f0 f2 f4 f6 f8 f10 f12 … f30mult1 mult2

Page 40: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

40

Segmentación II Predicción dinámica de saltos

Predicción dinámica de saltos

En el tema anterior vimos 4 posibilidades al encontrar un salto:•parar el cauce•suponer que se toma•suponer que no se toma•ejecución retardada

Vimos que:•parar significa perder rendimiento•suponer que se toma o no significa una gran penalización en caso de equivocarnos (una fracción considerable de las veces)•la ejecución retardada tiene una efectividad limitada

Page 41: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

41

Segmentación II Predicción dinámica de saltos

Suponer que el salto va a ir en un determinado sentido:•tiene una fracción de fallo importante•si se supone tomado, se tarda en calcular el destino

PERO!•es transparente al programador•si se acierta en el sentido, la penalización es la menor

por lo tanto:hay que estudiar mejor esta solución

Page 42: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

42

Segmentación II Predicción dinámica de saltos

Objetivoadivinar en qué sentido va a ir cada salto

El problema de los esquemas utilizados es que eran estáticos:siempre hacen la misma predicción (porque es estática, se hace a priori y no hay otra posibilidad)

Pero los saltos no se comportan asíno todos saltan en el mismo sentidobastantes saltos (analizados de forma individual) no saltan siempre en el mismo sentido

Información sobre la que se trabaja:el comportamiento anterior del salto (del salto concreto, ode todos los saltos, según el esquema)

Page 43: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

43

Segmentación II Predicción dinámica de saltos

Consiste en una tabla de bits a la que se accede con la dirección del salto

Ejemplo: si hay 1024 bits, se accede con los 10 bits inferiores de la dirección del salto

El bit está a 1 si la última vez el salto se tomó, a 0 si no

La predicción es que el salto se comporta como la última vez

Si se predice mal, se corrige la predicción

Presenta el problema de que a varios saltos les correspondela misma entrada en la tabla (aliasing)

Esquema inicial: la Tabla de Bits

Page 44: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

44

Segmentación II Predicción dinámica de saltos

Revisión: la Tabla de Contadores (TC)

En lugar de un bit, las entradas de la tabla son contadores de 2 bits con saturación:

•cuando un salto se toma, se incrementa (sin pasar de 3)•cuando no se toma, se decrementa (sin pasar de 0)

El acceso a la tabla se hace igual: con los bits inferiores de ladirección del salto

La predicción se hace de la siguiente manera:•si el contador vale 2 ó 3, el salto se predice tomado•si vale 0 ó 1, se predice no tomado

Cuando el salto se ejecuta, el valor del contador se actualiza según el algoritmo visto

Page 45: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

45

Segmentación II Predicción dinámica de saltos

Se plantea un problema: •hasta el fin de la fase de decodificación no se sabe si es un salto•para entonces, ya podemos saber si se toma en muchos casos

Por lo tanto: necesitamos identificar los saltos antes

Para ello utilizamos otra tabla: el buffer de destinos de saltos(‘branch-target buffer’)

Esta tabla se va a acceder en la fase de búsqueda con el CP (de forma simultánea a la búsqueda de la instrucción)

El acceso nos dirá si la instrucción que buscamos es un salto, (y si lo es, la dirección a la que salta (si se toma))

Page 46: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

46

–Se trata de una tabla de dos columnas: •en la primera (de memoria asociativa) se almacenan direcciones de saltos •en la segunda, los sitios a los que se salta en esos saltos si se toman

–Si encuentra el valor que se le pide:•la instrucción que estamos buscando (recordad: estamos en lafase de fetch) es un salto•la entrada correspondiente de la segunda columna es el destinodel salto

–Si no lo encuentra: no es un salto (o lo es pero no se ha ejecutado aún ninguna vez)–Cuando se sabe que una instrucción es un salto, se almacenan su dirección y la de su destino en la tabla

El Branch-Target Buffer (TDS, BTB)

Segmentación II Predicción dinámica de saltos

Page 47: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

47

Segmentación II Predicción dinámica de saltos

El BDS (BTB)

Page 48: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

48

Segmentación II Predicción dinámica de saltos

Resumiendo el mecanismo de predicción:

•Tenemos el búffer de destinos de saltos (BDS), que nos dice si una instrucción (identificada por su dirección) es un salto,y adónde salta

•Tenemos la tabla de contadores (TC), que nos dice si el salto se va a tomar o no

•En la fase de búsqueda hacemos tres accesos simultáneos:–a la memoria, por la instrucción–al BDS (BTB), para ver si es un salto, y cuál es el destino–a la TC, para ver si se toma el salto o no.

Page 49: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

49

•Si el BDS dice que no es un salto, se sigue la búsqueda secuencial•Si el BDS dice que es un salto, y la TC que no se toma, lo mismo•Si el BDS dice que es un salto, y la TC que se toma, se sigue la búsqueda por el destino del salto

•Cuando se ha ejecutado el salto, hay que actualizar la información de las tablas

–si era un salto y el BDS no nos avisó, se habilita una entrada para este nuevo salto–si el salto se toma, se incrementa la entrada correspondiente de la TC –si no, se decrementa–OJO: incrementos y decrementos con saturación

Segmentación II Predicción dinámica de saltos

Mecanismo de predicción (cont):

Page 50: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

50

Segmentación II Predicción dinámica de saltos

Rendimientos: TC con 4096 entradas

Page 51: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

51

Segmentación II Predicción dinámica de saltos

Rendimientos: comparación entre TC con 4096 entradas TC con entradas ilimitadas

Page 52: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

52

Segmentación II Predicción dinámica de saltos

Mejora en la predicción: la historia global

Acceder a la TC con la dirección del salto=>para realizar la predicción sólo se utiliza el comportamiento del salto concreto

PERO: a veces, el comportamiento de saltos próximos al queestudiamos nos da información útil:

if(aa==2)aa=0;

if(bb==2)bb=0;

if(aa!=bb){

...

Page 53: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

53

Segmentación II Predicción dinámica de saltos

En DLX:

subi r3,r1,#2bnez r3,l1add r1,r0,r0

l1: subi r3,r2,#2bnez r3,l2add r2,r0,r0

l2: sub r3,r1,r2beqz r3,l3

Si los saltos 1 y 2 no se toman, el salto 3 se tomará (r1 y r2 son iguales)

Page 54: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

54

Segmentación II Predicción dinámica de saltos

Utilización de la historia global

Page 55: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

55

Segmentación II Predicción dinámica de saltos

Comparación de rendimientos

Page 56: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

56

Segmentación II Predicción dinámica de saltos

Variantes del predictor basado en historia

El esquema visto equivale a concatenar la historia con la dirección del salto

PROBLEMA: las tablas se hacen grandes enseguida:10 bits de dirección + 6 de historia =>64K entradas

En lugar de concatenar, hacer la XORdirección historia = índicede esta forma, el tamaño de las tablas no se dispara

También se puede utilizar una historia particular para el salto

Para el mismo coste, el que mejor rendimiento da es el segundo

Page 57: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

57

Segmentación II Predicción dinámica de saltos

Comparación de predictores (I)

Gráfica tomada de: Combining Branch Predictors. Scott McFarling. Compaq WRL.

Page 58: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

58

Segmentación II Predicción dinámica de saltos

Comparación de predictores (II)

Gráfica tomada de: Combining Branch Predictors. Scott McFarling. Compaq WRL.

Page 59: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

59

Segmentación II Predicción dinámica de saltos

¿Qué hacemos con los saltos indirectos?

La dirección de destino no está en el código de la instrucción

Por lo tanto, hay que hacer un acceso a memoria o a un registro

PEOR AÚN: el destino no es siempre el mismoEjemplos: retorno de subrutina, sentencias ‘switch’

El 85% de los saltos indirectos en los SPEC son retornos:resulta apropiado centrarse en ellos

Page 60: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

60

Segmentación II Predicción dinámica de saltos

Pila de direcciones de retorno

•Es una estructura LIFO en la CPU

•Almacena las direcciones de retorno:

–se introduce una nueva cuando se ejecuta una instrucción CALL

–se retira con el retorno

Page 61: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

61

Segmentación II Predicción dinámica de saltos

Porcentajes de acierto de la pila de retornos

Page 62: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

62

Segmentación II Renombrado de registros

Renombrado de registros

Se trata de una técnica para eliminar dependencias “falsas”

Es algo parecido a lo que se hacía con el algoritmo de Tomasulo (allí se hacía de forma implícita; ahora es explícito)

Básicamente consiste en implementar más registros de los queve el programador. Los nombres que usa el el programadorson lógicos; los que usa la máquina, físicos. El Hw. establece una correspondencia entre ellos

Page 63: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

63

Segmentación II Renombrado de registros

Ejemplo de funcionamiento del renombrado

or r5,r0,Dirld r6,0(r5)ld r8,8(r5)ld r9,16(r5)ld r7,24(r5)add r1,r8,r9add r8,r9,r7st r1,0(r8)ld r8,0(r6)

or f1,r0,Dirld f2,0(f1)ld f3,8(f1)ld f4,16(f1)ld f5,24(f1)add f6,f3,f4add f7,f4,f5st f6,0(f7)ld f8,0(f2)

Page 64: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

64

Segmentación II Renombrado de registros

La tabla de equivalencias al final del código es:

r5

r6

--

r9

r7

r1

--

r8

f1

f2

f3

f4

f5

f6

f7

f8

-- f9

Page 65: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

65

Segmentación II Predicación

Predicación

Objetivo: eliminar la presencia de algunos saltos

Ejemplo: la función valor absoluto:a=abs(b);

si b es positivo, a=b;si es negativo, a=-b;

if(b<0)a=-b;

elsea=b;

Page 66: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

66

Segmentación II Predicación

El código, en ensamblador:

cmpl r1,r3,r0beqz r1,L1 ;saltar si r3 (b) es positivosub r2,r0,r3 ;r2 (a) -r3br L2

L1:sub r2,r3,r0 ;r2 r3

L2: ...

Page 67: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

67

Segmentación II Predicación

Introducimos en el repertorio una instrucción de transferenciacondicional: cmovz

transfiere el contenido de un operando al destino, si el segundo operando es cero. Su uso para este ejemplo:

cmpl r1,r3,r0; r2:a; r3:b;sub r2,r0,r3; a -bcmovz r2,r3,r1; si r1==0 (b>0), a b

En el caso peor se eliminan 2 saltos, en el mejor 1

Page 68: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

68

Segmentación II Predicación

•En general, la predicación consiste en instrucciones que se ejecutan o no, dependiendo del valor de uno de sus operandos

•Se pueden incluir unas cuantas, de los tipos más usados (transferencia, suma)

•O se puede ampliar a todo el repertorio, haciendo que sean condicionales implícitamente, según un valor preestablecido (un registro), varios (un conjunto de registros), o una etiquetadel dato

•Importante: la instrucción no debe causar excepciones (en general, dejar rastros de su existencia) si la condición no se cumple

Page 69: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

69

Ventajas:•elimina saltos, que implican parones•no tiene prácticamente coste Hw.

Inconvenientes:•no es transparente al compilador / programador•sólo es útil para saltos cortos, del tipo if (else), con cuerpos pequeños•si la condición no se cumple, se ha desaprovechado un ciclo

Segmentación II Predicación

Page 70: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

70

Segmentación II Procesadores Superescalares

Procesadores superescalares

•Aumentan las prestaciones lanzando varias instrucciones en cada ciclo

•La lógica de control se vuelve muy compleja

•Las instrucciones deben cumplir una serie de restriccionespara poderse lanzar a la vez

–no deben existir dependencias entre ellas (de datos, de control, estructurales)–algunas máquinas no permiten lanzar un load hasta quese comprueba que no hay ningún store previo a la mismadirección

Page 71: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

71

Segmentación II Procesadores Superescalares

El Pentium:lanza hasta 2 instrucciones por ciclo, pero:

el segundo cauce es más simple =>dependencias estructuralesno permite lanzar instrucciones con dependencias de datos

realiza especulación en el primer salto que se encuentra(con una tabla de contadores sencilla)

El Alpha 21164:lanza hasta 4 instrucciones por ciclo, pero:

máx. 2 de enterosmáx. 2 de coma flotanteno permite el paso a loads hasta comprobar los storesespecula el primer salto

Page 72: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

72

Segmentación II Procesadores Superescalares

Procesadores VLIW (Very Long Instruction Word)

Agrupan varias instrucciones en una palabra muy larga

Trasladan la planificación al compilador (es el que agrupalas instrucciones)

Ventajas:la lógica es más simple que para un superescalar

Inconvenientes:la rigidez de la planificación (es estática) impide aprovechartodo el paralelismo de la aplicación en muchos casos

Page 73: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

73

Segmentación II Procesadores Superescalares

Procesadores Superescalares Avanzados

Utilizan planificación dinámica y ejecución fuera de orden

Fases (visión general)•búsqueda: acceden a caché, y obtienen varias instruccionesde una vez; las depositan en la cola de prebúsqueda•decodificación: se toman instrucciones de la cola de prebúsqueda,se decodifican, y se identifican sus operandos•renombramiento: real (no como el alg. de Tomasulo). Las instrucciones se almacenan en el búffer de reordenamiento (Reorder Buffer)

Page 74: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

74

Fases (cont)•lanzamiento:cuando sus operandos estén listos, y haya huecoen la UF que les corresponde, se ejecutan•retirada (commit): las instrucciones se ejecutan fuera de orden,en cuanto están listos los operandos, pero no se eliminan delbúffer de reordenamiento. Se retiran de él en el orden delprograma. Con esto se consigue:

–acortar las cadenas de dependencias–mantener la ilusión de ejecución secuencial

Segmentación II Procesadores Superescalares

Ejemplos: el Pentium Pro (PII, PIII), el Alpha 21264, el MIPS R12000 ...

Page 75: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

75

Segmentación II Ejemplo: el Pentium Pro

Ejemplo de superescalar: el Pentium Pro

Características:•lanzado en 1995•frecuencia de 150 MHz•arquitectura de 32 bits•repertorio de instrucciones CISC•juego de 40 registros (la arquitectura tiene 8)•planificación dinámica, ejecución fuera de orden•decodifica hasta 3 instrucciones por ciclo•retira hasta 3 instrucciones ejecutadas por ciclo•cauce de 11 etapas

Page 76: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

76

Segmentación II Ejemplo: el Pentium Pro

Diagrama debloques del Pentium Pro

Page 77: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

77

Segmentación II Ejemplo: el Pentium Pro

Descripción del cauce:

Búsqueda: descompuesta en 3 sub-etapas:1. cargar una línea de caché (32B)2. identificar instrucciones, comprobar saltos, realizarpredicción (si hay)3. alinear instrucciones

Decodificación: descompuesta en 2 sub-etapas:1. traducir a micro-operaciones (RISCificar)2. copiar a la cola de instrucciones decodificadas (hasta6 micro-operaciones)

Traducción de operandos: se determina la situación de los operandos fuente (en registros físicos o lógicos)

Page 78: 1 Tema 4: Segmentación II. Introducción a los Superescalares. Objetivos Referencias Aprovechamiento de una arquitectura segmentada Planificación dinámica

78

Segmentación II Ejemplo: el Pentium Pro

Descripción del cauce (cont.):

•ROB: se busca una entrada en el ROB (búffer de reordenamiento) a la instrucción (máx. 3 por ciclo). Si los datos están listos, se copia la instrucción a la estación de reserva•Lanzamiento: cuando una instrucción de la ER tiene sus datos listos, y hay sitio en su UF, se envía (no necesariamente en orden)•Ejecución: el número de ciclos depende de la operación•Retirada: descompuesta en 3 sub-etapas:

1. si una instrucción se ha ejecutado, y todos los saltos anteriores han sido bien predichos, y se comprueba que la instrucción debía ser ejecutada, se marca para retirar2. la instrucción se elimina del ROB, se actualizan los registros físicos implicados (máx. 3 por ciclo). Estose hace en orden