CPUs modernas funcionam incrivelmente rápido; eles podem superar significativamente o desempenho da RAM do sistema. Esse desequilíbrio de velocidade entre a CPU e a memória faria com que seu processador frequentemente ficasse ocioso, esperando que os dados fossem enviados a ele para que pudesse continuar executando um processo. Para evitar que isso aconteça, permitindo que as CPUs continuem a funcionar cada vez mais rápido, um cache de CPU é usado.
Como um cache de CPU acelera uma CPU?
O cache da CPU é projetado para ser o mais rápido possível e, então, armazenar em cache os dados solicitados pela CPU. O cache da CPU tem sua velocidade otimizada de três maneiras: latência, largura de banda e proximidade. O cache da CPU opera em latências muito baixas, minimizando o tempo que leva para um resultado ser retornado. Por exemplo, o Intel i9-9900k tem uma latência de cache de 0,8, 2,4 e 11,1 nanossegundos para o cache L1, L2 e L3, respectivamente. Em comparação, a latência da RAM de alta velocidade moderna é da ordem de 14 nanossegundos.
Dica: Os níveis de cache serão explicados com mais detalhes posteriormente, mas simplesmente coloque as camadas inferiores de cache são mais rápidas, mas são mais caras, portanto, têm capacidades menores. Um nanossegundo é um bilionésimo de segundo, portanto, uma latência de 0,8 segundos significa que leva menos de um bilionésimo de segundo para retornar um resultado.
Em termos de largura de banda, o cache da CPU oferece melhorias significativas de desempenho em relação ao armazenamento e RAM tradicionais. As velocidades de leitura do cache L1 e L3 podem atingir um pico de 2,3 TB / se 370 GB / s, respectivamente, enquanto a largura de banda da RAM é normalmente em torno de 40 GB / s. Esse aumento da largura de banda significa que o cache da CPU pode transferir dados para a CPU muito mais rápido do que a RAM.
Para atingir as velocidades máximas possíveis, o cache da CPU é, na verdade, integrado ao silício da própria matriz da CPU. Isso minimiza a distância que os sinais elétricos precisam percorrer, mantendo, portanto, a latência o mais baixa possível. Por exemplo, quando o cache L3 foi movido pela primeira vez da placa-mãe para o chip da CPU, o processador da época (Pentium 4 EE) foi capaz de obter uma melhoria de desempenho de 10-20%.
Arquitetura de cache de CPU
CPUs modernas geralmente usam três camadas de cache de CPU rotuladas L1-3, com caches de números mais baixos sendo mais próximos dos núcleos da CPU, mais rápidos e mais caros. Cada núcleo de CPU individual em uma CPU de vários núcleos tem seu próprio cache L1. É normalmente dividido em duas partes, o L1I e o L1D. O L1I é usado para armazenar instruções em cache para a CPU, enquanto o L1D é usado para armazenar em cache os dados nos quais essas instruções devem ser executadas.
Cada núcleo da CPU normalmente também possui seu próprio cache L2 em uma CPU moderna. O cache L2 é maior e mais lento do que o cache L1 e é usado principalmente para armazenar dados que de outra forma não caberiam no cache L2. Por ter um cache L2 dedicado por núcleo, a contenção de cache é evitada. A contenção de cache é onde diferentes núcleos lutam para reivindicar espaço de cache para suas próprias cargas de trabalho, o que pode fazer com que dados importantes sejam apagados do cache.
O cache L3 é normalmente compartilhado entre todos os núcleos da CPU do processador. Novamente, o cache L3 é mais lento do que o cache L2, mas é mais barato e maior. Ao fornecer um cache compartilhado, é possível reduzir a quantidade de dados que seriam duplicados em níveis inferiores de cache por núcleo.
Dica: Por exemplo, em tamanhos de cache, o i9-9900K da Intel tem um cache L1 de 64 KB e um cache L2 de 256 KB por núcleo (para um total de 512 KB L1 e 2 MB L2), ele também tem um cache L3 compartilhado de 16 MB.
Como o cache da CPU é usado?
Todos os níveis do cache da CPU são usados para acelerar o desempenho do processador, armazenando dados em cache da RAM. Quando uma CPU solicita dados, ela normalmente pesquisa primeiro em suas camadas de cache na tentativa de obter os dados o mais rápido possível. Se os dados forem encontrados em um acerto de cache, a CPU pode continuar seu processamento. Se os dados não estão no cache, no que é chamado de perda de cache, a CPU tem que verificar a RAM e, em seguida, o disco rígido, se os dados também não estiverem lá. As camadas mais rápidas são sempre verificadas primeiro para desempenho máximo.
Para ajudar a CPU a ter os dados de que precisa no cache, quando precisa, o cache tenta antecipar quais dados a CPU pode precisar em seguida. Por exemplo, se a CPU solicitou alguns dados para uma imagem que está renderizando, o cache pode tentar armazenar em cache preventivamente mais dados da imagem para que possam ser alimentados para a CPU o mais rápido possível.