O que torna a memória cache da CPU muito mais rápida que a memória principal? Eu posso ver alguns benefícios em um sistema de cache em camadas. Faz sentido que um cache menor seja mais rápido para pesquisar. Mas deve haver mais do que isso.
O que torna a memória cache da CPU muito mais rápida que a memória principal? Eu posso ver alguns benefícios em um sistema de cache em camadas. Faz sentido que um cache menor seja mais rápido para pesquisar. Mas deve haver mais do que isso.
Respostas:
No caso de um cache de CPU, é mais rápido porque está no mesmo dado que o processador. Em outras palavras, os dados solicitados não precisam ser transferidos para o processador; já está lá.
No caso do cache em um disco rígido, é mais rápido porque está na memória de estado sólido e ainda não está nos pratos rotativos.
No caso do cache em um site, é mais rápido porque os dados já foram recuperados do banco de dados (que, em alguns casos, podem estar localizados em qualquer lugar do mundo).
Então é principalmente sobre localidade . O cache elimina a etapa de transferência de dados .
A localidade é uma maneira elegante de dizer dados "próximos", no tempo ou no espaço. O armazenamento em cache com uma memória menor, mais rápida (mas geralmente mais cara) funciona, porque normalmente uma quantidade relativamente pequena dos dados gerais é aquela que está sendo acessada com mais frequência.
Cache de leitura adicional
(computação) na Wikipedia
É mais rápido porque está mais próximo e porque é SRAM e não DRAM.
A SRAM é e pode ser consideravelmente mais rápida que a DRAM; os valores são mantidos estaticamente (o S na S RAM), para que eles não precisem ser atualizados, o que tira os ciclos. A DRAM é dinâmica, como pequenas baterias recarregáveis, você precisa recarregar regularmente as baterias para que elas não sejam drenadas e se tornem zeros. Isso rouba o tempo do ciclo, além de como você precisa acessar os bits, etc.
Estar no mesmo molde ou mais próximo do processador reduz a viagem de ida e volta, tanto L1 quanto L2 são mais rápidos que DRAM de uma perspectiva de acesso.
O acesso à SRAM é mais rápido do que o DRAM leva maçãs às maçãs, e os caches geralmente estão no chip ou mais próximos ou em barramentos mais rápidos que o DRAM, tornando o tempo de acesso mais rápido também.
Uma coisa que deve ser mencionada explicitamente é o impacto da velocidade da luz. Em este vídeo Grace Hopper mostra um pedaço de arame cerca de um pé de comprimento, que é o quão longe um sinal elétrico pode viajar em um nanosegundo *. Se uma CPU estiver operando em 3GHz, isso implica uma distância de 4 "por ciclo de clock. Esse é um limite físico rígido nas velocidades de acesso à memória. Isso é uma grande parte do motivo pelo qual estar perto da CPU (como o cache L1) permite: memória para ser mais rápida.
EDIT * Na verdade, o quão longe a luz pode viajar no vácuo, a distância através do cobre / silício é menor.
Outras respostas já cobriram todos os bits relevantes: localidade (e o custo de transferência de dados associado, largura do barramento e relógio, etc.); velocidade da luz (novamente, associada a custos de transferência e largura e taxa de transferência de barramento); tecnologia de memória diferente (SRAM vs.DRAM). Tudo isso visto à luz do equilíbrio custo / desempenho .
Um pouco foi deixado de fora e é apenas mencionado no comentário de Darkhogg: caches maiores têm melhores taxas de acerto, mas latência mais longa. Vários níveis de cache foram introduzidos também para tratar dessa troca.
Há uma excelente pergunta e resposta sobre este ponto na eletrônica SE
A partir das respostas, parece-me que um ponto a ser destacado é: a lógica que executa todas as operações necessárias para uma leitura de cache não é tão simples (especialmente se o cache for associativo a conjuntos, como a maioria dos caches atualmente). Requer portões e lógica. Portanto, mesmo se excluirmos o custo e o espaço
Se alguém tentasse implementar um cache L1 ridiculamente grande, a lógica que executa todas as operações necessárias para uma leitura de cache também se tornaria grande. Em algum momento, o atraso de propagação em toda essa lógica seria muito longo e as operações que haviam tomado apenas um único ciclo de clock teriam que ser divididas em vários ciclos de clock. Isso aumentará a latência.
Há muitos pontos positivos levantados nas outras respostas, mas um fator parece estar faltando: latência de decodificação de endereço.
A seguir, é apresentada uma simplificação excessiva de como funciona a decodificação de endereços de memória, mas fornece uma boa idéia do motivo pelo qual os chips DRAM grandes geralmente são muito lentos.
Quando o processador precisa acessar a memória, envia um comando ao chip de memória para selecionar a palavra específica que deseja usar. Este comando é chamado de Seleção de Endereço de Coluna (ignoraremos os endereços de linha por enquanto). O chip de memória agora precisa ativar a coluna solicitada, enviando o endereço por uma cascata de portas lógicas para criar uma única gravação que se conecte a todas as células da coluna. Dependendo de como é implementado, haverá um certo atraso para cada bit de endereço até que o resultado saia do outro lado. Isso é chamado de latência CAS da memória. Como esses bits precisam ser examinados sequencialmente, esse processo leva muito mais tempo do que um ciclo do processador (que geralmente possui apenas alguns transistores em sequência para aguardar). Também leva muito mais tempo que um ciclo de barramento (que geralmente é algumas vezes mais lento que um ciclo de processador). É provável que um comando CAS em um chip de memória típico assuma a ordem de 5ns (IIRC - já faz um tempo desde que eu analisei os tempos), que é mais do que uma ordem de magnitude mais lenta que um ciclo de processador.
Felizmente, dividimos os endereços em três partes (coluna, linha e banco), o que permite que cada parte seja menor e processe essas partes simultaneamente, caso contrário, a latência seria ainda maior.
O cache do processador, no entanto, não possui esse problema. Além de ser muito menor, a tradução de endereços é um trabalho mais fácil; na verdade, não é necessário traduzir mais do que um pequeno fragmento do endereço (em algumas variantes, nada disso), porque é associativo. Isso significa que, ao lado de cada linha de memória em cache, existem células de memória extras que armazenam parte (ou todo) do endereço. Obviamente, isso torna o cache ainda mais caro, mas significa que todas as células podem ser consultadas para ver se elas têm a linha específica de memória que queremos simultaneamente e, em seguida, a única (espero) que tenha os dados corretos fará o despejo. em um barramento que conecta toda a memória ao núcleo do processador principal. Isso acontece em menos de um ciclo, porque é muito mais simples.
Uma das filosofias que estudei foi o movimento obter-máximo-throughput-no-mínimo-hardware quando falamos sobre qualquer memória baseada em cache, seja cache da CPU, cache do buffer ou cache da memória para esse fim. O motivo básico é alcançado quando há menos ou nenhum movimento de hardware para recuperar / ler / gravar dados e a operação é concluída mais rapidamente.
Os dados são transferidos do disco -> memória principal (RAM) (armazenamento temporário) -> cache da CPU (armazenamento temporário menor próximo à CPU para dados acessados com freqüência) -> CPU (processamento).
O cache da CPU é um espaço de memória menor e mais rápido, que armazena cópias dos dados dos locais de memória principal usados mais recentemente.
O cache do buffer é uma área de memória principal que armazena cópias dos dados dos locais de disco usados mais recentemente.
O cache do navegador é um diretório ou espaço semelhante que armazena cópias dos dados dos sites visitados mais recentemente pelos usuários.
Referência: Como funciona a memória do computador