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

Documentos relacionados
Arquiteturas de Computadores

Computadores Vetoriais

Arquiteturas Vetoriais. Modelo de Máquina Cray-1

Arquitetura de Computadores

Arquiteturas de Computadores

SSC0611 Arquitetura de Computadores

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

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

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

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

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

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

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

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

SSC510 Arquitetura de Computadores. 6ª aula

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

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

3. Arquiteturas SIMD. 3.1 Considerações iniciais

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

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

SSC0902 Organização e Arquitetura de Computadores

SSC510 Arquitetura de Computadores. 7ª aula

Organização de Sistemas de Computadores

Arquitetura de Computadores. Processamento Paralelo

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Arquiteturas paralelas Parte 1

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

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

Multiprogramação leve em arquiteturas multi-core

SSC0510 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores

AULA DE REVISÃO 4 ILP

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

Organização de Computadores

SSC0510 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

Arquitectura de Computadores II. Pipelining Avançado e Paralelismo ao Nível da Instrução (ILP Instruction Level Paralelism)

CAP-387(2016) Tópicos Especiais em

lw, sw add, sub, and, or, slt beq, j

Processamento Paralelo

AULA DE REVISÃO 3 ILP

Modelo de Von Neumann

Explorando o paralelismo entre instruções

Otimização do desempenho (no h/w) Objectivo

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

MO401. Arquitetura de Computadores I

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

Sistemas Distribuídos

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

Computadores e Programação (DCC/UFRJ)

Microarquiteturas Avançadas

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

Disciplina de Arquitetura de Computadores

ORGANIZAÇÃO DE COMPUTADORES

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Micro-Arquiteturas de Alto Desempenho. Introdução. Ementa

SSC0114 Arquitetura de Computadores

Arquitetura de Computadores

Arquitetura de Computadores Aula 11 - Multiprocessamento

AJProença, Sistemas de Computação, UMinho, 2017/ ou + Unidades (Centrais) de Processamento (CPU)

3 Computação de Propósito Geral em Unidades de Processamento Gráfico

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 é

Otimização do desempenho (no h/w) Objectivo. Problemas: Estrutura do tema Avaliação de Desempenho (IA-32)

Estrutura do tema Avaliação de Desempenho (IA-32)

Infra-estrutura de Hardware

Otimização do desempenho (no h/w) Objetivo

Unidade Central de Processamento UCP (CPU)

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

Introdução. Edna Barros

Introdução à Computação: Arquitetura von Neumann

Organização e Arquitetura de Computadores I

William Stallings Computer Organization and Architecture

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Introdução. Arquitetura e Organização de Computadores I. Programa. Arquitetura e Organização de. Computadores. Capítulo 1.

Unidade 12: Introdução ao Paralelismo:

Organização de Computadores I

SSC0611 Arquitetura de Computadores

Arquitectura de Computadores II. Introdução

Taxonomia de Flynn. Procura classificar todas as arquitecturas de computadores com base no processamento das instruções e dos dado.

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

O Funcionamento 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

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

Mestrado em Informática. Curso de Especialização em Informática. Optimização do desempenho (no CPU) com introdução de paralelismo

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

William Stallings Organização de computadores digitais. Capítulo 14 Operação da Unidade de Controle

PSI3441 Arquitetura de Sistemas Embarcados

SSC0611 Arquitetura de Computadores

5 Unidades de Processamento Gráfico GPUs

Arquiteturas de Computadores. Fundamentos de Projetos de Computadores

PSI3441 Arquitetura de Sistemas Embarcados

Conjunto de Instruções. Alisson Brito

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

O Funcionamento do Processador

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

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

O Processador: Via de Dados e Controle

Transcrição:

Arquitetura e Organização de Computadores 2 Paralelismo em Nível de Dados Arquiteturas Vetoriais, Extensões SIMD e GPUs Taxonomia de Flynn - fluxo-de-instruções X fluxo-de-dados SISD Single Instruction, Single Data Máquinas clássicas não paralelas da arquitetura von Neumann. SIMD Single Instruction, Multiple Data Um único fluxo de instrução e múltiplos fluxos de dados, execução síncrona de instrução para todos os dados. MISD Multiple Instruction, Single Data Seria o caso de um pipeline de processadores aonde os dados vão sendo processados e passados para o processador seguinte. Existência duvidosa processadores sistólicos? MIMD Multiple Instruction, Multiple Data é o caso dos multiprocessadores, onde várias instruções podem ser executadas ao mesmo tempo em unidades de processamento diferentes controladas por unidades de controle independentes (uma para cada unidade de processamento). 2 1

Sumário: Explorando o Paralelismo em Nível de Dados: Introdução Paralelismo em SIMD Arquiteturas Vetoriais Multimedia SIMD instruction set extensions MMX (Multimedia Extensions), SSEx (Streaming SIMD Extensions) e AVX (Advanced Vector Extensions) Graphics Processor Units - GPUs 3 Taxonomia do Paralelismo Horizontal Vertical ILP Superscalar Pipelined DLP SIMD / SIMT Vector / temporal SIMT TLP Multicore SMT Interleaved / switch-on-event multithreading ILP (instruction Level Parallelism) - DLP (Data Level Parallelism) - TLP (Thread Level Parallelism) 4 2

Introdução Arquiteturas SIMD podem explorar o paralelismo em nível de dados em: Computação científica orientada-a-matrizes Aplicações multimídia orientados a vídeo e áudio. Arquiteturas SIMD possui maior eficiência energética do que MIMD. Necessita somente buscar (fetch) uma instrução por operação em dados. A eficiência energética torna a arquitetura SIMD atraente para dispositivos móveis pessoais (PMD). Arquiteturas SIMD possibilitam ao programador continuar a pensar sequencialmente e, ainda assim, atinge um ganho de velocidade ao realizar operações de dados paralelas. 5 Figure 4.1 Potential speedup via parallelism from MIMD, SIMD, and both MIMD and SIMD over time for x86 computers. This figure assumes that two cores per chip for MIMD will be added every two years and the number of operations for SIMD will double every four years. 6 3

Arquiteturas Vetoriais Alguns processadores incluem unidades dedicadas à execução de operações sobre vetores de forma mais eficiente. Uma operação típica sobre vetores realiza uma adição de dois vetores de 64 elementos, em ponto flutuante. A operação é equivalente a uma iteração sobre os elementos do vetor, efetuando uma multiplicação por iteração. Vantagens das operações vetoriais 1. o cálculo de um resultado é independente do anterior, possibilitando a utilização de pipeline com bastante estágios, sem gerar anomalias de dados. 2. uma só instrução especifica um grande número de operações, equivalente à execução de um ciclo, o que reduz a quantidade de buscas de instruções 3. os acessos à memória para carregar os elementos do vetor em registradores podem tirar partido da optimização da latência da memória, amortizando o custo elevado dos acessos à memória. 4. Os hazards de controle são reduzidas porque os ciclos são transformados numa só instrução. 7 Arquitetura Vetorial VMIPS Baseado em Cray-1 Registradores Vetoriais Cada registrador vetorial mantém 64 elementos de 64 bits/elemento. O arquivo de registradores possui 16 portas de leitura e 8 portas de escrita. Unidades Funcionais Vetoriais Totalmente pipelined Hazards de dados e controle são detectados. Unidade Load-Store Vetorial Totalmente pipelined Uma palavra por ciclo de clock após a latência incial. Conjunto de registradores escalares 32 registradores de propósito geral 32 registradores de ponto flutuante (FP) 8 4

Figure 4.2 The basic structure of a vector architecture, VMIPS. This processor has a scalar architecture just like MIPS. There are also eight 64-element vector registers, and all the functional units are vector functional units. This chapter defines special vector instructions for both arithmetic and memory accesses. The figure shows vector units for logical and integer operations so that VMIPS looks like a standard vector processor that usually includes these units; however, we will not be discussing these units. The vector and scalar registers have a significant number of read and write ports to allow multiple simultaneous vector operations. A set of crossbar switches (thick gray lines) connects these ports to the inputs and outputs of the vector functional units. 9 VMIPS ISA ADDVV.D, ADDVS.D SUBVV.D, SUBVS.D, SUBSV.D MULVV.D, MULVS.D DIVVV.D, DIVSV.D, DIVVS.D LV, SV LVWS, SVWS (With Stride) V1 <- M[R1+i*R2] LVI V1, (R1+V2) V1[i] = M[R1 + V2[i]] SVI V1, (R1+V2) CVI V1,R1 V1[i] = i*r1 SxxVV.D Xx EQ, NE, GE, GT, LE, LT Set the flags in mask register VM SxxVS.D 10 5

