Memória Cache

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 conseqüê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 .

Assim, logo abaixo dos registradores na pirâmide é inserida a memória cache, com os seguintes parâmetros:

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.

Por outro lado, uma grande capacidade implicará certamente elevação de seu custo, muitas vezes inaceitável para compor o preço total do sistema.

Desta forma, deve-se conciliar o compromisso de uma apreciável capacidade com a não-elevação demasiada de seu preço.

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 (como o INTEL 80486) 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. São, deste modo, dispositivos voláteis.

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.