A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Multiprocessadores e Paralelismo nível de Thread

Apresentações semelhantes


Apresentação em tema: "Multiprocessadores e Paralelismo nível de Thread"— Transcrição da apresentação:

1

2 Multiprocessadores e Paralelismo nível de Thread

3 Roteiro da Aula Conceitos básicos Taxonomia dos processadores
Modelos de memória e de comunicação Problema da coerência de memória Protocolos de coerência baseado em snoop Protocolos de coerência baseado em diretórios

4 Desempenho Uniprocessor (SPECint)
3X From Hennessy and Patterson, Computer Architecture: A Quantitative Approach, 4th edition, 2006 VAX : 25%/year 1978 to 1986 RISC + x86: 52%/year 1986 to 2002 RISC + x86: ??%/year 2002 to present

5 Interesse em Multiprocessadores
Uma crescente utilização de servidores Um crescimento em aplicações data-intensive Um melhor entendimento de como usar multiprocessadores para explorar thread-level paralelismo Investimento em replicação é mais atrativo que investimento em um projeto exclusivo.

6 Flynn’s Taxonomy Single Instruction Single Data (SISD) (Uniprocessor)
M.J. Flynn, "Very High-Speed Computers", Proc. of the IEEE, V 54, , Dec Single Instruction Single Data (SISD) (Uniprocessor) Single Instruction Multiple Data SIMD (single PC: Vector, CM-2) Multiple Instruction Single Data (MISD) (????) Multiple Instruction Multiple Data MIMD (Clusters, SMP servers) Flynn classificou de acordo com streams de dado e controle em 1966 SIMD  Data Level Parallelism MIMD  Thread Level Parallelism MIMD mais popular pois: Flexibilidade: N programs e 1 programa multithreaded Cost-effective: mesma MPU em desktop & MIMD

7 Multiprocessamento Clusters commodity clusters custom clusters
Baseados em processadores comerciais e interconexões custom clusters O projetista customiza cada nó de processamento e a rede de interconexão

8 Multiprocessamento Clusters
Aplicações que focam em taxa de transferência e possuem pouca (ou nenhuma) comunicação entre threads, com Servidores WEB, e aplicações baseadas em transações podem ser implementadas em um cluster.

9 Classificação de Multiprocessadores
Arquitetura Paralela = Arquitetura do Computador + Arquitetura da Comunicação Classificação por memória: Processador de Memória Centralizada (Symmetric) Típico para sistemas pequenos  demanda de largura de banda de memória e rede de comunicação. Multiprocessador de Memória Fisicamente Distribuída Escala melhor  demanda de largura de banda para rede de comunicação

10 Classificação por Memória
Multiprocessadores de Memória Centralizada Poucos processadores ( poucas dezenas chips ou cores) em 2006 Memória única e centralizada P0 P1 M IO C Pn ... Centralized Memory

11 Classificação por Memória
Multiprocessadores de Memória Fisicamente Distribuída Maior número de processadores (centenas de chips ou cores) Memória distribuída entre processadores Distributed Memory ... P0 M C IO Interconnection Network P1 Pn

12 Centralized vs. Distributed Memory
Scale Distributed Memory ... P0 M C IO Interconnection Network P1 Pn Centralized Memory P0 P1 M IO C Pn ...

13 Classificação de Multiprocessadores
Arquitetura Paralela = Arquitetura do Computador + Arquitetura da Comunicação Classificando por comunicação: Multiprocessador baseado em Message-Passing : processadores enviam menssagens Processador baseado em Memória Compartilhada: processadores se comunicam através de espaço de endereçamento comum. Memória Centralizada: , UMA (Uniform Memory Access time) Memória Distribuída:, NUMA (Non Uniform Memory Access time)

14 Exemplos de Multiprocessadores

15 Exemplos de Multiprocessadores

16 Multi-core Multiprocessador implementado em um único circuito integrado

17 Mudança de Paradigma “We are dedicating all of our future product development to multicore designs. … This is a sea change in computing” Paul Otellini, President, Intel (2005) Todas as companhias de processadores estão desenvolvendo multi-core (2X CPUs / 2 anos) Manufacturer/Year AMD/’05 Intel/’06 IBM/’04 Sun/’05 Processors/chip 2 8 Threads/Processor 1 4 Threads/chip 32

18 Multi-Core Processor

19 Intel Core 2 Duo Cores homegêneos Interconexão baseada em barramento
Superscalares (escalonamento dinâmico, especulação, multiple issue) Interconexão baseada em barramento Cada “core” tem cache local (L1) Memória compartilhada (cache L2) no chip Source: Intel Corp.

