ELTRÓNICA DE COMPUTADORES Aulas nº14 e15 Memórias tampão (s) 12.1 Sumário Princípio da localidade espacial e temporal Organização das caches s de dados: políticas de escrita e estratégias de alocação Interligação CPU//Memória_principal Parâmetros fundamentais para o desempenho das caches 12.2 Page 1
Princípio da localidade Princípio da localidade Num dado instante, um programa acede a uma pequena parcela do espaço de endereçamento Há dois tipos de localidade explorados para que items a aceder estejam no nível da memória mais próximo do processador Dois tipos de localidade: Localidade temporal: Se um item é referenciado, existe forte probabilidade que seja referenciado num futuro próximo (e.g., ciclos de programa, reutilização de dados) Localidade espacial: Se o item num determinado endereço é referenciado, existe forte probabilidade que sejam referenciados items em endereços próximos e num futuro próximo (e.g., código sequencial, acessos a arrays) 12.3 Hierarquia de memória Acerto (Hit): item presente num bloco no nível superior (exemplo: Block S) Taxa de acerto (HR- Hit Rate): fracção de acessos com acerto Tempo de acerto (HT- Hit time): tempo de acesso com acerto Tempo para determinar se há acerto + tempo de acesso à RAM Falta: item presente apenas num bloco do nível inferior (exemple: Block I) Taxa de faltas (MR- Miss Rate) MR= 1 - HR Penalização por falta (MP- Miss penalty) tempo para substituir bloco em nível superior + tempo para enviar bloco para o processador HT << MP Para processador Nível superior memória Nível inferior memória do processador Bloco S Bloco I 12.4 Page 2
F de mapeamento directo de mapeamento directo (Direct Mapped) 0 1 2 3 4 5 6 7 8 9 A B C D E Memória A 3 A 2 A 1 A 0 Índice Memória 0 1 2 3 Índice Questões 1) Qual o algoritmo para ir actualizando uma posição da cache? 2) Como é que se identifica qual a palavra de memória presente numa posição da cache? 12.5 Organização da cache de mapeamento directo 1) A actualização da cache é feita com base no princípio da localidade temporal e espacial Localidade temporal (matem-se os endereços referenciados mais recentemente) se uma posição de memória é referenciada, o valor é transferido para a cache Localidade espacial (bloco) se uma posição de memória é referenciada, os valores em endereços adjacentes são também transferidos para a cache Quando há uma falta, a unidade de memória transferida é o bloco 2) A palavra de memória presente numa posição da cache é identificada com informação adicional Associado a cada bloco da cache há uma etiqueta (tag) bits de endereçamento não usados para aceder à cache 12.6 Page 3
Dimensionamento do bloco da cache Penalização falta Taxa faltas Explora-se localidade espacial Poucos blocos: compromete-se localidade temporal Dimensão do bloco Dimensão do bloco Tempo Acesso_mem Dimensão do bloco 12.7 com 4kB de MD 31 Memória endereçável ao byte Blocos de 64 bytes 12 Etiqueta (e.g 0x001FD) 11 6 Índice (e.g 0x03) 5 0 Palavra/Bloco (e.g 0x3F) Bit de validade Etiqueta Dados/Instruções 0x001FD Byte 63 Byte 127 Byte 191 Byte 255 Byte 0 Byte 64 Byte 128 Byte 192 0 1 2 3 Byte 4095 : Byte 4032 63 12.8 Page 4
associativa de 2 vias com 4kB associativa de 2 vias Cada índice selecciona um conjunto de 2 vias Cada via é formada por uma cache de mapeamento directo As 2 etiquetas no conjunto são comparadas em paralelo Validade Etiqueta Dados Block 1 : : : Índice Dados Block 0 : Etiqueta : Validade : End == Sel1 1 Mux 0 Sel0 == Bloco Acerto 12.9 s associativas Uma cache associativa de N-vias tem como principais desvantagens em relação à cache de MD: N comparadores vs. 1 MUX extra de N entradas que provoca atraso adicional e representa também um custo adicional Dados só estão acessíveis depois de se saber se houve acerto Numa cache de MD tem-se os dados antes de saber se há acerto Considera-se que há acerto ignorando-se depois os dados no caso de ter ocorrido uma falta 12.10 Page 5
s associativas Vantagem das caches associativas em relação às de MD Têm em geral uma taxa de acerto maior Quando o número de vias numa cache associativa é igual ao número de blocos da cache Só há 1 conjunto e a cache diz-se completamente associativa 12.11 Bloco a ser substituído quando há falta No MD não há dúvidas Um bloco só pode ser colocada num sítio fixo Com vias de associatividade ou completamente associativa: Aleatório LRU (Least Recently Used) Pseudo-LRU garante-se que não se substitui o que foi acedido à menos tempo Bit adicional por bloco: colocado a 0 quando se acede a uma posição do bloco passando o do bloco seguinte a 1 O bloco seguinte é identificado como um potencial candidato a ser substituído 12.12 Page 6
Políticas de escrita Write Through os dados são escritos na cache e na memória principal A escrita é de apenas uma palavra e não do bloco Write Back os dados são escritos apenas na cache Os blocos modificados só são escritos na memória principal quando são substituídos Para melhorar o desempenho usa-se um bit adicional por bloco que indica se o bloco foi escrito dirty bit Vantagens relativas Write Through: memória principal sempre actualizada Write Back: não se repetem escritas para a mesma posição da memória principal Write through baseia-se na ecrita em tampões para não ter que esperar pela memória principal 12.13 Tampão de escrita no WT Processador DRAM Tampão de escrita Tampão de escrita O processador escreve dados em paralelo na cache e no tampão O controlador de memória escreve o conteúdo do tampão na memória O tampão de ecrita é do tipo FIFO: Números típicos de entrada: 4, 8 Funciona bem sse: frequência escrita << 1/ciclo_de_escrita_DRAM Caso contrário: tampão de escrita satura 12.14 Page 7
Saturação do tampão de escrita Soluções quando o tampão de escrita satura: Aumentar tampão de escrita traz outros problemas Diminuir o tempo de escrita na memória Por exemplo introduzindo Uma cache de 2º nível (L2) L2 do tipo Write Back Processador L1 L2 DRAM Tampão de escrita 12.15 Estratégias de alocação Write Allocate No caso de o bloco onde se pretende escrever não estar na cache gera-se uma falta para leitura Transfere-se o bloco para a cache e depois escreve-se a palavra Write Not-Allocate No caso de o bloco onde se pretende escrever não estar na cache escreve-se apenas na memória principal Não se transfere o bloco para a cache Apesar de se poder utilizar a estratégia de alocação independentemente da política de escrita o que faz sentido são as cobinações: Write through write not allocate Write back write allocate 12.16 Page 8
Interface CPU//Memória Leitura com sucesso Endereço CPU Etiquetas Controlador Mem. dados Memória principal Dados Barramento de memória 12.17 Interface CPU//Memória Leitura com falta Endereço CPU Etiquetas Controlador Mem. dados Memória principal Dados Barramento de memória 12.18 Page 9
Interface CPU//Memória Escrita num bloco não presente em cache Write through write not-allocate Endereço CPU Etiquetas Controlador Mem. dados Memória principal Dados Barramento de memória 12.19 Desempenho das caches Inst Mem Tempo CPU = N º Inst CPI nãomem + Ciclos AcMem Tempociclo Inst Ciclos AcMem = Ciclossucesso + Taxa faltas Ciclos penalização _ falta Tempo AcMem = Temposucesso + Taxa faltas Tempo penalização _ falta O desempenho das caches é máximo quando o tempo de acesso à memória é mínimo: Depende do tempo de sucesso, da taxa de faltas e do tempo de penalização por faltas Um dos primeiros problemas que se colocam é qual é a dimensão óptima dos blocos Para minimizar a taxa de faltas E qual a implicação no tempo de penalização por falta? 12.20 Page 10
Como melhorar desempenho das caches? Tempo AcMem = Temposucesso + Taxa faltas Tempo penalização _ falta 1. Reduzindo o tempo de penalização por falta 2. Reduzindo a taxa de faltas 3. Reduzindo o tempo de acesso com sucesso 12.21 Conclusões As caches são memórias estáticas que diminuem o tempo médio de acesso do processador à memória Exploram princípios de localidade temporal e espacial Dimensão dos blocos da cache definem compromisso entre as duas localidades Organização das caches Mapeamento directo e associatividas Aumentar associatividade para diminuir faltas (conflito) Políticas de escrita e estratégia de alocação: Wite-through e write-back, write-not-allocate e write-allocate. 12.22 Page 11