O que é cache e por que CPUs, GPUs e outros tipos de processadores o possuem? Aqui está tudo o que você precisa saber.
Links Rápidos
- Cache: Uma pequena quantidade de memória de alta velocidade
- Níveis de cache e hierarquia de memória
- O cache é necessário, mas não melhora o desempenho por si só
Embora o cache não seja tão falado quanto os núcleos, BATER (memória de acesso aleatório), ou VRAM, você provavelmente já ouviu falar sobre isso antes, especialmente recentemente. A AMD orgulhosamente anuncia o desempenho em jogos de seus CPUs Ryzen com 3D V-Cache como resultado do uso de cache, e uma das maiores melhorias da Intel com suas CPUs Raptor Lake de 13ª geração foi adicionar mais cache.
Mas como o cache pode melhorar o desempenho quando medido em termos de megabytes? Até mesmo os kits de RAM mais baratos vêm com 16 GB atualmente, então como adicionar apenas alguns megabytes extras de cache pode fazer uma diferença tão grande no desempenho? Bem, o cache não é o seu tipo normal de memória.
Cache: Uma pequena quantidade de memória de alta velocidade
Fonte: AMD
O cache é na verdade um desenvolvimento bastante recente em processadores, que remonta à década de 1990, e foi inventado por causa da RAM. RAM é um componente chave em computadores que armazena uma quantidade significativa de dados que os processadores (como CPUs e GPUs) precisam com bastante frequência. Durante muito tempo, as melhorias no desempenho da RAM acompanharam as melhorias no desempenho da CPU, mas na década de 1990, isso estava se tornando óbvio que a RAM não seria capaz de acompanhar as CPUs mais recentes. A RAM tinha muita capacidade, mas as velocidades de transferência eram muito lento.
É aqui que entra o cache. Não é tão grande quanto a RAM, tanto fisicamente quanto em capacidade, mas está dentro do próprio processador e pode transferir dados muito rapidamente e com latência muito baixa. Contanto que o cache armazene os dados que o processador realmente precisa, ele pode economizar tempo porque solicitar os mesmos dados à RAM é muitas vezes mais lento. Foi uma ótima solução para o problema da RAM e permitiu que os projetistas de CPU continuassem fabricando CPUs mais rápidas e Projetistas de RAM continuem produzindo maiores capacidades de RAM sem precisar se preocupar tanto com desempenho. Hoje, o cache está presente em praticamente todos os tipos de processador.
Você deve estar se perguntando por que o cache é tão pequeno. Bem, principalmente tem a ver com espaço e dinheiro. Mesmo 32 MB de cache podem ocupar bastante espaço em um processador, e os chips modernos são limitados a cerca de 600 mm2 de área total, o que deve ser usado com sabedoria. Isso significa que dedicar mais área ao cache pode sair muito caro e essa situação está realmente piorando, não melhorando. Os processos de fabricação mais recentes estão resultando em melhorias cada vez menores na densidade do cache, e a TSMC não conseguiu reduzir o tamanho do cache na primeira iteração de seu processo de 3 nm.
Níveis de cache e hierarquia de memória
Fonte: Carlos Carvalho
A invenção do cache significou que havia uma nova camada para todos os dispositivos de armazenamento de dados em um computador. Essas camadas formam o que é chamado de hierarquia de memória, que você pode ver na imagem acima, e detalha qual memória vai para onde em um sistema típico dentro de uma CPU (embora outros tipos de processadores pareçam muito semelhante). Hoje, a hierarquia de memória moderna não inclui apenas cache, RAM e dispositivos de armazenamento permanente, mas também uma hierarquia de memória dentro do próprio cache.
A maioria dos processadores possui diferentes níveis de cache para diversos fins. O primeiro e menor nível de cache é L1, que recebe núcleos individuais para processar dados necessários imediatamente. O cache L1 é frequentemente medido em kilobytes, com as CPUs Ryzen 7000 mais recentes tendo 64 KB de cache L1 por núcleo. Além disso, o cache L1 moderno é frequentemente dividido em L1I (para instruções) e L1D (para dados).
O próximo é L2, que é para um grupo de núcleos, e não para núcleos individuais. Naturalmente, o cache L2 é maior que o cache L1, muitas vezes em uma ordem de magnitude, mas ser muito maior e ter que atender mais núcleos significa que é mais lento e tem maior latência. Alguns processadores, especialmente GPUs e CPUs mais lentas, só irão até o cache L2.
A próxima etapa é L3, que geralmente é usada por todos os núcleos do chip. Seu tamanho pode variar de algumas vezes maior que o cache L2 até mais de uma ordem de grandeza maior, dependendo do processador. Isso significa que é ainda mais lento que o cache L2, mas ainda supera a RAM. Além disso, o cache L3 também costuma atuar como um “cache de vítima”, que é para onde vão os dados despejados do cache L1 e L2. Ele pode ser ainda mais removido do cache L3 se for desnecessário. Hoje, o cache L3 é particularmente importante para a AMD devido à sua tecnologia de chips. Os chips Ryzen 3D V-Cache contêm 64 MB de cache L3 e os RX 7000 Memory Cache Dies (ou MCDs) contêm 16 MB de cache L3 cada.
O nível mais alto de cache visto na maioria dos processadores é o L4, que geralmente é tão grande que é efetivamente RAM. Na verdade, as CPUs mais recentes a usar cache L4 são os chips Sapphire Rapids Xeon da Intel, que usam HBM2 como cache L4 em modelos topo de linha. A AMD, por outro lado, nunca usou um cache L4 e, em vez disso, se contenta em ampliar seu cache L3 para altas capacidades adicionando mais CPU e chips V-Cache. Um cache L4 normalmente beneficia mais as GPUs integradas, pois é uma solução on-die que pode compartilhar dados entre a CPU e a GPU integrada.
Em alguns chipsets, principalmente nos móveis, existe outro tipo de cache: o cache de nível de sistema (SLC). Esse cache é então usado em todo o chipset, como GPU, NPU e CPU. Um cache pode substituir a necessidade de solicitações à memória principal, portanto, um SLC beneficia todo o SoC.
O cache é necessário, mas não melhora o desempenho por si só
Apesar de todo o entusiasmo em torno das inovações recentes em cache, não é uma solução mágica para desempenho. Afinal, não há capacidade de processamento no cache; ele apenas armazena dados e pronto. Embora todo processador possa se beneficiar absolutamente por ter mais cache, muitas vezes é muito caro adicionar mais do que exatamente a quantidade necessária. Adicionar mais cache pode até não melhorar o desempenho dependendo da carga de trabalho, o que é mais um incentivo para não investir muito em um processador.
Dito isto, poder adicionar uma grande quantidade de cache pode ser desejável em determinadas situações. CPUs com muito cache tendem a ter melhor desempenho em jogos, por exemplo. As CPUs Ryzen da AMD com 3D V-Cache são bastante rápidas para jogos, apesar de terem uma frequência mais baixa do que chips sem V-Cache, e As CPUs de 13ª geração da Intel são significativamente mais rápidas que os chips de 12ª geração, com a única grande melhoria sendo um aumento cache.
Em última análise, o cache existe para que os processadores possam ignorar a RAM com a maior freqüência possível e o desempenho possa ser o mais irrestrito possível. Os projetistas de CPU precisam equilibrar a capacidade do cache com o tamanho e, por extensão, com o custo, o que fica cada vez mais difícil a cada geração de novos processos de fabricação. Embora novas maneiras de adicionar cache aos processadores estejam sendo introduzidas décadas após a invenção do cache, é difícil imaginar que o propósito desse componente-chave dos processadores mudará algum dia.