Sei sulla pagina 1di 45

9

Multiprocessadores e Clusters
Existem, no mar, peixes mais finos do que os que j foram pescados.
Provrbio irlands

9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 9.11 9.12

Introduo

9-4 9-7 9-9

Programando multiprocessadores

Multiprocessadores conectados por um nico barramento Multiprocessadores conectados por uma rede Clusters 9-21 9-22 9-17

Topologias de rede

Multiprocessadores no interior de um chip e multithreading Vida real: o cluster de PCs do Google Falcias e armadilhas 9-32 Comentrios finais 9-34 9-28

9-25

Perspectiva histrica e leitura adicional 9-38 Exerccios 9-44

Os cinco componentes clssicos de um computador

Computador

Computador

Rede

Computador

Computador

9-4

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

H muito tempo, os arquitetos de computadores tm buscado o El Dorado do projeto de computadores: criar computadores poderosos simplesmente conectando muitos computadores menores existentes. Essa viso dourada a origem dos multiprocessadores. O cliente pede tantos processadores quantos seu oramento permitir e recebe uma quantidade correspondente de desempenho. Portanto, os multiprocessadores podem ser escalveis: o hardware e o software so projetados para serem vendidos com um nmero varivel de processadores, com algumas mquinas variando por um fator de Edgar Allan Poe, mais de 50. Como o software escalvel, alguns multiprocessadores podem suportar operar mesmo Eldorado, com a ocorrncia de quebras no hardware; ou seja, se um nico processador falhar em um multiprostanza 4, 1849 cessador com n processadores, o sistema fornece servio continuado com n 1 processadores. Finalmente, os multiprocessadores possuem o desempenho absoluto mais alto mais rpido do que o unimultiprocessador processador mais rpido que existe. Processadores em paralelo com um nico A boa notcia que o multiprocessador estabeleceu uma cabea de ponte. Tendo em mente que o endereo compartilhado microprocessador hoje o processador mais econmico, consenso que se voc no pode tratar um cluster Um conjunto workload em um microprocessador, ento, um multiprocessador ou um cluster composto de muitos microprocessadores mais econmico do que construir um processador de alto desempenho por de computadores conectados por uma meio de uma tecnologia extica. H muitas aplicaes cientficas em que extremamente difcil farede local (LAN) que zer progresso com um nico microprocessador: previso de tempo, cruzamento de protenas e mesfunciona como um mo pesquisa de inteligncia extraterrestre. Portanto, a Figura 9.1.1 mostra que a indstria da compunico e grande tao de alto desempenho depende dos multiprocessadores e dos clusters. multiprocessador.

Sobre as montanhas da lua, pelo vale das sombras, cavalgue, cavalgue corajosamente. Respondeu a sombra: Se voc procurar o Eldorado!

9.1

Introduo

SIMD (Single Instruction Multiple Data) 500 Cluster (rede de estaes de trabalho) Cluster (rede de SMPs)

400

300 MPPs (Massively Parallel Processors) SMPs (Shared Memory Multiprocessors)


93 93 94 94 95 95 96 96 97 97 98 98 99 99 00

200

100

Uniprocessadores FIGURA 9.1.1 Representao dos primeiros 500 supercomputadores em uma dcada. Os nmeros para 1993/1998/2003 so 93/0/0 para uniprocessadores, 251/175/0 para SMPs, 121/310/165 para MPPs, 35/0/0 para SIMDs, 0/14/127 para clusters de SMPs e 0/1/208 para clusters de estaes de trabalho. Observe que nos ltimos cinco anos, os uniprocessadores, os SMPs e os SIMDs desapareceram, enquanto os clusters de vrios tipos cresceram de 3% para 67%. Alm disso, a maioria dos MPPs na lista parece semelhante aos clusters. O desempenho medido como a velocidade de execuo do Linpack, que resolve um denso sistema de equaes lineares. Essa lista em www.top500.org atualizada duas vezes por ano. Esse site usa o termo constelao para se referir a uma rede de servidores SMP e o termo cluster para indicar um cluster de PCs ou estaes de trabalho, que podem ser uniprocessadores ou pequenos SMPs. Essa vaga distino no usada neste texto; neste livro, um cluster uma coleo de computadores conectados por uma rede local padro usada para uma tarefa comum.

9.1

Introduo

9-5

1.000.000 Cluster SMP

Transaes TPC-C por minuto

100.000

10.000 1 10 100 1.000

Nmero de processadores FIGURA 9.1.2 Desempenho nmero de processadores para TPC-C em uma escala log-log. Essas representaes so de computadores executando a verso 5 do benchmark TPC-C. Repare que mesmo o menor computador possui 2 processadores. Os clusters obtm alto desempenho escalando-os. Eles podem sustentar 2.500 a 3.800 transaes por minuto por processador de 32 a 280 processadores. Os clusters no s possuem a maior taxa tpmC, mas eles apresentam uma relao custo-desempenho ($/tpmC) melhor do que qualquer SMP com um custo total de mais de US$1 sincronizao O milho. processo de coordenar o comportamento de dois ou mais processos, que Tambm existem aplicaes fora das cincias que so complexas: mecanismos de busca, servidopodem estar sendo executados em res Web e bancos de dados. Por exemplo, a Figura 9.1.2 ilustra que a indstria de bancos de dados foi diferentes padronizada em multiprocessadores e clusters. Conseqentemente, eles agora incorporam um merprocessadores.

cado significativo. Como os processadores operando em paralelo normalmente compartilham dados, eles tambm lock Um dispositivo de sincronizao precisam coordenar quando esto operando em dados compartilhados; caso contrrio, um processaque permite acesso dor poderia comear a processar dados antes que outro tenha acabado de process-los. Essa coordea dados apenas a nao chamada sincroni ao . Quando o compartilhamento suportado por um nico espao de um processador de endereamento, precisa haver um mecanismo separado para sincronizao. Um mtodo usar um cada vez. loc (bloqueio): apenas um processador de cada vez pode adquirir o lock, e outros processadores interessados em compartilhar dados precisam esperar at que o processador original desbloqueie a vamemria compartilhada rivel. O lock descrito na Seo 9.3. Uma memria para um Os multiprocessadores e clusters comerciais normalmente definem alto desempenho como alta processador paralelo vazo para tarefas independentes. Essa definio est em contraste com executar uma nica tarefa com um nico espao de endereamento, em mltiplos processadores simultaneamente. envolvendo Eis algumas perguntas que norteiam os projetos de multiprocessadores e clusters:
n n n

Como os processadores paralelos compartilham dados? Como os processadores paralelos se coordenam? Quantos processadores?

comunicao implcita com loads e stores.

As respostas primeira pergunta fazem parte de dois campos principais. Os processadores com um nico espao de endereamento, algumas vezes chamados de processadores de memria compartilhada, oferecem ao programador um nico espao de endereamento de memria que todos os processadores compartilham. Os processadores se comunicam por meio de variveis compartilhadas na memria, com todos os processadores sendo capazes de acessar qualquer local da memria por meio de loads e stores.

SMP (Symmetric Multiprocessors) ou UMA (Uniform Memory Access) Um multiprocessador em que os acessos memria principal levam o mesmo perodo, independente do processador que requisita o acesso e de qual word requisitada.

9-6

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

NUMA (Nonuniform Memory Access) Um tipo de multiprocessador de espao de endereamento nico em que alguns acessos memria so mais rpidos que outros, dependendo de que processador requisita que word. troca de mensagens Comunicao entre vrios processadores explicitamente enviando e recebendo informaes. rotina de envio de mensagens Uma rotina usada por um processador em mquinas com memrias privadas, com o objetivo de passar dados para outro processador. rotina de recepo de mensagens Uma rotina usada por um processador em mquinas com memrias privadas, com o objetivo de aceitar uma mensagem de outro processador.

Os multiprocessadores de espao de endereamento nico podem ser de dois estilos. O primeiro leva o mesmo tempo para acessar a memria principal independente de qual processador o requisita e de qual word requisitada. Essas mquinas so chamadas UMA (Uniform Memory Access) ou SMP (Symmetric Multiprocessors). No segundo estilo, alguns acessos memria so mais rpidos do que outros, dependendo de que processador pede que word. Essas mquinas so chamadas NUMA (Nonuniform Memory Access). Como voc poderia esperar, as dificuldades de programao em um multiprocessador NUMA so diferentes das dificuldades em um multiprocessador UMA, mas as mquinas NUMA podem escalar para tamanhos maiores e, portanto, potencialmente possuem desempenho mais alto. A Figura 9.1.3 mostra o nmero de processadores e tempos de acesso memria no local para SMPs e NUMAs comerciais. O modelo alternativo para comunicao usa a troca de mensagens para comunicao entre processadores. A troca de mensagens necessria para mquinas com memrias privadas, em contraste com a memria compartilhada. Um exemplo um cluster, que processadores em diferentes computadores desktop se comunicam trocando mensagens por meio de uma rede local. Desde que o sistema tenha rotinas de envio e recepo de mensagens, a coordenao est embutida na troca de mensagens, j que um processador sabe quando uma mensagem enviada e o processador receptor sabe quando uma mensagem chega. O processador receptor, ento, pode enviar uma mensagem de volta para o emissor dizendo que a mensagem chegou se o emissor precisar dessa confirmao. Alm desses dois estilos de comunicao principais, os multiprocessadores so construdos em duas organizaes bsicas: os processadores conectados por um nico barramento e os processadores conectados por uma rede. O nmero de processadores no multiprocessador tem muito a ver com essa escolha. Examinaremos esses dois estilos em detalhes nas Sees 9.3 e 9.4. Comearemos analisando os aspectos gerais da programao em multiprocessadores.

Colocando em

perspectiva

A Figura 9.1.4 mostra a relao entre o nmero de processadores em um multiprocessador e a escolha da comunicao por endereamento compartilhado ou da comunicao por troca de mensagens e a escolha da conexo de barramento ou da conexo fsica de rede. A comunicao de endereamento compartilhado subdividida em acesso memria uniforme e no uniforme. Embora haja muitas escolhas para alguns nmeros de processadores, para outras regies existe um amplo consenso.

Multiprocessador Servidores Sun Starfire

Ano de lanamento 1996

SMP ou NUMA SMP

Mximo de processadores 64

Rede de interconexo Barramentos de endereo mltiplos, switch de dados Hipercubo largo Toro 3D de duas vias Crossbar 8 8 Barramentos comutados Barramentos comutados Barramentos comutados

Tempo tpico de acesso memria remota (ns) 500

SGI Origin 3000 Cray T3E Srie HP V Compaq AlphaServer GS Sun V880 HP Superdome 9000

1999 1996 1998 1999 2002 2003

NUMA NUMA SMP SMP SMP SMP

512 2048 32 32 8 64

500 300 1000 400 240 275

Figura 9.1.3 Tempos de acesso remoto tpicos para recuperar uma word de uma memria remota em multiprocessadores de memria compartilhada.

9.2

Programando multiprocessadores

9-7

Categoria Modelo de comunicao

Escolha Troca de mensagens Endereamento compartilhado NUMA UMA

Nmero de processadores 8-2048 8-256 2-64 8-256 2-36

Conexo fsica

Rede Barramento

FIGURA 9.1.4 Opes no estilo de comunicao e na conexo fsica para multiprocessadores conforme varia o nmero de processadores. Observe que o espao de endereamento compartilhado dividido em mquinas de acesso memria uniforme (UMA) e acesso memria no uniforme (NUMA).

9.2

Programando multiprocessadores

Uma grande preocupao freqentemente expressa em conexo com mquinas de computao bastante rpidas... que elas... ficaro sem trabalho. ...Precisa ser considerado que... o tamanho do problema era determinado pela velocidade das mquinas de computao ento disponveis. ...Para mquinas mais rpidas, o mesmo mecanismo automtico exercer presso contra problemas de maior tamanho.
John von Neumann, palestra apresentada no seminrio da IBM sobre computao cientfica, em novembro de 1949.

A m notcia que ainda no se sabe quantas aplicaes importantes sero executadas mais rapidamente em multiprocessadores por meio de processamento paralelo. O obstculo no o preo do uniprocessador usado para compor multiprocessadores, as falhas nas topologias das redes de interconexo ou a indisponibilidade de linguagens de programao apropriadas; a dificuldade tem sido que muito poucos programas de aplicao tm sido reescritos para completar tarefas mais rapidamente em multiprocessadores. Como mais difcil ainda encontrar aplicaes que possam tirar proveito de muitos processadores, o problema maior para multiprocessadores de grande escala. Haja vista a dificuldade de programao, a maioria das histrias de sucesso no processamento paralelo um resultado de magos de software desenvolvendo um subsistema paralelo que apresenta uma interface seqencial. Exemplos incluem bancos de dados, servidores de arquivos, pacotes de projeto auxiliados por computador e sistemas operacionais de multiprocessamento. Mas por que isso acontece? Por que os programas de processamento paralelo devem ser to mais difceis de desenvolver do que os programas seqenciais? A primeira razo que voc precisa obter um bom desempenho e eficincia do programa paralelo em um multiprocessador; caso contrrio, voc usaria um uniprocessador, j que a programao mais fcil. Na verdade, as tcnicas de projeto de uniprocessadores, como execuo superescalar e fora de ordem, tiram vantagem do paralelismo em nvel de instruo, normalmente sem envolvimento do programador. Tal inovao reduz a necessidade de reescrever programas para multiprocessadores. Por que difcil escrever programas de multiprocessador que sejam rpidos, especialmente quando o nmero de processadores aumenta? Como uma analogia, pense no overhead de comunicao para uma tarefa realizada por uma pessoa comparado com o overhead para uma tarefa realizada por um comit, especialmente enquanto o tamanho do comit aumenta. Embora n pessoas possam ter o potencial para concluir qualquer tarefa n vezes mais rpido, o overhead de comunicao para o grupo pode impedir isso; a multiplicao da velocidade por n se torna especialmente improvvel conforme n aumenta. (Imagine a mudana no overhead de comunicao se um comit crescer de 10 para 1.000 pessoas e, depois, para 1.000.000.) Outra razo por que difcil escrever programas paralelos que o programador precisa saber muito sobre o hardware. Em um uniprocessador, o programador de linguagem de alto nvel escreve o programa ignorando grande parte da organizao bsica da mquina esse o trabalho do compilador. Infelizmente, isso no to simples para multiprocessadores.

9-8

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Embora esse segundo obstculo esteja comeando a diminuir, nossa discusso no Captulo 4 revela um terceiro obstculo: a Lei de Amdahl. Ela nos lembra que mesmo as pequenas partes de um programa precisam estar em paralelo para alcanar seu completo potencial; assim, aproximar-se do speedup linear envolve descobrir novos algoritmos que sejam inerentemente paralelos.

PROBLEMA DO SPEEDUP EXEMPLO Suponha que voc queira alcanar speedup linear com 100 processadores. Que frao da computao original pode ser seqencial? A Lei de Amdahl (pgina 202) diz que: Tempo de execuo aps melhoria = Tempo de execuo afetado pela melhoria + Tempo de execuo no afetado Quantidade de melhoria Substituir pela meta de speedup linear com 100 processadores significa que o tempo de execuo reduzido por 100: Tempo de execuo antes da melhoria = 100 Tempo de execuo afetado pela melhoria + Tempo de execuo no afetado 100 J que Tempo de execuo antes da melhoria = Tempo de execuo afetado pela melhoria + Tempo de execuo no afetado Se substituirmos isso na equao acima, teremos: Tempo de execuo afetado pela melhoria + Tempo de execuo no afetado 100 Tempo de execuo afetado pela melhoria = + Tempo de execuo no afetado 100 Simplificando, temos: Tempo de execuo no afetado pela melhoria = Tempo de execuo no afetado 100 Isso s pode ser verdadeiro se o Tempo de execuo no afetado for 0. Portanto, para obter speedup linear com 100 processadores, nenhuma computao original pode ser seqencial. Dito de outra forma, obter uma speedup de 99 dos 100 processadores significa que a porcentagem do programa original que era seqencial precisaria ser de 0,01% ou menos.

RESPOSTA

9.3

Multiprocessadores conectados por um nico barramento

9-9

Entretanto, existem aplicaes com um substancial paralelismo.

PROBLEMA DO SPEEDUP, AINDA MAIOR Suponha que voc queira realizar duas somas: uma a soma de duas variveis escalares e outra uma soma matricial de um par de arrays bidimensionais de tamanho 1.000 por 1.000. Que speedup voc obtm com 1.000 processadores? Se considerarmos que o desempenho uma funo do tempo para uma adio, t, ento h 1 adio que no se beneficia dos processadores paralelos e 1.000.000 adies que se beneficiam. Se o tempo antes de 1.000.001t, Tempo de execuo aps melhoria = Tempo de execuo afetado pela melhoria + Tempo de execuo no afetado Quantidade de melhoria Tempo de execuo aps melhoria = 1000000 . . t + 1t = 1001 . 1000 . EXEMPLO

RESPOSTA

Ento, o speedup : Speedup = 1000001 . . = 999 1001 .

Mesmo se a parte seqencial expandisse para 100 somas de variveis escalares em relao a uma soma de um par de arrays de 1.000 por 1.000, o speedup ainda seria 909.

9.3

Multiprocessadores conectados por um nico barramento

