Arquiteturas de Computadoressimone/arqcomp/contaulas/aula20.pdf · 2019-11-19 · Arquiteturas de...

Preview:

Citation preview

Arquiteturas de Computadores

Fontes dos slides: Livro Patterson e Hennessy, Quantitative Approach e nas notas de aula do Prof. Yonghong Yan do curso CSCE 513 Computer Architecture

Paralelismo no nível de threads

Protocolos para coerência de cache

Protocolos snooping Envia todas as solicitações de dados para todos os processadores e o

endereço Todos os processadores verificam o barramento para ver se eles têm uma

cópia e respondem caso eles tenham Requer broadcast, pois as informações da cache estão nos processadores Funciona bem com barramento compartilhado É muito utilizado em máquinas de memória compartilhada centralizada

Protocolos baseados em diretório Acompanha o que está sendo compartilhado em local centralizado Memória distribuída => diretório distribuído para escalabilidade (evita

gargalos) Envia solicitações ponto a ponto aos processadores via rede Escalabilidade melhor que Snooping Comumente usado para máquinas de memória compartilhada distribuída

Multiprocessadores com diretório distribuído

Diretório em sistemas de memória compartilhada distribuída

Sistemas típicos de memória compartilhada distribuída Acesso à memória local ou remota via controlador de

memória Existe uma entrada no diretório por bloco que

rastreia o estado de cada bloco em cada cache Quais caches têm uma cópia do bloco, sujo x limpo, ...

Como impedir que o diretório seja um gargalo? As entradas do diretório são localizadas junto com a

memória que elas referenciam, cada uma das entradas indica quais processadores têm cópias de seus blocos

Diretório em sistemas de memória compartilhada distribuída Semelhante ao Protocolo Snooping com três estados de cada bloco no

diretório: Compartilhado: mais de 1 processador possui dados do bloco na cache,

memória está atualizada Não está na cache: nenhum processador possui o bloco na cache; não é

válido em nenhuma cache Exclusivo: 1 processador (proprietário) possui dados do bloco na cache;

memória desatualizada Além do estado da cache, é necessário rastrear quais processadores

possuem dados do bloco na cache quando o bloco está no estado compartilhado (geralmente vetor de bits, onde bit igual a 1 se oprocessador tem cópia) A propriedade também é rastreada

Premissas: Se vai escrever em dados não exclusivos => considera falta de escrita Processador bloqueia até o acesso ser concluído As mensagens são recebidas e respondidas na ordem enviada

Protocolo de diretório

Não há barramento compartilhado e não se deseja realizar broadcast: a interconexão não é mais um único ponto de arbitragem todas as mensagens têm respostas explícitas

Tipicamente 3 processadores envolvidos Nó local onde uma solicitação se origina Nó original onde reside a memória associada ao endereço Nó remoto que possui uma cópia do bloco na cache, seja

exclusivo ou compartilhado Executa duas operações

Escreve no bloco compartilhado Trata falta de leitura / falta de escrita

Máquina de estado para um bloco individual da cache em um protocolo baseado em diretório

Estados idênticos ao caso do protocolo snooping; transações muito semelhantes

Transições causadas por faltas de leitura, faltas de escrita, invalidações, solicitações de busca de dados

Gera mensagens de falta de leitura / falta de escrita para diretório do nó que possui a memória

Faltas de escrita que eram transmitidas no barramento no protocolo snooping foram substituídas por envio de solicitações explícitas às memórias para invalidação e busca de dados

Exemplo de protocolo de diretório

Uma mensagem enviada para um diretório causa duas ações: Atualização do diretório Geração de mais mensagens para satisfazer a solicitação contida na mensagem

O bloco está no estado não está na cache: a cópia na memória é o valor atual; as possíveis solicitações para esse bloco são: Falta de leitura: o processador solicitante recebe os dados da memória e se torna o

único nó de compartilhamento deste bloco; estado do bloco transiciona para estado compartilhado

Falta de escrita: o processador solicitante recebe o valor e se torna um nó de compartilhamento. O bloco transiciona para o estado exclusivo para indicar que a único cópia válida está armazenada na cache. A identidade do proprietário éarmazenada no conjunto Compartilhadores.

O bloco está no estado compartilhado => o valor da memória está atualizado: Falta de leitura: os dados da memória são enviados ao processador solicitante e

processador solicitante é adicionado ao conjunto Compartilhadores Falta de escrita: os dados são enviados ao processador solicitante. Todos os

processadores do conjunto Compartilhadores recebem mensagens para invalidar o bloco na cache, e o conjunto Compartilhadores armazena a identidade do processador solicitante. O estado do bloco transiciona para o estado exclusivo

Exemplo de protocolo de diretório

O bloco está no estado exclusivo: o valor atual do bloco é mantido na cache do processador identificado no conjunto Compartilhadores como o proprietário; três possíveis solicitações ao diretório: Falta de leitura: o processador proprietário envia uma mensagem de busca de dados,

causando que o estado do bloco na cache do proprietário transicione para estado Compartilhado e faz com que o proprietário envie dados para o diretório, que são gravados na memória e enviados de volta ao processador solicitanteA identidade do processador solicitante é adicionada ao conjunto Compartilhadores, que ainda contém a identidade do processador que era o proprietário (pois este ainda possui uma cópia válida para leitura). Estado do bloco no diretório transiciona para compartilhado

Gravação de dados: o processador proprietário está substituindo o bloco e, portanto, deve escrever de volta, atualizando a cópia da memória, o bloco transiciona para o estado não está na cache, e o conjunto Compartilhadores se torna vazio

Falta de escrita: o bloco tem um novo proprietário. Uma mensagem é enviada ao antigo proprietário fazendo com que a cache envie o valor do bloco para o diretório a partir do qual é enviado o bloco para o processador solicitante, que se torna o novo proprietário. O conjunto Compartilhadores é atualizado para conter somente a identidade do novo proprietário e o estado de bloco transiciona para exclusivo

Máquina de estado de um bloco relacionada às solicitações da CPU

Máquina de estado de um bloco relacionada às solicitações ao diretório

Mensagens do protocolo de diretório

Exemplo: Protocolo baseado em diretório

Assuma estados iniciais das cachessão inválidos e A1 e A2 mapeiampara o mesmo bloco de cache,mas A1 != A2

Exemplo

Exemplo

Exemplo

Exemplo

Exemplo