Sie sind auf Seite 1von 143

Arquitetura de Computadores

Exploração de ILP

Prof. Denis Franco

denisfranco@furg.br

Junho 2013

Universidade Federal do Rio Grande


Centro de Ciências Computacionais
Programa de Pós-Graduação em Computação
Mestrado em Engenharia de Computação

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 1 / 71


Outline

1 Introdução

2 Exploração de ILP via SW

3 Exploração de ILP via HW

4 Despacho múltiplo
Introdução
VLIW
Processadores superescalares
Limites de ILP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 2 / 71


Introdução

Outline

1 Introdução

2 Exploração de ILP via SW

3 Exploração de ILP via HW

4 Despacho múltiplo
Introdução
VLIW
Processadores superescalares
Limites de ILP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 3 / 71


Introdução

Instruction Level Parallelism

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71


Introdução

Instruction Level Parallelism


Abordagens principais para exploração de ILP:
Baseada em HW

Baseada em SW

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71


Introdução

Instruction Level Parallelism


Abordagens principais para exploração de ILP:
Baseada em HW
Exploração dinâmica do paralelismo
Baseada em SW
Exploração estática do paralelismo

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71


Introdução

Instruction Level Parallelism


Abordagens principais para exploração de ILP:
Baseada em HW
Exploração dinâmica do paralelismo
Baseada em SW
Exploração estática do paralelismo

Desktops e servidores
Exploração dinâmica

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71


Introdução

Instruction Level Parallelism


Abordagens principais para exploração de ILP:
Baseada em HW
Exploração dinâmica do paralelismo
Baseada em SW
Exploração estática do paralelismo

Desktops e servidores
Exploração dinâmica
PMDs
O objetivo é operação low power
Paralelismo é explorado em nı́veis mais baixos da arquitetura
Exploração estática é mais utilizada
ARM Cortex-A8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71


Introdução

Instruction Level Parallelism


Abordagens principais para exploração de ILP:
Baseada em HW
Exploração dinâmica do paralelismo
Baseada em SW
Exploração estática do paralelismo

Desktops e servidores
Exploração dinâmica
PMDs
O objetivo é operação low power
Paralelismo é explorado em nı́veis mais baixos da arquitetura
Exploração estática é mais utilizada
ARM Cortex-A8
Exploração dinâmica em processadores mais recentes
ARM Cortex-A9
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 4 / 71
Introdução

Instruction Level Parallelism

O paralelismo existente em um bloco básico é restrito


Bloco básico: sequência de instruções sem desvios intermediários
No MIPS
15% a 25% das operações são desvios
De 3 até 6 instruções são executadas entre desvios
Instruções provavelmente dependentes entre si
Para melhor desempenho, exploração de paralelismo entre múltiplos
blocos básicos
Loop-level parallelism

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 5 / 71


Introdução

Instruction Level Parallelism


Loop-level parallelism

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 6 / 71


Introdução

Instruction Level Parallelism


Loop-level parallelism

Exemplo:
for (i=0; i<=999; i=i+1)
x[i] = x[i] + y[i];

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 6 / 71


Introdução

Instruction Level Parallelism


Loop-level parallelism

Exemplo:
for (i=0; i<=999; i=i+1)
x[i] = x[i] + y[i];

Cada iteração do laço é independente da anterior:


x[0] = x[0] + y[0];
x[1] = x[1] + y[1];
x[2] = x[2] + y[2];
...

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 6 / 71


Introdução

Instruction Level Parallelism


Loop-level parallelism

Exemplo:
for (i=0; i<=999; i=i+1)
x[i] = x[i] + y[i];

Cada iteração do laço é independente da anterior:


x[0] = x[0] + y[0];
x[1] = x[1] + y[1];
x[2] = x[2] + y[2];
...

Exploração de loop-unrolling.
Técnicas para transformação de loop-level parallelism → ILP
Via SW, via HW, ou SW+HW
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 6 / 71
Introdução

