ECC parece corregir solo errores de un solo bit.
Correcto. Corregir más errores requeriría más bits. Tal como están las cosas, ya usa 10 bits para almacenar 8 bits de información, 'desperdiciando' el 20% de los chips de memoria para permitir una corrección de un solo bit y hasta dos bits de detección de errores.
Funciona de la siguiente manera. Imagina una 0
o una 1
. Si leo cualquiera de los dos, solo tengo que esperar leer lo correcto. Si un 0 se volcó a un 1 por alguna radiación cósmica o por un chip malo, entonces nunca lo sabré.
En el pasado tratamos de resolver eso con paridad. Parity estaba agregando un noveno bit por cada 8 bits almacenados. Verificamos cuántos ceros y cuántos 1 había en el byte. El noveno se estableció para que sea un número par. (para una paridad uniforme) Si alguna vez leyó un byte y el número estaba equivocado, entonces sabía que algo estaba mal. Sin embargo, no sabes qué parte estuvo mal.
ECC se expandió en eso. Utiliza 10 bits y un algoritmo complejo para descubrir cuándo se volcó un solo bit. También sabe cuál era el valor original. Una manera muy simple de explicar cómo lo hace sería esto:
Reemplace todos los 0
s con000
. Reemplace todos los 1
s con 111
.
Ahora puedes leer seis combinaciones:
000
001
010
100
101
111
Nunca estamos 100% seguros de lo que se almacenó originalmente. Si leemos000
entonces eso podría haber sido justo 000
lo que esperábamos, o los tres bits podrían haber cambiado. Esto último es muy improbable. Los bits no cambian aleatoriamente, aunque sucede. Digamos que sucede una de cada diez veces para algunos cálculos fáciles (la realidad es mucho menos). Eso funciona con las siguientes posibilidades de leer el valor correcto:
000
-> Cualquiera 000
(99.9% seguro), o un triple flip (1/1000 de probabilidad)
001
-> Sabemos que algo salió mal. Pero fue
000
y un bit volcó (posibilidad 1:10), o fue
111
y dos bits voltearon (una probabilidad 1: 100). Así que tratémoslo como si leyeramos 000
pero registramos el error.
010
-> Igual que el anterior.
100
-> Igual que el anterior.
011
-> Igual que el anterior, pero suponiendo que fuera un 111
101
-> Igual que el anterior, pero suponiendo que fuera un 111
110
-> Igual que el anterior, pero suponiendo que fuera un 111
111
-> O111
(99.9% seguro), o un triple flip (1/1000 de probabilidad)
111
-> O000
(99.9% seguro), o un triple flip (1/1000 de probabilidad)
Los ECC hacen trucos similares pero lo hacen de manera más eficiente. Para 8 bits (un byte) solo usan 10 bits para detectar y corregir.
La RAM registrada de ECC solo se puede usar con placas de estación de trabajo / servidor ECC sin búfer se puede usar en Intel Xeon lga1155 o AMD AM3 + en las placas Asus.
Ya mencioné cuál era la parte de ECC, ahora la parte registrada frente a la parte sin búfer.
En las CPU modernas, el controlador de memoria está en el dado de la CPU, comenzando hace mucho tiempo para los chips AMD Opteron y con la serie Core i para Intel. La mayoría de las CPU de escritorio se comunican directamente con los zócalos DIMM que sostienen la RAM. Funciona y no se necesita lógica adicional. Es barato de construir, y la velocidad es alta porque no hay demoras desde el controlador de memoria a la RAM.
Pero un controlador de memoria solo puede conducir una corriente limitada a altas velocidades. Esto significa que hay un límite en la cantidad de sockets de memoria que se pueden agregar a una placa base. (Y para hacerlo más complejo, cuánto pueden usar los DIMM, lo que lleva a rangos de memoria. Lo omitiré ya que esto ya es largo).
En las placas de servidor, a menudo desea utilizar más memoria que un sistema de escritorio. Por lo tanto, se agrega un búfer de "registro" a la memoria. Las lecturas de los chips en el DIMM se copian primero en este búfer. Un ciclo de reloj más tarde, este búfer se conecta al controlador de memoria para transferir los datos.
Este búfer / registro retrasa las cosas, haciendo que la memoria sea más lenta. Eso no es deseable y, por lo tanto, solo se usa / necesita en placas que tienen muchos bancos de memoria. La mayoría de las placas de consumo no necesitan esto, y la mayoría de las CPU de consumo no lo admiten.
La RAM sin búfer conectada directamente frente a la RAM registrada / con búfer no es un caso en el que uno sea mejor o peor que el otro. Simplemente tienen diferentes compensaciones en términos de cuántas ranuras de memoria puede tener. La RAM registrada permite más RAM a costa de cierta velocidad (y posiblemente gasto). En la mayoría de los casos donde necesita tanta memoria como sea posible, esa memoria adicional compensa con creces la RAM que se ejecuta a una velocidad ligeramente más lenta.
La duda que tengo es (principalmente con respecto a la placa asus am3 +): ¿la RAM sin búfer ECC es tan buena como la RAM registrada con ECC (desde el punto de vista de la seguridad y la fiabilidad)? ¿O es una peor elección? No me importa mucho la velocidad. **
Desde el punto de vista de la seguridad y la estabilidad, ECC sin búfer y ECC registrado son lo mismo.
Más detalles: el servidor usará una carcasa de servidor con unidades de hasta 24 x 3 ½ '' y debería consumir la menor cantidad posible.
24 unidades consumirán mucha energía. Cuánto depende de las unidades. Mi unidad SAS de 140 GB y 15 K RPM está consumiendo solo 10 vatios en reposo, igual que el disco SATA 7k2 de 1 TB. En uso ambos dibujan más.
Multiplique eso por 24. 24x10 vatios en inactivo significa 240 vatios simplemente manteniendo los discos girando, superando la resistencia del aire. Doble ish para uso.
LGA1155 parece ser en ese sentido una mejor apuesta (TDP ~ 20-95W) en comparación con los demás (> 80W) por el doble del precio.
Intel es mejor con CPU de baja potencia, al momento de escribir y para las CPU que mencionó.
Cualquier sugerencia es bienvenida. Digamos menos de 120W en inactivo (~ con 10 discos duros de 24).
Si optas por FreeBSD, mira detenidamente a ZFS. Puede ser genial Muchas de sus funciones más avanzadas (por ejemplo, deduplicación y / o compresión) utilizan una gran potencia de la CPU y necesitan mucha memoria. ZFS para uso básico con ZRAID funcionará bien en ambos conjuntos de CPU que mencionó y con 16 GB, pero si activa funciones como la deduplicación, debe buscar cuidadosamente la memoria recomendada necesaria para la capacidad de su disco; Se recomiendan hasta 5 GB por TB de almacenamientoAlgunas guías .
Dos cosas mas:
- No vi nada sobre conectar las unidades. Algunas placas pueden ir hasta 10 puertos SATA. Pero para cualquier cosa por encima de eso, necesitará tarjetas adicionales. Si considera el RAID de hardware, puede ser mejor planificarlo desde el principio.
- Falla de la unidad: si usa multiplicadores de puerto SATA , observe cuidadosamente cómo actúan si falla una unidad SATA. A menudo no es bonito. No es un gran problema para una configuración doméstica, pero en gran medida no es de grado empresarial. Es posible que también deba considerar cómo las unidades individuales manejan los errores. La razón por la que algunas unidades están etiquetadas como para uso "NAS" o "RAID" es que manejan los errores de manera diferente a las unidades normales. Sin RAID, desea que la unidad vuelva a intentarlo tantas veces como sea posible. Con RAID, desea que la unidad falle rápidamente , para que pueda leer desde otra copia.