Onde exatamente os caches L1, L2 e L3 estão localizados no computador?


32

Onde exatamente os caches L1, L2 e L3 estão localizados no computador?

Eu sei, usamos o cache para aumentar o desempenho escolhendo DATA e INSTRUÇÕES do cache, em vez da memória principal.

A seguir estão minhas perguntas

  1. Onde exatamente L1 Cache está localizado? . está no chip da CPU?
  2. Onde exatamente o cache L2 está localizado?

  3. Onde exatamente o cache L3 está localizado? está na placa mãe?

Eu acho que os processadores SMP mais recentes usam caches de três níveis, então eu quero entender a hierarquia de níveis de cache e sua arquitetura.


1
A hierarquia exata varia entre diferentes processadores. Para descobrir a hierarquia de cache em sua própria máquina, você pode usar o utilitário CoreInfo.exe do SysInternal ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )

2
Além disso, quanto maior o cache (L3> L2> 1), mais ele fica localizado a partir do próprio núcleo (a latência de acesso a L3 maior que L1, por exemplo).

Respostas:


48

Vamos começar com isso:

Eu acho que os processadores SMP mais recentes usam caches de três níveis, então eu quero entender a hierarquia de níveis de cache e sua arquitetura.

Para entender caches, você precisa saber algumas coisas:

Uma CPU possui registradores. Valores em que podem ser usados ​​diretamente. Nada é mais rápido.

No entanto, não podemos adicionar registros infinitos ao chip. Essas coisas ocupam espaço. Se aumentarmos o chip, fica mais caro. Parte disso é porque precisamos de um chip maior (mais silício), mas também porque o número de chips com problemas aumenta.

(Imagem de uma bolacha imaginária com 500 cm 2. Cortei 10 fichas, cada uma com 50 cm 2 de tamanho. Uma delas está quebrada. Eu a descarto e deixo 9 fichas de trabalho. Agora pegue a mesma bolacha e corto 100 chips, cada um dez vezes menor. Um deles se quebrado. Eu descarto o chip quebrado e fico com 99 chips em funcionamento. Essa é uma fração da perda que eu teria sofrido. Para compensar a maior chips, eu precisaria pedir preços mais altos. Mais do que apenas o preço do silicone extra)

Essa é uma das razões pelas quais queremos chips pequenos e acessíveis.

No entanto, quanto mais próximo o cache estiver da CPU, mais rápido ele poderá ser acessado.

Isso também é fácil de explicar; Sinais elétricos viajam perto da velocidade da luz. Isso é rápido, mas ainda assim uma velocidade finita. CPU moderna funciona com relógios de GHz. Isso também é rápido. Se eu usar uma CPU de 4 GHz, um sinal elétrico poderá viajar cerca de 7,5 cm por tique do relógio. Isso é 7,5 cm em linha reta. (Chips são tudo menos conexões diretas). Na prática, você precisará significativamente menos do que os 7,5 cm, pois isso não permite tempo para que os chips apresentem os dados solicitados e o sinal retorne.

Resumindo, queremos que o cache seja o mais próximo possível fisicamente. O que significa chips grandes.

Esses dois precisam ser equilibrados (desempenho versus custo).

Onde exatamente estão os caches L1, L2 e L3 localizados em um computador?

Assumindo apenas hardware no estilo PC (os mainframes são bem diferentes, inclusive no desempenho versus o custo);

IBM XT
O original 4.77Mhz one: No cache. CPU acessa a memória diretamente. Uma leitura da memória seguiria esse padrão:

  • A CPU coloca o endereço que deseja ler no barramento de memória e afirma o sinalizador de leitura
  • A memória coloca os dados no barramento de dados.
  • A CPU copia os dados do barramento de dados para seus registros internos.

80286 (1982)
Ainda sem cache. O acesso à memória não era um grande problema para as versões de velocidade mais baixa (6Mhz), mas o modelo mais rápido chegava a 20Mhz e muitas vezes precisava atrasar ao acessar a memória.

Você então obtém um cenário como este:

  • A CPU coloca o endereço que deseja ler no barramento de memória e afirma o sinalizador de leitura
  • A memória começa a colocar os dados no barramento de dados. A CPU aguarda.
  • A memória terminou de obter os dados e agora está estável no barramento de dados.
  • A CPU copia os dados do barramento de dados para seus registros internos.

Esse é um passo extra gasto aguardando a memória. Em um sistema moderno que pode ser facilmente 12 etapas, é por isso que temos cache .

