Hoje em dia, a grande maioria da memória usada por desktops, notebooks e dispositivos móveis é DRAM sem memória tampão não-ECC (Error Checking and Correction). Na verdade, a menos que se esteja executando um CPU Intel ou AMD que pode suportar memória ECC DRAM ECC sem memória tampão é a única escolha para a maioria dos usuários. Intel Xeons, por exemplo, suportam memória ECC, enquanto mesmo os novos Core i7’s não suportam. A AMD tem um suporte muito mais amplo de ECC no nível da CPU, mas muitas placas-mãe AMD não suportam recursos de memória ECC, portanto ela não é universal.
Memória ECC O que ela faz
Memória ECC (Error Checking and Correction) é considerada essencial em ambientes corporativos nos dias de hoje. A verificação e correção de erros de bit único dentro de um byte de 8 bits permite que erros de bit único sejam ambos detectados e corrigidos quando eles ocorrem. Curiosamente, a forma como este ECC de bit único funciona não é muito diferente do RAID 4 e RAID 5, onde é utilizado um algoritmo XOR para gerar bits de paridade. Em vez de perder a capacidade de memória utilizável, os criadores de memória tendem a adicionar um chip adicional à memória ECC para cada oito chips de armazenamento. Quando um único bit de erro é detectado, a informação de paridade é utilizada para reconstruir os dados com um erro. Mais uma vez, isto é conceptualmente semelhante a como o RAID 4 e o RAID 5 podem eliminar e corrigir erros de dados em arrays de armazenamento. Erros maiores do que os multi-bits podem ser detectados mas não corrigidos pelo tipo de esquema de paridade ECC de bit único.
Para desktops, isto é menos importante, pois muitos números colocam os erros de bit único no intervalo de 1 por 1GB ou 1 por 2GB de memória a cada mês. Para um usuário de desktop, isso pode causar o travamento de um programa ou, na pior das hipóteses, exigir uma reinicialização. Em servidores, o ECC é essencial para manter tanto a integridade dos dados como o tempo de atividade. Com o atual pequeno diferencial de custo do ECC em relação aos DIMMs sem memória tampão, há poucos motivos para se obter memória não CEC para um servidor.
Memória ECC sem memória tampão em relação à memória ECC registrada
Adicionando ao conceito ECC, há dois conceitos em jogo, módulos de memória ECC sem memória tampão e registrados. A diferença básica é que os comandos de memória em configurações de memória sem memória tampão vão diretamente do controlador para o módulo de memória, enquanto em configurações de memória registrada os comandos são enviados primeiro aos registros dos bancos de memória antes de serem enviados aos módulos. Este conceito pode parecer difícil, mas aqui está a visão muito simples/conceitual sobre o que está acontecendo.
No exemplo acima o controlador de memória acessa diretamente os bancos de memória. O acima assume que o controlador de memória reside dentro do pacote da CPU como ocorre nas arquiteturas modernas de CPU. Olhando para sistemas mais antigos, o controlador de memória residia dentro da ponte norte da CPU. Compare isto com o exemplo de memória registrada abaixo.
Aqui a CPU se comunica com os registros para os bancos de memória em cada módulo. A partir daí, estes registros comunicam-se com a DRAM. As implicações disto são duplas. Primeiro, em um lado negativo, as instruções levam aproximadamente um ciclo de CPU mais longo devido ao intermediário do registro do banco. No lado positivo, este buffer reduz o esforço no controlador de memória da CPU porque aponta para o registro intermediário dedicado versus o acesso direto à DRAM. É mais fácil no controlador de memória lidar com um número menor de alvos.
Esta característica é muito importante em cenários de servidor porque, por exemplo, uma plataforma Intel série 3400, como o Supermicro X8SI6-F ou Intel S3420GPLC suporta 16GB ECC sem memória tampão e 32GB de memória ECC registrada. Da mesma forma, em sistemas de duplo processador, como o Supermicro X8DTH-6F baseado na série E5600 recentemente revisto no ServeTheHome, o delta é muito maior com até 48GB de ECC não registrado ou 192GB de memória ECC registrada. Para ambientes de virtualização onde a memória e a largura de banda de memória são fundamentais para alcançar métricas de alta consolidação e densidade, a memória ECC registrada é geralmente o caminho a seguir. Se alguém compra um servidor com DIMMs ECC não registrados, então requer capacidade adicional, então a operação de atualização irá requerer um puxar e substituir todos os módulos UDIMM tornando-a uma proposta cara.
Conclusion
Neste artigo espera-se que se possa obter uma visão conceitual da diferença entre a memória ECC não tampão e a memória ECC registrada para ajudar a informar as decisões de seleção. Este não foi um artigo demasiado técnico porque os módulos de memória tendem a ser itens que as pessoas encomendam ou adicionam aos seus sistemas e fazem pouco trabalho até precisarem de mais memória.