Está en la página 1de 38

TEMA 2.

Arquitectura del core:


renombrado de registros

1
Contenido
•  1. Introducción
•  2. Renombrado registros físicos
•  3. Liberación de registros
•  4. Mecanismos de recuperación

–  Bibliografía
•  Jean-Loup Baer
Microprocessor Architecture: from simple pipelines to chip multiprocessors
Cambridge University Press, 2010
•  J.P. Shen, and M.H. Lipasti,
Modern Processor Design: Fundamentals of Superscalar Processors,
McGraw Hill 2005
–  Lectura:
AkkaryH. Akkary, R. Rajwar, and S. T. Srinivasan,
“Checkpoint processing and recovery: Towards scalable large instruction window processors,”
in Proceedings of the 36th International Symposium on Microarchitecture, December 2003.

AAV - Julio Sahuquillo -2-


1. Introducción
•  Tipos de dependencias:
–  Verdaderas: RAW
–  De salida: WaW
–  Antidependencia: WaR

(i1) lw R5,4(R10)!
(i2) sub R6,R5,R9!
(i3) add R5,R7,R8!

•  Las dos últimas se denominan falsas dependencias o


dependencias de nombre, ya que no hay flujo de datos entre ellas y la
dependencia aparece por “tener el mismo nombre”
•  Renombrado:
–  Resuelve las dependencias de nombre asignando posiciones de
almacenamiento distintas
•  Facilita ejecución fuera de orden --> la add no espera si la load falla
•  Deben existir más posiciones de almacenamiento que registros lógicos

AAV - Julio Sahuquillo -3-


Renombrado fuentes y destino
•  Tras decodificar las instrucciones se renombran los registros:
–  Registros fuente:
•  Se aplica una función de correspondencia para saber dónde se encuentra el
operando
–  Registro destino: se asigna una nueva posición de almacenamiento al registro destino.
•  Esta posición se utilizará para encadenar las dependencias
•  Si dos instrucciones escriben en el mismo registro lógico, se proporcionan dos
posiciones distintas

add R4,R2,R8 Registros lógicos Posición de almacenamiento


R4, R2, R8 correspondencia Ej. Estación de reserva

•  El renombrado no resuelve los riesgos RaW, hay que aplicar Tomasulo


•  Aplicaciones
–  Estaciones de reserva
–  Entradas del ROB
–  Banco de registros físico

AAV - Julio Sahuquillo -4-


Renombrado con ER
•  Mediante Estaciones de Reserva
–  Tomasulo
•  Unidad de FP del IBM 360/91
–  2 unidades de ejecución
•  1 sumador/restador y 1 multiplicador/divisor
–  No tenía ROB
Banco de registros

Registro Lógico Busy Marca (ER) Valor


5
•  Busy=0 ! valor contiene el último resultado producido
•  Busy=1 ! la marca indica la ER que lo producirá.
la marca cambia cuando se decodifica otra productora

Ejemplo:!
add R5,R7,R8 ! la marca de R7 (por ej, a1)
se copia en la ER donde se envía la add!

AAV - Julio Sahuquillo -5-


Renombrado con ROB
•  Mediante posiciones en el ROB
–  Sohi

Banco de registros

Registro Lógico Busy # Entrada en el ROB Valor

•  Las estaciones de reserva se pueden liberar tras el issue


•  Ejemplos: HAL Sparc64, Pentium III

AAV - Julio Sahuquillo -6-


Renombrado con ROB (cont.)

•  Mediante posiciones en el ROB (cont)

Writeback

add … sub add


datos Commit
(escritura en el banco)

tail head

Dispatch
(reserva entrada) Dispatch
(lectura operandos)

AAV - Julio Sahuquillo -7-


Limitaciones de renombrado con ROB
•  Inconvenientes de renombrar con posiciones del ROB
–  Posibles accesos infructuosos al ROB:
•  si el registro está bloqueado se accede al ROB aunque
la instrucción no haya producido el dato
–  Desperdicio de área:
•  muchas instrucciones no producen datos
•  replica de datos en el ROB + ER
–  Desperdicio de consumo
•  Un mismo dato se escribe 2 veces: en el ROB y en el banco en
commit