20 Desafios do processamento Paralelo
Primeiro desafio: quantos % do programa é inerentemente sequencial Suponha speedup de 80X speedup para 100 processadores. Qual a fração do programa que deve ser sequencial? 10% 5% 1% <1% O,25%

21 Resposta usando Lei de Amdahl

22 Desafios do processamento Paralelo
Segundo desafio: longas latências de memórias remotas Suponha 32 CPU MP, 2GHz, 200 ns memória remota, todos acessos locais são hits e CPI base de 0.5. (Acesso remoto = 200/0.5 = 400 ciclos.) Qual o impacto no desempenho se 0.2% das instruções envolvem acessos remotos? > 1.5X > 2.0X > 2.5X 2,6X

23 Equação do CPI CPI = CPI base + taxa de acesso remoto x custo do acesso remoto CPI = % x 400 = = 1.3 Sem acesso remoto é 2.6 mais rápida que com 0.2% das instruções envolvendo acessos remoto

24 Desafios do processamento Paralelo
Paralelismo da Aplicação através de novos algoritmos com melhor desempenho Impacto da longa latência no acesso remoto mudanças na arquitetura e na programação For exemplo, redução dos acessos remotos por: Caching shared data (HW) Restruturando estruturas de dados para garantir mais acessos locais (SW) Foco do capítulo: gerenciar latência através do uso de cache.

25 Multi-processadores de Memória Compartilhada

26 Multi-processadores de Memória Compartilhada
Evolução: Múltiplas placas ou chips usando barramento compartilhado Múltiplos processadores dentro de um chip. Caches Dados Privado usados por cada processador Dados Compartilhados usados por múltiplos processadores Caching dado compartilhado  reduz latência a dados compartilhado, largura de banda da memória para acesso a dado compartilhado e largura de banda de interconexão  problema de coerência de cache

27 Exemplo de problema de Coerência de Cache
1 2 P 3 4 u = ? 3 u = 7 5 u = ? $ $ $ 1 u :5 2 u :5 I/O devices u :5 Memory Processadores verão diferentes valores de u após evento 3 Caches write-through: valores inconsistentes Caches write back: valor escrito na memória depende do momento que que ocorre o flush de cache e os valores são atualizados na memória

28 Garantindo a Coerência
Como caches suportam o compartilhamento com coerência? Replicação – para dados compartilhados que estão na memória são feitas cópias nas caches que estão usando o dado Reduz latência de acesso e utilização simultânea do barramento na leitura de dado compartilhado. P P P 1 2 3 u =? $ $ $ u :5 I/O devices u :5 Memory

29 Garantindo a Coerência
Como caches suportam o compartilhamento com coerência? Migração – o valor mais atualizado da variável é movido entre a cache que tem o valor mais atual e a cache que precisa do dado Reduz a latência devido a leitura dos dados na memória P P 2 P 1 3 3 u = ? =7 2 u =7 $ $ $ 1 u :5 u=7 I/O devices u :5 Memory

30 Garantindo a Coerência
Como manter coerência de dados migrados ou replicados? Protocolos implementados pelo controlador da cache e/ou pelo controlador de memória que permitem o rastreamento do status de compartilhamento.

31 Coerência Só uma pessoa pode falar no microfone por vez
Toda modificação em conta deve ser comunicada entre os funcionários através do alto falante Após modificações cópias devem ser inutilizadas Coerência

32 Protocolos de Coerência de Cache
Snooping — Cada cache que possui cópia de um dado também tem uma cópia do status de compartilhamento, Todas as caches são acessíveis através de meio barramento Todos os controladores de caches monitoram ou snoop o meio para determinar se eles possuem ou não uma cópia sendo requisitada pelo barramento Directory based — O status do compartilhamento de um bloco da memória física é armazenado em um local, diretório

33 Protocolos de Coerência de Cache
Write Invalidate As cópías nas demais caches são Invalidadas na ocorrência de uma escrita em uma das caches Write Update As cópias das demais caches são atualizadas após a ocorrência de uma escrita em uma das caches Write update causam maior utilização do barramento Multiprocessadores atuais usam write invalidate

34 Protocolo Snooping de Coerência de Cache
State Tag Data Controladores de Cache “snoops” todas as transações no barramento Transações relevantes : envolvem bloco que a cache possui Realiza ação para garantir coerência invalida, atualiza, ou fornece valor Atualiza estado de compartilhamento do bloco de cache

