Previsão de Desvio, Superescalar, VLIW e Software Pipelining

50
DAP.F96 1 Previsão de Desvio, Superescalar, VLIW e Software Pipelining

description

Previsão de Desvio, Superescalar, VLIW e Software Pipelining. Revisão: Tomasulo. Evita conflitos WAR, WAW sem espera Permite desenrolamento de loop em HW Não limitado a blocos básicos (provê previsão de desvio) Contribuições Escalação Dinâmica Renomeação de Registradores - PowerPoint PPT Presentation

Transcript of Previsão de Desvio, Superescalar, VLIW e Software Pipelining

Page 1: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 1

Previsão de Desvio, Superescalar, VLIW e Software Pipelining

Page 2: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 2

Revisão: Tomasulo

• Evita conflitos WAR, WAW sem espera• Permite desenrolamento de loop em HW• Não limitado a blocos básicos (provê

previsão de desvio)• Contribuições

– Escalação Dinâmica– Renomeação de Registradores– Tratamento separado de Load e Store

• Descendentes do 360/91 são PowerPC 604, 620; MIPS R10000; HP-PA 8000; Intel Pentium Pro, II, III, IV

Page 3: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 3

Previsão estática de desvio

• Análise de desvios pelo software (compilador), e tomada de medidas para melhoria do desempenho

• Exemplo: desenrolamento de loops, para diminuir a quantidade de desvios.

Page 4: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 4

Previsão Dinâmica de Desvio (hardware)

Previsão Local: uma instrução de desvio Global: várias instruções de desvio

• Previsão Local Simples: usa apenas um bit Usa-se a tabela – Branch History Table – BHT - de um bit,

onde o índice de entrada é a parte menos significativa da instrução de branch

BNEZ R1, Loop• O bit diz se o desvio aconteceu ou não da última vez• Em um loop, causa dois erros de previsões:

– Início: a previsão é não fazer loop– Fim: a previsão é fazer loop

Page 5: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 5

ExemploLoop: LD F0 0 R1

MULTD F4 F0 F2

SD F4 0 R1

SUBI R1 R1 #8

BNEZ R1 Loop

Considerando-se que no início R1 é igual a 80, e bit de previsão igual a 0 (não desvia).INÍCIO: Primeira execução de BNEZ: como R1 = 80, desvia, ocorre erro de previsão, muda a previsão na BHT para 1 (desvia).

Execução de BNEZ subseqüentes: enquanto R1 > 0, desvia, previsão é correta a previsão na BHT continua 1 (desvia).

FIM: Última execução de BNEZ: como R1 = 0, não desvia, ocorre erro de previsão, muda a previsão na BHT para 0 (não desvia).

Page 6: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 6

Previsão Local usando 2 bits• a previsão muda somente quando ocorrerem dois erros:

• Incrementa quando ocorre desvio• Decrementa quando não ocorre desvio

Previsão dedesvio

11

Previsão dedesvio

10

Previsão denão-desvio

01

Previsão denão-desvio

00

desvia

Não desvia

desvia Não-desvia

Não desvia

desvia

Não-desvia

desvia

início

Page 7: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 7

Exemplo Loop: .................................................................

SUBI R1 R1 #8

BNEZ R1 Loop

No início R1 é igual a 80, e bit de previsão igual a 00(não desvia).INÍCIO: Primeira execução de BNEZ: como R1 = 80, desvia, ocorre erro de previsão, muda a previsão na BHT para 01 (não desvia).Segunda execução de BNEZ: como R1 = 72, desvia, ocorre erro de previsão, muda a previsão na BHT para 11 (desvia).Execução de BNEZ subseqüentes: enquanto R1 > 0, desvia, previsão é correta a previsão na BHT continua 11 (desvia).FIM: Última execução de BNEZ: como R1 = 0, não desvia, ocorre erro de previsão, muda a previsão na BHT para 10 (desvia).

Na primeira execução do programa ocorrem 2 erros de previsão, porém, a partir da próxima vez ocorre apenas 1 erro.

Page 8: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 8

Previsão com correlação entre loops

If (aa == 2) aa = 0;If (bb == 2) bb = 0;If (aa!=bb)