•  Solución alternativa Renombrar con registros físicos:


–  Los datos solo pueden estar en el banco de registros
•  Solo se accede cuando se sabe que está producido
•  Los datos solo se escribe una vez

AAV - Julio Sahuquillo -8-


Renombrado en procesadores comerciales
Renombrado en el ROB
–  PentiumPro
–  K5
•  Banco de registros físicos
–  R10000
–  Alpha 21264
–  Power1
–  Power2
–  Nx586

AAV - Julio Sahuquillo -9-


Nueva ruta de datos
•  El banco de registros se encuentra tras la cola de issue: ventana de
instrucciones centralizada
In-order In-order/OoO In-order

Icache Cola L/S DCache

ROB
Renombrado

Cola de
B. Reg.
issue

Fetch Decode Dispatch Issue y Write-back Commit


Execution
AAV - Julio Sahuquillo -10-
Procesador ejemplo

AAV - Julio Sahuquillo -11-


2. Renombrado con registros físicos
–  Métodos
•  Mediante tabla de correspondencia directa o RAT
•  Mediante tabla CAM (content adressable memory)
•  Mediante uso de contadores

AAV - Julio Sahuquillo -12-


Renombrado con tabla RAT
•  Método de la Tabla RAT (Register Alias Table). Ejemplo: Pentium 4
–  Banco de registros físico: conjunto de posiciones de almacenamiento
•  Nº de registros físico > Nº registros lógicos (Ej. 64 vs 32)
•  Indexado por número de registro físico
•  Los valores sólo se leen/escriben en el banco (ni en el ROB ni en las ER)
Banco de registros

Reg. Físico Valor Busy Free


6
bits: 32 1 1

–  Registros lógicos: registros utilizados en la instrucción


•  Hace falta un mapping de registro lógico ! registro físico
•  Se utiliza una tabla (RAT en Intel) Indexada por número de registro lógico
•  La RAT contiene el último mapping válido (realizado)
•  La RAT contiene menos entradas que registros físicos, los registros que no se
encuentran en la RAT (asociados con un mapping) se encuentran libres
RAT

Cola de registros libres


Reg. Lógico # Registro físico
5
bits: 6

AAV - Julio Sahuquillo -13-


El renombrado en el pipeline
•  Las acciones que hay que realizar tras el fetch son:
–  Decodificar, renombrar y dispatch
–  Las etapas asociadas varían de 2 a 3 según el procesador
–  Asumiremos que son 3 etapas distintas en el tema

•  El renombrado conlleva acciones en todas las etapas tras la


decodificación. Etapas:
–  Rename
–  Dispatch
–  Issue
–  Writeback
–  Commit

AAV - Julio Sahuquillo -14-


Renombrado de fuentes y destino
•  Tarea de renombrado: tras decodificar la instrucción se renombran los operandos
–  Renombrado fuentes:
•  Acceso a la RAT para obtener el último mapping
–  Renombrado destino:
•  Se asigna un registro libre, se crea un nuevo mapping y se actualiza la RAT

–  Ejemplo: renombrado de add r3,r1,r2!

Antes de decodificar Después de decodificar


RAT RAT
r0 P8 r0 P8
r1 P7 r1 P7
r2 P5 r2 P5
r3 P1 r3 P2
r4 P9 r4 P9
… …

Libres P2 P6 P13 Libres P6 P13

Instrucción renombrada add P2, P7, P5

AAV - Julio Sahuquillo -15-


Renombrado: etapa dispatch
•  Tras renombrar se realiza el dispatch (preparar entradas en las ER, ROB y LSQ)
•  En la ER debe indicarse si el valor se encuentra en el BR o no producido (bit busy)
–  Hace falta acceder al banco de registros físico para saberlo
–  Realmente solo hace falta acceder a la columna busy (puede desacoplarse)

