Arquitectura de Computadores Memória Cache; Memória Secundária (13.3) José Monteiro Licenciatura em Engenharia Informática e de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 14 de Maio, 2009 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 1 / 14
Sumário da Aula exemplo de funcionamento poĺıticas de escrita bits de controlo níveis de cache arquitectura de Harvard José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 2 / 14
Hierarquia de Memória UCP Registos Cache Memória Primária Memória Secundária José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 3 / 14
Princípio da Localidade Regra 90/10 Princípio da Localidade Localidade Temporal Se um endereço é referenciado, tenderá a sê-lo de novo em breve. Localidade Espacial Se um endereço é referenciado, os endereços contíguos tenderão a ser referenciados em breve. José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 4 / 14
Indicadores Estatísticos das Caches Sucesso (hit): endereço a que se pretende aceder está presente na cache, sendo o acesso servido por esta. t h : tempo de acesso à cache com sucesso p h : fracção de acessos à cache com sucesso (taxa de sucesso, hit rate) Falta (miss): endereço a que se pretende aceder não se encontra na cache, sendo necessário um acesso à memória primária. t m : tempo de acesso à cache com falta p m : fracção de acessos à cache com falta, p m = 1 p h (taxa de faltas, miss rate) Tempo médio de acesso: t p : penalidade de falta, t p = t m t h t acesso = p h t h + p m t m = t h + p m t p José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 5 / 14
Organização da Cache Etiqueta Índice Deslocamento Etiquetas Dados Etiquetas Dados Descodificador Multiplexador = = Multiplexador Codificador Multiplexador Hit Dados José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 6 / 14
Posição de um Bloco na Cache Onde colocar um bloco na cache? Cache Completamente Associativa o bloco pode ficar em qualquer posição da cache. Cache de Mapeamento Directo cada bloco apenas pode ficar numa posição da cache, determinada pelos bits do campo índice. Endereço Etiqueta Índice Bloco Associativa de n vias o bloco tem n posições possíveis de colocação, uma por cada via, sendo a posição numa dada via determinada pelos bits do campo índice. José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 7 / 14
Poĺıtica de Escrita O que acontece numa escrita? Estatisticamente, as escritas perfazem cerca de 21% dos acessos a dados. Contabilizando as leituras de instruções, 7% dos acessos à memória são escritas. Optimizar as leituras! Mas não ignorar as escritas. Ao contrário da leitura, a escrita só pode ter início depois de se saber se houve sucesso ou falta. José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 8 / 14
Poĺıtica de Escrita Write Back: a escrita é apenas realizada no bloco da cache. escrita realizada à velocidade da cache redução do tráfego para memória José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 9 / 14
Poĺıtica de Escrita Write Back: a escrita é apenas realizada no bloco da cache. escrita realizada à velocidade da cache redução do tráfego para memória Write Through: a escrita é realizada quer no bloco da cache quer na memória primária mais fácil de implementar cache e memória estão sempre consistentes falta em leitura nunca causa uma escrita em memória optimizada recorrendo a write buffer José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 9 / 14
Poĺıtica de Alocação O que fazer no caso de uma falta de escrita? Write Allocate: bloco é trazido para a cache e actualizado No-Write Allocate: cache é alterada se o bloco lá estiver José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 10 / 14
Poĺıtica de Alocação O que fazer no caso de uma falta de escrita? Write Allocate: bloco é trazido para a cache e actualizado No-Write Allocate: cache é alterada se o bloco lá estiver Ambas podem ser usadas com qualquer das poĺıticas de escrita, embora as combinações típicas sejam: Write Back, Write Allocate: possíveis escritas futuras para o mesmo endereço passam a ser realizadas na cache. Write Through, No-Write Allocate: o racional é que se se tem que ir realizar a escrita em memória, não há muito a ganhar por ter este bloco na cache. José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 10 / 14
Bits de Controlo José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Bits de Controlo Valid: indica se o valor associado à etiqueta está correcto ou não utilizado, por exemplo, para invalidar todas as posições da cache quando se re-inicializa o sistema José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Bits de Controlo Valid: indica se o valor associado à etiqueta está correcto ou não utilizado, por exemplo, para invalidar todas as posições da cache quando se re-inicializa o sistema Dirty: indica que o valor que está na cache é mais recente do que o valor em memória primária utilizado apenas no caso das caches write-back José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Bits de Controlo Valid: indica se o valor associado à etiqueta está correcto ou não utilizado, por exemplo, para invalidar todas as posições da cache quando se re-inicializa o sistema Dirty: indica que o valor que está na cache é mais recente do que o valor em memória primária utilizado apenas no caso das caches write-back R/W: indica se uma posição de memória pode ser escrita ou se é só de leitura José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Bits de Controlo Valid: indica se o valor associado à etiqueta está correcto ou não utilizado, por exemplo, para invalidar todas as posições da cache quando se re-inicializa o sistema Dirty: indica que o valor que está na cache é mais recente do que o valor em memória primária utilizado apenas no caso das caches write-back R/W: indica se uma posição de memória pode ser escrita ou se é só de leitura LRU: indica que esta via foi a última a ser acedida utilizado nas caches com 2-vias de associatividade para implementar a poĺıtica de substituição LRU José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Bits de Controlo Valid: indica se o valor associado à etiqueta está correcto ou não utilizado, por exemplo, para invalidar todas as posições da cache quando se re-inicializa o sistema Dirty: indica que o valor que está na cache é mais recente do que o valor em memória primária utilizado apenas no caso das caches write-back R/W: indica se uma posição de memória pode ser escrita ou se é só de leitura LRU: indica que esta via foi a última a ser acedida utilizado nas caches com 2-vias de associatividade para implementar a poĺıtica de substituição LRU Accessed: indica que esta via foi acedida desde a última vez que este bit foi colocado a 0 aproximação da poĺıtica LRU, sendo colocado a 0 em intervalos de tempos regulares e colocado a 1 quando a via for acedida José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 11 / 14
Caches Multi-nível up Cache L1 Cache L2 Memória Primária t acesso = t hl1 + p ml1 t pl1 t pl1 = t hl2 + p ml2 t pl2 t acesso = t hl1 + p ml1 (t hl2 + p ml2 t pl2 ) José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 12 / 14
Taxas Locais e Globais Taxa de Faltas Local: fracção dos acessos à cache com falta nessa cache Taxa de Faltas Global: fracção dos acessos processador com falta na cache p missgloball2 = p misslocall1 p misslocall2 José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 13 / 14
Taxas Locais e Globais Taxa de Faltas Local: fracção dos acessos à cache com falta nessa cache Taxa de Faltas Global: fracção dos acessos processador com falta na cache p missgloball2 = p misslocall1 p misslocall2 local igual a global para a cache L1 taxa de faltas local da L2 muito elevada, a global é uma medida melhor José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 13 / 14
Arquitectura de Harvard up Cache Instruções Cache Dados Memória Primária José Monteiro (DEI / IST) Arquitectura de Computadores 2009-05-14 14 / 14