Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Paralelismo en Monoprocesadores - Superescalares PDF
Paralelismo en Monoprocesadores - Superescalares PDF
monoprocesadores
Procesadores Superescalares
Procesadores Superescalares
Descripcin estructural: Arquitectura y componentes de las
distintas etapas de un procesador superescalar
t
Es
c
ru
ra
tu
l
Introduccin
t
Es
c
ru
ra
tu
l
2.
3.
t
Es
c
ru
ra
tu
(limitacin 1)
El rendimiento de un pipeline escalar
Re n dim iento =
1
inst
1
IPC * frecuencia
*
*
=
recuento _ inst ciclo tiempo _ ciclo
recuento _ inst
consideraciones:
La frecuencia puede aumentarse incrementando la profundidad del
pipeline reduciendo, en consecuencia el tiempo de ciclo
Un aumento en la profundidad tiene la desventaja adicional de
perdida excesiva de ciclos ante dependencias
Un pipeline escalar solo puede iniciar la ejecucin de (como mximo)
una sola instruccin por ciclo de reloj: IPC=1
5
t
Es
c
ru
ra
tu
l
Pipelines paralelos
Lograr un IPC > 1 requiere que el procesador sea capaz de iniciar el
proceso de ms de una instruccin en cada ciclo
Esto requiere incrementar el ancho del pipeline de modo que sea capaz
de tener mas de una instruccin en cada etapa a cada instante
sin paralelismo
paralelismo espacial
(multiprocesadores)
paralelismo temporal
(pipeline escalar)
pipeline paralelo
6
t
Es
c
ru
ra
tu
(limitacin 2)
IF
ID
1 ciclo
1 ciclo
EX
Mem
WB
IF
ID
Fx
.
.
IF
ID
Fp
.
.
IF
ID
Mem
.
.
pipeline diversificado
t
Es
c
ru
ra
tu
(limitacin 3)
Un pipeline escalar es rgido ya que las instrucciones entran y avanzan en l paso a paso y atravesando
todas las etapas
Las instrucciones entran al pipeline de acuerdo al orden impuesto por el programa (en orden)
En un pipeline esttico una instruccin frenada en una etapa i frena la ejecucin de todas las instrucciones
en etapas previas (1, 2,, i-1)
Una solucin es permitir que las instrucciones frenadas que no tengan ningn tipo de dependencia puedan
adelantarse a la instruccin frenada. Este tipo de pipeline se denomina pipeline dinmico y pueden
realizar ejecucin fuera de orden
frenada
pipeline esttico
X
X
X
cadena de
instrucciones
frenadas
adelantamiento
de instrucciones
independientes
frenada
pipeline dinmico
8
t
Es
c
ru
ra
tu
l
t
Es
c
ru
ra
tu
l
pipelines superescalares
un pipeline escalar de k etapas puede procesar hasta k instrucciones
simultneamente
Su rendimiento se compara con procesadores sin paralelismo y se
espera que la mejor aceleracin obtenible sea del orden de k
IF
ID
EX
MEM
WB
t
Es
c
ru
ra
tu
l
pipelines diversificados
Los recursos de hardware necesarios para la ejecucin de diferentes
operaciones pueden variar significativamente
Tipos de operaciones: Punto fijo, Punto flotante, acceso a memoria
IF
ID
EX
RD
ALU
MEM1
FP1
MEM2
FP2
BR
FP3
instrucciones de un sub-pipe no se
frenan por dependencias en otros
pipes
WB
11
t
Es
c
ru
fadd
Int unit
mul
mul
divide
shift
boolean
Bit unit
Mul 1/3
Mul 2/3
Mul 3/3
fadd 1/3
fadd 2/3
fadd 3/3
Divider unit
Writeback buses
Int unit
Source buses
memoria central
ra
tu
add
Graph add
increment
Graph pack
increment
Load/store unit
branch
t
Es
c
ru
ra
tu
l
pipelines dinmicos
Pipeline rgido:
2 etapas i e i+1 se separan y conectan por medio
de un buffer simple (1 instr.)
el buffer se activa en cada ciclo de reloj
En caso de conflictos (stall de etapa i+1) el buffer no
se actualiza
En caso de frenado todas las etapas 1, , i+1 se frenan
Las instr. entran y salen del buffer en el orden del programa
Etapa i
Etapa i
(en orden)
Buffer (1)
Buffer (n)
(en orden)
Etapa i+1
Etapa i+1
Pipeline paralelo:
2 etapas i e i+1 se separan y conectan por
medio de un buffer de n instr
En caso de conflicto de 1 sola instr. el buffer no se actualiza
En caso de frenado todas las etapas 1, , i+1 se frenan
Las instr. entran y salen del buffer en el orden del
programa
Cada entrada del buffer esta conectada a cada etapa i y
cada salida a una etapa i+1
Pipeline con
buffer simple
Pipeline con
buffer mltiple
Etapa i
(en orden)
Buffer ( n)
(fuera de orden)
Pipeline superescalar:
Uso de buffers multientrada complejos
Las instr. entran al buffer a cualquier posicin del mismo
Las instr. salen del buffer en cualquier orden con la nica
condicin de tener todos sus operandos completos
Etapa i+1
Pipeline con
buffer con reordenamiento
13
t
Es
c
ru
ra
tu
ID
RD
(en orden)
dispatch
buffer
(fuera de orden)
EX
ALU
MEM1
FP1
MEM2
FP2
BR
FP3
(fuera de orden)
Reorder
buffer
(en orden)
WB
14
t
Es
c
ru
Fetch
Fetch
Instruction buffer
Decode
Decode
Dispatch buffer
Dispatch
Dispatch
Issuing buffer
Execute:
ra
tu
Execute
Execute
Completion buffer
Complete
Complete
Store buffer
Retire
Retire
15
t
Es
c
ru
ra
tu
l
Address
Row decoder
Problemas potenciales:
fetch group y Cach row desalineadas
Presencia de instrucciones de salto en el fetch group
} cache
line
Tag
Tag
Branch
Tag
Tag
fetch group
16
t
Es
c
ru
ra
tu
l
fetch group
cache row
2 soluciones factibles:
1.- ordenamiento esttico en tiempo de compilacin:
El compilador conoce la organizacin de la I-cache y genera las direcciones de salto de las
instrucciones alineadas al comienzo de las filas de la cache.
2 desventajas:
desperdicio de espacios de memoria de cdigo
cdigo objeto generado dependiente de una organizacin de cache particular
2.- Uso de hardware especializado que resuelve el problema en tiempo de ejecucin
17
t
Es
c
ru
ra
tu
l
t
Es
c
ru
ra
tu
l
T
Logic
T
Logic
T
Logic
T
Logic
A0 B0
A1 B1
A2 B2
A3 B3
A4 B4
A5 B5
A6 B6
A7 B7
A8 B8
A9 B9
A10B10
A11B11
A12B12
A13B13
A14B14
A15B15
255
255
255
Mux
una lnea
igual a
4 filas de
la I-cache
255
Mux
Mux
Mux
Instruction n + 1
Instruction n + 2
Instruction n + 3
D
19
t
Es
c
ru
ra
tu
l
Decodificacin de instrucciones
(decoding)
Tareas:
Identificacin de las instrucciones individuales
Determinacin de los tipos de instruccin
Deteccin de dependencias entre las instrucciones dentro
del fetch group
dependiente de:
El juego de instrucciones del procesador
(Instruction Set Architecture (ISA))
El ancho (s) del pipeline paralelo
20
t
Es
c
ru
ra
tu
l
Decodificacin de instrucciones
(decoding)
Decodificacin RISC
Clases de instrucciones
Tipos de recursos requeridos (registros)
Branch target address
aade hasta 4 bits por instruccin
Decodificacin CISC
Ms complejidad. Puede usar varias etapas del pipeline
Separacin entre instrucciones
Localizacin de cdigos de operacin y operandos
21
t
Es
c
ru
ra
tu
l
Decodificacin de instrucciones
(decoding)
Unidad de decodificacin del Pentium P6
Instruction
Instructionbuffer
buffer(16
(16bytes)
bytes)
ROM
ROM
Decoder
Decoder
00
Decoder
Decoder
11
Decoder
Decoder
22
4 ops
1 op
1 op
to next
address
calculation
Branch
Branch
address
address
calculation
calculation
op
opqueue
queue(6
(6RISC
RISCinstructions)
instructions)
22
t
Es
c
ru
ra
tu
l
Decodificacin de instrucciones
(decoding)
Problemas:
t
Es
c
ru
ra
tu
l
Ejemplo
Mecanismo de predecodificacin del AMD K5
From memory
te
by
8
128 + 80
te
by
8
5
ts
bi
Decode,
Decode,translate
translate
&&dispatch
dispatch
16 instruction bytes
+ predecode bits
ts
bi
I-cache
64 + 40
8 instruction bytes
+ predecode bits
inicio/fin de la instruccin
nmero de ROPs de la instruccin
ubicacin de Codop y operandos
Predecode
PredecodeLogic
Logic
te
by
64
8 instruction bytes
te
by
t
Es
c
ru
l
ra
tu
Instruction
Instruction
fetching
fetching
Instruction
Instruction
decoding
decoding
instruction dispatching
FU1
FU1
FU1
FU1
instruction execution
25
t
Es
c
ru
ra
tu
l
Modo distribuido:
I-cache
Fetch
Fetch
Instruction buffer
Decode
Decode
Decode
Decode
Ciclo i
Dispatch buffer
Dispatch
Dispatch
I-cache
Fetch
Fetch
Ld add sub mul div
Ciclo i+1
Instruction buffer
Decode
Decode
26
t
Es
c
ru
ra
tu
l
Despacho de instrucciones
(acceso a operandos)
En pipeline escalar:
En pipeline superescalar:
Algunos operandos pueden no estar disponibles al momento de decodificacin de una instr.
Una instruccin puede depender de instrucciones previas que an no han terminado su
ejecucin.
No es posible aplicar tcnicas de bypassing.
Solucin:
Agregado de un buffer entre la decodificacin y ejecucin de instrucciones
Las instrucciones decodificadas se almacenan en el buffer hasta que tengan todos
sus operandos
Cuando una instruccin tiene todos sus operandos se extrae del buffer y se ejecuta
Dicho buffer acta como una estacin de reserva (reservation station Tomasulo,1967)
27
t
Es
c
ru
ra
tu
l
Estaciones de reserva
Dispatch buffer
Dispatch
Dispatch
Dispatch
Issuing
Issuing
Issue
Distributed
reservation
station
Execute
Completion
buffer
Finish
Completion
buffer
28
t
Es
c
ru
ra
tu
l
29
t
Es
c
ru
ra
tu
l
Fx
Fx
Fp
Fp
Shift
Shift
ALU
ALU22
ALU
ALU00
AAxxBB
(A
(AxxB)
B)++CC
Primeros procesadores
superescalares
ALU
ALUCC
Unidad de enteros
T1 super SPARC
(A
(AxxB)
B)++CC
30
t
Es
c
ru
ra
tu
l
31
Instruction Retiring
Retire
Retire
Escritura
en D-cache
Instruction Completion
Store
buffer
Buffer
auxiliar de
memoria
ra
tu
Complete
Complete
Escritura en
banco de
registros
(arit - lgicas)
Buffer
auxiliar de
escritura
Completion
buffer
Terminacin
de ejecucin
2 casos alternativos:
Execution
Execution
c
ru
Una
Unainstruccin
instruccinse
seconsidera
consideracompleta
completacuando
cuando
Termina
su
ejecucin
y
Termina su ejecucin y
Actualiza
Actualizaelelestado
estadode
delalamquina
mquina
t
Es
32
t
Es
c
ru
Estado de la instruccin
Emitida, en ejecucin, terminada
ra
tu
33
t
Es
c
ru
ra
tu
l
Execution (X)
En ejecucin en alguna unidad funcional
Finished (F)
En ROB a la espera de su Completion
Tail:
Instruccin
Codop op1, op2
Codop op1, op2
reg-dest
value
status
Reg-dest
registro de escritura de la inst.
Value
valor del resultado de la inst.
Head:
34
t
Es
c
ru
ra
tu
l
Interrupciones
Rupturas de secuencia de ejecucin normal causadas por eventos externos
como dispositivos de I/O
Cuando ocurre una INT, el programa debe suspenderse para atenderla
Se detiene el Fetching y se termina de ejecutar las instr aun en el pipeline
Excepciones
Inducidas por la ejecucin de alguna inst del programa (evento anormal)
La ejecucin del programa debe suspenderse en el estado de la inst
anterior a la que produce la excepcin.
se debe asegurar que las inst anteriores en la secuencia del programa se
terminen y las posteriores se anulen
35
Instruction cach
Fetch
Instruction/Decode buffer
Decode
In order
Dispatch buffer
Dispatch
Reserv.
Stations
Issue
Out of order
Execute
Finish
Reorder/Completion buffer
Store buffer
ra
tu
36
Retire
c
ru
In order
Complete
t
Es
cach
fault
Prefetch
Memory
Procesadores Superescalares
Descripcin estructural: Arquitectura y componentes de las
distintas etapas de un procesador superescalar
37
n
Fu
cio
fetch
fetch
3 flujos principales:
register
register
access
access
dispatch
dispatch
branch
branch
ALU
ALU
Flujo de memoria
load/store
load/store
memory
memory
Flujo de datos
decode
decode
Flujo de instrucciones
Flujo de instrucciones
Flujo de datos
Flujo de memoria
l
na
Funcionamiento de un superescalar
reorder
reorder
WB
WB
38
39
n
Fu
cio
Uso de los
ciclos perdidos
Procesamiento de salto
condicional no resuelto
eliminacin
de saltos
Salto
retrasado
Instrucciones
predicadas
Reordenamiento
de instrucciones
Procesamiento
de saltos
l
na
40
n
Fu
cio
En flujo secuencial:
mximo rendimiento
todas las etapas llenas
l
na
decode
decode
dispatch buffer
dispatch
dispatch
En saltos incondicionales
se debe esperar el clculo del
target
En saltos condicionales
se debe calcular target
se debe calcular condicin
execute
issue
reserv.
stations
branch
branch
completion buffer
finish
complete
complete
store buffer
retire
retire
41
n
Fu
cio
l
na
decode
decode
dispatch buffer
target = registro
dispatch
dispatch
relativo al PC
execute
issue
reserv.
stations
branch
branch
completion buffer
finish
complete
complete
store buffer
retire
retire
42
n
Fu
cio
l
na
decode
decode
Comparacin de registros en la
propia instruccin de salto
dispatch buffer
dispatch
dispatch
reserv.
stations
execute
Beqz dir_salto
branch
branch
completion buffer
finish
complete
complete
store buffer
retire
retire
43
n
Fu
cio
l
na
Salto retrasado
Migracin de cdigo en tiempo de compilacin a fin de rellenar las
etapas frenadas por la ejecucin de una posible va de salto tomado
dir_salto:
dir_salto:
add
add
div
div
add
add
beq
beq
NOP
NOP
NOP
NOP
r3,
r3,r2,
r2,r6
r6
r5,
r5,r4,
r4,r1
r1
r8,
r8,r9,
r9,r10
r10
dir_salto
dir_salto
dir_salto:
dir_salto:
.
.
.
.
add
add
br
br
div
div
add
add
r3,
r3,r2,
r2,r6
r6
dir_salto
dir_salto
r5,
r5,r4,
r4,r1
r1
r8,
r8,r9,
r9,r10
r10
n
Fu
cio
l
na
45
n
Fu
cio
l
na
46
n
Fu
cio
l
na
3.
4.
PC
BIA
branch target
address field
BTA
47
n
Fu
cio
l
na
48
n
Fu
cio
l
na
Prediccin esttica
n
Fu
cio
l
na
Prediccin dinmica
La prediccin se hace segn la historia del salto
La historia es una buena gua para predecir el futuro
Esquema bsico: un salto tomado en las ltimas ejecuciones se
predice como verdadero en la siguiente
Mayor rendimiento que la prediccin esttica
Mas complejo para implementar
Mejor comportamiento en la prediccin de saltos asociados a loops
50
n
Fu
cio
l
na
Prediccin dinmica
2 tcnicas principales:
Explicita: Bits de historia
n
Fu
cio
l
na
ST
ST
ST
SNT
SNT
ST
SNT
Resultado
del salto
estado
actual
resultado
del salto
nuevo
estado
Prediccin
del salto
registro
1 bit
1-bit saturation counter
52
n
Fu
cio
l
na
lazo_1
lazo_2
predicho
real
nueva
prediccin
SNT
ST
ST
ST
ST
ST
ST
ST
ST
..
ltima
ST
SNT
SNT
SNT
ST
ST
ST
ST
ST
..
53
n
Fu
cio
l
na
ST
SNT
SNT
TT
TT
NT
NT
TN
TN
NN
NN
11
10
01
00
ST
ST
ST
ST
SNT
ST
SNT
SNT
n
Fu
cio
l
na
lazo_1
lazo_2
predicho
real
nueva
prediccin
SNT
ST
SNT
SNT
ST
ST
ST
ST
ST
..
ltima
ST
SNT
ST
ST
ST
ST
ST
ST
ST
..
55
n
Fu
cio
l
na
+1
PC
BIA
branch target
address field
BTA
Prediccin
ST SNT
branch
history
history bits
FSM
56
n
Fu
2 bits de historia
86% a 97%
3 bits de historia
88,3% a 97%
l
na
cio
1 bit de historia
57
n
Fu
cio
l
na
58
n
Fu
cio
l
na
target
address
1000
2000
target
instruction
1000
Load r1,
59
n
Fu
cio
l
na
60
n
Fu
cio
l
na
Tag 1
Br 2
Br 2
SNT
Br
Br11
ST
Tag 2
Br
Br33
Tag 3
n
Fu
cio
l
na
Br 2
Br 2
Br
Br44
NT
Tag 3
Tag 2
Br
Br33
Br
Br11
n
Fu
cio
l
na
FA
FA
I-cach
FA
decode buffer
+4
branch history
table (BHT)
BHT prediction
branch target
address cach
(BTAC)
BHT
update
Decode
BTAC
update
dispatch buffer
Dispatch
BTAC prediction
reservation stations
branch
completion buffer
63
n
Fu
cio
l
na
Superescalar
Superescalarde
degrado
grado44capaz
capazde
derecuperar,
recuperar,decodificar
decodificaryydespachar
despacharhasta
hasta44instrucciones
instrucciones
simultneas
en
cada
ciclo
de
mquina
simultneas en cada ciclo de mquina
22buffers
buffersseparados
separadospara
parasoporte
soportede
depredicciones
prediccionesde
desalto:
salto:
BTAC:
BTAC:cach
cachasociativa
asociativade
de64
64entradas
entradasque
quealmacena
almacenalas
lasdirecciones
direccionesde
desalto
salto
BHT:
BHT:cach
cachde
deacceso
accesodirecto
directode
de512
512entradas
entradasque
quealmacena
almacenaun
unpredictor
predictorde
de
22bits
de
historia
para
cada
salto
bits de historia para cada salto
Ambas
Ambastablas
tablasse
seacceden
accedendurante
durantelalaetapa
etapade
defetching
fetching(ciclo
(cicloi).
i).
BTAC
responde
en
1
ciclo
si
existe
un
salto
en
la
direccin
aportada
BTAC responde en 1 ciclo si existe un salto en la direccin aportadapor
porelelPC
PC
BHT
responde
en
2
ciclos
para
la
misma
bsqueda
BHT responde en 2 ciclos para la misma bsqueda
Si
SiBTAC
BTACresponde
respondepositivamente,
positivamente,se
secarga
cargaelelPC
PCcon
conlaladireccin
direccinBTAC
BTAC(en
(enciclo
cicloi+1)
i+1)
En
ciclo
i+2
BHT
dispone
de
la
prediccin
por
bits
de
historia
para
la
direccin:
En ciclo i+2 BHT dispone de la prediccin por bits de historia para la direccin:
Si
Sipredice
predicesalto
saltotomado
tomado(igual
(igualque
queBTAC)
BTAC)se
secontina
continatal
talcomo
comopredijo
predijoBTAC
BTAC
Si
predice
SNT,
entonces
se
anula
la
prediccin
de
BTAC
y
se
carga
el
PC
Si predice SNT, entonces se anula la prediccin de BTAC y se carga el PCcon
con
laladireccin
secuencial
direccin secuencial
64
n
Fu
cio
l
na
n
Fu
cio
l
na
Prediccin en 2 niveles
Tipo I:
Branch address
equivalent to
2-bit BHT
j bits
k bits
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
PHT of 2k x 2j x 2 bits
Prediction
11
00
2-bit saturating
counter FSM
66
n
Fu
cio
l
na
Prediccin en 2 niveles
Tipo II:
Branch address
k bits
Individual
branch history
shift register
(BHSRs)
2j x k bits
equivalent to
2-bit BHT
j bits
i bits
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
11
11
11
11
00
00
00
00
PHT of 2k x 2j x 2 bits
Prediction
11
00
2-bit saturating
counter FSM
67
n
Fu
cio
l
na
Prediccin en 2 niveles
Tipo III (gshare correlated branch predictor McFarling, 1993):
j bits de la direccin de salto se usan como funcin de hashing (bitwise XOR) con k bits
del Global-BHSR. Los max(k,j) bits resultantes se usan para indexar una PHT de
predictores de 2 bits de historia
n bits
Branch address
Global
branch history
shift register
(BHSRs)
11
j bits
00
11
k bits
00
max(k , j) bits
Prediction
11
00
11
00
11
00
2-bit saturating
counter FSM
68
n
Fu
cio
l
na
69
n
Fu
cio
l
na
con
Ri = F(Rj , Rk)
Ri: registro destino
Rj y Rk: operandos fuente
F: operacin a realizar
Si Rj Rk no estn disponibles
Dependencia de datos (RAW)
Si F no est disponible
Dependencia estructural (recursos)
Si Ri no est disponible
Dependencias falsas (WAR o WAW)
70
n
Fu
cio
l
na
71
n
Fu
cio
l
na
72
n
Fu
cio
l
na
Renombre de registros
RRF separado del ARF
ARF
Data
referencia a
registro
RRF
Busy 1
Tag
Data
Busy 2
Valid-entry
1
0
operando
Busy = 1 : El registro est ocupado y no puede ser utilizado ya que alguna instruccin en ejecucin
cambiar su valor
0 : El valor de registro est disponible y puede ser ledo como operando
73
n
Fu
cio
l
na
Renombre de registros
RRF dentro del ROB
ARF
Data
referencia a
registro
Busy 1
Tag
ROB
operando
74
n
Fu
cio
l
na
Renombre de registros
Comparacin de las tcnicas ARF-RRF y RRF-ROB
75
n
Fu
cio
l
na
Lectura de operandos
2.
3.
n
Fu
cio
l
na
ARF
Data
registro
de
escritura
Paso 3
Busy 1
Tag
Paso 2.1
Paso 2.2
Paso 2
RRF
Data
Busy 2
Valid-entry
77
n
Fu
cio
l
na
2.
Paso 2.1
Paso 2.2
ARF
Data
registro
de
escritura
new data
RRF
Paso 1.1
Busy 1
Tag
Paso 2.3
Data
Busy 2
new data
0 / 1
78
n
Fu
cio
l
na
Renombre de registros
Pooled Registers:
Una nica estructura fsica de registros que sirven como ARF y RRF
Cualquier entrada se designa como RRF o ARF con un bit adicional
Ventaja: En la fase de Update no se necesita realizar copia desde
RRF a ARF, basta con cambiar el bit de tipo y eliminar
instancias anteriores del registro
Desventaja: Extrema complejidad de Hardware
Desventaja: Al momento de Swaping de tarea, cuesta identificar los
registros ARF a fin de salvar el estado del procesador
79
n
Fu
cio
l
na
Renombre de registros
Map Table (IBM RS/6000):
Op T
S1 S2 S3
33
33
34
34
35
35
36
36
40
40registros
registrosfsicos
fsicosque
queincluyen
incluyen32
32de
dearquitectura
arquitectura
La
tabla
de
mapeo
tiene
32
entradas
de
Op T S1 S2 S3
La tabla de mapeo tiene 32 entradas de66bits
bitsc/u
c/u
Cada
Cadaentrada
entradarepresenta
representaaaun
unreg.
reg.de
delalaarquitectura
arquitectura
yyreferencia
un
registro
fsico
referencia un registro fsico
FL
es
FL esuna
unacola
colaque
quecontiene
contienelos
losreg.
reg.fsicos
fsicosNO
NOusados
usados
PTRQ
contiene
la
lista
de
registros
que
fueron
usados
Map
PTRQ contiene la lista de registros que fueron usados
MapTable
Table
para
renombrar
registros
de
la
arquitectura
y
han
sido
32
x
6
para renombrar registros de la arquitectura y han sido
32 x 6bits
bits
posteriormente
re-renombrados
en
la
tabla
de
mapeo
posteriormente re-renombrados en la tabla de mapeo
Registros
Registrosfsicos
fsicosen
enlalaPTQR
PTQRson
sondevueltos
devueltosaalalaFL
FLluego
luego
de
su
ltimo
uso
por
parte
de
una
instruccin
de su ltimo uso por parte de una instruccin
32
32
37
37
38
38
39
39
80
n
Fu
cio
l
na
Renombre de registros
Otra variante de tabla de mapeo
Banco de M registros fsicos que
mapean N registros de arq (M>N)
Funciona como buffer circular
Valid:
0 : entrada sin uso
1 : entrada usada
Reg des:
registro de arq al cual se asign
el registro fsico
value :
el valor del registro
Busy :
validacin del dato
0 : valor disponible
1 : valor no actualizado
Last :
indica la ltima definicin de
un registro de arq
valid
0
1
2
3
4
.
.
.
.
1
1
1
0
0
.
.
.
0
reg.
des.
4
0
1
1
1
1
1
1
1
81
n
Fu
cio
l
na
Renombre de registros
mul r2, r0, r1
valid
0
1
2
3
4
.
.
.
.
1
1
1
0
0
.
.
.
0
reg.
des.
4
0
1
valid
1
1
1
1
1
1
0
1
2
3
4
.
.
.
.
1
1
1
1
0
.
.
.
0
reg.
des.
4
0
1
2
1
1
1
0
1
1
1
1
82
n
Fu
cio
l
na
Renombre de registros
mul r2, r0, r1
valid
0
1
2
3
4
.
.
.
.
1
1
1
1
0
.
.
.
0
reg.
des.
4
0
1
2
1
1
1
0
1
1
1
1
valid
0
1
2
3
4
.
.
.
.
1
1
1
1
0
.
.
.
0
reg.
des.
4
0
1
2
1
1
1
0
1
1
1
1
r0=0 r1=10
83
n
Fu
cio
l
na
Renombre de registros
add r3, r1, r2
valid
0
1
2
3
4
.
.
.
.
1
1
1
1
0
.
.
.
0
reg.
des.
4
0
1
2
valid
1
1
1
0
1
1
1
1
0
1
2
3
4
5
.
.
.
1
1
1
1
1
.
.
.
0
reg.
des.
4
0
1
2
3
1
1
1
0
0
1
1
1
1
1
84
n
Fu
cio
l
na
Renombre de registros
add r3, r1, r2
valid
0
1
2
3
4
.
.
.
.
1
1
1
1
0
.
.
.
0
reg.
des.
4
0
1
2
valid
1
1
1
0
1
1
1
1
0
1
2
3
4
5
.
.
.
1
1
1
1
1
.
.
.
0
reg.
des.
4
0
1
2
3
1
1
1
0
0
1
1
1
1
1
r2? r1=10
85
n
Fu
cio
l
na
Renombre de registros
sub r2, r0, r1
valid
0
1
2
3
4
5
.
.
.
1
1
1
1
1
.
.
.
0
reg.
des.
4
0
1
2
3
1
1
1
0
0
1
1
1
1
1
valid
0
1
2
3
4
5
.
.
.
1
1
1
1
1
1
.
.
0
reg.
des.
4
0
1
2
3
2
1
1
1
0
0
0
1
1
1
0
1
1
86
n
Fu
cio
l
na
Renombre de registros
termina mul r2, r0, r1
valid
0
1
2
3
4
5
.
.
.
1
1
1
1
1
1
.
.
0
reg.
des.
4
0
1
2
3
2
1
1
1
0
0
0
1
1
1
0
1
1
valid
0
1
2
3
4
5
.
.
.
1
1
1
1
1
1
.
.
0
reg.
des.
4
0
1
2
3
2
1
1
1
1
0
0
1
1
1
0
1
1
87
n
Fu
cio
l
na
Renombre de registros
Se retira instruccin con
resultado en posicin 0
valid
0
1
2
3
4
5
.
.
.
1
1
1
1
1
1
.
.
0
reg.
des.
4
0
1
2
3
2
1
1
1
1
0
0
1
1
1
0
1
1
valid
0
1
2
3
4
5
.
.
.
0
1
1
1
1
1
.
.
0
reg.
des.
4
0
1
2
3
2
1
1
1
1
0
0
1
1
1
0
1
1
88
n
Fu
cio
l
na
r1 = r2 * r3
r5 = r1 + r8
89
n
Fu
cio
l
na
n
Fu
cio
l
na
Rs1, Rs2
Rs1, Rs2
Dispatch Rd
Dispatch Rd
Busy
bits
Register
Bank
Busy
bits
instr
FU 1
Tag
bits
Register
Bank
instr
FU 2
Reservation
Stations
Reservation
Stations
FU 2
FU 1
ALU clsica
ALU de Tomasulo
91
n
Fu
cio
l
na
Busy Tag
Data
92
n
Fu
cio
l
na
Rs1, Rs2
Dispatch Rd
Busy
bits
op1
add
500
Tag
bits
Register
Bank
op2
2
---
instr
r4
Tag 1
Tag 2
Tag 3
Reservation
Stations
Reservation
Stations
Tag 4
Tag 5
FU 2
FU 1
n
Fu
cio
l
na
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 1 Despacho de S1 y S2
S1
-
Tag
Op 1
Tag
Op 2
6,0
7,8
Op 1
Tag
Op 2
6,0
---
Adder
Functional unit 1
Busy
0
2
Mult
S1
S2
-
Tag
4
8
Functional unit 2
1
1
Tag
Data
6,0
4 3,5
1 10,0
7,8
Register Bank
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 2 Despacho de S3 y S4
S1
S3
-
1
2
Tag
Op 1
Tag
Op 2
0
1
6,0
---
0
0
7,8
7,8
S1
Se
S3
S4
S3
S4
su
S1
4
5
Op 1
0
2
6,0
---
Tag
Op 2
1 --4 --Mult
Adder
Functional unit 1
S2
S4
Tag
Busy
0
2
4
8
Functional unit 2
1
1
1
Tag
Data
6,0
4 3,5
2 10,0
5 7,8
Register Bank
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 3
Tag
S3
-
Op 1
Tag
Op 2
1
2
0 13,8 0
7,8
S3
Tag
S2
S4
4
5
0
2
Op 1
Tag
Op 2
6,0 0 13,8
--- 4 --S2 Mult
Adder
Functional unit 1
Busy
0
2
4
8
Functional unit 2
1
1
1
Tag
Data
6,0
4 3,5
2 10,0
5 7,8
Register Bank
97
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 4
Tag
S3
-
Op 1
Tag
Op 2
1
2
0 13,8 0
7,8
S3
Tag
S2
S4
4
5
0
2
Op 1
Tag
Op 2
6,0 0 13,8
--- 4 --S2 Mult
Adder
Functional unit 1
Busy
0
2
4
8
Functional unit 2
1
1
1
Tag
Data
6,0
4 3,5
2 10,0
5 7,8
Register Bank
98
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 5
Tag
Op 1
Tag
Op 2
Tag
S2
S4
1
2
3
4
5
Op 1
Tag
Op 2
0 6,0 0 13,8
0 21,6 4 --S2 Mult
Adder
Functional unit 1
Busy
0
2
4
8
Functional unit 2
1
1
Tag
Data
6,0
4 3,5
21,6
5 7,8
Register Bank
n
Fu
cio
l
na
:
:
:
:
add
mul
add
mul
r4,
r2,
r4,
r8,
r0,
r0,
r4,
r4,
r8
r4
r8
r2
Ciclo 6
Tag
Op 1
Tag
Op 2
Tag
S4
1
2
3
Op 1
Tag
Op 2
4
5
0 21,6 0 82,8
S4 Mult
Adder
Functional unit 1
Busy
2
4
8
Functional unit 2
Tag
Data
6,0
82,8
21,6
5 7,8
Register Bank
El token <r2, 82,8> del CDB actualiz el registro 2 del banco de registros
de modo que su bit Busy se pone en 0 (resultado actualizado)
Comienza la ejecucin de S4 en el Mult
100
n
Fu
cio
l
na
Eliminacin de WAR
Mediante
Mediantelalacapacidad
capacidadde
dealmacenar
almacenarelelresultado
resultadolala
ejecucin
ejecucinen
enlalaestacin
estacinde
dereserva
reservade
dela
lainstruccin
instruccin
que
quelo
logener
generpara
paraser
serusado
usadopor
porlas
lasinstrucciones
instrucciones
dependientes
dependientes
101
n
Fu
cio
l
na
1 Desperdicio
Desperdiciode
delas
lasestaciones
estacionesde
dereserva
reservaya
yaque
queson
son
usadas
usadascomo
comobuffers
bufferstemporales
temporalespara
paraalmacenar
almacenarelel
resultado
resultadode
delalainstruccin
instruccinhasta
hastaelelfinal
finaldel
delrango
rangode
de
vida
del
valor
vida del valor
2 No
Nosoporta
soportatratamiento
tratamientopreciso
precisode
deexcepciones
excepciones
102
n
Fu
cio
l
na
Rs1, Rs2
Dispatch Rd
Busy
bits
Tag
bits
Register
Bank
instr
Reservation
Stations
Reservation
Stations
FU 2
FU 1
Tag
Rd
value
Buffer
Bufferde
de
salida
salida
Common Data Bus
103
n
Fu
cio
l
na
0
Estado del banco
2
de registros segn
4
Tomasulo
8
1
1
1
Tag
Data
6,0
4 3,5
2 10,0
5 7,8
Register Bank
Busy
1
1
1
Tag
Data
6,0
4 3,5
2 13,8
5 7,8
Register Bank
Correcto
104
n
Fu
cio
l
na
Uso
Usodel
delbuffer
buffertemporal
temporalde
desalida
salidapara
paraalmacenar
almacenarel
elorden
ordende
deemisin
emisinde
de
las
lasinstrucciones,
instrucciones,aafin
finde
deactualizar
actualizarel
elbanco
bancode
deregistros
registrosen
enorden
ordendel
del
programa
programacuando
cuandotermina
terminacada
cadainstruccin
instruccin
Precursor
Precursordel
del buffer
bufferde
dereordenamiento
reordenamientode
delos
losactuales
actualesprocesadores
procesadores
Soluciona
Solucionala
lainconsistencia
inconsistenciatemporal
temporaldel
delbanco
bancode
deregistros
registrosante
ante
excepciones
excepcionesaacosta
costade
deintroducir
introduciruna
unainconsistencia
inconsistenciapotencial
potencialdentro
dentrodel
del
mismo
mismobanco
bancoentre
entreel
eltag
tagyyel
elvalor
valor
Busy
1
1
1
Tag
Data
6,0
4 3,5
2 13,8
5 7,8
Register Bank
13,8
13,8es
eselelresultado
resultadode
delalainstruccin
instruccinde
detag
tag11(S1)
(S1)
pero
en
el
registro
4
el
campo
Tag
tiene
un
2
(S3)
pero en el registro 4 el campo Tag tiene un 2 (S3)
105
n
Fu
cio
l
na
dispatch buffer
Dispatch
Dispatch
Register writeback
Architected RF
Architected RF
Rename RF
Rename RF
reservation stations
ROB entries
branch
branch
integer
integer
integer
integer
FPU
FPU
FPU
FPU
Load/
Load/
store
store
Common Data Bus (CDB)
Complete
Complete
106
n
Fu
cio
l
na
Estaciones de reserva
Dispatching
Dispatch Forwarding Dispatch Forwarding
slots
buses
slots
buses
Allocate
Allocate
unit
unit
Entry
to be
allocated
Issuing
Issuing
unit
unit
Busy
Busy
Operand 1
Operand 1
Valid
Valid
Operand 2
Operand 2
Valid Ready
Valid Ready
Busy
Busy
Operand 1
Operand 1
Valid
Valid
Operand 2
Operand 2
Valid Ready
Valid Ready
Busy
Busy
Operand 1
Operand 1
Valid
Valid
Operand 2
Operand 2
Valid Ready
Valid Ready
Busy
Busy
Operand 1
Operand 1
Valid
Valid
Operand 2
Operand 2
Valid Ready
Valid Ready
Tag 1
match
Entry
to be
issued
Tag 2
Tag logic
Tag logic
Tag buses
Tag logic
Tag logic
match
Tag buses
Issuing
107
n
Fu
cio
l
na
Next entry to
be allocated
Next instruction
to complete
B 0 0 0 0 0
1 1 1 1 1
1 1 1 1
B 0 0 0 0 0
1 1 1 1 1
1 1 1 1
I
F
I
F
IA
IA
RR
RR
S
S
V
V
108
n
Fu
cio
l
na
Acceso
Accesoaalos
losoperandos
operandosdurante
durantela
laemisin
emisinaalas
lasunidades
unidadesfuncionales
funcionales
(Non
(Nondata
datacaptured
capturedScheduling)
Scheduling)
Poltica
Polticams
msmoderna,
moderna,adoptada
adoptadapor
poralgunos
algunosprocesadores
procesadoresactuales
actuales
Todos
los
operandos
son
accedidos
durante
la
emisin
a
las
Todos los operandos son accedidos durante la emisin a lasunidades
unidadesde
deejecucin
ejecucin
109
n
Fu
l
na
cio
Register
Al finalizar la ejecucin de una instruccin el resultado se
File
usa para actualizar el banco de registros y adems
se enva un token (<Tag, Data>) a las estaciones de
Operand coping
reserva para actualizar los campos de Tag faltantes
La Issuing Unit analiza todas las instrucciones y despierta
aquellas que tienen todos sus operandos
Forwarding
Data
Datacaptured
captured
and wake-up
Scheduling
Scheduling
Reservation
ReservationStation
Station
Register updating
Functional
Functionalunits
units
110
n
Fu
Dispatch
Dispatch
Non
Nondata
datacaptured
captured
Scheduling
Scheduling
Reservation
ReservationStation
Station
Ventaja:
Ventaja:
Register
File
Forwarding
Wake-up
l
na
cio
Functional
Functionalunits
units
El
Eldato
datose
seactualiza
actualizaen
enun
unsolo
sololugar
lugar
Los
Losbuses
buseshacia
hacialas
lasestaciones
estacionesde
dereserva
reserva
son
sonmas
maschicos
chicos(slo
(sloel
elTag)
Tag)
111
n
Fu
cio
l
na
112
n
Fu
cio
l
na
n
Fu
l
na
dispatch buffer
cio
Architected RF
Architected RF
Rename RF
Rename RF
reservation stations
branch
branch
integer
integer
integer
integer
FPU
FPU
Load/
Load/
Store
Store
Address Generation
Address Traslation
Memory Access
ROB
Complete
Complete
Data
Data
Memory
Memory
Store buffer
Retire
Retire
114
n
Fu
cio
l
na
Load/
Load/
Store
Store
Address Generation
Address Traslation
Memory Access
ROB
Complete
Complete
Data
Data
Memory
Memory
Store buffer
Retire
Retire
115
n
Fu
cio
l
na
from
Dispatch
Load/
Load/
Store
Store
Complete
Complete
Address Generation
Address Traslation
Data
Data
Memory
Memory
Store buffer
Retire
Retire
116
n
Fu
cio
l
na
Mantenimiento de la consistencia
de memoria
Lecturas fuera de orden no perjudican la consistencia de memoria
Escrituras fuera de orden producen dependencias WAW y WAR al
acceder a las mismas posiciones de memoria
117
n
Fu
cio
l
na
Mantenimiento de la consistencia
de memoria
n
Fu
cio
l
na
Meta principal:
Adelantar la ejecucin de las instrucciones Load
sin violar dependencias de datos
119
..
SW
r10, 100(r0)
..
SW
r11, 200(r0)
..
LW
Load Forwarding
Si un Load tiene la misma direccin de memoria
que un Store previo (dependencia RAW), el load
puede cargarse con el valor que almacenar el
store
l
na
cio
Load Bypassing
n
Fu
r12, 300(r0)
..
SW
r10, 100(r0)
..
SW
r11, 200(r0)
..
LW
r12, 100(r0)
120
n
Fu
cio
l
na
Address Generation
Address Traslation
Store
Store
Load
Load
unit
unit
unit
unit
Finished
Store Buffer
Address Generation
Address Traslation
Memory Access
Data
Address
Data
Data
Cache
Cache
Completed
Store Buffer
Memory Update
121
n
Fu
cio
l
na
Load Bypassing
Se compara la direccin del Load con las direcciones del Store buffer.
Si no hay coincidencias, el Load no entra en conflicto con ningn Store y puede ser adelantado
Si hay conflicto, el Load es frenado y devuelto a la estacin de reserva
Desventaja: La parte de direccin del Store Buffer debe implementarse como una memoria
asociativa para una bsqueda rpida de coincidencias
Reservation Station
Address Generation
Address Traslation
Finished
Store Buffer
Store
Store
unit
unit
Data
Data
Tag Match
Address
Address
Load
Load
unit
unit
If no match,
update
destination
register
Completed
Store Buffer
Address Generation
Address Traslation
Memory Access
Data
Address
Data
Data
Cache
Cache
Memory Update
Match/no match
122
n
Fu
cio
l
na
Load Forwarding
Se compara la direccin del Load con las direcciones del Store buffer.
Si hay coincidencia con alguna direccin, se copia el dato del Store en el registro de renombre
del Load
Desventaja: De haber varias coincidencias se debe usar la del Store mas reciente (el ltimo
que actualizar la posicin de memoria que leer el Load)
Reservation Station
Address Generation
Address Traslation
Finished
Store Buffer
Store
Store
unit
unit
Data
Data
Tag Match
Load
Load
unit
unit
Address
Address
Address Generation
Address Traslation
Memory Access
Data
If match,
forward to
destination
register
Match
Match
Completed
Store Buffer
Address
Data
Data
Cache
Cache
Memory Update
Match/no match
123