cap.7. vetoriais.ppt [Modo de Compatibilidade]pauloac/ces25/cap.7_vetoriais.pdf · 903,6 90,36 rlwr...
Transcript of cap.7. vetoriais.ppt [Modo de Compatibilidade]pauloac/ces25/cap.7_vetoriais.pdf · 903,6 90,36 rlwr...
Computadores Vetoriais
Paulo André Castro IEC - ITACES-25
CES-25 – Arquiteturas para Alto DesmpenhoProf. Paulo André Castro
[email protected] 110 – Prédio da Computação
www.comp.ita.br/~pauloacIEC - ITA
Arquiteturas e Fluxos de Instrução e Dados
• (SISD) Single Instruction Stream, Single Data Stream:– monoprocessador
• (SIMD) Single Instruction Stream, Multiple Data Stream: – arquiteturas vetoriais
Paulo André Castro IEC - ITACES-25
– arquiteturas vetoriais• (MISD) Multiple Instruction Stream, Single Data Stream:
– sem implementação comercial• (MIMD) Multiple Instruction Stream, Multiple Data Stream:
– arquiteturas multiprocessadas
Processadores VetoriaisSIMD
• Processadores com instruções de alto nível sobre vetores– X = a*X+Y, onde X, Y são vetores de tamanho n– Abordagem RISC ou CISC?
Paulo André Castro IEC - ITACES-25
• Uma única instrução especifica um grande quantidade de trabalho a ser realizada
• Os primeiros processadores vetoriais foram comercializados antes dos processadores superescalares
Utilizações comuns decomputadores vetoriais
• Os processadores vetoriais são particularmente úteis para aplicações científicas e de engenharia– Simulações, Previsão do tempo, aplicações que operam sobre grandes matrizes e/ou vetores....
• Aplicações multimídia também podem se beneficiar do
Paulo André Castro IEC - ITACES-25
• Aplicações multimídia também podem se beneficiar do processamento vetorial, pois tipicamente contêm vetores e matrizes•• Extensões multimídia (vetoriais) foram introduzidas em microprocessadores
• Pentium MMX, Conjunto de instruções SSE, SSE2, SSE3, AVX, etc.• GPUs
Unidade Vetorial • Registradores Vetoriais
– Cray Research (Cray-1, Cray-2, X-MP, Y-MP, C90, T90 e SV1),– Supercomputadores japoneses (NEC SX/2 a SX/5, Fujitsu VP200 a VPP5000 e as
Paulo André Castro IEC - ITACES-25
SX/5, Fujitsu VP200 a VPP5000 e as máquinas Hitachi S820 e S-8300)• Processadores memória-memória
– Primeiros computadores vetoriais – Computadores da CDC
Principais características• Paralelismo de loops explicitados pelo programador ou compilador através das instruções vetoriais
• Sistema de memória adaptado para fazer um acesso a
Paulo André Castro IEC - ITACES-25
• Sistema de memória adaptado para fazer um acesso a memória para um vetor inteiro e não para cada elemento (memória entrelaçada)
Principais características• O hardware só precisa verificar riscos de dados entre
duas instruções vetoriais uma vez por operando vetorial,e não uma vez para cada elemento dentro dos vetores.
Paulo André Castro IEC - ITACES-25
• Pelo fato de um loop inteiro ser substituído por uma instrução vetorial, os riscos de controle que surgiriam são eliminados.
Arquitetura Vetorial Básica• Em geral, Um processador vetorial consiste de
uma unidade escalar com pipeline comum e uma unidade vetorial. – Unidade escalar: tipicamente um pipeline
superescalar
Paulo André Castro IEC - ITACES-25
superescalar
• Vejamos uma versão vetorial do MIPS, isto é unidade escalar MIPS e uma unidade vetorial:
VMPIS• VMIPS : oito registradores vetoriais e cada registrador vetorial contém 64 elementos. • Unidades funcionais vetoriais – Cada unidade tem um pipeline completo e pode iniciar uma nova operação em cada ciclo de clock. Uma unidade de controle é
Paulo André Castro IEC - ITACES-25
cada ciclo de clock. Uma unidade de controle é necessária para detectar riscos• Unidade vetorial de carga-armazenamento – Essa é uma unidade de memória vetorial que carrega ou armazena um vetor de ou para a memória.
Funcionamento• Exemplo
– Y = a*X + Y– Esse é o chamado loop SAXPY ou
DAXPY que forma o loop interno do benchmark Linpack.
Paulo André Castro IEC - ITACES-25
benchmark Linpack.
• SAXPY: single-precision a × X plus Y• DAXPY: double-precision a × X plus Y
Funcionamento 2• Exemplo
– Y = a*X + Y; X e Y com 64 elementos• Código MIPS L.D F0,a ;carrega escalar aDADDIU R4,Rx,#512 ;último endereço a carregar
Loop: L.D F2,0(Rx) ;carrega X(i)MUL.D F2,F2,F0 ;a × X(i)
Paulo André Castro IEC - ITACES-25
MUL.D F2,F2,F0 ;a × X(i)L.D F4,0(Ry) ;carrega Y(i)ADD.D F4,F4,F2 ;a × X(i) + Y(i) S.D F4,Ry(0) ;armazena em Y(i)DADDIU Rx,Rx,#8 ;incrementa índice para XDADDIU Ry,Ry,#8 ;incrementa índice para YSUB.D R20,R4,Rx ;calcula limiteBNEZ R20,Loop ;verifica se terminou
Funcionamento 3• Exemplo
– Y = a*X + Y• Código VMIPS
L.D F0,a ;carrega escalar a
Paulo André Castro IEC - ITACES-25
L.D F0,a ;carrega escalar aLV V1,Rx ;carrega vetor XMULVS.D V2,V1,F0 ;multiplicação de vetor por escalarLV V3,Ry ;carrega vetor YADDV.D V4,V2,V3 ;somaSV Ry,V4 ;armazena o resultado
Comparação• MIPS: ~ 600(578) instruções executadas• VMIPS : 6 instruções executadas• Redução devido a
– Instruções atuando sobre vetores– Eliminação de instruções de manutenção do loop:
Paulo André Castro IEC - ITACES-25
– Eliminação de instruções de manutenção do loop: exemplo escolhido favoravelmente (64 elementos)
• Instruções vetoriais poderiam ter mesma latência de instruções escalares?
• Nesse caso, qual seria o ganho de desempenho esperado?
Problema: Tamanho Real do Vetores
• Vetores reais menores que o vetor do processador
• Vetores reais maiores que o vetor do
Paulo André Castro IEC - ITACES-25
• Vetores reais maiores que o vetor do processador
Exemplo - Mineração na superfície
Paulo André Castro IEC - ITACES-25
• Exemplo de um vetor de comprimento arbitrário processado com mineração na superfície.
• Todos os blocos, com exceção do primeiro, têm o comprimento MVL, utilizando a potência total do processador vetorial. Nesta figura, a variável m é usada para a expressão (n mod MVL).
Vetores maiores que a capacidade dos registradores
• n > número de elementos do registradorfor(i = 0;i<n;i++)
y[i] = a * x[i] + y[i];Mineração na superfície (Strip mining)
low = 0; /*MVL: Maximum Vector Length*/VL = (n mod MVL) /*encontra o fragmento de tamanho ímpar*/
Paulo André Castro IEC - ITACES-25
VL = (n mod MVL) /*encontra o fragmento de tamanho ímpar*/for(j = 0,j<=(n / MVL);j++) { /*loop exterior*/
for(i=low; i<low + VL;i++){/*execuções de comprimento VL*/y[i] = a * x[i] + y[i]; /*operação principal*/
}low = low + VL /*início do próximo vetor*/VL = MVL /*redefine o comprimento com valor máximo*/
}
Unidade Vetorial de Carga/Armazenamento
• Bancos de Memória (Memória Entrelaçada)– Várias cargas ou armazenamento por clock– Barramentos de endereços e dados
Paulo André Castro IEC - ITACES-25
– Barramentos de endereços e dados redundantes
Tipos de Endereçamentos• Endereçamento Seqüencial
– Os elementos são adjacentes na memória• Endereçamento Espaçado
– Os elementos são separados por um número fixo de
Paulo André Castro IEC - ITACES-25
– Os elementos são separados por um número fixo de palavras
– Útil para intercalar vetores que serão operados• Endereçamento Gather/Scatter
– Os elementos são endereçados por outro registrador vetorial (endereçamento indireto)
Otimização de operações vetoriais• Encadeamento
– MULV.D V1,V2,V3– ADDV.D V4,V1,V5
• Dependência RAW
Paulo André Castro IEC - ITACES-25
• Dependência RAW• Latência alta (quando pistas insuficientes...)
– Valores parciais podem ser encaminhados para próxima instrução
• Pistas de execução
Laços com instruções condicionais • Considere o seguinte código:
do 100 i = 1, 64if (A(i).ne. 0) then
A(i)=A(i) – B(i)
Paulo André Castro IEC - ITACES-25
A(i)=A(i) – B(i)endif
100 Continue• Como vetorizar ?
Solução: controle de máscara de vetor.• Vetor booleano de tamanho MVL que
informa se a operação deve ser realizada para um determinado elemento do vetor
• No exemplo,
Paulo André Castro IEC - ITACES-25
• No exemplo,– A(i) é atualizado apenas se o elemento da
máscara de vetor corresponde ao elemento i está verdadeiro
Instruções Vetoriais em Microprocessadores
• MMX (Pentium ||)– Registradores Vetoriais de 64 bits
• Tamanho do elemento variável– 8 bits (8 elem), 16 bits(4 elem), 32 bits(2 elem)• SSE (Streaming SIMD Extension) (Pentium III)
– 8 Registradores Vetoriais de 128 bits e novo conjunto
Paulo André Castro IEC - ITACES-25
– 8 Registradores Vetoriais de 128 bits e novo conjunto de Instruções (+70)• SSE2 (Pentium IV)
– Registradores Vetorais de 512 bits com elementos de 64 bits mais novas instruções (+144)• AltiVec(PowerPC)
– Registradores Vetoriais de 128 bits
Problemas no uso de instruções vetoriais em Microprocessadores
• Vetores curtos e poucos registradores • Modos de endereçamento de memória simples(espaçamento único)
Paulo André Castro IEC - ITACES-25
• Falta de suporte em linguagem de programação para operar sobre dados estreitos(elementos)• Conseqüentemente, Instruções SIMD geralmente são encontradas apenas em bibliotecas de rotinas gráficas de baixo nível
Resumo de Computadores Vetoriais• Instruções que exploram o paralelismo
potencial entre iterações de laços
• Grande melhoria de desempenho porém
Paulo André Castro IEC - ITACES-25
• Grande melhoria de desempenho porém limitado a tipo bastante específico de operações, o que limita o ganho global– Lei de Amdahl
Resumo de Computadores Vetoriais -2• Fortemente dependente da existência de compiladores que façam uso das instruções disponibilizadas• Demanda maior largura de banda de memória
Paulo André Castro IEC - ITACES-25
• Demanda maior largura de banda de memória• Instruções (e registradores) vetoriais foram incluídos também em Microprocessadores (x86, PowerPC) e também em máquinas como Nintendo-64 e Playstation2 para acelerar operações gráficas