Post on 08-Nov-2018
transcript
Computadores Vetoriais
Paulo André Castro IEC - ITACES-25
CES-25 – Arquiteturas para Alto DesmpenhoProf. Paulo André Castro
pauloac@ita.brSala 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 VMIPSL.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, 64
if (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 de Instruções
(+70)
Paulo André Castro IEC - ITACES-25
• SSE2 (Pentium IV)– Registradores Vetorais de 512 bits com elementos de 64 bits mais
novas instruções (+144)
• SSE3 (Celeron, Core, Xeon...)– 13 instruções adicionais sobre SSE2
• Outras extensões: SSE4 (2006), SSE5 (2009), AMD (XOP, FMA4, CVT16,...)
• 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