Академический Документы
Профессиональный Документы
Культура Документы
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
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.
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.
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.
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.
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.
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.
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.
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.
Bibliografia
[1] STALLINGS, W. Arquitetura e Organizao de Computadores, 5 Edio, Prentice Hall, So Paulo, 2002. (Cap. 4)