SSC0510 Arquitetura de Computadores

Documentos relacionados
SSC0611 Arquitetura de Computadores

SSC510 Arquitetura de Computadores. 7ª aula

Processamento Paralelo

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES PARALELISMO: SMP E PROCESSAMENTO VETORIAL. Prof. Dr. Daniel Caetano

Sistemas Distribuídos

Introdução à Computação: Sistemas de Computação

Processador. Processador

SSC510 Arquitetura de Computadores 1ª AULA

Unidade Central de Processamento UCP (CPU)

2º Estudo Dirigido CAP 3

SSC0611 Arquitetura de Computadores

Disciplina: Arquitetura de Computadores

Computadores e Programação (DCC/UFRJ)

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores

Unidade 12: Introdução ao Paralelismo:

Sistemas Operacionais

Organização e Arquitetura de Computadores I

Multiprogramação leve em arquiteturas multi-core

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

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

Arquitetura e Organização de Computadores

Conceitos Básicos Processador

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

ORGANIZAÇÃO DE COMPUTADORES

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Disciplina de Arquitetura de Computadores

SSC510 Arquitetura de Computadores. 8ª aula

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

Barramento. Prof. Leonardo Barreto Campos 1

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Sistemas Operacionais I

Linguagem de Maquina II. Visão Geral

Computadores Vetoriais

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores

Organização e Arquitetura de Computadores I

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

Sistemas distribuídos. Prof. Emiliano Monteiro

Caracterização de Sistemas Distribuídos

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. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

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 COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Unidade Central de Processamento 2. Registradores

ENDEREÇAMENTO DE INSTRUÇÕES. Adão de Melo Neto

ARQUITETURA DE COMPUTADORES

Organização de Computadores 1

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Sistemas Operacionais. Adão de Melo Neto

SSC-0742 PROGRAMAÇÃO CONCORRENTE. Aula 04 Revisão de Arquiteturas Paralelas -Parte 2 Prof. Jó Ueyama e Julio Cezar Estrella

SSC0611 Arquitetura de Computadores

Arquitetura e organização de computadores Uma visão geral

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

28/8/13. Processadores. Introdução

2ª Lista de Exercícios de Arquitetura de Computadores

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

Organização de Sistemas de Computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Conjunto de Instruções

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

14/3/2016. Prof. Evandro L. L. Rodrigues

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Organização de computadores. Prof. Moisés Souto

Aula 3 Redes de Interconexão

Processadores para computação de alto desempenho

3. Unidade Central de Processamento

Prof. Leonardo Augusto Casillo

Prof. Benito Piropo Da-Rin. Arquitetura, Organização e Hardware de Computadores - Prof. B. Piropo

Linguagem de Programação II

Arquitetura e Organização de Computadores

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO4: MEMÓRIAPRINCIPAL

2. A influência do tamanho da palavra

AGT0001 Algoritmos Aula 01 O Computador

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

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

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 2 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS


William Stallings Arquitetura e Organização de Computadores 8 a Edição

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

1. Conceitos Básicos de Computação

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Organização de Computadores Processadores. Professor: Francisco Ary

EA869 Pipeline. Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof.

AULA 01: APRESENTAÇÃO

Benchmarks. 1. Introdução

Unidade Central de Processamento (CPU) Processador. Bernardo Gonçalves Introdução ao Computador 2008/01

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

Algoritmos Computacionais

Célula, Palavra, Ciclo de Instruções e Lógica Temporizada

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída

Aula 12: Memória: Barramentos e Registradores

2ª Lista de Exercícios de Arquitetura de Computadores

William Stallings Organização de computadores digitais. Capítulo 11 Estrutura e função da CPU

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

Transcrição:

SSC0510 Arquitetura de Computadores 12ª Aula Arquiteturas Paralelas Arquiteturas SIMD Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br

Arquiteturas SIMD Um único fluxo de dados, vários fluxos de intruções Tipos de arquiteturas Mais antigas Processadores Vetorais Processadores Matriciais Mais recentes Extensões de conjunto de instruções SIMD para multimídia Unidades de Processamento Gráfico (GPUs) 2

Arquiteturas SIMD Processadores Vetoriais Processadores Vetoriais provêm instruções de alto nível sobre vetores de dados, tais como multiplicar, subtrair, somar Em máquinas escalares, essas operações são realizadas através de um loop Em máquinas vetoriais, essas operações são realizadas em uma única instrução vetorial 3