add r3,r1,r2 ! add P2, P7, P5 ! add P2, P7 (ready), P5 (busy)

BR físico
RAT Valor Busy
5 0 P8 0 3 1
6 1 4 1
1 1 P7 7
2 2 P5 2 6 1
5
3 P1 3 5 1
4 P9 4 1 1 1 Ready

… 5 11 1 0
31 6 9 1 1
7 12 0 1

63

AAV - Julio Sahuquillo -16-


Liberación de registros: conceptos

–  Un registro se puede liberar cuando se sabe que ninguna instrucción lo va a


consumir
–  Cuando una instrucción hace commit es la más vieja del pipeline
•  puede liberar el mapping previo de su registro lógico destino NO su mapping
–  Ejemplo:

i1) add r3,r1,r2 (r3!P4)!


i2) mult r4,r3,r2 !
i3) sub r6,r2,r3!
i4) add r3,r5,r7 (r3!P5)!

•  r3 se ha mapeado a 2 registros físicos distintos por i1 e i4


•  cuando i4 llega a commit todas las consumidoras de P4 han abandonado el pipeline
! i4 libera P4

–  Para poder liberar el mapping previo, se debe guardar dicho valor.


Lo leeremos cuando se decodifica una instrucción ! nuevo campo en el ROB
–  Cuando una instrucción haga commit lee el campo y liberará el registro
correspondiente

AAV - Julio Sahuquillo -17-


Rename, dispatch y liberación de registros
•  Renombrado: acceso a la RAT con liberación de registros
–  Lectura mapping fuentes
–  Obtener mapping previo: lectura entrada registro destino
–  Asignar un registro libre
–  Actualizar mapping
Al ROB
P1: destino físico previo (Prev dest)
r3: destino lógico (Log dest)
add r3, r1, r2
RAT
5 0 P8 6
1 1 P7 7
2 2 P5 5 Poner a 1 el bit Busy
3 3 P2 P1 1 en la tabla
4 P9

31 add P2,P7,P5!

a la IQ
Libres P2 P6 P13

head tail

AAV - Julio Sahuquillo -18-


Renombrado: etapa issue

•  Issue (detalles): cuando se lanza se leen los operandos


del banco
add r3, r1, r2 add P2, P7, P5
Cuando operador libre y operandos listos, se lanza y se leen del banco
(lectura después de lanzar)

IQueue
Banco de registros físico
suma
Valor Busy
Op Rdy (2 bits) 3 (11 en binario) 0 3 1
1 4 1
Dest 2 2 6 1
3 5 0
Src2 5 6 4 1 1 32
5 5 11 0 11
Src1 7 6 9 1
7 7 12 0 12
Entrada ROB 22 …
(tag) 63
AAV - Julio Sahuquillo -19-
Renombrado: etapa writeback
•  Writeback: escritura en el banco de registros físico, busy=0
•  Acceder al ROB para indicar que ha completado (WB=1)
•  En las ER/IQ debe indicarse que el operando ya está listo (wakeup)

add r3, r1, r2 add P2, P7, P5


IQueue Banco de registros físico
Valor Busy
0 3 1

Dest 2 6 1 4 1 0: producido
Entrada del ROB 2 2 23 0 1: pendiente
22 3 5 0
(tag)
6 4 1 1 32
ROB 5 5 11 0 11
6 9 1
7 7 12 0 12
Dest Log 3 …
Map. previo 1
63
WB 1
22
AAV - Julio Sahuquillo -20-
Renombrado: etapa commit

•  Commit: liberación de registros


–  Acceso al ROB y obtención del registro a liberar

add r3, r1, r2 add P2, P7, P5


Banco de registros físico
ROB Valor Busy
0 3 1
Exc 0 1 4 1
Log Dest 3 2 23 0
Prev dest 1 3 5 0
WB 1 4 1 1
5 11 0
6 9 1
7 12 0
Libres P6 P13 P1 …
63
head tail

AAV - Julio Sahuquillo -21-