DSUBUI R3,R1,#2 BNEZ R3,L1 ; desvio b1 (aa!=2) DADD R1,R0,R0 ; aa = 0L1: DSUBUI R3,R2,#2 BNEZ R3,L2 ; desvio b2 (bb !=2) DADD R2,R0,R0 ; bb=0L2: DSUBU R3,R1,R2 ; R3 = aa-bb BEQZ R3,L3 ; desvio b3 (aa==bb)

Se não ocorrem desvios b1 e b2 então ocorre desvio b3

O previsor faz a correlação entre loops!!

aa

0

bb

Page 9: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 9

Outro exemplo desvio com correlação

if (d ==0) d = 1; if (d ==1)

Código MIPS:

BNEZ R1,L1 ; desvio b1 (d!=0) DADDIU R1,R0,#1 ; d==0 , então d =1 L1: DADDIU R3,R1,#-1 ; R3 = d -1 BNEZ R3,L2 ; desvio b2 (d!=1)... L2:

d

0

Page 10: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 10

Possível seqüência de execução

d antes do desvio b1

d==0? b1 d antes do desvio b2

d==1? b2

0 sim not taken 1 sim not taken

1 não taken 1 sim not taken

2 não taken 2 não taken

BNEZ R1,L1 ; desvio b1 (d!= 0) DADDIU R1,R0,#1 ; d==0 , então d =1 L1: DADDIU R3,R1,#-1 ; R3 = d - 1 BNEZ R3,L2 ; desvio b2 (d!=1)... L2:

Page 11: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 11

Comportamento de um previsor de 1 bit

d = ? previsãode b1

açãode b1

novaprevisãopara b1

previsãode b2

açãode b2

2 NT T T NT T

novaprevisãopara b2

T

0 T NT NT T NT NT

2 NT T T NT T T

0 T NT NT T NT NT

Resultado: todas as previsões foram incorretas.

BNEZ R1,L1 ; desvio b1 (d!= 0) DADDIU R1,R0,#1 ; d==0 , então d =1 L1: DADDIU R3,R1,#-1 ; R3 = d - 1 BNEZ R3,L2 ; desvio b2 (d!=1)... L2:

Sequênciadada

Page 12: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 12

Previsor de 1 bit com correlação• Para cada desvio tem duas previsões (a/b), sendo que para um

determinado momento vale uma das previsões: a ou b

a - se o último desvio do programa é NT

b - se o último desvio do programa é T

notando-se que o último desvio do programa

normalmente não é o desvio que está sendo previsto, e sim, o que está sendo correlacionado.

bits de previsão

(a/b)

se o último desviodo programa

foi NT usa-se o lado (a )

se o último desviodo programa

foi T usa-se o lado ( b)

NT/NT previsão = NT previsão = NT

NT/T previsão = NT previsão = T

T/NT previsão = T previsão = NT

T/T previsão = T previsão = T

Page 13: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 13

Aplicação no exemplo

d = ? previsãode b1

açãode b1

novaprevisãopara b1

previsãode b2

açãode b2

2 NT/NT T T/NT NT/NT T

novaprevisãopara b2

NT/T

0 T/NT NT T/NT NT/T NT NT/T

2 T/NT T T/NT NT/T T NT/T

0 T/NT NT T/NT NT/T NT NT/T

a/b – usa previsão a a/b – usa previsão b

Resultado – apenas 2 erros de previsão iniciais.

Sequênciadada

Page 14: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 14

Previsão por torneio (Tournament predictor)A forma mais comum para previsão multi-nível

O contador é incrementado sempre que o previsor usado é correto e outro incorreto, e decrementado caso contrário.Quando ambos estão corretos ou incorretos, mantém o estado.

LOCAL GLOBAL

Page 15: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 15

Comparação entre os previsores

Page 16: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 16

Endereço de desvio junto com previsão (Branch Target Buffer – BTB)

• Endereço da instrução (PC) é usado como índice do BTB para obter a previsão e endereço de desvio

• Retorna o endereço da instrução prevista

PC

=

Não: previsão não-desvio

Sim: desvio, usar o PCprevisto

Previsão de desvioPrevisão de PC para desvio

(endereço)

