Você está na página 1de 17

UNIVERSIDADE TIRADENTES – UNIT

ANNA CAROLINA SOUZA BISPO

ELLÊM RAYSSA DA SILVA CLAUDINO

YAN CARLOS BARBOSA CONCEIÇÃO

PROCESSAMENTO PARALELO

ARACAJU SE

2022
SUMÁRIO

1. INTRODUÇÃO …………………………………………..………………………...03
2. OBJETIVOS ……………………………………………………………………..…04
2.1 Objetivo Geral ……………………………………………………………...….04
2.2 Objetivos Específicos …………………………………………………………04
3. REFERENCIAL TEÓRICO …………………………………………………...…..05
4. PROCESSAMENTO PARALELO………………………………………….…..…08
4.1 Organização de Múltiplos Processadores……………………………….….08
4.2 Multiprocessadores Simétricos…………………………………….…….…..09
4.3 Coerência de Cache e o Protocolo MESI…………………………………...11
4.4 Clusters………………………………………………………………………....12
4.5 Acesso Não-Uniforme à Memória (NUMA)...............................................13
4.6 Computação Vetorial……………………………………………………….....14
5. CONCLUSÃO …………………………………………………………………...…16
6. BIBLIOGRAFIA ………………………………………………………………..….17
1. INTRODUÇÃO

A computação paralela pode ser usada com eficácia para tarefas que
envolvem um grande número de cálculos, têm restrições de tempo e podem
ser divididas em várias tarefas menores [4].
Na prática, consiste no uso simultâneo de várias unidades de processamento
(CPUs) para realizar trabalhos computacionais. Utilizando essa técnica, é
possível ultrapassar as limitações tecnológicas de uma máquina, aumentando
sua velocidade e poder de processamento. O processamento paralelo é o
processamento simultâneo da mesma tarefa em dois ou mais
microprocessadores para obter resultados mais rápidos. Os recursos do
computador podem incluir um único computador com vários processadores,
ou vários computadores conectados por uma rede, ou uma combinação de
ambos. Os processadores acessam os dados por meio da memória
compartilhada. Alguns sistemas de processamento paralelo de
supercomputadores têm centenas de milhares de microprocessadores. Com
a ajuda do processamento paralelo, vários cálculos podem ser executados de
uma vez, reduzindo o tempo necessário para concluir um projeto [4].
Podemos observar na figura 1 o Processamento paralelo usando Python.

Figura 1: Processamento paralelo usando Python.


2. OBJETIVOS

2.1 Objetivo Geral

Apresentar os aspectos principais do processamento paralelo

2.2 Objetivos Específicos

● Demonstrar tipos de sistemas;


● Descrever as soluções por softwares e hardwares;
● Apresentar vantagens e desvantagens;
● Abordar o processamento Vetorial.
3. REFERENCIAL TEÓRICO

O que é?
Processamento paralelo é uma forma mais eficiente de trabalhar
informações, ele tem ênfase na exploração de eventos simultâneos na
execução de um programa. Na prática, consiste no uso simultâneo de várias
unidades de processamento (CPUs) para realizar trabalhos computacionais.
Utilizando essa técnica, é possível ultrapassar as limitações tecnológicas de
uma máquina, aumentando sua velocidade e poder de processamento.
A organização dos hardwares (peças físicas) pode se dar das seguintes
formas:

● multicomputadores: cada processador possui sua própria memória local;


● multiprocessadores: os processadores compartilham memória entre si.

Quanto aos softwares (aplicativos) que interligam ou utilizam várias CPUs,


eles podem ser configurados de dois modos:

● fracamente acoplados: o software funciona como uma interface entre o


sistema e os humanos;
● fortemente acoplados: às máquinas e os usuários são essencialmente
independentes, eles interagem de forma limitada quando necessária, como
no compartilhamento de discos e impressoras.
Como é o seu funcionamento?
O uso de múltiplas CPUs permite que os computadores resolvem problemas
matemáticos da seguinte forma:

● um problema é quebrado em diversas partes menores;


● cada pedaço é dividido em uma série de instruções ainda menores;
● Elas são distribuídas entre as diversas CPUs para serem resolvidas
concomitantemente.

Seguindo essas etapas, a velocidade de resolução de problemas será


