¿Por qué se necesitan diferentes memorias RAM para ECC?

TLDR; Sí, se puede y se ha hecho, pero no es tan eficiente, así que no espere que desaparezcan los DIMM ECC.

—-

Cuando recién comenzaba en los años 90, hice esta pregunta a un par de arquitectos de CPU y me miraron como si estuviera absolutamente, ingenuamente loca y / o estúpida. La complejidad de la sugerencia es alucinante. Estaban diseñando CPU que estaban hambrientos de rendimiento de memoria y renunciar a cualquier ancho de banda de datos para reservar bits para ECC era contraproducente. Era mucho más simple simplemente pegar los bits de ECC en el costado con algunos cables adicionales. De ahí la necesidad de diferentes DIMM para soportar ECC.

Hoy en día, hay controladores de memoria que implementan ECC ‘en línea’ exactamente como usted sugiere. El 64b ECC tradicional requiere una sobrecarga de 9/8 (12.5%). Eso es 8 bits adicionales por 64. El ECC en línea utiliza parte del ancho de banda y la capacidad del sistema de memoria para hacer lo mismo. No es ideal, pero cuando las supercomputadoras querían usar la aceleración de GPU, la integridad de los datos se vuelve importante en comparación con la salida de una tarjeta gráfica.

Nvidia se implementó por primera vez en Tesla y las GPU posteriores, pero no en las tarjetas gráficas, solo en las tarjetas Quadro de coprocesador HPC. Intel lo tenía en los procesadores Phi anteriores. Ahora que HBM2 tiene una ruta de datos nativa de 144b, volverán a usar un ECC tradicional.

Las GPU Kepler GK110 ofrecieron protección ECC para GDDR5 al asignar parte de la memoria disponible para almacenamiento ECC explícito. El 6.25% del GDDR5 total está reservado para bits ECC. En el caso de un Tesla K40 de 12 GB (por ejemplo), 750 MB de su memoria total están reservados para la operación ECC, lo que resulta en 11.25 GB (de 12 GB) de memoria disponible con ECC activado para Tesla K40. Además, el acceso a bits ECC provoca una pequeña disminución en el ancho de banda de la memoria en comparación con el caso no ECC.

La sobrecarga indicada es menor que el 12.5% ​​señalado porque estas soluciones ejecutan ECC sobre tamaños de palabras más grandes. La sobrecarga del 6.25% implica un tamaño de palabra de 128 bits.

Hasta donde yo sé, el algoritmo ECC se implementa en el controlador de memoria o en la CPU. La razón principal que puedo imaginar es que la memoria ECC necesitaría enviar datos con más bits. Si un dispositivo de memoria que no sea ECC devolverá una PALABRA de 64 bits, entonces el dispositivo de memoria ECC necesitaría devolver 64 + n bits donde n es el número de bits de paridad utilizados.