Desvio Previsto(certo ou errado)

Page 17: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 17

• Evita desvio em programas incluindo operações (predicados) dentro das instruções condicionais:

if (x) then A = B op C else NOP– se (x) falso, então não ocorre nenhuma operação

– IA-64: tem campos de condição de 1-bit para execução condicional de instruções

• Vantagem– Evita desvio

• Desvantagens – Toma tempo (clock) mesmo que anulada

– Espera enquanto a condição é avaliada

– Condições complexas reduzem a eficiência, implicam em atraso de pipeline

Suporte de HW para mais ILP (Instruction Level Parallelism)

x

A = B op C

Page 18: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 18

Previsão Dinâmica de Desvio Sumário

• Correlação: Desvios executados recentemente correlacionados com o desvio seguinte

• Branch Target Buffer: inclui endereço de desvio & previsão

• Execução com predicado pode reduzir o número de desvios, número de erros em previsões

Page 19: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 19

Tornando CPI < 1: EmitindoMúltiplas Instruções/Ciclo

• Duas variações

• Superscalar: variando número de instruções/ciclo (1 a 8), escalados pelo compilador ou por HW (Tomasulo)

– IBM PowerPC, Sun UltraSparc, DEC Alpha, HP 8000

• Very Long Instruction Words - VLIW:

• instruções paralelizáveis (4 a16) escalados pelo compilador;

• coloca as instruções dispostas como uma única instrução longa

Page 20: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 20

Tornando CPI < 1: EmitindoMúltiplas Instruções/Ciclo

• Superscalar MIPS: 2 instruções, 1 FP & 1 outra qualquer

– Busca (fetch) 64-bits/ciclo de clock (Int. e FP)

Tipo Estágios de Pipeline

Int. instruction IF ID EX MEM WB

FP instruction IF ID EX MEM WB

Int. instruction IF ID EX MEM WB

FP instruction IF ID EX MEM WB

Int. instruction IF ID EX MEM WB

FP instruction IF ID EX MEM WB

Page 21: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 21

Revisão: desenrolamento de loops para minimizar paradas em MIPS pipeline

1 Loop: LD F0,0(R1)2 LD F6,-8(R1)3 LD F10,-16(R1)4 LD F14,-24(R1)5 ADDD F4,F0,F26 ADDD F8,F6,F27 ADDD F12,F10,F28 ADDD F16,F14,F29 SD F4,0(R1)10 SD F8,-8(R1)11 SD F12,-16(R1)12 SUBI R1,R1,#3213 BNEZ R1,LOOP14 SD F16,8(R1) ; 8-32 = -24

14 ciclos de clock, ou 3.5 por iteraçãoCPI = 1

Page 22: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 22

Desenrolamento em Superscalar

Integer instruction FP instruction Clock cycle

Loop: LD F0,0(R1) 1

LD F6,-8(R1) 2

LD F10,-16(R1) ADDD F4,F0,F2 3

LD F14,-24(R1) ADDD F8,F6,F2 4

LD F18,-32(R1) ADDD F12,F10,F2 5

SD F4,0(R1) ADDD F16,F14,F2 6

SD F8,-8(R1) ADDD F20,F18,F2 7

SD F12,-16(R1) 8

SD F16,-24(R1) 9

SUBI R1,R1,#40 10

BNEZ R1,LOOP 11

SD F20,-32(R1) 12

• Desenrola 5 vezes para evitar atrasos

• 12 clocks, ou 2.4 clocks por iteração

• CPI = 12 / 17 = ~0.7

LD para ADDD: 2 CiclosADDD para SD: 2 Ciclos

Page 23: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 23

Desafio de Múltipla Emissão para superescalar

• Enquanto a separação em Inteiros e FPs seja simples em HW, o CPI de 0.5 é possível somente para programas com:

– Exatamente 50% de operações FP– Sem conflitos

• É difícil: emitir ao mesmo tempo, mais que duas instruções

• É também difícil decidir se 2 instruções escalares podem ser emitidas ao mesmo tempo => examinar 2 opcodes, 6 especificadores de registradores,...

Page 24: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 24

VLIW (Very Large Instruction Word)

– A palavra de instrução longa tem espaço para muitas operações