aprimorada exponencialmente. Essa estratégia é uma grande aliada nas
operações que acumulam uma grande quantidade de dados e que precisam
ser trabalhadas rapidamente. Muitas pessoas pensam que um computador
com vários processadores são somente aqueles supercomputadores
excepcionalmente caros e de difícil aquisição. Entretanto, essa tecnologia se
encontra presente em computadores residenciais há bastante tempo. Se você
observar com atenção, computadores trazem indicadores como “dual core”
ou “quad core” em suas configurações, isso significa que há uso de múltiplas
CPUs e, portanto, eles utilizam o sistema de multiprocessamento.

Qual a finalidade dessa tecnologia?


Nos computadores das primeiras gerações, era possível executar somente
um programa por vez, para aumentar a performance desses processadores e
permitir que dois aplicativos trabalhassem simultaneamente, foram
desenvolvidas formas de processamento paralelo. Na época, a técnica
consistia na multiprogramação, vários programas utilizavam o processador
por um curto período de tempo até que ambos fossem finalizados. Isso era
amplamente utilizado por sua forma simples de execução, porém não supria
a necessidade das empresas, pois não acelerava o processamento de dados.
Com o desenvolvimento da tecnologia, surge a inovação do
multiprocessamento, que consiste no uso de dois ou mais processadores que
compartilham uma carga de trabalho. Os computadores que realizavam
processamento paralelo podiam ser até 100 vezes mais rápidos que os
demais. Entretanto, para avançar sobre o tema, é preciso entender a
diferença entre o sistema de multiprocessamento e o processamento
distribuído.

A organização dos hardwares (peças físicas) pode se dar das seguintes


formas:

● multicomputadores: cada processador possui sua própria memória local;


● multiprocessadores: os processadores compartilham memória entre si.

Quanto aos softwares (aplicativos) que interligam ou utilizam várias CPUs,


eles podem ser configurados de dois modos:

● fracamente acoplados: o software funciona como uma interface entre o


sistema e os humanos;
● fortemente acoplados: às máquinas e os usuários são essencialmente
independentes, eles interagem de forma limitada quando necessária, como
no compartilhamento de discos e impressoras.
4. PROCESSAMENTO PARALELO
4.1 Organização de Múltiplos Processadores

A taxonomia introduzida por Flynn (Flynn, 1972) é ainda a forma mais comum
de classificar sistemas de processamento paralelo. Na figura 2 podemos
observar arquiteturas com processadores paralelos.
Flynn propôs as seguintes categorias de sistemas de computação:

● Única instrução, único dado (SISO - single instruction, single data): um


único processador executa uma única sequência de instruções,
usando dados armazenados em uma única memória. Um sistema
uniprocessador pertence a essa categoria.

● Única instrução, múltiplos dados (SIMD - single instruction, multiple


data): uma única instrução de máquina controla a execução simultânea
de um certo número de elementos de processamento, em passos de
execução. Cada elemento de processamento tem uma memória de
dados a ele associada, de modo que cada instrução é executada sobre
um conjunto de dados diferente em cada processador. Os
processadores vetoriais e matriciais pertencem a essa categoria.
● Múltiplas instruções, único dado (MISO - multiple instruction, single
data): uma sequência de dados é transmitida para um conjunto de
processadores, cada um dos quais executa uma sequência de
instruções diferente. Essa estrutura nunca foi implementada.
● Múltiplas instruções, múltiplos dados (MIMO): um conjunto de
processadores executam simultaneamente sequências diferentes de
instruções, sobre conjuntos de dados distintos. Os SMPs, clusters e
sistemas NUMA pertencem a essa categoria.
Figura 2: taxonomia de arquiteturas com processadores paralelos.

4.2 Multiprocessadores Simétricos


Até muito recentemente, quase todos os computadores pessoais e a maioria
das estações de trabalho continham um único microprocessador de uso
geral. Com a crescente demanda por desempenho e a contínua queda do
custo dos microprocessadores, os fabricantes introduziram sistemas 5MP. A
denominação 5MP refere-se tanto à arquitetura de hardware do computador
quanto ao comportamento do sistema operacional que reflete essa
arquitetura. Um 5MP pode ser definido como um sistema de computador
independente, com as seguintes características:
1. Existem dois ou mais processadores similares, com capacidade de
computação comparável.
2. Esses processadores compartilham a mesma memória principal e
facilidades de EIS e são conectados entre si por meio de um barramento ou
de outro esquema de conexão interno, de forma que o tempo de acesso à
memória é aproximadamente o mesmo para cada processador.
3. Todos os processadores compartilham acesso aos dispositivos de EIS,
seja por meio de canais comuns ou de canais distintos que fornecem
caminhos para os mesmos dispositivos.
4. Todos os processadores podem desempenhar as mesmas funções (daí o
termo simétrico).
5. O sistema é controlado por um sistema operacional integrado, que provê
interação entre os processadores e seus programas, em nível de tarefas, de
arquivos e de dados. Na figura abaixo podemos observar organizações
alternativas de computadores.

