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?


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.


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".


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).


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.


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
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.