Vous êtes sur la page 1sur 6

Memória Cache

Motivação:

Na pirâmide de memória, abaixo dos registradores, encontra-se o conjunto cache-


memória principal. Em sistemas de computação mais antigos, a pirâmide não possuía
memória cache e, desse modo, os registradores eram ligados diretamente à memória
principal.

Em toda execução de uma instrução, a CPU acessa a memória principal (sem


cache), pelo menos uma vez, para buscar a instrução (uma cópia dela) e transferi-la para
um dos registradores da CPU. E mais ainda, muitas instruções requerem outros acessos
à memória, seja para a transferência de dados para a CPU (que serão processados na
ULA), seja para a transferência do resultado de uma operação da CPU para a memória.

Em resumo, para a realização do ciclo de uma instrução há sempre a necessidade


de ser realizado um ou mais ciclos de memória.

Considerando-se que um ciclo de memória é atualmente bem mais demorado do


que o período de tempo que a CPU gasta para realizar uma operação na ULA, fica claro
que a duração da execução de um ciclo de instrução é bastante afetada pela demora
dos ciclos de memória.

Desde há muito, então, esta interface entre o processador e a memória principal


vem sendo um ponto frágil no que se refere à performance do sistema.

Na tentativa de melhorar o desempenho dos sistemas de computação, os


projetistas das CPU vêm constantemente obtendo velocidades cada vez maiores nas
operações dessas unidades, o que não está acontecendo na mesma proporção com o
aperfeiçoamento tecnológico das memórias utilizadas como memória principal. Assim,
anualmente a diferença de velocidade entre CPU e memória principal é talvez maior do
que já foi no passado.

Na busca de uma solução para este problema (o gargalo de congestionamento na


comunicação CPU/MP que degrada o desempenho dos sistemas), foi desenvolvida uma
técnica que consiste na inclusão de um dispositivo de memória entre CPU e MP,
denominado memória CACHE, cuja função é acelerar a velocidade de transferência das
informações entre CPU e MP e, com isso, aumentar o desempenho dos sistemas de
computação.

Para tanto, esse tipo de memória é fabricado com tecnologia semelhante à da


CPU e, em consequência, possui tempos de acesso compatíveis, resultando numa
considerável redução da espera da CPU para receber dados e instruções da cache, ao
contrário do que acontece em sistemas sem cache.
Características da memória Cache:

Tempo de acesso/ciclo de memória - sendo memórias de semicondutores, fabricadas


com tecnologia e recursos para prover menores ciclos de memória que as memórias
RAM comuns (memória principal do tipo dinâmica), elas possuem velocidade de
transferência tal que lhes garante tempos de acesso entre l0 e 25 ns (nanossegundos),
sendo por esta razão colocadas, na pirâmide, logo abaixo dos registradores.

Capacidade - tendo em vista que a CPU acessa primeiramente a memória cache, para
buscar a informação requerida (a próxima instrução ou dados requeridos pela instrução
em execução), é importante que a referida memória tenha capacidade adequada para
armazenar uma apreciável quantidade de informações, visto que, se ela não foi
encontrada na cache, então o sistema deverá sofrer um atraso para que a informação
seja transferida da memória principal para a cache.

Valores típicos de memória cache oscilam entre 16K e 512K em máquinas de grande
porte e até 256K para microcomputadores (é possível que em breve estes valores já
estejam mais elevados), considerando-se memórias cache externas à CPU, já que
atualmente alguns processadores possuem uma certa quantidade de memória cache em
seu interior, da ordem de 8K.

Volatilidade - a exemplo dos registradores, memórias cache são dispositivos


construídos com circuitos eletrônicos, requerendo, por isso, energia elétrica para seu
funcionamento.

Tecnologia - memórias cache são fabricadas com circuitos eletrônicos de alta


velocidade para atingirem sua finalidade. Em geral, são memórias estáticas,
denominadas SRAM.

Temporariedade - o tempo de permanência de uma instrução ou dado nas memórias


cache é relativamente pequeno, menor que a duração da execução do programa ao qual
a referida instrução ou dado pertence. Isto porque, devido a seu tamanho não ser grande
e ser utilizada por todos os programas em execução, há necessidade de alteração
periódica da informação armazenada para permitir a entrada de novas informações.
Embora a transitoriedade das informações na cache seja uma realidade, o período
efetivo de permanência de um dado ou instrução é dependente do tipo de política de
substituição de informação.

Custo - o custo de fabricação das memórias cache é alto. O valor por byte está situado
entre o dos registradores, que são os mais caros, e o da memória principal, mais barata.
Memórias cache internas à CPU ainda são mais caras do que as externas.
Funcionamento:
Como foi dito anteriormente, as memórias Cache vem tendo um papel cada vez
mais importante nos sistemas computacionais. Inicialmente elas nem existiam nos
computadores. Depois foram adicionadas fora do processador e em pequena
quantidade. Em seguida elas foram levadas para dentro do processador e hoje em dia
ocupam entre 60% e 80% da área do chip do processador.
O princípio básico das memória Cache é o de manter uma cópia dos dados e
instruções mais utilizados recentemente (Princípio da Localidade) para que os mesmos
não precisem ser buscados na memória principal. Como elas são muito mais rápidas do
que a memória principal, isso traz um alto ganho de desempenho.
Todo dado a ser lido ou escrito em memória pelo processador antes passa para
a Cache. Se o dado estiver na Cache, a operação é feita nela e não se precisa ir até a
Memória Principal. Caso contrário, um bloco inteiro de dados (geralmente com 4 palavras
de memória) é trazido da Memória Principal e salvo na Cache. Só então a CPU realiza a
tarefa com o dado.
Sendo assim, o desempenho do computador ao acessar um dado de memória é
probabilístico. Para cada dado a ser acessado há uma probabilidade dele estar na
memória Cache. Se isso ocorrer dizemos que houve um Cache Hit e o sistema ganha
muito tempo com isso. Caso contrário, ocorre uma Cache Miss e o desempenho é
bastante prejudicado. Portanto, o grande problema é como fazer que a probabilidade de
um dado estar na memória cache ao invés da memória principal, ou seja, como aumentar
a taxa de Cache Hit? Existem algumas estratégias para isso, são elas:

 Aumentar o tamanho da Memória Cache


 Mudar a função de mapeamento
 Mudar a política de substituição

