O ECC parece corrigir apenas erros de bits únicos.
Corrigir. Para corrigir mais erros, seria necessário mais bits. Como já é, você já usa 10 bits para armazenar 8 bits de informação, 'desperdiçando' 20% dos chips de memória para permitir uma correção de bit único e até dois bits de detecção de erros.
Funciona da seguinte maneira. Imagine um 0
ou um 1
. Se eu leio, só espero ter lido a coisa certa. Se um 0 foi convertido em 1 por alguma radiação cósmica ou por um chip defeituoso, nunca saberei.
No passado, tentamos resolver isso com paridade. Parity foi adicionar um nono bit por 8 bits armazenados. Verificamos quantos zeros e quantos havia 1 no byte. O nono foi definido para tornar esse número par. (para paridade uniforme) Se você leu um byte e o número estava errado, sabia que algo estava errado. Você não sabe qual parte estava errada.
O ECC expandiu isso. Ele usa 10 bits e um algoritmo complexo para descobrir quando um único bit foi invertido. Também sabe qual era o valor original. Uma maneira muito simples de explicar como isso seria:
Substitua todos os 0
s por 000
. Substitua todos os 1
s por 111
.
Agora você pode ler seis combinações:
000
001
010
100
101
111
Nunca temos 100% de certeza do que foi originalmente armazenado. Se lemos 000
, isso pode ter sido exatamente o 000
que estávamos esperando, ou os três bits podem ter mudado. O último é muito improvável. Os bits não mudam aleatoriamente, embora isso aconteça. Digamos que isso aconteça uma em dez vezes para alguns cálculos fáceis (a realidade é muito menor). Isso funciona com as seguintes chances de ler o valor correto:
000
-> 000
(99,9% de certeza) ou um flip triplo (chance de 1/1000)
001
-> Sabemos que algo deu errado. Mas foi 000
e foi
um pouco invertido (chance de 1:10), ou foi
111
e dois bits foram invertidos (uma chance de 1: 100). Então, vamos tratá-lo como se lêssemos, 000
mas registrássemos o erro.
010
-> Mesmo que acima.
100
-> Mesmo que acima.
011
-> O mesmo que acima, mas supondo que fosse um 111
101
-> O mesmo que acima, mas supondo que fosse um 111
110
-> O mesmo que acima, mas supondo que fosse um 111
111
-> 111
(99,9% de certeza) ou um flip triplo (chance de 1/1000)
111
-> 000
(99,9% de certeza) ou um flip triplo (chance de 1/1000)
Os ECCs fazem truques semelhantes, mas com mais eficiência. Para 8 bits (um byte), eles usam apenas 10 bits para detectar e corrigir.
A RAM registrada no ECC é utilizável apenas com placas de estação de trabalho / servidor. O ECC sem buffer é utilizável nas placas Intel Xeon lga1155 ou AMD AM3 + nas placas Asus.
Eu já mencionei qual era a parte do ECC, agora a parte registrada vs sem buffer.
Nos processadores modernos, o controlador de memória está no processador, começando há muito tempo pelos chips AMD Opteron e pela série Core i da Intel. A maioria das CPUs de desktop fala diretamente com os soquetes DIMM que contêm a RAM. Funciona e nenhuma lógica extra é necessária. Isso é barato de construir, e a velocidade é alta porque não há atraso entre o controlador de memória e a RAM.
Mas um controlador de memória pode apenas conduzir uma corrente limitada em altas velocidades. Isso significa que há um limite para quantos soquetes de memória podem ser adicionados a uma placa-mãe. (E, para torná-lo mais complexo, quanto os DIMMs podem usar, o que leva a classificações de memória. Vou pular isso, já que isso já é longo).
Nas placas para servidor, você geralmente deseja usar mais memória que um sistema de desktop. Portanto, um buffer de "registro" é adicionado à memória. As leituras dos chips no DIMM são primeiro copiadas para esse buffer. Um ciclo de clock mais tarde, esse buffer se conecta ao controlador de memória para transferir os dados.
Esse buffer / registro atrasa as coisas, tornando a memória mais lenta. Isso é indesejável e, portanto, é usado / necessário apenas em placas com muitos bancos de memória. A maioria das placas de consumidor não precisa disso e a maioria das CPUs de consumidor não suporta.
A RAM sem buffer diretamente conectada versus a RAM com buffer / registrada não é um caso em que uma é melhor ou pior que a outra. Eles apenas têm vantagens e desvantagens em termos de quantos slots de memória você pode ter. A RAM registrada permite mais RAM ao custo de alguma velocidade (e possivelmente despesa). Na maioria dos casos, em que você precisa de tanta memória quanto possível, essa memória extra compensa mais do que a RAM sendo executada em uma velocidade um pouco mais lenta.
A dúvida que estou tendo é (principalmente em relação à placa asus am3 +): a RAM sem buffer do ECC é tão boa quanto a RAM registrada no ECC (do ponto de vista da segurança e confiabilidade)? Ou é uma escolha pior. Eu não ligo muito para a velocidade. **
Do ponto de vista de segurança e estabilidade, o ECC sem buffer e o registro no ECC são os mesmos.
Mais detalhes: o servidor usará um gabinete de servidor com unidades de até 24 x 3 ½ '' e deve consumir o mínimo possível.
24 unidades vão consumir muita energia. Quanto depende das unidades. Minha unidade SAS de 140 GB e 15 K RPM está consumindo apenas 10 watts no modo inativo, o mesmo que o disco de 1 TB SATA 7k2. No uso ambos desenham mais.
Multiplique isso por 24. 24x10 Watt em modo inativo significa 240 watts, mantendo os pratos dos discos girando, superando a resistência do ar. Double-ish isso para uso.
LGA1155 parece ser, nesse sentido, uma aposta melhor (TDP ~ 20-95W) versus as demais (> 80W) pelo dobro do preço.
A Intel é melhor em CPUs de baixo consumo de energia, no momento da redação e nas CPUs mencionadas.
Qualquer sugestão é bem vinda. Digamos que menos de 120W em modo ocioso (~ com 10 discos rígidos em 24).
Se você usa o FreeBSD, observe bem o ZFS. Isso pode ser ótimo. Muitos de seus recursos mais avançados (por exemplo, desduplicação e / ou compactação) consomem muita energia da CPU e desejam muita memória. O ZFS para uso básico com o ZRAID funcionará bem nos conjuntos de CPU mencionados e com 16 GB, mas se você ativar recursos como a desduplicação, deverá examinar cuidadosamente a memória recomendada necessária para a capacidade do disco; Alguns guias recomendam até 5 GB por TB de armazenamento .
Mais duas coisas:
- Não vi nada sobre como conectar as unidades. Algumas placas podem ter até 10 portas SATA. Mas para qualquer coisa além disso, você precisará de cartões adicionais. Se você considerar o RAID de hardware, talvez seja melhor planejar isso desde o início.
- Falha na unidade: Se você usar multiplicadores de portas SATA , observe cuidadosamente como eles agem se uma unidade SATA falhar. Muitas vezes não é bonito. Não é um grande problema para uma instalação doméstica, mas muito pouco para empresas. Pode ser necessário considerar como as unidades individuais também lidam com erros. O motivo pelo qual algumas unidades são rotuladas como para uso em "NAS" ou "RAID" é que elas tratam os erros de maneira diferente das unidades comuns. Sem RAID, você deseja que a unidade tente novamente tantas vezes quanto possível. Com o RAID, você deseja que a unidade falhe rapidamente , para poder ler de outra cópia.