Por que vários níveis de caches são usados ​​em CPUs modernas?


3

Recentemente li sobre processadores (principalmente multi-processadores) e me deparei com o conceito de caches de vários níveis. Esses designs têm vários níveis de cache, nesse caso, para aumentar o desempenho.

Eu não consegui descobrir, no entanto, como um caches adicionais aumentam o desempenho no processador? Por que não apenas aumentar o tamanho dos caches existentes?


Respostas:


11

O uso de vários níveis de cache é parcialmente um mecanismo para coordenar processadores multi-core e parcialmente um compromisso entre preço e desempenho.

Em um processador com vários núcleos, cada núcleo possui seu próprio cache L1. Isso permite que o núcleo leia e grave de e para o cache sem se preocupar em interferir com outros núcleos. Os núcleos precisam de armazenamento compartilhado, para que possam trocar certas informações facilmente. O cache L2 é compartilhado por todos os núcleos, por isso é usado como uma espécie de espaço de armazenamento comum, onde as informações estão disponíveis para todos os segmentos.

A diferença entre os caches L2 e L3 é a parte do compromisso. Os caches são feitos de RAM estática ou SRAM. Isso é diferente da memória RAM dinâmica (DRAM) que compõe sua memória principal. A RAM dinâmica precisa ser "atualizada" periodicamente, ou seja, com o tempo, as células DRAM perdem seu valor, a menos que sejam lidas e reescritas. Seu controlador de memória faz isso automaticamente, mas toda vez que o controlador de memória tem que fazer isso (milhares de vezes por segundo), ele é incapaz de ler / gravar valores para o processador até que seja feito. Isso diminui a DRAM. A SRAM não tem essa limitação, a SRAM manterá seu valor indefinidamente, desde que tenha potência operacional, tornando-a muito mais rápida. Então, seus caches (L2 e L3) são feitos de SRAM. O problema é que a SRAM é muito caro; enquanto 4GB de DRAM de alta velocidade é um pouco caro, mas acessível, 4GB de SRAM está bem além de sua faixa de preço.

Assim, sempre que um fabricante de processador decide adicionar mais SRAM ao projeto, fica visivelmente mais caro. A SRAM vem em várias velocidades e, como você pode esperar, a SRAM mais rápida é mais cara que a SRAM mais lenta. Então, o fabricante do seu processador tentou otimizá-lo para ambos Rapidez e custo usando tanto uma SRAM de velocidade mais alta quanto uma SRAM de velocidade mais baixa. O processador é então projetado de tal forma que ele irá colocar os valores que ele mais precisa no cache mais rápido (L2) e as informações que ele precisa menos em um cache mais lento (L3). Ao gerenciar cuidadosamente essa memória no microcódigo do processador, isso cria um comprometimento: há mais cache e parte do cache (esperançosamente, o cache que o processador mais precisa) é muito rápido.

Assim, para resumir, os processadores têm caches de vários níveis para aumentar a capacidade do cache do processador sem aumentar drasticamente o preço do processador. Essa mistura cuidadosa permite processadores mais rápidos e baratos.


L1 é feito de SRAM, certo? L2 e L3 são feitos de SRAM também, certo? Por que L1 é mais rápido que L2 e L2 é mais rápido que L3? Eu não entendi essa parte ...
Acaz Souza

@AcazSouza O penúltimo parágrafo na resposta explica que existem diferentes velocidades de SRAM, então L2 usa SRAM mais rápida que L3.
PeteUK

1

Caches de vários níveis são basicamente um compromisso entre capacidade e custo de acesso (latência / tempo e energia).

Pode ajudar compará-lo a comprar uma ferramenta. Ir à loja de hardware local (comparável ao cache L1) seria rápido e consumiria menos energia, mas a loja de hardware local é pequena e é mais provável que não tenha a ferramenta específica que se busca. Ir para a grande loja de ferragens (comparável ao cache L2) levará mais tempo e energia (está mais distante e a ferramenta vai demorar mais), mas é mais provável que a ferramenta esteja em estoque. Se mesmo a grande loja de ferragens não tiver a ferramenta, pode-se ir ao armazém do fabricante (comparável à memória principal), o que é quase certo que tenha a ferramenta. Se mesmo o armazém não tiver a ferramenta, espera-se uma espera ainda maior até que a fábrica do fabricante (comparável ao disco) produza mais da ferramenta.