Figura 3: Organizações alternativas de computadores.

Os processadores podem comunicar-se entre si por meio da memória


(mensagens e informações de estado são armazenadas em áreas comuns).
É também possível a troca direta de sinais entre os processadores. A
memória frequentemente é organizada de forma que podem ser efetuados
acessos simultâneos a blocos separados de memória. Em algumas
configurações, cada processador pode também ter, além dos recursos
compartilhados, sua própria memória principal e canais de EI S privados. A
organização de um sistema multiprocessador pode ser classificada do
seguinte modo:
● Tempo compartilhado ou barramento comum;
● Memória com múltiplas portas;
● Unidade de controle central.

4.3 Coerência de Cache e o Protocolo MESI


Nos sistemas multiprocessadores modernos, é comum o uso de um ou dois
níveis de cache associados a cada processador. Essa organização é
essencial para obter um desempenho razoável. Entretanto, ela cria um
problema conhecido como problema de coerência de cache. A essência
desse problema é a seguinte: podem existir simultaneamente múltiplas cópias
do mesmo dado em diferentes caches; se os processadores puderem
atualizar suas cópias livremente, o resultado será uma imagem da memória
incoerente.
Escrita de volta (write back): as operações de escrita usualmente são
efetuadas apenas sobre a cache. A memória principal somente é atualizada
quando a linha correspondente é removida da cache.
Escrita direta (write through): toda operação de escrita é feita na memória
principal, assim como na cache, assegurando que a memória principal
sempre seja mantida válida [4].
O objetivo de qualquer protocolo de coerência de cache é permitir que
variáveis locais usadas mais recentemente sejam armazenadas na cache
apropriada e permaneçam lá por várias operações de leitura e escrita,
enquanto o protocolo é usado para manter a coerência de variáveis
compartilhadas, que podem estar presentes em múltiplas caches
simultaneamente. As abordagens para coerência de cache geralmente são
divididas em abordagens por software ou por hardware. Algumas
implementações adotam uma estratégia que envolve elementos tanto de
hardware como de software. Mesmo assim, a classificação em abordagens
por software ou por hardware permanece instrutiva e é usada comumente
nas descrições de estratégias de coerência de cache [3].
4.4 Clusters
Uma das áreas mais novas e promissoras de projeto de sistemas de
computação é a de agregados ou aglomerados de computadores ou,
simplesmente, clusters. A organização de clusters constitui uma alternativa
para os multiprocessadores simétricos (SMP), como abordagem para prover
alto desempenho e alta disponibilidade, e é particularmente atrativa para
aplicações baseadas em servidores. Podemos definir um cluster como um
grupo de computadores completos interconectados, trabalhando juntos, como
um recurso de computação unificado, que cria a ilusão de constituir uma
única máquina. O termo computador completo significa um sistema que pode
operar por si próprio, independentemente do cluster; na literatura, cada
computador componente do cluster é usualmente denominado um nó. Brewer
(1997) relaciona quatro benefícios que podem ser obtidos com a organização
de clusters [4].
Esses benefícios podem também ser vistos como objetivos ou requisitos de
projeto desse tipo de organização:
Escalabilidade absoluta: é possível criar clusters muito grandes, cuja
capacidade de computação ultrapassa várias vezes a capacidade da maior
máquina individual. Um cluster pode ser constituído de dezenas de máquinas,
sendo cada uma um multiprocessador.
Escalabilidade incremental: um cluster é configurado de maneira que seja
possível adicionar novos sistemas, expandindo-o de forma incremental.
Desse modo, um usuário pode começar com um sistema mais modesto e
expandi-lo à medida que
Figura 4: Métodos de organização de clusters: benefícios e limitações.

4.5 Acesso Não-Uniforme à Memória (NUMA)


