Curso Livre de Arquitetura de Computadores/Caderno 4: Hierarquia de Memória e Memória Cache

Fonte: Wikiversidade

Para falar sobre hierarquia de memória são importantes algumas perguntas que determinarão quais hierarquias serão seguidas. São elas: Quanto? Com que velocidade? e Com que custo?.[1]

Em relação a quantidade, isso é de certa forma livre, pois as aplicações existentes ou mesmo as criadas após isso, irão se adaptar a quantidade de memória disponível. A velocidade, tem que ser próxima ou superior a velocidade do processador escolhido, já que não quer-se ter que esperar a memória para seguir com instruções. E o custo é relacionado a todo o resto dos componentes utilizados, se a memória se sobrepor a todos, deve haver algum erro, pois o custo não poderia ser tão superior.[1]

A memória pode ser projetada considerando as perguntas da seguinte forma:

  • Tempo de acesso mais rápido, maior custo por bit.
  • Maior capacidade, menor custo por bit.
  • Maior capacidade, tempo de acesso mais lento.

Para uma hierarquia mais clara relacionada à capacidade, velocidade e custo, imagine que quanto maior a capacidade, mais lento vai ser o acesso. Por exemplo: um registrador é mais rápido do que uma memória cache. Assim como a memória cache é mais rápida do que uma memória principal e assim por diante.[1]

Memória cache[editar | editar código-fonte]

É uma memória que armazena partes da memória principal para acesso mais rápido com baixo custo. A ideia é que com pouco custo tenhamos uma memória de acesso intermediário entre a memória principal e o processador, fazendo com que não seja necessário acessar a memória principal a todo momento.[1]

Falando em níveis de cache, a cache L1 é mais rápida do que a L2 e L3. A memória cache é consultada sempre que o processador quer requisitar uma informação, ele primeiro olha na cache, caso não encontre então sim ele buscará na memória principal e salvará para a próxima ocorrência. O nome do processo citado é cache hit. Também ocorre um fenômeno de quando a informação não é encontrada na memória cache, o nome dele é cache miss.[1]

Quando a memória virtual é usada, os campos de endereço das instruções de máquina contêm endereços virtuais. Para leituras e escritas da memória principal, uma unidade de gerenciamento da memória (MMU, do inglês memory management unit) física traduz cada endereço virtual para um endereço físico na memória principal. Quando são usados endereços virtuais, o projetista do sistema pode escolher colocar a cache entre o processador e a MMU ou entre a MMU e a memória principal. Uma cache lógica, também conhecida como cache virtual, armazena dados usando endereços virtuais. O processador acessa a cache diretamente, sem passar pela MMU. Uma cache física armazena dados usando endereços físicos da memória principal.[1]

Uma vantagem óbvia da cache lógica é que a velocidade de acesso a ela é maior do que para uma cache física, pois a cache pode responder antes que a MMU realize uma tradução de endereço. A desvantagem é que a maioria dos sistemas de memória virtual fornece, a cada aplicação, o mesmo espaço de endereços de memória virtual. Ou seja, cada aplicação vê uma memória virtual que começa no endereço 0. Assim, o mesmo endereço virtual em duas aplicações diferentes refere-se a dois endereços físicos diferentes. A memória cache, portanto, precisa ser completamente esvaziada a cada troca de contexto de aplicação, ou então bits extras precisam ser adicionados a cada linha da cache para identificar a que espaço de endereço virtual esse endereço se refere.[1]

Memórias caches com tamanhos grandes tendem a ser ligeiramente mais lentas que as pequenas — mesmo quando construídas com a mesma tecnologia de circuito integrado e colocadas no mesmo lugar no chip e na placa de circuito. A área disponível do chip e da placa também limita o tamanho da cache. Como o desempenho da cache é muito sensível à natureza da carga de trabalho, é impossível chegar a um único tamanho ideal de cache.[1]


Referências