Buscar

Tipos de Paralelismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Multithreading no chip 
Todas as CPU modernas, com paralelismo (pipeline), têm um 
problema inerente: quando uma referência à memória encontra 
uma ausência das caches de nível I e nível 2, há uma longa 
espera até que a palavra requisitada (e sua linha de cache 
associada) sejam carregadas na cache, portanto, o pipeline para. 
Uma abordagem para lidar com essa situação, denominada 
multithreading no chip, permite que a CPU gerencie múltiplos 
threads de controle ao mesmo tempo em uma tentativa de 
mascarar essas protelações. Ou seja, se o thread 1 estiver 
bloqueado, a CPU ainda tem uma chance de executar o thread 
2, de modo a manter o hardware totalmente ocupado. 
 
Multiprocessadores com um único chip 
Embora o multithreading ofereça ganhos em desempenho 
significativos por um custo modesto, para algumas aplicações é 
preciso um ganho em desempenho muito maior do que ele pode 
oferecer. Para conseguir esse desempenho estão sendo 
desenvolvidos chips multiprocessadores. Há duas áreas de 
interesse para esses chips que contêm duas ou mais CPUs: 
servidores de alta tecnologia e equipamentos eletrônicos de 
consumo. 
 
Coprocessadores 
Com a adição de um segundo processador especializado os 
computadores podem ganhar velocidade. Há uma variedade 
desses coprocessadores, de pequenos a grandes. Nos 
mainframes IBM 360 e em todos os seus sucessores, existem 
canais independentes de E/S para fazer entrada/saída. De modo 
semelhante, o CDC 6600 tinha dez processadores independentes 
para efetuar E/S. Gráficos e aritmética de ponto flutuante são 
outras áreas em que são usados coprocessadores. Até mesmo 
um chip DMA pode ser visto como um coprocessador. Em alguns 
casos, a CPU dá ao coprocessador uma instrução ou um conjunto 
de instruções e ordena que ele as execute; em outros casos, ele 
é mais independente e funciona em grande parte por si só. 
 
Em termos físicos, coprocessadores podem variar de um 
gabinete separado (os canais de E/S do 360) a uma placa de 
expansão (processadores de rede) ou uma área no chip principal 
(ponto flutuante). Em todos os casos, o que os distingue é o fato 
de que algum outro processador é o principal e que os 
coprocessadores estão lá para ajudá-lo. Três áreas são 
apresentadas como principais na possibilidade de aumento de 
velocidade: processamento em rede, multimídia e criptografia. 
 
Processadores de rede 
Grande parte dos computadores de hoje estão conectados a uma 
rede ou à internet. Como resultado desse progresso tecnológico 
em hardware de rede, as redes agora são tão rápidas que ficou 
cada vez mais difícil processar em software todos os dados que 
entram e que saem. Por conseguinte, foram desenvolvidos 
processadores especiais de rede para lidar com o tráfego e 
muitos computadores de alta tecnologia agora têm um desses 
processadores. 
 
Processadores de mídia 
Mais uma área na qual coprocessadores são usados é o 
tratamento de processamento gráfico de alta resolução, como 
renderização 3D. CPUs comuns não são muito boas nas 
computações maciças necessárias para processar as grandes 
quantidades de dados requeridas nessas aplicações. Por essa 
razão, alguns PCs atuais e a maioria dos PCs futuros serão 
equipados com GPUs (Graphics Processing Units – 
unidades de processamento gráfico) para os quais passarão 
grandes porções do processamento geral. 
 
Criptoprocessadores 
Outra área na qual os coprocessadores são populares é 
segurança, em especial segurança em redes. Quando uma 
conexão for estabelecida entre um cliente e um servidor, em 
muitos casos eles devem primeiro se autenticar mutuamente. 
Então, é preciso estabelecer uma conexão segura e criptografada 
entre eles, para que os dados sejam transferidos com segurança, 
frustrando quaisquer bisbilhoteiros que poderiam estar invadindo 
a linha. 
 
