Por que o tempo de acesso à RAM (qualquer tipo) diminui tão lentamente?

22

Este artigo mostra que o SDRAM DDR4 possui aproximadamente 8x mais SDRAM DDR1 de largura de banda. Mas o tempo entre a configuração do endereço da coluna e a disponibilidade dos dados diminuiu apenas 10% (13,5ns). Uma pesquisa rápida mostra que o tempo de acesso do mais rápido assíncrono. SRAM (18 anos) é 7ns. Por que o tempo de acesso à SDRAM diminuiu tão lentamente? A razão é econômica, tecnológica ou fundamental?

Arseniy
fonte
1
Outra razão possível seria que simplesmente não é tão necessário?
Sebastiaan van den Broek
Por exemplo, é necessário um tempo de acesso baixo para tornar a pesquisa de dados na memória mais rápida.
Arseniy
Sei que a velocidade extra é sempre boa, mas, do ponto de vista do desenvolvedor de software, talvez comparado a todas as outras IO e arquitetura (incluindo microsserviços que podem literalmente ser executados em diferentes data centers), a velocidade da RAM não é um gargalo. não mais. Às vezes, 'bom o suficiente' é bom, ou pelo menos não garante que a pesquisa e o desenvolvimento extras apressem. Eu consideraria acrescentar isso como uma possível razão na sua pergunta.
Sebastiaan van den Broek
1
De acordo com a Wikipedia, a DDR3-2200 possui uma latência da Primeira Palavra de 6,36 ns, ou seja, quanto tempo leva para que um sinal se propague em torno de 3 pés no FR4, eu diria que estamos muito próximos dos limites físicos
Mark Omo

Respostas:

33

É porque é mais fácil e barato aumentar a largura de banda da DRAM do que diminuir a latência. Para obter os dados de uma linha aberta de ram, é necessária uma quantidade não trivial de trabalho.

O endereço da coluna precisa ser decodificado, os muxes que selecionam quais linhas acessar precisam ser direcionados e os dados precisam passar pelo chip para os buffers de saída. Isso leva um pouco de tempo, especialmente considerando que os chips SDRAM são fabricados em um processo personalizado para altas densidades de ram e não altas velocidades lógicas. Para aumentar a largura de banda, usando DDR (1,2,3 ou 4), a maior parte da lógica pode ser ampliada ou em pipeline, e pode operar na mesma velocidade da geração anterior. A única coisa que precisa ser mais rápida é o driver de E / S para os pinos DDR.

Por outro lado, para diminuir a latência, toda a operação precisa ser acelerada, o que é muito mais difícil. Provavelmente, partes do carneiro precisariam ser feitas em um processo semelhante ao das CPUs de alta velocidade, aumentando o custo substancialmente (o processo de alta velocidade é mais caro, mais cada chip precisa passar por 2 processos diferentes).

Se você comparar caches de CPU com RAM e disco rígido / SSD, há uma relação inversa entre armazenamento grande e armazenamento rápido. Um L1 $ é muito rápido, mas pode conter apenas entre 32 e 256kB de dados. A razão de ser tão rápido é porque é pequeno:

  • Ele pode ser colocado muito próximo à CPU, o que significa que os dados precisam percorrer uma distância menor para chegar a ele
  • Os fios podem ser mais curtos, novamente significando que leva menos tempo para os dados viajarem através dele
  • Ele não ocupa muita área ou muitos transistores, portanto, torná-lo em um processo de velocidade otimizada e usar muita energia por bit armazenado não é tão caro

À medida que você sobe na hierarquia, cada opção de armazenamento fica maior em capacidade, mas também em área e mais distante do dispositivo que o utiliza, o que significa que o dispositivo deve ficar mais lento.

C_Elegans
fonte
21
Ótima resposta. Eu só quero enfatizar o fator de distância física: talvez 10 cm para o stick de RAM mais distante, 1/3 a 1/2 da velocidade da luz como a velocidade do sinal, além de um comprimento extra para rotear e combinar as faixas da placa de circuito impresso, você pode facilmente em 2ns tempo de ida e volta. Se ~ 15% do seu atraso é causado pelo limite de velocidade universal inquebrável ... você está indo muito bem na minha opinião.
mbrig 19/02
1
O L1 também é organizado de forma exclusiva, está diretamente no núcleo que o utiliza e usa SRAM.
forest
@forest E também possui um limite de tamanho bastante rigoroso - torne-o muito grande e não há como mantê-lo tão rápido.
Luaan 20/02
O cache L1d também pode ser altamente otimizado para latência, por exemplo, buscando tags e dados em paralelo para todas as formas definidas. Portanto, quando uma correspondência de tag apenas agrupa os dados na saída, em vez de precisar buscá-la na SRAM. Isso também pode acontecer em paralelo com a pesquisa TLB nos bits altos do endereço, se todos os bits de índice vierem da parte de deslocamento dentro da página de um endereço. (Portanto, esse é um limite rígido de tamanho, como o @Luaan mencionou: size / associativity <= tamanho da página para este truque de velocidade VIPT = PIPT para funcionar. Consulte VIPT Cache: Conexão entre TLB e Cache? )
Peter Cordes
6

C_Elegans fornece uma parte da resposta - é difícil diminuir a latência geral de um ciclo de memória.

A outra parte da resposta é que, nos modernos sistemas de memória hierárquica (vários níveis de armazenamento em cache), a largura de banda da memória tem uma influência muito mais forte no desempenho geral do sistema do que a latência da memória , e é aí que todos os esforços de desenvolvimento mais recentes foram focados.

