Your SlideShare is downloading. ×
Mp.handouts
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Mp.handouts

48
views

Published on

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
48
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Tópicos deArquitectura deComputadoresContém figuras de:Computer Organization and Design (apend. A),D. Patterson & J. Hennessey, 3ª ed., Elsevier.Multiprocessadores: uma introduçãoJoão Canas FerreiraNovembro de 2010AssuntosTópicos1 Organização geral de multiprocessadores2 Arquitecturas simétricas de memória partilhada3 Arquitecturas de memória distribuída4 Múltiplos fios de execuçãoJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 2 / 31
  • 2. Organização geral de multiprocessadores1 Organização geral de multiprocessadores2 Arquitecturas simétricas de memória partilhada3 Arquitecturas de memória distribuída4 Múltiplos fios de execuçãoJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 3 / 31Notas:3
  • 3. Organização geral de multiprocessadoresClassificação geralMIMD (Multiple Instruction Multiple Data) é a actual arquitectura deescolha para multiprocessadores:grande flexibilidade de utilização;permite facilmente a utilização de microprocessadores comerciais.Para aproveitar N processadores é necessário ter pelo menos N “fios” deexecução (independentes ou não): thread-level parallelism.fios podem ter dimensões muito diferentes (de milhares a muitos milhõesde instruções);problema de identificação do paralelismo a alto-nível (software).Duas classes:1 Memória partilhada centralizada (a classe mais comum).2 Memória fisicamente distribuída.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 4 / 31Notas:4.1. A classificação de computadores proposta por Flynn orienta-se pela componentedo multiprocessador que impõe as maiores restrições. São considerados quatrotipos de computadores:4.2. SISD (single instruction stream, single data stream): O uniprocessadorconvencional.4.3. SIMD (single instruction stream, multiple data streams): Cada processador temconceptualmente a sua própria memória (e, portanto, os seus próprios dados);existe apenas uma memória de instruções, associada a um processador decontrolo. Os computadores vectoriais usados em cálculo científico são a maiorclasse desta categoria; as extensões multimédia dos processadores convencionaissão também uma forma limitada de paralelismo SIMD.4.4. MISD (multiple instruction streams, single data stream): Não existem exemploscomerciais desta arquitectura (até agora).4.5. MIMD (multiple instruction streams, multiple data streams): Cada processadorobtém as suas próprias instruções e dados.4
  • 4. Organização geral de multiprocessadoresMemória centralizadaJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 5 / 31Notas:5.1. Para um número de processadores relativamente pequeno é possível ligar todos aum sistema de memória centralizado, através de um barramento comum.5.2. As memórias cache, desde que suficientemente grandes, permitem reduzir onúmero de acessos aos recursos comuns (barramento e memória).5.3. O barramento comum pode ser substituído por múltiplos barramentos (ou até porcomutadores—switches) de forma a que seja possível usar algumas dezenas(poucas) de processadores. De qualquer forma, a utilização de uma única memóriacentralizada é uma abordagem cujo desempenho piora marcadamente com oaumento do número de processadores (é uma abordagem non-scalable).5.4. O tempo de acesso a memória é sempre o mesmo: arquitectura UMA–UniformMemory Access.5
  • 5. Organização geral de multiprocessadoresMemória distribuídaJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 6 / 31Notas:6.1. Para suportar um número mais elevado de processadores é preciso “descentralizar”a memória, que passa a estar associada a cada processador. O tempo de acesso amemória deixa de ser uniforme. O acesso a dados residentes na memória local émais rápido que o acesso a memórias “remotas”: arquitecturas NUMA(non-uniform memory access).6.2. A “distribuição” de memória evita os problemas de escalabilidade da abordagemcentralizada. Constitui também uma forma barata de aumentar a largura de bandaprocessador–RAM (desde que a maioria dos acessos seja feito a memória local).Também permite reduzir a latência dos acessos a memória local (que deixam deser tão afectados pelo tráfego gerado pelos restantes processadores).Em contrapartida, a comunicação de dados entre os processadores (i.e., o acessoa memórias remotas) é mais complexa e tem maior latência (por comparação comos tempos típicos associados a memórias centralizadas sem contenção).6.3. Os nós da figura podem ser eles próprios sistemas SMP pequenos (tipicamente,2–8 processadores).6
  • 6. Organização geral de multiprocessadoresModelos de comunicação e arquitecturas de memóriaMultiprocessadores com muitos processadores usam esquemas dememória distribuída.Métodos de comunicação:espaço de endereçamento comum: DSM (distributed shared memory) (masa memória está fisicamente distribuída).múltiplos espaços de endereçamento privados (multicomputadores).Mecanismos de comunicação associados (hardware):comunicação implícita via load/store;comunicação por mensagens (síncronas ou assíncronas).Um modelo de comunicação pode ser implementado sobre qualquermecanismo de hardware.É mais fácil suportar comunicação por mensagens sobre memóriapartilhada que vice-versa.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 7 / 31Notas:7.1. Conceptualmente existem duas grandes alternativas para a implementação decomunicação num multiprocessador de memória distribuída.7.2. Alternativa 1: Existe um espaço de endereçamento comum: qualquer processadorpode aceder a qualquer memória, embora com tempo de acesso não uniforme. (Oarranjo mais comum consiste em usar os bits mais significativos do endereço paraidentificar a nó—espaço de endereçamento estático). São arquitecturas dememória partilhada distribuída. A expressão “memória partilhada” NÃO se refere auma memória centralizada comum; o espaço de endereçamento lógico é que écomum.7.3. Alternativa 2: Os espaços de endereçamento de cada nó são separados. Cada nó éessencialmente um computador, pelo que estes sistemas são designados pormulticomputadores.Alguns multicomputadores são mesmo constituídos por computadores completos(cada um com a sua cópia do sistema operativo) interligados por uma rede local:são os clusters.7
  • 7. Organização geral de multiprocessadoresComunicação por mensagens vs. memória partilhadaVantagens de memória partilhada (i.e. espaço de endereçamento comum)Compatibilidade com mecanismos bem conhecidos (www.openmp.org).Facilidade de programação para padrões complexos de comunicação.Facilitam a focalização de atenção nos acessos críticos.Baixo custo de comunicação de itens pequenos.Possibilidade de utilizar caches para reduzir necessidades decomunicação.Vantagens da comunicação por mensagens:Hardware simplificado.Comunicação explícita é mais fácil de compreender.Força programadores a focarem este aspecto do desempenho.Sincronização é tratada de forma natural.Facilita comunicação iniciada por emissor.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 8 / 31Notas:8.1. A cada arquitectura de memória distribuída está associado um mecanismo decomunicação:1. DSM: Comunicação implícita por leitura/escrita de posições de memóriaacessíveis pelo espaço de endereçamento comum.2. Multicomputadores: Comunicação explícita entre nós (troca de mensagens).8.2. Embora estejam associados a cada uma das arquitecturas, cada mecanismo podeser implementado sobre qualquer das organizações físicas.8.3. A presente introdução restringe-se às arquitecturas SMP e DSM. Em termos demercado (tanto em número de unidades, como em vendas), os sistemas SMP sãoclaramente os mais importantes.8
  • 8. Arquitecturas simétricas de memória partilhada1 Organização geral de multiprocessadores2 Arquitecturas simétricas de memória partilhada3 Arquitecturas de memória distribuída4 Múltiplos fios de execuçãoJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 9 / 31Notas:9
  • 9. Arquitecturas simétricas de memória partilhadaMemória partilhada comumA utilização de memórias cache grandes reduz os requisitos de largurade banda da memória principal e permite partilhar esta entre váriosprocessadores via um barramento comum.A utilização de caches para acelerar o acesso a dados partilhadosintroduz o problema da coerência de memória cache.Tempo Evento Cache A Cache B Mem X0 11 CPU A lê X 1 12 CPU B lê X 1 1 13 CPU A escreve 0 em X 0 1 0(Cache write-through.) O valor existente na cache B não está correcto.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 10 / 31Notas:10.1. As falhas que ocorrem devido à comunicação entre processadores são designadaspor falhas por coerência, fornecendo assim o quarto C (a juntar a Compulsórias, deCapacidade e de Conflito). A designação não é muito boa, já que não é acoerência que falha, mas é sim a manutenção da coerência que causa as falhas.Portanto, falhas por manutenção de coerência ou falhas por partilha sãodesignações melhores.10.2. As falhas por coerência têm duas causas:1. As falhas por partilha verdadeiras têm origem na comunicação de dadosentre processadores (via memória). Esta partilha de dados é orientada àpalavra.2. As falhas por partilha falsas são devidas ao facto de as memória cacheestarem organizadas em blocos: Uma escrita de uma palavra num blococausa a invalidação de todas as cópias do bloco; a leitura uma OUTRApalavra desse bloco por um dos processadores que possuía uma cópia dobloco original vai obrigar a uma actualização da cópia (que estavainvalidada), apesar de o valor não ter de facto mudado.10.3. As falhas por partilha verdadeiras são aquelas que ocorreriam mesmo que umbloco de memória cache tivesse apenas uma palavra; as outras falhas por partilhasão falsas.10
  • 10. Arquitecturas simétricas de memória partilhadaCoerência e consistência« Informalmente: Um sistema de memória é coerente se qualquer leitura deum item retornar o valor escrito mais recentemente.Condições de coerência (valor produzido por uma leitura):Uma leitura de X por P a seguir a uma escrita de X por P (sem escritasde outros processadores em X) retorna o valor escrito por P.Uma leitura de X por P a seguir a uma escrita por outro processadorretorna o novo valor se leitura e escrita estiverem suficientementeseparadas no tempo.Escritas na mesma posição por dois processadores diferentes são“vistas” na mesma sequência por todos os processadores (serialização).« Um modelo de consistência determina quando exactamente é que umvalor escrito é “visto” por um leitor (não envolvido na alteração do valor).João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 11 / 31Notas:11.1. A primeira condição enunciada acima preserva a ordem do programa. A segundacondição define o que é ter uma visão coerente da memória.11.2. A condição de serialização é necessária para garantir que todos os processadores“vêem” todas as alterações. Considere-se o caso de dois processadores (P1 e P2)escreverem sucessivamente na mesma posição X. Sem serialização seria possívelque outro processador “visse” primeiro a escrita de P2 e depois a de P1,assumindo portanto um valor errado para a posição X. A maneira mais simples desatisfazer esta condição consiste em serializar as escritas. A serielização ocorrenaturalmente quando existe apenas um barramento.11.3. Coerência define o comportamento de leituras e escritas de/para uma mesmaposição de memória; consistência define o comportamento de leituras/escritas emrelação a acessos a outras posições. Dito de outra maneira, o modelo deconsistência define em que instantes é que a coerência deve ser garantida. Nestaintrodução apenas é abordada a questão da coerência.11
  • 11. Arquitecturas simétricas de memória partilhadaComo manter a coerênciaNum multiprocessador, as memórias cache garantem migração e replicação deitens partilhados.Protocolos de coerência de memórias cache:Directorias: O estatuto de um bloco partilhado é mantido num só lugar(uma directoria)Monitoração de barramento: Cada cache que contém uma cópia de umbloco de memória também regista o seu estado “de partilha”; todasmonitoram o barramento para determinar o estado dos blocos.Estratégias:1 write invalidate: cada processador assegura-se que detém acessoexclusivo a um item que pretende modificar (mais usado);2 write update: todas as cópias são alteradas simultaneamente.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 12 / 31Notas:12.1. Com um protocolo write update, a alteração de um valor impõe a necessidade decomunicar com todos os processadores que possuam cópias da informaçãoalterada (broadcast).12.2. Múltiplos acessos para escrita sem leituras intermédias obrigam a múltiplasoperações de broadcast num protocolo write update, mas apenas a umainvalidação num protocolo write invalidate.12.3. Um protocolo write update trabalha com palavras individuais, enquanto umprotocolo write invalidate trabalha com blocos da cache. Em consequência, cadapalavra alterada de um bloco requer uma operação de broadcast no primeiro caso,mas apenas uma invalidação no segundo.12.4. O tempo de atraso entre a alteração de um valor e a leitura desse valor noutroprocessador é mais curto para um protocolo write update, já que o valor desejadoé transmitido durante a operação de broadcast; no caso do protocolo writeinvalidate os dados do processador remoto são invalidados primeiro e apenasactualizados aquando da leitura posterior (envolvendo o possível protelamento doprocessador).12.5. Protocolos do tipo write invalidate tendem a gerar menos tráfego; são por isso osmais usados.12
  • 12. Arquitecturas simétricas de memória partilhadaProtocolo de invalidação na escritaPara proceder a uma invalidação, um processador simplesmente coloca oendereço em questão no barramento. Os outros processadores invalidamcópias que eventualmente tenham.Serialização é assegurada pelo barramento.Escrita de um item partilhado necessita de acesso ao barramento.(Com caches de write-back): Onde ir buscar o valor de uma posiçãoquando ocorre uma falha de cache?O processador com a cópia actualizada (dirty) envia o valor ao“requerente” e actualiza a memória.(Com caches de write-back): Escrita em memória principal precisa de ser“divulgada” apenas se existirem cópias noutros processadores.Simplificações do exemplo: transacções atómicas; write hit = write miss.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 13 / 31Notas:13.1. Quando ocorre uma falha de leitura (read miss), onde se deve ir buscar os dados?(Uma situação similar acontece com uma falha de escrita e write allocate.)13.2. Cache write-through: O valor actualizado está sempre em memória principal.13.3. Cache write-back: Sempre que um processador detecta uma transacção de leitura(no barramento) que se refere a um bloco que na sua cache tem o bit demodificação activo (dirty bit), esse processador responde ao pedido de leitura, jáque é quem dispõe da única versão actualizada (o acesso a memória principal éabortado). Notar que este mecanismo obriga cada cache a comparar o endereçosurgido no barramento com as suas etiquetas. Caso nenhum processadorinterrompa a leitura, a palavra é lida de memória principal (que, neste caso,contém sempre o valor correcto). Geralmente, a memória principal é actualizadadurante o processo de resposta descrito acima. O bloco em questão passa a estar“partilhado” pelo dois processadores intervenientes.13.4. Para efeitos do protocolo de coerência, as memória cache usam um bit adicionalpor bloco para indicar se este está partilhado ou não (i.e., se existem cópias dobloco em outras caches). Apenas as alterações de blocos partilhados provocam ageração de transações de invalidação.13
  • 13. Arquitecturas simétricas de memória partilhadaEventos de um protocolo de coerência (SMP)Pedido Fonte Actual Seg. Funçãoread hit P P/E P/E ler dados da memória cacheread miss P I P colocar pedido de leitura no barramentoread miss P P P substituição de bloco; read miss no barramentoread miss P E P substituição de bloco alterado; fazer write-back; co-locar read miss no barramentowrite hit P E E escrver dados na memória cachewrite hit P P E colocar write miss no barramentowrite miss P I E colocar write miss no barramentowrite miss P E E substituição de bloco partilhado; colocar write missno barramentoread miss B P P sem acção; memória principal satisfaz pedidoread miss B E P tentativa de partilhar dados; colocar bloco no bar-ramentowrite miss B P I tentativa de escrita em bloco partilhado; invalidarblocowrite miss B E I tentativa de escrita em bloco exclusivo noutra ca-che; fazer write-back e invalidar blocoFonte: Processador local, Barramento Estado: Inválido, Partilhado, Exclusivo.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 14 / 31Notas:14.1. O protocolo assume que as transações no barramento são atómicas, o queserializa automaticamente as escritas. Isto implica que uma escrita só terminadepois de obter acesso ao barramento.14.2. O protocolo deste exemplo gera sempre um pedido de tipo write miss parainvalidar cópias (assume-se que a cache que efectua o pedido preenche o blococom os resultados obtidos, combinados com a escrita em curso, se necessário).Notar que se está a assumir que a memória cache usa uma política do tipo writeallocate.14.3. Na realidade, a maioria dos protocolos distingue entre write miss e write hit;neste último caso é necessário mudar o estado do bloco (invalidar as cópias), masnão é preciso fazer nenhuma leitura porques os dados já estão presentes nacache. Devido a esta simplificação, o protocolo do exemplo não tem umatransação de invalidação sem transferência de dados.14.4. Este protocolo não reconhece blocos não-modificados e presentes em apenasuma memória cache; em vez disso, o protocolo assume que um bloco não-alteradoestá sempre partilhado, pelo que qualquer alteração de um bloco nessascircunstãncias leva o sistema a gerar uma transação desnecessária (gera um writemiss que não invalida nada, porque não existe mais nenhuma cópia).14
  • 14. Arquitecturas simétricas de memória partilhadaProtocolo “write invalidate”João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 15 / 31Notas:15.1. Para este protoclo, assumimos a utilização de memórias cache do tipo write back,porque geram menos tráfego no barramento que as memórias cache do tipo writethrough e o barramento é crítico para o desempenho do sistema.15.2. Cada transacção do barramento obriga todas as caches a comparar o endereço datransacção com as etiquetas existentes na cache. Podem, portanto, surgirconfitos nos acessos às etiquetas, porque a memória cache continua a ter deresponder aos pedidos do processador local o mais depressa possível. Umesquema de caches multinível resolve o problema, desde que se garanta que osblocos da(s) memória(s) cache mais próxima(s) do CPU estão também presentesnas memórias cache mais distantes. Assim garante-se a replicação das etiquetase, consequentemente, a redução do número de conflitos.15.3. Transações com origem remota só requerem reacção se o seu endereçocorresponder a um bloco presente na memória cache.15
  • 15. Arquitecturas simétricas de memória partilhadaDesempenho: número de processadoresO desempenho pode variar de forma não intuitiva.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 16 / 31Notas:16.1. Os resultados apresentados foram obtios por simulação dos sistemas com quatroprogramas paralelos de cariz científico:1. Barnes-Hut: Aplicação do algoritmo de Barnes-Hut para simular a interacçãoentre um grande número de corpos; neste caso, trata-se de simular a evoluçãode galáxias (16000 corpos).2. FFT: Cálculo da FFT (transformada de Fourier rápida) de um milhão de valorescomplexos.3. LU: Factorização de uma matriz (512 × 512).4. Ocean: Simulação de correntes oceânicas (grelha de 130 × 130 pontos).16.2. O número de falhas compulsórias é muito pequeno e está incluído nas falhas decapacidade. Todas as memórias cache têm 64 KB, 2-vias, blocos de 32 bytes.Notar que a escala vertical é diferente em cada gráfico.16.3. Seria de esperar que com o aumento do número de processadores aumentassetambém o número total de falhas por coerência (devidas a comunicação entre osprocessadores). Isso acontece de um modo geral, excepto no caso do programaOcean. Esse programa também apresenta um pico das falhas de capacidade para 2processadores com subsequente diminuição.16.4. A evolução pouco intuitiva de alguns programas paralelos só pode ser explicadaatravés da análise individual das respectivas características.16
  • 16. Arquitecturas simétricas de memória partilhadaDesempenho: tamanho do bloco de cacheAumentar o tamanho dos blocos de cache ajuda. . .João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 17 / 31Notas:17.1. O aumento do tamanho dos blocos tende a melhorar o desempenho, porquepermite um melhor aproveitamento da proximidade.17.2. Contudo, também pode aumentar o número de falhas por partilha falsas, como éo caso do programa Barnes.17.3. É de reter que a evolução do comportamento deste tipo de programas é quasesempre de generalização delicada, sendo necessário caracterizar detalhadamente aforma como a informação é partilhada entre os processadores.17.4. Estes resultados foram obtidos por simulação para um sistema de 16processadores, 64 KB de cache e 2 vias.17
  • 17. Arquitecturas simétricas de memória partilhadaDesempenho: tráfego no barramento. . . ou talvez não.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 18 / 31Notas:18.1. O gráfico mostra a evolução da quantidade de tráfego no barramento (em bytespor referência de dados) com o aumento da dimensão dos blocos.18.2. O aumento “ilimitado” do tamanho dos blocos não é sempre a melhor solução,porque blocos maiores implicam a transferência de mais bytes por falha.Programas com taxas de falhas (por partilha) mais elevadas são naturalmentemais penalizados por este factor, como a figura mostra. Em particular, o tráfegono barramento aumenta 3 vezes para a aplicação Ocean.18.3. O aumento do tamnho dos blocos também aumenta o custo e a frequência dasfalhas de partilha “falsas”.18.4. Para um dado barramento, o aumento de tráfego implica um aumento dacontenção no barramento (implicando que cada transferência deve “esperar” maisaté encontrar o barramento livre) ou, para limitar a contenção, uma diminuiçãodo número de processadores “activos” (i.e., em uso efectivo).18
  • 18. Arquitecturas de memória distribuída1 Organização geral de multiprocessadores2 Arquitecturas simétricas de memória partilhada3 Arquitecturas de memória distribuída4 Múltiplos fios de execuçãoJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 19 / 31Notas:19
  • 19. Arquitecturas de memória distribuídaMemória distribuídaProtocolos de monitoração não são “escaláveis”.Usar uma directoria para manter informação sobre cada bloco que podeser colocado em cache.A directoria pode ser fisicamente distribuída; contudo é sempre verdadeque o estado de uma bloco partilhado é sempre mantido na mesmaposição (fixa).Cada bloco pode estar partilhado, cópia exclusiva, ausente.Os nós são: local (origem do pedido), “lar” (nó que contém a memóriadesejada) e remoto (outros nós, que podem ter cópias de blocos).Nós podem ser uniprocessadores ou multiprocessadores SMP.Simplificação: mensagens são recebidas/tratadas pela ordem de envio.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 20 / 31Notas:20.1. Multiprocessadores “escaláveis” (i.e., cujo desempenho é potencialmenteproporcional ao número de processadores) devem ter um sistema de memóriatambém “escalável”, que pode ter ou não coerência de memórias cache.20.2. Exemplo CrayT3D/E: Multiprocessador de memória distribuída interligada por umcomutador. Cada processador tem memória local privada e memória partilhada;apenas dados da memória local podem ficar em cache. Para aceder a dadosremotos, um nó envia uma mensagem ao nó remoto apropriado. Um nó pode teruma cópia local de dados remotos, mas a sua gestão é feita por software. Estaorganização é mais simples que a alternativa (manter a coerência das memóriacache por hardware).20.3. As desvantagens da organização sem suporte de hardware são:a) Mecanismos de manutenção de coerência por sofware não são transparentes eo suporte por parte dos compiladores é muito reduzido.b) Não aproveita o princípio da localidade: os dados são transferidospalavra-a-palavra, e não bloco-a-bloco. Pode existir suporte paratransferências maiores (p. ex., DMA) mas é de utilização complexa e deimplementação dispendiosa (hardware especial).c) Mecanismos de redução de latência (p.ex., prefetch) são de utilidade limitada.20
  • 20. Arquitecturas de memória distribuídaSistema distribuído com directoriaJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 21 / 31Notas:21.1. A manutenção distribuída de coerência recorre a uma directoria, uma estruturaque mantém informação actualizada sobre o estado de cada bloco que possa estarem cache (a informação é proporcional ao produto de blocos de memória pelonúmero de processadores).21.2. Para evitar que a directoria se transforme no “gargalo” do sistema, também ela éfrequentemente distribuída.21.3. Os estados básicos de um bloco de cache num protocolo de directoriacorrespondem aos dos protocolos de monitorização; para os blocos registados nadirectoria os estados também são os mesmos.21.4. Para cada bloco, a directoria mantém informação sobre quais as memórias cacheque têm cópias. A maneira usual de proceder consiste em ter um vector de bits emque cada um indica se a cache correspondente tem uma cópia do bloco ou não.21.5. O mapeamento do espaço de endereçamento nas memórias físicas é fixo. Dadoum endereço, é simples determinar qual o seu “lar”. Por exemplo, os bits maissignificativos de um endereço podem especificar qual o nó que da memória edirectoria correspondentes.21
  • 21. Arquitecturas de memória distribuídaMensagens de um protocolo de coerência DSMProtocolo simplificado:Tipo Fonte Destino Info Funçãoread miss CL DL P, A P tem falha de leitura a A; obtém dados; Pacrescentado aos “partilhadores”write miss CL DL P, A P tem falha de escrita em A; pede dados; P é“dono” exclusivoinvalidate DL CR A invalidar cópia partilhada em Afetch DL CR A obter bloco de A e enviá-lo para directoria“lar”; mudar status de A para “partilhado” (di-rectoria remota)fetch/invalidate DL CR A obter bloco de A e enviá-lo para directoria“lar”; invalidar bloco em cachedata value reply DL CL D transmite valor D da directoria “lar”data write back CR DL A, D escreve valor D para endereço AFonte/destino: CL (cache local), DL (directoria “lar”), CR (cache remota).Conteúdo: P (processador que faz pedido), A (endereço), D (dado).João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 22 / 31Notas:22.1. Neste protocolo ocorre um write back sempre que o bloco passa a “partilhado”(mensagens data write back, fetch e fetch/invalidate). Isto simplifica o protocolo,porque garante que qualquer bloco alterado está no modo “exclusivo” e cadabloco partilhado está disponível na CL (“cache lar”).22.2. Outra simplificação: Tentativas de alteração de dados não-exclusivos geramsempre um write miss e o processador protela até que o acesso esteja completo.22.3. Notar que neste caso não existe um ponto de serialização implícito (obarramento). Notar também que algumas mensagens requerem respostasexplícitas. Por exemplo, a mensagem data value reply é sempre uma resposta a umpedido anterior (p. ex. uma mensagem read miss).22.4. Simplificação importante e não-realista: mensagens são recebidas e tratadas pelaordem que são enviadas. No exemplo, esta assunção é usada para garantir que asmansagens de invalidação tem efeitos imediatos. Esta assunção não se verificapara a maioria dos sistemas reais.22.5. Notar que a directoria local é acedida mesmo que o nó que acede aos dados (o nó“local” do pedido) seja o nó “lar” dos dados, já que podem existir cópias noutrosnós (os nós “remotos”).22
  • 22. Arquitecturas de memória distribuídaEstados de bloco individualJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 23 / 31Notas:23.1. Por razões de eficiência, o estado dos blocos de cache é registado na memóriacache e na directoria.23.2. Os estados dos blocos de memória cache são similares aos usados no protocolode monitorização usado no exemplo anterior. Também aqui um write hit é tratadocomo um write miss.23
  • 23. Arquitecturas de memória distribuídaEstados de uma directoriaJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 24 / 31Notas:24.1. Para cada bloco, a directoria mantém um registo dos nós onde existem cópias(denominado Sharers na figura).24.2. Para blocos nos estados uncached e shared apenas duas mensagens podem serrecebidas pela directoria: read miss e write miss. Em qualquer caso, é enviadauma resposta ao nó “requerente” com os dados do bloco.24.3. Para blocos no estado exclusive pode surgir ainda a mensagem data write back,quando a memória cache do nó que detém a única cópia necessita de executarwrite back (por exemplo, para substituir um bloco da sua memória cache).24.4. O tratamento de uma mensagem write miss para blocos no estado exclusiveimplica mandar uma mensagem de invalidação para o nó que tem a cópia válida,receber a resposta com o valor actualizado, guardá-la em memória e enviar essemesmo valor para o nó “requerente” (que passa a ser o seu “dono”). O tratamentode um read miss segue uma abordagem semelhante, excepto que o bloco passa aoestado de partihado.24.5. Em protocolos mais realistas a situação do ponto anterior é tratada de formaligeiramente diferente: a informação é transferida directamente do anterior“dono” para o novo (actualizando ao mesmo tempo o valor no “lar”, senecessário).24
  • 24. Múltiplos fios de execução1 Organização geral de multiprocessadores2 Arquitecturas simétricas de memória partilhada3 Arquitecturas de memória distribuída4 Múltiplos fios de execuçãoJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 25 / 31Notas:25
  • 25. Múltiplos fios de execução“Multithreading”Multithreading permite a múltiplos fios de execução partilharem umúnico processador físico.« É necessário manter o estado de cada fio: registos, PC,. . .Duas abordagens principais:« fino—processador troca entre fios a cada instrução (excluindoaqueles que estão “suspensos”); troca de “fios” deve ser imediata e“barata”.Por outro lado, esta abordagem atrasa fios individuais (devido àexecução de instruções de outro fio).« grosseiro—processador troca de fio quando ocorrem protelamentosdemorados (falha em L2, p. ex.); não aproveita atrasos pequenos.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 26 / 31Notas:26.1. Do ponto de vista lógico, multithreading faz com que o sistema operativo “veja”mais que um processador: a utilização de multithreading não é transparente parao sistema operativo (embora possa ser transparente para as aplicações).26.2. Multithreading fino tem a capacidade para “cobrir” protelamentos curtos oulongos, porque prossegue naturalmente com a execução dos fios não bloqueados.26.3. A maior desvantagem de multithreading fino é o facto de atrasar “fios” que nãotenham protelamentos (já que a sua execução é sempre intercalada com a dosoutros fios).26.4. No caso de multithreading grosseiro, não é necessário que a troca de fios sejainstantânea; o atraso de fios individuais também é menor. Contudo, a troca entrefios envolve geralmente deixar esvaziar a pipeline e voltar a preenchê-la cominstruções do novo fio.26
  • 26. Múltiplos fios de execuçãoSMT: “Simultaneous Multithreading”Observação: Um processador com sequenciamento dinâmico e emissãode múltiplas instruções já dispõe de muitos dos mecanismos dehardware necessários para MT.Por outro lado, não é frequente que todas as unidades funcionaisestejam ocupadas simultaneamente (i.e., a “concorrência” existentenum único fio de execução é limitada).Logo: ocupar as unidades funcionais com instruções de outros fios:execução simultânea de fios.ILP e TLP (thread-level parallelism) são aproveitados simultaneamente.Perspectiva alternativa: um processador físico “suporta” vários (2, 4, 8,. . . ) processadores lógicos: para S.O. e compiladores é como seexistissem múltiplos CPUs.João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 27 / 31Notas:27.1. Os processadores avançados já usam métodos sofisticados de register renaming. Épreciso que as tabelas de mapeamento dos registos internos nos registos lógicossejam separadas para cada fio.27.2. Para aproveitar SMT é necessário obter instruções para os diferentes fios (porexemplo, usando streams de instruções separados).27.3. É desejável que instruções de um fio possam terminar (commit) de formaindependente das de outro fio, o que requer a existência de reorder buffersseparados.27
  • 27. Múltiplos fios de execuçãoSequenciamento de instruçõestemposuperescalar MT grosseiro MT fino SMTJoão Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 28 / 31Notas:28.1. Trata-se de um exemplo muito simplificado. A possibilidade de combinarinstruções de múltiplos fios (SMT) é limitada na prática por muitos factores:número máximo de fios suportado, limitações dos diverso buffers, capacidade paraobter instruções de diferentes origens, limitações nas combinações aceitáveis deinstruções, etc.28
  • 28. Múltiplos fios de execuçãoSMT: DesafiosBanco de registos capaz de lidar com múltiplos contextos.Manter um reduzido “overhead” por ciclo de relógio:1 emissão de instruções;2 finalização (a maioria dos CPUs com SMT finaliza apenas instruções de umúnico fio em cada ciclo de relógio).Assegurar que o tratamento simultâneo de vários fios não degrada odesempenho das memórias cache.Lidar com a complexidade: a tarefa de verificação é muito complexa(mais complexa que para multiprocessadores).Os benefícios podem ser notáveis .João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 29 / 31Notas:29.1. Existem ainda outras questões. Por exemplo, é interessante poder estabeleceralgum tipo de prioridade entre os fios em execução, talvez estabelendo umconjunto de fios “preferidos” cujas instruções teriam precedência sobre as dosoutros fios.29.2. Embora os desafios mencionados acima sejam importantes, é de notar que ooverhead de SMT é pequeno, o que indica que abordagens relativamente simplespodem resultar bem. Por outro lado, como a eficiência dos processadoressuperscalares é relativamente baixa (em termos de aproveitamento dos recursos),mesmo soluções com algum overhead podem ser competitivas.29
  • 29. Múltiplos fios de execuçãoSMT: Promessas (1/2)João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 30 / 31Notas:30.1. Os resultados apresentados acima foram obtidos por simulação de umprocessador com SMT agressivo (i.e., mais sofisticado que os processadorescomerciais de hoje). As características são as seguintes:Unidades inteiras 6Pipeline 9 andaresUnidades VF 4 (uso genérico)Registos 100 (para register renaming)Finalização 12 instruções por cicloCache I1 128 KB, 2 vias, 32 operações pendentesCache D1 128 KB, 2 viasCache L2 16 MB , 2 vias, pipelinedContextos SMT 8Fetch 8 instruções por ciclo (de dois contextos)30.2. As colunas marcadas superscalar referem-se ao processador de base (com 1contexto); as colunas SMT referem-se ao processador com 8 contextos.30.3. Como é claro dos gráficos, parece existir uma vantagem clara da versão SMT noaproveitamento do paralelismo. O uso de SMT só faz sentido, se existirem váriosfios de execução disponíveis. Por exemplo, a primeira coluna apresenta osresultados da execução simultânea de todo os programas do Specint95.30
  • 30. Múltiplos fios de execuçãoSMT: Promessas (2/2)João Canas Ferreira (FEUP/DEEC) Multiprocessadores Novembro de 2010 31 / 31Notas:31.1. A figura mostra a evolução de outros parâmetros do desempenho. Quase todostêm uma evolução positiva, com especial relevo para a taxa de utilização dasunidades funcionais (o objectivo principal da adopção de SMT) e da unidade deobtenção de instruções.31.2. O desempenho da memória cache de dados (nível 1) é pior (devido a interferênciaentre os diversos fios), mas o efeito é relativamente limitado. Os resultadosparecem indicar que a interferência entre os diversos fios é relativamentepequena (e possivelmente pode ser ultrapassada aumentando a capacidade damemória D1).31