Classificação de Flynn Distribuidos... · –pode-se saber o que está ocorrendo exatamente em...

36
Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN

Transcript of Classificação de Flynn Distribuidos... · –pode-se saber o que está ocorrendo exatamente em...

Sistemas Distribuídos

Classificação de Flynn

Fonte: Professoras. Sarita – UFRJ e Thais V. Batista - UFRN

2

Arquiteturas Paralelas

• Computação Paralela – Conceitos

– Permite a execução das tarefas em menor tempo,

através da execução em paralelo de diversas

tarefas.

– O paralelismo pode ser obtido em diversos níveis,

com ou sem o uso de linguagens de programação

paralela.

– Arquiteturas de diversos tipos, elaboradas para

aplicações específicas, podem ser utilizadas para

acelerar a execução dessas aplicações.

3

Arquiteturas Paralelas

• Computação Paralela – Conceitos

– Programação Seqüencial

• Um servidor, atendendo vários clientes, um por vez

– Programação Concorrente

• Um servidor, atendendo vários clientes através de uma

política de escalonamento no tempo

– Programação Paralela

• Vários servidores, atendendo vários clientes

simultaneamente no tempo

4

Arquiteturas Paralelas

• Computação Paralela – Aplicações

– Genoma Humano

– Turbulência dos Fluidos

– Dinâmica de Veículos

– Circulação de Oceanos

– Dinâmica de Fluidos Viscosos

– Modelagem de Supercondutores

– Cromodinâmica Quântica

– Visão por Computador

– Farmacêutica

– Biologia Estrutural

– Previsão do Tempo (precisão > 72 hs)

5

Arquiteturas Paralelas

• Existem diversas classificações para as arquiteturas paralelas

• Devido a constante evolução, nenhuma classificação consegue

abranger todas as arquiteturas existentes

• Classificação de Flynn (1972):

– “Some computer organizations and their effectiveness”, IEEE

Transactions on Computers, vol. C-21, pp. 948-960, 1972.

– Mais conhecida

– Baseia-se na unicidade e multiplicidade do fluxo de dados e

instruções

6

Arquiteturas Paralelas

Classificação de Flynn

SISD

Single InstructionSingle Data

SIMD

Single InstructionMultiple Data

MISD

Multiple InstructionSingle Data

(não implementável)

MIMD

Multiple InstructionMultiple Data

Único Múltiplo

Único

Múltiplo

Flu

xo d

e instr

uções

Fluxo de dados

7

Arquiteturas Paralelas

Classificação de Flynn

• SISD: único fluxo de instrução, único fluxo de dados

– classe que representa os computadores convencionais

(seriais)

– as instruções são executadas serialmente, porém os

estágios (busca da instrução, decodificação, busca do

operando e execução) podem ser sobrepostos (pipeline)

– pode-se saber o que está ocorrendo exatamente em

cada instante de tempo e reproduzir o processo passo a

passo mais tarde

– está presente nos sistemas computacionais cujo

processador é single core

8

Arquiteturas Paralelas

Classificação de Flynn – SISD

FI

FI FD

FI - Fluxo de instruções

FD - Fluxo de dados

UP - Unidade de Processamento

UC UP M

M - Memória

UC - Unidade de Controle

9

Arquiteturas Paralelas

Classificação de Flynn – SISD

• Exemplo (SISD)

• Considere 2 processos

desejando fazer o mesmo

cálculo abaixo:

LOAD A(I)

B(I)=A(I)*4 => MULT 4

STORE B(I)

TEMPO:

t1

t2

t3

LOAD A(1)

MULT 4

STORE B(1)

Processador P

Processador P

Processador P

t4

t5

t6

LOAD A(2)

MULT 4

STORE B(2)

Processador P

Processador P

Processador P

10

Arquiteturas Paralelas

Classificação de Flynn – SIMD• SIMD: único fluxo de instruções, múltiplo fluxo de

dados

– classe que representa os processadores matriciais, paralelos e associativos

– uma única unidade de controle que envia um fluxo de instruções para vários processadores

