Multiprocessadores e Paralelismo nível de Thread

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Coerência de Cache em Multiprocessadores
Paralelismo em Máquinas Multiprocessadas
Integridade de Dados em Memórias Cache
Coerência de Cache – Parte 2
Capitulo 6: Entrada e Saída
Introdução à Hierarquia de Memória
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Distribuídos
A Interface entre Processadores e Periféricos
Barramentos Introdução.
Sistemas Operacionais - 3
Aula 16: Memória Principal e Memória Virtual
MULTICORE Aluno: Gabriel Antonio Leite São processadores caracterizados por apresentar vários cores (núcleos de processamento) em um único chip.
ARQUITETURA DE COMPUTADORES II
Multithreading e multiprocessamento
Arquitetura de Sistemas Operacionais
Coerência de Memórias Cache e Modelos de Consistência de Memória
Coerência de Cache MC722 - Projeto de Sistemas Computacionais Prof Rodolfo Jardim de Azevedo André Costa Felipe Sodré Davi Barbosa
Computação de Alto Desempenho
Sistemas Operacionais
Memória Compatilhada Distribuída
Modelos de Computadores Paralelos
Aulas 11 e 12 08/10/10 (Turma 1 e 2) Profa. Sarita
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
Rganização de Computadores A Interface entre o Processador e os Periféricos Capítulo 8 – Patterson & Hennessy (seções 8.4 e 8.5) Organização de Computadores.
Rganização de Computadores Multiprocessadores Capítulo 9 – Patterson & Hennessy Organização de Computadores Multiprocessadores Capítulo 9 – Patterson &
Sistemas Operacionais SISTEMA DE ENTRADA E SAÍDA
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Capítulo 9: Memória Virtual
Arquitectura de Computadores II
Gerenciamento de Transações - Introdução
Fundamentos da Arquitetura de Computadores
SISTEMAS OPERACIONAIS
CUDA vs OpenCL Introdução.
Fundamentos de programação CUDA
Tópicos em redes e sistemas distribuídos B
Sistemas Distribuídos
Carlos Oberdan Rolim Ciência da Computação
Subsistemas de memória
Sistemas Operacionais I
Organização e Arquitetura de Computadores
Aula19: Desempenho de SSM Large-Scale MP Sincronização
ARQUITETURA DE COMPUTADORES DEPT. DE CIÊNCIA DA COMPUTAÇÃO - UFMG Aula 17: Introdução às Arquiteturas Paralelas.
Controle de concorrência
TELP: Aplicações Paralelas em Ambientes de Passagem de Mensagens
Sistemas Operacionais
Paralelismo em Máquinas Multiprocessadas
Sistemas Operacionais
Transações Concorrentes
Bruno C. Bourbon Jarbas J. de O. Júnior {bcb, cin.ufpe.br
Memorias.
Localidade Princípio da localidade è um programa acessa uma
Ch7b-1 Capítulo Sistemas de Memória - Memória Virtual.
MO MO Revisado 2006 Prof. Paulo Cesar Centoducatte MO401 Arquitetura de Computadores I.
Coerência de Cache Márcia A. Santos – RA Novembro/2005.
Linux em Máquinas Paralelas
Aula – Sistemas Operacionais
Estrutura de Interconexão
Multiprocessadores e Paralelismo nível de Thread
Sistemas de Memória Cache em Multiprocessadores
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Processadores.
Algoritmos Paralelos.
Arquitetura de computadores
Armazenamento, Redes e Outros Periféricos André Luis Meneses Silva
Memória Cache.
Conceituação e Classificação
Integridade de Dados em Memórias Cache ARQUITETURAS DE COMPUTADORES II Prof. César Augusto M. Marcon.
Hierarquia de Memória – Parte 2 Prof. André Luis M. Silva
Transcrição da apresentação:

Multiprocessadores e Paralelismo nível de Thread

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

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

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.

Flynn’s Taxonomy Single Instruction Single Data (SISD) (Uniprocessor) M.J. Flynn, "Very High-Speed Computers", Proc. of the IEEE, V 54, 1900-1909, Dec. 1966. 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

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

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.

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

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 Arquiteturas não Convencionais de Computadores

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 Arquiteturas não Convencionais de Computadores

Centralized vs. Distributed Memory Scale Distributed Memory ... P0 M C IO Interconnection Network P1 Pn Centralized Memory P0 P1 M IO C Pn ... Arquiteturas não Convencionais de Computadores

Exemplos de Multiprocessadores

Exemplos de Multiprocessadores

Multi-core Multiprocessador implementado em um único circuito integrado

Arquiteturas não Convencionais de Computadores 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 Arquiteturas não Convencionais de Computadores

Multi-Core Processor

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.

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% Arquiteturas não Convencionais de Computadores

Resposta usando Lei de Amdahl Arquiteturas não Convencionais de Computadores

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 Arquiteturas não Convencionais de Computadores

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

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.

Multi-processadores de Memória Compartilhada

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

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

Memória Coerente Preservação da Ordem do Programa (escritas): Uma leitura por processador P a um endereço X que segue uma escrita por P em X, com nenhuma escrita de X por qualquer outro processador ocorrendo entre a escrita e a leitura por P, sempre retorna o valor escrito por P P P P 1 2 3 3 u = 7 2 u = 7 $ $ $ 1 u :5 I/O devices u :5 Memory

Memória Coerente Visão Coerente da Memória: Uma leitura por um processador a um endereço X que acontece após uma escrita por outro processador no endereço X retorna o valor escrito se a leitura e escrita forem suficientemente separadas no tempo e nenhuma outra escrita a X ocorre entre os dois acessos. P P 2 P 1 3 3 u = ? =7 2 u =7 $ $ $ 1 u :5 u=7 I/O devices u :5 Memory

Memória Coerente Serialização das Escritas : 2 escritas no mesmo endereço por quaisquer 2 processadores devem ser vistas na mesma ordem por todos os processadores Por exemplo, se os valores 1 e 2 são escritos em um endereço, processadores nunca podem ler o valor como 2 e então ler o valor 1 P P 1 2 P 3 4 u =9 3 u = ? =7 5 u = ? 2 u =7 $ $ $ u=9 1 u :5 u=7 I/O devices u :5 Memory

Consistência de Escrita Uma escrita não termina ( não se poder permitir outra escrita) até que todos os processadores estejam “cientes” dos efeitos daquela escrita. P P 2 P 1 3 u = 7 $ $ $ u :5 u :5 u :5 Mudança do valor de u I/O devices u :5 Memory

Consistência de Escrita O processador não deve mudar a ordem de qualquer escrita com respeito a qualquer outro acesso à memória. Se um processador escreve no endereço A seguido pela escrita no endereço B, qualquer processador que veja o novo valor em B deve também ver o novo valor em A. P P 1 2 P 3 u = 7 $ $ v :8 $ u :5 v :8 u :5 v :8 u :5 Mudança do valor de u I/O devices u :5 Memory

Consistência de Escrita O processador não deve mudar a ordem de qualquer escrita com respeito a qualquer outro acesso à memória. Se um processador escreve no endereço A seguido pela escrita no endereço B, qualquer processador que veja o novo valor em B deve também ver o novo valor em A. P P 2 P 1 3 v :10 $ $ v :8 v :10 $ u :5 v :8 u :5 v :8 u :5 Mudança do valor de v I/O devices u :5 Memory

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

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

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.

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

Protocolos de Coerência de Cache Directory based — O status do compartilhamento de um bloco da memória física é armazenado em um local, diretório 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

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

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

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?

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?

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

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.

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

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.

Recursos da Cache para WB Snooping Tags da cache podem ser usados para snooping Bit de Validade do bloco facilita a invalidação Faltas de Leitura usam snooping Writes  Necessita saber se existem outras cópias do em outras caches Não existem cópias  Não necessita colocar invalidate no barramento Se existem cópias  Necessita colocar invalidate no barramento

Recursos da Cache para WB Snooping Para sinalizar que bloco é compartilhado usa-se bit extra para cada bloco (exclusivo ou compartilhado): Escrita em Bloco Compartilhado  Colocar invalidate no barramento e marcar bloco como exclusivo O processador que escreve será o owner do bloco de cache. Bloco de cache no owner muda do estado shared para exclusive

Exemplo de Protocolo Protocolo de Coerência de Snooping é usualmente implementado por um controlador especial para cada cache O controlador permite operações em blocos distintos Uma operação pode ser iniciada antes que outra tenha sido concluída, mesmo porque é permitido apenas um acesso à cache ou barramento por vez.

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

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.

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

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

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

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)

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

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

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

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

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

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

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

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

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

Network-based Coherence

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.

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: 1 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; ... } • ...

Operação Básica de Diretório

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

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

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 70

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 71

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

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 73

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 74

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 75

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 76

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 77

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 78

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 79

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 80

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 81

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 82

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 83

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 84

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 85

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 86

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 87

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 88

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 89

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 90

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 91

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 92

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,

Exemplo T1

Exemplo T1

Comparação T1 e Superescalares

Comparação T1 e Superescalares

Comparação T1 e Superescalares

Comparação T1 e Superescalares