Por que o cache L1 é mais rápido que o cache L2?

14

Estou tentando entender por que certas memórias de cache da CPU são mais rápidas que outras. Ao comparar a memória cache com algo como a memória principal, existem diferenças no tipo de memória (SRAM x DRAM) e problemas de localidade (no chip versus necessidade de atravessar um barramento de memória) que podem afetar a velocidade de acesso. Mas L1 e L2 geralmente estão no mesmo chip, ou pelo menos no mesmo dado, e acho que são o mesmo tipo de memória. Então, por que o L1 é mais rápido?

ConditionRacer
fonte
9
Porque é construído dessa maneira.
Ignacio Vazquez-Abrams
Existem várias maneiras de criar o mesmo tipo de RAM. Algumas maneiras resultam em RAM mais rápida que a RAM criada de outras maneiras.
Ignacio Vazquez-Abrams
A mesma razão pela qual a sua DDR RAM mais rápido do que o seu disco rígido ...
hassan789
1
relacionado: minha resposta e a pergunta SO sobre tamanhos de cache também explicam alguns motivos de troca de velocidade / consumo de energia por ter caches de vários níveis. Basicamente, tornar um cache super-rápido custa energia e área da matriz para fazer mais em paralelo e é incompatível com os grandes tamanhos / associatividade que você deseja em um cache de último nível.
Peter Cordes

Respostas:

24

Não, eles não são o mesmo tipo de RAM, mesmo estando no mesmo chip que usa o mesmo processo de fabricação.

De todos os caches, o cache L1 precisa ter o tempo de acesso mais rápido possível (menor latência), em relação à quantidade de capacidade necessária para fornecer uma taxa de "acerto" adequada. Portanto, ele é construído usando transistores maiores e faixas metálicas mais amplas, trocando espaço e energia por velocidade. Os caches de nível superior precisam ter capacidades mais altas, mas podem ser mais lentos, portanto, usam transistores menores que são compactados com mais força.

Dave Tweed
fonte
3
É isso que estou procurando, obrigado. Você conhece alguma fonte boa para ler mais sobre as diferenças?
ConditionRacer
Não, não de imediato. Os detalhes dessas trocas de espaço / energia / tempo, bem como as opções relacionadas à capacidade e arquitetura do cache, estão intimamente ligados aos detalhes proprietários dos processos do fabricante, e muito pouco (se é que há alguma coisa) sobre isso é publicado. Eu só posso falar em termos gerais.
Dave Tweed
10
L1 também é menor, o que significa que a propagação do sinal leva menos ciclos de clock: geralmente o tamanho de L1 é decidido como a maior memória acessível em 1 (ou 2) relógios.
Brian Drummond
6
Além do argumento de Brian Drummond, o L1 também costuma usar o acesso paralelo de tag de dados. Normalmente, o L2 acessa os tags primeiro (determinando qual caminho, se houver algum acerto) e depois os dados, aumentando a latência, mas economizando energia (significativo, devido ao tamanho maior, maior associatividade e maior taxa de erros). (Acesso à L2 também tipicamente começa após uma L1 falta é confirmado que a aumenta a latência eficaz.)
Paul A. Clayton
@BrianDrummond - menor em termos de carga de arame e profundidade do portão (não acho isso óbvio no seu comentário).
Sean Houlihane
5

L1 é geralmente usado como armazenamento para instruções decodificadas, enquanto L2 é um cache geral para um único núcleo. Quanto mais baixo o cache, menor o tamanho e mais rápido o tamanho geralmente. Como regra geral para processadores de PC:

Cache L1: acesso ao ciclo de 2-3 horas

Cache L2: ~ 10 acessos de ciclo de relógio

Cache L3: ~ 20-30 acesso ao ciclo do relógio

O design do cache L1 deve maximizar a taxa de acertos (a probabilidade do endereço de instrução ou endereço de dados desejado estar no cache), mantendo a latência do cache o mais baixa possível. A Intel usa um cache L1 com uma latência de 3 ciclos. O cache L2 é compartilhado entre um ou mais caches L1 e geralmente é muito, muito maior. Enquanto o cache L1 é projetado para maximizar a taxa de acertos, o cache L2 é projetado para minimizar a penalidade de falha (o atraso ocorrido quando uma falha L1 ocorre). Para chips que possuem caches L3, o objetivo é específico ao design do chip. Para a Intel, os caches L3 apareceram pela primeira vez em sistemas de multiprocessador de 4 vias (processadores Pentium 4 Xeon MP) em 2002. Nesse sentido, os caches L3 reduziram bastante os atrasos em ambientes com vários threads e sobrecarregaram o FSB. No momento,

Cite aqui da resposta "Pinhedd".

EasyOhm
fonte
1
L1 também é usado para dados, mas geralmente é verdade que os dados L1 e as instruções L1 são separados enquanto L2 é compartilhado: programmers.stackexchange.com/questions/44731/… (um dos motivos pelos quais eles podem ser compartilhados é que existem mais maneiras )
Guy Sirton
1
É comum que os processadores tenham caches de instruções e dados separados no nível L1. Certamente verdadeiro para os chips x86 e SPARC posteriores. E alguns caches de instruções L1 não armazenam instruções decodificadas. O Pentium 4 armazenou instruções decodificadas, mas a Intel voltou aos caches I regulares e, em seguida, adicionou recentemente caches de instruções decodificados de volta aos seus chips.
Craig S. Anderson
3

Existem várias razões pelas quais a velocidade é inversamente proporcional ao tamanho. A primeira que vem à mente é a dominação física dos condutores, onde a propagação do sinal é limitada a algum fator da velocidade da luz. Uma operação pode levar o tempo necessário para que um sinal elétrico percorra a maior distância dentro do bloco de memória e vice-versa. Outro motivo relacionado é a separação dos domínios do relógio. Cada CPU executa seu próprio gerador de clock, o que permite que a CPU seja executada em relógios de vários GHz. O cache de nível 1 é executado e é sincronizado com o relógio da CPU, que é o mais rápido do sistema. O cache de nível 2, por outro lado, deve atender a muitas CPUs e está sendo executado em um domínio de clock diferente (mais lento). Não apenas o relógio L2 mais lento (bloco maior), mas cruzar o limite do domínio do relógio adiciona outro atraso. É claro que existem os problemas de fan-out (já mencionados).

LR24
fonte
1

Além das características inerentes ao desempenho, a localidade também tem um papel (L1 está mais próximo da CPU). De acordo com o que todo programador deve saber sobre memória :

É interessante notar que, para o cache L2 na matriz, grande parte (provavelmente até a maioria) do tempo de acesso é causada por atrasos na conexão. Essa é uma limitação física que só pode piorar com o aumento do tamanho do cache. Somente o encolhimento do processo (por exemplo, passando de 60nm para Merom a 45nm para Penryn na programação da Intel) pode melhorar esses números.

assilias
fonte
Eu acho que isso se aplica principalmente onde os caches são grandes - isso não se aplica a todos os tipos de processadores (embora o atraso da conexão seja significativo).
Sean Houlihane