Você está na página 1de 36

Arquitetura de Computadores

Computação Paralela

Prof. João Roberto de T Quadros


O que é
• Utilização de um arranjo de computadores ou múltiplos recursos computacionais
para resolver problemas complexos.

• Usa-se múltiplos arranjos de CPUs.

• Divisão dos problemas , mas execução simultânea.

• Alocação de Clusters e Grids.

• Paralelismo de instruções: Pipeline, superescalar.

• Paralelismo de execução: thread.

• Paralelismos de vários núcleos ou vários processadores

Prof. João Roberto de T Quadros


Paralelismo com Processamento de Multiplas CPUs
• CPUs Fortemente aclopadas –sistemas multicore os quais possuem mais de um
núcleo, CPU que estão contudo no mesmo hardware, portanto fortemente acoplados.

• As CPUs Fracamente aclopadas –computação em grid onde têm-se vários


computadores independentes , interligados por uma ou mais redes e que trabalham
colaborativamente para atender a um processamento específico.

Paralelismo por CHIP


• Multithreading - capacidade de um processo gerenciar o seu uso por mais de um
usuário ao mesmo tempo e gerenciar vários pedidos pelo mesmo usuário sem usar
várias cópias dos processos em execução no computador.

• Multicore - componente de computação único com duas ou mais unidades centrais


de processamento que atuam de forma independente (chamados "núcleos" ), que são
as unidades para ler e executar as instruções do programa .

Paralelismo a nível de instrução


• Baseado na execução simultânea de mais de uma instrução pela CPU, sendo
cada instrução em um estágio diferente do ciclo de instruções.

Prof. João Roberto de T Quadros


Áreas de utilização

Prof. João Roberto de T Quadros


Tipos de paralelismo

Prof. João Roberto de T Quadros


Classificação padrão (Flynn, 1970)

Prof. João Roberto de T Quadros


SISD (Single Instructions Single Data)

Um processador executando instruções em sequência (cada instrução leva 1


CI)

SIMD (Single Instructions Multiple Data)

Vários processadores executam a mesma instrução (em sincronia),


mas com valores diferentes (Vetorização)

Prof. João Roberto de T Quadros


MISD (Multiple Instructions Simple Data) -> pipeline.

MIMD (Multiple Instructions Multiple Data)

- Computadores paralelos.

- Várias instruções diferentes (ou iguais)sendo executadas ao mesmo tempo.

- Existe memória compartilhada nos casos de:


- MULTICORE (múltiplos núcleos -> Dua core, QuadCore, Octacore).
- SMP (Symetric Multi-processing), no qual há necessidade de
balanceamento de carga.

- Existe distribuição de memória nos casos de:


- Clusters.
- MPP (Massive Parelel-Processing).

Prof. João Roberto de T Quadros


Pipeline
• Possibilita reduzir o tempo total de execução de múltiplas tarefas.

• Processador com múltiplos estágios:

- Estágios executados em paralelo.


- Cada estágio dura o mesmo ciclo de clock.
- há instruções que não são exatamente sequenciais.
- Há conflitos gerados por instruções de salto ou CALLs.
- Em arranjos mais precisos, cada estágio tem seu próprio ACC.

• Maximiza o uso dos recursos e reduz o tempo global de execução


das tarefas.

Prof. João Roberto de T Quadros


Pipeline
Definição: Processo que subdivide uma instrução em etapas, sendo cada etapa
executada por uma parte da CPU, que é específica para resolver esta subdivisão.
Deste modo, é possível executar instruções diferentes de forma simultânea
Requisitos: Com arquitetura baseada na abordagem
1. Organização do hardware CISC – controle microprogramado

SC 1 a 9: Estágio “Leitura dos registradores


e operações na ULA”
SC 10 a Estágio “Escrita nos
15: registradores”
SC 16 a Estágio “Acesso à memória”
18:
SC 19 a Estágio “End da próxima
24: microinstrução”
O hardware precisa possuir partes
especializadas (estágios) que vão executar
etapas da instrução de forma separada.
10
Prof. João Roberto de T Quadros
Pipeline
Na arquitetura baseada na abordagem RISC – controle via hardware

Instruções de 1 palavra
Instruções especiais de
RISC acesso à memória
Decodificação “direta”
Execução em hardware

Apenas um Instruções Exceto ass instruções de acesso a


ciclo de acesso Do RI direto sempre levam o memória, todas as demais
à memória para execução mesmo tempo envolvem apenas escrita dos
de execução resultados em registradores (MR)

Prof. João Roberto de T Quadros


Pipeline
Principais estágios
Carregar instrução (IF)
Traz a instrução da memória para o processador, armazena em
IR (essa etapa também é chamada de Fetch de Instrução) e a
decodifica para execução no passo seguinte.

