Вы находитесь на странице: 1из 9

Arquitetura e Organizao de Computadores I

AULA 04 Memria Cache


O objetivo da memria cache obter uma velocidade de acesso memria prxima da velocidade das memrias mais rpidas e, ao mesmo tempo, disponibilizar no sistema uma memria de grande capacidade, a um custo equivalente ao das memrias de semicondutor mais baratas. Um esquema ilustrando o uso da cache mostrado na Figura 1. A memria cache contm uma cpia de partes da memria principal. Assim, quando o processador deseja ler uma palavra da memria, uma verificao efetuada para determinar se a palavra est na memria cache, otimizando o acesso. Caso ela esteja imediatamente fornecida ao processador. Caso contrrio, um bloco de dados da memria principal lido para a memria cache e em seguida a palavra requerida entregue ao processador.

Figura 1. Memria cache e memria principal.

A Figura 2 ilustra a estrutura da memria principal e da cache. Conforme podemos verificar, a memria principal composta de 2n palavras endereveis, cada uma com um endereo distinto de n bits. Alm disso, a fim de efetuarmos o mapeamento com a memria cache, consideraremos que a memria principal possui um determinado nmero de blocos com k palavras cada um. Portanto, existem M = 2n / k blocos. J a memria cache formada por C linhas de k palavras, sendo que o nmero de linhas consideravelmente menor que o nmero de blocos da memria principal. Baseado nesta estrutura, podemos reconhecer que a cada instante um subconjunto dos blocos da memria principal reside nas linhas da cache. Assim, cada linha da cache armazena um bloco da memria principal. Prof. Dr. Jean M. Laine 1

Arquitetura e Organizao de Computadores I

Figura 2. Estrutura da memria cache e da memria principal. A Figura 3 mostra como feita uma operao de leitura. Para que um determinado dado seja lido, o processador gera um endereo representado por RA que contm a informao que precisa ser lida (palavra). A Figura 3 mostra que as operaes de carregar na cache o bloco que contm a palavra e entregar a palavra ao processador so feitas em paralelo, que justifica a organizao ilustrada na Figura 4.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I

Figura 3. Operao de leitura em uma memria cache.

Podemos observar na Figura 4 que a cache conectada ao processador por meio de linhas de dados, de controle e de endereo. O barramento de sistema ilustrado o meio utilizado para fazer acesso a memria principal.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I

Figura 4. Organizao tpica de uma memria cache. Quando um dado a ser lido est armazenado na cache (cache hit ou acesso com acerto), as reas de armazenamento temporrio de dados e de endereos so desabilitadas e a comunicao acontece diretamente entre processador e cache, sem qualquer acesso ao barramento do sistema. Caso acontea uma cache miss (acesso com falha na cache), o endereo desejado colocado no barramento do sistema e dos dados requisitados so transferidos por meio da rea de armazenamento de dados temporrio, tanto para a cache quanto para a memria principal.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I

Elementos do projeto de uma cache Tamanho


Ao se determinar o tamanho da memria cache devemos levar em considerao o custo por bit e o tempo de acesso. Assim, uma cache deve ser suficientemente grande para que o tempo mdio de acesso memria seja prximo ao tempo de acesso cache e pequeno o suficiente para que o custo por bit no seja alto e se equipare ao da memria principal. Quanto maior o tamanho da cache mais lento o seu acesso, pois uma quantidade de portas maior ser utilizada no seu endereamento.

Funo de Mapeamento
Conforme foi discutido e pode ser observado na Figura 2, o nmero de linhas da memria cache bem menor que o nmero de blocos da memria principal. Assim, devemos encontrar uma forma de mapear os blocos da memria principal para a cache. Existem 3 tcnicas diferentes que podem ser utilizadas: mapeamento direto, mapeamento associativo e mapeamento associativo por conjunto.