VMIPS ISA Como os processadores vetoriais funcionam? Um processador vetorial pode ser melhor entendido examinando-se um loop vetorial no VMIPS. Exemplos: LV V1, X(r1): load vector for (I=0;I<MVL;I++) ld.d v1[i], X+I(r1); SV V1, X(r1): store vector for (I=0;I<MVL;I++) st.d v1[i], X+I(r1); addvv.d v1,v2,v3: add two vectors for (I=0;I<MVL;I++) add.d v1[i],v2[i],v3[i]; addvs v1,f2,v3: add vector to scalar for (I=0;I<MVL;I++) add.d v1[i],f2,v3[i]; 11 Exemplo SAXPY ou DAXPY: 12 Y = a X + Y Y, X - vetores de 64 elementos a - valor escalar Unidade de processamento vetorial e 8 registradores vetoriais que guardam 64 elementos FP de 64 bits MIPS LD F0, a ADDI R4, Rx, 512 # último elem. L1: LD F2, 0(Rx) # lê X(i) MULTDF2, F0, F2 # a X(i) LD F4, 0(Ry) # lê Y(i) ADDD F4, F2, F4 # a.x(i)+y(i) SD F4, 0(Ry) # guarda Y(i) ADDI Rx, Rx, 8 # inc. índ. X ADDI Ry, Ry, 8 # inc. índ. Y SUB R20, R4, Rx # calc. limite BEQZ R20, L1 MIPS vetorial LD F0, a LV V1, 0(Rx) # lê vetor X MULTSV V2, F0, V1 # a X LV V2, 0(Ry) # lê vetor Y ADDV V4, V2, V3 # add SV V4, 0(Ry) # guarda Y 6

Tempo de execução vetorial O tempo de execução depende de três fatores: O tamanho dos componentes vetorial Os conflitos estruturais As dependências de dados As unidades funcionais VMIPS processam um elemento por ciclo de clock O tempo de execução é aproximadamente o tamanho do vetor Comboio (Convey) Conjunto de instruções vetoriais que podem potencialmente executarem juntas 13 Chimes Sequencias com dependências RAW (read-after-write) podem ser colocadas no mesmo comboio através do mecanismo de encadeamento (chaining ) Chaining O encadeamento permite que uma operação vetorial comece assim que os elementos individuais do operando-fonte desse vetor fiquem disponíveis: os resultados da primeira unidade funcional na cadeia são adiantados para a segunda unidade funcional. Chime Unidade de tempo necessária para executar um comboio. Uma sequencia vetorial que consome m comboios é executada em m chimes. Para um vetor de tamanho n, requer m x n ciclos de clock. 14 7

Vector Chaining 15 Vector Chaining 16 8

Exemplo Mostre como a sequência de código a seguir é disposta em comboios, considerando uma única cópia de cada unidade funcional vetorial. LV V1,Rx ;load vector X MULVS.D V2,V1,F0 ;vector-scalar multiply LV V3,Ry ;load vector Y ADDVV.D V4,V2,V3 ;add two vectors SV Ry,V4 ;store the sum De quantos chimes essa sequência vetorial precisa? Ciclos por FLOP? Comboios (convoys): 1 LV MULVS.D 2 LV ADDVV.D 3 SV 3 chimes, 2 FP ops per result, cycles per FLOP = 1.5 For 64 element vectors, requires 64 x 3 = 192 clock cycles 17 Desafios A fonte mais importante de overhead, ignorada pelo modelo de chime, é o de tempo e início do vetor. O tempo de início advém da latência de pipeline da operação vetorial e é determinado pela profundidade do pipeline. VMIPS usa as mesma profundidade de pipeline do Cray-1: Floating-point add => 6 clock cycles Floating-point multiply => 7 clock cycles Floating-point divide => 20 clock cycles Vector load => 12 clock cycles Otimizações que melhoram o desempenho: > 1 element per clock cycle Non-64 wide vectors IF statements in vector code Memory system optimizations to support vector processors Multiple dimensional matrices Sparse matrices Programming a vector computer 18 9