Carregar operandos (ID)


Traz os operandos da operação dos registradores para a ULA,
para que a operação seja realizada sobre eles, também chamada
de Fetch de Operandos.

Executar instruções (EX)


Executa operação lógica ou aritmética propriamente dita.

Escrever em memória (MEM)


Escreve o resultado da operação em memória, se necessário.

Escrever em registrador (WB)


Escreve o resultado da operação em um dos registradores, se
necessário.
Prof. João Roberto de T Quadros
Pipeline
Um processador escalar com pipeline de cinco estágios, capaz de lidar com duas
instruções por ciclo. Ele pode ter duas instruções em cada estágio, em um total de
dez instruções sendo executadas simultaneamente

Prof. João Roberto de T Quadros


Pipeline

Problemas do Pipeline (hazards):


O que acontece com operações de SALTO?
O que acontece se um dado buscado ainda não está disponível?

CISC demanda mais estágios que RISC para a pipeline.

Prof. João Roberto de T Quadros


Pipeline
O que acontece se um dado buscado ainda não
está disponível?

Hazard de dados
Instrução Ocorre quando algum operando
não está disponível no momento
da fase de execução (EM ROXO)
de uma instrução.

I1 B1 D1 E1 W1

I2 B2 D2 E2 W2

I3 B3 D3 E3 W3

1 2 3 4 5 6 7 Ciclos
Prof. João Roberto de T Quadros 15
Pipeline
Em geral, uma instrução MUL (CISC) precisa de 3 ciclos de relógio para executar
EX: ADD R2, R1
MUL R5, R3
ADD R4, R6
SHF R7 Hazard estrutural
Ocorre quando duas instruções
Instrução
disputam (necessitam) o uso de
algum hardware (por exemplo, a
memória) no mesmo instante de
tempo.

I1 B1 D1 E1 W1

I2 B2 D2 E2 W2

I3 B3 D3 E3 W3

I4 B4 D4 E4 W4

1 2 3 4 5 6 7 8 9 Ciclos

Prof. João Roberto de T Quadros 16


VETORIZAÇÃO

• Capacidade de realizar operações matemáticas em dois ou mais


componentes ao mesmo tempo.

• Número de operações por instrução varia de acordo com a instrução


SIMD utilizada.

• Podem existir um arranjo de vários estruturas pipeline (superescalar).

• Usam um estrutura de paralelismo chamada de granularidade (várias


ULAs, com vários piplines).

Prof. João Roberto de T Quadros


movl -40136(%ebp),%edi
VETORIZAÇÃO
fldl -8(%edi,%eax)

faddl -8(%esi,%eax)

movl -40104(%ebp),%edi

fstl (%edi,%eax)
for (i=1; i<=100; i=i+1) { faddl (%ecx,%eax)
A[i+1] = A[i] + B[i]; /* S1 */ incl %edx

B[i+1] = C[i] + D[i]; /* S2 */ fstpl (%ecx,%eax)

} addl $8,%eax

cmpl $999,%edx

jle .L75

Não há dependência entre S1 e S2. Se houver, então será uma


dependência cíclica e o loop não poderá ser paralelizável. Como
não há dependência então pode-se trocar a ordem de execução
das sentenças sem afetar o resultado de S2

Prof. João Roberto de T Quadros


VETORIZAÇÃO

- Nem todas linguagens produzem códigos que sejam tratados com vetorização;

- Além de tratar da parte de computação paralela, vetorização também trata de


controles de acesso à dispositivos;

- Útil na computação gráfica (usa CPUs à parte, muitas vezes);

- Trabalha com instruções assembly específicas;

- Implementada , com variações, em CPUs ou interfaces de múltiplos núcleos.

- Mais comuns nos chamados supercomputadores.

Prof. João Roberto de T Quadros


VETORIZAÇÃO

S4
ALU

ALU
S1 S2 S3 S5
Intruction
Intruction Operand Write back
decode LOAD
fetch unit fetch unit unit
unit

STORE

Floating
point

Prof. João Roberto de T Quadros


VETORIZAÇÃO

Processadores Vetoriais

Prof. João Roberto de T Quadros


VETORIZAÇÃO

Processadores Vetoriais

• Os processadores vetoriais são arquiteturas pipelined do tipo SIMD, ou seja, uma única
instrução opera sobre vários dados, no caso, um vetor.

• Um processador vetorial possui instruções para operar em vetores: um conjunto linear


de valores.

• Uma operação vetorial típica pode adicionar dois vetores com 64 elementos em notação
ponto flutuante para obter um único vetor de resultado com 64 elementos.