¿Cómo queda el ROB?
•  Tipo de información
–  Debe indicar si la instrucción es especulativa
–  Si ya ha completado su ejecución (WB)
•  Si fallo especulación
–  Recuperar el estado
•  Si no
–  Actualizar el estado
•  Información ROB modelo procesador básico (AIC)
–  Dirección de la instrucción (PC)
–  Dest: registro destino, entrada en buffer de escritura, o dir. destino (saltos)
–  Value: valor a almacenar o condición (saltos)
–  Estado: indica si ha hecho WB
–  Pred: predicción realizada (saltos)
Busy PC inst Dest Value Estado Pred
Bits: 1 32 5 32 1 1 Total: 72

AAV - Julio Sahuquillo -22-


¿Cómo queda el ROB?
•  Información ROB nuevo modelo
–  Previous mapping: se utiliza para liberar registros
–  Pred:
•  Si la especulación se realiza con multiples saltos, se utilizan varios bits

Busy PC Intr. Mapping Previo Destino Lógico Estado Pred


Bits: 1 32 6 5 1 1 Total: 46

AAV - Julio Sahuquillo -23-


Ejemplos procesadores comerciales
•  Registros físicos:
Registros Registros
ROB
Lógicos Físicos
32 int 64 int
R10000 32
32 fp 64 fp
32 int 80 int
Alpha 21264 80
32 fp 72 fp
16 int
Pentium 4 126
16 fp
128
16 int
Athlon 72
16 fp
88 fp/mmx

•  Se añaden de 20 a 80 registros
–  Realizan una tarea primaria del ROB, y determinan cuantas
instrucciones pueden haber en ejecución
(entre issue y commit)

AAV - Julio Sahuquillo -24-


Ejercicio 1
•  Características procesador
–  Etapas
•  IF, ID, Rn (renombrado y dispatch), I , En ejecución, WB, C
•  Después de dispatch el símbolo “–” indicará que está en cola de issue
–  Unidad de carga. Latencia=2 (L1,L2) IR=1/2
–  Suma/resta. Latencia=2 (A1,A2) IR=1
–  Mult/div. Latencia=3 (M1,M2,M3) IR=1
•  Se pide
–  Realiza el diagrama de instrucción/tiempo del siguiente código
–  Obtén la evolución de la tabla de renombrado
RAT Libres
–  Estado inicial f0 f2 f4 f6 f8 f10
p10 p6 p8 p4 p16 p20 p22 p24 p26 p28

! ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 !
L.D F6,32(R2) !
L.D F2,48(R2) !
MULT.D F0,F2,F6 !
ADD.D F8,F6,F10!
ADD.D F4,F10,F10!

AAV - Julio Sahuquillo -25-


Ejercicio 1
•  Características procesador
–  Etapas
•  IF, ID, Rn (renombrado y dispatch), I , En ejecución, WB, C
•  Después de dispatch el símbolo “–” indicará que está en cola de issue
–  Unidad de carga. Latencia=2 (L1,L2) IR=1/2
–  Suma/resta. Latencia=2 (A1,A2) IR=1
–  Mult/div. Latencia=3 (M1,M2,M3) IR=1
•  Se pide
–  Realiza el diagrama de instrucción/tiempo del siguiente código
–  Obtén la evolución de la tabla de renombrado
RAT Libres
–  Estado inicial f0 f2 f4 f6 f8 f10
p10 p6 p8 p4 p16 p20 p22 p24 p26 p28

! ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 !
L.D F6,32(R2) !
L.D F2,48(R2) !
MULT.D F0,F2,F6 !
ADD.D F8,F6,F10!
ADD.D F4,F10,F10!

AAV - Julio Sahuquillo -26-


