Arquitecturas
Arquitecturas
Arquitecturas
Arquitecturas
superescalares
superescalares
superescalares
superescalares
Aula 14
E
d
l
E
d
l
Estrutura desta aula
Estrutura desta aula
z
Arquitecturas VLIW e superescalares
zEmissão de instruções
z
Emissão de 2 vias
zEmissão de 2 vias
z
Superescalares com agendamento dinâmico
zExemplo com 2 vias de emissão
mp
m
m
z
Especulação por hardware
zReorder Buffers (ROB)
z
Esquema de Tomasulo especulativo
z
Ref: Hennessy e Pattersson 3 6 3 7
zRef: Hennessy e Pattersson, 3.6, 3.7
E
ã d úl l
õ / l
E
ã d úl l
õ / l
Emissão de múltiplas instruções/ciclo
Emissão de múltiplas instruções/ciclo
z
Duas variantes
•
Processadores superescalares
: número variável deinstruções/ciclo (1 a 8) agendadas (escalonadas) pelo instruções/ciclo (1 a 8), agendadas (escalonadas) pelo compilador ou por hardware (Tomasulo)
•
IBM PowerPC, Sun UltraSparc, DEC Alpha, HP 8000(
) L
d ( )L
•
(Very) Long Instruction Words (V)LIW
: númerofixo de instruções (4-16) agendadas pelo compilador
•
Intel Architecture-64 (IA-64): “Explicitly Parallel Instruction ( ) p y Computer (EPIC)”z
Na expectativa de CPI < 1, usamos geralmente IPC em vez de
CPI
CPI
VL W
l
d â
VL W
l
d â
VLIW vs superescalares dinâmicos
VLIW vs superescalares dinâmicos
z
As arquitecturas VLIW/EPIC emitem múltiplas instruções
por ciclo de relógio mas utilizam:
•
Agendamento estático: o compilador define pacotes de Agendamento estático: o compilador define pacotes de instruções a executar em paralelo•
código específico para processadorz
As arquitecturas superescalares usam:
zAs arquitecturas superescalares usam:
•
agendamento estático•
agendamento dinâmicol
(1)
l
(1)
Superescalares (1)
Superescalares (1)
z
Arquitecturas super-escalares com agendamento dinâmico
•
Número variável de instruções a emitir por ciclo de relógio(e.g. 0-4) ( .g. )
z
Decide dinamicamente a emissão de instruções em
paralelo
•
C id d d f f t h d á i i t õ ( t )•
Capacidade de fazer o fetch de várias instruções (pacote)•
Unidade de emissão com capacidade para definir quais asinstruções num pacote que podem ser emitidas em paralelo z
Unidade de emissão de instruções (pode ser pipeline)
•
Identifica conflitos dentro dum pacote de instruçõesl
(2)
l
(2)
Superescalares (2)
Superescalares (2)
z Pode-se considerar a possibilidade de emitir em paralelo qualquer combinação de instruções
•
Mas podem-se criar conflitos estruturais (várias instruções a disputar simultaneamente os mesmos recursos)z Com restrições, simplifica-se a unidade de emissão
•
Por exemplo poder apenas emitir 1 instrução inteira e 1 FP por cada ciclo de relógio reduz consideravelmente os conflitosÚnicos 2 casos
LD.D F1,0(R1) ou ADD.D F3,F2,F1
ADD D F4 F2 F1 SD D F3 0(R1)
ADD.D F4,F2,F1 SD.D F3,0(R1)
•
Mas impede a exploração máxima de ILP•
Outras instruções inteiras: LD, SD, BR, ALU int, FP MoveO i t d flit t ú d i t õ z O impacto dos conflitos aumenta com o número de instruções a
l
(3)
l
(3)
Superescalares (3)
Superescalares (3)
z
M IPS64 Superescalar de 2 vias: 2 instruções, 1 FP & 1
inteira
•
Fetch 128-bits/ciclo de relógio cycle•
Apenas emite a 2ª instrução se a 1ª for emitida•
Mais portos na FPR para permitir FP load (inteira) & FP op num pacoteTipo Andares do pipeline
Instrução inteira
IF ID EX MEM WB
Instrução FP
IF ID EX MEM WB
Instrução FP
IF ID EX MEM WB
Instrução inteira
IF ID EX MEM WB
Instrução FP
IF ID EX MEM WB
Instrução inteira
IF ID EX MEM WB
l
(4)
l
(4)
Superescalares (4)
Superescalares (4)
Tipo Andares do pipeline Instrução inteira IF ID EX MEM WB Se salto condicionado
Instrução FP IF ID EX MEM WB
Instrução inteira IF ID EX MEM WB Instrução FP IF ID EX MEM WB
3 slots de atraso
ç
Instrução inteira IF ID EX MEM WB Instrução FP IF ID EX MEM WB
z Numa arquitectura com 1 instrução por ciclo de relógio apenas 1
z Numa arquitectura com 1 instrução por ciclo de relógio apenas 1
slot de atraso
z Com uma arquitectura superescalar de 2 vias temos 3 slots de
atraso depois de um branchp
•
A instrução na outra metade do pacote não pode ser utilizada, nem as instruções do próximo slotl
(5)
l
(5)
Superescalares (5)
Superescalares (5)
â
z
Indispensável a predição dinâmica de saltos
•
Numa arquitectura escalar (emissão de 1 instrução por ciclo) a predição de saltos é útil para aumentar o CPI•
Numa arquitectura superescalar de n vias a predição éindispensável
•
Podem ocorrer n vezes mais saltos do que numa arquitectura escalarescalar
•
O impacto relativo dos stalls devidos aos saltosincorrectamente previstos é maior com um CPI menor (lei de Amdahl)
z
Em condições muito especiais, é possível obter CPI = 0,5
ou IPC = 2 para uma arquitectura superescalar com
emissão de 2 vias
•
Desde que exactamente 50% de instruções FPl
(6)
l
(6)
Superescalares (6)
Superescalares (6)
z
Exemplo com 2 instruções por ciclo de relógio e CPI =
0,5
l
( )
l
( )
Superescalares (7)
Superescalares (7)
z Se mais instruções forem emitidas no mesmo ciclo, maior dificuldade com a descodificação e com a emissão
•
Mesmo com um processador 2-escalar => examinar 2 códigosoperação, 6 campos de registos, e decidir se se podem emitir 1 ou 2 instruções (existência ou não de conflitos)
z VLIW: troca espaço ocupado pelas instruções por d difi ã i l
descodificação simples
•
A instrução longa tem espaço para várias operações•
Por definição, todas as operações que o compilador coloca nai t ã l ã i d d t d t d
instrução longa são independentes => podem ser executadas em paralelo
•
Ex.: 2 operações inteiras, 2 ops FP, 2 referências à memória de dados 1 saltodados, 1 salto
l
(8)
l
(8)
Superescalares (8)
Superescalares (8)
l d â
l d â
Superescalar dinâmico
Superescalar dinâmico
z
O hardware pode emitir (0 -> 8) instruções/ciclo
zEmissão em ordem
•
Emissão arbitrária de k viasEmissão arbitrária de k vias•
Qualquer combinação de k instruções por qualquer ordem•
Emissão não arbitrária de k viasE k/2 i õ i i k/2 i õ FP
•
Ex. k/2 instruções inteiras, k/2 instruções FPz
Todos os conflitos são verificados no andar de emissão
•
Entre instruções a ser emitidas, e entre estas e as ç ,ã
d õ
(1)
ã
d õ
(1)
A emissão de instruções (1)
A emissão de instruções (1)
z
Processador superescalar com agendamento dinâmico de k
vias
IPreF: Prefetch de instruções
IF E i d i t ã d t ifi há flit
IF: Examina cada instrução do pacote e verifica se há conflitos entre as instruções
IS1: Decide quantas instruções do pacote podem ser emitidas simultaneamente
simultaneamente
IS2: Examina as instruções seleccionadas por IS1 e as que já foram emitidas e verifica se há conflitos, caso em que não emite as primeiras
ã
d õ
(2)
ã
d õ
(2)
A emissão de instruções (2)
A emissão de instruções (2)
z O andar de emissão é complexo
•
Determina o período de relógioz O andar de emissão é pipelined para poder emitir k instruções d i l d ló i
em cada ciclo de relógio
•
Muitos superescalares com agendamento estático e todos ossuperescalares com agendamento dinâmico têm um andar de emissão que é pipelined
que é pipelined
•
Maiores penalizações por saltos incorrectamente previstosz Aumento do número de vias de emissão Æ maior o pipeline de emissão
•
Não é fácilz Limitações da frequência de relógio nos superescalares
•
Ou então aumenta-se a profundidade do pipeline de emissão•
Mas neste caso as penalizações pelos saltos incorrectos são ainda maiores!ã
d õ
(3)
ã
d õ
(3)
A emissão de instruções (3)
A emissão de instruções (3)
z
Combinações diferentes de emissões
FP op FP op
FP load, LD.D
Mais portos na FPR para permitir o FP load e o FP op no mesmo período FP load e o FP op no mesmo período de relógio
ã
d õ
(4)
ã
d õ
(4)
A emissão de instruções (4)
A emissão de instruções (4)
M P
d â
d
2
M P
d â
d
2
MIPS superesc. dinâmico de 2 vias
MIPS superesc. dinâmico de 2 vias
1. Fetch de duas instruções da unidade de Prefetch ou da cache
2. Determina quantas instruções podem ser emitidas no pacote
nesse ciclo de relógio:
0 1 ou 2
nesse ciclo de relógio:
0, 1 ou 2
E
ã d 2
E
ã d 2
Emissão de 2 vias
Emissão de 2 vias
z
É fácil fazer o fetch de I1 e de I2, ou de I3 e I4
z
Mas e quanto a I2 e I3 ?
•
A maioria dos processadores apenas emite I2•
A maioria dos processadores apenas emite I2C fl
C fl
Conflitos
Conflitos
z
Pacotes de emissão potenciais
•
{ }, {INT}, {FP}, {INT, FP}, {FP,INT}z
Muitos dos conflitos podem ser resolvidos dentro do
f
p
m
pacote de emissão {FP load/store/move, FP}
•
Conflito estrutural na FPR LD D F2 0(R1)•
Conflito RAW LD.D F2,0(R1) ADD.D F2,F1,F1 Conflito RAW LD.D F1,0(R1) ADD.D F2,F1,F1l
d â
l
d â
Superesc. com escalon. dinâmico
Superesc. com escalon. dinâmico
z
2 soluções fundamentais
•
Emitir uma instrução a cada meio ciclo de relógio (pipeline)•
Duas instruções processadas em cada cicloDuas instruções processadas em cada ciclo•
Emissão
edespacho
•
Acrescentar a lógica necessária à emissão simultânea de duas instruções•
Dependências entre as instruçõesz
Ambas as soluções
m
ç
•
Pipeline & lógica suplementar zEmissão em ordem
d
d
d â
d
l
l
z
Integração da predição dinâmica de saltos no pipeline
com escalonamento dinâmico
E
l
2
d
ã (1)
E
l
2
d
ã (1)
Exemplo com 2 vias de emissão (1)
Exemplo com 2 vias de emissão (1)
z
Emitir um par de instruções se as estações de reserva
correspondentes estiverem disponíveis
z
Emitir o par mesmo que haja dependências
p
q
j
p
z
Estender o esquema de Tomasulo para lidar com
unidades
funcionais e register files
para inteiros e para FP
zAdmitir que os andares
Emite
&
Escreve Resultado
do
zAdmitir que os andares
Emite
&
Escreve Resultado
do
esquema de Tomasulo levam um ciclo de relógio cada
zAdmitir ainda que existe
•
hardware para predição dinâmica de saltos com predição•
hardware para predição dinâmica de saltos com prediçãosempre correcta
•
uma unidade de avaliação da condição de salto•
uma ALU para inteiros (para cálculo de endereços e para•
uma ALU para inteiros (para cálculo de endereços e paraoperações ALU)
E
l
2
d
ã (2)
E
l
2
d
ã (2)
Exemplo com 2 vias de emissão (2)
Exemplo com 2 vias de emissão (2)
z
Consideremos o seguinte ciclo
LOOP: L D F0 0(R1) ; F0 = elemento do array LOOP: L.D F0, 0(R1) ; F0 = elemento do array
ADD.D F4, F0, F2 ; adiciona escalar in F2 S.D F4, 0(R1) ; guarda resultado
DADDIU R1, R1, #-8 ; decrementa ponteiro de 8 bytes BNE R1, R2, LOOP ; salta se R1 != R2
z Vamos desdobrar este ciclo por 3 iterações z Latência do ADD.D = 3 ciclos
E
l
2
d
ã (3)
E
l
2
d
ã (3)
Exemplo com 2 vias de emissão (3)
Exemplo com 2 vias de emissão (3)
It Inst uçã Emissã Ex c M m Esc v CDB C m ntá i
1 1
2
Itr Instrução Emissão Exec Mem Escreve CDB Comentário L.D F0, 0(R1)
ADD.D F4,F0,F2 1
1
3 4
5 Espera por L.D Conflito
Dados RAW 8 2 2 S.D F4, 0(R1) DADDIU R1,R1#-8 BNE R1,R2,LOOP 1 1 1 3 3
4 5 Espera pela ALU Conflitoestrutural
6 Espera por DADDIU
Conflito
9 Espera por ADD.D
L.D F0, 0(R1) ADD.D F4,F0,F2 S.D F4, 0(R1) 2 2 2 4 4 5
7 Espera por BNE completo Conflito controlo
8 9
10 13 Espera por L.D
14 Espera por ADD.D
8 Conflito de estrutural DADDIU R1,R1#-8 BNE R1,R2,LOOP L.D F0, 0(R1) 2 2 3 5 6 7
9 10 Espera pela ALU
11 Espera por DADDIU
12 13 14 Espera por BNE completo
estrutural ADD.D F4,F0,F2 S.D F4, 0(R1) DADDIU R1,R1#-8 3 3 3 7 8 8 13
14 Espera pela ALU
15 Espera por L.D 15
18
19 Espera por ADD.D p p
E
l
2
d
ã (4)
E
l
2
d
ã (4)
Exemplo com 2 vias de emissão (4)
Exemplo com 2 vias de emissão (4)
z
Notar que
•
O ritmo de emissão de instruções é•
IPC = 5/3 = IPC 5/3 1 671,67 e CPI = 0 6e CPI 0,6•
Mas o ritmo de execução de instruções é bastante mais baixoE
l
2
d
ã (5)
E
l
2
d
ã (5)
Exemplo com 2 vias de emissão (5)
Exemplo com 2 vias de emissão (5)
Utilização dos recursos E se usarmos um somador suplementar suplementar para o cálculo dos endereços dos Loads e ainda dos Loads e ainda um segundo CDB?
E
l
2
d
ã (6)
E
l
2
d
ã (6)
Exemplo com 2 vias de emissão (6)
Exemplo com 2 vias de emissão (6)
It Inst uçã Emissã Ex c M m Esc v CDB C m ntá i
1 1
2
Itr Instrução Emissão Exec Mem Escreve CDB Comentário L.D F0, 0(R1)
ADD.D F4,F0,F2 1
1
3 4
5 8 Espera por L.D SegundoCDB 2 2 S.D F4, 0(R1) DADDIU R1,R1#-8 BNE R1,R2,LOOP 1 1 1 3 3 3 4 Executa antes
5 Espera por DADDIU
9 Espera por ADD.D
Eliminação L.D F0, 0(R1) ADD.D F4,F0,F2 S.D F4, 0(R1) 2 2 2 4 4 5
6 7 8 Espera por BNE completo
9 12 Espera por L.D
13 Espera por ADD.D
7 Eliminação dos conflitos estruturais DADDIU R1,R1#-8 BNE R1,R2,LOOP L.D F0, 0(R1) 2 2 3 5 6 7 6 7 Executa antes
8 Espera por DADDIU
9 10 11 Espera por BNE completo
que dependiam da unidade inteira ADD.D F4,F0,F2 S.D F4, 0(R1) 3 3 7 8 10 12 15 Espera por L.D 16 Espera por ADD.D
inteira única
E
l
2
d
ã ( )
E
l
2
d
ã ( )
Exemplo com 2 vias de emissão (7)
Exemplo com 2 vias de emissão (7)
z
Agora
•
O ritmo de emissão de instruções ainda é•
IPC = 5/3 = IPC 5/3 1 671,67 e CPI = 0 6e CPI 0,6•
Mas o ritmo de execução de instruções é maior do que anteriormente•
IPC = 15/11 = IPC = 15/11 = 1 371,37 e e CPI = 0 73 < 1CPI = 0,73 < 1z
Porém, agora vamos ter uma
menor utilização das
E
l
2
d
ã (8)
E
l
2
d
ã (8)
Exemplo com 2 vias de emissão (8)
Exemplo com 2 vias de emissão (8)
D
h (1)
D
h (1)
Desempenho (1)
Desempenho (1)
z
Quais são os
factores limitativos do desempenho
do
processador superescalar com agendamento dinâmico e
emissão de 2 vias ao executar o ciclo anterior?
•
Desiquilíbrio entre a estrutura de pipeline e o ciclo que serviu de exemplo•
impossibilidade de utilizar plenamente as unidades de FP•
é á i i l õ i t i•
é necessário que o ciclo possua menos operações inteiras com dependências•
“overhead” do ciclo muito elevado (2/5)•
Tentar reduzir este “overhead” Î ver mais à frente soluções Tentar reduzir este overhead Î ver mais à frente soluções possíveis•
O conflito de controlo assinalado impede a execução do LD.D antes de o BNE do ciclo anterior ter acabado a sua execução Î ver a seguir aespeculação
por hardwareD
h (2)
D
h (2)
Desempenho (2)
Desempenho (2)
z
E ainda ...
•
Se os saltos continuarem a ser correctamente previstos•
Aparecem conflitos estruturais porque a unidade de emissão Aparecem conflitos estruturais porque a unidade de emissãoacaba por encher as estações de reserva
•
Os conflitos de controlo têm um grande impacto no desempenho do pipelinedesempenho do pipeline
•
No caso anterior (situação a verde no acetato seguinte) atrasa directamente 1 ciclo por iteração e vai provocar indirectamente um conflito estrutural (a vermelho)D
h (3)
D
h (3)
Desempenho (3)
Desempenho (3)
It Inst uçã Emissã Ex c M m Esc v CDB C m ntá i
1 1
2
Itr Instrução Emissão Exec Mem Escreve CDB Comentário L.D F0, 0(R1)
ADD.D F4,F0,F2 1
1
3 4
5 8 Espera por L.D Conflitode dados 2 2 S.D F4, 0(R1) DADDIU R1,R1#-8 BNE R1,R2,LOOP 1 1 1 3 3 3 4 Executa antes
5 Espera por DADDIU
9 Espera por ADD.D
Conflito l L.D F0, 0(R1) ADD.D F4,F0,F2 S.D F4, 0(R1) 2 2 2 4 4 5
6 7 8 Espera por BNE completo
9 12 Espera por L.D
13 Espera por ADD.D
7 de controlo Conflito estrutural DADDIU R1,R1#-8 BNE R1,R2,LOOP L.D F0, 0(R1) 2 2 3 5 6 7 6 7 Executa antes
8 Espera por DADDIU
9 10 11 Espera por BNE completo ADD.D F4,F0,F2 S.D F4, 0(R1) DADDIU R1,R1#-8 3 3 3 7 8 8 10 9 Executa antes 12 Espera por L.D 10 15
E
l ã
h d
E
l ã
h d
Especulação por hardware
Especulação por hardware
z
Porém ...
•
Será possível, para além de fazer o fetch e a emissão de uma instrução, executá-la de forma especulativa?m ç , f m pz
Considere-se a situação em que
cada ciclo executa um
salto
•
l t i di ã f it ( hi ót )•
no exemplo anterior a predição era perfeita (por hipótese) e, contudo, o CPI era apenas de 1, aproximadamentez
Ou seja, a predição, só por si, não é suficiente para
assegurar um ILP elevado
E
l ã
h d
E
l ã
h d
Especulação por hardware
Especulação por hardware
z
Vamos substituir a dependência de controlo especulando
sobre o resultado dos saltos
•
Executar o programa como se a especulação estivesse Executar o programa como se a especulação estivesse sempre correctaz
Escalonamento dinâmico
:
Fetch, Emissão
(
Não executa
)
E
l ã
F t h E i ã E
ã
l ti
z
Especulação
:
Fetch, Emissão, Execução especulativa
•
Especulação incorrecta Æ Desfaz-se a especulaçãod
d
bá
bá
Ideias
Ideias básicas
básicas
z
Predição dinâmica de saltos
para escolher as instruções a
executar especulativamente
z
Especulação
para permitir a execução de instruções a
zEspeculação
para permitir a execução de instruções a
seguir aos saltos condicionados
antes
das dependências
de controlo terem sido resolvidas
E
l
t di â i
d
dif
t
z
Escalonamento dinâmico
para agendar diferentes
combinações de blocos básicos de código
z
PowerPC 603/604/G3/G4, MIPS R10000/R12000, Intel
Pentium II/III/4, Alpha 21264, AMD K5/K6/Athlon
E
ã
l ã
E
ã
l ã
Execução com especulação
Execução com especulação
ê
z Permite executar instruções antes de resolver dependências de controlo
•
É necessário ter a capacidade de re-iniciar a execução exactamente no ponto em se começou a especularexactamente no ponto em se começou a especular
z Trata-se de um problema semelhante ao do atendimento
preciso das excepções! z Solução para ambos: z Solução para ambos:
•
A terminação de uma instrução é feita em ordem•
A terminação corresponde à escrita nos registos (Register File) ou na memória•
No entanto, quando acaba a execução (antes da terminação) da instrução os resultados podem ser usados especulativamente por outras instruçõesFase final adicional da sequência de execução z Fase final adicional da sequência de execução
ROB
ROB R
R
d
d
B ff
B ff
(1)
(1)
ROB
ROB –– Reorder Buffer (1)
Reorder Buffer (1)
z
Para introduzir a
Terminação da Instrução
(andar de
“
Commit
”) na sequência de execução
•
Alterar procedimentos na sequência de execuçãoAlterar procedimentos na sequência de execução•
Introduzir uma memória tampão ÆTampão de
reordenação
ç
ou ROB – “Reorder Buffer”•
No ROB guardam-se as instruções que já foram executadas especulativamente (fora de ordem) mas que ainda nãoROB
ROB R
R
d
d
B ff
B ff
(2)
(2)
ROB
ROB –– Reorder Buffer (2)
Reorder Buffer (2)
Emissão em ordemm m m
Execução fora de ordem
ROB
ROB R
R
d
d
B ff
B ff
(3)
(3)
ROB
ROB –– Reorder Buffer (3)
Reorder Buffer (3)
z
O ROB é usado para passar resultados
•
Guarda resultados das instruções que terminam a execução•
Fornece operandos desde que uma instrução acaba a p q çexecução até que é terminada (committed)
•
Passa resultados entre instruções que podem ser executadas especulativamente•
N t t lt d ó ã it i t•
No entanto, esses resultados só são escritos nos registos (memória) quando termina a instruçãoz
Quando a instrução já não é especulativa
O d d C i d•
O andar de Commit guarda-a•
São escritas as Register Files ou a memória (muda-se em definitivo o estado do processador)U ROB
é
B ff
d
d
z
Um ROB contém os
Store Buffers
do esquema de
Tomasulo
T
l
ROB
T
l
ROB
Tomasulo com ROB
Tomasulo com ROB
E
d ROB (1)
E
d ROB (1)
Estrutura do ROB (1)
Estrutura do ROB (1)
E
d ROB (2)
E
d ROB (2)
Estrutura do ROB (2)
Estrutura do ROB (2)
z
O ROB contem 4 campos com informação
•
Sobre o destino Æ registo ou endereço de memória•
O O tipo de instruçãotipo de instrução ÆÆ BranchBranch; ; STORESTORE (destino: endereço (destino: endereçode memória); LOAD/ALU op (destino: número do registo)
•
Sobre o valor Æ resultado da instrução até a instrução sercompletada com confiança e poder ser enviada para o andar completada com confiança e poder ser enviada para o andar de terminação (commit)
•
Prontidão do valor ( ready? ) Æ indica se a instrução já completou a execução isto é se o valor é válidoE
d ROB (3)
E
d ROB (3)
Estrutura do ROB (3)
Estrutura do ROB (3)
z
Cada instrução que é emitida é colocada (em ordem) no
ROB
•
Dado que cada instrução ocupa uma entrada no ROB até Dado que cada instrução ocupa uma entrada no ROB atéterminar, o resultado é identificado usando como etiqueta a entrada (buffer) do ROB e não o identificador da estação de reserva
•
Isso significa que uma estação de reserva tem indicação do buffer que a instrução ocupa no ROBz
ROB Æ FIFO de instruções em memória segundo a ordem
zROB Æ FIFO de instruções em memória segundo a ordem
F
d T
l
l
(1)
F
d T
l
l
(1)
Fases do Tomasulo especulativo (1)
Fases do Tomasulo especulativo (1)
z
Para além das 3 fases do Tomasulo não especulativo,
agora existe uma 4ª fase no fim, de terminação
(“commit”)
(
mm )
z
Emite
(“
dispatch
”)
•
Obtém uma instrução da fila de espera & emite-a se existiruma Estação de Reserva (RS) disponível e uma entrada no uma Estação de Reserva (RS) disponível e uma entrada no ROB.
•
Caso contrário, faz stall.•
Envia operandos para a RS se os operandos estiverem disponíveis no ROB ou na Register File.•
Envia o número da entrada (buffer) do ROB para a RS.•
Posteriormente, a RS coloca o resultado e uma etiqueta noF
d T
l
l
(2)
F
d T
l
l
(2)
Fases do Tomasulo especulativo (2)
Fases do Tomasulo especulativo (2)
z
Executa
•
Espera pelos operandos que não estão disponíveis,observando o CDB, i.e., verifica a existência de D , . ., f conflitos f RAW
•
Quando operandos disponíveis numa RS, executa a operação•
As instruções podem levar múltiplos ciclos de relógio nesta As instruções podem levar múltiplos ciclos de relógio nestafase
•
As instruções LOAD precisam de 2 ciclos:•
d ifi L d tá t d T ã d L it•
o andar verifica se o Load está no topo do Tampão de Leitura (Load Buffer)•
lê da memória•
As instruções STORE apenas precisam de calcular o•
As instruções STORE apenas precisam de calcular oendereço efectivo, pelo que só necessitam do registo de base disponível
F
d T
l
l
(3)
F
d T
l
l
(3)
Fases do Tomasulo especulativo (3)
Fases do Tomasulo especulativo (3)
z
Escreve Resultado
•
Coloca o resultado no CDB, conjuntamente com a etiqueta com o número da entrada do ROBm m•
Marca a RS como disponível•
Todas as RS e o ROB lêem o CDB•
A in t õ STORE p i m d m t ã p i l:•
As instruções STORE precisam de uma actuação especial:•
Se valor disponível: escreve-o numa entrada do ROB•
Se valor não disponível: observa o CDB até o valor ser emitido (broadcast) e actualiza o campo de Valor na entrada do ROB (broadcast) e actualiza o campo de Valor na entrada do ROBF
d T
l
l
(4)
F
d T
l
l
(4)
Fases do Tomasulo especulativo (4)
Fases do Tomasulo especulativo (4)
z Termina a instrução (“commit”)
•
Uma instrução termina quando chega ao topo do ROB e está correcta (instruções terminadas – “committed” - por ordem)•
BRANCH com predição incorrecta: quando o Branch atinge o topo do ROB e se conhece exactamente a condição de salto•
Faz a limpeza (“flush”) de todas as instruções no ROB (que foraml d ã
especulativa mas incorrectamente executadas Æ não terminam)
•
Começa a execução com a instrução correcta a seguir ao branch, no endereço alternativo do ROB•
STORESTORE: quando o Store atinge o topo do ROB e o resultado está : quando o Store atinge o topo do ROB e o resultado está disponível Æ terminação normal Æ escreve na memória e retira a instrução do ROB•
As outras instruçõesç : quando a instrução atinge o topo do ROB e o q ç g p resultado está disponível Æ terminação normal Æ escreve numROB
ROB
ROB
ROB
z
O ROB é implementado como um tampão circular com
acesso do tipo FIFO
•
Uma entrada é reservada na primeira fase da emissão e é Uma entrada é reservada na primeira fase da emissão, e é libertada sequencialmente quando a instrução é completada•
Para tirar partido da especulação e para atender ao seutamanho limitado os ROB são geralmente desenhados para tamanho limitado, os ROB são, geralmente, desenhados para permitir a terminação de mais do que uma instrução por
E
l ã l
(1)
E
l ã l
(1)
Exemplo com emissão simples (1)
Exemplo com emissão simples (1)
z
Consideremos o mesmo exemplo usado no Tomasulo não
especulativo
L D F6 34(R2) L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB D F8 F6 F2l tê i
SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2com as mesmas latências:
ADD.D 2 ciclos MUL.D 10 ciclos MUL.D 10 ciclos DIV.D 40 ciclos
E
l
ã
l
E
l
ã
l (2)
(2)
Exemplo com emissão simples
Exemplo com emissão simples (2)
(2)
z
As tabelas que se seguem mostram o que acontece no
ROB quando a instrução
MUL.D acabou a execução e está
pronta a ser terminada
•
MUL.D está no topo do ROB•
As instruções LD.D terminaram Æ apenas estão incluídas para se perceber o que aconteceu (os Buffers #1 e #2tã di í i ) estão disponíveis)
•
As instruções SUB.D e ADD.D também acabaram aexecução mas ainda não terminaram Æ só terminam depois de MUL D terminar (terminação em ordem)
de MUL.D terminar (terminação em ordem)
•
Os resultados de SUB.D e de ADD.D estão, contudo, determinados e podem ser utilizados por outras instruções•
DIV D está em execução porque tem uma latência maior do DIV.D está em execução porque tem uma latência maior doE
l
ã
l
E
l
ã
l (3)
(3)
Exemplo com emissão simples
Exemplo com emissão simples (3)
(3)
E
l
ã
l
E
l
ã
l (4)
(4)
Exemplo com emissão simples
E
l ã l
(5)
E
l ã l
(5)
Exemplo com emissão simples (5)
Exemplo com emissão simples (5)
z
As Estações de Reserva (RS) e o Estado dos Registos (FP
no exemplo) contêm essencialmente a mesma informação
que no Tomasulo não especulativo
q
m
p
z
As diferenças são as seguintes
•
As referências às RS no Tomasulo não especulativo (acetato a seguir) são substituídas por referências aos buffers doa seguir) são substituídas por referências aos buffers do ROB nos campos Qj e Qk das RS e nos campos de estado dos Registos FP
•
I l i D t RS d T l l tiE
l ã l
(6)
E
l ã l
(6)
Exemplo com emissão simples (6)
Exemplo com emissão simples (6)
Tomasulo não especulativo
Nome Busy Op Vj Vk Qj Qk A p Load1 Load2 No No Add1 Add2 Add3 No No No Add3 Mult1 Mult2 No Yes Yes Mul Div Mem[45+Regs[R3]] Mem[34+Regs[R3]] Regs[F4] Mult1 Qi F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 Mult1 Mult2 Qi Mult1 Mult2
E
l
ã
l ( )
E
l
ã
l ( )
Exemplo com emissão simples (7)
Exemplo com emissão simples (7)
z
Estas diferenças explicam os diferentes comportamentos
de um processador com especulação e de um processador
com agendamento dinâmico não especulativo
m g
m
m
p
•
Nenhuma instrução das que se seguem à instrução que acabou de ser executada mas que ainda não terminou (MUL.D no exemplo) pode vir terminada(MUL.D no exemplo) pode vir terminada
•
No processador com agendamento dinâmico não especulativo, SUB.D e ADD.D já terminaram Æ mas não terminaram ainda no processador especulativop p
•
O processador com ROB pode executar códigodinamicamente enquanto mantém um modelo com excepções precisas.
E
l ã l
(8)
E
l ã l
(8)
Exemplo com emissão simples (8)
Exemplo com emissão simples (8)
z
Exemplo: se MUL.D provocar uma excepção, podemos
aguardar que a instrução chegue ao topo do ROB e,
então, aceitamos a excepção Æ com “flush” do resto do
,
m
pç
m f u
ROB
•
Com agendamento dinâmico, nas mesmas circunstânciasADD D e SUB D teriam terminado antes de MUL D provocar ADD.D e SUB.D teriam terminado antes de MUL.D provocar a excepção, os registos F8 e F6 (destinos de SUB.D e de ADD.D) teriam visto mudar os seus valores, e a excepção seria imprecisa