Tamanho:
A grande dificuldade das memórias Cache é que elas sempre estão presentes em
menor quantidade do que a Memória Principal. Geralmente a Memória Cache de um
computador é 1.000 vezes menor do que a Memória Principal.
Como a Memória Cache trabalha armazenando cópias de dados da Memória
Principal, quanto maior for a Memória Cache, mais dados ela é capaz de armazenar,
sendo assim, maior a probabilidade do processador buscar por um dado e ele estar na
Cache.
Função de mapeamento:

A função de mapeamento diz respeito a estratégia utilizada para determinar onde


cada dado da memória principal estará na Cache. Ela determina onde cada dado da
Memória Principal será copiado na Cache caso ele seja acessado. Isso é muito
importante porque o processador vai seguir essa mesma estratégia para conseguir
localizar se o dado está, ou não na Cache. Há três tipos de mapeamento:

 Mapeamento direto
 Mapeamento associativo
 Mapeamento associativo por conjunto

Mapeamento Direto:

Por exemplo, imagine uma Cache que armazena apenas 5 linhas (é o termo
utilizado o local onde um bloco da Memória Principal é salvo na Cache), com numeração
de 1 a 5. A Memória Principal será mapeada da seguinte forma, o bloco 1 será salvo na
linha 1 da Cache, o bloco 2 na linha 2 etc. até o bloco 5 que será salvo na linha 5. Já o
bloco 6 da memória será salvo novamente na linha 1 da Cache, o bloco 7 na linha 2,
bloco 8 na linha 3 etc. Isso será feito até o que todos blocos da Memória Principal tenham
uma linha a ser armazenada.

Mapeamento Associativo:

No mapeamento associativo, o mecanismo de alocação de blocos da Memória


Principal na Cache não segue posição fixa. Cada bloco vai ocupar a primeira posição
vazia encontrada. O mapeamento associativo termina sendo mais eficiente do que o
mapeamento direto no momento de alocar blocos da memória na Cache. Só haverá
espaço inutilizado se não houver acesso suficiente à Memória Principal. A desvantagem
deste tipo de mapeamento está no momento de buscar um bloco na Cache.

Para o sistema computacional, essa busca é custosa o que resulta na utilização


deste mapeamento apenas se a Cache não for grande demais.

Mapeamento Associativo por Conjunto:


O problema do Mapeamento Associativo é encontrar blocos em memórias Cache
grandes. A solução para isso é utilizar uma abordagem mista, que utiliza os princípios
dos mapeamentos direto e associativo. Ela divide a memória em conjuntos. Cada bloco
então é mapeado para um conjunto (semelhante ao que é feito para o Mapeamento
Direto, mas para o nível de conjunto). Sempre que um bloco for ser buscado ou salvo,
ele será feito no conjunto fixo dele, mas dentro do conjunto ele pode ser armazenado em
qualquer posição livre.
Política de substituição:

Nos mapeamentos associativo e associativo por conjunto uma outra política deve
ser adotada. Quando a memória cache enche e um novo bloco precisa ser armazenado,
o Sistema de Memória deve escolher que bloco deve ser removido para dar espaço ao
novo bloco. No mapeamento direto isso não existe porque cada bloco sempre fica na
mesma posição.

Sendo assim, há 3 principais políticas de substituição de linhas de Cache. São elas:

 Randômica
 FIFO
 LRU

Na substituição randômica o sistema simplesmente escolhe aleatoriamente o


bloco que deve ser removido. Ele sai da Cache dando lugar ao novo bloco que foi
acessado. Este método tem a vantagem de ser muito fácil de implementar e, por
consequência, rápido de executar. Porém ele pode não ser muito eficiente.

Já no FIFO (First-In First-Out) adota o princípio de fila. Aquele bloco que chegou
primeiro, está há mais tempo na Cache. Já se beneficiou bastante e deve então dar lugar
ao novo bloco.

No LRU (Least-Recently Used), ou “Menos Usado Recentemente” aplica o


Princípio da Localidade Temporal e torna-se por isso mais eficiente na maioria dos casos.
Nesta política o sistema escolhe o bloco que menos foi utilizado recentemente e o
remove. Isso faz com que fiquem na Cache aqueles blocos que são acessados mais
vezes nos últimos instantes.
Referências Bibliográficas
Sites visitados:
http://www.di.ufpb.br/raimundo/Hierarquia/Cache.html
https://www.clubedohardware.com.br/artigos/processadores/como-o-cache-de-
mem%C3%B3ria-funciona-r34772/?nbcpage=1
https://pt.wikipedia.org/wiki/Cache
https://www.hardware.com.br/termos/cache
https://www.youtube.com/watch?v=ATbq4rzRUvc
https://www.youtube.com/watch?v=IUHNv1YbSA4

Livros:
Arquitetura de Computadores – PCs. Paixão, Renato Rodrigues
Arquitetura de computadores - RIBEIRO, C ; DELGADO, J
Principios basicos de arquitetura e organizacao de computadores - NULL, L ; LOBUR, J

Vous aimerez peut-être aussi