Microcontroladores e Interfaces º Ano Eng. Electrónica Industrial Carlos A. Silva º Semestre de 5/6 http://www.dei.uminho.pt/lic/mint Assunto: Memória Cache Aula #9 9Maio6-M Memória Cache: Funcionamento A resposta as seguintes quatro questões ajudam-nos a perceber o funcionamento da memória cache: P: Em que local um bloco de dados será colocado? Esta questão ajuda-nos a perceber as estratégias de colocação de blocos de dados e a organização interna da cache. Existem três estratégias: mapeamento directo, memória associativa, set associative. P: Como é que um bloco é localizado caso esteja na cache? Esta questão ajuda-nos a perceber as estratégias de localização dos blocos. TAG / Block. P: Qual bloco deve ser substituído quando há um miss e a cache deve ser enchida? Esta questão ajuda-nos a perceber as estratégias de substituição de blocos. Aleatório, LRU. P4: O que acontece durante a escrita na memória? Esta questão ajuda-nos a perceber as políticas de escrita da cache. Temos duas políticas write through e write back
Organização da Cache: Mapeamento Um bloco só pode ser colocado num único local que é dado por: (Block address) MOD (Number of blocks in cache) Neste caso, a função de mapeamento: (Block address) MOD (8) Cache cache com 8 blocos Memória com blocos cacheable Exemplo: 9 MOD 8 = 5 () MOD () = Memory Organização da Cache: Mapeamento Um bloco só pode ser colocado num único local que é dado por: (Block address) MOD (Number of blocks in cache) Neste caso, a função de mapeamento: (Block address) MOD (8) Cache cache com 8 blocos Memória com blocos cacheable Exemplo: 9 MOD 8 = 5 () MOD () = Memory 4
Organização da Cache: Mapeamento K = 4 Blocos Cada bloco = palavra A cache pode cobrir até bytes = 4 GB de memória Hit field Address (showing bit positions) field Byte offset In de x Valid Função de mapeamento: Número do bloco da cache = (endereço do bloco) MOD (4) Block Address = bits = bits = bits = bits 5 Organização da Cache: Mapeamento Address (showing bit positions) field 4K= 496 blocos Cada bloco = 4 palavras = 6 bytes A cache pode cobrir até bytes = 4 GB de memória Hit 6 5 4 6 Byte offset 6 bits 8 bits V field Word select 4K entries 6 Mux Função de mapeamento: Número do bloco da cache = (Endereço do Bloco) MOD (496) Blocos de maior dimensão tiram mais vantagem da localidade espacial 6 Block Address = 8 bits = 6 bits = bits = 4 bits
Organização da Cache: n-way Set One-way set associative (direct mapped) Block 4 5 6 Two-way set associative Set 7 Four-way set associative Set Eight-way set associative (fully associative) 7 Organização da Cache: n-way Set 8 4
Organização da Cache: n-way Set Associative Cada bloco da cache tem uma tag. As tags de cada bloco da cache que possam conter o dado desejado são procuradas em paralelo. Um bit de validade é adicionado à tag indicando se esta entrada contém um endereço válido. O endereço enviado pelo CPU à cache está dividido em: Um endereço de bloco, que é subdivido em: Campo de índice que permite um conjunto na cache (nas caches fully associative não existe índice). Um campo de tag que permite seleccionar o conjunto desejado. Um offset do bloco que permite seleccionar o dado do bloco. Block Address Block Offset 9 Organização da Cache: n-way Set Endereço físico gerado pelo CPU Block Address Block Offset size = log(block size) size = log(número total de blocos/associatividade) Tamanho da tag = address size - index size - offset size Número de conjuntos Função de mapeamento: Conjunto da cache ou número do bloco = índice = = (Block Address) MOD (número de conjuntos) 5
Organização da Cache: n-way Set Field ( bits) Address 9 8 Block Offset Field ( bits) 4 blocos Cada bloco = palavra 4-way set associative 56 sets V 8 Field (8 bits) V V V A cache pode cobrir até bytes = 4 GB de memória 5 54 55 Block Address = bits = bits = 8 bits = bits 4 -to - m ultiplexor Hit Mapping Function: Cache Set Number = (Block address) MOD (56) 6