O problema da segurança é que, para consegui-la, é preciso usar 
criptografia, a qual faz uso muito intensivo de computação. Há 
dois tipos gerais de criptografia, denominados criptografia de 
chave simétrica e criptografia de chave pública. A primeira 
é baseada na mistura completa de bits, algo equivalente a jogar 
uma mensagem dentro de um liquidificador. A última é baseada 
em multiplicação e exponenciação de grandes números (por 
exemplo, 1.024 bits) e consome enormes quantidades de tempo. 
 
Para tratar de computação necessária para criptografar os dados 
com segurança para transmissão ou armazenamento, várias 
empresas produziram coprocessadores criptográficos, às vezes 
na forma de placas de expansão para barramento PCI. Esses 
coprocessadores têm um hardware especial que os habilita a 
executar a criptografia necessária muito mais rápido do que 
poderia uma CPU comum. Infelizmente, uma discussão 
detalhada do modo de funcionamento dos Criptoprocessadores 
exigiria, em primeiro lugar, explicar muita coisa sobre criptografia 
em si, o que está fora do escopo desse conteúdo. 
 
 
Multiprocessadores 
Um computador paralelo no qual todas as CPUs compartilham 
uma memória comum. Todos os processos que funcionam juntos 
em um multiprocessador podem compartilhar um púnico espaço 
de endereço virtual mapeado para a memória comum. Qualquer 
processo pode LER ou ESCREVER uma palavra de memória 
apenas executando uma instrução LOAD ou STORE. Nada mais 
é preciso. O Hardware faz todo resto. Dois processos podem se 
comunicar pelo simples ato de um deles escrever dados para a 
memória e o outro ler. A Capacidade de dois (ou mais) processos 
se comunicarem apenas lendo e escrevendo a memória é a razão 
da popularidade dos multiprocessadores. É um modelo de fácil 
entendimento pelos programadores e é aplicável a uma ampla 
faixa de problemas. 
Pode ser de dois tipos: 
 
Multiprocessadores de memória compartilhada 
Paralelismo pode ser acrescentado a chips únicos e a sistemas 
individuais adicionando um coprocessador e múltiplas CPUs 
totalmente desenvolvidas podem ser combinadas para formar 
sistemas maiores. Sistemas com várias CPUs podem ser divididos 
em multiprocessadores e multicomputadores. 
 
Multiprocessadores versus Multicomputadores 
Em qualquer sistema de computação paralelo, CPUs que 
trabalham em partes diferentes do mesmo serviço devem se 
comunicar, umas com as outras para trocar informações. O modo 
exato como elas devem fazer isso é assunto de muito debate na 
comunidade da arquitetura de computadores. Dois projetos 
distintos foram propostos e implementados: 
multiprocessadores e multicomputadores. A diferença 
fundamental entre os dois é a presença ou ausência de memória 
compartilhada. Essa diferença interfere no modo como são 
projetados, construídos e programados, bem como em sua 
escala e preço. 
 
 
Multicomputadores 
Arquitetura paralela em que todas CPUs possuem sua própria 
memória privada, acessível somente por ela e nenhuma outra. 
Também denominado sistema de memória distribuída. O 
aspecto fundamental que distingue um multicomputador de 
multiprocessadores é que a CPU de um multicomputador tem 
sua própria memória local privada, a qual pode acessar apenas 
executando LOAD e STORE. Assim, multiprocessadores têm um 
único espaço de endereço físico compartilhado por todas as 
CPUs, ao passo que multicomputadores têm um espaço de 
endereço físico para cada CPU. 
 
Uma vez que as CPUs em um multicomputador não podem se 
comunicar apenas lendo e escrevendo na memória comum, elas 
precisam de um mecanismo de comunicação diferente. O que 
elas fazem é passar mensagens uma para outra usando a rede 
de interconexão. Entre os exemplos de multicomputadores 
podemos citar IBM BlueGene/P o Red Storm e o cluster Google. 
 
O exemplo IBM BlueGene/P é descrito no artigo 
http://www.ic.unicamp.br/~ducatte/mo401/1s2006/T2/057615-
T.pdf 
 
Comparação entre IBM BlueGene/P e Red Storm 
 
(TANENBAUM, Andrew S. Organização Estruturada de 
Computadores. São Paulo:Pearson Prentice Hall: 2013, 6° 
Edição).

Outros materiais