Arquiteturas SIMD Processadores Vetoriais Vantagens: Redução da quantidade de fetch e decode de instruções. Não há necessidade de verificação de conflitos de dados, pois as operações entre elementos dos vetores que estão na mesma operação são independentes. Operações vetoriais são atômicas e eliminam a sobrecarga gerada pelos saltos condicionais e comparações necessárias ao controle de repetições. As operações entre elementos podem ser paralelizadas ou executadas em pipeline. Como há uma quantidade menor de instruções por programa, há uma quantidade menor de falha no cache de instruções. 4

Arquiteturas SIMD Processadores Vetoriais Exemplo: Programa em Fortran DO 100 I = 1, N A(I) = B(I) + C(I) 100 B(I) = 2 * A(I+1) 5

Arquiteturas SIMD Processadores Vetoriais Exemplo (continuação) Programa utilizando instruções escalares INITIALIZE I = 1 10 READ B(I) READ C(I) ADD B(I) + C(I) STORE A(I) // B(I) + C(I) READ A(I + 1) MULTIPLY 2 * A (I + 1) STORE B(I) // 2* A(I + 1) INCREMENT I // I+ 1 IF I <= N GO TO 10 STOP 6

Arquiteturas SIMD Processadores Vetoriais Exemplo (continuação) Programa utilizando instruções vetoriais TEMP(1:N) = A(2:N + 1) A(1:N) = B(1:N) + C(1:N) B(1,N) = 2 * TEMP(1:N) Onde A(1:N) é o vetor A Necessidade do vetor TEMP para armazenamento do vetor A antes da atualização 7

Arquiteturas SIMD Processadores Vetoriais Arquitetura VMIPS 8

Arquiteturas SIMD Processadores Vetoriais Arquitetura VMIPS Operação: Y = a * X + Y Escalar Vetorial 9

Arquiteturas SIMD Processadores Vetoriais Endereçamento de vetores Três maneiras: Acesso contíguo Os elementos estão contíguos na memória Acesso não contíguo, mas regular Os elementos estão separados por intervalos de tamanho k Acesso esparso ou indexado Os elementos estão em posições arbitrárias na memória e o endereço de cada posição é armazenado na posição correspondente de um vetor auxiliar 10

Arquiteturas SIMD Processadores Vetoriais Exemplo de uma instrução de carregamento de um vetor 11

Abordagens para Computação Vetorial ULA implementada com pipeline ULAs paralelas Fonte: Stallings, 8ª edição 12

Arquiteturas SIMD Processadores Vetoriais ULA implementada com pipeline Pipeline Vetorial O tempo de execução de uma instrução vetorial não é o mesmo tempo de uma instrução escalar, ou seja, ADDV não leva a mesma quantidade de ciclos que uma instrução ADD Se isso acontecesse, seriam necessárias n ULAs, uma para cada elemento do vetor, o que é impraticável 13

Arquiteturas SIMD Processadores Vetoriais Pipeline Vetorial Operações necessárias para se realizar uma soma de dois números em ponto flutuante: A. Os expoentes dos dois operandos são comparados de modo que o número de maior magnitude é usado como base. B. O significando do número de menor magnitude sofre um shift de modo que os expoentes dos dois operandos estejam de acordo. C. Os significandos são somados. D. É feito o arredondamento do resultado. E. Verifica-se se ocorreu alguma exceção durante a adição (por exemplo, overflow). F. O resultado da adição é normalizado. Solução: implementação de um pipeline para execução das operações sobre ponto flutuante 14

Arquiteturas SIMD Processadores Vetoriais 15

Arquiteturas SIMD Processadores Vetoriais Qual seria o desempenho se uma operação de soma de dois vetores de 1000 posições fosse realizada utilizando uma unidade de ponto flutuante escalar e com uma unidade de ponto flutuante com pipeline? Suponha um clock de 200 MHz para cada estágio do pipeline 16

Arquiteturas SIMD Processadores Vetoriais Exemplo de uma ULA com 4 estágios Fonte: Stallings, 8ª edição 17

Arquiteturas SIMD Processadores Vetoriais Problemas para a vetorização Quando o tamanho do vetor é maior do que o dos registradores vetoriais, o compilador deve quebrar em várias operações vetoriais Stride Quantidade de dados que devem ser saltadas na leitura/escrita Utilizado principalmente quando se trabalha com matrizes, pois estas não são armazenadas sequencialmente na memória Normalmente as instruções de load e store possuem um valor para se especificar o stride 18