35 Exemplo: Write-thru Invalidate
2 P 1 3 4 u = 7 3 u = 7 5 u = 7 $ $ $ 1 u :5 2 u :5 I/O devices u = 7 u :5 Memory P3 Deve invalidar todas as cópias antes da escrita Caches write through: simplicidade de implementação porém mais acessos à memória Caches write-back: menos acessos à memória, mas como encontrar o bloco que contem a cópia com valor atualizado?

36 Módulos da Arquitetura
State Tag Data Estados: Não válido, Válido, dirty Protocolo de barramento: Requisição Comando Dado Acesso simultâneo: Só um processador ganha o acesso Decisão: árbitro Invalidação das demais cópias Onde encontrar a cópia mais atualizada do bloco de cache?

37 Localizando cópia mais atualizada
Caches Write-through: usa cópia da memória Write through é mais simples porém causa muitos acessos à memória e maior utilização do barramento. Caches Write-back: deve localizar cópia mais recente nas caches. É mais complicado de implementar Reduz acessos à memória A maioria dos multiprocessadores usam caches write-back

38 Localizando cópias em Caches Write Back
Solução: Usar o mesmo mecanismo de snooping para achar a cópia mais atual Blocos de cache Snoop todo endereço colocado no barramento Se processador possui cópia atual do bloco requisitado ele responde a requisição de leitura e aborta acesso à memória.

39 Localizando cópia mais atualizada
Caches Write-through: usa cópia da memória Write through é mais simples porém causa muitos acessos à memória e maior utilização do barramento. Caches Write-back: deve localizar cópia mais recente nas caches. É mais complicado de implementar Reduz acessos à memória A maioria dos multiprocessadores usam caches write-back

40 Localizando cópias em Caches Write Back
Solução: Usar o mesmo mecanismo de snooping para achar a cópia mais atual Blocos de cache Snoop todo endereço colocado no barramento Se processador possui cópia atual do bloco requisitado ele responde a requisição de leitura e aborta acesso à memória.

41 Protocolo Snooping Write Back
Cada bloco de cache vai estar em UM dos estados: Shared : bloco pode ser lido OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty OU Invalid : bloco não contem dado válido

42 Protocolo Snooping Write Back
Cada bloco de cache vai estar em UM dos estados: Shared : bloco pode ser lido OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty OU Invalid : bloco não contem dado válido CPU solicita leitura: Se cache não tem cópia: Controlador coloca Read Miss no barramento Outras caches: Read misses: todas as caches vão dar “snoop” no barramento Controlador bisbilhota todo endereço colocado no barramento Se a cache possui uma cópia Exclusive do bloco requisitado, fornece o bloco em resposta a requisição de leitura e aborta o acesso à memória.

43 Protocolo Snooping Write Back
Cada bloco de cache vai estar em UM dos estados: Shared : bloco pode ser lido OU Modified/Exclusive : cache tem somente uma cópia que pode ser escrita e dirty OU Invalid : bloco não contem dado válido CPU solicita escrita: Se cache não tem cópia: Controlador coloca Write Miss no barramento Outras caches: Write misses: todas as caches vão dar “snoop” no barramento Controlador bisbilhota todo endereço colocado no barramento Se a cache possui uma cópia Exclusive do bloco requisitado, atualiza a memória e Invalida a cópia. Se a cache possui uma cópia Shared do bloco requisitado invalida a cópia

44 Snooping: Write-Back - CPU
CPU Read hit Mudança de estado considerando requisições da CPU para cada bloco de cache Blocos que não estão na cache não são validos Shared (read/only) CPU Read Invalid Place read miss on bus CPU Write Place Write Miss on bus Invalid: read => shared write => dirty shared looks the same CPU Write Place Write Miss on Bus Cache Block State Exclusive (read/write) CPU read hit CPU write hit CPU Write Miss (?) Write back cache block Place write miss on bus

45 Snooping: Write-Back Substituição de Bloco
CPU Read hit Mudança de estado para requisições da CPU para cada bloco da cache CPU Read Shared (read/only) Invalid Place read miss on bus CPU Write CPU Read miss Place read miss on bus CPU read miss Write back block, Place read miss on bus Place Write Miss on bus Invalid: read => shared write => dirty shared looks the same Cache Block State CPU Write Place Write Miss on Bus Exclusive (read/write) CPU read hit CPU write hit CPU Write Miss Write back cache block Place write miss on bus

46 Snooping: Write-Back - Bus
Mudança de estado considerando operações do barramento para cada bloco de cache Write miss for this block Shared (read/only) Invalid Write miss for this block Read miss for this block Write Back Block; (abort memory access) Write Back Block; (abort memory access) Exclusive (read/write)