– os processadores recebem a mesma instrução ao mesmo tempo e atuam sobre diferentes fluxos de dados

– trabalha com threads

– já estão sendo utilizadas GPUs (Graphics Processor Units ou Unidades de Processamento Gráfico) para o processamento paralelo e elas empregam SIMD.

11

Arquiteturas Paralelas

Classificação de Flynn – SIMD

FI

FI FD

UCUP

MUP

UP

M

M

FD

FD

........

........

FI

FI

Memória

12

Arquiteturas Paralelas

Classificação de Flynn – SIMD• Exemplo (SIMD): 3 processos desejando realizar o cálculo abaixo

LOAD A(I)

B(I)=A(I)*4 => MULT 4

STORE B(I)

TEMPO:

t1

t2

t3

P3

LOAD A(3)

P3

LOAD A(2)

P2

LOAD A(1)

P1

MULT 4

P3

MULT 4

P2

MULT 4

P1

STORE B(3)STORE B(2)

P2

STORE B(1)

P1

13

Arquiteturas Paralelas

Classificação de Flynn – MIMD• MIMD: múltiplo fluxo de instruções, múltiplo

fluxo de dados

– vários processadores ou processadores

multicore, cada um controlado por uma

unidade de controle

– processadores recebem instruções diferentes e

operam sob fluxo de dados diferentes

– podem ser síncronos ou assíncronos

– trabalha com threads

– essa é, atualmente, a classificação mais

utilizada nos sistemas computacionais

14

Arquiteturas Paralelas

Classificação de Flynn – MIMD

........

M

M

M

........

Memória

FI

FI

FI

FD

FD

FI

FI

FI

UP

UP

UP........

UC

UC

UC

........

FD

15

Arquiteturas Paralelas

Classificação de Flynn – MIMD

• Exemplo (MIMD) – obrigatório threads

TEMPO:

Inicializa

Dispara tarefa A

Dispara tarefa B

Tarefa C Espera por processador

Fim da tarefa B

Dispara tarefa C

Tarefa D Espera por processador

Fim da tarefa A

Dispara tarefa D

Espera fim de todas as tarefas

Fim da tarefa C

Fim da tarefa D

Junta resultados

Fim

P1

Programa principal

P2 P3

Tarefa B

Fim(B)

Tarefa A

Fim(A)

Tarefa D

Fim(D)

Tarefa C

Fim(C)

16

Modelos de acesso à memória

• Um computador convencional consiste de um

processador executando um programa

armazenado na memória:

Memória principal

Processador

Instruções para o processador

Dados para/do processador

17

Modelos de acesso à memória

• Cada lugar da memória possui um endereço que

inicia em 0 e vai até 2n - 1, onde n é o número de bits

do endereço

• Em computação paralela, pode-se ter:

– memória compartilhada (multiprocessadores)

– memória distribuída (multicomputadores)

18

Memória Compartilhada Distribuída

• Tipos de Sistemas Multiprocessador

– Multiprocessadores: duas ou mais CPUs

compartilham uma memória compartilhada

– Multicomputadores: cada CPU tem sua prórpia

memória privada

19

Memória Compartilhada Distribuída

• Objetivo:

– Multicomputadores comunicarem-se via memória

compartilhada

20

Memória Compartilhada Distribuída

baseada em páginas

• Característica:

–Nenhum processador pode acessar diretamente a

memória de outro processador (NO Remote Memory

Access –NORMA)

• Funcionamento:

– Quando um processador referencia uma página remota,

esta página deve ser buscada.

– A página migra dinamicamente pela rede

– Os processos acessam a memória sem ter

conhecimento que páginas estão em locais remotos e

serão transferidas pela rede

21

Memória Compartilhada Distribuída

baseada em páginas

22

Memória Compartilhada Distribuída

baseada em Variáveis Compartilhadas

• Organização da memória compartilhada de uma

forma mais estruturada

• Característica:

• –Apenas variáveis e estruturas de dados são compartilhadas

• –Como manter uma base de dados distribuída e replicada?

• Dois exemplos de implementação:

– Munin

– Midway

23

