Por que o tamanho do cache L1 não aumentou muito nos últimos 20 anos?


35

O Intel i486 possui 8 KB de cache L1. O Intel Nehalem possui um cache de instruções L1 de 32 KB e um cache de dados L1 de 32 KB por núcleo.

A quantidade de cache L1 não aumentou quase na taxa em que a taxa de clock aumentou.

Por que não?


Você está comparando maçãs com laranjas. As taxas de clock aumentaram, mas não há correlação com a necessidade de mais cache. Só porque você pode fazer algo mais rápido, não significa que você se beneficia de um balde maior.
Keltari

O excesso de cache e a sobrecarga de gerenciamento podem tornar o sistema lento. Eles encontraram o ponto ideal e lá permanecerá.
Fiasco Labs

Respostas:


17

30K de texto da Wikipedia não são tão úteis quanto uma explicação de por que um cache muito grande é menos ideal. Quando o cache fica muito grande, a latência para encontrar um item no cache (levando em consideração erros de cache) começa a se aproximar da latência de procurar o item na memória principal. Não sei quais proporções os projetistas de CPU pretendem, mas acho que é algo análogo à diretriz 80-20: Você gostaria de encontrar os dados mais comuns no cache 80% das vezes, e os outros 20 % do tempo você terá que ir para a memória principal para encontrá-lo. (ou quaisquer que sejam as proporções pretendidas pelos projetistas de CPU).

EDIT: Eu tenho certeza que não chega nem perto de 80% / 20%, então substitua X e 1-X. :)


6
"Quando o cache fica muito grande, a latência para encontrar um item no cache (considerando erros de cache) começa a se aproximar da latência de procurar o item na memória principal." Você tem certeza disso? Por exemplo, dobrar a quantidade de RAM instalada certamente não aumentará sua latência. Por que isso seria verdade para o cache? E também, por que o cache L2 aumentaria com as novas CPUs, se isso é um problema? Não sou especialista nisso, eu realmente quero saber :)
sYnfo

2
Eu havia preparado uma descrição grande e longa do armazenamento em cache no software e medido quando o cache superou a si próprio e deveria ser descartado / reconstruído, mas então decidi que seria melhor admitir que não sou designer de hardware. :) Em ambos os casos, suspeito que a resposta possa ser resumida pela lei dos retornos decrescentes. Ou seja, mais nem sempre é melhor.
JMD

3
Da minha longa história de mexer com hardware em níveis baixos, mas na verdade não sendo um designer, eu diria que a latência parece estar relacionada a quantas maneiras o cache é associativo, não ao tamanho. Meu palpite é que os transistores extras que iriam para o cache provaram ser mais eficazes em outros lugares do desempenho geral.
Brian Knoblauch

1
@JMD, no entanto, eu estaria interessado nessa descrição;) Embora os comentários provavelmente não sejam o melhor lugar para isso, é verdade. @ Brian Então, se eu entendi direito, eles decidiram colocar menos transistores no cache L1 e ao mesmo tempo colocar muito mais no L2, o que é significativamente mais lento? Por favor, não tomar nenhuma ofensa, eu sou apenas um curioso :)
sYnfo

10

Um fator é que as buscas L1 iniciam antes que as traduções TLB sejam concluídas, a fim de diminuir a latência. Com um cache suficientemente pequeno e alto o suficiente, os bits de índice para o cache serão os mesmos entre os endereços virtuais e físicos. Isso provavelmente diminui o custo de manter a coerência da memória com um cache fisicamente indexado e com etiqueta física.


1
resposta mais interessante :)
GameDeveloper

1
Acredito que esse seja o motivo, mas deixe-me dar o número. O tamanho da página na arquitetura x86 é 4096 bytes. O cache deseja escolher o intervalo de cache no qual procurar a entrada da linha de cache (64 bytes) antes da conclusão da tradução da página. Seria caro ter que decidir entre muitas entradas em um balde, para que cada balde tenha apenas 8 entradas. Como resultado, nos últimos dez anos, todos os caros cpus x86 têm exatamente 32768 bytes (512 linhas de cache) em seu cache de dados L1.
b_jonas