O alto desempenho e o baixo custo do microprocessador inspiraram um novo interesse nos multiprocessadores na dcada de 1980. Vrios microprocessadores podem ser convenientemente colocados em um barramento comum por vrias razes:
n n n

Como cada microprocessador muito menor do que um processador multichip, mais processadores podem ser colocados em um barramento. As caches podem reduzir o trfego de barramento. Foram inventados mecanismos para manter as caches e a memria consistentes para multiprocessadores, assim como as caches e a memria so mantidas consistentes para a E/S, simplificando, assim, a programao.

A Figura 9.3.1 um esboo de um multiprocessador de barramento nico genrico.

9-10

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

O trfego por processador e a largura de banda de barramento determinam o nmero til de processadores nesse multiprocessador. As caches duplicam os dados em suas memrias mais rpidas para reduzir a latncia para os dados e para reduzir o trfego de memria no barramento.

PROGRAMA PARALELO (BARRAMENTO NICO) EXEMPLO Suponha que queremos somar 100.000 nmeros em um computador com multiprocessador de barramento nico. Vamos considerar que temos 100 processadores. A primeira etapa novamente seria dividir o conjunto de nmeros em subconjuntos do mesmo tamanho. No alocamos os subconjuntos em memrias diferentes, j que existe uma nica memria para essa mquina; apenas atribumos endereos iniciais diferentes a cada processador. Pn o nmero do processador, entre 0 e 99. Todos os processadores comeam o programa executando um loop que soma seu subconjunto de nmeros:
sum[Pn] = 0; for (i = 1000*Pn; i < 1000*(Pn+1); i = i + 1) sum[Pn] = sum[Pn] + A[i]; /* soma as reas atribudas */

RESPOSTA

A prxima etapa somar essas muitas somas parciais; portanto, dividimos para conquistar. A metade dos processadores soma pares de somas parciais, depois, um quarto soma pares das novas somas parciais e assim por diante, at que tenhamos uma nica soma final. Desejamos que cada processador tenha sua prpria verso da varivel contadora do loop i, ento temos de indicar que ela uma varivel privada. Neste exemplo, os dois processadores precisam ser sincronizados antes que o processador consumidor tente ler o resultado do local da memria escrito pelo processador produtor; caso contrrio, o consumidor pode ler o valor antigo dos dados. Aqui est o cdigo (half tambm privada):
half = 100; /* 100 processadores no multiprocessador */ do { synch( ); /* espera a concluso da soma parcial */ if (half%2 != 0 && Pn == 0) sum[0] = sum[0] + sum[half-1]; /* soma condicional necessria quando half mpar; Processor0 obtm elemento ausente */ half = half/2; /* linha divisora sobre quem soma */ if (Pn < half) sum[Pn] = sum[Pn] + sum[Pn+half]; } while (half == 1); /* sai com soma final em Sum[0] */

coerncia de cache Consistncia no valor dos dados entre as verses nas caches de vrios processadores.

Lembre-se do Captulo 8 de que E/S pode experimentar inconsistncias no valor dos dados entre a verso na memria e a verso na cache. Esse problema de coerncia de cache se aplica tanto a multiprocessadores quanto a E/S. Diferente da E/S, que raramente usa mltiplas cpias de dados (uma situao a ser evitada sempre que possvel), como a segunda metade do exemplo sugere, mltiplos processadores normalmente requerem cpias dos mesmos dados em mltiplas caches. Como alternativa, os acessos a dados compartilhados podem ser forados a sempre passar da cache para a memria, mas isso seria muito lento e exigiria muita largura de banda do barramento; o desempenho de um programa para multiprocessador depende do desempenho do sistema quando est compartilhando dados.

9.3

Multiprocessadores conectados por um nico barramento

9-11

Processador

Processador

Processador

Cache

Cache

Cache

Barramento nico

Memria FIGURA 9.3.1 Um multiprocessador de barramento nico.

E/S

O tamanho tpico entre 2 e 32 processadores.

Os protocolos para manter coerncia em mltiplos processadores so chamados protocolos de coerncia de cache. As prximas subsees explicam os protocolos de coerncia de cache e os mtodos de sincronizao de processadores usando coerncia de cache.
coerncia de cache com snooping Um mtodo para manter coerncia de cache em que todos os controladores de cache monitoram o barramento para determinar se possuem ou no uma cpia do bloco desejado.

Coerncia de cache em multiprocessadores


O protocolo mais comum para manter a coerncia de cache chamado snooping. A Figura 9.3.2 mostra como as caches acessam a memria por meio de um barramento comum. Todos os controladores de cache monitoram o barramento para determinar se possuem uma cpia do bloco compartilhado. O snooping se tornou popular com muitas mquinas da dcada de 1980, que usavam barramentos nicos para suas memrias principais. Esses uniprocessadores foram estendidos acrescentando processadores mltiplos nesse barramento para fornecer acesso fcil memria compartilhada. As caches foram, ento, acrescentadas para melhorar o desempenho de cada processador, levando a esquemas para manter as caches atualizadas pelo monitoramento (snooping) das informaes nesse barramento compartilhado. A manuteno da coerncia possui dois componentes: leituras e escritas. Mltiplas cpias no so um problema durante a leitura, mas um processador precisa ter acesso exclusivo para escrever uma word. Os processadores tambm precisam ter a cpia mais recente quando esto lendo um objeto e, ento, todos os processadores precisam obter valores novos aps uma escrita. Portanto, os protocolos de snooping precisam localizar todas as caches que compartilham um objeto a ser escrito. A conseqncia de uma escrita em dados compartilhados invalidar todas as outras cpias ou atualizar as cpias compartilhadas com o valor sendo escrito.

Processador

Processador

...

Processador

Tag snoop

Tag e dados de cache

Tag snoop

Tag e dados de cache

... ...

Tag snoop

Tag e dados de cache

Barramento nico

Memria

E/S

FIGURA 9.3.2 Um multiprocessador de barramento nico usando coerncia de cache com snooping. O conjunto de tags extra, mostrado em destaque, usado para manipular requisies de snoop. As tags so duplicadas para reduzir as demandas de snooping nas caches.

9-12

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

write-invalidate Um tipo de protocolo de snooping em que o processador de escrita faz com que todas as cpias em outras caches sejam invalidadas antes de mudar sua cpia local, o que permite atualizar os dados locais at que outro processador os solicite.

Os bits de status j existentes em um bloco de cache so expandidos para protocolos de snooping, e essas informaes so usadas no monitoramento de atividades de barramento. Em uma falha de leitura, todas as caches verificam se elas possuem uma cpia do bloco requisitado e, depois, tomam a ao apropriada, como fornecer os dados para a cache que falhou. Da mesma forma, em uma escrita, todas as caches verificam se possuem uma cpia e, ento, agem, invalidando ou atualizando sua cpia com o novo valor. Como cada transao de barramento verifica as tags de endereo de cache, voc precisa considerar que ela interfere no processador. Ela interferiria, se no para duplicar a parte da tag de endereo da cache no a cache inteira, para ter uma porta de leitura extra para snooping (veja a Figura 9.3.2). Desse modo, o snooping raramente interfere com o acesso do processador cache. Quando h interferncia, o processador provavelmente ser suspenso porque a cache est indisponvel. Os multiprocessadores comerciais baseados em cache usam caches write-back porque ele reduz o trfego de barramento e, portanto, permite mais processadores em um nico barramento. Para preservar essa preciosa largura de banda de comunicaes, todas as mquinas usam write-invalidate como o protocolo de coerncia padro: o processador de escrita faz com que todas as cpias em outras caches sejam invalidadas antes de mudar sua cpia local; depois, eles esto liberados para atualizarem os dados locais at que outro processador os solicite. O processador de escrita ativa um sinal de invalidao no barramento e todas as caches verificam se elas possuem uma cpia; se possurem, elas precisam invalidar o bloco contendo a word. Portanto, esse esquema permite diversos leitores mas apenas um escritor. As medies at agora indicam que os dados compartilhados possuem menos localidade espacial e temporal do que outros tipos de dados. Assim, as falhas de dados compartilhados freqentemente dominam o comportamento da cache, ainda que possam representar apenas de 10% a 40% dos acessos a dados. A Figura 9.3.3 mostra a frao das falhas devido coerncia enquanto o nmero de processadores varia em um SMP.

Interface hardware/software
falso compartilhamento Uma situao de compartilhamento em que duas variveis compartilhadas no relacionadas esto localizadas no mesmo bloco de cache e o bloco inteiro trocado entre processadores ainda que os processadores estejam acessando variveis diferentes.

Um princpio o de que o tamanho do bloco desempenha um importante papel na coerncia de cache. Por exemplo, considere o caso de snooping em uma cache com um tamanho de bloco de oito words, com uma nica word escrita e lida alternadamente por dois processadores. Um protocolo que apenas difunde ou envia uma nica word tem uma vantagem sobre um que transfere o bloco inteiro. Blocos grandes tambm podem causar o que se chama falso compartilhamento: Quando duas variveis compartilhadas no relacionadas esto localizadas no mesmo bloco de cache, o bloco inteiro trocado entre processadores mesmo que os processadores estejam acessando diferentes variveis (veja os Exerccios 9.5 e 9.6). As pesquisas em compiladores esto reduzindo o falso compartilhamento alocando dados altamente correlacionados no mesmo bloco de cache e, portanto, reduzindo razes de falhas de cache.

Detalhamento: em um multiprocessador usando coerncia de cache em um barramento nico, o que acontece se dois processadores tentarem escrever na mesma word de dados compartilhada no mesmo ciclo de clock? O rbitro de barramento decide que processador toma o barramento primeiro e esse processador invalidar ou atualizar a cpia do outro processador, dependendo do protocolo. O segundo processador, ento, realiza sua escrita. A arbitrao de barramento fora o comportamento seqencial das escritas no mesmo bloco por diferentes processadores, e isso explica como as escritas de diferentes processadores em diferentes words no mesmo bloco funcionaro corretamente. A poltica de quando um processador v uma escrita de outro processador chamada de modelo de consistncia de memria. O mais conservador chamado de consistncia seqencial: o resultado de qualquer execuo o mesmo que se os acessos de cada processador fossem mantidos na ordem e os acessos entre diferentes processadores fossem intercalados. Algumas mquinas usam modelos mais liberais para atingir um desempenho de memria melhor.

9.3

Multiprocessadores conectados por um nico barramento

9-13

FFT 8% 7% 6% 5% Razo de falhas 4% 3% 2% 1% 0% 1 2 4 8 16 Nmero de processadores 20% 18% 16% 14% Barnes 1% Razo de falhas 0% 1 2 4 8 16 Nmero de processadores Razo de falhas 12% 10% 8% 6% 4% 2% 0% 1 2 2% 1% Razo de falhas 0% 1 2

LU

8 16

Nmero de processadores

Ocean

8 16

Nmero de processadores Razo de falhas de coerncia Razo de falhas de capacidade

FIGURA 9.3.3 As razes de falhas de dados podem variar de maneiras no bvias conforme o nmero de processadores aumentado de 1 para 16. As razes de falhas incluem razes de falhas de coerncia e de capacidade. Para todas essas execues, o tamanho de cache 64KB, associativo por conjunto de duas vias, com blocos de 32 bytes. Observe que a escala no eixo y para cada benchmark diferente, de modo que o comportamento dos benchmarks individuais pode ser visto claramente. (Da Figura 6.23 em Hennessy e Patterson, Arquitetura de computadores: Uma abordagem quantitativa, terceira edio, 2003.)

Detalhamento: nosso exemplo usou uma primitiva de sincronizao por barreira; os processadores esperam na barreira at que cada processador a tenha atingido. Ento, eles continuam. A sincronizao por barreira permite que todos os processadores sejam sincronizados rapidamente. Essa funo pode ser implementada no software ou com a primitiva de sincronizao de lock, descrita em breve.

Um exemplo de protocolo de coerncia de cache


Para ilustrar as particularidades de um protocolo de coerncia de cache, a Figura 9.3.4 mostra um diagrama de transio de estados finitos para um protocolo write-invalidate baseado em uma poltica write-back. Cada bloco de cache est em um de trs estados: 1. Compartilhado (apenas leitura): esse bloco de cache limpo (no escrito) e pode ser compartilhado. 2. Modificado (leitura/escrita): esse bloco de cache sujo (escrito) e pode no ser compartilhado. 3. Invlido: esse bloco de cache no possui dados vlidos. Os trs estados do protocolo so duplicados na figura para mostrar transies com base nas aes do processador em oposio s transies baseadas em operaes de barramento. Essa duplicao feita apenas para fins de ilustrao; h realmente apenas uma mquina de estados finitos por bloco de cache, com estmulos vindo do processador anexado ou do barramento. Essa abstrao tambm se

sincronizao por barreira Um esquema de sincronizao em que os processadores esperam na barreira e no continuam at que todos os processadores a tenham alcanado.

9-14

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Invlido (bloco de cache no vlido) Falha de escrita do processador

Falha de leitura do processador

