1 / 21

Capítulo 9 Multi-processadores

Capítulo 9 Multi-processadores. Introdução (9.1). Processamento paralelo: programa sendo executado por múltiplos processadores simultaneamente Questões básicas no projeto de sistemas multiprocessados: Compartilhamento de dados Coordenação entre os processadores Quantidade de processadores

Download Presentation

Capítulo 9 Multi-processadores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capítulo 9Multi-processadores

  2. Introdução (9.1) • Processamento paralelo: • programa sendo executado por múltiplos processadores simultaneamente • Questões básicas no projeto de sistemas multiprocessados: • Compartilhamento de dados • Coordenação entre os processadores • Quantidade de processadores • Compartilhamento de dados • Processadores com um único espaço de endereçamento = Processadores de memória compartilhada (comunicação via variável comum) • UMA – uniform memory access ou SMP – symmetric multiprocessors • NUMA – nonuniform memory access • Processadores de memória não compartilhada (private) • Comunicação entre processos via troca de mensagens • send e receive

  3. Processadores em rede • Modelo de paralelismo mais recente • clusters • computadores ligados por uma rede

  4. Aceleração com multiplrocessamento e lei de Amdhal (9.2) • Exemplo (p.715): • Achar o speedup linear com 100 processadores. Que fração da computação original pode ser seqüencial ? • Tempo de execução após melhora = (tempo de execução afetado pela melhora / quantidade de melhora) + tempo de execução não afetado • se buscamos aceleração linear  • Tempo de execução após melhora / 100 = (tempo de execução afetado pela melhora / 100) + tempo de execução não afetado • Tempo de execução não afetado = zero • conclusão: • para alcançar aceleração (speedup) linear com 100 processadores nenhuma operação original pode ser sequencial • ou para alcançar aceleração de 99 em 100 processadores, qtd de operações lineares < 0,01%

  5. Aceleração via execução paralela • Exemplo (p. 716) • Fazer duas somas: • duas variáveis escalares • duas matrizes 1000 X 1000. Qual o speedup para 1000 processadores ? • Assumindo tempo para uma soma = t • 1 soma não afetada pelo paralelismo e 1.000.000 afetadas • tempo antes = 1.000.001 t • Tempo de execução depois do paralelismo = (tempo de execução afetado pela melhora / quantidade de melhora) + tempo de execução não afetado • Tempo de execução depois melhora = (1.000.000/1000)t + 1t = 1.001t • Aceleração = 1.000.001/1.001 = 999

  6. Multiprocessadores conectados por um barramento simples

  7. Programa paralelo • Exemplo (p.718): Somar 100.000 números em um computador com 10 processadores ligados em um único barramento Pn é o processador n (de 0 a 9) 1. Somar 10.000 números em cada processador (definir faixas de endereços de memória) sum[Pn] = 0; for (i = 10000*Pn; i < 10000*(pn+1); i = i + 1;) sum[Pn] = sum[pn] + A[i] ; /* soma as regiões alocadas ao processador*/ 2. Somar as 10 sub-somas; metade dos processadores somam pares de somas parciais, um quarto somam pares das novas somas parciais ,etc., etc., etc.. half = 10; repeat synch(); /* primitiva de sincronização; espera a soma do bloco anterior*/ if (half%2 != 0 && Pn ==0) sum[0] = sum[0] + sum[half –1]; half = half/2; if (Pn < half) sum[Pn] = sum[Pn] + sum[Pn+half]; until (half ==1);

  8. P r o c e s s o r P r o c e s s o r P r o c e s s o r S n o o p C a c h e t a g S n o o p C a c h e t a g S n o o p C a c h e t a g t a g a n d d a t a t a g a n d d a t a t a g a n d d a t a S i n g l e b u s M e m o r y I / O Coerência de caches (snooping) • Snoop: controlador monitora o barramento para determinar se existe ou não uma cópia de um bloco compartilhado • Manutenção da coerência: problema só na escrita • Processador tem que ter acesso exclusivo na escrita • Todos os processadores tem que ter a cópia mais recente após uma escrita

  9. I n v a l i d P r o c e s s o r r e a d m i s s R e a d O n l y ( n o t v a l i d ( c l e a n ) c a c h e b l o c k ) ) t i ) h y r f o i m e P r o c e s s o r w r i t e m i s s t e a P r o c e s s o r w r i t e m d i l o a t v ( h i t o r m i s s ) n k i c d o l n P r o c e s s o r b e y S t ( r m i s s r e a d i d k c a b e t i r W ( R e a d / W r i t e ( d i r t y ) P r o c e s s o r w r i t e a . C a c h e s t a t e t r a n s i t i o n s u s i n g s i g n a l s f r o m t h e p r o c e s s o r I n v a l i d R e a d O n l y t e m i s s ( n o t v a l i d ( c l e a n ) f o r t h i s b l o c k I n v a l i d a t e o r c a c h e b l o c k ) A n o t h e r p r o c e s s o r h a s a r e a d ( s e e n o n b u s ) a n o t h e r p r o c e s s o r m i s s o r a w r i t e m i s s f o r h a s a w r i t h i s b l o c k ( s e e n o n b u s ) ; w r i t e b a c k o l d b l o c k R e a d / W r i t e ( d i r t y ) b . C a c h e s t a t e t r a n s i t i o n s u s i n g s i g n a l s f r o m t h e b u s Protocolo snooping • write-invalidate • escrita  todas as cópias em outras caches tornem-se inválidas até a atualização • O processador que irá escrever manda um sinal de inválido no barramento e todas as caches verificam para ver se tem uma cópia • se sim, tornam o bloco que contem a palavra inválido • write-update (write-broadcast) • processador que escreve propaga o novo dado no barramento e todas as caches com cópia são atualizadas

  10. L o a d l o c k v a r i a b l e N o U n l o c k e d ? ( = 0 ? ) Y e s T r y t o l o c k v a r i a b l e u s i n g s w a p : r e a d l o c k v a r i a b l e a n d t h e n s e t v a r i a b l e t o l o c k e d v a l u e ( 1 ) N o S u c c e e d ? ( = 0 ? ) Y e s B e g i n u p d a t e o f s h a r e d d a t a F i n i s h u p d a t e o f s h a r e d d a t a U n l o c k : s e t l o c k v a r i a b l e t o 0 Sincronização usando coerência

  11. Multiprocessadores conectados em rede

  12. Programa paralelo em rede • Exemplo (p.729) – Programação paralela e troca de mensagens: • somar 100.000 números em um computador com 100 processadores (com espaços de endereçamento privados) ligados a uma rede • distribuir os 100 conjuntos de dados nas memórias locais e somar sum = 0; for (i = 0; i < 1000; i = i + 1;) sum = sum + A[i] ; /* soma arrays locais*/ Somar as 100 sub-somas  send (x,y) onde x = processador Pn e y o valor half = 100; repeat half = (half+1)/2; if (Pn >= half && Pn < limit) send (pn – half, sum) if (Pn < limit/2 -1) sum = sum + receive(); limit = half; until (half ==1);

  13. P r o c e s s o r P r o c e s s o r P r o c e s s o r P r o c e s s o r C a c h e C a c h e C a c h e C a c h e M e m o r y M e m o r y M e m o r y M e m o r y D i r e c t o r y D i r e c t o r y D i r e c t o r y D i r e c t o r y N e t w o r k N e t w o r k a . b . Addressing in large-scale parallel processors Coerência no nível de cache usando diretórios; dados originais na memória e cópias replicadas apenas nas caches Coerência no nível de memória usando diretórios; cópias replicadas em memória remota (cor) e nas caches

  14. N e t w o r k B u s C o s t 2 4 8 1 6 3 2 N u m b e r o f p r o c e s s o r s N e t w o r k B u s P e r f o r m a n c e 2 4 8 1 6 3 2 N u m b e r o f p r o c e s s o r s B u s N e t w o r k P e r f o r m a n c e p e r u n i t c o s t 2 4 8 1 6 3 2 N u m b e r o f p r o c e s s o r s Desempenho de sistemas Custo, desempenho e custo/desempenho em processadores conectados via barramento ou rede

  15. Clusters N máquinas têm N memórias independentes e N cópias do SO

  16. Topologia de redes • Dois extremos: • single bus totalmente conectado • Rede: grafo, links são bidirecionais, podem existir chaves (switches) • Exemplo: Anel, mais de umatransação simultânea

  17. Medidas de desempenho de rede: • Total Network Bandwidth = soma dos bandwidths de todos links • single bus = 1 • anel = N • fully connected = N (N - 1) / 2 • Bisection Bandwidth; dividir a rede em duas sub-redes com N/2 nós (da maneira mais pessimista); Medida = BW entre as sub-redes • single bus = 1 • anel = 2 • fully connected = (N/2)2

  18. 3 a . 2 D g r i d o r m e s h o f 1 6 n o d e s b . n - c u b e t r e e o f 8 n o d e s ( 8 = 2 s o n = 3 ) Duas formas: Mesh e Cubo

  19. Bandwidths para uma rede com 64 nós

  20. P 0 P 1 P 2 P 0 P 3 P 1 P 4 P 2 P 5 P 3 P 6 P 4 P 7 P 5 P 6 P 7 a . C r o s s b a r b . O m e g a n e t w o r k A C B D c . O m e g a n e t w o r k s w i t c h b o x Topologia multi-estágio

  21. Classificação de Michael Flynn • SISD: Single Instruction (stream) Single Data (stream) • processador único • single = o que? • soma paralela? pipeline? • referência para Flynn: single hoje = MIPS dos capítulos 5 e 6 • SIMD:Single Instruction Multiple Data • operam sobre vetores de dados • MISD: Multiple Instruction Single Data • difícil de relacionar com sistemas práticos (ver “elaboration” p. 752) • MIMD: Multiple Instruction Multiple Data • multiprocessadores conectados via barramento ou rede:

More Related