Como isso é tão difícil de aumentar, os cpus adicionam um nível intermediário de cache; portanto, temos caches L2 e L3 separados agora. Além disso, o cache de código L1 e o cache de dados L1 são separados, porque a CPU sabe se está acessando código ou dados.
b_jonas

8

O tamanho do cache é influenciado por vários fatores:

  1. Velocidade dos sinais elétricos (deve ser, se não a velocidade da luz, algo da mesma ordem de magnitude):

    • 300 metros em um microssegundo.
    • 30 centímetros em um nanossegundo.
  2. Custo econômico (circuitos em diferentes níveis de cache podem ser diferentes e determinados tamanhos de cache podem não ser úteis)

    • A duplicação do tamanho do cache não duplica o desempenho (mesmo que a física permita que esse tamanho funcione) para tamanhos pequenos, a duplicação oferece muito mais que o dobro do desempenho, para tamanhos grandes, a duplicação do tamanho do cache quase não oferece desempenho extra.
    • Na wikipedia, você pode encontrar um gráfico mostrando, por exemplo, quão indigno está tornando os caches maiores que 1 MB (existem caches realmente maiores, mas você deve manter em conta que esses são núcleos de multiprocessador).
    • Para caches L1, deve haver alguns outros gráficos (que os fornecedores não mostram) que tornam conveniente o tamanho de 64 Kb.

Se o tamanho do cache L1 não mudou após 64kb, é porque não valia mais. Observe também que agora existe uma "cultura" maior sobre o cache e muitos programadores escrevem códigos "compatíveis com o cache" e / ou usam instruções pré-técnicas para reduzir a latência.

Tentei uma vez criar um programa simples que estava acessando locais aleatórios em uma matriz (de vários MegaBytes): esse programa quase congelou o computador porque, para cada leitura aleatória, uma página inteira era movida da RAM para o cache e, uma vez que isso era feito com muita frequência, tão simples O programa estava esgotando toda a largura de banda, deixando poucos recursos para o sistema operacional.


6

Acredito que pode ser resumido simplesmente afirmando que quanto maior o cache, mais lento será o acesso. Portanto, um cache maior simplesmente não ajuda, pois o cache foi projetado para reduzir a comunicação lenta do barramento com a RAM.

Como a velocidade do processador tem aumentado rapidamente, o cache do mesmo tamanho deve executar cada vez mais rápido para acompanhá-lo. Portanto, os caches podem ser significativamente melhores (em termos de velocidade), mas não em termos de armazenamento.

(Eu sou um cara de software, espero que isso não seja lamentavelmente errado)


3

Do cache L1 :

O cache de nível 1, ou cache primário, está na CPU e é usado para armazenamento temporário de instruções e dados organizados em blocos de 32 bytes. O cache primário é a forma mais rápida de armazenamento. Como está embutido no chip com uma interface de estado de espera zero (atraso) para a unidade de execução do processador, seu tamanho é limitado .

A SRAM usa dois transistores por bit e pode armazenar dados sem assistência externa, desde que seja fornecida energia ao circuito. Isso é contrastado com a RAM dinâmica (DRAM), que deve ser atualizada várias vezes por segundo para manter o conteúdo dos dados.

O processador P55 MMX da Intel, lançado no início de 1997, destacou-se pelo aumento no tamanho do seu cache de Nível 1 para 32 KB. Os chips AMD K6 e Cyrix M2 lançados no final daquele ano aumentaram ainda mais a aposta, fornecendo caches de nível 1 de 64 KB. 64Kb permaneceu o tamanho padrão do cache L1, embora vários processadores com vários núcleos possam utilizá-lo de maneira diferente.

EDIT: Observe que esta resposta é de 2009 e as CPUs evoluíram enormemente nos últimos 10 anos. Se você chegou a este post, não leve todas as nossas respostas aqui muito a sério.