Instruction Level Parallelism


Dependências de dados e hazards

Instruções sem dependências


Execução em paralelo
Instruções com dependências
Execução sequencial ou sobreposta

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 7 / 71


Introdução

Instruction Level Parallelism


Dependências de dados e hazards

Instruções sem dependências


Execução em paralelo
Instruções com dependências
Execução sequencial ou sobreposta
Capacidade fundamental (SW e/ou HW): detecção das dependências.
Dependências: propriedade dos programas
Detecção de hazards e geração de stalls: propriedade do pipeline

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 7 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências reais
Dependências de nome

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 8 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências reais
Dependências de nome

Dependências reais: a instrução j é dependente da instrução i se:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 8 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências reais
Dependências de nome

Dependências reais: a instrução j é dependente da instrução i se:


A instrução i gera um resultado que é utilizado pela instrução j
Exemplo:
LOOP: L.D F0, 0(R1)
ADD.D F4, F0, F2
S.D F4, 0(R1)
DADDUI R1, R1, #-8
BNE R1, R2, LOOP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 8 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências reais
Dependências de nome

Dependências reais: a instrução j é dependente da instrução i se:


A instrução i gera um resultado que é utilizado pela instrução j
Exemplo:
LOOP: L.D F0,
ADD.D F4, F0
S.D F4,
DADDUI R1,
BNE R1,

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 9 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais


Manter a dependência e evitar o hazard

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais


Manter a dependência e evitar o hazard
Eliminar a dependência através da modificação do código

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais


Manter a dependência e evitar o hazard
Eliminar a dependência através da modificação do código
Detectando dependências reais

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais


Manter a dependência e evitar o hazard
Eliminar a dependência através da modificação do código
Detectando dependências reais
Em registradores: trivial

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Gerenciando dependências reais


Manter a dependência e evitar o hazard
Eliminar a dependência através da modificação do código
Detectando dependências reais
Em registradores: trivial
Em memória: complexo → 100(R2) = 20(R4)?

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 10 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências de nome
Quando duas instruções utilizam o mesmo nome de registrador, sem
fluxo de dados entre as mesmas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 11 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências de nome
Quando duas instruções utilizam o mesmo nome de registrador, sem
fluxo de dados entre as mesmas
Antidependências
Dependências de saı́da

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 11 / 71


Introdução

Instruction Level Parallelism


Dependências de dados

Dependências de nome
Quando duas instruções utilizam o mesmo nome de registrador, sem
fluxo de dados entre as mesmas
Antidependências
Dependências de saı́da
Eliminadas por renomeação de registradores

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 11 / 71


Introdução

Instruction Level Parallelism


Hazards de dados

Detecção e tratamento de hazards preserva a ordem original dos


programas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 12 / 71


Introdução

Instruction Level Parallelism


Hazards de dados

Detecção e tratamento de hazards preserva a ordem original dos


programas
De acordo com a ordem de escritas e leituras:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 12 / 71


Introdução

Instruction Level Parallelism


Hazards de dados

Detecção e tratamento de hazards preserva a ordem original dos


programas
De acordo com a ordem de escritas e leituras:
Read after write - RAW
Dependências reais

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 12 / 71


Introdução

Instruction Level Parallelism


Hazards de dados

Detecção e tratamento de hazards preserva a ordem original dos


programas
De acordo com a ordem de escritas e leituras:
Read after write - RAW
Dependências reais
Write after write - WAW
Dependências de saı́da

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 12 / 71


Introdução

Instruction Level Parallelism


Hazards de dados

Detecção e tratamento de hazards preserva a ordem original dos


programas
De acordo com a ordem de escritas e leituras:
Read after write - RAW
Dependências reais
Write after write - WAW
Dependências de saı́da
Write after read - WAR
Antidependências

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 12 / 71


Introdução

Instruction Level Parallelism


Dependências de controle

A maioria das instruções é dependente de desvios