Em termos de produtos comerciais, as duas abordagens mais comuns para
prover sistemas multiprocessadores para suportar aplicações são os clusters
e os SMPs. Outra abordagem, conhecida como acesso não-uniforme à
memória (NUMA), tem sido objeto de pesquisa há alguns anos e,
recentemente, alguns produtos comerciais NUMA foram lançados. Antes de
prosseguir, devemos definir alguns termos frequentemente encontrados na
literatura referente a sistemas NUMA. Acesso uniforme à memória (UMA):
todos os processadores têm acesso a todas as partes da memória principal,
via operações de carga e armazenamento. O tempo de acesso à memória
por um processador é o mesmo para todas as regiões da memória [4].
Os tempos de acesso experimentados por diferentes processadores também
são iguais. A organização SMP discutida na Seção 16.2 é um sistema UMA.
Acesso não-uniforme à memória (NUMA): todos os processadores têm
acesso a todas as partes da memória principal, via operações de carga e
armazenamento. O tempo de acesso à memória por um processador difere
conforme a região de memória que está sendo usada. Isso vale para todos os
processadores; entretanto, as regiões de memória para as quais o acesso é
mais lento ou mais rápido são diferentes para diferentes processadores.
NUMA com coerência de cache (CC-NUMA): um sistema NUMA no qual é
mantida coerência de cache entre as memórias cache dos vários
processadores [4].
A principal vantagem de um sistema CC-NUMA é que ele pode disponibilizar
desempenho efetivo em níveis de paralelismo mais altos que o fornecido por
sistemas SMP, sem requerer mudanças substanciais no software. Com
múltiplos nós NUMA, o tráfego no barramento em qualquer nó individual é
limitado à demanda que esse barramento é capaz de tratar. Porém, se houver
grande número de acessos a posições de memória localizadas em nós
remotos, o desempenho cairá substancialmente. Entretanto, existem razões
para acreditar que essa queda de desempenho pode ser evitada.
Primeiramente, o uso de caches LI e L2 é projetado para minimizar todos os
acessos à memória principal, inclusive acessos remotos. Se a maioria dos
programas tiver boa localidade temporal o número de acessos remotos não
deverá ser excessivo. Em segundo lugar, se os programas tiverem boa
localidade espacial, e se é usada memória virtual, então os dados requeridos
por uma aplicação deverão residir em um número limitado de páginas usadas
frequentemente, que podem ser inicialmente carregadas na memória local do
processador que está executando a aplicação [4].

4.6 Computação Vetorial


A idéia básica do projeto de um supercomputador ou de um processador
matricial é reconhecer que sua principal tarefa é efetuar operações
aritméticas sobre vetores ou matrizes de números de ponto flutuante. Em um
computador de propósito geral, isso pode requerer iteração sobre cada
elemento do vetor ou matriz. Por exemplo, considere dois vetores (matrizes
unidimensionais) de números, A e B. Desejamos somar esses dois vetores e
armazenar o resultado em um vetor C. No exemplo da Figura 5, isso requer
seis edições separadas. Como poderíamos aumentar a velocidade de
computação? A resposta é introduzir alguma forma de paralelismo.
A idéia básica do projeto de um supercomputador ou de um processador
matricial é reconhecer que sua principal tarefa é efetuar operações
aritméticas sobre vetores ou matrizes de números de ponto flutuante. Em um
computador de propósito geral, isso pode requerer iteração sobre cada
elemento do vetor ou matriz. Por exemplo, considere dois vetores (matrizes
unidimensionais) de números, A e B. Desejamos somar esses dois vetores e
armazenar o resultado em um vetor C. No exemplo da Figura 5, isso requer
seis edições separadas. Como poderíamos aumentar a velocidade de
computação? A resposta é introduzir alguma forma de paralelismo [4].

Figura 5: Abordagens para computação vetorial.


6. CONCLUSÃO

Com esse relatório pudemos notar que o Processamento paralelo é uma forma mais
eficiente de trabalhar informações, ele tem ênfase na exploração de eventos
simultâneos na execução de um programa. Na prática, consiste no uso simultâneo
de várias unidades de processamento (CPUs) para realizar trabalhos
computacionais. A computação paralela nas diversas áreas nas quais a mesma é
aplicável, ainda é uma ciência em nascimento, devido a dois fatos principais: a
recente disponibilidade dos computadores paralelos e multiplicidade de conceitos
que envolvem a computação paralela.
7. BIBLIOGRAFIA

[1] Conceitos de Big Data: o que é processamento paralelo? - TD | O ecossistema


da Transformação Digital (transformacaodigital.com)

[2] texto-processamento-paralelo.pdf (sistemas24horas.com.br)

[3] O que é processamento paralelo? – Computador – Tecnoblog

[4] O que é processamento paralelo? - [ Ver a Resposta 2022 ] (oque-e.com)

Você também pode gostar