Soporte a la ejecución especulativa
•  Si se produce un fallo de especulación hay que recuperar el estado de la
máquina
•  No es necesario recuperar el contenido del banco de registros físico
sino solo el mapping correcto
–  Si una instrucción de salto se predice incorrectamente, cuando llega a
commit se restaura solo la RAT para recuperar el estado
! todos los mappings posteriores a la instrucción de salto deben
deshacerse
–  Algunas instrucciones más jóvenes habrán escrito en el banco
–  Ninguna ha escrito en la memoria ! las stores acceden tras commit

AAV - Julio Sahuquillo -27-


Ejecución especulativa
•  Técnicas alternativas de restauración de la RAT, se clasifican en
función de cuándo y como se restauran

•  ¿Cuándo se restaura?
–  En la etapa commit o writeback de la instrucción de salto.

•  ¿Cómo?
–  A partir de la información almacenada en el ROB
–  Mediante checkpoints

•  Estudiaremos:
–  Recuperación en commit y writeback a partir del ROB

AAV - Julio Sahuquillo -28-


Restauración de la RAT en COMMIT

•  Activación del recover en COMMIT de la instrucción de salto.


Alternativas:

•  1. Utilizar una tabla:


–  front-end RAT o simplemente RAT
•  2. Utilizar 2 tablas:
–  front-end RAT y retirement RAT

AAV - Julio Sahuquillo -29-


Restauración de la RAT en commit
- Una tabla RAT
•  El valor que debe restaurarse es el último mapping realizado por la
última instrucción que produce dicho registro previa al salto
! Problema: cuando la instrucción de salto llega a commit
ya no se encuentra en el ROB
•  Solución:
–  El valor a restaurar se encuentra en el campo mapping previo
de la primera instrucción productora de dicho registro renombrada
después del salto.
–  “Si hay acierto de especulación el mapping previo es el registro que
se libera pero si hay fallo se utiliza para restaurar la RAT, y el que
se libera es que se encuentra en la RAT que deja de ser válido”
•  Como puede haber más de una instrucción, con una tabla los mappings
deben deshacerse en sentido inverso
–  ! debe recorrerse el ROB desde el tail hasta el head para acceder
a estos valores
–  Asumiendo que el ROB tiene un puerto de lectura,
cada acceso al ROB requiere un ciclo
! si hay que recorrer X entradas tardaremos X ciclos
–  Esta tarea recibe el nombre de RECOVER
AAV - Julio Sahuquillo -30-
Restauración de la RAT en commit
- Una tabla RAT: ejemplo 1
•  Cconsideremos que solo se ha decodificado una instrucción productora
del registro después del salto

ROB
add r3,r5,r7 (P1) RAT
bnez r4, dest
add r3,r1,r2 (P2) add P2, P7, P5 0 P8
1 P7
Dest Lógico 3 2 P5
Map. previo 1 3 P2 P1
WB 1 4 P9

31

Libres P6 P13 P2
head tail

AAV - Julio Sahuquillo -31-


Alternativa 1: 1 Tabla RAT.
- Ejemplo 2
add r2,r3,r4 || r2 ! P10 (previo P8)

beqz r2, etiqueta



addi r2,r3,6 || r2 ! P12

sub r2, r2, r5 || r2 ! P14
ROB
Dest lógico 2 2
RAT Map. previo 12 … 10
Phy. mapp. 14 12
2 10 sub addi beqz
tail head

•  Si el contenido de la RAT (entrada 2) es un 10 (tras renombrar la add),


indica la secuencia de cambios hasta
que se renombra la instrucción sub.
•  Indica que cambios deben deshacerse (y en que orden) si falla la
instrucción de salto

AAV - Julio Sahuquillo -32-


Alternativa 2: 2 tablas.
- Ejemplo 2
•  Se añade otra tabla al final del pipeline (retirement RAT).
•  Inicialmente el contenido de ambas tablas coinciden.
•  Las instrucciones realizan las mismas modificaciones en ambas.
•  Cuando la instrucción de salto llega la commit, si falla, lo único que tiene
que hacer es copiar la retirement RAT en la front-end RAT

Front-end Retirement
RAT ROB
RAT
Dest lógico 2 2 2
2 14 Map. previo 12 … 10 … 8 2
Phy. mapp. 14 12 10
sub addi beqz add