– Todas as operações que o compilador coloca na palavra de instrução longa são independentes => execução em paralelo

– Ex.: 2 operações inteiras, 2 operações FP, 2 refer. memória, 1 desvio

» 16 a 24 bits por campo => 7*16 ou 112 bits a 7*24 ou 168 bits

Necessita de técnicas de compilação que faz a escalação passando por vários desvios

Page 25: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 25

Desenrolamento em VLIW

Memory Memory FP FP Int. op/ Clockreference 1 reference 2 operation 1 op. 2 branchLD F0,0(R1) LD F6,-8(R1) 1LD F10,-16(R1) LD F14,-24(R1) 2LD F18,-32(R1) LD F22,-40(R1) ADDD F4,F0,F2 ADDD F8,F6,F2 3LD F26,-48(R1) ADDD F12,F10,F2 ADDD F16,F14,F2 4

ADDD F20,F18,F2 ADDD F24,F22,F2 5SD F4,0(R1) SD F8,-8(R1) ADDD F28,F26,F2 6SD F12,-16(R1) SD F16,-24(R1) 7SD F20,-32(R1) SD F24,-40(R1) SUBI R1,R1,#48 8SD F28,-0(R1) BNEZ R1,LOOP 9

Desenrola 7 vezes para evitar atrasos 7 resultados em 9 clocks, ou 1.3 clocks por iteração CPI = 23/9 = ~0.39 Nota: Necessita mais registradores em VLIW (15 vs. 6 em Superescalar)

Page 26: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 26

Geração de código para VLIW - Trace Scheduling

• Dois passos:– Seleção de Traço (Trace)

» Encontrar uma sequência provável de blocos básicos, traço, de uma longa sequência de códigos

– Compactação de Traço» Espremer o traço em algumas instruções VLIW

» Necessita de código alternativo no caso de erro de previsão de código

Page 27: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 27

Superscalar vs. VLIW

• Tamanho de código menor

• Compatibilidade através de gerações de hardware

• Hardware Simplificado para decodificação e emissão de instruções

• Sem conflito entre as instruções

• Mais registradores

Page 28: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 28

Software Pipelining

• Observação: se iterações de loops são independentes, pode-se obter mais ILP tomando instruções de diferentes iterações

• Software pipelining: reorganiza loops tal que cada iteração seja composta de instruções de diferentes iterações do loop original

Iteration 0 Iteration

1 Iteration 2 Iteration

3 Iteration 4

Software- pipelined iteration

Page 29: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 29

Exemplo de Software Pipelining

1 LD F0,0(R1)

2 ADDD F4,F0,F2

3 SD F0,0(R1)

4 SUBI R1,R1,#8 5 BNEZ R1,LOOP

1 LD F0,0(R1)

2 ADDD F4,F0,F2

3 SD F0,0(R1)

4 SUBI R1,R1,#8 5 BNEZ R1,LOOP

1 LD F0,0(R1)

2 ADDD F4,F0,F2

3 SD F0,0(R1)

4 SUBI R1,R1,#8 5 BNEZ R1,LOOP

Iteration 0 Iteration

1 Iteration 2 Iteration

3 Iteration 4

Software- pipelined iteration

ITERAÇÃO 0ITERAÇÃO 1

ITERAÇÃO 2

Page 30: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 30

Exemplo de Software Pipelining Antes: desenrolado 3 vezes 1 LD F0,0(R1) 2 ADDD F4,F0,F2 3 SD F4,0(R1) 4 LD F6,-8(R1) 5 ADDD F8,F6,F2 6 SD F8,-8(R1) 7 LD F10,-16(R1) 8 ADDD F12,F10,F2 9 SD F12,-16(R1) 10 SUBI R1,R1,#24 11 BNEZ R1,LOOP

Após: Software Pipeline 1 SD F4,0(R1); Stores M[i] 2 ADDD F4,F0,F2 ; Adds to

M[i-1] 3 LD F0,-16(R1);Loads M[i-

2] 4 SUBI R1,R1,#8 5 BNEZ R1,LOOP

SW Pipeline

Loop Unrolled

Op

s. s

ob

rep

ost

as

Tempo