80386 : (1985)
As CPUs ficam mais rápidas. Tanto por relógio como executando em velocidades de clock mais altas.
A RAM fica mais rápida, mas não tanto quanto as CPUs.
Como resultado, são necessários mais estados de espera. Algumas placas-mãe resolvem isso adicionando cache (que seria o cache de nível) na placa-mãe.

Uma leitura da memória agora começa com uma verificação se os dados já estão no cache. Se for, é lido a partir do cache muito mais rápido. Se não for o mesmo procedimento descrito com o 80286

80486 : (1989)
Esta é a primeira CPU desta geração que possui algum cache na CPU.
É um cache unificado de 8 KB, o que significa que é usado para dados e instruções.

Em torno deste tempo ele fica comum colocar 256KB de memória estática rápido na placa-mãe como 2 nd cache de nível. Assim , o cache de nível na CPU, o cache de nível na placa-mãe.

Placa-mãe 486 com localização da CPU e cache de segundo nível marcados

80586 (1993)
O 586 ou Pentium-1 usa um cache de nível 1 dividido. 8 KB cada para dados e instruções. O cache foi dividido para que os caches de dados e instruções pudessem ser ajustados individualmente para seu uso específico. Você ainda tem uma pequena mas muito rápida 1 st esconderijo perto da CPU e um maior, mas mais lento 2 nd cache na placa-mãe. (A uma distância física maior).

Na mesma área de pentium 1, a Intel produziu o Pentium Pro ('80686'). Dependendo do modelo, este chip possui um cache interno de 256Kb, 512KB ou 1MB. Também era muito mais caro, o que é fácil de explicar com a figura a seguir.

Imagem de uma CPU Pentium Pro, modelo de cache de 256 KB

Observe que metade do espaço no chip é usado pelo cache. E isso é para o modelo de 256 KB. Mais cache foi tecnicamente possível e alguns modelos foram produzidos com caches de 512 KB e 1 MB. O preço de mercado para estes era alto.

Observe também que este chip contém dois dados. Um com a CPU real e o cache, e um segundo dado com 256 KB de cache .

Pentium-2

O pentium 2 é um pentium pro core. Por razões de economia no 2 nd cache é na CPU. Em vez disso o que é vendido aa CPU-nos uma PCB com chips separados para CPU (e 1 st cache) e 2 nd cache.

Como avanços de tecnologia e começamos a colocar criar chips com componentes menores que recebe financeiramente possível para colocar o 2 nd volta de cache na matriz CPU real. No entanto, ainda há uma divisão. O cache muito rápido aconchegou-se à CPU. Com um 1 st cache por núcleo da CPU e um menos fast 2 maior, mas nd cache do lado do núcleo.

Imagem de uma 'CPU' pentium 2 (com e sem tampa)

Pentium-3
Pentium-4
Isso não muda para o pentium-3 ou o pentium-4.

Nessa época, chegamos a um limite prático de quão rápido podemos criar clock de CPUs. Um 8086 ou um 80286 não precisava de resfriamento. Um pentium-4 rodando a 3,0 GHz produz tanto calor e usa tanta energia que se torna mais prático colocar duas CPUs separadas na placa-mãe do que uma rápida.

(Duas CPUs de 2,0 GHz usariam menos energia do que uma única CPU idêntica de 3,0 GHz, mas poderiam fazer mais trabalho).

Isso pode ser resolvido de três maneiras:

  1. Torne as CPUs mais eficientes, para que elas trabalhem mais na mesma velocidade.
  2. Use várias CPUs
  3. Use várias CPUs no mesmo 'chip'.

1) É um processo contínuo. Não é novo e não vai parar.

2) Foi realizado desde o início (por exemplo, com duas placas-mãe Pentium-1 e o chipset NX). Até agora, essa era a única opção para construir um PC mais rápido.

3) Requer CPUs onde vários 'núcleos da CPU' são construídos em um único chip. (Em seguida, chamamos essa CPU de CPU de núcleo duplo para aumentar a confusão. Obrigado pelo marketing :)

Atualmente, nos referimos à CPU como um 'núcleo' para evitar confusões.

Agora você recebe chips como o pentium-D (duo), que é basicamente dois núcleos pentium-4 no mesmo chip.

Pentium-D inicial (2 núcleos P4)

Lembra da foto do antigo pentium-Pro? Com o enorme tamanho do cache?
Veja as duas grandes áreas nesta foto?

Acontece que podemos compartilhar que 2 nd cache entre os dois núcleos de CPU. Velocidade iria cair um pouco, mas um 512KiB compartilhado 2 nd cache é muitas vezes mais rápido do que a adição de dois independentes 2 nd nível caches de metade do tamanho.

