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

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

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

Eu sei, usamos o Cache para aumentar o desempenho escolhendo DADOS e INSTRUÇÕES do Cache em vez da Memória Principal.

A seguir estão minhas perguntas

  1. Onde exatamente o cache L1 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?

Acho que os processadores SMP mais recentes usam caches de 3 níveis, então quero entender a hierarquia do nível de cache e sua arquitetura.

Responder1

Vamos começar com isso:

Acho que os processadores SMP mais recentes usam caches de 3 níveis, então quero entender a hierarquia do nível de cache e sua arquitetura.

Para entender os caches você precisa saber algumas coisas:

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

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

(Imagine um wafer imaginário com 500 cm 2 . Cortei 10 chips dele, cada chip com 50cm 2 de tamanho. Um deles está quebrado. Descarto-o e sobram 9 chips funcionais. Agora pegue o mesmo wafer e cortei 100 fichas dele, cada uma delas dez vezes menor. Se uma delas estiver quebrada, descarto a ficha quebrada e fico com 99 fichas funcionais. Isso é uma fração da perda que eu teria de outra forma. chips, eu precisaria pedir preços mais altos, mais do que apenas o preço do silício extra).

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

Porém, quanto mais próximo o cache estiver da CPU, mais rápido ele poderá ser acessado.

Isto também é fácil de explicar; Os sinais elétricos viajam perto da velocidade da luz. Isso é rápido, mas ainda é uma velocidade finita. CPU moderna funciona com clocks 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 clock. Isso é 7,5 cm em linha reta. (Os chips são tudo menos conexões diretas). Na prática você vai precisar de bem menos que esses 7,5 cm, pois isso não dá tempo para os chips apresentarem os dados solicitados e para o sinal voltar.

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

Esses dois precisam ser equilibrados (desempenho versus custo).

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

Assumindo apenas hardware estilo PC (mainframes são bem diferentes, inclusive no equilíbrio entre desempenho e custo);

IBMXT
O original de 4,77 MHz: sem cache. A CPU acessa a memória diretamente. Uma leitura da memória seguiria este padrão:

  • A CPU coloca o endereço que deseja ler no barramento de memória e ativa 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 menor velocidade (6Mhz), mas o modelo mais rápido rodava até 20Mhz e muitas vezes precisava atrasar o acesso à 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 ativa o sinalizador de leitura
  • A memória começa a colocar os dados no barramento de dados. A CPU espera.
  • A memória terminou de receber os dados e agora está estável no barramento de dados.
  • A CPU copia os dados do barramento de dados para seus registros internos.

Essa é uma etapa extra gasta esperando pela memória.Em um sistema moderno, isso pode facilmente ter 12 etapas, e é por isso que temos cache.

80386: (1985)
As CPUs ficam mais rápidas. Tanto por clock quanto 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 contornam isso adicionando cache (que seria o cache de primeiro 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, será lido no cache muito mais rápido. Se não for o mesmo procedimento descrito com o 80286

80486: (1989)
Este é o primeiro 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.

Nessa época é comum colocar 256KB de memória estática rápida na placa-mãe como cache de 2º nível . Assim, cache de 1º nível na CPU, cache de 2º nível na placa-mãe.

Placa-mãe 486 com localização de CPU e cache de 2º 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 um primeiro cache pequeno, mas muito rápido, próximo à CPU, e um segundo cache maior, porém mais lento, na placa-mãe. (A uma distância física maior).

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

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

Observe que metade do espaço do chip é usado pelo cache. E isso é para o modelo de 256 KB. Mais cache era 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 duas matrizes. Um com a CPU real e o primeiro cache, e um segundo dado com o segundo cache de 256 KB .

Pentium-2

O Pentium 2 é um Pentium Pro Core. Por razões de economia, não há segundo cache na CPU. Em vez disso, o que é vendido como CPU é um PCB com chips separados para CPU (e 1º cache ) e 2º cache .

À medida que a tecnologia avança e começamos a criar chips com componentes menores, torna-se financeiramente possível colocar o segundo cache de volta no chip real da CPU. No entanto, ainda há uma divisão. Primeiro cache muito rápido acoplado à CPU. Com um primeiro cache por núcleo de CPU e um segundo cache maior, mas menos rápido, próximo ao núcleo.

Imagem de um 'CPU' Pentium 2 (com e sem tampa)

Pentium-3
Pentium-4
Isto não muda para o Pentium-3 ou Pentium-4.

Nessa época, atingimos um limite prático de quão rápido podemos acelerar as CPUs. Um 8086 ou 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 dois CPUs separados na placa-mãe em vez de um rápido.

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

Isso poderia ser resolvido de três maneiras:

  1. Torne as CPUs mais eficientes, para que 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 feito no início (por exemplo, com placas-mãe Pentium-1 duplas e 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 de CPU' são integrados em um único chip. (Chamamos então essa CPU de CPU dual core para aumentar a confusão. Obrigado, marketing :))

Hoje em dia nos referimos à CPU apenas como “núcleo” para evitar confusão.

Agora você obtém chips como o Pentium-D (duo), que consiste basicamente em dois núcleos Pentium-4 no mesmo chip.

Pentium-D antigo (2 núcleos P4)

Lembra da foto do antigo Pentium-Pro? Com o enorme tamanho do cache?
Veja odoisgrandes áreas nesta imagem?

Acontece que podemos compartilhar esse segundo cache entre os dois núcleos da CPU. A velocidade cairia um pouco, mas um segundo cache compartilhado de 512 KB é geralmente mais rápido do que adicionar dois caches independentes de segundo nível com 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 compartilha o mesmo cache, você obterá um acerto de cache. A memória não precisará ser acessada.

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

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

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 coisas. O agendador tem um grande impacto no desempenho do computador e as pessoas têm se esforçado muito para otimizá-lo. A menos que você faça algo estranho ou esteja otimizando para um modelo específico de PC, é melhor usar o agendador padrão.
  2. Se você precisa de todo o desempenho e hardware mais rápido não é uma opção, tente deixar os passos que acessam os mesmos dados no mesmo núcleo ou em um núcleo com acesso a um cache compartilhado.


Sei 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 muitas vezes é compartilhado entre núcleos. Se estiver presente, é muito maior que o cache L2 (caso contrário, não faria sentido tê-lo) e geralmente é compartilhado com todos os núcleos.

CPU moderna com L3.png

Responder2

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

  • Uma instrução de 32 KB e um cache de primeiro nível (L1) de dados de 32 KB para cada núcleo
  • Um cache de segundo nível (L2) de instruções/dados compartilhados de 256 KB para cada núcleo
  • Cache de último nível (L3) de instruções/dados compartilhados 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

Responder3

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

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

Responder4

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

informação relacionada