Escolar Documentos
Profissional Documentos
Cultura Documentos
Exploração de DLP
denisfranco@furg.br
Julho 2013
1 Introdução
2 Processadores vetoriais
3 Extensões SIMD
Outline
1 Introdução
2 Processadores vetoriais
3 Extensões SIMD
Data-level parallelism
Data-level vs task-level parallelism
Data-level parallelism
O interesse por DLP
Outline
1 Introdução
2 Processadores vetoriais
3 Extensões SIMD
Arquiteturas vetoriais
As pioneiras
Arquiteturas vetoriais
Caracterı́sticas
Arquiteturas vetoriais
Caracterı́sticas
Arquiteturas vetoriais
Operação
Arquiteturas vetoriais
Operação
Arquiteturas vetoriais
Operação
Arquiteturas vetoriais
Operação
Arquiteturas vetoriais
Operação
Arquiteturas vetoriais
MIPS vetorial
Arquiteturas vetoriais
MIPS vetorial: VMIPS
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
Dependências
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
Dependências
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
Dependências
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
Dependências
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências
MIPS escalar: ADD.D → MUL.D
MIPS escalar: S.D → ADD.D
Arquiteturas vetoriais
MIPS escalar vs VMIPS
Instruções dinâmicas
MIPS escalar: 578 instruções
VMIPS: 6 instruções
Instruções de controle de laço
MIPS escalar: 4 instruções
VMIPS: 0 instruções
Dependências
MIPS escalar: ADD.D → MUL.D
MIPS escalar: S.D → ADD.D
VMIPS: uma parada por instrução
VMIPS: chaining
Arquiteturas vetoriais
Chaining
Arquiteturas vetoriais
Tempo de execução
Dependente de 3 fatores:
1 Comprimento dos vetores
2 Hazards estruturais
3 Dependências de dados
Associados aos conceitos de:
Convoys: instruções sem dependências
Chaining
Chime: tempo de execução de um convoy
m convoys executam em m chimes
No VMIPS: m chimes e n elementos por vetor = m × n ciclos de clock
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Em convoys:
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Em convoys:
1 LV
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Em convoys:
1 LV
2 MULVS.D, LV
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Em convoys:
1 LV
2 MULVS.D, LV
3 ADDVV.D
Arquiteturas vetoriais
Tempo de execução
LV V1, Rx
MULVS.D V2, V1, F0
LV V3, Ry
ADDVV.D V4, V2, V3
SV V4, Ry
Em convoys:
1 LV
2 MULVS.D, LV
3 ADDVV.D
4 SV
4 chimes e 64 elementos = 256 ciclos de clock
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 17 / 43
Processadores vetoriais
Arquiteturas vetoriais
Tempo de execução
Arquiteturas vetoriais
Tempo de execução
Arquiteturas vetoriais
Otimizações
Arquiteturas vetoriais
Otimizações
Arquiteturas vetoriais
Otimizações
Outline
1 Introdução
2 Processadores vetoriais
3 Extensões SIMD
Extensões SIMD
Extensões multimı́dia
Extensões SIMD
Extensões multimı́dia
Extensões SIMD
Extensões x arquiteturas vetoriais
Extensões SIMD
Extensões x arquiteturas vetoriais
Extensões SIMD
Extensões x arquiteturas vetoriais
Extensões SIMD
Implementações no x86
MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
Extensões SIMD
Implementações no x86
MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
Extensões SIMD
Implementações no x86
MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla
Extensões SIMD
Implementações no x86
MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla
SSE3, 2004
Extensões SIMD
Implementações no x86
MMX, 1996
Reutilização dos registradores de ponto flutuante de 64 bits
8 operações de 8 bits
4 operações de 16 bits
Operações caracterı́sticas de DSPs
Aritmética de saturação
SSE, 1999
Novos registradores de 128 bits
16 operações de 8 bits
8 operações de 16 bits
4 operações de 32 bits
Operação paralela de ponto flutuante de precisão simples
Novas instruções de transferência de dados
SSE2, 2001 - ponto flutuante de precisão dupla
SSE3, 2004
SSE4, 2007
Prof. Denis Franco (denisfranco@furg.br) Arquitetura de Computadores Julho 2013 26 / 43
Extensões SIMD
Extensões SIMD
Implementações no x86
AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits
Extensões SIMD
Implementações no x86
AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits
Por que extensões são populares?
Extensões SIMD
Implementações no x86
AVX, 2010
Novos registradores de 256 bits
Duplicação do número de operações paralelas
Preparações para extensões de 512 e 1024 bits
Por que extensões são populares?
Baixo custo de implementação
Alto custo de implementação de arquiteturas vetoriais
Alta taxa de transferência de memória necessária para arquiteturas
vetoriais
Facilidade na introdução de instruções para novos padrões de mı́dia
Outline
1 Introdução
2 Processadores vetoriais
3 Extensões SIMD
GPUs
A origem
GPUs
A origem
GPUs
A origem
GPUs
A origem
GPUs
Um multiprocessador
GPUs
Sistemas heterogêneos
GPUs
Sistemas heterogêneos
GPUs
O pipeline gráfico
GPUs
A arquitetura GPU
GPUs
A arquitetura GPU
GPUs
Programação
GPUs
Programação
GPUs
Programação
Textura de pele
GPUs
Programação
Textura de pele
1400 instruções por pixel
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Programação de aplicações paralelas
GPUs
Desempenho
GPUs
Desempenho
Decomposição de matrizes.
GPUs
Desempenho
FFT.
GPUs
Desempenho