Viver ao lado de uma grande loja de hardware (com um cache L1 muito grande) economizaria tempo se a diversidade de suprimentos de hardware buscada fosse normalmente excelente (alguns processadores PA-RISC voltados para cargas de trabalho comerciais faziam isso), mas normalmente uma pequena diversidade de suprimentos usado para que uma pequena loja local teria muito probabilidade de ter o item em estoque (alta probabilidade de um acerto de cache) e encontrar um item comumente usado é mais rápido em uma loja menor.

Como mencionado jcrawfordor, há algumas vantagens em compartilhar um nível de cache entre vários núcleos, pois ele pode: evitar armazenamento repetitivo do mesmo conteúdo de memória, permitir uso desbalanceado da capacidade de armazenamento (por exemplo, um núcleo pode usar todo o armazenamento L2 com um L2 compartilhado enquanto com cache L2 por núcleo, o núcleo seria restrito ao seu próprio cache L2), e simplificaria e agilizaria a comunicação entre os núcleos (o mesmo L2 seria acessado de qualquer maneira em uma falha L1 e não haveria necessidade de verificar se outros caches L2 tinha os dados).

(Vantagens de compartilhamento semelhantes podem ser aplicadas com relação a uma L2 e caches de dados e instrução L1 separados, mas esse compartilhamento de conteúdo geralmente é evitado (ou seja, uma linha de cache geralmente tem apenas código ou dados) e excluindo ações menos comuns como código de autodigitação e compilação JIT, raramente há comunicação entre um cache de instruções e um cache de dados.)

O compartilhamento tem sobrecarga, no entanto. Pode-se compará-lo a compras em uma loja de departamentos. Quanto mais compradores usarem a loja, maior será a probabilidade de haver uma linha em qualquer estação de checkout (comparável a bancos em um cache L2). Além disso, a entrada / saída compartilhada introduz atrasos (comparáveis ​​aos atrasos de arbitragem para acesso ao cache), fornecendo múltiplas portas que suportam maior produtividade, mas aumenta o tempo necessário para escolher uma porta - a sobrecarga de escolha pode ser extremamente pequena (mas não não). existente) quando ninguém mais está entrando / saindo, mas quando a loja está ocupada, a escolha da porta se torna mais complexa. Se assumirmos que a loja estará ocupada, algum atraso na decisão pode ser evitado; mas apenas usar a porta mais conveniente seria mais rápido se a loja não estivesse ocupada (da mesma forma, um cache poderia levar o tempo extra para alocar um buffer para armazenar as informações de solicitação de memória, mesmo que esse buffer não fosse necessário se o cache não está ocupado - sem essa otimização, se o cache estiver ocupado, as duas etapas de determinar se o cache estava ocupado e alocar uma entrada de buffer ocorreriam em seqüência, portanto, o tempo total seria a soma dos dois, mas se o cache não está ocupado, a etapa de alocação de buffer é evitada).

O compartilhamento também pode aumentar a frequência de falhas de conflito, dada a limitada associatividade de um cache e pode causar escolhas ruins de substituição de cache (por exemplo, um núcleo usando um padrão de acesso de streaming com pouca reutilização de dados tenderia a usar capacidade que outro núcleo com reutilização freqüente de dados teriam maior benefício no uso). Existem técnicas para reduzir essas desvantagens, mas elas adicionam complexidade e outros custos.


0

Os caches mais próximos são muito menores em tamanho. Aqui está um pouco sobre isso , Eu não consigo encontrar nada sobre velocidade, mas é provavelmente limitado (é inútil e caro para passar) para o processador ou a velocidade da placa-mãe.

Existem três níveis de cache de cpu (dois em um único núcleo), RAM (secundário) e discos rígidos (terciário).


0

processador tem cache multinível como l1, l2 e l3.

L1 é o cache mais rápido, mas também mais caro. L2 vem em segundo e discutiu mais. E depois daquela L3 que vem depois da L2.

Quanto mais rápido o cache, mais rápido o processador lê e grava os dados.

Mas as empresas precisam escolher entre o desempenho e as despesas de cada processador, de modo que introduzem o cache multinível nos processadores de acordo com seu preço.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.