Arquiteturas SIMD Processadores Vetoriais Problemas para a vetorização Existência de desvios condicionais nos loops for (i=1; i<256; i++) if (a[i] < 0) a[i] = a[i] + b[i]; 19

Arquiteturas SIMD Processadores Vetoriais Supercomputador Vetorial Cray T90 20

Arquiteturas SIMD Arquiteturas Matriciais Processadores executam sincronizadamente a mesma instrução sobre dados diferentes. Utiliza vários processadores especiais muito mais simples, organizados em geral de forma matricial. Muito eficiente em aplicações onde cada processador pode ser associado a uma sub-matriz independente de dados (processamento de imagens, algoritmos matemáticos, etc.) Não incluem processamento escalar 21

Arquiteturas SIMD Processadores Matriciais 22

Arquiteturas SIMD Processadores Matriciais CM-5 (Connection Machine 5) FROSTBURG: primeiro computador massivamente paralelo comprado pela NSA (US National Security Agency), em 1991, com 256 nós 23

Arquiteturas SIMD Processadores Matriciais CM-5 Conexão em árvore 24

Arquiteturas SIMD Extensões do conjunto de instruções para multimídia Extensões: MMX (Multimedia Extension - 1996) SSE (Streaming SIMD Extensions - 1999) AVX (Advanced Vector Extensions - 2008) 25

Extensões do conjunto de instruções para multimídia MMX 8 registradores vetoriais (MM0.. MM7) de 64 bits, mapeados nos registradores de ponto flutuante (ST0.. ST7) e suporta 4 tipos de dados nos vetores 26

Extensões do conjunto de instruções para multimídia SSE 8 novos registradores de 128 bits (XMM0.. XMM7) para, a princípio, armazenar somente 4 números ponto flutuante de precisão simples de 32 bits. Depois expandiu para armazenar também: 2 números ponto flutuante de precisão dupla 2 números inteiros de 64 bits 4 números inteiros de 32 bits 8 números short-integer de 16 bits 16 bytes ou caracteres 27

Extensões do conjunto de instruções para multimídia SSE Exemplo de código escalar em operações de ponto flutuante: vec_res.x = v1.x + v2.x; vec_res.y = v1.y + v2.y; vec_res.z = v1.z + v2.z; vec_res.w = v1.w + v2.w; Exemplo de código utilizando as instruções SSE movaps xmm0, [v1] ; addps xmm0, [v2] ; movaps [vec_res], xmm0 xmm0 = v1.w v1.z v1.y v1.x xmm0 = v1.w+v2.w v1.z+v2.z v1.y+v2.y v1.x+v2.x Link interessante: http://sci.tuomastonteri.fi/programming/sse 28

Extensões do conjunto de instruções para multimídia AVX 8 registradores do SSE aumentaram de 128 bits para 256 bits e foram renomeados para YMM0.. YMM7. Mais 8 registradores foram acrescentados (YMM8.. YMM16) Compatibilidade das operações do SSE pode ser obtida utilizando o prefixo VEX* para operar nos 128 bits menos significativos dos registradores YMM * Prefixo VEX permite a definição de novas instruções e a extensão ou modificação de códigos de instruções previamente definidos 29

Extensões do conjunto de instruções para multimídia AVX Alguns links interessantes https://software.intel.com/en-us/articles/using-avx-without-writing-avx-code https://software.intel.com/en-us/articles/a-guide-to-auto-vectorization-withintel-c-compilers/ 30

SSC0510 Arquitetura de Computadores 12ª Aula Arquiteturas Paralelas Arquitetura MIMD com Memória Compartilhada Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br

Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes grupos: Memória Compartilhada Cada processador pode endereçar toda a memória do sistema Memória Distribuída Cada processador endereça somente a própria memória local 32

Arquiteturas MIMD com memória compartilhada Vantagens A comunicação entre os processos é bastante eficiente, pois os dados não precisam se movimentar fisicamente A programação não difere muita da programação para um único processador, não necessitando particionar código nem dados 33

Arquiteturas MIMD com memória compartilhada Desvantagens Primitivas de sincronização são necessárias para acesso às regiões compartilhadas Em algumas linguagens isso fica a cargo do programador Linguagens mais novas escondem alguns detalhes do programador Esse tipo de arquitetura não é muito escalável, devido ao limite da memória 34

Arquiteturas MIMD com memória distribuída Vantanges Altamente escalável, permitindo a construção de MPPs (computadores massivamente paralelos) A forma de comunicação (através de troca de mensagens) resolve tanto os problemas de comunicação como sincronização 35