• Uma instrução vetorial é equivalente a um “loop” inteiro, onde cada iteração computa
um dos 64 elementos do resultado, atualiza os índices e retorna para o início.

Prof. João Roberto de T Quadros


VETORIZAÇÃO

Processadores Vetoriais

Podem ser de dois tipos:

Memória-Memória
Arquiteturas mais antigas

Todas as operações vetoriais manipulam operandos na memória

Registrador-Registrador

Arquitetura usadas em todos os processadores vetoriais mais recentes

Todas as operações vetoriais, com exceção de load e store, trabalham com


registradores

Prof. João Roberto de T Quadros


Clusters

Um cluster é um tipo de sistema de processamento paralelo que consiste de uma


coleção de computadores independentes interconectados através de uma rede,
trabalhando cooperativamente como um único e integrado recurso
computacional.

Características:

• Rede mais rápida e próxima do que uma rede local;

• Protocolos de comunicação de baixa latência;

• Conexão mais flexível que um SMP.

Prof. João Roberto de T Quadros


Clusters

• CPUs fracamente acopladas, que trocam de mensagens para execução de uma


determinada tarefa.

• Usa servidores (nós) para implementar processamento paralelo.

• Conjunto de computadores que são conectados em rede e se comunicam,


através de um sistema operacional distribuído, trabalhando como se fossem
uma única máquina.
• As técnicas utilizadas em paralelismo com Clusters são :
• Cluster ativo-ativo um único Cluster com balanceamento de carga, onde os
nósdividem as requisições de processamento (ativo/ativo)

• Cluster ativo-passivo: Existe um cluster de alta disponibilidade (chamados de


"high-availability clusters" ou "failover clusters"), no qual dois servidores (nós
principais) são usados, com a função do segundo nó principal assumir a posição do
primeiro em caso de falhas.

Prof. João Roberto de T Quadros


Clusters

3 tipos de clusters:

• Tolerante à falhas: dois ou mais computadores conectados em rede com um


software de monitoração (heart-beat) instalado entre os dois.

• Balanceamento de Carga: utilizam o conceito de, quando um pedido chega para um


servidor Web, o cluster verifica qual a máquina menos carregada e envia o pedido
para esta máquina.

• Computação de Alto Desempenho: as máquinas são configuradas especialmente


para oferecer o maior desempenho possível. Este é o que faz mais uso de threads

Prof. João Roberto de T Quadros


Clusters

Clusters: Arquitetura básica

Prof. João Roberto de T Quadros


GRADES (GRIDS)

• Sistema paralelo e distribuído que gerencia o compartilhamento,


seleção e agregação de recursos computacionais, que podem ou não
funcionar de forma autônoma;

• Os recursos podem estar geográfica e dinamicamente distribuídos;

• Execução de cada recurso depende do tempo e disponibilidade;

• Trata da capacidade, custo e requerimentos segundo critérios de QoS.

Prof. João Roberto de T Quadros


GRADES (GRIDS)

Clusters x Grid

• Clusters tem Gerenciadores de recursos centralizado

• Grid tem gerenciador de recursos para cada participante autônomo

Prof. João Roberto de T Quadros


GRADES (GRIDS)

- Tratamento de recursos (memória e CPU) por escalonamento;

- Define o que cada recurso irá realizar;

- Divide as aplicações por vários recursos;

- Divisão por demanda e prioridade.

Prof. João Roberto de T Quadros


Grades

Prof. João Roberto de T Quadros


Comparações das arquiteturas

Clusters

Prof. João Roberto de T Quadros


Exemplo de ambiente de computação paralela com mais de 100 nós.

Prof. João Roberto de T Quadros


Parâmetros de medição de Sistemas Paralelos

Speedup - Mede melhora do desempenho.


Eficiência – Mede capacidade de cada parte.
Redundância - Mede o aumento da carga pelos processadores.
Utilização - Mede o quanto cada recurso é utilizado.
Qualidade – Mede se o sistema está adequado a rodar em
computação paralela.

Multicore : Multithreading
Escalonador : Vetorização/pipeline
Grid : Hibrido

Prof. João Roberto de T Quadros


Técnicas de software utilizadas:

• Threads - Uma thread ou linha de execução ou ainda fio de execução é a menor seqüência
de instruções programadas que podem ser gerenciados de forma independente por um sistema
operacional.

• Processos filhos (fork)- É uma técnica de cria um novo processo através da duplicação de um
processo existente. O novo processo, conhecido como filho, é uma cópia exata do processo
de chamada, conhecido como o pai. O processo filho tem um conjunto próprio de recursos de
memória, PID, tempos de CPU, entre outros atributos como bloqueios.

Prof. João Roberto de T Quadros


Perguntas

Prof. João Roberto de T Quadros

Você também pode gostar