Isso é verdade tanto na computação geral, onde muitos processos / threads estão sendo executados em paralelo quanto nos sistemas incorporados. Por exemplo, no trabalho de vídeo em HD que faço, não ligo para latências da ordem de milissegundos, mas preciso de vários gigabytes / segundo de largura de banda.

Dave Tweed
fonte
E definitivamente deve ser mencionado que o software pode ser projetado para a latência "alta" com bastante facilidade na maioria dos casos, em comparação com a dificuldade e o custo de diminuir a latência. As CPUs e seus softwares são muito bons em eliminar a latência efetiva na maioria dos casos. No final, você não atinge o limite de latência com a frequência que imagina, a menos que não tenha idéia de como a arquitetura da memória e o cache / pré-busca da CPU etc. funcionam. A abordagem simples geralmente funciona bem o suficiente para a maioria dos softwares, especialmente de thread único.
Luaan 20/02
Nas CPUs Intel modernas, a latência da memória é o fator limitante para a largura de banda de núcleo único : a largura de banda não pode exceder a max_concurrency / latency e um único núcleo possui capacidade limitada para solicitações fora do núcleo em voo ao mesmo tempo. Um Xeon com muitos núcleos (com maior latência uncore de mais saltos no barramento em anel) tem pior largura de banda de núcleo único do que um chip de desktop com quatro núcleos, apesar de ter mais controladores DRAM. Por que Skylake é muito melhor que Broadwell-E para taxa de transferência de memória de thread único? . É preciso muito mais threads para saturar a memória P / B em um Xeon com muitos núcleos.
Peter Cordes
No geral, seu ponto principal está correto: a maioria dos acessos ocorre no cache para baixa latência para evitar o bloqueio do back-end fora de ordem. A pré-busca de HW geralmente precisa apenas de largura de banda para acompanhar os acessos sequenciais e ter dados prontos em cache antes que o núcleo precise. A latência da DRAM é centenas de ciclos de clock do núcleo; portanto, é necessário ajustar um software eficiente para usar padrões de acesso que não ocultam erros ao derrotar a localidade espacial / temporal e a pré-busca de HW. Especialmente para cargas, porque os buffers de loja podem desacoplar a latência do restante do back-end fora de ordem.
Peter Cordes
Para E / S de disco, latências de milissegundos importariam se não tivéssemos pré-busca readahead para ocultá-la para acessos sequenciais. Mas quanto maior a latência, mais difícil é esconder. (Quanto melhores os seus algoritmos de pré-busca, e mais previsíveis seus padrões de acesso.) E mais solicitações / bytes de dados você precisa manter em andamento para obter a largura de banda desejada.
Peter Cordes
2

Não tenho muitas idéias, mas espero que seja um pouco de tudo.

Econômico

Para a maioria dos computadores / telefones, a velocidade é mais que suficiente. Para armazenamento mais rápido de dados, o SSD foi desenvolvido. As pessoas podem usar vídeo / música e outras tarefas intensivas em velocidade (quase) em tempo real. Portanto, não há tanta necessidade de mais velocidade (exceto para aplicações específicas, como previsão do tempo, etc.).

Outra razão é processar uma velocidade de RAM muito alta, são necessárias CPUs que são rápidas. E isso vem com muito uso de energia. Uma vez que a tendência de usá-los em dispositivos de bateria (como telefones celulares), impede o uso de RAM (e CPUs) muito rápidas, portanto, também não é economicamente útil usá-los.

Técnico

Pelo tamanho decrescente dos chips / ICs (nível de nm agora), a velocidade aumenta, mas não significativamente. É mais frequentemente usado para aumentar a quantidade de RAM, o que é necessário com mais força (também uma razão econômica).

Fundamental

Como um exemplo (ambos são circuitos): a maneira mais fácil de obter mais velocidade (usada pelo SSD) é apenas distribuir a carga por vários componentes, assim as velocidades de 'processamento' também aumentam. Compare usando 8 cartões USB lendo ao mesmo tempo e combinando os resultados, em vez de ler dados de um cartão USB um após o outro (leva 8 vezes mais).

Michel Keijzers
fonte
1
O que exatamente os SSDs têm a ver com a latência SDRAM?
C_Elegans 19/02
@C_Elegans são ambos circuitos, para esta questão 'genérica' não acho que exista tanta diferença.
Michel Keijzers 19/02
2
A quantidade de tempo para abrir uma página não diminuiu muito devido ao ciclo de pré-carregamento; a quantidade de energia necessária não é significativamente diferente hoje do que era uma década atrás. Isso domina o tempo de acesso na minha experiência.
Peter Smith
5
@MichelKeijzers Embora sejam circuitos, os SSDs e SDRAM atendem a casos de uso muito diferentes e fazem uso de diferentes técnicas para armazenar dados. Além disso, dizer que as CPUs realmente não precisam de RAM mais rápida não faz muito sentido, a razão pela qual a maioria das CPUs modernas tem três níveis de caches é porque sua ram não pode ser fabricada com rapidez suficiente para atender à CPU.
C_Elegans 19/02
1
Você disse que para um armazenamento maior , existem SSDs. Você quis dizer mais rápido ? É mais caro obter a mesma quantidade de armazenamento em um ssd do que em um disco rígido. O principal ponto de venda dos SSDs é a velocidade e talvez o ruído e a confiabilidade. Para capacidade, os HDDs ainda são melhores
user198712 20/02