A latência da memória é um dos principais fatores que afetam o desempenho do aplicativo. Os desenvolvedores se beneficiarão por ter um bom entendimento da latência da memória, como medi-la e saber quando ela pode ser melhorada.
Latência é o tempo entre uma solicitação e a resposta. No contexto da arquitetura do computador, a latência da memória refere-se à comunicação da CPU com os dispositivos de memória. Uma solicitação é um carregamento (leitura) ou um armazenamento (gravação) e a resposta são os dados carregados ou uma confirmação de que o armazenamento ocorreu. Quanto mais rápida essa comunicação acontecer, melhor será o desempenho.
O hardware do computador é construído usando vários tipos de armazenamento. Na área de latência de memória, “dispositivos de memória” podem ser caches, RAM externa, dispositivos de armazenamento como unidades de estado sólido (SDD) ou unidades de disco rígido (HDD).
Na arquitetura do computador, uma CPU executa instruções e algumas instruções usam registradores para transferir dados de e para a memória. O sistema de memória é projetado com caches próximos à CPU e de acesso mais rápido. As instruções também são colocadas em caches que melhoram o desempenho, eliminando a necessidade de buscar as mesmas instruções na memória várias vezes.
Em teoria, uma CPU pode operar sem nenhum cache, mas seria muito mais lenta.
Quão mais lento seria?
Você pode consultar a lista de Números de latência que todo programador deve saber para saber mais sobre o tempo que leva para acessar vários tipos de memória em um sistema de computador.
|Referência de cache L1
|Referência de cache L2
|cache L1 de 14x
|Referência da memória principal
|20x cache L2, 200x cache L1
|Enviar 1K bytes em rede de 1 Gbps
|Leia 4K aleatoriamente do SSD
|Leia 1 MB sequencialmente da memória
|Ida e volta dentro do mesmo datacenter
|Leia 1 MB sequencialmente do SSD
|~1 GB/s SSD, 4X memória
|Busca de disco (HDD)
|Viagem de ida e volta do datacenter em 20x
|Leia 1 MB sequencialmente do disco
|Memória 80x, SSD 20X
|Enviar pacote CA -> Holanda -> CA
CPUs e RAM modernas têm latências muito diferentes em comparação com aquelas de 30, 20 ou até 10 anos atrás. Mesmo assim, as melhorias geralmente são dimensionadas uniformemente ao longo da evolução das CPUs. Uma CPU Cortex-A15 de 15 anos atrás pode ser baseada em uma implementação muito diferente da arquitetura Arm em comparação com uma CPU Neoverse-V2 atual, mas as ordens de magnitude das latências entre a CPU e os dispositivos de memória são semelhantes.
Uma excelente visualização de como as latências foram reduzidas ao longo dos anos de evolução da CPU é fornecida na página de latências interativas de Colin Scott. Use o controle deslizante na parte superior para alterar o ano e ver como os números de latência mudam.