Memória Compartilhada Distribuída baseada

em Variáveis Compartilhadas: Munin

• Variáveis compatilhadas incluem a palavra chave

shared para o compilador reconhecê-las

• Acesso a variáveis compartilhadas são feitas como

se fosse local. Se a variável não está presente

localmente, uma falta de página acontece e o

Munin passa a ter o controle do sistema.

• Tipos de Variáveis permitidas:

– Variáveis comuns

– Variáveis Compartilhadas

– Variáveis Sincronizadas

24

Memória Compartilhada Distribuída

baseada em Objetos

• Características:

– processos em múltiplas máquinas compartilham um

espaço abstrato que contém objetos compartilhados

– a localização e o gerenciamento de objetos é realizado

pelo ambiente de execução

– qualquer processo pode invocar métodos nos objetos

• Vantagens sobre os outros métodos:

– É mais modular que outras técnicas

– A implementação é mais flexível porque o acesso é

controlado

– Sincronização e acesso pode ser integrados

25

Memória Compartilhada Distribuída

baseada em Objetos

• Vantagens sobre os outros métodos:

– É mais modular que outras técnicas

– A implementação é mais flexível porque o acesso é

controlado

– Sincronização e acesso pode ser integrados

26

MIMD com Memória compartilhada

• A mesma memória é acessada pelos múltiplos

processadores

• Sincronização entre tarefas é feita por escrita/leitura

na/da memória compartilhada e usuário é

responsável por sua especificação

• Um lugar da memória não pode ser modificado por

uma tarefa enquanto outra o estiver acessando

27

MIMD com Memória compartilhada

• Comunicação entre tarefas é rápida

• Escalabilidade limitada pelo número de caminhos

entre memória e processadores

UC1

UC2

UCn

28

MIMD com Memória compartilhada

• Usuário é responsável pela sincronização

• Programação:

– Linguagens de programação paralela

• Construções e instruções paralelas permitem declarações de variáveis compartilhadas e seções paralelas de código

• Compilador responsável pela geração do código final executável

– Uso de Threads neste contexto

• Seqüências de código escritas em alto nível para processadores individuais que podem acessar localidades compartilhadas

29

MIMD com Memória compartilhada

• Exemplos:

– SMP (Symetric MultiProcessors)

• SGI Power Chalenge

• máquinas da Sun Microsystems

• Silicon Graphics

– NUMA (NonUniform Memory Access)

30

MIMD com Memória distribuída

• Memória fisicamente distribuída entre os

processadores e cada memória local só pode ser

acessada pelo seu processador

• Tarefas se comunicam através de troca de

mensagens e a sincronização entre as tarefas é feita

através dessa troca

31

MIMD com Memória distribuída

• Programação:

– Bibliotecas com rotinas para passagem de

mensagens que são ligadas a programas

seqüenciais convencionais são bastante utilizadas

– Problema dividido em um número de tarefas que se

comunicam

32

MIMD com Memória distribuída

UC1

UC2

UCn

33

MIMD com Memória distribuída

• MPP (Massively Parallel Processors)

– interconectadas por rede de alta velocidade

– boa escalabilidade (podem ser formadas por uma grande quantidade de máquinas)

– complicadas de programar

– alto custo (em torno de US$ 1.000.000)

– Exemplos:

• Intel Paragon

• Cray T3E

• Thinking Machines CM-5

34

MIMD com Memória distribuída

• COW (Cluster of Workstations)

– utilização de estações de trabalho em uma rede local de

processamento

– baixo custo

– boa relação custo/benefício

35

Arquiteturas Paralelas

Fonte: A. Tanenbaum

Structured Computer Organization

Arquiteturas Paralelas

SISD SIMD MISD MIMD

(Maquina de Von

Neumann)

Vector

Processor

Multi-

Processors

Array

Processor

Multi-

Computers

UMA COMA NUMA MPP COW

Bus SwitchedCC-

NUMA

NC-

NUMAGrid

?

Para maiores exemplos acerca dos supercomputadores

(modelos, características, etc) visite o site

www.top500.org

Site Interessante