Como os computadores de mesa, laptops e computadores de mão lidam com a corrupção ocasional de dados da RAM?

1

Não é segredo que a corrupção espontânea de dados armazenados (como um pouco invertido) não é um evento frequente, mas ainda bastante possível, na operação normal de SDRAM (incluindo DDR 1/2/3/4 SDRAM).

Servidores e estações de trabalho pesadas usam o mecanismo ECC incorporado aos seus módulos SDRAM para solucionar o problema, garantindo que uma palavra de dados lida seja sempre a palavra de dados gravada naquele endereço específico antes.

Mas e os PCs de mesa / laptops e dispositivos portáteis usando módulos de memória RAM não-ECC? Como um desenvolvedor pode ter certeza de que uma variável contém exatamente o valor gravado nela?

Ivan
fonte
1
Não é uma resposta, mas aqui está um estudo realizado pelo Google em conjunto com a Universidade de Toronto, mostrando os erros de memória que o Google encontrou em toda a sua frota de máquinas em um período de 2,5 anos.
Scott Chamberlain

Respostas:

0

Eu não acho que exista algum mecanismo para evitar erros em sistemas não-ECC, no nível do sistema ou no sistema operacional. Não acredito que o Windows atualize regularmente o conteúdo da RAM, é esperado que o hardware mantenha os valores na memória.

  • Uma verificação rápida da memória é feita no BIOS ao iniciar o sistema, para que alguns erros importantes possam ser detectados lá.

  • Alguns arquivos, como instaladores, podem executar verificações de CRC. Mas esses erros podem vir da mídia de armazenamento e não da memória.

  • Se houver um erro aleatório em um local de memória que não será usado ou será substituído. Sem problemas. Suspeito que uma porcentagem muito grande de erros aleatórios e não repetidos ocorram nesse espaço.

  • A corrupção em um espaço de aplicativo pode gerar uma exceção em vez de uma falha, que pode ou não ser tratada normalmente. No entanto, isso seria mera sorte - não há exceções para "erros de memória" em si, mas o erro pode ocorrer em um local que é tratado por um manipulador de exceções. Caso contrário, o aplicativo carregará os dados corrompidos ou travará se causar uma operação inválida.

Fora isso, os aplicativos / SO travam e os arquivos gravados serão corrompidos.

Os aplicativos, se desejarem, podem implementar mecanismos de verificação executando operações duas ou mais vezes. Verificadores de memória e ferramentas de cópia de arquivos de terceiros são exemplos.

mtone
fonte
"Uma verificação rápida da memória é feita no BIOS ao iniciar o sistema, para que alguns erros importantes possam ser detectados lá" - como um engenheiro de diagnóstico de hardware de PC experiente (testando módulos de memória desde os 286 CPUs), posso garantir que você POST RAM teste feito pela BIOS é quase totalmente inútil.
1937 Ivan Ivan
0

Sim, geralmente o sistema executará um teste de RAM na inicialização e tentará colocar em quarentena as páginas incorretas.

Caso contrário, se uma página defeituosa for descoberta de alguma forma durante a operação (provavelmente não na maioria das caixas de consumidor, pois elas geralmente não têm verificação de paridade, mas possível em "big iron"), então, se a página for "virtual" e não tiver sido marcado como "alterado", o sistema provavelmente "removerá" a página, marcará a página física como incorreta e voltará a paginar novamente a partir do disco.

Se a página estiver "suja" (alterada), no entanto, o erro será relatado ao aplicativo como uma exceção de algum tipo. Se a página incorreta for algum tipo de página do sistema, o sistema falhará.

Obviamente, na ausência de verificação de paridade ou de algum outro mecanismo para descobrir um erro, os dados incorretos são simplesmente usados ​​e o que acontece acontece. Esse é o caso mais provável no hardware do consumidor.

Daniel R Hicks
fonte
0

Eles não lidam com essa situação. O teste de inicialização endereça o último bit de memória e isso é tudo que o BIOS normal faz. O Linux / FreeBSD etc tem consertos que permitem excluir endereços de memória do acesso pelo sistema. A menos que você faça isso, os sistemas provavelmente travarão quando a verificação de integridade interna do kernel encontrar "bit flip" (Sinal 11 no Unix)

ZaB
fonte