47 Snooping Write-back CPU Read hit Write miss for this block Mudança de estado para requisições da CPU para cada bloco da cache e para requisições do barramento para cada bloco de ache Shared (read/only) Invalid CPU Read Place read miss on bus CPU Write Place Write Miss on bus Write miss for this block CPU Read miss Place read miss on bus CPU read miss Write back block, Place read miss on bus Write Back Block; (abort memory access) CPU Write Place Write Miss on Bus Invalid: read => shared write => dirty shared looks the same Read miss for this block Write Back Block; (abort memory access) Cache Block State Exclusive (read/write) CPU read hit CPU write hit CPU Write Miss Write back cache block Place write miss on bus

48 Exemplo Processor 1 Processor 2 Bus Memory
Remote Write Write Back Remote Write Invalid Shared Exclusive CPU Read hit Read miss on bus Write miss on bus CPU Write Place Write Miss on Bus CPU read hit CPU write hit Remote Read Write Back Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 CPU Read Miss CPU Write Miss Write Back

49 Exemplo: Passo 1 Estado ativo:
Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 Estado ativo: Remote Write Write Back Remote Write Invalid Shared Exclusive CPU Read hit Read miss on bus Write miss on bus CPU Write Place Write Miss on Bus CPU read hit CPU write hit Remote Read Write Back CPU Read Miss CPU Write Miss Write Back

50 Exemplo: Passo 2 Assuma que estado inicial da cache é “não válido”
CPU Read hit Remote Write Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 Shared Invalid CPU Read Miss Read miss on bus Write miss on bus Remote Write Write Back CPU Write Place Write Miss on Bus Remote Read Write Back Exclusive CPU read hit CPU write hit CPU Write Miss Write Back

51 Exemplo: Passo 3 Assuma que estado inicial da cache é “não válido”
Remote Write Write Back Remote Write Invalid Shared Exclusive CPU Read hit Read miss on bus Write miss on bus CPU Write Place Write Miss on Bus CPU read hit CPU write hit Remote Read Write Back Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 CPU Read Miss CPU Write Miss Write Back

52 Exemplo: Passo 4 Assuma que estado inicial da cache é “não válido”
Remote Write Write Back Remote Write Invalid Shared Exclusive CPU Read hit Read miss on bus Write miss on bus CPU Write Place Write Miss on Bus CPU read hit CPU write hit Remote Read Write Back Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 CPU Read Miss CPU Write Miss Write Back

53 Exemplo: Passo 5 Assuma que estado inicial da cache é “não válido”
Remote Write Write Back Remote Write Invalid Shared Exclusive CPU Read hit Read miss on bus Write miss on bus CPU Write Place Write Miss on Bus CPU read hit CPU write hit Remote Read Write Back Assuma que estado inicial da cache é “não válido” A1 e A2 mapeiam para o mesmo slot de cache mas A1 != A2 CPU Read Miss Why write miss first? Because in general, only write a piece of block, may need to read it first so that can have a full vblock; therefore, need to get Write back is low priority event. CPU Write Miss Write Back

54 Limitações Processadores mais rápidos e em maior número….
Aumento no número de processadores -> cresce demanda por memória - > tornando-se um bottleneck. Para bus-based multiprocessador, Bus: acessos devido a coerência e acessos à memória Memória UNICA: recebe TODAS as requisições dos processadores. Processadores mais rápidos e em maior número…. Como suportar este novo cenário? Múltiplos barramentos e redes de interconexão Memória configurada em bancos de memória

55 Limitações Múltiplos barramentos e redes de interconexão
Memória configurada em bancos de memória

56 Network-based Coherence

57 Abordagem Escalável: Diretórios
Cada bloco de memória tem uma informação armazenada em um diretório Gerencia cópias dos blocos em cache e seus estados Em caso de miss, encontra entrada no diretório, analiza o mesmo e comunica somente com os nós que possuem cópia se necessário Em redes escaláveis , comunicação com diretório e cópias é feita através da rede. Várias alternativas para organizar informação no diretório.

58 Operação Básica de Diretório
• k processadores. • Cada bloco de cache na memória: k presence-bits, 1 dirty-bit • Cada bloco de cache em cache: valid bit, e 1 dirty (owner) bit • Leitura da memória pelo processador i: • Se dirty-bit está OFF então { leitura da memória; atualiza p[i] para ON; } • Se dirty-bit está ON então { acessa linha de cache do processador dirty (estado de cache para shared); atualiza memória; faz dirty-bit igual a OFF; faz p[i] igual a ON; fornece dado para i;} • Escrita na memória pelo processador i: • Se dirty-bit igual a OFF então { fornece dado para i; envia nvalidations para todas as caches que tem o bloco; faz dirty-bit igual a ON; faz p[i] igual a ON; ... } • ...