Múltiplas Pistas - Multiple Lanes O n-ésimo elemento do registrador vetorial A participa das operaçãoes (hardwired) com o n-ésimo elemento do registrador vetorial B A unidade funcional vetorial pode ser estruturada com múltiplas pistas (lanes) paralelas. 19 Como tratar os casos em que o tamanho dos vetores é diferente do tamanho dos registradores? O tamanho de determinada operação vetorial normalmente é desconhecido durante a compilação. A solução para esse problema é disponibilizar um registrador que controle o tamanho de qualquer operação vetorial (Vector Length Register - VLR) O valor de VLR não pode ser maior do que o tamanho máximo dos registradores vetoriais (MVL). Empregar a técnica strip mining para vetores maiores do que MVL: low = 0; VL = (n % MVL); /*find odd-size piece using modulo op % */ for (j = 0; j <= (n/mvl); j=j+1) { } for (i = low; i < (low+vl); i=i+1) Y[i] = a * X[i] + Y[i] ; low = low + VL; VL = MVL; /*outer loop*/ /*runs for length VL*/ /*main operation*/ /*start of next vector*/ /*reset the length to maximum vector length*/ 20 10

Registradores de máscara vetorial Lidando com declarações IF el loops vetoriais: for (i = 0; i < 64; i=i+1) if (X[i]!= 0) X[i] = X[i] Y[i]; A extensão que normalmente é utilizada é o controle de máscara vetorial. Utiliza um registrador de máscara (mask register) para desabilitar elementos: LV V1,Rx ;load vector X into V1 LV V2,Ry ;load vector Y L.D F0,#0 ;load FP zero into F0 SNEVS.D V1,F0 ;sets VM(i) to 1 if V1(i)!=F0 SUBVV.D V1,V1,V2 ;subtract under vector mask SV Rx,V1 ;store the result in X A taxa de GFLOPS cai quando máscaras são utilizadas! 21 Bancos de Memória O Sistema de memória deve ser projetado para suportar grande largura de banda (high bandwidth) para as operações de carregamento-armazenamento vetorial (vector loads and stores) Espalhar o acesso através de múltiplos bancos Control bank addresses independently Load or store non sequential words Support multiple vector processors sharing the same memory Exemplo: 32 processors, each generating 4 loads and 2 stores/cycle Processor cycle time is 2.167 ns, SRAM cycle time is 15 ns How many memory banks needed? 22 11

Manipulando arrays multidimensionais: Stride Considere: for (i = 0; i < 100; i=i+1) for (j = 0; j < 100; j=j+1) { A[i][j] = 0.0; for (k = 0; k < 100; k=k+1) A[i][j] = A[i][j] + B[i][k] * D[k][j]; } Must vectorize multiplication of rows of B with columns of D Use non-unit stride Bank conflict (stall) occurs when the same bank is hit faster than bank busy time: #banks / LCM(stride,#banks) < bank busy time 23 Lidando com matrizes dispersas: Scatter-Gather Considere: for (i = 0; i < n; i=i+1) A[K[i]] = A[K[i]] + C[M[i]]; Utilizar vetor de índice (index vector): LV Vk, Rk ;load K LVI Va, (Ra+Vk) ;load A[K[]] LV Vm, Rm ;load M LVI Vc, (Rc+Vm) ;load C[M[]] ADDVV.D Va, Va, Vc ;add them SVI (Ra+Vk), Va ;store A[K[]] 24 12

Programando Arquiteturas Vetoriais Compilers can provide feedback to programmers Programmers can provide hints to compiler 25 Bibliografia David Patterson e John Hennessy, Arquitetura e Organização de Computadores uma abordagem quantitativa, 5ª Edição, ed. Campus. 26 13