Isso é importante para sua pergunta.

Isso significa que, se você ler algo de um núcleo da CPU e depois tentar lê-lo de outro núcleo que compartilhe o mesmo cache que você receberá um hit de cache. A memória não precisará ser acessada.

Como os programas migram entre as CPUs, dependendo da carga, do número de núcleos e do planejador, você pode obter desempenho adicional fixando programas que usam os mesmos dados na mesma CPU (ocorrências de cache em L1 e inferiores) ou nas mesmas CPUs que compartilhe o cache L2 (e, portanto, obtenha erros no L1, mas acessa as leituras do cache L2).

Assim, nos modelos posteriores, você verá caches compartilhados de nível 2.

Imagem de uma CPU Core2 aberta

Se você estiver programando para CPUs modernas, terá duas opções:

  1. Nao ligue. O sistema operacional deve ser capaz de agendar as coisas. O agendador tem um grande impacto no desempenho do computador e as pessoas gastaram muito esforço para otimizar isso. A menos que você faça algo estranho ou esteja otimizando para um modelo específico de PC, é melhor ter o agendador padrão.
  2. Se você precisar de todos os últimos detalhes de desempenho e um hardware mais rápido não for uma opção, tente deixar as etapas que acessam os mesmos dados no mesmo núcleo ou em um núcleo com acesso a um cache compartilhado.


Percebo que ainda não mencionei o cache L3, mas eles não são diferentes. Um cache L3 funciona da mesma maneira. Maior que L2, mais lento que L2. E é frequentemente compartilhado entre núcleos. Se estiver presente, é muito maior que o cache L2 (caso contrário, não faria sentido) e é frequentemente compartilhado com todos os núcleos.

modernCPUwithL3.png


Que ótimo artigo!
Lukas.pukenis

"mas um segundo cache compartilhado de 512 MB é" Eu acho que é 512 KB.
Lukas.pukenis

uma resposta tão excelente! obrigado por compartilhar o homem #
2833 samsamara

14

Esses caches são internos do processador. Alguns são compartilhados entre núcleos, outros são individuais, dependem da implementação. Mas todos eles estão localizados no chip. Alguns detalhes: Processador Intel Intel® Core ™ i7, aqui :

  • Uma instrução de 32 KB e cache de primeiro nível (L1) de dados de 32 KB para cada núcleo
  • Um cache de segundo nível (L2) de instrução / dados compartilhado de 256 KB para cada núcleo
  • Cache de último nível (L3) de instrução / dados compartilhado de 8 MB, compartilhado entre todos os núcleos

Foto do chip do processador (desculpe, não sei o modelo exato). Você pode ver que o cache ocupa uma área significativa no chip:

texto alternativo


1
Se por chip você quer dizer matriz de silício, o último nível de cache pode estar fora do chip. Por exemplo, o zEC12 da IBM ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) usa um módulo multichip com seis chips de processador e dois chips de cache compartilhado com cache L4. O Crystal Well da Intel também fornece um cache off-chip L4 (também usando eDRAM).
Paul A. Clayton

5

O cache está quase sempre no chip para acesso mais rápido. Aqui está um belo diagrama que mostra uma matriz de CPU Intel quad-core com o cache L3 destacado. Quando você olha imagens como esta de uma matriz de CPU, grandes áreas uniformes são tipicamente bancos de memória no chip usados ​​como cache.

Nehalem Die (http://www.legitreviews.com/article/824/1/)


5

Atualmente, os caches estão todos no dado da CPU. Eles costumavam estar localizados na placa-mãe ou na placa-mãe da CPU, mas não acho que existam processadores atuais que usem caches de chip.


1
+1 para a parte destes dias . Nos velhos tempos era diferente. (por exemplo, cache L2 na placa-mãe na hora Cyrix / Pentium-1)
Hennes

0

Não tenho certeza sobre o L3, mas L1 / L2 está sempre localizado na CPU. Em termos hierárquicos, basicamente, L1 é geralmente o cache de instruções, L2 e L3 são caches de dados.


L1 pode ser cache compartilhado (cache de instruções e dados). Também existem CPUs com dados L1 e cache de instruções L1. E o cache L2 nem sempre está localizado na CPU (mesmo o L1 não precisa estar na CPU, mas eu lembro apenas de um computador em que esse era o caso).
Hennes

0

L1 está localizado no chip da CPU, L2 está localizado entre o processador e a memória principal, mas há um ponto em saber que em algum sistema L2 está localizado no chip da CPU, enquanto em outro sistema L2 está localizado na própria placa-mãe e L3 está constantemente localizado no chip da placa principal.

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.