tail head
¿cuál es el último mapping válido antes de la instrucción de salto?
¿qué valor debe contener la retirement RAT tras el commit de la ADD?
¿qué valor encontrará la add en la retirement RAT?

AAV - Julio Sahuquillo -33-


Restauración de la RAT en WB
•  Optimización sobre recuperación en commit: recover en WB
–  El recover se puede activar tan pronto como la instrucción de
salto se resuelva
–  Mejora las prestaciones de un 8 al 10%
–  Alternativas:
•  Recorrer el ROB desde el tail hasta la instrucción de salto
–  Se restaura el mapping previo (igual que en la alternativa 1)
•  Recorrer el ROB desde el head hasta la instrucción de salto
–  Al igual que antes se utilizan la front-end RAT y la retirement RAT
–  Se restauran los mappings en la retirement RAT y ésta se copia en la
front-end RAT
–  El mapping que se restaura es el destino físico (no el previous mapping)

–  Lectura:
•  H. Akkary, R. Rajwar, and S. T. Srinivasan,
“Checkpoint processing and recovery: Towards scalable large instruction window
processors,”
Proc. of the 36th International Symposium on Microarchitecture, December 2003.

AAV - Julio Sahuquillo -34-


Restauración de la RAT utilizando checkpoints

•  Checkpoint:
–  Copia de una estructura del procesador
–  En caso de fallo se utiliza el checkpoint para recuperar el estado
–  Muy utilizado en ejecución especulativa
–  Checkpoint físico:
•  Se copia el estado
–  Checkpoint lógico:
•  Se copia un estado lógico que permite recuperar el estado físico
•  Menos costoso
•  ¿Cómo se aplica a la RAT?
–  Se hace un checkpoing de la RAT cuando se renombra una instrucción
de salto (o cualquiera que pueda generar una excepción)
–  Problema:
•  Pueden ser necesarios muchos checkpoints (coste espacial)
•  Algunas soluciones proponen hacer checkpoints solo en los saltos con
mayor probabilidad de que falle la predicción
•  Si no se hace un checkpoint y luego falla, se vuelve al salto anterior

AAV - Julio Sahuquillo -35-


Ejercicio 2

•  Características procesador
–  Etapas: IF, ID, Rn (renombrado y dispatch), I, En ejecución, WB, C
–  Suma/rest Latencia=2 (A1, A2) IR=1/2
RAT
–  Mult/div. Latencia=2 (M1, M2) IR=1/2 0 0
–  Salto. Latencia=1 (EX) IR=1 2 2
4 4
•  Suponiendo que la predicción es no saltar y que
6 6
hay fallo de predicción, se pide 8 8
–  Diagrama de instrucción/tiempo hasta el ciclo 11 10 10
–  Evolución de la tabla de renombrado hasta el ciclo 11< 12 12
Asume que la liberación y asignación de registros es FIFO … …

–  Contenido del ROB en el ciclo 11 para los campos:


Libres:
•  Instrucción, destino lógico, mapping previo, destino físico 14, 16, 18,
–  Continuar la evolución de la tabla los ciclos necesarios 20, 22, 24,
hasta la recuperación de la tabla para el mecanismo …
recover en commit con 1 front-end RAT,
asume que el primer ciclo de recuperación es
el siguiente al commit del salteo

AAV - Julio Sahuquillo -36-


Ejercicio 2

! ! 1 2 3 4 5 6 7 8 9 10 11 !
ADD.D F6,F2,F3 !
MULT.D F4,F8,F4 !
BNEZ F4,DEST!
ADD.D F6,F2,F2 !
ADD.D F8,F2,F10 !
SUB.D F6,F6,F8 A2 WB C!
ADD.D F8,10,F8!
ADD.D F10,F12,F10 !
SUB.D F2,F12,F12!
!

AAV - Julio Sahuquillo -37-


FIN

AAV - Julio Sahuquillo -38-

También podría gustarte