1.
3 Especulación hardware
IDEA: si la BTB predice, las instrucciones predichas podrían no ser válidas si
falla la predicción y habría que “deshacer” lo ejecutado por ellas.
• Son instrucciones especulativas, se está especulando con su ejecución.
• Pero la predicción es vital para el ILP: introducir hardware especial para
“deshacer” o mejor dicho, para que lo hecho por las instrucciones no sea
definitivo hasta que el salto no se haya resuelto. Tal hw se introduce
fácilmente en el algoritmo de Tomasulo (ver esquema de Power PC y Pentium
Pro).
Salto IF IS - - - EX ME WB
Instr predicha 1 IF IS EX ME WB
Instr predicha 2 IF IS EX ME WB ABORTAR: ¡Pero
Instr predicha 3 IF IS EX ME WB los WB y MEM ya
Store: Instr predicha 4 IF IS EX ME han escrito!
Store: Instr predicha 5 IF IS EX ME
Instr predicha 6
Instr predicha 7 IF IS EX ABORTAR: Sin
... IF IS EX peligro (no han escrito
IF IS en Reg ni en Mem)
IF IS
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 1
• Se generaliza tal hardware para todas las instrucciones: todas las escrituras de
MEM o WB no se hacen en el fich de registros o en caché de datos, sino que
se “apuntan” en un búfer con cierto número de entradas (capacidad de
instrucciones especulativas). Antes se anotaron en la emisión de la instrucción
(fase IS).
o Nº entradas P6 ([Link], P II, P III): 40.
o Para Pentium 4 son 128, pues al ser superencadenado tiene muchas más
instr. en vuelo.
o Para Alpha 21264: 80 entradas.
o El procesador tiene en cada ciclo dos “estados”:
Especulativo: Reflejado en ROB y RS. Es empleado para emitir nuevas
instrucciones.
Confirmado: Reflejado en los registros. Corresponde a la última
instrucción que ha finalizado correctamente. Es el único que existe para
el programador.
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 2
• Según la predicción sea correcta (o se produzca una interrupción):
o Cuando se descubre que la predicción fue correcta (o no hubo
interrupciones) se escribe definitivamente en fichero de registros o en caché
de datos: se confirma la instrucción (fase “commit”, “completion” CM o
“retired instruction” RET). Se establece un nuevo estado “confirmado” del
procesador.
o Si la predicción fue incorrecta (o surge una interrupción en una instrucción
anterior), se eliminan las instrucciones encoladas (por debajo del salto o de
la instrucción que produjo la interrupción). Se vuelve al último estado
confirmado.
• ROB es cola circular: una instr hace CM sólo cuando las anteriores ya lo han
hecho.
Entrada Instr. Fase por donde va Estado
1 instr 5 EX ejecutando
2 entr. libre
3 instr 1 CM entr. libre
4 instr 2 CM entr. libre
5 instr 3 IS espera dato
6 instr 4 WB ya escribió
• Luego para una instrucción, entre su fase WB (que escribe en ROB) y su fase
CM (escribe en fich Reg) pueden transcurrir muchos ciclos, y mientras otras
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 3
instrucciones deben leer datos del ROB. Análogamente las Load pueden leer
del ROB (como si fuera un búfer de escritura del caché).
• Además debido a las interrupciones: interesa que toda instrucción termine o
complete en orden: de ahí el nombre de Búfer de Reordenación (“Reorder
Buffer”, ROB). Es decir, el algoritmo de planif. dinámica permite ejecución
fuera de orden (“out-of-order-execution”), y el ROB restablece tal orden:
finalización en orden (“in-order-completion”).
• Desde el punto de vista del cronograma no hay que modificar nada: se sabe
que existe una fase final CM o RET que reordena las instr para que terminen
en orden
• Solamente: si el ROB se llena, la máquina se bloquearía. Típicamente un
superescalar de grado m es capaz de completar o finalizar m instr.
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 4
1.8 El problema de las interrupciones y la especulación hardware
¿Por qué las interrupciones necesitan finalización en orden? Sea instr. larga
que dará excepción ([Link]. overflow), y queremos modelo preciso de interrupciones
(es decir, como en un procesador secuencial, cuando hay una excepción o
interrupción, todas las instr. anteriores a la que la genera, han finalizado
completamente y las posteriores no han empezado, o al menos no han modificado
el estado de la máquina).
Hay que invalidar todas las instr. posteriores a la larga, antes de atender a la rutina
de interrupción:
Aquí se detecta
Instr anterior 1 IF IS EX ME WB CM la excepción
Instr anterior 2 IF IS EX ME WB CM
Instr larga, con excepción IF IS D1 D2 D3 D4 ME WB
Instr sig. 1 IF IS EX ME WB
Nunca harán
Instr sig. 2 IF IS EX ME WB
CM. WB y
Instr sig. 3 IF IS EX ME WB
MEM han
Store: Instr sig. 4 IF IS EX ME
Store: Instr sig. 5
escrito en
IF IS EX ME
Instr sig. 6 ROB y se
Instr sig. 7 IF IS EX invalidan
IF IS EX
...
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 5
1.9 Especulación por Renombrado
• Alternativa al ROB: Nº Reg. Físicos> nº Reg. Lógicos.
• Los registros físicos se emplean para guardar los valores
contenidos tanto en las RS como en el ROB y los regs. Lógicos.
• En IS se averigua (“mapea”) a que registros físicos corresponden
los operandos fuentes y se asigna un registro libre para el destino
(evita conflictos WAW y WAR). Se saldrá de IS cuando los registros
contengan operandos válidos y haya UF disponible.
• En WR se escribe el registro destino asignado en IS.
• En CM se mapea el registro lógico destino a su registro físico
correspondiente.
• La forma más sencilla de liberar registros físicos es hacerlo cuando
otra instrucción que tenga el mismo registro lógico como destino
haga commit.
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 6
• El “remapeo” de registro se usa en MIPS R10000 (Práctica), en
Alpha 21264, P4 …
• El número de registros físicos 40 a 128 dependiendo del
procesador.
Bibliografía básica: Páginas del H&P de la tercera edición: Temas 3 (pag 215-) y
4 (pag 315-). Revistas especializadas (IEEE Micro)
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 7
1.10 Instrucciones Condicionales o Predicadas.
• Limite a la especulación Hardware: Dificultad en predecir más de un salto por
ciclo ⇒ Necesidad de aumentar nº instrucciones entre saltos.
• Solución: Transformación de dependencias de control en dependencias de
datos.
• Es sobre todo útil para saltos dependientes de datos (if) que son los más
difíciles de predecir.
• Idea: Instrucciones que solo se ejecutan si se cumple una condición. Ejemplo
más simple: CMOVZ Rd,Rf,Rc (equivale a if (¡Rc) Rd=Rf )
• Ejemplo: Rb=abs(Ra):
Addi Rb,Ra,0
Slti Rc,Rb,0
Beqz Rc,sigue
Sub Rb,R0,Rb
Sigue: …
El salto es muy corto y difícil de predecir. Si en sigue hubiera otro salto…
Addi Rb,Ra,0
Sgei Rc,Rb,0 //Rc=0 si Rb<0
Sub Rd,R0,Rb
Cmovz Rb,Rd,Rc
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 8
Supongamos Predicción NT Errónea:
Adi Rb,Ra,0 I E M W C
Slti Rc,Rb,0 I R R E M W C
Beqz Rc,sigue I R R R R E M W C
Sub Rb,R0,Rb I E E M W (Anulada)
Sigue: … I ….. (Anulada)
I
Versión CMOVZ
Adi Rb,Ra,0 I E M W C
Sgei Rc,Rb,0 I I I E M W C
Sub Rd,R0,Rb I I I E M W C
Cmovz Rb,Rd,Rc I I I I I E M W C
Mayores ventajas en superescalares en que podamos emitir un salto/ciclo.
Arquitectura y Tecnología de Computadores. Univ. Sevilla. . ASP2: TEMA 1: Arquitecturas encadenadas avanzadas:
pág 9