Uma célula SRAM típica é composta de seis MOSFETs. Cada bit em uma SRAM é armazenado em quatro transistores (M1, M2, M3, M4) que formam dois inversores de acoplamento cruzado. Fonte Segunda fonte
lukecampbell

Esta é apenas uma descrição da situação e não explica nada sobre o porquê.
Eonil 23/01

@Eonil - Não poderíamos fornecer a resposta "por que" se quiséssemos. No entanto, retornos decrescentes no desempenho são uma explicação razoável viável. Quando a pergunta foi escrita há quase uma década, era muito mais caro aumentar o tamanho sem incluir um impacto no desempenho. Essa resposta tentou, no mínimo, responder à pergunta pretendida que foi feita.
Ramhound 23/01

-4

Na verdade, o tamanho do cache L1 é o maior gargalo de velocidade nos computadores modernos. Os tamanhos de cache L1 pateticamente minúsculos podem ser o ponto alto do preço, mas não o desempenho. O cache L1 pode ser acessado em frequências de GHz, o mesmo que nas operações do processador, ao contrário do acesso à RAM 400x mais lento. É caro e difícil de implementar no projeto bidimensional atual, no entanto, é tecnicamente factível, e a primeira empresa que faz isso com sucesso terá computadores 100 vezes mais rápidos e ainda funcionando legal, algo que produziria grandes inovações em muitos atualmente são acessíveis apenas através de configurações ASIC / FPGA caras e difíceis de programar. Algumas dessas questões estão relacionadas a questões de propriedade intelectual / propriedade intelectual e ganância corporativa que se estendem por décadas, onde um grupo insignificante e ineficaz de engenheiros é o único com acesso ao funcionamento interno, e a quem são dadas ordens marcantes para espremer o absurdo protecionista ofuscado e econômico. A pesquisa excessivamente privatizada sempre leva a uma estagnação ou limitação tecnológica (como vimos no setor aeroespacial e de automóveis pelos grandes fabricantes e em breve será farmacêutico). A regulamentação de patentes e segredos comerciais de código aberto e mais sensata que beneficia os inventores e o público (em vez dos chefes e acionistas da empresa) ajudaria muito aqui. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. e quem recebe ordens de marcha para espremer as bobagens protecionistas ofuscadas e econômicas. A pesquisa excessivamente privatizada sempre leva a uma estagnação ou limitação tecnológica (como vimos no setor aeroespacial e de automóveis pelos grandes fabricantes e em breve será farmacêutico). A regulamentação de patentes e segredos comerciais de código aberto e mais sensata que beneficia os inventores e o público (em vez dos chefes e acionistas da empresa) ajudaria muito aqui. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. e quem recebe ordens de marcha para espremer as bobagens protecionistas ofuscadas e econômicas. A pesquisa excessivamente privatizada sempre leva a uma estagnação ou limitação tecnológica (como vimos no setor aeroespacial e de automóveis pelos grandes fabricantes e em breve será farmacêutico). A regulamentação de patentes e segredos comerciais de código aberto e mais sensata que beneficia os inventores e o público (em vez dos chefes e acionistas da empresa) ajudaria muito aqui. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. A pesquisa excessivamente privatizada sempre leva a uma estagnação ou limitação tecnológica (como vimos no setor aeroespacial e de automóveis pelos grandes fabricantes e em breve será farmacêutico). A regulação de patentes e segredos comerciais mais sensata e de código aberto que beneficia os inventores e o público (em vez dos chefes e acionistas da empresa) ajudaria muito aqui. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. A pesquisa excessivamente privatizada sempre leva a uma estagnação ou limitação tecnológica (como vimos no setor aeroespacial e de automóveis pelos grandes fabricantes e em breve será farmacêutico). A regulação de patentes e segredos comerciais mais sensata e de código aberto que beneficia os inventores e o público (em vez dos chefes e acionistas da empresa) ajudaria muito aqui. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos. Deveria ser um acéfalo para o desenvolvimento criar caches L1 muito maiores, e isso deveria e poderia ter sido desenvolvido décadas atrás. Estaríamos muito mais à frente nos computadores e em muitos campos científicos, se os tivéssemos.

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.