Alguma RAM, ou memória de acesso aleatório, é anunciada como memória ECC. ECC significa Código de Correção de Erros e é um processo de identificação e correção de erros na memória. Erros na RAM podem causar corrupção ou alteração de dados, o que pode resultar em travamentos do dispositivo e até mesmo em vulnerabilidades de segurança. A RAM ECC normalmente não é compatível com hardware de PC de consumo.
O que são erros de memória?
Os erros de memória são um problema em que o valor armazenado na memória é alterado. Os dados na RAM são armazenados em binário, com valores de 1 ou 0. Se o valor de 1 for alterado para 0 ou vice-versa, em um processo chamado “inversão de bits”, os dados armazenados na RAM mudam.
Por exemplo, o bit alterado pode ser usado para armazenar um valor em uma planilha. Neste caso, o valor na planilha pode ser alterado para um número completamente diferente que afetaria o resultado de quaisquer cálculos, por exemplo, alterando as previsões econômicas de um o negócio. Em outros casos, o bit alterado pode desativar um recurso de segurança ou criar um erro de digitação que altera a forma como um programa é executado. Esses dois exemplos são extremamente difíceis de detectar e resolver sem o uso da memória ECC. Em um cenário extremo, um único bit sendo invertido pode causar um erro catastrófico que causa uma falha do sistema.
A inversão de bits tem muitas causas potenciais; a causa mais comum é o resultado da radiação de fundo, causada principalmente por nêutrons criados por eventos de raios cósmicos. Um raio cósmico é uma partícula de alta energia, normalmente um próton, que viaja quase à velocidade da luz. Eles são emitidos por corpos estelares, incluindo o Sol e outros objetos astronômicos de alta energia. Quando um raio cósmico atinge um átomo, uma chuva de nêutrons e outras partículas subatômicas são criadas, esses nêutrons passam a ter interações secundárias.
Acredita-se que essas interações de nêutrons secundários sejam a fonte primária de erros de inversão de bits. Os raios cósmicos são mais comuns em altitudes mais elevadas, com um aumento de 3,5x a 1,5 km acima do nível do mar e um aumento de 300x na altitude de cruzeiro de aviões de passageiros. Este risco aumentado em altitude requer medidas extras de confiabilidade.
Quão comuns são os erros de memória?
A maioria das pessoas não vê seus computadores travando todos os dias, então seria fácil pensar que este é principalmente um risco teórico. Pesquisas em data centers em hiperescala foram usadas para analisar a taxa de incidentes de bit-flipping. A pesquisa realizada pelo Google em seus data centers mostrou uma taxa de erro de aproximadamente 1 erro de bit único por gigabyte de RAM a cada 1,8 horas.
A missão Cassini-Huygens da Nasa, lançada em 1997 para viajar a Saturno, foi configurada com dois computadores de vôo idênticos, cada um com 2,5 Gb de RAM. Ao longo dos primeiros dois anos e meio de sua jornada, a espaçonave observou 280 erros de bit único por dia. Durante um dia, quando a Cassini-Huygens estava no caminho de uma erupção solar, um aumento de quatro vezes erros foram observados, fornecendo mais evidências de que o Sol é a causa da maioria dos erros questões.
Havia preocupações de que o aumento contínuo na densidade dos módulos de RAM levaria a versões posteriores de RAM cada vez mais vulneráveis a bit-flips. Estudos mais recentes mostraram que o oposto é de fato o caso, pois os erros diminuíram conforme a geometria do processo diminuiu.
Como a memória ECC protege contra erros?
A memória ECC usa códigos de correção de erros, como os códigos de Hamming, para corrigir erros de bit único na RAM. Erros de bit duplo podem ser detectados, mas não corrigidos. Os códigos de correção de erros de Hamming funcionam usando uma matriz de bits de paridade. Juntos, esses bits de paridade podem ser usados para detectar se os bits de dados foram alterados. Se um bit for identificado como tendo sido invertido, ele será alterado de volta automaticamente.
Dica: Um erro de bit único é um incidente de inversão de bits quando apenas um único bit é invertido. Em erros double0bit, dois bits são invertidos. Os dois bits não precisam ser invertidos no mesmo incidente, o segundo bit invertido só precisa acontecer antes que o primeiro bit invertido seja corrigido.
Um bit de paridade a mais do que o necessário está incluído nos códigos de correção de erros de Hamming. Este bit de paridade extra dá ao código a capacidade de detectar a ocorrência de erros de bit duplo, no entanto, esses erros não podem ser corrigidos.
O processo de detecção e correção de erros é executado no controlador de memória integrado no stick de RAM.
Disponibilidade e suporte do consumidor
A maioria dos hardwares de PC para consumidores não oferece suporte para memória ECC. Isso é parcialmente como um método de distinguir artificialmente o hardware do servidor do hardware do consumidor. ECC RAM, no entanto, custa mais e funciona um pouco mais devagar. Além disso, a estabilidade extra que ele forneceria aos consumidores domésticos é mínima, já que os erros de conversão de bits não são a principal causa de travamentos do sistema.
Nenhuma das CPUs para consumidores e entusiastas da Intel suporta memória ECC, apenas suas CPUs para servidores, como as CPUs da linha Xeon. As CPUs de consumo da AMD não suportam ECC, no entanto, suas CPUs para workstation e server, Threadripper e EPYC respectivamente, suportam memória ECC.