Uma década ou duas atrás eu poderia comprar RAM ECC (Código de Correção de Erros) para PCs que montei. A RAM ECC forneceu SEC-DED, acho que devido a inversões de bits causadas por radiação ionizante (não sei o que mais poderia causar erros de bits transitórios na RAM ou nos barramentos de E / S).
Não vejo RAM ECC oferecida para PCs há anos. Por que é que?
Se a memória ECC foi útil vinte anos atrás, presumivelmente seria mais útil agora que os PCs estão rodando com 1-2 ordens de magnitude a mais de memória, em voltagens mais baixas e com recursos físicos menores que (presumivelmente) são mais suscetíveis à corrupção da radiação perdida. Alguma dessas suposições está incorreta?
Ou seja, se a RAM ECC era considerada um recurso útil há uma década, as razões pelas quais era útil não se aplicam mais aos computadores pessoais e servidores atuais? Ou o pensamento agora é que a RAM ECC nunca foi realmente útil?
Há mais de 15 anos, a Intel decidiu que o suporte à RAM ECC não tinha valor em máquinas de consumo.
Em outras palavras, a Intel decidiu há mais de 15 anos que as máquinas de consumo não precisam disso. Assim, o mercado não o suporta fora do hardware do servidor. Assim, os consumidores finais estão pagando o preço.
Este artigo de janeiro de 2021 na ExtremeTech fornece um resumo bastante sólido do que aconteceu: “ Linus Tovalds culpa a Intel por matar a RAM ECC em sistemas de consumo ”:
Como o artigo cita Linus Torvalds, aqui está sua reclamação específica:
O problema aqui é que o Linux está sendo responsabilizado por erros de kernel, mas Linus Torvalds acredita que a causa raiz são problemas de hardware que podem ser atribuídos à prevalência de RAM não-ECC nas máquinas hoje em dia.
Mas isso é uma tangente... O que importa são os fabricantes de PCs cortando cantos. Problema clássico de fabricação.
E hoje em dia, onde o hardware do PC é considerado bastante descartável, pode haver alguma lógica aqui: a RAM começa a ficar escamosa, basta jogar a máquina e comprar uma nova. A verdade é que o mercado está cheio de não-técnicos e não-construtores de PC, então ei… Isso fede, mas é o que é.
Concordo com a resposta fornecida por @Giacomo1968 no que diz respeito à história. O estado atual, no entanto, está mudando. A AMD começou recentemente a oferecer suporte à memória ECC em sua linha atual de CPU de desktop para o soquete AM4: "O ECC não está desabilitado. Funciona, mas não é validado para nossa plataforma de cliente consumidor." (Fonte: Reddit )
Dito isto, a placa-mãe também precisa suportar isso. Algumas placas de consumidores sim, outras não.
Um pouco mais que resolve a questão:
A Intel decidiu unilateralmente que os consumidores não precisavam de ECC e decidiu fornecê-lo apenas para clientes de servidores e estações de trabalho onde a Intel poderia cobrar um prêmio.
A Microsoft tentou tornar o ECC um recurso necessário para a certificação do Vista, mas a Intel se recusou a fazê-lo. Antes da série Core i7, o controlador de memória fazia parte da placa-mãe e o suporte ECC era um recurso do chipset da placa-mãe.
Você pode obter laptops com ECC. Por exemplo, há a linha Dell Precision Workstation que você pode obter com uma CPU Xeon-W e RAM ECC.
Você pode comprar qualquer CPU Ryzen. Bem, qualquer Ryzen sem gráficos integrados. Para que os gráficos integrados funcionem com o ECC, você precisa de uma versão Pro que é difícil de encontrar, a menos que você a compre em um sistema pré-construído.
Com um Ryzen e uma placa-mãe como a linha ASUS PRO, o ECC sem buffer funcionará muito bem.
Para os módulos ECC registrados e armazenados em buffer, você precisa de uma CPU Xeon ou EPYC real, porque esses tipos de RAM são controlados de maneira diferente.
Num futuro próximo, a RAM DDR5 tem a opção de usar ECC internamente, sem qualquer notificação ou controle da CPU. Ele também tem a opção de fornecer sinalização e controle para CPUs que o suportam.
Aqui está um exemplo de um módulo ECC que você pode comprar hoje. Eu comprei quatro deles para uma compilação Ryzen:
Eu forneceria um link da Amazon, mas isso pode ser considerado spam. Observe também que você pode obter módulos ECC com velocidade de 3.200 MHz hoje.
Existem 3 causas gerais de erros de bit, as duas primeiras são perturbações de evento único :
Radiação (principalmente nêutrons livres ). Esse fenômeno específico depende de várias coisas, como a seção transversal de nêutrons do dispositivo específico. Pode parecer contra-intuitivo, mas as novas geometrias muito menores têm uma probabilidade menor de perturbação devido a nêutrons porque foram projetadas para serem menos suscetíveis. Veja o link Xilinx (abaixo).
Chumbo, especificamente Pb210 que faz parte da cadeia de decaimento do urânio e é encontrado em kits mais antigos nas esferas dos dispositivos BGA. Xilinx refere-se a erros disso como a taxa alfa, pois eles emitem uma partícula alfa durante o decaimento. Claramente, não é um problema para muitos equipamentos atuais que não contêm chumbo (mas ainda é um problema no setor aeroespacial, onde o processamento de estanho e chumbo ainda é comum).
Problemas gerais de taxa de erro de bits. Uma interface de memória é um canal de comunicação e todos os canais de comunicação têm uma taxa de erro. É certo que você nunca verá um único erro de bit na vida útil de um equipamento específico, pois essa é uma quantidade estatística. Erros devido a ruído elétrico e desacoplamento deficiente do dispositivo também se enquadram nesta categoria.
Foi útil, mas de valor limitado, embora muitos ataques de canal lateral possam ser mitigados por seu uso.
A verdadeira razão pela qual você não pode encontrá-lo em placas comercialmente disponíveis é simplesmente o custo e as placas que o possuem têm um prêmio bastante grande, muito maior do que o custo delta do silício para lidar com ele e os 8 bits de dados extras (para um sistema de memória de 64 bits). A análise de custo-benefício não suporta sua ampla disponibilidade.
Lembro-me de um trabalho de pesquisa da Boeing que discutia erros leves em um data center de Denver. A quantidade de nêutrons livres é (até certo nível) proporcional à altitude. Quanto mais alto você vai, mais há.
As interfaces de memória que temos hoje são muito mais robustas do que você imagina; para DDRx, os flashes de dados são diferenciais (assim eles rejeitam o ruído de modo comum) e tensões de transição mais baixas são realmente melhores para interfaces de alta velocidade, como provamos anos atrás com ECL .
Em aviônicos, e em particular em aviônicos críticos de segurança de voo, como computadores de controle de voo, o uso de ECC para L2 e além é obrigatório, assim como o uso de paridade para L1. Essa é uma das razões pelas quais essas placas não são da Intel ou AMD.
[Atualizar]. As especificidades de como as células de memória são dispostas têm um efeito bastante grande em sua suscetibilidade a SEUs; A Xilinx adotou uma abordagem específica que efetivamente empilha células de memória de tal forma que a probabilidade de um nêutron de alta energia causar uma inversão de bits é significativamente reduzida.
Como não sou um designer de IC, isso é tudo o que posso dizer. Há muito mais informações no Projeto Rosetta .
Isso é um reflexo da qualidade do software do consumidor, entre outros fatores.
A RAM ECC só realmente ajuda se a taxa de erro de trocas esporádicas de bits for a causa dominante de falhas. Se você executar um software de alta confiabilidade que nunca trava sozinho, eliminar as poucas fontes de erros restantes realmente melhora o MTBF do sistema.
Se você executar um software que é produzido com pressa por causa da economia "o vencedor leva tudo", ele terá muitas fontes de falhas além de erros de RAM. Pagar o prêmio para reduzir sua taxa de erro em alguns por cento simplesmente não faz sentido neste caso.
E então vem o feedback positivo típico de bens com altos custos fixos: preços mais altos significam menos demanda, o que, por sua vez, significa preços ainda mais altos. Eu não acho que a Intel seja a culpada aqui: eles não pararam de apoiar o ECC em chips de consumo porque odeiam a tecnologia, eles o fizeram porque ganham mais dinheiro vendendo chips não-ECC mais baratos.
Notavelmente, no mundo dos controladores de microcontroladores industriais que executam software projetado de acordo com os padrões de segurança funcional , a RAM ECC é amplamente utilizada hoje.
Ao falar sobre ECC ou não ECC, as discussões se concentram principalmente no problema do bit flip. Mas em meus 15 anos de experiência com mais de 40 servidores de datacenter e/ou NAS domésticos, o bit flip não era o maior problema que o ECC teria resolvido.
Eu tive dois grandes problemas de corrupção de dados possível ou real, ambos eram um módulo RAM SIM totalmente com falha.
No primeiro caso, tendo um módulo de RAM ECC, o servidor HP Proliant simplesmente parou dizendo algo como "Erro ECC, substitua o módulo defeituoso". Nenhum dado foi corrompido, apesar do desligamento inesperado do sistema de 8 máquinas virtuais em execução.
No segundo caso, após a falha do módulo RAM no NAS não-ECC, o NAS continuou a gravar dados inúteis nos discos por algumas horas antes de travar o sistema operacional. Nenhum dado foi recuperável nas últimas 24 horas de trabalho. Uma máquina virtual inteira em execução dentro desse NAS foi corrompida e alguns outros arquivos aleatórios também. Tudo tem que ser restaurado a partir do backup anterior.
O CEC é importante. Ele não apenas o salva de um pequeno problema de inversão de bits, mas também o salva de uma falha inteira do módulo de RAM que pode destruir a maioria dos seus dados. Quero ECC onde armazeno dados.