ARQUITETURA DE COMPUTADORES II
Coerência de Cache em
Multiprocessadores
Prof. César Augusto M. Marcon
2 / 22
Índice
1. Coerência de Cache
2. Estratégias de Coerência de cache
3. Exercícios
3 / 22
Coerência de Cache (Cache Coherence)
• Diversas Arquiteturas de máquinas paralelas atuais
construídas com processadores produzidos em larga escala
• Objetivo
são
– Reduzir os custos de projeto
• Fato
– máquinas paralelas com múltiplos processadores incorporam caches em
suas arquiteturas
• Problema
– Presença de caches privadas em multiprocessadores necessariamente
introduz problemas de coerência de cache
• Descrição do problema
– Múltiplas cópias de mesma posição de memória podem existir em diferentes
caches
– Cada processador atualiza sua cópia local, não se preocupando com a
existência de outras cópias em outros processadores
– Cópias de mesmo endereço de memória poderão possuir valores diferentes
 Caracteriza uma situação de inconsistência de dados
4 / 22
Coerência de Cache
•
Alternativa para eliminar o problema
– Não permitir que dados compartilhados para operações de escrita sejam colocados
nas caches do sistema
– Somente instruções e dados privados são cacheable
– Dados compartilhados são considerados noncacheable
•
Operacionalização
– Compilador é responsável por colocar etiqueta (tag) nos dados
– Mecanismos de cópia de dados entre níveis de memória sabem quais dados devem
ser repassados diretamente (sem passar pelas caches ) ao processador
•
Coerência de cache em multicomputadores
– Esse problema não ocorre  Cada nó possui hierarquia de memória inteira  Não
existe espaço de endereçamento global compartilhado por todos
•
Definição de coerência de cache
– Uma arquitetura multiprocessada com caches privadas é coerente se e somente se
uma leitura de uma posição x de memória efetuada por qualquer processador i
retorne o valor mais recente desse endereço
– Toda vez que uma escrita for efetuada por um processador i em um endereço de
memória x, tem que ser garantido que todas as leituras subseqüentes de x,
independentemente do processador, forneçam o novo conteúdo de x
5 / 22
O Problema da Inconsistência de Dados
• Necessidade de consistência de dados
– É imprescindível que a implementação monoprocessada e a
multiprocessada gerem o mesmo resultado para um programa
• Problema
– Quando dois processadores compartilham mesma memória através
de caches diferentes, existe risco de uma posição de memória não
possuir valor mais recente
• Causas mais comuns desse tipo de inconsistência de
dados
– Inconsistência no compartilhamento de dados
– Inconsistência na migração de processos
– Inconsistência de E/S
6 / 22
Índice
1. Coerência de Cache
1.1. Inconsistência no Compartilhamento de Dados
1.2. Inconsistência na Migração de Processos
1.3. Inconsistência de E/S
2. Estratégias de Coerência de Cache
3. Exercícios
7 / 22
Inconsistência no Compartilhamento de Dados
• Descrição do problema
– P1, P2 e P3 são processadores que possuem caches privadas
– Estes estão interconectados, através de barramento, a uma
memória principal compartilhada
1. P1 tenta ler u de sua cache
2. Como u não está presente, dado é lido da memória principal e
copiado para sua cache
3. P3 faz o mesmo, gerando também cópia de u em sua cache
4. P3 efetua escrita em u e altera conteúdo da posição de 5 para 7
5. Quando P1 efetuar uma leitura de u novamente, ele receberá o
conteúdo da posição u que se encontra em sua cache  5, e não o
valor mais recente de u, que é 7
8 / 22
Inconsistência no Compartilhamento de Dados
9 / 22
Inconsistência no Compartilhamento de Dados
e Política de Atualização de Cache
• Esse problema ocorre independentemente
atualização da memória principal
• write-through (escrever através)
da
política
de
– A cada escrita na cache, a posição da memória principal é atualizada
também
– A alteração de P3 teria sido repassada também à memória principal
– Não impediria P1 de ler o valor menos recente de u de sua cache
• write-back (escrever de volta)
– A alteração de P3 teria apenas marcado como sujo o bloco de u na cache
(através de seu dirty-bit)
– A memória principal não seria atualizada imediatamente
– Somente em uma eventual substituição desse bloco na cache é que a
memória principal seria atualizada
– Se P2 efetuasse uma leitura em u nesse meio-tempo, copiaria para sua
cache o valor menos recente de u (valor 5)
10 / 22
Índice
1. Coerência de Cache
1.1. Inconsistência no Compartilhamento de Dados
1.2. Inconsistência na Migração de Processos
1.3. Inconsistência de E/S
2. Estratégias de Coerência de Cache
3. Exercícios
11 / 22
Inconsistência na Migração de Processos
• Descrição do problema
– Novo processo é escalonado devido a operação de E/S
– Não existe garantia que este vá retornar sua execução no mesmo
processador de uma máquina multiprocessada
– Escalonador associará processo a processador livre, segundo sua
política de escalonamento, quando a operação de E/S estiver
concluída
– Muitas vezes, o processo volta a executar em outro processador
perdendo as informações de sua antiga cache
• Pergunta
– Se fosse garantido executar processo no mesmo processador, este
problema seria resolvido. Porquê?
12 / 22
Índice
1. Coerência de Cache
1.1. Inconsistência no Compartilhamento de Dados
1.2. Inconsistência na Migração de Processos
1.3. Inconsistência de E/S
2. Estratégias de Coerência de Cache
3. Exercícios
13 / 22
Inconsistência de Cache devido à Operação de E/S
• Introdução ao problema
– Problemas de inconsistência de dados também podem ocorrer durante
operações de E/S (outros componentes que não os processadores) com
DMA à memória principal
– Estas operações não se preocupam se os dados estão sendo
compartilhados por vários processadores, com cópias em diferentes caches
• Descrição
– Supondo atualização de valor x escrito na memória principal por writethrough
• Quando controladora de E/S carregar dado x' na memória principal, ocorre
inconsistência de dados entre x' e as cópias nas caches dos processadores que
possuem antigo valor x
– Supondo atualização de valor x com política de write-back
• Quando valor x' é lido da memória principal em operação de E/S, pode ocorrer
inconsistência se valor atual das cópias de memória nas caches ainda não tenha
sido substituído e, portanto, ainda não tenha sido copiado para a memória
principal
14 / 22
Índice
1. Coerência de Cache
2. Estratégias de Coerência de Cache
3. Exercícios
15 / 22
Estratégias de Coerência de Cache
• Problema da coerência de cache resume-se
– Existir simultaneamente múltiplas cópias de um dado, o qual pode ser
alterado sem que se faça algo em relação às outras cópias
• Estratégias básicas para tratar coerência de cache
– Escrita na cache resulta atualização de outras cópias desse dado nas
demais caches (write-update)
– Escrita na cache resulta invalidação de outras cópias desse dado nas
demais caches (write-invalidate)
• Vantagens e Desvantagens
– Invalidação tem custo menor, mas maior latência de acesso caso as cópias
invalidadas sejam novamente acessadas  Necessita buscar da memória
principal
– Atualização tem custo mais alto, especialmente em máquinas com muitos
processadores (muitas cópias potenciais de mesmo endereço), mas menor
latência  Novo acesso a cópias é resolvido em nível de cache
16 / 22
Estratégias de Coerência de Cache
• Questão
– Qual das estratégias resulta melhor desempenho para sistema como um
todo?
• Resposta
– Está diretamente ligado ao compartilhamento da carga de trabalho. Ou seja,
o compartilhamento dos programas que executam na máquina
• Se processadores que estavam usando as cópias antes de serem
atualizadas fizerem novos acessos a esses dados, vale a pena o custo das
atualizações
• Se processadores não utilizarem esses dados novamente, o tráfego gerado
pelas atualizações penalizou o sistema. Neste caso, a invalidação eliminaria
as cópias antigas e acabaria com uma situação de compartilhamento
aparente
17 / 22
Estratégias de Coerência de Cache
•
Pack rat: Fenômeno que onera a estratégia de atualizações
– Conseqüência da migração de processos executada pelo SO
– Quando processo perde processador por causa de uma operação de E/S, ele pode
voltar a executar em outro processador
– Não poder mais acessar dados de sua antiga cache
– Tem que buscá-los novamente da memória principal
– Os dados antigos continuam sendo atualizados em vão até que sejam eliminados da
cache antiga por alguma política de substituição de blocos
– (write-update ou write-invalidate)
•
•
É muito fácil construir casos nos quais uma determinada estratégia (writeupdate ou write-invalidate) vai desempenhar melhor que outra
Alternativa
– Implementação destas em hardware e que o sistema permita a troca entre
atualização e invalidação dinamicamente em tempo de execução
•
Momento da troca pode ser
– Determinado pelo programador através de uma chamada de sistema
– Seguir uma certa probabilidade alterável na configuração do sistema
– Depender do padrão de acesso observado em tempo de execução
18 / 22
Índice
1. Coerência de Cache
2. Estratégias de Coerência de Cache
3. Exercícios
19 / 22
Exercícios
1. O que vem a ser o problema de integridade de dados na cache?
2. Comente a solução do problema de integridade de criar informações cacheable e
noncacheable. Quais vantagens e desvantagens desta solução?
3. Como funciona a solução acima? Quem controla? Como?
4. Discuta a afirmação: “As instruções sempre podem ser colocadas nas caches
privadas pois são exclusivas do processo e não podem ser compartilhadas pelos
demais processos”
5. Esta afirmação acima continua sendo verdadeira, mesmo se utilizar ponteiros de
função, que permitem que o código mude dinamicamente?
6. Analise a definição de coerência de cache descrita nesta apresentação
7. Cite duas causas possíveis de inconsistência de dados
8. Faça uma figura ilustrativa que descreva a inconsistência no compartilhamento
de dados por processos executando em processadores distintos
9. Descreva porque a inconsistência de compartilhamento de dados ocorre
independente da política de atualização. Descreva como ocorre para cada
política
20 / 22
Exercícios
10. Descreva a inconsistência de cache devido a migração de processos
11. Discuta a afirmação: “A inconsistência de cache devido a migração de processos
não aconteceria ser fosse sempre alocado o mesmo processador para o mesmo
processo”
12. Descreva a inconsistência de cache devido a operações de E/S
13. Descreva as duas estratégias para solução do problema de integridade de
dados na cache
14. Cite vantagens e desvantagens das técnicas write-update e write-invalidate
15. Descreva o fenômeno de pack rate
16. Porque utilizar uma estratégia de manter os dados na cache quando um
programa sai para operações de E/S, se este pode voltar a ser executado em
outro processador?
17. Descreva porque a inconsistência de compartilhamento de dados ocorre
18. O que você entende por implementar as estratégias de manter os dados em
HW? Porque não em SW?
21 / 22
Exercícios
19. Discuta os momentos de trocar a estratégia:
–
–
–
Determinado pelo programador através de uma chamada de sistema
Seguir uma certa probabilidade alterável na configuração do sistema
Depender do padrão de acesso observado em tempo de execução
20. Coerência de dados em um sistema com múltiplas memórias caches contendo
cópias de dados que estão armazenados em uma memória principal, significa a
leitura do último valor escrito no determinado dado. Existem dois métodos
básicos para se manter a coerência: protocolos snoopy e diretórios. Explique
cada um, diferenciando-os. Comente: (a) quando um ou outro deve ser utilizado,
(b) desenhe um esboço da arquitetura de ambos os métodos
21. (POSCOMP 2002 - 58) Qual o significado de coerência de memórias cache em
sistemas multiprocessados?
a) Caches em processadores diferentes sempre contêm o mesmo dado válido para a
mesma linha de cache.
b) Caches em processadores diferentes nunca compartilham a mesma linha de cache.
c) Caches em processadores diferentes nunca interagem entre si.
d) Caches em processadores diferentes sempre lêem os mesmos dados ao mesmo
tempo.
e) Caches em processadores diferentes podem possuir dados diferentes associados à
mesma linha de cache.
22 / 22
Resposta de Exercícios
19. Discuta os momentos de trocar a estratégia:
–
–
–
Determinado pelo programador através de uma chamada de sistema
Seguir uma certa probabilidade alterável na configuração do sistema
Depender do padrão de acesso observado em tempo de execução
20. Coerência de dados em um sistema com múltiplas memórias caches contendo
cópias de dados que estão armazenados em uma memória principal, significa a
leitura do último valor escrito no determinado dado. Existem dois métodos
básicos para se manter a coerência: protocolos snoopy e diretórios. Explique
cada um, diferenciando-os. Comente: (a) quando um ou outro deve ser utilizado,
(b) desenhe um esboço da arquitetura de ambos os métodos
21. (POSCOMP 2002 - 58) Qual o significado de coerência de memórias cache em
sistemas multiprocessados?
a) Caches em processadores diferentes sempre contêm o mesmo dado válido para a
mesma linha de cache.
b) Caches em processadores diferentes nunca compartilham a mesma linha de cache.
c) Caches em processadores diferentes nunca interagem entre si.
d) Caches em processadores diferentes sempre lêem os mesmos dados ao mesmo
tempo.
e) Caches em processadores diferentes podem possuir dados diferentes associados à
mesma linha de cache.
Download

Coerencia de Cache em Multiprocessadores