Existe uma correspondência entre o tamanho do cache e a latência de acesso?


9

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?


11
Se você estiver interessado em explorar algumas vantagens e desvantagens no design de cache, a HP desenvolveu a ferramenta CACTI, que fornece estimativas de latência e uso de energia com base nas características do design. Uma interface da web para a versão 5.3 também está disponível .
Paul A. Clayton

Respostas:


5

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).


11
+1 Gostei da sua resposta. Atinge todos os pontos relevantes e faz o backup também. Fácil de ler
Gustavo Litovsky 20/09/2013

Isso está certo? A resposta tem como premissa o atraso na velocidade da luz de uma polegada versus várias polegadas?
Andyz Smith

11
Esta resposta é boa como uma visão geral, mas suspeito que não responda à pergunta inicial. Não se deve ser um especialista do uArch para perceber que o cache de tamanho A4 não é prático. Acredito que o OP perguntou sobre algum aumento razoável no tamanho do cache e como esse aumento afetará a latência do acesso ao cache.
21813 Vasiliy

11
@AndyzSmith - É um exagero grosseiro e simplificação excessiva, mas acho que é o ponto geral, que em algum momento o cache L1 não pode ser aumentado indefinidamente. Em algum momento, as leis da física entram e diminuem a velocidade.
precisa saber é o seguinte

O atraso de um sinal no chip não é a velocidade da luz, é um valor mais complicado calculado considerando-se a rede / fio mais a capacitância da porta acionada como uma rede RLC. Não é longo o suficiente para ser uma linha de transmissão. Quanto maior a rede, maior será o portão de acionamento ou você precisará inserir buffers como repetidores. Tudo isso também consome mais energia.
Pjc50

4

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).


Obrigado pela resposta! As respostas de vocês e @ Rocketmagnet são praticamente complementares. Espero poder escolher os dois. Eu já tenho minha cópia da referência citada e tenho me interessado muito no tópico recentemente, daí a pergunta.
ivanmp

por que a lógica para executar uma operação de leitura depende do tamanho do cache. Por que "se torna muito longo" em que número específico de endereço há um salto discreto? ou se nenhum salto discreto, qual é a fórmula para tempo de acesso versus tamanho?
Andyz Smith

você pode ser específico sobre qual componente: "A recorrência crítica, então, é um somador, um decodificador, a linha de palavras SRAM, as linhas de bits SRAM, o (s) bit (s) SRAM, o (s) amplificador (s) de sentido (s), os muxes de direção de bytes e o desvio muxes ". faz com que a lógica se torne grande? pt.wikipedia.org/wiki/Sum_addressed_decoder #
Andyz Smith

@AndyzSmith, a fórmula do tempo de acesso versus tamanho só pode ser dada por alguém que cria e simula o cache. Na referência que publiquei, você pode ver que são necessários quatro ciclos de clock para obter dados de L1, mas ninguém tenta estimar as folgas associadas a essas leituras. Solicitar uma fórmula não é uma questão prática, sem muitas informações adicionais sobre a implementação.
21713 Vasiliy

11
@AndyzSmith, assumindo 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 -> 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. Novamente, os detalhes são específicos da implementação.
21713 Vasiliy

3

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.


2
Resposta muito interessante. Mas, como afirmei na pergunta, não estou procurando a resposta econômica e óbvia. O que estou tentando entender está relacionado ao desempenho envolvido no acesso a um cache muito grande (> 512 MB). O tamanho degradaria o desempenho do cache?
ivanmp
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.