Existe uma correspondência entre tamanhos de cache e latência de acesso? Sendo todas as outras coisas iguais, um cache maior opera mais devagar? Se sim, por quê? Quanto mais lento?
microprocessor
cache
latency
ivanmp
fonte
fonte
Respostas:
Os itens em suas mãos são mais rápidos de acessar do que os itens nos bolsos, que são mais rápidos do que os itens do seu armário, que são mais rápidos do que os itens do Digikey. Cada tipo sucessivo de armazenamento que listei é maior, mas mais lento que o anterior.
Então, vamos ter o melhor dos dois mundos, vamos fazer as mãos do tamanho de um armazém Digikey! Não, não funciona, porque agora eles não são mais mãos. Eles são uma bala de canhão pesando seu peso.
A razão pela qual o armazenamento maior é mais lento para acessar é a distância . Armazenamento maior fica mais longe de você, em média. Isso vale para itens físicos e para RAM.
A memória do computador ocupa espaço físico. Por esse motivo, memórias maiores são fisicamente maiores e alguns locais nessa memória estarão fisicamente mais distantes. Coisas que estão longe levam mais tempo para serem acessadas, devido a quaisquer limites de velocidade que existem. No caso de seus bolsos e do Digikey, os limites de velocidade são a velocidade de seus braços e os limites de velocidade na rodovia.
No caso da RAM, os limites de velocidade são a velocidade de propagação de sinais elétricos, o atraso de propagação de portas e drivers e o uso comum de relógios síncronos. Mesmo se o dinheiro não fosse um objeto e você pudesse comprar o quanto quiser da mais rápida tecnologia RAM disponível hoje, não seria capaz de se beneficiar de tudo isso. Disponha uma folha A4 de cache L1, se desejar, e coloque sua CPU no centro. Quando a CPU deseja acessar alguma memória no canto da memória, literalmente levará um nanossegundo para a solicitação chegar e um nanossegundo para que ela volte. E isso não inclui todos os atrasos de propagação, portões e drivers. Isso vai desacelerar seriamente sua CPU de 3GHz.
Como a lógica síncrona é muito mais fácil de projetar do que a lógica assíncrona, um 'bloco' de RAM será sincronizado com o mesmo relógio. Se quiser transformar a memória inteira em um cache L1, você precisará registrar o lote inteiro com um relógio lento para lidar com o pior momento possível do local mais distante da memória. Isso significa que os locais de memória distantes agora estão atrasando os locais, que poderiam ter sido usados com mais frequência. Portanto, a melhor coisa a fazer seria zonear a memória. A seção mais próxima e menor do cache usaria o relógio mais rápido. A próxima seção mais próxima e menor usaria um relógio um pouco mais lento, etc.
E agora você tem caches L1 e L2 e RAM.
O que nos leva à próxima razão, consumo de energia.
O cache realmente consome uma quantidade significativa de energia. Não apenas a memória em si, mas toda a lógica que a envolve, que lida com o mapeamento entre as linhas de cache e a memória principal. Aumentar o desempenho dessa lógica extra pode resultar em um aumento no consumo de energia. Agora, para certos aplicativos (móveis, incorporados), você tem ainda mais incentivo para manter o cache pequeno.
Consulte Compromissos de design de cache para otimização de potência e desempenho: um estudo de caso (Ching-Long Su e Alvin M. Despain, 1995).
fonte
Deixando de fora todos os fatores econômicos / de desempenho / consumo de energia, a resposta para sua pergunta é: depende de muitos fatores micro arquiteturais.
Como exemplo, consulte esta referência - a latência de acesso L1 medida para todos os processadores em teste é de 4 ciclos de clock. As frequências dos processadores são quase as mesmas, mas os tamanhos do cache L1 diferem em até um fator de 3.
O motivo da latência constante de L1 em vários processadores diferentes no teste acima está enraizado na microarquitetura do cache: o próprio acesso ao cache (recuperando dados da memória) leva apenas um único ciclo de clock. Três ciclos adicionais são gastos para decodificar o acesso, verificando a presença de dados e muito mais ... O número de estágios adicionais é o mesmo nos processadores em teste, portanto, as latências de acesso são as mesmas.
Apesar do exemplo acima, não se deve concluir que a latência do cache é independente do tamanho do cache. 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.
Supondo que o cache em questão implementado na SRAM, os módulos que mais afetaram o tamanho do cache são: decodificadores de linha e muxes. No entanto, até os amplificadores sensoriais serão afetados para caches muito grandes: menor oscilação de tensão em uma linha de bits devido à maior capacitância exigirá um amplificador sensor "mais forte". Dito isto, o efeito mais severo na velocidade lógica será adicionado pela capacitância de interconexões de fios - essa capacitância tem mais do que uma dependência linear do tamanho da SRAM. Os detalhes exatos são específicos da implementação.
Agora, os caches L1 são bastante estáveis em suas latências porque seu desempenho é o mais crucial. Se você tentar analisar os caches L2 e L3, a imagem complicará bastante.
A imagem complica muito mais quando você considera os processadores com vários núcleos - eles têm lógica adicional para garantir a coerência do cache . Isso leva a um fator adicional que afeta a latência do acesso ao cache: o histórico de acessos à memória de todos os núcleos.
Sumário
Como você pode ver, sua pergunta está longe de ser trivial e não pode ser respondida completamente. No entanto, se você considerar caches econômicos e de desempenho preferíveis, diria que o tamanho deles não afetará a latência de maneira apreciável.
Para leitores interessados:
Essa referência é uma análise muito profunda dos fatores de desempenho das CPUs modernas. Há muito material relacionado ao cache lá. Requer profundo entendimento da arquitetura de computadores e dos princípios de microarquitetura (como alternativa - um bom resumo dos tópicos que você precisa conhecer para se tornar um profissional nesse campo).
fonte
Engenheiro de teste de cache da CPU aqui - Dave Tweed nos comentários tem as explicações corretas. O cache é dimensionado para maximizar o desempenho no preço esperado da CPU. O cache geralmente é o maior consumidor de espaço do molde e, portanto, seu tamanho faz uma grande diferença econômica (e de desempenho).
Dê uma olhada na página da família de CPUs Ivy Bridge da Intel: http://ark.intel.com/products/codename/29902/Ivy-Bridge
O Xeon topo de linha vem com 30 MB de cache, tem 12 núcleos e custa cerca de US $ 2700. O i3 de extremidade inferior com 3 MB de cache (i3-3217) custa apenas US $ 500 para um laptop inteiro (não consigo encontrá-lo individualmente).
O Xeon oferece o melhor desempenho, mas também custa mais para fabricar e testar. O i3 é muito mais barato, mas o trade-off é um tamanho menor da matriz, do qual o cache é a maior parte.
fonte