cap.7. vetoriais.ppt [Modo de Compatibilidade]pauloac/ces25/cap.7_vetoriais.pdf · 903,6 90,36 rlwr...

29
Computadores Vetoriais Paulo André Castro IEC - ITA CES-25 CES-25 – Arquiteturas para Alto Desmpenho Prof. Paulo André Castro [email protected] Sala 110 – Prédio da Computação www.comp.ita.br/~pauloac IEC - ITA

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:

Comp. Vetorial com Registradores Vetoriais (VMIPS/Cray-1)

Paulo André Castro IEC - ITACES-25

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.

Algumas Instruções Vetoriais

Paulo André Castro IEC - ITACES-25

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)

Uso de várias Unidades Funcionais

Paulo André Castro IEC - ITACES-25

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

Pistas

Paulo André Castro IEC - ITACES-25

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