CES-25 – Arquiteturas para Alto Desmpenho Prof. Paulo ...pauloac/ces25/cap.6.1_vetoriais.pdf ·...

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 CES-25 – Arquiteturas para Alto Desmpenho Prof. Paulo ...pauloac/ces25/cap.6.1_vetoriais.pdf ·...

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 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)

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, 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