Mapeamento Direto
Este mtodo o mais simples, sendo cada bloco da memria principal mapeado em uma nica linha da cache. Para que isso seja feito podemos pensar no seguinte mecanismo: i = j mdulo m onde: i = n da linha da cache; j = n do bloco da MP; m = qde de linhas da cache. Assim, podemos implementar esta forma de mapeamento de maneira muito fcil, usando tambm o endereo da informao na memria principal. Embora a tcnica de mapeamento direto seja simples e tenha um baixo custo de implementao, o fato de cada bloco ser mapeado para uma posio fixa da cache ocasiona alguns problemas. Imagine que um programa faa referncias seguidas a palavras de dois blocos distintos, mapeados em uma mesma linha da cache. Esses blocos sero trocados continuamente na memria cache e a taxa de acertos cache ser baixa.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I

Mapeamento Associativo
Neste modo permitido que um bloco da memria principal seja mapeado para qualquer linha da memria cache, evitando os problemas do mapeamento direto. Todo endereo da memria principal interpretado como sendo constitudo de um rtulo, que identifica de modo unvoco um bloco da MP, e um campo de palavra. Dessa forma, a lgica de controle da cache consiste em comparar se o rtulo da MP est em alguma linha da cache.

O mapeamento associativo permite maior flexibilidade na escolha do bloco da cache que ser substituido quando um novo bloco trazido da MP, sendo para isso utilizado algoritmos de substituio a fim de proporcionar uma taxa maior de acertos. Obviamente, implementar esta soluo mais difcil, devido a quantidade de circuitos necessrios para comparar todos os rtulos da cache em paralelo.

Mapeamento Associativo por Conjunto


Este mtodo minimiza os problemas comentados para o mapeamento associativo e combina esta nova estratgia com as vantagens do mapeamento direto. Agora a memria cache dividida em v conjuntos, cada um contendo k linhas, e as seguintes relaes so estabelecidas: Prof. Dr. Jean M. Laine 6

Arquitetura e Organizao de Computadores I m=vxk i = j mdulo v onde: i = nmero do conj. na memria cache. j = nmero do bloco da MP. m = qde de linhas da cache. Neste caso, chamamos o mapeamento de mapeamento associativo por conjunto de k linhas. Um bloco Bj pode ser mapeado em qualquer das linhas do conjunto i. Agora a lgica de controle da cache v os endereos da MP como sendo constitudos dos seguintes campos: rtulo, conjunto e palavra. Assim, os d bits do campo conjunto especificam um dos v = 2d conjuntos da cache associado. Os s bits do rtulo e de conjunto especificam um dos 2s blocos da MP. importante observarmos que se v = m e k = 1, a tcnica de mapeamento associativo por conjuntos se reduz ao mapeamento direto. Para v = 1 e k = m, ela tem a mesma semntica do mapeamento associativo. Normalmente, usamos a tcnica de mapeamento associativo por conjunto de 2 linhas.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I

Algoritmos de Substituio
Quando a memria cache est cheia e um novo bloco trazido para ela, algum bloco existente deve ser substitudo para dar lugar ao novo. Para o caso do mapeamento direto isso tranqilo, uma vez que cada bloco da MP tem pr-determinado a sua posio na cache, no havendo qualquer outra alternativa. Por outro lado, os mapeamentos associativos e por conjunto necessitam de alguma poltica ou algoritmo para determinar qual o bloco que deixar a cache para que o novo bloco possa ser armazenado. Para que todo este processo seja feito rapidamente ele deve ser implementado em hardware. Os seguintes algoritmos podem ser utilizados: 1. LRU (Least Recently Used): substituiremos o bloco que est no conjunto que no usado h mais tempo. Cada linha inclui um bit a mais, chamado de bit de USO. Assim quando um novo bloco deve ser armazenado no conjunto ele ocupa a linha que no usada h mais tempo. Este algoritmo um dos mais eficientes para aumentar a cache hit.

Prof. Dr. Jean M. Laine

Arquitetura e Organizao de Computadores I 2. FIFO (First In Firt Out): bem simples, o primeiro bloco a ser armazenado ser o primeiro a ser substitudo. 3. LFU (Least Frequently Used): o algoritmo substituir o bloco que foi utilizado menos vezes. Podemos colocar um contador a cada uma das linhas da memria cache para obter esta informao.

*** Exerccios dado em sala ***

Bibliografia
[1] STALLINGS, W. Arquitetura e Organizao de Computadores, 5 Edio, Prentice Hall, So Paulo, 2002. (Cap. 4)

Prof. Dr. Jean M. Laine

Вам также может понравиться