• Nenhum resultado encontrado

28 de Abril de Aula 14

N/A
N/A
Protected

Academic year: 2021

Share "28 de Abril de Aula 14"

Copied!
57
0
0

Texto

(1)

Arquitecturas

Arquitecturas

Arquitecturas

Arquitecturas

superescalares

superescalares

superescalares

superescalares

Aula 14

(2)

E

d

l

E

d

l

Estrutura desta aula

Estrutura desta aula

z

Arquitecturas VLIW e superescalares

z

Emissão de instruções

z

Emissão de 2 vias

z

Emissão de 2 vias

z

Superescalares com agendamento dinâmico

z

Exemplo com 2 vias de emissão

mp

m

m

z

Especulação por hardware

z

Reorder Buffers (ROB)

z

Esquema de Tomasulo especulativo

z

Ref: Hennessy e Pattersson 3 6 3 7

z

Ref: Hennessy e Pattersson, 3.6, 3.7

(3)

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 de

instruçõ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úmero

fixo 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

(4)

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 processador

z

As arquitecturas superescalares usam:

z

As arquitecturas superescalares usam:

agendamento estático

agendamento dinâmico

(5)

l

(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 as

instruçõ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ções

(6)

l

(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 Move

O i t d flit t ú d i t õ z O impacto dos conflitos aumenta com o número de instruções a

(7)

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 pacote

Tipo 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

(8)

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 slot

(9)

l

(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 escalar

escalar

O impacto relativo dos stalls devidos aos saltos

incorrectamente 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 FP

(10)

l

(6)

l

(6)

Superescalares (6)

Superescalares (6)

z

Exemplo com 2 instruções por ciclo de relógio e CPI =

0,5

(11)

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ódigos

operaçã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 na

i 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 salto

dados, 1 salto

(12)

l

(8)

l

(8)

Superescalares (8)

Superescalares (8)

(13)

l d â

l d â

Superescalar dinâmico

Superescalar dinâmico

z

O hardware pode emitir (0 -> 8) instruções/ciclo

z

Emissã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 vias

E k/2 i õ i i k/2 i õ FP

Ex. k/2 instruções inteiras, k/2 instruções FP

z

Todos os conflitos são verificados no andar de emissão

Entre instruções a ser emitidas, e entre estas e as ç ,

(14)

ã

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

(15)

ã

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ógio

z 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 os

superescalares com agendamento dinâmico têm um andar de emissão que é pipelined

que é pipelined

Maiores penalizações por saltos incorrectamente previstos

z Aumento do número de vias de emissão Æ maior o pipeline de emissão

Não é fácil

z 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!

(16)

ã

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

(17)

ã

d õ

(4)

ã

d õ

(4)

A emissão de instruções (4)

A emissão de instruções (4)

(18)

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

(19)

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 I2

(20)

C 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,F1

(21)

l

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

e

despacho

Acrescentar a lógica necessária à emissão simultânea de duas instruções

Dependências entre as instruções

z

Ambas as soluções

m

ç

Pipeline & lógica suplementar z

Emissã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

(22)

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

z

Admitir que os andares

Emite

&

Escreve Resultado

do

z

Admitir que os andares

Emite

&

Escreve Resultado

do

esquema de Tomasulo levam um ciclo de relógio cada

z

Admitir ainda que existe

hardware para predição dinâmica de saltos com predição

hardware para predição dinâmica de saltos com predição

sempre 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 para

operações ALU)

(23)

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

(24)

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

(25)

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 baixo

(26)

E

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?

(27)

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

(28)

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 < 1

z

Porém, agora vamos ter uma

menor utilização das

(29)

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)

(30)

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 a

especulação

por hardware

(31)

D

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ão

acaba por encher as estações de reserva

Os conflitos de controlo têm um grande impacto no desempenho do pipeline

desempenho 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)

(32)

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

(33)

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 p

z

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, aproximadamente

z

Ou seja, a predição, só por si, não é suficiente para

assegurar um ILP elevado

(34)

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 correcta

z

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ção

(35)

d

d

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

z

Especulaçã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

(36)

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 especular

exactamente 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ções

Fase final adicional da sequência de execução z Fase final adicional da sequência de execução

(37)

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ão

(38)

ROB

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

(39)

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ção

z

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

(40)

T

l

ROB

T

l

ROB

Tomasulo com ROB

Tomasulo com ROB

(41)

E

d ROB (1)

E

d ROB (1)

Estrutura do ROB (1)

Estrutura do ROB (1)

(42)

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ço

de memória); LOAD/ALU op (destino: número do registo)

Sobre o valor Æ resultado da instrução até a instrução ser

completada 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álido

(43)

E

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 ROB

z

ROB Æ FIFO de instruções em memória segundo a ordem

z

ROB Æ FIFO de instruções em memória segundo a ordem

(44)

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 existir

uma 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 no

(45)

F

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 nesta

fase

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 o

endereço efectivo, pelo que só necessitam do registo de base disponível

(46)

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 ROB

(47)

F

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 foram

l 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 num

(48)

ROB

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 seu

tamanho 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

(49)

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 F2

l tê i

SUB.D F8,F6,F2 DIV.D F10,F0,F6 ADD.D F6,F8,F2

com as mesmas latências:

ADD.D 2 ciclos MUL.D 10 ciclos MUL.D 10 ciclos DIV.D 40 ciclos

(50)

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 #2

tã di í i ) estão disponíveis)

As instruções SUB.D e ADD.D também acabaram a

execuçã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 do

(51)

E

l

ã

l

E

l

ã

l (3)

(3)

Exemplo com emissão simples

Exemplo com emissão simples (3)

(3)

(52)

E

l

ã

l

E

l

ã

l (4)

(4)

Exemplo com emissão simples

(53)

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 do

a 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 ti

(54)

E

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

(55)

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 especulativo

p p

O processador com ROB pode executar código

dinamicamente enquanto mantém um modelo com excepções precisas.

(56)

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

m f u

ROB

Com agendamento dinâmico, nas mesmas circunstâncias

ADD 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

(57)

P ó

l

P ó

l

Próxima aula

Próxima aula

z

Técnicas de memória

z

Fundamentos de caches

Referências

Documentos relacionados

Análises preliminares das características da alimen- tação da mesma amostra de crianças estudadas em 1984/85* revelam que o fator dieta pode explicar em boa conta os achados relativos

2 Não disponível para o eTGE e chassis para carroçarias especiais (por exemplo, túnel de vento, plataforma, autocaravanas), bem como veículos sem rádio e veículos preparados

Desde que a ONU recomendou o consumo de insetos como solução para os mais graves problemas da Humanidade, como a fome ou a poluição, que a chef começou a engendrar receitas com

“Ver materializada a caminha- da percorrida nos últimos anos, o trabalho de centenas de pes- soas que querem fazer de Coim- bra o epicentro da Cultura e os grandes sonhos que

Em direção a uma teoria geral do processo na Administração da produção: uma discussão sobre a Possibilidade de unificação da teoria das restrições e Da teoria

Ao refletir sobre suas experiências, muitas mulheres perceberam que há uma enorme desvalorização do seu traba- lho por parte dos maridos e também da própria comunidade, que

O equipamento de eletrocautério transforma a corrente elétrica de baixa frequência em corrente de alta frequência, seguindo o Princípio do bisturi elétrico, mas aperfeiçoado

Há somente um modo para se obter vitória sobre estes três tipos de morte (física, espiritual e eterna), a saber, morrendo para a sentença de condenação e maldição da