59 Operação Básica de Diretório

60 Coerência Só uma pessoa pode falar no microfone por vez
Toda modificação em conta deve ser comunicada entre os funcionários através do alto falante Após modificações cópias devem ser inutilizadas Coerência

61 Coerência: Diretório Acessos às pastas somente através do diretório
Toda modificação em qualquer cópia deve ser comunicada ao diretório Diretório comunica a necessidade de inutilização Diretório envia cópia mais atualizada Coerência: Diretório

62 Protocolo baseado em Diretório
Interconnection Network Directory Local Memory Cache CPU 0 CPU 1 CPU 2 62

63 Protocolo baseado em Diretório
Interconnection Network CPU 0 CPU 1 CPU 2 Bit Vector X U 0 0 0 Directories X 7 Memories Caches 63

64 Interconnection Network
CPU 0 lê X Interconnection Network Read Miss CPU 0 CPU 1 CPU 2 X U 0 0 0 Directories X 7 Memories Caches 64

65 Interconnection Network
CPU 0 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 0 0 Directories X 7 Memories Caches 65

66 Interconnection Network
CPU 0 lê X Interconnection Network 7 X CPU 0 CPU 1 CPU 2 X S 1 0 0 Directories 7 X Memories Caches 66

67 Interconnection Network
CPU 2 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 0 0 Directories Read Miss 7 X Memories Caches 7 X 67

68 Interconnection Network
CPU 2 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 0 1 Directories 7 X Memories Caches 7 X 68

69 Interconnection Network
CPU 2 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 0 1 Directories 7 X Memories 7 X Caches 7 X 69

70 Interconnection Network
CPU 0 escreve 6 em X Interconnection Network CPU 0 Write Miss CPU 1 CPU 2 X S 1 0 1 Directories 7 X Memories Caches 7 X 7 X 70

71 Interconnection Network
CPU 0 escreve 6 em X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 0 1 Directories Invalidate 7 X Memories Caches 7 X 7 X 71

72 Interconnection Network
CPU 0 escreve 6 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 7 X Memories Caches X 6 72

73 Interconnection Network
CPU 1 lê X Interconnection Network CPU 0 CPU 1 Read Miss CPU 2 X E 1 0 0 Directories 7 X Memories Caches 6 X 73

74 Interconnection Network
CPU 1 lê X Interconnection Network CPU 0 Switch to Shared CPU 1 CPU 2 X E 1 0 0 Directories 7 X Memories Caches 6 X 74

75 Interconnection Network
CPU 1 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 6 X Memories Caches 6 X 75

76 Interconnection Network
CPU 1 lê X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 1 0 Directories 6 X Memories Caches 6 X 6 X 76

77 Interconnection Network
CPU 2 escreve 5 em X Interconnection Network CPU 0 CPU 1 CPU 2 X S 1 1 0 Directories 6 X Memories Write Miss Caches 6 X 6 X 77

78 Interconnection Network
CPU 2 escreve 5 em X Interconnection Network CPU 0 Invalidate CPU 1 CPU 2 X S 1 1 0 Directories 6 X Memories Caches 6 X 6 X 78

79 CPU 2 escreve 5 em X (Write back)
Interconnection Network CPU 0 CPU 1 CPU 2 X E 0 0 1 Directories 6 X Memories X 5 Caches 79

80 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network Write Miss CPU 0 CPU 1 CPU 2 X E 0 0 1 Directories 6 X Memories 5 X Caches 80

81 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 6 X Memories Take Away 5 X Caches 81

82 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 5 X Memories 5 X Caches 82

83 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 5 X Memories Caches 83

84 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 5 X Memories Caches 5 X 84

85 Interconnection Network
CPU 0 escreve 4 em X Interconnection Network CPU 0 CPU 1 CPU 2 X E 1 0 0 Directories 5 X Memories Caches X 4 85

86 Exemplo T1 Oito cores: cada um suporta até 4 threads.
Cada core consiste num pipeline de 6 estágios Tl usa fine-grained multithreading, Os cores acessam 4 caches de 2 níveis Existe coerência entre caches L1 e um diretório com cada cache L2 LI data cache é write through,

87 Exemplo T1

88 Exemplo T1

89 Comparação T1 e Superescalares

90 Comparação T1 e Superescalares

91 Comparação T1 e Superescalares

92 Comparação T1 e Superescalares


Carregar ppt "Multiprocessadores e Paralelismo nível de Thread"

Apresentações semelhantes


Anúncios Google