Memória Cache Adriano J Holanda 12 e 16/5/2017
Memória: princípios físicos Revisão: Hierarquia de memória; Memória RAM: estática, dinâmica; Memória ROM: PROM, EPROM, EEPROM; Memória flash
Memória: fundamentos lógicos O layout de memória visa equilibrar a relação entre a hierarquia de memória, acesso e consistência dos dados e performance Juntamente com o layout são projetados algoritmos de substituição de blocos de memória para conseguir melhorias na performance Estes algoritmos normalmente levam em conta a frequência de acesso dos dados para a definição de políticas de substituição dos blocos de memória Princípio da localidade: Temporal Espacial
Cache única cache e memória principal processador cache memória principal (RAM) rápida lenta palavra bloco
Cache em três níveis cache e memória principal processador mais rápida cache de nível 1 (L1) rápida cache de nível 2 (L2) menos rápida cache de nível 3 (L3) lenta memória principal (RAM)
Requisição de dados pelo processador processador cache barramento memória principal
Mapeamento direto cache 000 001 010 011 100 101 110 111 00001 00101 01001 01101 10001 10101 11001 11101 memória
Exemplo Processador requisita o endereço 10110 índice válido? etiqueta 4 dados 000 F 001 F 010 F 011 F 100 F 101 F 110 F 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 F 001 F 010 F 011 F 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço 11010 índice válido? etiqueta 4 dados 000 F 001 F 010 F 011 F 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 F 001 F 010 V 11 Memory(11010) 011 F 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço 11000 índice válido? etiqueta 4 dados 000 V 001 F 010 V 11 Memory(11010) 011 F 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço 00011 índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço 10010 índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço 10010 índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 11 Memory(11010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 10 Memory(10010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Exemplo Processador requisita o endereço índice válido? etiqueta 4 dados 000 V 11 Memory(11000) 001 F 010 V 10 Memory(10010) 011 V 00 Memory(00011) 100 F 101 F 110 V 10 Memory(10110) 111 F 4 tradução livre de tag
Busca na memória cache cache hit presença do dado requisitado na cache cache miss ausência do dado requisitado na cache Estratégia utilizada da ausência do dado na cache: 1 Enviar o valor original do contador (atual PC 4) para a memória 2 Instruir a memória principal a realizar esta leitura e esperar pelo término do acesso 3 Escrever a entrada na cache, colocando o dado da memória na porção da entrada, escrevendo os bits mais significativos do endereço (da ULA) no campo de marcação (tag), e ligando (V) o bit de válido 4 Reiniciar a instrução de execução do primeiro passo, que irá recuperar o dado que agora está na cache
Estratégias mais flexíveis Mapeamento direto Mapeamento em conjunto o bloco pode ser colocado em um conjunto de locais na memória cache Sem mapeamento o bloco pode ser colocado em qualquer local na memória cache Bloco 0 1 2 3 4 5 6 7 Dado Tag 0 Busca
Estratégias mais flexíveis Objetivo: reduzir a ausência de dados na memória cache Mapeamento direto Mapeamento em conjunto o bloco pode ser colocado em um conjunto de locais na memória cache Sem mapeamento o bloco pode ser colocado em qualquer local na memória cache
Estratégias mais flexíveis Objetivo: reduzir a ausência de dados na memória cache Mapeamento direto Mapeamento em conjunto o bloco pode ser colocado em um conjunto de locais na memória cache Sem mapeamento o bloco pode ser colocado em qualquer local na memória cache Bloco 0 1 2 3 4 5 6 7 Dado Tag 0 Busca
Estratégias mais flexíveis Objetivo: reduzir a ausência de dados na memória cache Mapeamento direto Mapeamento em conjunto o bloco pode ser colocado em um conjunto de locais na memória cache Sem mapeamento o bloco pode ser colocado em qualquer local na memória cache Bloco 0 1 2 3 4 5 6 7 Dado Tag 0 Busca
Gravação em memória cache write-through write buffer write-back
Gravação em memória cache write-through sempre escrever o dado na memória principal e cache write buffer write-back processador cache barramento memória principal
Gravação em memória cache write-through write buffer fila para armazenar o dado enquanto o dado está esperando para ser escrito na memória write-back processador cache bus buffer memória principal
Gravação em memória cache write-through write buffer write-back sempre escreve o dado no bloco, se o dado for modificado, este é gravado na memória em um nível mais baixo da hierarquia Este esquema pode melhorar a performance, porém, é mais complexo de ser implementado
Estudo de caso processador MIPS32 M4K 5 MDU unidade de multiplicação/divisão MMU unidade de gerenciamento de memória SRAM memória de acesso aleatório estática 5 Reproduzido com permissão da MIPS Technologies