Control dependent
Exemplo:
if p1 {
S1;
};
if p2 {
S2;
};

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 13 / 71


Introdução

Instruction Level Parallelism


Dependências de controle

A maioria das instruções é dependente de desvios


Control dependent
Exemplo:
if p1 {
S1;
};
if p2 {
S2;
};

S1 é control dependent de p1;


S2 é control dependent de p2;

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 13 / 71


Introdução

Instruction Level Parallelism


Dependências de controle

O gerenciamento de dependências de controle deve preservar:


o comportamento de exceções
o fluxo de dados
Exemplos:
DADDU R2, R3, R4
BEQZ R2, L1
LW R1, 0(R2)
L1:

DADDU R1, R2, R3


BEQZ R4, L
DSUBU R1, R5, R6
L: ...
OR R7, R1, R8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 14 / 71


Exploração de ILP via SW

Outline

1 Introdução

2 Exploração de ILP via SW

3 Exploração de ILP via HW

4 Despacho múltiplo
Introdução
VLIW
Processadores superescalares
Limites de ILP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 15 / 71


Exploração de ILP via SW

Escalonamento estático

Organização do código com instruções independentes


Instruções dependentes devem ser separadas entre si por vários ciclos
Depende do paralelismo disponı́vel na aplicação
Depende da microarquitetura do processador
Considerar:
Latência de um load de inteiro e branch = 1 ciclo
Latência de aritmética de inteiros = 0 ciclos
Pipeline de 5 estágios

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 16 / 71


Exploração de ILP via SW

Escalonamento estático

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 17 / 71


Exploração de ILP via SW

Escalonamento estático

Código de referência:
for (i=999; i>=0; i=i-1)
x[i] = x[i] + s;

Em assembly MIPS:

Loop: L.D F0, 0(R1)


ADD.D F4, F0, F2
S.D F4, 0(R1)
DADDUI R1, R1, #-8
BNE R1, R2, Loop

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 17 / 71


Exploração de ILP via SW

Escalonamento estático

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 18 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento


Ciclo
Loop: L.D F0, 0(R1) 1
stall 2
ADD.D F4, F0, F2 3
stall 4
stall 5
S.D F4, 0(R1) 6
DADDUI R1, R1, #-8 7
stall 8
BNE R1, R2, Loop 9

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 18 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: com escalonamento


Ciclo
Loop: L.D F0, 0(R1) 1
DADDUI R1, R1, #-8 2
ADD.D F4, F0, F2 3
stall 4
stall 5
S.D F4, 8(R1) 6
BNE R1, R2, Loop 7

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 19 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 20 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento


9 ciclos por elemento da matriz

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 20 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento


9 ciclos por elemento da matriz
3 ciclos de operação
2 ciclos de controle do laço (loop overhead)
4 ciclos de parada

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 20 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento


9 ciclos por elemento da matriz
3 ciclos de operação
2 ciclos de controle do laço (loop overhead)
4 ciclos de parada
No pipeline do MIPS: com escalonamento
7 ciclos por elemento da matriz

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 20 / 71


Exploração de ILP via SW

Escalonamento estático

No pipeline do MIPS: sem escalonamento


9 ciclos por elemento da matriz
3 ciclos de operação
2 ciclos de controle do laço (loop overhead)
4 ciclos de parada
No pipeline do MIPS: com escalonamento
7 ciclos por elemento da matriz
3 ciclos de operação
2 ciclos de controle do laço
2 ciclos de parada

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 20 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Replicação do corpo do laço e ajuste do controle do mesmo.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 21 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Replicação do corpo do laço e ajuste do controle do mesmo.


