arquitetura e organização de computadores 2 -...
TRANSCRIPT
24/06/2015
1
Arquitetura e Organização de
Computadores 2
Escalonamento Estático e Arquiteturas VLIW
Dynamic Scheduling, Multiple Issue, and Speculation
Modern microarchitectures:
Dynamic scheduling + multiple issue + speculation
Two approaches:
Assign reservation stations and update pipeline control table in half
clock cycles
Only supports 2 instructions/clock
Design logic to handle any possible dependencies between the
instructions
Hybrid approaches
Issue logic can become bottleneck
2
24/06/2015
2
Emissão múltipla de instruções Para obter CPI<1 é necessário emitir (despachar) mais que uma instrução
por ciclo.
Processadores com emissão múltipla dividem-se em:1) Processador super-escalar: número variável de instruções por ciclo,
sequenciamento dinâmico (ou estático), execução fora de ordem.
2) Processador VLIW (very long instruction word): número fixo de instruções por ciclo ou pacote de instruções com concorrência explicitamente indicada (EPIC—explicit parallel instruction computer); sequenciamento estático.
Para cada instrução de um pacote de instruções: examinar as instruções por ordem; instruções em conflito com instruções em execução ou com instruções anteriores do pacote não emitidas.
Na prática, as instruções de um pacote são todas examinadas concorrentemente; a complexidade da tarefa obriga a usar uma pipeline no estágio de emissão (aumenta a importância da predição).
3
Caracterização de processadores com multi-emissão
4
24/06/2015
3
Tornando CPI < 1:
Emitindo Mú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
5
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,F2
6 ADDD F8,F6,F2
7 ADDD F12,F10,F2
8 ADDD F16,F14,F2
9 SD F4,0(R1)
10 SD F8,-8(R1)
11 SD F12,-16(R1)
12 SUBI R1,R1,#32
13 BNEZ R1,LOOP
14 SD F16,8(R1) ; 8-32 = -24
14 ciclos de clock, ou 3.5 por iteração
CPI = 1
6
24/06/2015
4
Desdobramento em SuperscalarInteger 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.7LD para ADDD: 2 Ciclos
ADDD para SD: 2 Ciclos
7
Múltipla Emissão:
Desafio para arquitetura 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,...
8
24/06/2015
5
VLIW (Very Large Instruction Word)
9
A arquitetura VLIW (Very Long Instruction Word) tenta alcançar maiores
níveis de paralelismo de instrução pela execução de instruções longas
compostas por múltiplas operações.
As palavras de instrução longas consistem de várias operações aritméticas,
lógicas e de controle cada uma das quais poderia ser uma operação
individual em um processador RISC simples.
O processador VLIW executa o conjunto de operações concorrentemente,
alcançando assim um alto grau de paralelismo no nível de instrução.
É responsabilidade do compilador escalonar as operações de modo a
utilizar o melhor possível as unidades funcionais disponíveis no
processador.
Um dos maiores obstáculos à evolução das arquiteturas VLIW tem sido a
falta de compatibilidade binária com as arquiteturas convencionais.
VLIW (Very Large Instruction Word)
10
Um número fixo de operações são formatadas como uma instrução longa (chamada de bundle)
Objetivo do projeto VLIW - reduzir a complexidade do hardware menor tempo de projeto
tempo de ciclo mais curto
melhor desempenho
consumo de energia reduzido
Suporte do compilador para aumentar ILP responsabilidade do compilador montar a palavra VLIW
dependente de um melhor sequenciamento de código comparadas com arquiteturas superscalar in-order issue.
detectar hazards e latências ocultas.
24/06/2015
6
Desdobramento em VLIW
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)
Memory
reference 1
Memory
reference 2
FP
operation 1
FP
operation 2
Integer op.
branchClock
LD F0,0(R1)
LD F10,-16(R1)
LD F18,-32(R1)
LD F26,-48(R1)
SD F4,0(R1)
SD F12,-16(R1)
SD F20,-32(R1)
SD F28,-0(R1)
LD F6,-8(R1)
LD F14,-24(R1)
LD F22,-40(R1)
SD F8,-8(R1)
SD F16,-24(R1)
SD F24,-40(R1)
ADDD F4,F0,F2
ADDD F12,F10,F2
ADDD F20,F18,F2
ADDD F28,F26,F2
ADDD F8,F6,F2
ADDD F16,F14,F2
ADDD F24,F22,F2
ADDD F16,F14,F2
SUBI R1,R1,#48
BNEZ R1,LOOP
1
2
3
4
5
6
7
8
9
11
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
12
24/06/2015
7
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
13
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
14
24/06/2015
8
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
15
Exemplo de Software Pipelining
Antes: desenrolado 3 vezes1 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 Pipeline1 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.
so
bre
po
sta
s
Tempo
Tempo
16
24/06/2015
9
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.
17
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
18
24/06/2015
11
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.
21
inte
iros
Ponto
flutu
tante
ILP num processador ideal
22
24/06/2015
12
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
23
Efeitos da limitação da janelain
teiro
sPonto
flutu
ante
24
24/06/2015
13
Efeitos dos tipos de previsão de desvios
25
Redução do paralelismo pelo número de
registradores para renomeação
Fig.3.5
26