Compartilhado (limpo) Acerto de leitura Falha do processador do processador ) o Falha do da Acerto de escrita processador ali (escreve do processador inv a vi bloco n modificado (E

na memria)

Modificado (sujo)

Acerto de leitura ou acerto de escrita do processador a. Transies de estado de cache usando sinais do processador

Invlido (bloco de cache no vlido) Outro processador possui uma falha de leitura ou uma falha de escrita para este bloco (vista no barramento); escreve o bloco antigo de volta Modificado (sujo)

Invalidao ou outro processador possui uma falha de escrita para este bloco (vista no barramento)

Compartilhado (limpo)

b. Transies de estado de cache usando sinais do barramento FIGURA 9.3.4 Um protocolo write-invalidate de coerncia de cache. A parte superior do diagrama mostra transies de estado baseadas em aes do processador associadas com essa cache; a parte inferior mostra transies baseadas em aes de outros processadores quando vistas como operaes no barramento. Na verdade, h apenas uma mquina de estados em um bloco de cache, embora haja duas representadas aqui para esclarecer quando ocorre uma transio. As setas pretas e as aes especificadas em texto preto seriam encontradas em caches sem coerncia; as setas e aes em destaque so includas para obter coerncia de cache.

aplica a blocos de cache no presentes na cache; obviamente, essas mquinas de estados esto todas no estado invlido. As transies no estado de um bloco de cache ocorrem em falhas de leitura, falhas de escrita ou acertos de escrita; os acertos de escrita no mudam o estado da cache. Vamos comear com uma falha de leitura, chamando o bloco a ser substitudo de a vtima. Quando o processador tem uma falha de leitura, ele adquire o barramento e escreve a vtima se ela estiver no estado Modified (sujo). Todas as caches nos outros processadores monitoram a falha de leitura para ver se esse bloco est em sua cache. Se algum tiver uma cpia e ela estiver no estado Modified, ento o bloco escrito novamente e seu estado alterado para o estado Invalid. (Alguns protocolos mudariam o estado para Shared.) A falha de leitura, ento, satisfeita lendo da memria, e o estado do bloco definido em Shared. Note que o bloco lido da memria se uma cpia estiver em uma cache ou no nesse protocolo. As escritas so mais complexas. Vamos experimentar os acertos de escrita. Um acerto de escrita em um bloco Modified no causa nenhuma ao de protocolo. Um acerto de escrita em um bloco

9.3

Multiprocessadores conectados por um nico barramento

9-15

Shared faz com que a cache adquira o barramento, envie um sinal de invalidao para bloquear quaisquer outras cpias, modifique a parte do bloco sendo escrita e mude o estado para Modified. Por ltimo esto as falhas de escrita. Uma falha de escrita em um bloco Shared em outra cache faz com que a cache adquira o barramento, envie um sinal de invalidao para bloquear todas as cpias, leia todo o bloco em que houve falha, modifique a parte do bloco sendo escrita e mude o estado para Modified. Como voc poderia imaginar, h muitas variaes na coerncia de cache muito mais complicadas do que esse modelo simples. A encontrada no Pentium 4 e em muitos outros microprocessadores chamada MESI, um protocolo de invalidao de escrita cujo nome um acrnimo para os protocolo de coerncia quatro estados do protocolo: Modified (Modificado), Exclusive (Exclusivo), Shared (Compartide cache MESI Um protocolo lhado), Invalid (Invlido). Modified e Invalid so iguais aos Modificado e Invlido, descritos antewrite-invalidate cujo riormente. O estado Shared o estado Compartilhado da Figura 9.3.4 dividido, dependendo de se nome um acrnimo existem mltiplas cpias (estado Shared) ou existe apenas uma (estado Exclusive). Em qualquer para os quatro estados caso, a memria possui uma verso atualizada dos dados. Esse estado Exclusive extra significa do protocolo: Modified, que existe apenas uma cpia do bloco e, portanto, um acerto de escrita no precisa invalidar. Um Exclusive, Shared, Invalid. acerto de escrita em um bloco Compartilhado na Figura 9.3.4 requer uma invalidao, j que pode haver diversas cpias. Outras variaes nos protocolos de coerncia incluem se as outras caches tentam fornecer o bloco se tiverem uma cpia, e se o bloco precisa ser invalidado em uma falha de leitura.

Sincronizao usando coerncia


Um dos principais requisitos de um multiprocessador de barramento nico ser capaz de coordenar processos que estejam trabalhando em uma tarefa comum. Em geral, um programador usar variveis de lock (tambm conhecidas como semforos) para coordenar ou sincronizar os processos. O desafio para o arquiteto de um multiprocessador fornecer um mecanismo para decidir qual processador obtm o lock e fornecer a operao que bloqueia a varivel. A arbitrao fcil para multiprocessadores de barramento nico, j que o barramento o nico caminho at a memria: o processaoperao de troca dor que obtm o barramento bloqueia todos os outros processadores de ir memria. Se o processa- atmica Uma operao dor e o barramento fornecerem uma operao de troca atmica, os programadores podero criar em que o processador locks com a semntica correta. Aqui, o adjetivo atmico significa indivisvel; portanto, uma troca pode ler um local e atribuir a ele o valor atmica significa que o processador pode ler um local e atribuir a ele o valor bloqueado na mesma bloqueado na mesma operao de barramento, evitando que qualquer outro processador ou dispositivo de E/S leia ou esoperao de creva na memria at que a troca seja concluda. barramento, evitando A Figura 9.3.5 mostra um procedimento tpico para realizar um lock numa varivel usando uma que qualquer outro processador ou instruo de troca atmica. Considere que 0 significa unlocked (siga) e 1 significa locked (pare). dispositivo de E/S leia Um processador primeiro l a varivel de lock para testar seu estado. O processador continua lendo e ou escreva na memria testando at que o valor indique unlocked. O processador, ento, disputa com todos os outros procesat que a troca seja sadores que estavam da mesma maneira (spin waiting) para ver quem pode realizar o lock na varivel concluda. primeiro. Todos os processadores usam uma instruo de troca atmica que l o valor antigo e armazena um 1 (pare) na varivel de lock. O nico vencedor ver o 0 (siga) e os perdedores vero um 1 que foi colocado l pelo vencedor. (Os perdedores continuaro a escrever a varivel com o valor locked de 1, mas isso no muda seu valor.) O processador vencedor, ento, executa o cdigo que atualiza os dados compartilhados. Quando o vencedor sai, ele armazena um 0 na varivel de lock, iniciando, assim, a corrida novamente. O MIPS no inclui uma instruo de troca atmica. Uma alternativa ter um par de instrues no qual a segunda instruo retorna um valor do qual pode-se deduzir se o par de instrues foi executado como se as instrues fossem atmicas. O par de instrues efetivamente atmico se parecer que todas as outras operaes executadas por qualquer processador ocorrem antes ou aps o par. Portanto, quando um par de instrues for efetivamente atmico, nenhum outro processador pode mudar o valor entre o par de instrues.

9-16

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Ler a varivel de lock

No

Unlocked? (= 0?) Sim

Tentar realizar um lock na varivel usando troca atmica: ler a varivel de lock e ento atribuir a ela o valor locked (1)

No

Bemsucedido? (= 0?) Sim

Comear a atualizar os dados compartilhados

Terminar de atualizar os dados compartilhados

Liberar: atribuir 0 a varivel de lock FIGURA 9.3.5 Etapas para adquirir um lock ou semforo para sincronizar processos e, depois, para liberar o lock na sada da seo-chave do cdigo.

O par MIPS de instrues inclui um load especial chamado load linked ou load locked (ll) e um store especial chamado store conditional (sc). Essas instrues so usadas em seqncia: se o contedo do local de memria especificado pelo load linked for alterado antes que ocorra o store conditional para o mesmo endereo, o store conditional falhar. Se o processador realizar uma troca de contexto entre as duas instrues, o store conditional tambm falhar. O store conditional definido para retornar um valor indicando se o store foi bem-sucedido. Como o load linked retorna o valor inicial e o store conditional retorna 1 se for bem-sucedido e 0 no caso contrrio, a seqncia a seguir implementa uma troca atmica no local de memria especificado pelo contedo de $t1:
try: mov ll sc beqz nop mov $t3,$t4 $t2,0($t1) $t3,0($t1) $t3,try $t4,$t2 # # # # # # move o valor de troca load linked store conditional altera $t3 desvia se store conditonal falhar (=0) (delayed branch) coloca o valor do load em $t4

No final dessa seqncia, o contedo de $t4 e o local de memria especificado por $t1 foram atomicamente trocados. A qualquer momento em que um processador intervm e modifica o valor na memria entre as instrues ll e sc, o sc retorna 0 em $t3, fazendo a seqncia de cdigo tentar novamente.

9.4

Multiprocessadores conectados por uma rede

9-17

Vamos examinar como o esquema de spin lock da Figura 9.3.5 funciona com coerncia de cache baseada em barramento. Uma vantagem desse algoritmo que ele permite que os processadores utilizem spin wait em uma cpia local do lock em suas caches. Isso reduz a quantidade de trfego de barramento; a Figura 9.3.6 mostra as operaes de barramento e cache para mltiplos processadores tentando realizar lock numa varivel. Uma vez que o processador com o lock armazena um 0 no lock, todas as outras caches vem esse store e invalidam sua cpia da varivel lock. Depois, elas tentam obter o novo valor 0 para o lock . Esse novo valor inicia a disputa para ver quem pode obter o lock primeiro. O vencedor obtm o barramento e armazena um 1 no lock; as outras caches substituem sua cpia da varivel lock contendo 0 por um 1. Esse valor indica que a varivel j est locked e, portanto, eles precisam retornar ao teste e ao spinning.

Etapa 1 2

Processador P0 Obtm o lock Coloca lock em 0; envia invalidao pelo barramento

Processador P1 Spin, testando se lock = 0 Spin, testando se lock = 0

Processador P2 Spin, testando se lock = 0 Spin, testando se lock = 0

Atividade do barramento Nenhuma write-invalidate da varivel de lock enviado de P0 Barramento serve a falha de cache de P2 Resposta falha de cache de P2 Barramento serve a falha de cache de P1 Resposta falha de cache de P1 Barramento serve a invalidao de P1 Barramento serve a falha de cache de P1 Resposta falha de cache de P2

Memria

3 4 5 6

Falha de cache (Espera a falha de cache) (Espera a falha de cache) Testa lock = 0; xito

Falha de cache (Espera a falha de cache) Testa lock = 0; xito Tenta trocar; precisa de permisso de escrita Envia invalidao para obter permisso de escrita Troca; l lock = 0 e coloca-o em 1 Responde falha de cache de P1, envia lock = 1

Atualiza a memria com bloco de P0

Responde falha de cache de P1; envia varivel lock

7 8 9

Tenta trocar; precisa de permisso de escrita Falha de cache Troca; l lock = 1 e coloca-o em 1; volta para spin

Figura 9.3.6 Etapas da coerncia de cache e trfego de barramento para trs processadores, P0, P1 e P2. Essa figura considera coerncia write-invalidate. P0 comea com o lock (etapa 1). P0 sai e libera o lock (etapa 2). P1 e P2 disputam para ver quem l o valor unlocked durante a troca (etapas 3 a 5). P2 vence e entra na regio crtica (etapas 6 e 7), enquanto P1 realiza spins e waits (etapas 7 e 8). A regio crtica o nome para o cdigo entre o lock e o unlock. Quando P2 sai da regio crtica, ele coloca o lock em 0, o que invalidar a cpia na cache de P1, reiniciando o processo.

A dificuldade desse esquema aumenta para muitos processadores devido ao trfego de comunicao gerado quando o lock liberado.

9.4

Multiprocessadores conectados por uma rede

Os projetos de barramento nico so atraentes mas limitados porque as trs caractersticas desejveis do barramento so incompatveis: alta largura de banda, baixa latncia e grande extenso. Tambm h um limite para a largura de banda de um nico mdulo de memria anexado a um barramento. Portanto, um barramento nico impe limitaes prticas ao nmero de processadores que podem ser conectados a ele. Atualmente, o maior nmero de processadores conectados a um nico barramento em um computador comercial 36, e esse nmero parece estar diminuindo com o tempo.

9-18

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Processador

Processador

...

Processador

Cache

Cache

...

Cache

Memria

Memria

...

Memria

Rede Figura 9.4.1 A organizao de um multiprocessador conectado rede. Observe que, diferente da Figura 9.3.1, a conexo do multiprocessador no est mais entre a memria e o processador.

memria compartilhada Uma memria para um processador paralelo com um nico espao de endereamento, envolvendo comunicao implcita com loads e stores. memria distribuda Memria fsica dividida em mdulos, com alguns colocados prximos a cada processador em um multiprocessador. CC-NUMA Um multiprocessador de acesso memria no uniforme que mantm coerncia para todas as caches.

Se o objetivo conectar muitos mais processadores juntos, ento, o projetista de computadores precisar usar mais do que um nico barramento. A Figura 9.4.1 mostra como isso pode ser organizado. Observe que na Figura 9.3.1 o meio de conexo o barramento est entre os processadores e a memria, enquanto na Figura 9.4.1, a memria est anexada a cada processador e o meio de conexo a rede est entre esses ns combinados. Para sistemas de barramento nico, o meio utilizado em cada acesso memria, enquanto no outro caso, ele usado apenas para comunicao entre processadores. Isso nos leva a um antigo debate sobre a organizao da memria em processadores paralelos de grande escala. Infelizmente, o debate gira em torno de uma falsa dicotomia: memria compartilhada versus memria distribuda. A memria compartilhada realmente significa um nico espao de endereamento, envolvendo comunicao implcita com loads e stores. O verdadeiro oposto de um endereamento nico so as memrias privadas mltiplas, envolvendo comunicao explcita com sends e receives. As trs categorias gerais de multiprocessadores so as seguintes:
n n n

UMA (Uniform Memory Access): O tempo de acesso memria o mesmo, independente de onde a word esteja localizada. Isso normal com uma memria comum. NUMA (Nonuniform Memory Access): O tempo de acesso memria varia conforme seu endereo. Isso normal com uma memria fisicamente distribuda. CC-NUMA (Cache-coherent nonuniform memory access): Um NUMA com um mecanismo que garante a coerncia de cache.

Em mquinas sem um espao de endereamento global nico, a comunicao explcita; o programador ou o compilador precisa enviar mensagens para transferir dados a outro n e precisa receber mensagens para aceitar dados de outro n.

PROGRAMA PARALELO (TROCA DE MENSAGENS) EXEMPLO Vamos experimentar nosso exemplo de soma novamente para um multiprocessador conectado rede com 100 processadores usando mltiplas memrias privadas. Como esse computador possui mltiplos espaos de endereamento, o primeiro passo distribuir os 100 subconjuntos para cada uma das memrias locais. O processador contendo os 100.000 nmeros envia os subconjuntos para cada um dos 100 ns de memria de processador.

RESPOSTA

9.4

Multiprocessadores conectados por uma rede

9-19

A prxima etapa obter a soma de cada subconjunto. Essa etapa simplesmente um loop que toda unidade de execuo segue: ler uma word da memria local e adicion-la a uma varivel local:
sum = 0; for (i = 0; i<1000; i = i + 1) /* loop em cada array */ sum = sum + A1[i]; /* soma os arrays locais */

A ltima etapa somar essas 100 somas parciais. A parte difcil que cada soma parcial est localizada em uma unidade de execuo diferente. Conseqentemente, precisamos usar a rede de interconexo para enviar somas parciais para acumular a soma final. Em vez de enviar todas as somas parciais a um nico processador, o que resultaria em acrescentar seqencialmente as somas, mais uma vez dividimos para conquistar. Primeiro, metade das unidades de execuo envia suas somas parciais para a outra metade das unidades de execuo, onde duas somas parciais so somadas. Depois, um quarto das unidades de execuo (metade da metade) envia essa nova soma parcial para o outro quarto das unidades de execuo (a metade da metade restante) para a prxima rodada de somas. Essas divises, envios e recepes continuam at haver uma nica soma de todos os nmeros. Seja Pn o nmero da unidade de execuo, send(x,y) uma rotina que envia pela rede de interconexo para a unidade de execuo nmero x o valor y e receive( ) a funo que recebe um valor da rede para essa unidade de execuo:
limit = 100; half = 100; /* 100 processadores */ do { half = (half+1)/2; /* linha divisria entre send e receive */ if (Pn >= half && Pn < limit) send(Pn half, sum); if (Pn < (limit/2)) sum = sum + receive( ); limit = half; /* limite superior dos emissores */ } while (half == 1); /* sai com a soma final */

Esse cdigo divide todos os processadores em emissores ou receptores, e cada processador receptor recebe apenas uma mensagem, de modo que podemos presumir que um processador receptor estar suspenso at receber uma mensagem. Portanto, send e receive podem ser usados como primitivas para sincronizao e para comunicao, j que os processadores esto cientes da transmisso dos dados. Se houver um nmero mpar de ns, o n central no participa da emisso/recepo. O limite, ento, definido de modo que esse n seja o n mais alto na prxima iterao.

Endereamento em processadores paralelos de grande escala


A maioria dos processadores comerciais de grande escala usa memria distribuda; de outro modo, muito difcil ou muito caro construir uma mquina que possa ser escalada para muitos processadores com muitos mdulos de memria. Outro aspecto que envolve as mquinas de memria distribuda a comunicao. Para o projetista de hardware, a soluo mais simples oferecer apenas send e receive em vez da comunicao implcita possvel como parte de qualquer load ou store. Send e receive tambm possuem a vantagem de facilitar para o programador otimizar a comunicao: mais simples unir computao com comunicao usando sends e receives explcitos do que com loads e stores implcitos.

9-20

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Interface hardware/software
Acrescentar uma camada de software para fornecer um espao de endereamento nico sobre sends e receives de modo que a comunicao seja possvel como parte de qualquer load ou store mais difcil, embora isso seja comparvel ao sistema de memria virtual j encontrado na maioria dos processadores (veja o Captulo 7). Na memria virtual, um uniprocessador usa tabelas de pginas para decidir se um endereo aponta para dados na memria local ou em um disco; esse sistema de traduo pode ser modificado para decidir se o endereo aponta para dados locais, para dados na memria de outro processador ou para o disco. Embora a memria virtual compartilhada, como chamada, crie a iluso de memria compartilhada exatamente como a memria virtual cria a iluso de uma memria muito grande , j que ela chama o sistema operacional, o desempenho normalmente to lento que a comunicao de memria compartilhada precisa ser rara ou a maioria do tempo gasta transferindo pginas.

memria compartilhada distribuda (DSM) Um esquema de memria que usa endereos para acessar dados remotos quando demandados em vez de recuperar os dados para o caso de precisarem ser usados. diretrio Um depsito de informaes sobre o estado de cada bloco na memria principal, incluindo que caches possuem cpias do bloco, se ele sujo etc. Usado para coerncia de cache.

Por outro lado, loads e stores normalmente tm um overhead de comunicao muito mais baixo do que sends e receives. Alm disso, algumas aplicaes tero referncias a informaes remotas acessadas apenas ocasional e imprevisivelmente, de modo que muito mais eficiente usar um endereo para dados remotos quando demandados em vez de recuper-los para o caso de poderem ser usados. Esse tipo de mquina possui memria compartilhada distribuda (DSM). As caches so importantes para o desempenho independente de como a comunicao seja realizada; assim, queremos permitir que os dados compartilhados apaream na cache do processador que possui os dados bem como no processador que os requisitou. Portanto, o espao de endereamento global nico em um multiprocessador conectado rede reacende a questo da coerncia de cache, j que h mltiplas cpias dos mesmos dados com o mesmo endereo em diferentes processadores. Claramente, os protocolos de snooping de barramento da Seo 9.3 no funcionaro aqui, pois no h um barramento nico em que todas as referncias de memria sejam broadcast. Como os projetistas do Cray T3E no tinham qualquer barramento para suportar coerncia de cache, o T3E possui um nico espao de endereamento mas sem coerncia de cache. Uma alternativa com coerncia de cache ao snooping de barramento so os diretrios. Nos protocolos baseados em diretrios, logicamente, um nico diretrio mantm o estado de cada bloco na memria principal. As informaes no diretrio podem incluir quais caches possuem cpias do bloco, se ele sujo etc. Felizmente, as entradas de diretrio podem ser distribudas de modo que diferentes requisies possam ir para diferentes memrias, reduzindo, assim, a conteno e permitindo um projeto escalvel. Os diretrios mantm as caractersticas de que o status de compartilhamento de um bloco est sempre em um nico local conhecido, tornando um processador paralelo de grande escala vivel. Os projetistas de caches com snooping e diretrios enfrentam problemas semelhantes; a nica diferena o mecanismo que detecta quando h uma escrita em dados compartilhados. Em vez de examinar o barramento para ver se existem requisies que exigem que a cache local seja atualizada ou invalidada, o controlador do diretrio envia comandos explcitos a cada processador que tem uma cpia dos dados. Essas mensagens podem, ento, ser enviadas pela rede.

Interface hardware/software
Observe que com um espao de endereamento nico, os dados poderiam ser colocados arbitrariamente nas memrias de diferentes processadores. Isso tem duas conseqncias negativas para o desempenho. A primeira que a penalidade de falha seria muito maior porque a requisio precisa atravessar a rede. A segunda que a largura de banda de rede seria consumida movendo dados para os processadores corretos. Para programas que possuem baixas taxas de falhas, isso pode no ser signi-

9.5

Clusters

9-21

ficante. Por outro lado, os programas com altas taxas de falhas tero desempenho muito menor quando os dados so aleatoriamente atribudos. Se o programador ou o compilador alocar dados para o processador que sejam improvveis de serem usados, ento, essa armadilha de desempenho ser removida. Diferente das organizaes de memria privada, essa alocao precisa apenas ser boa, j que os dados em falha ainda podem ser buscados. Essa benevolncia simplifica o problema da alocao.

Como o nmero de pinos por chip limitado, nem todos os processadores podem ser conectados diretamente uns aos outros. Essa restrio inspirou todo um grupo de topologias a serem consideradas no projeto da rede. Na Seo 9.6, veremos as caractersticas de algumas das principais alternativas dos projetos de rede. Primeiro, vejamos outra maneira de conectar computadores em redes.

9.5

Clusters

Existem muitas aplicaes de mainframe como bancos de dados, servidores de arquivos, servidores Web, simulaes e multiprogramao/processamento apropriadas para serem executadas em mquinas conectadas mais livremente do que as mquinas NUMA com coerncia de cache da seo anterior. Essas aplicaes em geral precisam ser altamente disponveis, exigindo algum tipo de tolerncia a falhas e capacidade de reparao. Tais aplicaes alm da semelhana dos ns de multiprocessador com os computadores desktop e o surgimento de redes locais de alta largura de banda baseadas em switches so o motivo por que o processamento de grande escala usa clusters de computadores de uso geral facilmente encontrados no mercado. Uma desvantagem dos clusters tem sido a de que o custo de administrar um cluster de n mquinas aproximadamente igual ao custo de administrar n mquinas independentes, enquanto o custo de administrar um multiprocessador de espao de endereamento compartilhado com n processadores aproximadamente igual ao de administrar uma nica mquina. Outro ponto negativo que os clusters normalmente so conectados usando o barramento de E/S do computador, enquanto os multiprocessadores em geral so conectados no barramento de memria do computador. O barramento de memria possui largura de banda mais alta, permitindo que os multiprocessadores levem o link de rede a uma velocidade mais alta e tenham menos conflitos com o trfego de E/S nas aplicaes de E/S intensa. Uma ltima desvantagem a diviso da memria: um cluster de n mquinas possui n memrias independentes e n cpias do sistema operacional, mas um multiprocessador de endereamento compartilhado permite que um nico processador use quase toda a memria do computador. Portanto, um programa seqencial em um cluster possui 1/n da memria disponvel comparado com um programa seqencial em um SMP. A principal diferena entre os dois o preo de aquisio para capacidade de computao equivalente para mquinas de grande escala. Como os multiprocessadores de grande escala possuem pequenos volumes, os custos extras de desenvolvimento de grandes mquinas precisam ser amortizados entre poucos sistemas, resultando em um custo mais alto para o consumidor. Uma vez que os mesmos switches vendidos em grande volume para pequenos sistemas podem ser usados para construir grandes redes para grandes clusters, os switches de rede local tm as mesmas vantagens de economia de escala que os computadores pequenos. A limitao de memrias separadas para tamanho de programa torna-se uma vantagem na disponibilidade do sistema. Como um cluster consiste em computadores independentes conectados por meio de uma rede local, muito mais fcil substituir uma mquina sem paralisar o sistema em um cluster do que em um SMP. Fundamentalmente, o endereamento compartilhado significa que difcil isolar um processador e substitu-lo sem um rduo trabalho por parte do sistema operacional. J

9-22

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

que o software de cluster uma camada que roda sobre o sistema operacional executado em cada computador, muito mais fcil desconectar e substituir uma mquina defeituosa. Como os clusters so construdos por meio de computadores inteiros e redes independentes e escalveis, esse isolamento tambm facilita expandir o sistema sem paralisar a aplicao que roda sobre o cluster. A alta disponibilidade e a rpida e gradual expansibilidade tornam os clusters atraentes para provedores de servios para a World Wide Web. Em um lado da batalha, para combater a limitao de alta disponibilidade dos multiprocessadores, os projetistas de hardware e os desenvolvedores de sistemas operacionais esto procurando oferecer a capacidade de executar mltiplos sistemas operacionais em partes da mquina completa, de modo que um n possa falhar ou ser atualizado sem desativar a mquina inteira. No outro lado da batalha, j que tanto a administrao do sistema quanto os limites de tamanho de memria so aproximadamente lineares no nmero de mquinas independentes, algumas pessoas esto reduzindo os problemas de cluster construindo clusters a partir de SMP de pequena escala. Por exemplo, um cluster de 32 processadores pode ser construdo com oito SMPs de quatro processadores ou quatro SMPs de oito processadores. Esses clusters hbridos algumas vezes chamados constelao Um cluster constelaes, ou clusters de memria compartilhada esto se tornando populares com aplicaes que usa SMP como o que se importam com custo/desempenho, disponibilidade e expansibilidade. A Figura 9.1.1 mostra bloco de construo. que cerca da metade dos clusters nos 500 melhores supercomputadores contm estaes de trabalho de processador nico e cerca de metade dos clusters contm servidores SMPs.

9.6

Topologias de rede

O Captulo 8 examinou as redes locais comutadas, facilmente encontradas no mercado, que so a base dos clusters. Nesta seo, descreveremos as redes proprietrias usadas em multiprocessadores. Os custos de rede incluem o nmero de chaves, o nmero de links em uma chave para conectar rede, a largura (nmero de bits) por link e a extenso dos links quando a rede mapeada para uma mquina fsica. Por exemplo, em uma mquina que escala entre dezenas e centenas de processadores, alguns links podem ser retngulos de metal dentro de um chip que possuem alguns milmetros de comprimento, e outros podem ser cabos que precisam percorrer vrios metros de um rack at outro. O desempenho de rede tambm multifacetado. Ele inclui a latncia em uma rede no carregada para enviar e receber uma mensagem, a vazo em termos do nmero mximo de mensagens que podem ser transmitidas em um determinado perodo, atrasos causados por conteno para uma parte da rede e desempenho varivel dependendo do padro de comunicao. Outro requisito da rede pode ser a tolerncia a falhas, j que sistemas muito grandes podem precisar operar na presena de componentes quebrados. As redes normalmente so desenhadas como grficos, com cada arco do grfico representando um link da rede de comunicao. O n processador-memria mostrado como um quadrado preto, e a chave mostrada como um crculo em cinza. Nesta seo, todos os links so bidirecionais; ou seja, as informaes podem fluir em qualquer direo. Todas as redes consistem de chaves cujos links vo para os ns processador-memria e para outras chaves. A primeira melhoria sobre um barramento uma rede que conecta uma seqncia de ns:

Essa topologia chamada de anel. Como alguns ns no esto diretamente conectados, algumas mensagens precisaro saltar por ns intermedirios at chegarem no destino final.

9.6

Topologias de rede

9-23

Ao contrrio de um barramento, um anel capaz de muitas transferncias simultneas. Como existem inmeras topologias a escolher, so necessrias mtricas de desempenho para distinguir esses projetos. Duas delas so populares. A primeira a largura de banda de rede total, que a largura de banda de cada link multiplicada pelo nmero de links. Isso representa o melhor caso. Para essa rede em anel com P processadores, a largura de banda de rede total seria P vezes a largura de banda de um link; a largura de banda de rede total de um barramento exatamente a largura de banda desse barramento, ou duas vezes a largura de banda desse link. Para equilibrar esse melhor caso, inclumos outra mtrica mais prxima do pior caso: a largura de banda de bisseo. Isso calculado dividindo-se a mquina em duas partes, cada uma com a metade dos ns. Depois, voc soma a largura de banda dos links que interceptam essa linha divisria imaginria. A largura de banda de bisseo de um anel duas vezes a largura de banda de link e uma vez a largura de banda para o barramento. Se um nico link for to rpido quanto o barramento, o anel ser apenas duas vezes mais rpido quanto um barramento no pior caso, mas ser P vezes mais rpido no melhor caso. Como algumas topologias de rede no so simtricas, a questo onde desenhar a linha imaginria quando criar a bisseo da mquina. Essa uma mtrica de pior caso; portanto, a resposta escolher a diviso que produz o desempenho de rede mais pessimista; ou seja, calcule todas as larguras de banda de bisseo possveis e escolha a menor. Empregamos essa viso pessimista porque os programas paralelos normalmente so limitados pelo link mais fraco na cadeia de comunicao. No outro extremo de um anel est uma rede totalmente conectada, na qual cada processador possui um link bidirecional para todos os outros processadores. Para as redes totalmente conectadas, a largura de banda de rede total P (P 1)/2 e a largura de banda de bisseo (P/2)2. A enorme melhoria no desempenho das redes totalmente conectadas contrabalanada pelo enorme aumento do custo. Isso inspira os engenheiros a desenvolverem novas topologias que estejam entre o custo dos anis e o desempenho das redes totalmente conectadas. A avaliao do sucesso depende, em grande parte, da natureza da comunicao no workload dos programas paralelos executados na mquina. Seria difcil contar o nmero de topologias diferentes que tm sido discutidas nas publicaes, mas o nmero que tem sido usado nos processadores paralelos comerciais apenas um punhado. A Figura 9.6.1 ilustra duas topologias comuns. As mquinas reais geralmente acrescentam links extras a essas topologias simples para melhorar o desempenho e a confiabilidade. Uma alternativa para colocar um processador em cada n em uma rede deixar apenas a chave em alguns desses ns. As chaves so menores que os ns processador-memria-chave e, portanto, po-

largura de banda de rede Informalmente, a taxa de transferncia de pico de uma rede. Pode se referir velocidade de um nico link ou taxa de transferncia coletiva de todos os links na rede.

rede totalmente conectada Uma rede que conecta ns processador-memria fornecendo um link de comunicao dedicado entre cada n.

a. Grade ou malha bidimensional de 16 ns

b. rvore n-cubo de 8 ns (8 = 23, ento, n = 3)

FIGURA 9.6.1 Topologias de rede que aparecem nos processadores paralelos comerciais. Os crculos re-

presentam chaves e os quadrados representam ns processador-memria. Mesmo que uma chave tenha muitos links, normalmente apenas um chega no processador. A topologia booleana de n-cubo uma interconexo de n dimenses com 2n ns, exigindo n links por chave (mais um para o processador) e, portanto, n ns vizinhos mais prximos. Essas topologias bsicas freqentemente so suplementadas com arcos extras para melhorar o desempenho e a confiabilidade.

9-24

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

FIGURA 9.6.2 Topologias de rede multiestgio comuns para oito ns. As chaves nesses desenhos so mais simples do que nos desenhos anteriores porque os links so unidirecionais; os dados entram na parte inferior e saem no link direito. A chave em c pode passar A para C e B para D ou B para C e A para D. A crossbar usa n2 chaves, onde n o nmero de processadores, enquanto a rede Omega usa n/2 log2 n grandes chaves, cada uma composta logicamente de quatro chaves menores. Nesse caso, a crossbar usa 64 chaves contra 12 chaves grandes, ou 48 chaves, na rede Omega. Entretanto, a crossbar pode suportar qualquer combinao de mensagens entre processadores, enquanto a rede Omega no pode.

redes multiestgio Uma rede que fornece uma pequena chave em cada n.

dem ser agrupadas mais densamente, diminuindo, assim, a distncia e aumentando o desempenho. Essas redes so chamadas de redes multiestgio para refletir as mltiplas etapas que uma mensagem precisa percorrer. Os tipos de redes multiestgio so to numerosos quanto as redes de estgio nico; a Figura 9.6.2 ilustra duas organizaes multiestgio comuns. Uma rede totalmente conecrede totalmente tada ou uma rede crossbar permite que qualquer n se comunique com qualquer outro n em uma conectada Uma rede passagem pela rede. Uma rede Omega usa menos hardware do que a rede crossbar (2n log2 n contra que conecta ns n2 chaves), mas pode ocorrer conteno entre mensagens, dependendo do padro de comunicao. processador-memria fornecendo um link de Por exemplo, a rede Omega na Figura 9.6.2 no pode enviar uma mensagem de P0 para P6 ao mesmo comunicao dedicado tempo em que envia uma mensagem de P1 para P7.
entre cada n. rede crossbar Uma rede que permite que qualquer n se comunique com qualquer outro n em uma passagem pela rede.

Implementando topologias de rede


Essa anlise simples de todas as redes nesta seo ignora importantes consideraes prticas na construo de uma rede. A distncia de cada link afeta o custo da comunicao em uma alta velocidade de clock em geral, quanto mais longa a distncia, mais caro funcionar a uma alta velocidade de clock. Distncias mais curtas tambm facilitam a utilizao de mais fios por link, j que a energia necessria para conduzir muitos fios em um chip menor se os fios forem curtos. Fios mais curtos tambm so mais baratos do que fios mais longos. Uma ltima limitao prtica que os desenhos

9.7

Multiprocessadores no interior de um chip e multithreading

9-25

bidimensionais precisam ser mapeados para chips e placas que so essencialmente meios bidimensionais. A concluso que as topologias que parecem elegantes quando desenhadas no quadro-negro podem parecer desajeitadas quando construdas com chips, cabos, placas e caixas.

9.7

Multiprocessadores no interior de um chip e multithreading

Uma alternativa aos multiprocessadores que compartilham uma interconexo trazer os processadores para dentro do chip. Nesses projetos, os processadores normalmente compartilham algumas das caches e a interface de memria externa. Claramente, as latncias associadas comunicao chip a chip desaparecem quando tudo est no mesmo chip. A questo : Qual o impacto dos processadores na hierarquia de memria?. Se eles estiverem executando o mesmo cdigo, como um banco de dados, ento, os processadores pelo menos amortizam os acessos de instruo. As estruturas de dados compartilhadas tambm so um problema muito menor quando as caches so compartilhadas. Vrias empresas anunciaram microprocessadores com mltiplos ncleos por chip. A idia de aumentar a utilizao de recursos em um chip por meio da execuo paralela de threads encontrou outra implementao. O multithreading permite que vrias threads compartilhem as unidades funcionais de um nico processador de um modo sobreposto. Para permitir esse compartilhamento, o processador precisa duplicar o estado independente de cada thread. Por exemplo, uma cpia separada do banco de registradores, um PC separado e uma tabela de pginas separada so necessrios para cada thread. A memria em si pode ser compartilhada por meio de mecanismos de memria virtual, que j suportam multiprogramao. Alm disso, o hardware precisa suportar a capacidade de mudar para uma thread diferente com relativa rapidez; em especial, uma troca de thread deve ser muito mais eficiente do que uma troca de processo, que normalmente exige centenas a milhares de ciclos de processador. Existem dois mtodos principais de multithreading. O multithreading fine-grained comuta entre threads a cada instruo, resultando em execuo intercalada de vrias threads. Essa intercalao feita de forma circular, saltando quaisquer threads que estejam suspensas nesse momento. Para tornar o multithreading fine-grained prtico, o processador precisa ser capaz de trocar threads a cada ciclo de clock. Uma importante vantagem do multithreading fine-grained que ele pode ocultar as perdas de vazo que surgem dos stalls curtos e longos, j que as instrues de outras threads podem ser executadas quando uma thread suspensa. A principal desvantagem do multithreading fine-grained que ele torna mais lenta a execuo das threads individuais, j que uma thread que est pronta para ser executada sem stalls ser atrasada por instrues de outras threads. O multithreading coarse-grained foi criado como uma alternativa para o multithreading fine-grained. Esse mtodo de multithreading comuta threads apenas em stalls onerosos, como as falhas de cache de nvel 2. Essa mudana reduz a necessidade de tornar a comutao de thread essencialmente gratuita e tem muito menos chance de tornar mais lenta a execuo de uma thread individual, visto que s sero despachadas instrues de outras threads quando uma thread encontrar um stall oneroso. Entretanto, o multithreading coarse-grained sofre de uma grande desvantagem: Ele limitado em sua capacidade de sanar perdas de vazo, especialmente de stalls mais curtos. Essa limitao surge dos custos de inicializao de pipeline do multithreading coarse-grained. Como uma CPU com multithreading coarse-grained despacha instrues por meio de uma nica thread, quando um stall ocorre, o pipeline precisa ser esvaziado ou congelado. A nova thread que comea a ser executada aps o stall precisa preencher o pipeline antes que as instrues consigam ser concludas. Devido a esse overhead de inicializao, o multithreading coarse-grained muito mais til para reduzir a penalidade dos stalls de alto custo, onde a reposio de pipeline insignificante comparada com o tempo de stall.

9-26

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

O simultaneous multithreading (SMT) uma variao de multithreading que usa os recursos de um processador de despacho mltiplo escalonado dinamicamente para explorar paralelismo em nvel de thread ao mesmo tempo em que explora o paralelismo em nvel de instruo. O princpio mais importante que motiva o SMT que os processadores de despacho mltiplo modernos normalmente possuem mais paralelismo de unidade funcional do que uma nica thread efetivamente pode usar. Alm disso, com a renomeao de registradores e o escalonamento dinmico, diversas instrues de threads independentes podem ser despachadas inconscientemente das dependncias entre elas; a resoluo das dependncias pode ser tratada pela capacidade de escalonamento dinmico. A Figura 9.7.1 ilustra conceitualmente as diferenas na capacidade de um processador de explorar recursos superescalares para as configuraes de processador a seguir. A parte superior mostra como quatro threads seriam executadas de forma independente em um superescalar sem suporte a multithreading. A parte inferior mostra como as quatro threads poderiam ser combinadas para serem executadas no processador de maneira mais eficiente usando trs opes de multithreading:
n n n

Um superescalar com multithreading coarse-grained Um superescalar com multithreading fine-grained Um superescalar com simultaneous multithreading

No superescalar sem suporte a multithreading, o uso dos slots de despacho limitado por uma falta de paralelismo em nvel de instruo. Alm disso, um importante stall, como uma falha de cache de instrues, pode deixar o processador inteiro ocioso.

Slots de despacho Thread A Thread B Thread C Thread D

Tempo

Slots de despacho MT coarse Tempo MT fine SMT

FIGURA 9.7.1 Como quatro threads usam os slots de despacho de um processador superescalar em diferentes mtodos. As quatro threads no alto mostram como cada uma seria executada em um processador superescalar padro sem suporte a multithreading. Os trs exemplos embaixo mostram como elas seriam executadas juntas em trs opes de multithreading. A dimenso horizontal representa a capacidade de despacho de instruo em cada ciclo de clock. A dimenso vertical representa uma seqncia dos ciclos de clock. Uma caixa vazia (branco) indica que o slot de despacho correspondente est vago nesse ciclo de clock. Os tons de cinza e preto correspondem a quatro threads diferentes nos processadores multithreading. Os efeitos de inicializao de pipeline adicionais para MT coarse, que no esto ilustrados nessa figura, levariam a mais perda na vazo para MT coarse.

9.7

Multiprocessadores no interior de um chip e multithreading

9-27

No superescalar com multithreading coarse-grained, os longos stalls so parcialmente ocultados pela comutao para outra thread que usa os recursos do processador. Embora isso reduza o nmero de ciclos de clock completamente ociosos, dentro de cada ciclo de clock, as limitaes do paralelismo em nvel de instruo ainda produzem ciclos ociosos. Alm disso, em um processador com multithreading coarse-grained, como a comutao de thread ocorre apenas quando h um stall e a nova thread tem um perodo de inicializao, provvel que ainda restem ciclos ociosos. No caso fine-grained, a intercalao dos threads elimina os slots completamente vazios. No entanto, como apenas uma thread despacha instrues em um determinado ciclo de clock, as limitaes do paralelismo em nvel de instruo ainda geram um nmero significativo de slots ociosos dentro dos ciclos de clock individuais. No caso SMT, o paralelismo em nvel de thread (TLP) e o paralelismo em nvel de instruo (ILP) so explorados simultaneamente, com mltiplas threads usando os slots de despacho em um nico ciclo de clock. O ideal que o uso de slots de despacho seja limitado por desequilbrios nas necessidades e na disponibilidade de recursos entre mltiplas threads. Na prtica, outros fatores como a quantidade de threads ativas consideradas, as limitaes finitas dos buffers, a capacidade de buscar instrues suficientes das mltiplas threads e as limitaes prticas de que combinaes de instrues podem ser despachadas de uma thread e de vrias threads tambm podem restringir o nmero de slots usados. Embora a Figura 9.7.1 simplifique bastante a operao real desses processadores, ela ilustra as potenciais vantagens de desempenho do multithreading em geral e do SMT em particular. Como mencionado anteriormente, o simultaneous multithreading usa o princpio de que um processador com escalonamento dinmico j tem muitos dos mecanismos de hardware necessrios para suportar a explorao integrada do TLP por meio do multithreading. Em particular, os processadores superescalares com escalonamento dinmico tm um grande conjunto de registradores que podem ser usados para conter os conjuntos de registradores de threads independentes (considerando que tabelas de renomeao separadas so mantidas para cada thread). Como a renomeao de registradores fornece identificadores de registrador nicos, as instrues de mltiplas threads podem ser misturadas no caminho de dados sem que origens e destinos sejam confundidos entre as threads. Essa observao nos leva ao princpio de que o multithreading pode ser construdo sobre um processador com execuo fora de ordem incluindo uma tabela de renomeao por thread, mantendo PCs separados e fornecendo a capacidade de trmino de instrues de mltiplas threads. Existem complicaes para tratar o trmino de instrues, j que gostaramos que instrues de threads independentes fossem capazes de terminar independentemente. O trmino independente de instrues de threads separadas pode ser suportado mantendo logicamente um buffer de reordenao separado para cada thread. Existe uma variedade de outros desafios de projeto para um processador SMT, incluindo os seguintes:
n n

Lidar com um banco de registradores maior, necessrio para conter vrios contextos Manter o overhead baixo no ciclo de clock, particularmente em fases crticas como o despacho de instruo, no qual mais instrues candidatas precisam ser consideradas, e no trmino da instruo, no qual pode ser complicado escolher as instrues a serem finalizadas Garantir que os conflitos de cache gerados pela execuo simultnea das mltiplas threads no causem reduo de desempenho significativa

Analisando esses problemas, duas observaes so importantes. Primeiro, em muitos casos, o overhead de desempenho potencial devido ao multithreading pequeno e escolhas simples funcionam bastante bem. Segundo, a eficincia dos superescalares to baixa que existe espao para uma significativa melhoria, mesmo ao custo de algum overhead. O SMT parece ser o mtodo mais promissor de conseguir essa melhoria na vazo. A Intel chama seu suporte de SMT no Pentium 4 de Hyper-Threading. Dobrando o estado arquitetural do IA-32, ele suporta apenas duas threads, que compartilham todas as caches e unidades funcionais.

9-28

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

9.8

Vida real: o cluster de PCs do Google

Os mecanismos de busca possuem uma grande necessidade de confiabilidade, j que so usados por pessoas em qualquer hora do dia e de qualquer lugar do mundo. O Google, essencialmente, precisa estar sempre disponvel. Como um mecanismo de busca costuma interagir com uma pessoa, sua latncia no deve exceder a pacincia dos seus usurios. A meta do Google que nenhuma busca leve mais de 0,5 segundo, j considerando os atrasos da rede. A largura de banda tambm vital. O Google serve uma mdia de aproximadamente 1.000 consultas por segundo e j buscou e indexou mais de 3 bilhes de pginas. Alm disso, um mecanismo de busca precisa pesquisar a Web regularmente para ter informaes atualizadas. O Google examina toda a Web e atualiza seu ndice a cada quatro semanas, de modo que toda pgina Web visitada uma vez por ms. O Google tambm mantm uma cpia local do texto da maioria das pginas para que possa fornecer o fragmento do texto bem como uma cpia em cache da pgina. Para fazer frente a essa demanda, o Google usa mais de 6.000 processadores e 12.000 discos, o que lhe confere um total de aproximadamente 1 petabyte de armazenamento em disco. Em vez de conseguir disponibilidade usando armazenamento RAID, o Google se baseia em sites redundantes, cada um com milhares de discos e processadores: dois sites no Vale do Silcio e dois na Virgnia. O ndice de busca, que um pequeno nmero de terabytes, alm do depsito de pginas em cache, que est na ordem no mesmo tamanho, so duplicados ao longo do sites. Portanto, se um site falhar, ainda existem dois outros sites que podem sustentar o servio. Alm disso, o ndice e o depsito so duplicados dentro de um site para ajudar a compartilhar o workload e a continuar a fornecer servio dentro de um site mesmo se os componentes falharem. Cada site est conectado Internet por meio de links OC48 (2488 Mbit/s) do site de colocao. Para se precaver de falhas do link de colocao, existe um link OC12 separado conectando um par de sites de modo que, em uma emergncia, ambos os sites possam usar o link Internet de um dos sites. O link externo improvvel de falhar em ambos os sites, uma vez que diferentes provedores de rede fornecem linhas OC48. A Figura 9.8.1 mostra a planta baixa de um site tpico. O link OC48 conectado a dois switches Ethernet de 128 128 por meio de um grande switch. Observe que esse link tambm est conectado ao restante dos servidores no site. Esses dois switches so redundantes de modo que uma falha de switch no desconecte o site. Tambm h um link OC12 dos switches Ethernet de 128 128 para o site irmo, para emergncias. Cada switch pode se conectar a 128 linhas Ethernet de 1 Gbit/seg. Racks de PCs, cada um com 4 interfaces Ethernet de 1 Gbit/s, so conectados aos dois switches Ethernet de 128 128. Portanto, um nico site pode suportar 2 128/4 ou 64 racks de PCs. A Figura 9.8.2 mostra o rack de PCs do Google. O Google usa PCs que so apenas 1 unidade de rack VME. Para conectar esses PCs aos switches Ethernet de 128 128, ele usa um pequeno switch Ethernet. Ele possui 4 RU de altura, deixando espao no rack para 40 PCs. Esse switch possui interfaces de rede modulares, organizadas como lminas removveis. Cada lmina pode conter 8 interfaces Ethernet de 100Mbit/s ou uma nica interface de rede. Portanto, 5 lminas so usadas para conectar cabos Cat5 de 100Mbit/s a cada um dos 40 PCs no rack, e 2 lminas so usadas para conectar cabos de cobre de 1Gbit/s a dois switches Ethernet de 128 128. Para compactar ainda mais PCs, o Google escolheu um rack que oferece a mesma configurao na frente e atrs, resultando em 80 PCs e dois switches por rack, como mostra a Figura 9.8.2. Esse sistema possui um espao de aproximadamente 91,44cm no centro entre as colunas de PCs para a sada do ar quente, que retirada da chamin por meio de ventoinhas de exausto no alto do rack. O PC propriamente dito bastante comum: duas unidades ATA/IDE, 256MB de SDRAM, um modesto microprocessador Intel, uma placa-me de PC, uma fonte de alimentao e algumas ventoinhas. Cada PC executa o sistema operacional Linux. Para tirar o mximo proveito do investimento, a cada 2 a 3 meses o Google aumenta a capacidade das unidades ou a velocidade do processador. Por-

9.8

Vida real: o cluster de PCs do Google

9-29

Rack Rack Rack Rack OC12 OC48 Swtch de 128 x 128 Rack Rack Rack Rack Rack Rack Rack

Rack Rack Rack Rack Rack Rack Rack Rack Rack Rack

Rack Rack Rack Rack Rack Rack Rack Rack Rack Rack

Rack Rack Rack Rack Rack Rack Rack Rack Rack Rack Rack Swtch de 128 x 128 OC12 OC48

FIGURA 9.8.1 Planta baixa de um cluster do Google (viso area). Existem 40 racks, cada um conectado por meio de links Ethernet de cobre de 4Gbit a dois switches redundantes de 128 128. A Figura 9.8.2 mostra que um rack contm 80 PCs, de modo que essa instalao contm aproximadamente 3.200 PCs. (Para maior clareza, os links so mostrados apenas para o rack superior e inferior de cada fila.) Esses racks esto em um piso elevado para que os cabos possam estar ocultos e protegidos. Cada switch Ethernet de 128 128, por sua vez, est conectado rede do site de colocao por meio de um link OC48 (2.4 Gbit) Internet. Existem dois switches Ethernet de 128 128, de modo que o cluster ainda permanea conectado mesmo se um switch falhar. Tambm h um link OC12 (622 Mbit) separado prximo ao site de colocao para o caso de a rede OC48 do site de colocao falhar; ele ainda serve trfego pela OC12 rede do outro site. Cada switch Ethernet de 128 128 pode manipular 128 linhas Ethernet de 1Gbit e cada rack possui 2 linhas Ethernet de 1Gbit por switch, de modo que o nmero mximo de racks para o site 64. Os dois racks prximos aos switches Ethernet de 128 128 contm alguns PCs para atuarem como front-ends e ajudarem em tarefas como servio HTML, balanceamento de carga, monitoramento e no-break para manter o switch e os fronts ativos no caso de uma curta interrupo de energia. Parece que uma instalao que possui motores a diesel redundantes para fornecer energia independente para todo o site tornaria o no-break redundante. Uma pesquisa de usurios dos centros de dados sugere que falhas de energia ainda acontecem anualmente.

tanto, o site de 40 racks mostrado na Figura 9.8.1 foi preenchido com microprocessadores que variaram de um Celeron 533MHz a um Pentium III 800MHz, discos que variaram em capacidade entre 40 e 80GB e em velocidade entre 5.400 e 7.200RPM, e velocidade de barramento de memria que era de 100 ou 133MHz.

Desempenho
Cada site de colocao se conecta Internet por meio de links OC48 (2488 Mbit/s), que compartilhado pelo Google e outros provedores de servio de Internet. Se uma resposta tpica a uma consulta possui, digamos, 4.000 bytes, e se o Google serve 100 milhes de consultas por dia, ento, a demanda de largura de banda mdia 100.000.000 consultas dia 4.000 bytes consulta 8 bits byte 3.200.000Mbits 37Mbits/s = 24 60 60s dia 86.400s que apenas 1,5% da velocidade de link de cada site. Mesmo se multiplicarmos por um fator de 4 para considerar demanda de pico versus mdia de requisies e respostas, o Google precisa de pouco dessa largura de banda. Examinar a Web e atualizar os sites exige muito mais largura de banda do que servir as consultas. Vamos estimar alguns parmetros para colocar as coisas em perspectiva. Considere que sejam necessrios 7 dias para examinar 3 bilhes de pginas:

9-30

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Tampa com ventoinhas 1 2 3 4 5 6 7 8 9 Viso em close dos PCs de 1 RU 10 11 12 13 14 15 16 17 18 19 20 Viso frontal (tambm viso de trs) 48,26cm 21 22 76,2cm 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 Viso lateral

FIGURA 9.8.2 Viso frontal, viso lateral e close de um rack de PCs usado pelo Google. A fotografia esquerda mostra o pe-

queno switch Ethernet no centro, com 20 PCs acima e 20 PCs abaixo no rack Rackable Systems. Cada PC est conectado ao switch no centro por meio de um cabo Cat5 no lado esquerdo, com Ethernet de 100Mbit. Cada lmina do switch pode conter oito interfaces Ethernet de 100Mbit ou uma interface de 1Gbit. Tambm h dois links Ethernet de 1 Gbit saindo do switch direita. Portanto, cada PC tem apenas dois cabos: um Ethernet e um cabo de fora. A extremidade direita da foto mostra uma barra de energia, com cada um dos 40 PCs e o switch conectados nela. Cada PC possui 1 unidade de rack (RU) VME de altura. O switch no meio possui 4 RU de altura. A foto ao centro um close de um rack, mostrando o contedo de um PC de 1 RU. Essa unidade contm duas unidades IDE de 5.400RPM direita da caixa, 256MB de SDRAM de 100MHz, uma placa-me de PC, uma nica fonte de alimentao e um microprocessador Intel. Cada PC executa verses 2.2.16 ou 2.2.17 do kernel Linux em uma distribuio Red Hat ligeiramente modificada. Voc pode ver os cabos Ethernet esquerda, os cabos de fora direita e cabos Ethernet conectados ao switch no alto da figura. Em dezembro de 2000, o custo das partes no separadas era aproximadamente US$500 para os dois discos, US$200 para o microprocessador, US$100 para a placa-me e US$100 para a DRAM. Incluindo o gabinete, a fonte de alimentao, as ventoinhas, o cabeamento etc., um PC montado pode custar de US$1.300 a US$1.700. O desenho direita mostra que os PCs so mantidos em duas colunas, frontal e traseira, de modo que um nico rack contm 80 PCs e dois switches. A potncia tpica por PC aproximadamente 55 watts e cerca de 70 watts por switch, de modo que um rack consome cerca de 4.500 watts. O calor exaurido para uma abertura entre as duas colunas e o ar quente retirado pelo alto usando ventoinhas. (O desenho mostra 22 PCs por lado, cada um com 2 RU de altura, em vez da configurao do Google de 40 PCs de 1 RU mais um switch por lado.)

3.000.000.000 pginas 4000bytes pgina 8 bits byte 96.000.000Mbits 159Mbits/s = 604.800s 24 60 60s dia 7 dias Esses dados so coletados em um nico site, mas o ndice e o depsito final de vrios terabytes precisam, ento, ser duplicados nos outros dois sites. Se considerarmos que temos 7 dias para duplicar os dados e que estamos enviando, digamos, 15TB de um site para dois sites, ento, a demanda de largura de banda mdia 1500000 . . 0MB 8 bits byte 240.000.000Mbits 396Mbits/s = 604.800s 2 24 60 60s dia 7 dias

1,82m

9.8

Vida real: o cluster de PCs do Google

9-31

Portanto, a largura de banda mquina-pessoa relativamente insignificante, com a largura de banda real sendo de mquina para mquina. Essa ainda uma pequena frao dos 2.488Mbits/s disponveis. O tempo de vo para mensagens por meio dos Estados Unidos de aproximadamente 0,1 segundo; ento, importante para a Europa ser servida por sites da Virgnia e para a Califrnia ser servida por sites do Vale do Silcio. Para tentar atingir a meta de 0,5 segundo de latncia, o software do Google normalmente estima de onde a busca se origina a fim de reduzir os atrasos de tempo de vo.

Custo
Visto que o bloco bsico de construo do cluster do Google um PC, o custo de capital de um site normalmente uma funo do custo de um PC. Em vez de comprar o microprocessador mais recente, o Google procura o de melhor custo-desempenho. Estimamos que o custo de PC era de US$1.300 a US$1.700. Os switches custam cerca de US$1.500 para o switch Ethernet pequeno e cerca de US$100.000 cada uma para os switches Ethernet de 128 128. Se os racks custam aproximadamente US$1.000 a US$2.000 cada um, o custo de capital total de um site de 40 racks de aproximadamente US$4,5 milhes a US$6 milhes. Incluindo 3.200 microprocessadores e 0,8TB de DRAM, o armazenamento em disco custa cerca de US$10.000 a US$15.000 por terabyte. Se eles tivessem comprado servidores e arrays de disco padro nesse espao de tempo, seu custo teria sido 5 a 10 vezes mais alto. O rack do Google com 80 PCs, com cada PC operando em aproximadamente 55W, usa 4.500W em 0,92 metro quadrado. Ele consideravelmente mais alto do que os 1.000W por rack esperados pelos sites de colocao. Cada rack do Google usa 60amps. Como mencionado anteriormente, reduzir o consumo por PC uma grande oportunidade para o futuro desses clusters, especialmente porque o custo por kilowatt-hora est aumentando e o custo por Mbit/s est diminuindo.

Confiabilidade
A maior origem de falhas de componente no cluster de PCs do Google o software. Em um dia mdio, cerca de 20 mquinas sero reiniciadas e isso normalmente resolve o problema. Para reduzir o nmero de cabos por PC, bem como o custo, o Google no tem a capacidade de reiniciar remotamente uma mquina. O software pra de enviar trabalho a uma mquina quando observa um comportamento incomum, o operador chama o site de colocao e informa o local da mquina que precisa ser reiniciada, e uma pessoa no site encontra o rtulo e pressiona o boto no painel frontal. Ocasionalmente, a pessoa pressiona o boto errado por engano ou por rotulao incorreta no lado de fora da caixa. O prximo problema de confiabilidade de componente o hardware, que apresenta cerca de 1/10 das falhas de software. Normalmente, cerca de 2% a 3% dos PCs precisam ser substitudos por ano, sendo que as falhas devido a discos e DRAM respondem por 95% dessas falhas. Os 5% restantes so devido a problemas com a placa-me, fonte de alimentao, conectores etc. os microprocessadores em si nunca parecem falhar. As falhas de DRAM talvez sejam um tero das falhas de componentes de hardware. O Google v erros tanto de mudana de bits dentro da DRAM quanto de transferncia de bits pelo barramento de 100 a 133MHz. Como no havia qualquer proteo de ECC disponvel para os chip-sets da placa-me do desktop PC no momento, ela no era usada. A DRAM determinada como sendo o problema quando o Linux no pode ser instalado com um checksum correto at que a DRAM seja substituda. O Google planeja usar ECC para corrigir algumas falhas, mas, principalmente, para facilitar saber quando as DRAMs falham. O custo extra do ECC insignificante devido grande flutuao nos preos da DRAM; procedimentos de compra cuidadosos so mais importantes do que o fato de a DIMM ter ECC. Os discos so a ltima causa das falhas do PC. Alm das falhas comuns que resultam em uma mensagem para o log de erro no console, em nmeros quase iguais, esses discos ocasionalmente re-

9-32

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

sultaro em uma falha de desempenho, sem qualquer mensagem de erro para o log. Em vez de gerar larguras de banda de leitura normais em 28MB/s, os discos repentinamente cairo para 4MB/s ou mesmo 0,8MB/s. Como os discos esto sob garantia por cinco anos, o Google devolve para o fabricante os discos com falhas operacionais ou de desempenho a fim de obter substituies. Portanto, no tem havido qualquer explorao do motivo para as anomalias de disco. Quando um PC apresenta problemas, ele reconfigurado fora do sistema e, aproximadamente uma vez por semana, uma pessoa remove os PCs defeituosos. Eles normalmente so reparados e, ento, reinseridos no rack. Com relao aos switches, em um perodo de mais de dois anos, talvez 200 dos pequenos switches Ethernet foram instalados e 2 ou 3 falharam. Nenhum dos seis switches Ethernet de 128 128 falhou no campo, embora alguns tenham tido problemas na distribuio. Esses switches possuem um desenho baseado em lminas com 16 lminas por switch e 2 ou 3 das lminas falharam. O ltimo aspecto a confiabilidade da colocao. Muitos provedores de servio de Internet experimentam uma interrupo de energia por ano que afeta o site inteiro ou uma frao de um site. Em mdia, tambm h uma interrupo de rede de modo que o site inteiro seja desconectado da Internet. Essas interrupes podem durar horas. O Google acomoda a falha de segurana da colocao tendo diversos sites com diferentes provedores de rede, alm de linhas alugadas entre pares de sites para emergncias. As faltas de energia, as interrupes de rede etc. no afetam a disponibilidade do servio Google. O Google no teve sequer uma interrupo desde que a empresa tinha alguns meses de atividade.
Nmero 9: Cite o desempenho em Falcias e armadilhas termos de utilizao do processador, Os muitos ataques ao processamento paralelo revelaram inmeras falcias e armadilhas. Veremos speedups trs delas aqui. paralelos ou MFLOPS por Armadilha: medir o desempenho dos processadores paralelos por speedup linear versus tempo dlar.

9.9

de execuo.

David H. Bailey, Twelve ways to fool the masses when giving performance results on parallel supercomputers, Supercomputing Review, 1991

Os grficos tiro de morteiro representao do desempenho comparado com o nmero de processadores, mostrando speedup linear, um plat e, depois, uma queda foram usados por muito tempo para julgar o sucesso dos processadores paralelos. Embora a escalabilidade seja um aspecto de um programa paralelo, ela uma medida indireta do desempenho. A primeira pergunta a ser feita se refere capacidade dos processadores dimensionados: Um programa que melhora linearmente o desempenho para igualar a 100 processadores Intel 80386 pode ser mais lento do que a verso seqencial em um nico computador desktop Pentium 4. Medir resultados usando speedup linear comparado com o tempo de execuo pode iludir o programador bem como aqueles ouvindo as alegaes de desempenho do programador. Muitos programas com fraco speedup so mais rpidos do que programas que mostram excelente speedup conforme aumenta o nmero de processadores. Comparar tempos de execuo aconselhvel apenas se voc estiver comparando os melhores algoritmos em cada mquina. ( claro que voc no pode subtrair tempo para processadores ociosos quando avaliar um processador paralelo; portanto, o tempo de CPU uma mtrica imprpria para processadores paralelos.) Comparar o cdigo idntico em duas mquinas pode parecer correto, mas no ; o programa paralelo pode ser mais lento em um uniprocessador do que em uma verso seqencial. Algumas vezes, desenvolver um programa paralelo levar a melhorias algortmicas; portanto, comparar o programa seqencial anteriormente mais conhecido com o cdigo paralelo o que parece correto compara algoritmos imprprios. Para refletir esse problema, os termos speedup relativo (mesmo programa) e speedup real (melhores programas) algumas vezes so usados.

9.9

Falcias e armadilhas

9-33

Falcia: a Lei de Amdahl no se aplica aos computadores paralelos. Em 1987, o diretor de uma organizao de pesquisa afirmou que a Lei de Amdahl tinha sido quebrada por uma mquina de multiprocessador. Para tentar entender a base dos relatrios da mdia, vejamos a citao que nos trouxe a Lei de Amdahl [1967, p. 483]: Uma concluso bastante bvia que pode ser tirada nesse momento que o esforo despendido em conseguir altas velocidades de processamento paralelo desperdiado se no for acompanhado de conquistas de mesmas propores nas velocidades de processamento seqencial. Essa afirmao ainda deve ser verdadeira; a parte ignorada do programa deve limitar o desempenho. Uma interpretao da lei leva ao seguinte princpio: partes de cada programa precisam ser seqenciais e, portanto, precisa haver um limite superior lucrativo para o nmero de processadores digamos, 100. Mostrando speedup linear com 1.000 processadores, esse princpio se torna falso e, ento, a Lei de Amdahl foi quebrada. O mtodo dos pesquisadores foi mudar a entrada para o benchmark: em vez de ir 1.000 vezes mais rpido, eles calcularam 1.000 vezes mais trabalho em tempo comparvel. Para o algoritmo deles, a parte seqencial do programa era constante, independente do tamanho da entrada, e o restante era totalmente paralelo da, speedup linear com 1.000 processadores. Simplesmente escalar o tamanho das aplicaes, sem tambm escalar a preciso do ponto flutuante, o nmero de iteraes, as necessidades de E/S e a maneira como as aplicaes lidam com erros pode ser uma atitude ingnua. Muitas aplicaes no calcularo o resultado correto se o tamanho do problema for inadvertidamente aumentado. No vemos razo para que a Lei de Amdahl no se aplique aos processadores paralelos. O que essa pesquisa salienta a importncia de ter benchmarks que possam crescer o suficiente para demonstrar o desempenho de processadores paralelos de grande escala. Falcia: o desempenho de pico segue o desempenho observado. Uma definio de desempenho de pico o desempenho que uma mquina seguramente no ir exceder. Infelizmente, a indstria de supercomputadores tem usado essa mtrica no marketing e sua falcia est sendo extrapolada com as mquinas paralelas. Os marqueteiros do setor no s esto usando o quase inatingvel desempenho de pico de um n de uniprocessador (veja a Figura 9.9.1), mas tambm eles o esto multiplicando pelo nmero total de processadores, considerando um speedup perfeito! A Lei de Amdahl sugere como difcil alcanar qualquer um dos picos; multiplicar um pelo outro tambm multiplica os erros. A Figura 9.9.2 compara o pico com o desempenho sustentado em um benchmark; o IBM SP2 de 64 processadores atinge apenas 7% do desempenho de pico. Claramente, o desempenho de pico nem sempre segue o desempenho observado.
Avaliao de Pico em MFLOPS 940 800 1300 Mdia harmnica dos benchmarks Perfect Club em MFLOPS 14,8 08,3 16,6 Porcentagem de pico em MFLOPS 1% 1% 1%

Mquina Cray X-MP/416 IBM 3090-600S NEC SX/2

FIGURA 9.9.1 Desempenho de pico e mdia harmnica de desempenho real para os 12 benchmarks Perfect Club. Os resultados so para os programas executados sem modificao. Quando ajustados manualmente, o desempenho das trs mquinas vai para 24,4, 11,3 e 18,3 MFLOPS, respectivamente. Isso ainda 2% ou menos do desempenho de pico.

Cray YMP (8 processadores) MFLOPS Pico 3D FFT PDE 2.666 1.795 % do pico 100% 67%

IBM SP2 (64 processadores) MFLOPS 14.636 1.093 % do pico 100% 7%

FIGURA 9.9.2 Desempenho de pico versus desempenho observado para o Cray YMP e o IBM RS/6000 SP2.

9-34

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Essas alegaes de desempenho podem confundir o fabricante tanto quanto o usurio da mquina. O perigo que o fabricante desenvolva bibliotecas de software com sucesso julgado como porcentagem do desempenho de pico medido em megaflops em vez de levar menos tempo, ou que seja includo hardware que aumente o desempenho de pico do n, mas seja difcil de usar.

9.10

Comentrios finais

Por mais de uma dcada os analistas anunciam que a organizao de um nico computador alcanou seus limites e que avanos verdadeiramente significantes s podem ser feitos pela interconexo de uma multiplicidade de computadores de tal modo que permita soluo cooperativa... Demonstrou-se a continuada validade do mtodo de processador nico...
Gene Amdahl, Validity of the single processor approach to achieving large scale computing capabilities, Spring Joint Computer Conference, 1967

O sonho de construir computadores apenas agregando processadores existe desde os primeiros dias da computao. No entanto, o progresso na construo e no uso de processadores paralelos eficientes tem sido lento. Essa velocidade de progresso foi limitada pelos difceis problemas de software bem como por um longo processo de evoluo da arquitetura dos multiprocessadores para melhorar a usabilidade e a eficincia. Discutimos muitos dos problemas de software neste captulo, incluindo a dificuldade de escrever programas que obtm bom speedup devido Lei de Amdahl. A grande variedade de mtodos arquitetnicos diferentes e o sucesso limitado e a vida curta de muitas arquiteturas at agora se juntam s dificuldades de software. Abordaremos a histria do desenvolvimento desses multiprocessadores na Seo 9.11. Apesar desse longo e sinuoso passado, o progresso nos ltimos 20 anos nos d razes para sermos otimistas quanto ao futuro do processamento paralelo e dos multiprocessadores. Esse otimismo baseado em diversas observaes sobre esse progresso e as diretrizes de tecnologia de mdio prazo:
n

Agora, amplamente aceito que a maneira mais eficaz de construir um computador que oferea mais desempenho do que o obtido com um microprocessador de chip nico construindo um multiprocessador ou um cluster que potencialize as significativas vantagens de custo-desempenho dos microprocessadores produzidos em massa. Os multiprocessadores e clusters so altamente eficazes para workloads multiprogramados, que normalmente so o uso dominante dos mainframes e grandes servidores, bem como para servidores de arquivos ou servidores Web, que so um tipo restrito de workload paralelo. Quando um workload deseja compartilhar recursos, como um armazenamento de arquivos, ou pode compartilhar eficientemente o tempo de um recurso, como uma memria grande, um multiprocessador pode ser um host muito eficiente. Alm disso, o sistema operacional necessrio para executar workloads multiprogramados comum. O uso de processamento paralelo em domnios como a computao cientfica e de engenharia comum. Esse domnio de aplicao possui uma necessidade quase ilimitada de mais computao. Ele tambm possui muitas aplicaes com uma grande quantidade de paralelismo natural. Entretanto, ele no tem sido fcil: Programar processadores paralelos at para essas aplicaes continua sendo um desafio. Outra rea de aplicao importante, que possui um mercado muito maior, so os sistemas de bancos de dados e processamento de transao de grande escala. Esse domnio de aplicao tambm tem um grande paralelismo natural disponvel por meio de processamento paralelo de requisies independentes, mas suas necessidades para computao de grande escala, ao contrrio do mero acesso a sistemas de armazenamento em grande escala, so menos compreendidas.

9.10

Comentrios finais

9-35

O multiprocessamento on-chip parece estar crescendo em importncia por duas razes: Primeiro, no mercado embutido em que o paralelismo natural normalmente existe, esses mtodos so uma alternativa bvia para processadores mais rpidos e possivelmente menos eficientes. Segundo, reduzir as devolues no projeto de microprocessadores de topo de linha ir encorajar os projetistas a perseguirem o multiprocessamento on-chip como uma direo potencialmente mais lucrativa.

O futuro das arquiteturas MPP


Os multiprocessadores de pequena escala construdos usando esquemas de barramento de snooping Patterson so extremamente lucrativos. Tradicionalmente, os microprocessadores tm includo muito da lgideveriam passar ca para a coerncia de cache no chip de processador, e vrios permitem que os barramentos de dois os MPPs para o ou mais processadores sejam conectados diretamente implementando um barramento coerente Captulo 11. sem qualquer lgica adicional. Com os nveis de integrao modernos, os processadores mltiplos Jim Gray, quando podem ser colocados dentro de um nico die de silcio, resultando em um multiprocessador altamen- perguntado sobre a te lucrativo. Os recentes microprocessadores tm includo suporte para mtodos NUMA, possibiliabordagem dos MPPs na segunda tando conectarem quantidades de processadores pequenas a moderadas com pouco overhead. O que no est claro hoje como os processadores paralelos muito maiores sero construdos. As edio deste livro, aludindo dificuldades enfrentadas pelos projetistas incluem o mercado relativamente pequeno para multiproteo de processadores muito grandes e a necessidade de que multiprocessadores que escalem para nmefalncia do ros maiores de processadores sejam extremamente lucrativos com nmeros menores de processado- Captulo 11 da lei res, no qual a maioria dos multiprocessadores ser vendida. Parece haver quatro alternativas ligeira- americana (1995) mente diferentes para multiprocessadores de grande escala: 1. Projetar um cluster usando todos os componentes encontrados facilmente no mercado, o que oferece o custo mais baixo. A fora nesse mtodo reside no uso de tecnologia de produto em todo lugar: nos processadores (PC ou ns de estao de trabalho), na interconexo (tecnologia de rede local de alta velocidade, como Gigabit Ethernet) e no software (sistemas operacionais padro e linguagens de programao). claro que esses multiprocessadores usaro troca de mensagens, e a comunicao provavelmente ter latncia mais alta e largura de banda mais baixa do que os projetos alternativos. Para aplicaes que no precisam de alta largura de banda ou comunicao de baixa latncia, esse mtodo pode ser bastante lucrativo. Os servidores Web, como o cluster do Google, so um bom exemplo. 2. Projetar computadores em cluster que usam ns de processador encontrados facilmente no mercado e uma interconexo personalizada. A vantagem desse projeto a lucratividade do n de processador padro, que um computador desktop reembalado; a desvantagem que o modelo de programao provavelmente precisar ser o de troca de mensagens mesmo em um nmero de ns muito pequeno. O custo da interconexo personalizada pode ser significante e, portanto, encarecer o multiprocessador, em especial para pequenos nmeros de ns. Um exemplo o IBM SP. 3. Multiprocessadores de grande escala construdos por meio de clusters de multiprocessadores mdios com combinaes de tecnologias proprietrias e padro para interconectar esses multiprocessadores. Esse mtodo de cluster obtm sua lucratividade usando blocos de construo otimizados para o custo. Muitas empresas oferecem uma verso de topo de linha dessa mquina, incluindo a HP, a IBM e a Sun. Devido natureza de dois nveis do projeto, o modelo de programao algumas vezes precisa ser mudado de memria compartilhada para troca de mensagens ou para uma variao diferente de memria compartilhada, entre os clusters. Essa classe de mquinas tem feito importantes avanos, especialmente nas aplicaes comerciais. 4. Multiprocessadores de grande escala que crescem naturalmente, usando interconexo proprietria e tecnologia de controlador de comunicaes. Existem duas dificuldades principais com esses projetos. Primeiro, os multiprocessadores no so lucrativos em pequenas escalas, nas quais o custo da escalabilidade no avaliado. Segundo, esses multiprocessadores possuem modelos de programao que so incompatveis, em variados nveis, com os multiprocessadores menores e mdios convencionais. O SGI Origin um exemplo.
Hennessy e

9-36

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Cada um desses mtodos possui vantagens e desvantagens e a importncia das limitaes de qualquer mtodo dependente do tipo de aplicao. No se sabe ao certo qual vencer como multiprocessador de grande escala, embora o crescimento do mercado para servidores Web tenha tornado os racks de PCs a forma dominante, pelo menos pelo nmero de sistemas.

O futuro das arquiteturas de multiprocessadores


Como vimos no Captulo 6, os arquitetos esto usando tcnicas ainda mais complexas para tentar explorar mais paralelismo em nvel de instruo. Os candidatos para encontrar quantidades cada vez maiores de paralelismo em nvel de instruo de uma maneira eficiente de explorar so um tanto limitados. Como abordado no Captulo 7, existem problemas crescentes cada vez mais difceis de serem resolvidos na construo de hierarquias de memria para processadores de alto desempenho. Naturalmente, as constantes melhorias de tecnologia nos permitiro continuar a avanar na velocidade de clock. Entretanto, o uso das melhorias de tecnologia que permitem uma maior velocidade de porta, por si s, no suficiente para manter o incrvel crescimento de desempenho que a indstria tem experimentado por mais de 20 anos. Alm disso, enquanto a potncia aumenta mais de 100 watts por chip, no se sabe o quanto mais alto ela pode ir nos sistemas refrigerados a ar. Portanto, a potncia pode acabar sendo outro limite ao desempenho. Infelizmente, por mais de uma dcada, os aumentos no desempenho vieram custa de limitaes cada vez maiores no uso da rea de silcio, conexes externas e potncia. Esse fenmeno de reduo de retornos apenas recentemente pareceu ter diminudo a velocidade do crescimento de desempenho. O que est claro que no podemos sustentar a alta velocidade na melhoria de desempenho sem inovaes significativas na arquitetura de computadores. Com isso em mente, em 2004 parecia que a direo de longo prazo seria usar silcio aumentado para produzir mltiplos processadores em um nico chip. Essa direo atraente do ponto de vista da arquitetura ela oferece uma maneira de escalar o desempenho sem aumentar a complexidade do hardware. Ela tambm oferece um meio de facilitar algumas das dificuldades no projeto de sistema de memria, j que uma memria distribuda pode ser usada para escalar largura de banda enquanto mantm baixa latncia para acessos locais. Finalmente, os processadores redundantes podem ajudar com a confiana. O problema est no software e em que inovaes de arquitetura podem ser usadas para tornar o software mais fcil. Em 2000, a IBM anunciou os primeiros chips comerciais com dois processadores de uso geral em um nico die de silcio, o processador Power4. Cada Power4 contm dois processadores, uma cache secundria compartilhada, uma interface para uma cache terciria off-chip ou para a memria principal, e um sistema de comunicao chip a chip, que permite que um mdulo de quatro processadores conectados por crossbar seja construdo sem lgica adicional. Usando quatro chips Power4 e as DRAMs apropriadas, um sistema de oito processadores pode ser integrado em uma placa de aproximadamente 20,32cm de lado. Em 2002, a Sun anunciou um chip com quatro ncleos de processador em um chip, cada um multithreaded suportando oito threads, dando ao programador a sensao de 32 processadores. Os sistemas que usam esse chip devem ser comercializados em 2005. Em 2004, a Intel anunciou chips de dois processadores. Se o nmero de processadores por chip crescer conforme a Lei de Moore, dezenas de processadores sero possveis no futuro prximo. O desafio para esses micromultiprocessadores a base de software que poder explor-los, o que pode levar a oportunidades de inovao na representao e otimizao dos programas.

Mudanas de paradigma na indstria de computadores


A Figura 9.10.1 mostra o que queremos dizer com o espectro evoluo-revoluo da inovao da arquitetura de computadores. esquerda esto idias invisveis ao usurio (presumivelmente, excetuando o melhor custo, o melhor desempenho ou ambos) e esto no lado evolucionrio do espectro. No

9.10

Comentrios finais

9-37

(Compatvel a nvel binrio)

(Novas bibliotecas)

(Recompilar)

(Reprogramar)

Instrues vetoriais

Evolucionrio

FIGURA 9.10.1 O espectro evoluo-revoluo da arquitetura de computador.

As quatro primeiras colunas diferem da ltima coluna na medida em que as aplicaes e os sistemas operacionais podem ser portados de outros computadores em vez de serem escritos desde o incio. Por exemplo, o RISC est listado no centro do espectro porque a compatibilidade do usurio est apenas no nvel das linguagens de alto nvel (HLLs), enquanto a microprogramao permite compatibilidade binria e os multiprocessadores de processamento paralelo exigem mudanas nos algoritmos e HLLs extensveis. Voc pode ver vrios tipos de multiprocessadores nessa figura. Multiprocessador com time sharing significa multiprocessadores justificados por executar muitos programas independentes ao mesmo tempo. CC-UMA e CC-NUMA significam multiprocessadores UMA e NUMA com coerncia de cache executando subsistemas paralelos como bancos de dados ou servidores de arquivos. Alm disso, as mesmas aplicaes so destinadas troca de mensagens. Multiprocessador de processamento paralelo significa um multiprocessador de algum tipo vendido para acelerar programas individuais desenvolvidos por usurios. (Veja a Seo 9.11 para aprender mais sobre SIMD.)

outro lado esto idias de arquitetura revolucionrias. Essas so as idias que exigem novas aplicaes por parte dos programadores, que precisam aprender novas linguagens de programao e modelos de computao e precisam inventar novas estruturas de dados e algoritmos. As idias revolucionrias so mais fceis de nos empolgar do que as idias evolucionrias, mas, para serem adotadas, precisam ter uma compensao muito mais alta. As caches so um exemplo de melhoria evolucionria. Dentro de cinco anos aps a primeira publicao sobre caches, quase todas as empresas de computador estavam projetando um computador com uma cache. As idias de RISC estavam mais prximas do centro do espectro, pois levou mais de oito anos para que a maioria das empresas tivesse um produto RISC. A maioria dos multiprocessadores tendeu para o lado revolucionrio do espectro, com os multiprocessadores de larga escala (MPPs) sendo mais revolucionrios do que outros. O desafio para os projetistas de hardware e software que propem que os multiprocessadores e o processamento paralelo se tornassem a regra, e no a exceo, o rompimento da base estabelecida dos programas. Existem duas maneiras possveis para que essa mudana de paradigma fosse facilitada: se o processamento paralelo oferecer a nica alternativa para melhorar o desempenho, e se os avanos na tecnologia de hardware e software puderem construir uma rampa suave que permita que o movimento para o processamento paralelo, pelo menos com pequenos nmeros de processadores, seja mais evolucionrio. Talvez o custo/desempenho seja substitudo por novas metas de estabilidade, segurana e/ou custo reduzido de propriedade como a principal justificativa de uma mudana desse tipo. Quando contemplar o futuro e quando inventar suas prprias contribuies para o campo , lembre-se da interface hardware/software. A aceitao de idias de hardware exige aceitao pelas pessoas de software; portanto, as pessoas de hardware precisam aprender mais sobre software. Alm

Microprocessador de processamento paralelo Uso especial


Revolucionrio

Multiprocessador com time sharing

Microprogramao

Memria virtual Superescalar

Instrues de multimdia

Multiprocessador CC-UMA

Multiprocessador CC-NUMA

Clusters

SIMD massivo

Pipelining

Cache

RISC

9-38

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

disso, se as pessoas de software quiserem boas mquinas, elas precisam aprender mais sobre hardware para serem capazes de se comunicar com e, portanto, influenciar os projetistas de hardware. Tambm tenha em mente os princpios da organizao de computadores encontrados neste livro; eles certamente guiaro os computadores do futuro, exatamente como guiaram os computadores do passado.

9.11

Perspectiva histrica e leitura adicional

Como o paralelismo pode aparecer em muitos nveis, til categorizar as alternativas. Em 1966, Flynn props um modelo simples de categorizar computadores que amplamente usado. Examinando o componente mais restrito da mquina, ele contou o nmero de fluxos de instrues paralelas e de dados e, depois, rotulou o computador com este resultado: 1. Fluxo de instrues nico, fluxo de dados nico (SISD, o uniprocessador) 2. Fluxo de instrues nico, fluxos de dados mltiplos (SIMD) 3. Fluxos de instrues mltiplos, fluxo de dados nico (MISD) 4. Fluxos de instrues mltiplos, fluxos de dados mltiplos (MIMD) Naturalmente, algumas mquinas so hbridas dessas categorias, mas esse modelo clssico sobreviveu porque simples, fcil de entender e oferece uma boa estimativa inicial. Ele tambm talvez por ser inteligvel o esquema mais utilizado. Sua primeira pergunta sobre o modelo deve ser: nico ou mltiplo comparado com o qu? Uma mquina que soma um nmero de 32 bits em 1 ciclo de clock pareceria ter fluxos de dados mltiplos quando comparada com um computador de bits seriais que leva 32 ciclos de clock para somar. Flynn escolheu computadores populares para a poca, o IBM 704 e o IBM 7090, como o modelo do SISD; hoje, as implementaes MIPS nos Captulos 5 e 6 seriam bons pontos de referncia.

Computadores SIMD
Os computadores SIMD operam em vetores de dados. Por exemplo, quando uma nica instruo SIMD soma 64 nmeros, o hardware SIMD envia 64 fluxos de dados para 64 ALUs para formar 64 somas dentro de um nico ciclo de clock. O mrito do SIMD que todas as unidades de execuo paralelas so sincronizadas e respondem a uma nica instruo que emana de um nico contador de programa (PC). Da perspectiva de um programador, isso est prximo do j familiar SISD. Embora cada unidade esteja executando a mesma instruo, cada unidade de execuo tem seus prprios registradores de endereo e, portanto, cada unidade pode ter diferentes endereos de dados. A motivao original por trs do SIMD foi amortizar o custo da unidade de controle entre dezenas de unidades de execuo. Outra vantagem o tamanho reduzido da memria de programa o SIMD precisa apenas de uma cpia do cdigo executado simultaneamente, enquanto o MIMD pode precisar de uma cpia em cada processador. A memria virtual e a crescente capacidade dos chips DRAM reduziram a importncia dessa vantagem. Os computadores SIMD reais possuem uma mistura de instrues SISD e SIMD. Normalmente h um computador host SISD para realizar operaes seqenciais como desvios ou clculos de endereos. As instrues SIMD so difundidas para todas as unidades de execuo, cada qual com seu prprio conjunto de registradores e memria. As unidades de execuo se baseiam nas redes de interconexo para a troca de dados. O SIMD funciona melhor quando lida com arrays em loops for. Portanto, para que o paralelismo massivo funcione no SIMD, precisa haver dados massivos, ou paralelismo de dados. O SIMD tem

paralelismo de dados Paralelismo obtido tendo dados massivos.

9.11

Perspectiva histrica e leitura adicional

9-39

Instituio Universidade de Illinois ICL Goodyear Thinking Machines Maspar

Nome Illiac IV DAP MPP CM-2 MP-1216

Nmero mximo de processadores 64 4.096 16.384 65.536 16.384

Bits/ proc. 64 1 1 1 4

Velocidade de clock do proc. (MHz) 13 5 10 7 25

Nmero de FPUs 64 0 0 2048 (opcional) 0

Tamanho/ sistema de memria mximo (MB) 1 2 2 512 256 ou 1.024

BW/sistema de comunicaes (MB/s) 2.560 2.560 20.480 16.384 23.000

Ano 1972 1980 1987 1987 1989

FIGURA 9.11.1 Caractersticas de cinco computadores SIMD.

Nmero de FPUs significa o nmero de unidades de ponto flutuante.

seu lado mais fraco em instrues case ou switch, onde cada unidade de execuo precisa realizar uma operao diferente em seus dados, dependendo de que dados ela possui. As unidades de execuo com os dados errados so desativadas para que as unidades com dados corretos possam continuar. Essas situaes so executadas em 1/n do desempenho, onde n o nmero de cases. Um compromisso bsico nas mquinas SIMD o desempenho do processador versus o nmero de processadores. O Connection Machine 2 (CM-2), por exemplo, oferece 65.536 processadores com largura de um nico bit, enquanto o Illiac IV tinha 64 processadores de 64 bits. A Figura 9.11.1 lista as caractersticas de alguns computadores SIMD conhecidos. Seguramente, o Illiac IV (visto na Figura 9.11.2) o mais famoso dos projetos de supercomputador. Embora bem-sucedido em promover vrias tecnologias teis em projetos posteriores, o Illiac IV falhou

FIGURA 9.11.2 A unidade de controle do Illiac IV seguida de seus 64 elementos de processamento. Esse talvez tenha sido o mais famoso dos supercomputadores. O projeto iniciou em 1965 e executou sua primeira aplicao real em 1976. Os 64 processadores usavam um clock de 13MHz e o tamanho de sua memria principal combinada era de 1MB: 64 16KB. O Illiac IV foi a primeira mquina a nos ensinar que o software para mquinas paralelas domina os problemas de hardware. A foto cortesia do Ames Research Center da NASA.

9-40

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

como um computador. Os custos aumentaram de US$8 milhes estimados em 1966 para US$31 milhes em 1972, apesar da construo de apenas um quarto da mquina planejada. O desempenho real foi no mximo de 15 MFLOPS comparados com a previso inicial de 1.000 MFLOPS para o sistema completo (veja Falk [1976]). Entregue para a Ames Research da NASA em 1972, o computador levou mais trs anos de engenharia para que se tornasse operacional. Felizmente, os arquitetos de computadores no desanimam facilmente; os sucessores SIMD do Illiac IV incluem o ICL DAP, Goodyear MPP (Figura 9.11.3), Thinking Machines CM-1 e CM-2 e Maspar MP-1 e MP-2.

Computadores vetoriais
processamento vetorial Um modelo de arquitetura e compilador popularizado pelos supercomputadores e em que operaes de alto nvel atuam em arrays de nmeros lineares.

Um modelo relacionado ao SIMD o processamento vetorial. Trata-se de um modelo bem-estabelecido de arquitetura e compilador popularizado pelos supercomputadores e que consideravelmente mais usado do que o SIMD. Os processadores vetoriais possuem operaes de alto nvel que atuam em arrays de nmeros lineares, ou vetores. Um exemplo de operao vetorial A=BC onde A, B e C so vetores de 64 elementos de nmeros de ponto flutuante de 64 bits. O SIMD possui instrues semelhantes; a diferena que os processadores vetoriais dependem de unidades funcionais em pipeline que normalmente operam em alguns elementos do vetor por ciclo de clock, enquanto o SIMD geralmente opera em todos os elementos ao mesmo tempo. As vantagens dos computadores vetoriais sobre os processadores SISD tradicionais incluem as seguintes:
n n

Cada resultado independente dos resultados anteriores, o que permite pipelines profundos e altas velocidades de clock. Uma nica instruo vetorial realiza uma grande quantidade de trabalho, o que significa menos buscas de instrues em geral e menos instrues de desvio e, portanto, menos desvios mal previstos. As instrues vetoriais acessam a memria um bloco por vez, o que permite que a latncia de memria seja amortizada entre, digamos, 64 elementos.

FIGURA 9.11.3 A O Goodyear MPP com 16.384 processadores. Ele foi entregue em 2 de maio de 1983 para o NASA Goddard Space Center e comeou a operar no dia seguinte. Ele foi aposentado em 1o de maro de 1991.

9.11

Perspectiva histrica e leitura adicional

9-41

As instrues vetoriais acessam a memria com padres conhecidos, o que permite que vrios bancos de memria forneam operandos simultaneamente.

Essas duas ltimas vantagens significam que os processadores vetoriais no precisam se basear em altas taxas de acerto das caches de dados para ter alto desempenho. Eles costumam se basear em memrias de baixa latncia, normalmente compostas por SRAM, e possuem 1.024 bancos de memria para alcanar alta largura de banda de memria. Surpreendentemente, os vetores tambm encontraram uso nas aplicaes de mdia.

SIMD em multimdia
Infelizmente, os grupos de marketing tomaram o acrnimo SIMD emprestado para descrever uma idia simples: Se os dados de sua aplicao so curtos, em vez de realizar uma operao por ciclo de clock, use registradores e ALUs largos para realizar muitas operaes curtas por ciclo de clock. Por exemplo, com dados de 8 bits e registradores e ALUs de 64 bits, um processador pode realizar 8 operaes por ciclo de clock. Se a ALU pode suprimir os carries entre grupos de 8 bits, ela pode realizar somas e subtraes curtas em paralelo. Embora esse uso do SIMD seja mal denominado, ele bastante comum. Esse projeto, na verdade, um subconjunto de uma arquitetura vetorial restrita, carente de alguns dos importantes recursos e da elegncia do projeto vetorial completo: tornar o nmero mximo de elementos por vetor independente da arquitetura, de loads e de stores de ndices etc. Detalhamento: embora o MISD faa parte da classificao de Flynn, ele difcil de imaginar. Um nico fluxo
de instruo mais simples do que mltiplos fluxos de instruo, mas mltiplos fluxos de instruo com mltiplos fluxos de dados (MIMD) so mais fceis de imaginar do que mltiplas instrues com um nico fluxo de dados (MISD).

Computadores MIMD
difcil distinguir o primeiro MIMD: Os argumentos para as vantagens da execuo paralela podem ser seguidos at o sculo XIX [Menabrea, 1842]! Alm disso, at mesmo o primeiro computador da Eckert-Mauchly Corporation tinha unidades duplicadas, nesse caso para melhorar a confiabilidade. Dois dos projetos de multiprocessador mais bem-documentados foram executados na dcada de 1970 na Carnegie-Mellon University. O primeiro foi o C.mmp, constitudo por 16 PDPs-11 conectados por uma chave crossbar com 16 unidades de memria. Ele estava entre os primeiros multiprocessadores com mais de alguns processadores e tinha um modelo de programao de memria compartilhada. Muito do foco da pesquisa no projeto C.mmp estava no software, especialmente na rea de sistemas operacionais. Uma mquina posterior, o Cm*, era um multiprocessador baseado em clusters com uma memria distribuda e um tempo de acesso no uniforme, que tornava a programao ainda mais problemtica. A ausncia de caches e a longa latncia de acesso remoto tornavam o posicionamento dos dados um fator vital. Embora mainframes muito grandes tenham sido construdos com processadores mltiplos nos anos 70, os multiprocessadores no se tornaram altamente bem-sucedidos at a dcada de 1980. Bell [1985] multicomputador sugere que o segredo para o sucesso foi que o menor tamanho do microprocessador permitiu que o barramento de memria substitusse o hardware da rede de interconexo, e que os sistemas operacionais Processadores paralelos com mltiplos portveis significavam que os projetos de processadores paralelos no mais exigiam a inveno de um endereos privados. novo sistema operacional. Ele distingue processadores paralelos com endereos privados mltiplos multiprocessador chamando-os de multicomputadores, reservando o termo multiprocessador para mquinas com um Processadores nico espao de endereamento. Portanto, Bell classificaria um cluster como um multicomputador. paralelos com um O primeiro multiprocessador conectado a barramento com caches com snooping foi o Synapse nico endereamento N+1 em 1984. Os meados da dcada de 1980 viram uma exploso no desenvolvimento de protocolos compartilhado.

9-42

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

de coerncia alternativos, e Archibald e Baer [1986] forneceram uma boa pesquisa e anlise, bem como referncias aos documentos originais. O final da dcada de 1980 trouxe a introduo de muitas arquiteturas de cache com snooping conectadas a barramento, incluindo o Silicon Graphics 4D/240, o Encore Multimax e o Sequent Symmetry. No esforo de construir multiprocessadores de grande escala, duas direes diferentes foram tomadas: os multicomputadores de troca de mensagens e os multiprocessadores de memria compartilhada escalvel. Embora tenha havido muitas tentativas de construir multiprocessadores conectados a hipercubos e a malhas, uma das primeiras mquinas a montar com sucesso todas as peas foi o Cosmic Cube, construdo na Caltech [Seitz, 1985]. Ele introduziu importantes avanos na tecnologia de roteamento e interconexo e reduziu substancialmente o custo da interconexo, o que ajudou a viabilizar o multicomputador. As mquinas comerciais com arquiteturas relacionadas incluam o Intel iPSC 860, o Intel Paragon e o Thinking Machines CM-5. Infelizmente, o mercado para essas mquinas provou ser muito menor do que o esperado, e a Intel saiu do negcio (com o ASCI Red sendo sua ltima mquina) e a Thinking Machines no mais existe. Hoje, esse espao principalmente de clusters, como o IBM RS/6000 SP2 (Figura 9.11.4). Estender o modelo de memria compartilhada com coerncia de cache escalvel foi feito combinando diversas idias. As tcnicas baseadas em diretrios para coerncia de cache foram realmente conhecidas antes das tcnicas de cache com snooping. Na verdade, o primeiro protocolo de coerncia de cache usava diretrios e era usado no IBM 3081 em 1976. A idia de distribuir diretrios com memrias para obter uma implementao escalvel da coerncia de cache (agora chamada de memria compartilhada distribuda, ou DSM) foi a base para o multiprocessador Stanford DASH; ele considerado o precursor dos computadores NUMA. Existe uma grande quantidade de informaes sobre multiprocessadores: conferncias, documentos peridicos e mesmo livros aparecem regularmente. Uma boa fonte a Supercomputing Conference, realizada anualmente desde 1988. Dois grandes peridicos, o Journal of Parallel and Distributed Computing e o IEEE Transactions on Parallel and Distributed Systems, contm extensos documentos sobre aspectos da computao paralela. Livros sobre computao paralela foram escritos por Almasi e Gottlieb [1989]; Andrews [1991]; Culler, Singh e Gupta [1998]; e Hwang [1993]. O livro de Pfister [1998] um dos poucos sobre clusters.

FIGURA 9.11.4 O IBM RS/6000 SP2 com 256 processadores.

Esta mquina de memria distribuda construda usando placas de computadores desktop inalteradas, alm de um switch personalizado como a interconexo. Comparado com o SP2, a maioria dos clusters usa uma rede local comutada original. A foto cortesia do Lawrence Livermore National Laboratory.

9.11

Perspectiva histrica e leitura adicional

9-43

Detalhamento: embora fosse concebvel escrever 100 programas diferentes para 100 diferentes processadores em uma mquina MIMD, na prtica, isso mostrou ser impossvel. Hoje, os programadores de MIMD escrevem um nico programa de origem e pensam no mesmo programa sendo executado em todos os processadores. Esse mtodo s vezes chamado de programa nico e dados mltiplos (SPMD).

Leitura complementar
Almasi, G. S. e A. Gottlieb [1989]. Highly Parallel Computing, Benjamin/Cummings, Redwood City, CA. Um livro-texto abordando computadores paralelos. Amdahl, G. M. [1967]. Validity of the single processor approach to achieving large scale computing capabilities, Proc. AFIPS Spring Joint Computer Conf., Atlantic City, NJ (Abril), 48385. Escrito em resposta s reclamaes do Illiac IV, este artigo de trs pginas descreve a Lei de Amdahl e fornece a resposta clssica aos argumentos para abandonar a forma de computao atual. Andrews, G. R. [1991]. Concurrent Programming: Principles and Practice, Benjamin/Cummings, Redwood City, CA. Um texto que fornece os princpios da programao paralela. Archibald, J. e J.-L. Baer [1986]. Cache coherence protocols: Evaluation using a multiprocessor simulation model, ACM Trans. on Computer Systems 4:4 (Novembro), 27398. Documento de pesquisa clssico dos protocolos de coerncia de cache com barramento compartilhado. Arpaci-Dusseau, A., R. Arpaci-Dusseau, D. Culler, J. Hellerstein e D. Patterson [1997]. Highperformance sorting on networks of workstations, Proc. ACM SIGMOD/PODS Conference on Management of Data, Tucson, AZ Maio, 1215. Como uma ordenao de registros mundiais foi realizada em um cluster, incluindo crtica da arquitetura da estao de trabalho e da interface de rede. Em 1o de abril de 1997, eles aumentaram o recorde para 8,6GB em 1 minuto e 2,2 segundos para ordenar 100MB. Bell, C. G. [1985]. Multis: A new class of multiprocessor computers, Science 228 (26 de abril), 46267. Distingue multiprocessadores de endereamento compartilhado e de endereamento no compartilhado com base nos microprocessadores. Culler, D. E. e J. P. Singh, com A. Gupta [1998]. Parallel Computer Architecture, Morgan Kaufmann, San Francisco. Um livro-texto sobre computadores paralelos. Falk, H. [1976]. Reaching for the Gigaflop, IEEE Spectrum 13:10 (Outubro), 6570. Critica a triste histria do Illiac IV: quatro vezes o custo e menos de um dcimo do desempenho das metas originais. Flynn, M. J. [1966]. Very high-speed computing systems, Proc. IEEE 54:12 (Dezembro), 190109. Artigo clssico mostrando classificaes SISD/SIMD/MISD/MIMD. Hennessy, J. e D. Patterson [2003]. Captulos 6 e 8 em Arquitetura de Computadores: Uma abordagem quantitativa, terceira edio, Editora Campus, Rio de Janeiro. Uma cobertura mais aprofundada sobre uma variedade de tpicos de multiprocessador e cluster, incluindo programas e medies. Hord, R. M. [1982]. The Illiac-IV, the First Supercomputer, Computer Science Press, Rockville, MD. Uma contabilidade histrica do projeto Illiac IV. Hwang, K. [1993]. Advanced Computer Architecture with Parallel Programming, McGraw-Hill, New York. Outro livro-texto abordando os computadores paralelos. Kozyrakis, C. e D. Patterson [2003]. Scalable vector processors for embedded systems, IEEE Micro 23:6 (novembro a dezembro), 3645.

9-44

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

Exame de uma arquitetura vetorial para o conjunto de instrues MIPS em processamento de mdia e sinais Menabrea, L. F. [1842]. Sketch of the analytical engine invented by Charles Babbage, Bibliothque Universelle de Genve (Outubro). Com certeza, a primeira referncia sobre multiprocessadores, este matemtico fez este comentrio enquanto traduzia artigos sobre o computador mecnico de Babbage. Pfister, G. F. [1998]. In Search of Clusters: The Coming Battle in Lowly Parallel Computing, segunda edio, Prentice-Hall, Upper Saddle River, NJ. Um interessante livro que defende os clusters e critica os multiprocessadores NUMA. Seitz, C. [1985]. The Cosmic Cube, Comm. ACM 28:1 (Janeiro), 2231. Um artigo tutorial sobre um processador paralelo conectado por meio de uma hiper-rvore. O Cosmic Cube o ancestral dos supercomputadores Intel. Slotnick, D. L. [1982]. The conception and development of parallel processorsA personal memoir, Annals of the History of Computing 4:1 (Janeiro), 2030. Memrias do incio do processamento paralelo pelo arquiteto do Illiac IV.

9.12

Exerccios

9.1 [15] <9.1> Escreva um artigo de uma pgina examinando em sua vida situaes em que a coo-

perao est presente e a excluso mtua obtida. Voc pode querer considerar coisas como estradas passando de duas pistas para uma, esperar em filas em diferentes tipos de empresas, obter a ateno do seu professor para fazer perguntas etc. Tente descobrir diferentes meios e mecanismos usados para comunicao e sincronizao. Existe alguma situao em que voc desejaria que um algoritmo diferente fosse usado para que a latncia ou a largura de banda fosse melhorada, ou talvez o sistema fosse mais justo?
9.2 [10] <9.1> Considere as seguintes partes de dois programas diferentes executados ao mesmo

tempo em dois processadores em um multiprocessador simtrico (SMP). Considere que, antes deste cdigo ser executado, x e y so 0. Processador 1: ...; x = x + 2; y = x + y; ... Processador 2: ...; y = x + 2; ... Quais so os possveis valores resultantes de x e y, considerando que o cdigo implementado usando uma arquitetura load-store? Para cada resultado possvel, explique como x e y poderiam obter esses valores. (Dica: voc precisa examinar todas as intercalaes possveis das instrues assembly.)
9.3 [10] <9.19.3> Imagine que todos os funcionrios de uma enorme empresa tenham esqueci-

do quem dirige a empresa e s podem lembrar para quem eles trabalham. A gerncia est considerando se deve emitir uma das seguintes instrues:
n n

Hoje, todos os funcionrios devem perguntar ao seu chefe quem ele ; amanh, pergunte a essa pessoa quem o chefe dela e assim por diante, at descobrir quem dirige a empresa. Por favor, todos escrevam o nome do seu chefe em uma folha de papel. Descubra qual o nome da pessoa na folha de papel dele e, amanh, escreva o nome em sua folha de papel antes de vir para o trabalho. Repita esse processo at descobrir quem dirige e empresa.

Escreva um pargrafo descrevendo a diferena entre essas duas instrues e os resultados. Explique a relao entre as duas alternativas descritas anteriormente e o que voc aprendeu sobre sincronizao e comunicao cooperativas entre processos.

9.12

Exerccios

9-45

9.4 [5] <9.19.3> {Ex. 9.3} Analise o desempenho dos dois algoritmos anteriores. Considere

empresas contendo 64 pessoas, 1.024 pessoas ou 16.384 pessoas. Voc pode imaginar alguma maneira de melhorar um dos dois algoritmos ou de realizar a mesma tarefa ainda mais rpido?
9.5 [5] <9.3> Conte o nmero de transaes no barramento para a seguinte seqncia de ativida-

des envolvendo dados compartilhados. Considere que os dois processadores usam cache write-back, coerncia de cache com atualizao de escrita e um tamanho de bloco de uma word. Considere tambm que todas as words nos dois casos so limpas.
Atividade de memria Escrita Escrita Leitura Leitura Leitura Leitura Endereo de memria 100 104 100 104 104 100

Etapa 1 2 3 4 5 6

Processador Processador 1 Processador 2 Processador 1 Processador 2 Processador 1 Processador 2

9.6 [10] <9.3> O falso compartilhamento pode levar a um trfego de barramento e atrasos desne-

cessrios. Siga as instrues para o Exerccio 9.5, mas, desta vez, mude o tamanho de bloco para quatro words.
9.7 [15] <9.6> Outra topologia de rede possvel uma grade tridimensional. Desenhe a topologia

na Figura 9.6.1 para 64 ns. Qual a largura de banda de bisseo dessa topologia?
9.8 [1 semana] <9.29.6> Um processador paralelo normalmente comercializado usando pro-

gramas que podem escalar o desempenho linearmente com o nmero de processadores. Porte os programas escritos para um processador paralelo para outro e mea seu desempenho absoluto e como ele muda conforme voc muda o nmero de processadores. Que alteraes precisam ser feitas para melhorar o desempenho dos programas portados em cada mquina? Qual o desempenho de acordo com cada programa?
9.9 [1 semana] <9.29.6> Em vez de tentar criar benchmarks justos, invente programas que fa-

am um processador paralelo parecer excelente comparado com os outros e tambm programas que sempre faam um parecer melhor do que os outros. Quais so as principais caractersticas de desempenho de cada programa e mquina?
9.10 [1 semana] <9.29.6> Os processadores paralelos normalmente mostram aumentos de desempenho enquanto voc aumenta o nmero de processadores, com o ideal sendo n vezes o speedup para n processadores. O objetivo deste exerccio criar um benchmark tendencioso que obtm o pior desempenho quando voc acrescenta processadores. Por exemplo, um processador no processador paralelo executaria o programa mais rpido, dois seriam mais lentos, quatro seriam mais lentos do que dois e assim por diante. Quais so as principais caractersticas de desempenho para cada organizao que fornece speedup linear inverso? 9.11 [1 semana] <9.29.6> As estaes de trabalho em rede podem ser consideradas processa-

dores paralelos, embora com comunicao lenta relativa computao. Porte benchmarks de processadores paralelos para uma rede usando chamadas de procedimento remoto para comunicao. At que ponto os benchmarks escalam bem na rede comparado com o processador paralelo? Quais so as diferenas prticas entre estaes de trabalho em rede e um processador paralelo comercial?
9.12 [1 semana] <9.29.6> Melhoria de desempenho superlinear significa que um programa em n processadores mais de n vezes mais rpido do que o uniprocessador equivalente. O argumento para o speedup superlinear que o tempo gasto servindo interrupes ou trocando contextos reduzido quando voc tem muitos processadores, pois apenas um deles precisa servir interrupes e h mais processadores para serem compartilhados pelos usurios. Mea o tempo gasto em um workload

9-46

Captulo 9

Multiprocessadores e Clusters

ELSEVIER

para manipular interrupes ou troca de contexto para um uniprocessador comparado com um processador paralelo. Esse workload pode ser uma combinao de tarefas independentes para um ambiente de multiprogramao ou uma nica tarefa grande. O argumento se mantm vlido?
9.13 [15] <9.10> Construa um cenrio por onde uma arquitetura verdadeiramente revolucionria

escolha sua candidata favorita ir desempenhar um papel significativo. Significativo definido como 10% dos computadores vendidos, 10% dos usurios, 10% do dinheiro gasto em computadores ou 10% de alguma outra cifra importante.
9.14 [20] <9.19.10> Este captulo introduziu muitos termos de vocabulrio novos relacionados

ao tema dos multiprocessadores. Alguns dos exerccios deste captulo (por exemplo, os Exerccios 9.1 e 9.3) so baseados em uma analogia em que pessoas so imaginadas como processadores e grupos de pessoas como multiprocessadores. Escreva um artigo de uma pgina explorando essa analogia em mais detalhes. Por exemplo, existem grupos de pessoas que usam tcnicas semelhantes troca de mensagens ou s memrias compartilhadas? Voc poderia criar analogias para protocolos de coerncia de cache, topologias de rede ou clusters? Procure incluir pelo menos um termo de vocabulrio de cada seo do texto.

Potrebbero piacerti anche