Loop: L.D F0, 0(R1)
ADD.D F4, F0, F2
S.D F4, 0(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F6, -8(R1)
ADD.D F8, F6, F2
S.D F8, -8(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F10, -16(R1)
ADD.D F12, F10, F2
S.D F12, -16(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F14, -24(R1)
ADD.D F16, F14, F2
S.D F16, -24(R1)
DADDUI R1, R1, #-32
BNE R1, R2, Loop

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 21 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Replicação do corpo do laço e ajuste do controle do mesmo.


Loop: L.D F0, 0(R1)
ADD.D F4, F0, F2
S.D F4, 0(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F6, -8(R1)
ADD.D F8, F6, F2
S.D F8, -8(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F10, -16(R1)
ADD.D F12, F10, F2
S.D F12, -16(R1) ;eliminaç~
ao de DADDUI e BNE
L.D F14, -24(R1)
ADD.D F16, F14, F2
S.D F16, -24(R1)
DADDUI R1, R1, #-32
BNE R1, R2, Loop

Otimização baseada em substituição simbólica e simplificação: não trivial

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 21 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling
Desempenho obtido: 27 ciclos.
Loop: L.D F0, 0(R1)
stall
ADD.D F4, F0, F2
stall
stall
S.D F4, 0(R1)
L.D F6, -8(R1)
stall
ADD.D F8, F6, F2
stall
stall
S.D F8, -8(R1)
...
S.D F16, -24(R1)
DADDUI R1, R1, #-32
stall
BNE R1, R2, Loop

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 22 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling
Desempenho obtido: 27 ciclos.
Loop: L.D F0, 0(R1)
stall
ADD.D F4, F0, F2
stall
stall
S.D F4, 0(R1)
L.D F6, -8(R1)
stall
ADD.D F8, F6, F2
stall
stall
S.D F8, -8(R1)
...
S.D F16, -24(R1)
DADDUI R1, R1, #-32
stall
BNE R1, R2, Loop

6.75 ciclos para cada 4 elementos...


Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 22 / 71
Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Com escalonamento estático:


Loop: L.D F0, 0(R1)
L.D F6, -8(R1)
L.D F10, -16(R1)
L.D F14, -24(R1)
ADD.D F4, F0, F2
ADD.D F8, F6, F2
ADD.D F12, F10, F2
ADD.D F16, F14, F2
S.D F4, 0(R1)
S.D F8, -8(R1)
DADDUI R1, R1, #-32
S.D F12, 16(R1)
S.D F16, 8(R1)
BNE R1, R2, Loop

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 23 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Com escalonamento estático:


Loop: L.D F0, 0(R1)
L.D F6, -8(R1)
L.D F10, -16(R1)
L.D F14, -24(R1)
ADD.D F4, F0, F2
ADD.D F8, F6, F2
ADD.D F12, F10, F2
ADD.D F16, F14, F2
S.D F4, 0(R1)
S.D F8, -8(R1)
DADDUI R1, R1, #-32
S.D F12, 16(R1)
S.D F16, 8(R1)
BNE R1, R2, Loop

3.5 ciclos para cada 4 elementos.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 23 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido
Limitações:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido
Limitações:
Redução no ganho com o controle de laço

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido
Limitações:
Redução no ganho com o controle de laço
Aumento do código, com impacto em cache misses

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido
Limitações:
Redução no ganho com o controle de laço
Aumento do código, com impacto em cache misses
Ocupação dos registradores

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Escalonamento estático
Loop unrolling

Decisões e transformações:
Determinar se as iterações são independentes
Escalonar dos registradores disponı́veis
Eliminar os testes intermediários e de final de laço
Determinar se os acessos à memória são independentes
Escalonar o código obtido
Limitações:
Redução no ganho com o controle de laço
Aumento do código, com impacto em cache misses
Ocupação dos registradores
Complexidade do compilador

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 24 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Previsores de correlação:
Previsão baseada no comportamento de vários desvios correlacionados

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 25 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Previsores de correlação:
Previsão baseada no comportamento de vários desvios correlacionados
Exemplo:
if (aa==2)
aa = 0;
if (bb==2)
bb = 0;
if (aa!=bb) {

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 25 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Previsores de correlação:
Previsão baseada no comportamento de vários desvios correlacionados
Exemplo:
if (aa==2)
aa = 0;
if (bb==2)
bb = 0;
if (aa!=bb) {

Previsor (m,n):
Utiliza o comportamento dos m últimos desvios
Caracterizados por previsores de n bits

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 25 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 26 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Previsores tournament:
Previsão baseada em comportamento local e global do desvio
Previsão baseada em múltiplos previsores e a seleção do mais
adequado

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 27 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios avançada

Previsores tournament:
Previsão baseada em comportamento local e global do desvio
Previsão baseada em múltiplos previsores e a seleção do mais
adequado

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 27 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios no Intel Core i7

Previsor simples de 2 bits


Previsor global
Loop exit predictor

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 28 / 71


Exploração de ILP via SW

Previsão de desvios
Previsão de desvios no Intel Core i7

Previsor simples de 2 bits


Previsor global
Loop exit predictor

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 28 / 71


Exploração de ILP via HW

Outline

1 Introdução

2 Exploração de ILP via SW

3 Exploração de ILP via HW

4 Despacho múltiplo
Introdução
VLIW
Processadores superescalares
Limites de ILP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 29 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Reorganização da ordem de execução do código

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Reorganização da ordem de execução do código


Vantagens:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Reorganização da ordem de execução do código


Vantagens:
Permite execução eficiente em diferentes pipelines
Permite gerenciar dependências não detectadas pelo compilador
Permite aproveitar paradas imprevisı́veis, e.g., cache misses

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Reorganização da ordem de execução do código


Vantagens:
Permite execução eficiente em diferentes pipelines
Permite gerenciar dependências não detectadas pelo compilador
Permite aproveitar paradas imprevisı́veis, e.g., cache misses
Desvantagem:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Reorganização da ordem de execução do código


Vantagens:
Permite execução eficiente em diferentes pipelines
Permite gerenciar dependências não detectadas pelo compilador
Permite aproveitar paradas imprevisı́veis, e.g., cache misses
Desvantagem:
Aumento significativo na complexidade do pipeline

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 30 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Limitação dos pipelines simples

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 31 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Limitação dos pipelines simples


Despacho e execução na ordem original

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 31 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Limitação dos pipelines simples


Despacho e execução na ordem original
A parada de uma instrução bloqueia as instruções seguintes

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 31 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Limitação dos pipelines simples


Despacho e execução na ordem original
A parada de uma instrução bloqueia as instruções seguintes
Múltiplas unidades funcionais podem permanecer ociosas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 31 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Limitação dos pipelines simples


Despacho e execução na ordem original
A parada de uma instrução bloqueia as instruções seguintes
Múltiplas unidades funcionais podem permanecer ociosas
Exemplo:
DIV.D F0, F2, F4
ADD.D F10, F0, F8
SUB.D F12, F8, F14

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 31 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Alteração da ordem de execução: subdivisão do estágio ID


1 Verificação de hazards estruturais (Issue)
2 Espera pela resolução de hazards de dados (read operands)
A instrução pode seguir para execução tão logo os dados estejam
disponı́veis
out-of-order execution, out-of-order completion

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 32 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Alteração da ordem de execução: subdivisão do estágio ID


1 Verificação de hazards estruturais (Issue)
2 Espera pela resolução de hazards de dados (read operands)
A instrução pode seguir para execução tão logo os dados estejam
disponı́veis
out-of-order execution, out-of-order completion
Possibilidade de hazards WAW e WAR

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 32 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Alteração da ordem de execução: subdivisão do estágio ID


1 Verificação de hazards estruturais (Issue)
2 Espera pela resolução de hazards de dados (read operands)
A instrução pode seguir para execução tão logo os dados estejam
disponı́veis
out-of-order execution, out-of-order completion
Possibilidade de hazards WAW e WAR
Exemplo:
DIV.D F0, F2, F4
ADD.D F6, F0, F8
SUB.D F8, F10, F14
MUL.D F6, F10, F8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 32 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Out-of-order completion
Complica o gerenciamento de exceções

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 33 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Out-of-order completion
Complica o gerenciamento de exceções
Exceção em uma instrução enquanto posteriores já foram completadas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 33 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Out-of-order completion
Complica o gerenciamento de exceções
Exceção em uma instrução enquanto posteriores já foram completadas
Exceção em uma instrução posterior enquanto anteriores não foram
completadas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 33 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Out-of-order completion
Complica o gerenciamento de exceções
Exceção em uma instrução enquanto posteriores já foram completadas
Exceção em uma instrução posterior enquanto anteriores não foram
completadas
Exceções imprecisas x exceções precisas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 33 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Distinção entre os momentos que uma instrução


Começa a execução
Completa a execução

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 34 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Distinção entre os momentos que uma instrução


Começa a execução
Completa a execução
Entre os dois: instrução está em execução

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 34 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Distinção entre os momentos que uma instrução


Começa a execução
Completa a execução
Entre os dois: instrução está em execução
Múltiplas instruções em execução ao mesmo tempo
Múltiplas unidades funcionais

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 34 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Distinção entre os momentos que uma instrução


Começa a execução
Completa a execução
Entre os dois: instrução está em execução
Múltiplas instruções em execução ao mesmo tempo
Múltiplas unidades funcionais
Despacho em ordem
Leitura de operandos e execução fora de ordem

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 34 / 71


Exploração de ILP via HW

Escalonamento dinâmico

Distinção entre os momentos que uma instrução


Começa a execução
Completa a execução
Entre os dois: instrução está em execução
Múltiplas instruções em execução ao mesmo tempo
Múltiplas unidades funcionais
Despacho em ordem
Leitura de operandos e execução fora de ordem
Scoreboard
Algoritmo de Tomasulo

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 34 / 71


Exploração de ILP via HW

Escalonamento dinâmico
O algoritmo de Tomasulo

Robert Tomasulo
Desenvolvido para explorar processamento de ponto flutuante e acessos
à memória
Verifica a disponibilidade de operandos (RAW hazards)
Renomeia registradores (WAW e WAR hazards)

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 35 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Dependências

Exemplo:
DIV.D F0, F2, F4
ADD.D F6, F0, F8
S.D F6, 0(R1)
SUB.D F8, F10, F14
MUL.D F6, F10, F8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 36 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Dependências reais

Exemplo:
DIV.D F0,
ADD.D F6, F0
S.D F6,
SUB.D F8,
MUL.D , F8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 37 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Antidependências

Exemplo:

ADD.D , F8
S.D F6,
SUB.D F8,
MUL.D F6,

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 38 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Dependências de saı́da

Exemplo:

ADD.D F6,

MUL.D F6,

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 39 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Renomeação de registradores

Exemplo:
DIV.D F0, F2, F4
ADD.D F6, F0, F8
S.D F6, 0(R1)
SUB.D F8, F10, F14
MUL.D F6, F10, F8

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 40 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Renomeação de registradores

Exemplo:
DIV.D F0, F2, F4
ADD.D S, F0, F8
S.D S, 0(R1)
SUB.D T, F10, F14
MUL.D F6, F10, T

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 41 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Renomeação de registradores

Baseia-se na utilização de registradores rascunho


Demanda renomeação de todas as referências posteriores
Inclusive através de desvios
No algoritmo de Tomasulo
Estações de reserva
Armazenamento em buffers dos operandos das instruções em espera
As referências a registradores são substituı́das por referências aos
buffers
Os operandos são obtidos tão logo uma unidade funcional os produza
Mais registradores que os reais da arquitetura

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 42 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Estrutura básica de um pipeline do tipo Tomasulo

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 43 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Operação básica de um pipeline do tipo Tomasulo

As instruções são enviadas para uma fila (FIFO)


As estações de reserva incluem as operações e os operandos e
informações para gerência de hazards
Load-store buffers acomodam os acessos à memória
Os resultados são colocados no barramento comum (CDB)
O CDB alimenta os registradores reais, estações de reserva e buffer
de escrita
Instruções control dependent não iniciam execução até a resolução do
desvio

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 44 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Exemplo dos dados em estações de reserva

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 45 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Execução especulativa

Desvios podem reduzir bastante o desempenho do escalonamento


dinâmico
Maior exploração de paralelismo = eliminação de dependências de
controle
Execução especulativa
Execução de instruções considerando previsões de desvio como corretas
Mecanismos para lidar com previsões incorretas

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 46 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Execução especulativa

Desvios podem reduzir bastante o desempenho do escalonamento


dinâmico
Maior exploração de paralelismo = eliminação de dependências de
controle
Execução especulativa
Execução de instruções considerando previsões de desvio como corretas
Mecanismos para lidar com previsões incorretas
Especulação em HW:
Previsão dinâmica de desvios
Especulação das instruções após desvios
Escalonamento dinâmico de diferentes blocos básicos

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 46 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Execução especulativa

Instruction completion x instruction commit


Instruction completion: término da operação
Instruction commit: atualização definitiva do resultado
Commit em ordem
Reorder buffer (ROB)
Armazenamento de resultados especulativos
Armazenamento de exceções pendentes

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 47 / 71


Exploração de ILP via HW

Escalonamento dinâmico
Pipeline com execução especulativa

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 48 / 71


Despacho múltiplo

Outline

1 Introdução

2 Exploração de ILP via SW

3 Exploração de ILP via HW

4 Despacho múltiplo
Introdução
VLIW
Processadores superescalares
Limites de ILP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 49 / 71


Despacho múltiplo Introdução

Despacho múltiplo

Capacidade de despacho de múltiplas instruções por ciclo de clock.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 50 / 71


Despacho múltiplo Introdução

Despacho múltiplo

Capacidade de despacho de múltiplas instruções por ciclo de clock.


Possibilidades de implementação
Processadores superescalares com escalonamento estático
⇒ Execução em ordem
Processadores superescalares com escalonamento dinâmico
⇒ Execução fora de ordem
Processadores com instruções longas
⇒ VLIW - Very long instruction word
⇒ EPIC - Explicitly parallel instruction computer

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 50 / 71


Despacho múltiplo Introdução

Despacho múltiplo
As diferentes abordagens

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 51 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Despacho de um número fixo de operações formatadas como uma


única instrução
Despacho de pacote de instruções de tamanho fixo com indicação do
paralelismo disponı́vel

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 52 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Despacho de um número fixo de operações formatadas como uma


única instrução
Despacho de pacote de instruções de tamanho fixo com indicação do
paralelismo disponı́vel
Arquitetura exemplo:
Instruções com 5 operações
Uma operação com inteiros
Duas de ponto flutuante
Duas de load-store

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 52 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Despacho de um número fixo de operações formatadas como uma


única instrução
Despacho de pacote de instruções de tamanho fixo com indicação do
paralelismo disponı́vel
Arquitetura exemplo:
Instruções com 5 operações
Uma operação com inteiros
Duas de ponto flutuante
Duas de load-store

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 52 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Deve existir paralelismo suficiente para ser explorado


Escalonamento de código

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 53 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Deve existir paralelismo suficiente para ser explorado


Escalonamento de código
Loop unrolling

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 53 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Deve existir paralelismo suficiente para ser explorado


Escalonamento de código
Loop unrolling
Escalonamento local: bloco básico
Escalonamento global: através de desvios

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 53 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Deve existir paralelismo suficiente para ser explorado


Escalonamento de código
Loop unrolling
Escalonamento local: bloco básico
Escalonamento global: através de desvios
Trace scheduling

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 53 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Exemplo com loop unrolling :

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 54 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Exemplo com loop unrolling :

Desempenho: IPC = 2,5

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 54 / 71


Despacho múltiplo VLIW

Despacho múltiplo
VLIW

Abordagem com pouca flexibilidade


Parada em uma unidade funcional pode bloquear as demais unidades
Compatibilidade de código é limitada
Número/tipo diferente de unidades funcionais
Latências diferentes das unidades funcionais
Códigos especı́ficos para cada HW
EPIC, IA-64. Evolução do conceito VLIW
Maior flexibilidade na indicação de paralelismo entre instruções
Vários formatos de instruções

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 55 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 56 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Modelo de programação:
128 registadores de uso geral de 64 bits
128 registradores de ponto flutuante de 82 bits
64 registradores de predicado de 1 bit (execução predicativa)
8 registradores de 64 bits para desvios indiretos
Bundles: conjunto com 3 instruções
128 bits
Instruções de 41 bits
Template de 5 bits: formato do bundle, unidades de execução e stops
Capacidade de despacho de 2 bundles por ciclo de clock

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 56 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Unidades de execução definidas em um template:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 57 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Formatos definidos em um template:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 58 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Loop unrolling com otimização do tamanho do código:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 59 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Loop unrolling com otimização do número de ciclos:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 60 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Execução predicativa:
Instruções associadas a registradores de predicado
Instruções de teste e desvio = desvio predicativo
Registradores de predicado modificados por instruções de comparação
e teste
Permite múltiplas comparações com uma única instrução
Execução especulativa:
Especulação de instruções de controle: deferimento de exceções
Especulação de loads: valor lido precisa ser validado

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 61 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Núcleo de processamento com caracterı́sticas de escalonamento


dinâmico
Previsão dinâmica de desvios
Renomeação de registradores
Scoreboarding
Mas o objetivo não é deixar o compilador explorar paralelismo?

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 62 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Núcleo de processamento com caracterı́sticas de escalonamento


dinâmico
Previsão dinâmica de desvios
Renomeação de registradores
Scoreboarding
Mas o objetivo não é deixar o compilador explorar paralelismo?
Técnicas de HW são muito melhores em determinados casos
Gerência de cache misses

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 62 / 71


Despacho múltiplo VLIW

Despacho múltiplo
IA-64

Desempenhos para SPECfp e SPECint: (1,5 GHz; 3,8 GHz; 2,8 GHz; 1,9
GHz)

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 63 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Microarquitetura de processadores modernos.


Escalonamento dinâmico
Execução especulativa
Despacho de múltiplas instruções por ciclo

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 64 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Microarquitetura de processadores modernos.


Escalonamento dinâmico
Execução especulativa
Despacho de múltiplas instruções por ciclo
Expansão do HW de despacho
Expansão do HW de completion
Atualização paralela das tabelas nas estações de reserva

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 64 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Ampliação do CDB, barramentos, lógica de despacho, etc.

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 65 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Aumento da taxa de despacho: branch-target buffer (BTB).

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 66 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Return address predictors:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 67 / 71


Despacho múltiplo Processadores superescalares

Despacho múltiplo
Superescalares

Limites na especulação:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 68 / 71


Despacho múltiplo Limites de ILP

Limites de ILP
O processador perfeito

Número infinito de regitradores de rascunho


Previsão de desvios perfeita
Caches perfeitas
Única limitação: paralelismo existente no SW

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 69 / 71


Despacho múltiplo Limites de ILP

Limites de ILP
O processador perfeito

Número infinito de regitradores de rascunho


Previsão de desvios perfeita
Caches perfeitas
Única limitação: paralelismo existente no SW
SPEC92:

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 69 / 71


Despacho múltiplo Limites de ILP

Despacho múltiplo
O processador (quase) possı́vel

64 instruções por ciclo, preditor tournament de 1K, 64+64 reg. renaming

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 70 / 71


Despacho múltiplo Limites de ILP

Despacho múltiplo
Mais que ILP?

TLP
DLP

Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Junho 2013 71 / 71

Das könnte Ihnen auch gefallen