Tempo

Page 31: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 31

Intel/HP-IA-64 (ITANIUM ) “Explicitly Parallel Instruction

Computer (EPIC)”• Explora a arquitetura VLIW, deixando a detecção do ILP(Instruction Level

Parallelism) para os compiladores

• 3 Instruções em “grupos” de 128 bits; campos determinam se as instruções são dependentes ou independentes

• 64 registradores inteiros + 64 registradores ponto flutuante

• Hardware checa dependências

• Execução com Predicado => 40% menos previsões errôneas

• IA-64 : nome da arquitetura do conjunto de instruções

• Itanium - implementação

• Suporte para instruções IA-32, porém com desempenho menor que as últimas versões do Pentium, por explorarem mais o desempenho nas instruções EPIC (VLIW) e não terem suportes de ILP por hardware.

Page 32: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 32

Pentium 4 640 na tecnologia de 90 nm (2004)

recursos tamanho comentários

BTB de front-end 4K Previsão de desvio para instr. IA32

Trace Cache 12K uops Cache de rastreio

BTB de trace cache 2K Previsão de desvio para uops

Registradores para renomear

128 128 uops podem estar em execução com até 48 loads e 32 stores

Unidades funcionais 2 ALUs simples, ALU complexa, load, store, move de PF, aritm.PF

ALU simples executam no dobro da taxa de clock, aceitando até 2 uops a cada ciclo

Cache de dados L1 16 Kb, associativo de 8 vias, blocos de 64 bytes

Write through

Cache L2 2Mb, associativo de 8 bias, blocos de 128

Write back

Page 33: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 33

Pentium 4

Page 34: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 34

resumo

Page 35: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 35

SPEC benchmark - INTEGER

Page 36: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 36

SPEC benchmark – Ponto Flutuante

Page 37: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 37

Análise de desempenho do Pentium 4

inteirosP

onto flutuante

Page 38: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 38

Erro de especulação em instruções uop

inteirosP

onto flutuante

Page 39: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 39

Falta em caches L1 e L2 por 1000 instruções

Cache L1 Cache L2inteirosP

onto flutuante

Page 40: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 40

CPI

inteirosP

onto flutuante

Page 41: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 41

Pentium 4 x AMD Opteron

inteirosP

onto flutuante

Page 42: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 42

Desempenho do AMD Opteron x Pentium 4

inteirosP

onto flutuante

Page 43: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 43

IBM Power5 x Pentium 4

inteirosPonto flutuante

Page 44: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 44

Processador ideal

• Todas as restrições de ILP são removidas

• 1- renomeação de registrador – um número infinito de registradores virtuais à disposição, por isso todos os WAW e WAR são evitados e um número infinito de instruções pode iniciar simultaneamente

• 2- previsão de desvio – a previsão é perfeita

• 3- previsão de salto – todos os saltos são previstos

• 4- análise de alias de endereço de memória - todos os endereços de memória são conhecidos, e um load pode ser feito antes de um store, desde que os endereços não sejam iguais.

• 5- caches perfeitos – todos os endereços de memória usam 1 ciclo.

Page 45: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 45

ILP num processador ideal

inteiros

Ponto

flututante

Page 46: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 46

O que um processador ideal precisa fazer

• 1- olhar muito adiante para encontrar um conjunto de instruções a despachar (emitir), prevendo todos os desvios perfeitamente

• 2- renomear todos os usos de registrador para evitar WAR e WAW

• 3- determinar se existem dependências de dados entre as instruções no pacote de emissão; se houver renomear adequadamente

• 4- determinar se existe alguma dependência de memória entre as instruções sendo emitidas e tratar delas adequadamente

• 5- oferecer unidades funcionais replicadas suficientes para que todas as instruções prontas sejam emitidas

Page 47: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 47

Efeitos da limitação da janela

inteiros

Ponto

flutuante

Page 48: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 48

Efeitos dos tipos de previsão de desvios

Page 49: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 49

Redução do paralelismo pelo número de registradores para renomeação

Fig.3.5

Page 50: Previsão de Desvio, Superescalar, VLIW e Software Pipelining

DAP.F96 50

Efeito de níveis variados de análise de alias sobre programas