Você está na página 1de 5

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).

Você também pode gostar