Prévia do material em texto
Funcionamento da Cache Leitura de um dado • A CPU coloca no AD (Address Bar) o endereço do dado solicitado a MM; • O chipset (a controladora da memória) intercepta o endereço solicitado e verifica se o dado está ou não presente na cache; – Se estiver, acerto (hit) => uma cópia do dado é transferida da cache para a CPU via DB (Data Bar); – Senão estiver, falta (miss) => o chipset solicita o dado a MM, que é transferido para a cache, e somente em seguida a cópia do dado é transferida para a CPU; • Tempo de acesso é bem maior. 9 Memória Cache ch ip se t ch ip se t Funcionamento da Cache 10 Memória Cache Fluxograma: Acesso a Memória envolvendo Cache Funcionamento da Cache 11 Memória Cache Organização típica da Mem. Cache Organização da Cache Memory • A MM (Primary Memory) é formada por: – N células de um byte cada (em geral); – Que são agrupadas em palavras; – Que por sua vez são agrupadas em blocos de K palavras. • A CM (Cache Memory) é formada por: – m blocos, chamados de linhas; – 1 linha CM = 1 bloco da MM + tag + dados de controle. – Tamanho Cache << Tamanho MM 12 Memória de 64 MB 1 Palavra de 4 bytes 1 Célula de Memória 0 N-1 1 Bloco de 2 palavras Endr 0007H Endr 0006H Endr 0000H Endr 0001H Endr 0002H Endr 0003H Endr 0004H Endr 0005H ... Endr FFFFH Funções de Mapeamento • Como existem menos linhas na Cache do que na MM, é necessário haver um algoritmo para mapear as linhas da Cache com os blocos da MM. • Esse algoritmo diz para cada bloco da MM qual a linha da Cache ele irá ocupar. • Logo, a escolha do algoritmo de mapeamento diz como a CM (Cache Memory) será organizada. • Existem, basicamente, 3 técnicas de mapeamento: – Mapeamento Direto – Mapeamento Associativo – Mapeamento Associativo em Conjunto 13 Formato da Linha de Cache • Para saber qual bloco da MM a linha da Cache está guardando, uma tag (ou núm. do bloco da MM) contendo o núm do bloco da MM tb é guardado na Linha da Cache. • Para saber se a Linha de Cache está ocupada ou contém lixo, é usado um bit de validade (1 válido, 0 lixo). • Como os dados alterados na cache NÃO precisam ser imediatamente escritos na MM, a Linha de Cache tb mantém um bit sujo, para indicar que os dados ali contido precisam ser atualizados na MM antes do Bloco ser substituído. • Linha de Cache = [bit de validade] [bit sujo] [tag] [dado] 14 Questões de Projeto da Cache Memory • Qual será – A função de mapeamento de dados PM/Cache ? – O algoritmo de substituição de dados na cache ? – A politica de escrita de dados na cache ? – O tamanho da cache ? – O tamanho da largura de linhas da cache ? • Isto é, quantas palavras cabem em 1 linha da cache. • Quantos níveis de cache serão usados ? 15 Mapeamento Direto • Forma mais simples de mapeamento; • A posição do bloco da MM na CM depende do endereço da palavra; • Cada palavra está associada a uma única posição na Cache; • Este mapeamento é dado através da função NumLinhaCache := NumBlocoMM módulo TotalLinhasCache • P.ex. NumTotalLinhas = 4 Bloco 0 => Linha 0 Bloco 1 => Linha 1 ... Bloco 8 => Linha 0 Bloco 9 => Linha 1 Bloco 10 => Linha 2 Bloco 11 => Linha 3 ... • Formato Endr: [tag] [linha] [palavra] 16 Funções de Mapeamento