Arquiteturas MIMD com memória distribuída Desvantagens A programação exige que os problemas possuam uma natureza paralela É necessária a distribuição da carga entre os processadores, seja de maneira automática ou manual 36

SMP Symmetric MultiProcessors Computador com as seguintes características: dois ou mais processadores com capacidade semelhante processadores compartilham a mesma memória e I/O processadores conectados por um barramento ou outra conexão interna tempo de acesso à memória é aproximadamente o mesmo para todos os processadores Também denominado por arquitetura UMA (Uniform Memory Access) processadores compartilham acesso a I/O podem usar o mesmo canal ou possuírem caminhos independentes para cada dispositivo processadores podem fazer as mesmas funções (são simétricos) sistema operacional integrado controla a arquitetura fornece interação entre processadores, jobs, tarefas, threads, arquivos e níveis de elementos de dados 37

SMP - Vantagens Desempenho, caso algum trabalho possa ser feito em paralelo Disponibilidade de recursos todos os processadores podem fazer as mesmas funções, falhas de um processador não param a máquina Aumento incremental usuário pode aumentar o desempenho adicionando novos processadores, mas sempre limitado pela memória Diferentes faixas de equipamentos (scaling) fornecedores oferecem diferentes produtos, baseados no número de processadores 38

Diagrama de um bloco multiprocessador com memória compartilhada 39

SMP - Organização Barramento de tempo compartilhado ou comum Memória multiportas (ou multiportos) 40

SMP Barramento Compartilhado Forma mais simples Estrutura e interface similares às arquiteturas monoprocessadas endereçamento distingue módulos no barramento arbitragem qualquer módulo pode ser o mestre temporariamente time sharing se um módulo tem o barramento, outros dispositivos esperam Diferença em relação aos monoprocessados: múltiplos processadores além de múltiplos dispositivos de I/O 41

SMP Barramento Compartilhado 42

SMP Barramento Compartilhado Vantagens simplicidade flexibilidade confiabilidade Desvantagens: desempenho limitado pelo clock do barramento cada processador deveria ter cache local reduz número de acessos ao barramento gera problemas com a coerência da cache 43

SMP Memória Multiportas Acesso direto e independente dos módulos de memória pelos processadores Lógica necessária para solucionar conflitos Pouca ou nenhuma modificação nos processadores ou módulos de memória 44

SMP Memória Multiportas Mais complexa precisa de um login extra no sistema de memória Desempenho melhor cada processador tem o seu próprio caminho aos módulos de memória Pode configurar porções da memória como privada para um ou mais processadores aumenta a segurança Política write through para atualização da cache 45

Exemplo IBM S/390 mainframe 46

Memória Compartilhada Distribuída Implementação de uma memória que é logicamente compartilhada mas implementada com o uso de um conjunto de memórias locais Pode ser de três classes: NUMA (Non-uniform Memory Access) COMA (Cache-Only Memory Access) CC-NUMA (Cache Coherent Non-Uniform Memory Access) 47

NUMA (Non-Uninform Memory Access) NUMA - quando o acesso à memória NÃO é uniforme todos os processadores têm acesso a toda memória normalmente usando load & store tempo de acesso à memória difere em função da região diferentes processadores têm acesso às regiões da memória em diferentes velocidades, o que faz necessário um certo cuidado na hora de programar 48

NUMA (Non-Uninform Memory Access) Intel Quick-Path Interconnect (QPI) 49

NUMA (Non-Uninform Memory Access) AMD Hyper-Transport (HT) 50

COMA (Cache-Only Memory Access) Assemelham-se a uma arquitetura NUMA, onde cada nó de processamento possui uma parte da memória global. O particionamento dos dados entre as memórias de cada nó não é estático -> as memórias funcionam como caches de nível 3. O problema de partição de dados e balanceamento dinâmico de carga é realizado automaticamente. Conforme o algoritmo de coerência utilizado, os dados migram automaticamente para as caches locais dos processadores onde é mais necessária. 51

COMA (Cache-Only Memory Access) 52

CC-NUMA (Cache Coherent Non-Uniform Memory Access) Solução de compromisso entre as arquiteturas NUMA e COMA. Cada nó processador possui uma cache local para reduzir o tráfego na rede de interconexão. O balanceamento de carga é realizado dinamicamente pelos protocolos de coerência das caches. 53

CC-NUMA (Cache Coherent Non-Uniform Memory Access) 54