Computadores Vetoriais

Documentos relacionados
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

AOC II - Arquitetura e Organização de Computadores Prof. Dr. rer. nat. Daniel Duarte Abdala. Lista de Exercícios

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

Predição de Desvios e Processadores Superescalares Especulativos

3. Arquiteturas SIMD. 3.1 Considerações iniciais

Processamento Paralelo

Arquitetura de Computadores. Prof. João Bosco Jr.

AULA DE REVISÃO 4 ILP

Unidade 12: Introdução ao Paralelismo:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

processadores µprocessador µcontrolador DSP ASIP especialização crescente

Organização e Arquitetura de Computadores I

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

Arquitetura de Computadores Aula 11 - Multiprocessamento

3. Unidade Central de Processamento

SSC510 Arquitetura de Computadores. 7ª aula

Multiprogramação leve em arquiteturas multi-core

Arquiteturas Paralelas

Arquitetura e Organização de Computadores 2. SISD Single Instruction, Single Data Máquinas clássicas não paralelas da arquitetura von Neumann.

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

2º Estudo Dirigido CAP 3

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

SSC510 Arquitetura de Computadores. 6ª aula

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Arquiteturas RISC e CISC. Adão de Melo Neto

O Funcionamento do Processador

Escalonamento de Instruções

Processadores. Principal função é executar programas armazenados na memória principal.

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Arquitetura de Computadores. Processamento Paralelo

Técnicas para vetorização de código. Bruno Cardoso Lopes Instituto de Computação - Unicamp

Explorando o paralelismo entre instruções

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

Arquitetura de Computadores II

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Benchmarks. 1. Introdução

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Prof. Gustavo Oliveira Cavalcanti

Arquitetura de Computadores Unidade Central de Processamento CPU

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Conceitos Básicos Processador

ULA (ALU) - UNIDADE DE ARITMÉTICA E LÓGICA

Organização de Sistemas de Computadores

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

Conjunto de Instruções e Modelos de Arquiteturas

Arquitetura e Organização de Computadores

Sistemas Distribuídos

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

SSC510 Arquitetura de Computadores 1ª AULA

Microprocessadores II - ELE 1084

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

Conjunto de Instruções. Alisson Brito

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Arquitetura de Sistemas Digitais

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Introdução à Organização de Computadores. Aula 8

FCA - Editora de Informática xv

Como o número está em hexadecimal, cada algarismo pode conter 16 possibilidades de símbolos.

Organização e Arquitetura de Computadores I

Sistemas Operacionais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

PARALELISMO NO NÍVEL DO PROCESSADOR

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018

Programação Distribuída e Paralela. Jorge Barbosa

Arquitetura e Organização de Computadores

Esse programa inclui dependências de tipo: escrita-escrita, leitura-escrita e escrita-leitura. Identifique e mostre estas dependências.

Disciplina de Arquitetura de Computadores

Transcrição:

Computadores Vetoriais Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac

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 (MISD) Multiple Instruction Stream, Single Data Stream: sem implementação comercial (MIMD) Multiple Instruction Stream, Multiple Data Stream: arquiteturas multiprocessadas

Processadores Vetoriais SIMD 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? 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 de computadores 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 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 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 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. 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 Vejamos uma versão vetorial do MIPS, isto é unidade escalar MIPS e uma unidade vetorial:

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

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

Exemplo Funcionamento Y = a*x + Y Esse é o chamado loop SAXPY ou DAXPY que forma o loop interno do 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 a DADDIU 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) 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 X DADDIU Ry,Ry,#8 ;incrementa índice para Y SUB.D R20,R4,Rx ;calcula limite BNEZ R20,Loop ;verifica se terminou

Funcionamento 3 Exemplo Y = a*x + Y Código VMIPS L.D F0,a ;carrega escalar a LV V1,Rx ;carrega vetor X MULVS.D V2,V1,F0 ;multiplicação de vetor por escalar LV V3,Ry ;carrega vetor Y ADDV.D V4,V2,V3 ;soma SV Ry,V4 ;armazena o resultado

MIPS: VMIPS : Redução devido a Comparação ~ 600(578) instruções executadas 6 instruções executadas Instruções atuando sobre vetores 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 processador

Exemplo - Mineração na superfície 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 registrador for(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*/ 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 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 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

Otimização de operações vetoriais Encadeamento MULV.D V1,V2,V3 ADDV.D V4,V1,V5 Dependência RAW Latência alta (quando pistas insuficientes...) Valores parciais podem ser encaminhados para próxima instrução Pistas de execução

Pistas

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