O que é memória ECC e quando você precisa dela
O que a correção de erros realmente pega, em que os módulos registered e load-reduced diferem dos sem buffer, e por que quem decide é a plataforma.
Atualizado
Nesta página
Memória com correção de erros é uma das poucas peças de uma máquina em que a resposta certa fica óbvia assim que se entende o que a função faz. Ela pega uma falha específica e rara, custa dinheiro e um pouco de latência, e só funciona quando três coisas distintas se encontram. Quase toda a confusão em torno dela vem de uma quarta coisa, que divide o nome sem ser a mesma função.
O que a ECC realmente pega
Um módulo sem correção de erros guarda os bits que você mandou guardar e depois devolve o que encontrar ali. De vez em quando o que ele encontra não é o que entrou: uma partícula perdida vira uma célula, um chip no limite perde a carga, um sinal chega deformado pelo barramento. Nada no módulo percebe, então o valor errado segue para o processador e o programa trabalha em cima dele.
Um módulo ECC carrega chips de memória além dos que guardam os seus dados, e grava uma soma de verificação ao lado de cada palavra. A cada leitura o controlador de memória a recalcula. Um bit virado é corrigido na hora e registrado; dois bits virados são detectados mas não corrigidos, e a máquina para em vez de seguir com dados que sabe estarem errados.
Repare no que isso compra e no que não compra. A correção não deixa a memória mais rápida, não faz durar mais e não salva um módulo que está realmente falhando — ela avisa da falha mais cedo e com mais clareza, o que muitas vezes vale mais do que a correção em si. O que muda é que uma resposta errada e silenciosa vira um evento registrado, e se isso compensa depende inteiramente do que a máquina faz. Uma estação de trabalho rodando uma simulação de uma semana, um servidor de arquivos guardando dados que serão relidos daqui a cinco anos, um banco de dados que não pode gravar uma linha corrompida: para esses, um bit errado que ninguém nota é o desfecho caro. Uma máquina de jogos trava, você reinicia e perdeu alguns minutos.
A ECC no die não é memória ECC
É aqui que todo mundo tropeça, e o DDR5 piorou a situação.
Todo chip DDR5 tem correção de erros embutida no die. Isso faz parte do padrão em vez de ser um acréscimo de um fabricante: nas densidades em que o DDR5 é produzido, os erros dentro da matriz são frequentes o bastante para que corrigi-los dentro do próprio chip seja o que mantém os rendimentos de fabricação de pé. Ou seja, um kit DDR5 comum de desktop carrega mesmo uma correção de erros, num sentido real.
Não é a mesma função. A correção no die cobre os erros internos da matriz DRAM e mais nada. Ela age antes de os dados saírem do chip, portanto não cobre o caminho do módulo até o controlador de memória — os contatos, as trilhas da placa, o próprio barramento — e é nesse caminho que acontece uma parcela relevante dos erros de memória. Ela também não relata nada: nenhum contador para ler, nenhuma entrada de registro, nenhuma forma de o sistema operacional saber que houve uma correção ou que elas estão ficando frequentes. A ECC no die é uma medida de fabricação que de quebra ajuda você. A memória ECC é uma função de sistema que conta a verdade sobre o seu próprio hardware.
A consequência prática é curta: um módulo DDR5 ter correção no die não diz nada sobre a máquina ter memória ECC. São duas perguntas diferentes com duas respostas diferentes.
Sem buffer, registered e load-reduced
A correção de erros é um eixo. Como o módulo é acionado eletricamente é outro, e os dois se confundem porque a memória de servidor costuma reunir os dois.
Num módulo sem buffer — um UDIMM num desktop, um SO-DIMM num notebook — as linhas de endereço e de comando vão do controlador de memória direto a cada chip DRAM do pente. É o arranjo mais simples e o de menor latência. O custo é elétrico: cada chip é uma carga sobre essas linhas, então quanto mais chips e mais módulos um canal carrega, mais o controlador sofre e mais cedo o sinal deixa de estar limpo. É por isso que as plataformas de desktop param num punhado de slots e num teto de capacidade por slot.
Um módulo registered — um RDIMM — coloca um chip de registro entre o conector e a DRAM. O controlador aciona uma carga por módulo em vez de dezenas, e o registro distribui o sinal dali em diante. Isso custa um ciclo de clock em endereço e comando, e compra a possibilidade de pendurar num canal muito mais memória do que um projeto sem buffer aguenta.
Um módulo load-reduced — um LRDIMM — também põe buffer nas linhas de dados. Isso levanta o limite elétrico que restava e permite que os módulos maiores e com mais ranks funcionem sequer, que é a única razão para aceitar o custo extra.
| Sem buffer | Registered | Load-reduced | |
|---|---|---|---|
| Põe buffer em | Nada | Endereço e comando | Endereço, comando, dados |
| Latência | A mais baixa | Um ciclo a mais | Um ciclo a mais |
| Onde costuma viver | Desktops e notebooks | Placas de servidor e estação de trabalho | Placas de servidor, nas maiores capacidades |
Nada nessa tabela trata de correção de erros. Módulos registered quase sempre a trazem, porque as plataformas que os aceitam a querem; mas módulos ECC sem buffer existem e são peças comuns. Nosso catálogo tem vários, e eles aparecem na página de memória de desktop e não nesta, porque o que coloca um módulo na página de memória de servidor é o seu formato e mais nada: RDIMM e LRDIMM, as duas grafias que significam que um módulo tem buffer.
Quem decide é a plataforma, não o módulo
Um módulo ECC numa máquina que não suporta ECC faz uma de duas coisas. Funciona com os bits de verificação ignorados, ou não funciona. De um jeito ou de outro você pagou por uma função que não está fazendo nada.
Três coisas precisam estar presentes. O módulo precisa carregar os chips adicionais. O controlador de memória — que mora dentro do processador em toda plataforma atual — precisa saber verificá-los. E o firmware e o sistema operacional precisam mostrar o resultado, porque uma correção que ninguém consegue ver não é muito melhor do que nenhuma. As plataformas de servidor e de estação de trabalho reúnem as três. As de desktop de consumo em geral não, e onde uma placa e um processador de desktop de fato aceitam ECC sem buffer, isso vem dito na documentação da placa em vez de ficar subentendido pelo soquete. É ali que a questão se resolve, e vale resolvê-la antes de comprar o módulo.
O que registramos e o que não
Registramos o suporte a correção de erros no módulo, como um campo que uma ficha técnica declara ou não declara. Onde um fabricante não declara, deixamos o campo vazio em vez de deduzi-lo de um código de peça, então um campo vazio significa que não encontramos a afirmação — não que falte a função ao módulo. Todo módulo registered e load-reduced do nosso catálogo a declara, e nenhum SO-DIMM de notebook declara.
Também não é algo sobre o que comparemos. A memória é comparada por três números — capacidade, velocidade em MT/s e latência CAS, com mais alto sendo melhor nos dois primeiros e mais baixo no último — e a correção de erros não está em nenhum deles, porque não é um número que se ordene. Um módulo carrega os chips adicionais ou não carrega, e a pergunta seguinte é se a sua plataforma sabe usá-los. O módulo é ainda o único lugar deste site em que a correção de erros é registrada: nenhuma ficha de processador ou de placa-mãe aqui reserva um campo para ela, então a pergunta começa numa ficha técnica e termina na documentação da placa.
Dois hábitos deste catálogo vale conhecer antes de lê-lo. A memória de servidor é listada como módulos avulsos e não como kits, porque os canais são povoados slot a slot e é o número de slots de uma placa que decide quantos você compra. E a sequência completa de temporizações que os kits de desktop imprimem falta em todo módulo registered daqui: os fabricantes publicam a latência CAS e param por aí.
A propósito: os números de CAS do DDR5 registered assustam ao lado dos do DDR4, e todo módulo DDR5 daqui traz um mais alto do que qualquer módulo DDR4. Eles significam aproximadamente a mesma espera, porque um ciclo de clock encurta conforme a velocidade sobe — como velocidade e latência trabalham juntas traz a conta. E se a pergunta por baixo de tudo isso é quanta memória comprar em vez de qual, comece pela capacidade, que muda muito mais, para muito mais máquinas, do que a correção de erros.
A memória de servidor e a RAM de desktop estão cada uma numa página, com especificações da ficha técnica e preços acompanhados ao longo do tempo.
Perguntas frequentes
- Usar DDR5 significa que já tenho memória ECC?
- Não. Todo chip DDR5 traz correção no próprio die para os erros que surgem dentro da sua matriz de células, e isso faz parte do padrão em vez de ser o atrativo de um módulo específico. Ela não cobre o caminho entre o módulo e o processador nem informa nada ao sistema operacional, então um desktop com DDR5 não é uma máquina com memória ECC.
- Posso colocar um módulo registered numa placa-mãe de desktop?
- Não — uma placa é cabeada para um único tipo de módulo, e um registered nem chega a iniciar numa plataforma de desktop. O chip de registro entre o conector e os chips de memória muda como a placa precisa acionar o módulo, de modo que quem decide são a placa e o processador, não o pente comprado.