Ir al contenido

Memoria ECC

De Wikipedia, la enciclopedia libre
Los DIMM ECC suelen tener nueve chips de memoria en cada lado, uno más de lo habitual en los DIMM sin ECC (algunos módulos pueden tener 5 o 18).[1]

La memoria con código de corrección de errores (memoria ECC) es un tipo de almacenamiento de datos informáticos que utiliza un código de corrección de errores[2] (ECC) para detectar y corregir la corrupción de datos de n bits que se produce en la memoria.

Normalmente, la memoria ECC mantiene un sistema de memoria inmune a errores de un solo bit: los datos que se leen de cada palabra son siempre los mismos que los datos que se habían escrito en ella, incluso si uno de los bits realmente almacenados ha cambiado al estado incorrecto. La mayoría de las memorias no ECC no pueden detectar errores, aunque algunas memorias no ECC con soporte de paridad permiten la detección pero no la corrección.

La memoria ECC se utiliza en la mayoría de los ordenadores donde la corrupción de datos no puede tolerarse, como aplicaciones de control industrial, bases de datos críticas y cachés de memoria de infraestructura.

Antecedentes: errores de memoria

[editar]

Concepto

[editar]

Los códigos de corrección de errores protegen contra la corrupción de datos no detectada y se utilizan en ordenadores donde dicha corrupción es inaceptable, por ejemplo, en aplicaciones de cálculo científico y financiero, o en servidores de bases de datos y archivos. ECC también puede reducir el número de bloqueos en aplicaciones de servidor multiusuario y sistemas de máxima disponibilidad.

La interferencia eléctrica o magnética dentro de un sistema informático puede provocar que un solo bit de la memoria de acceso aleatorio dinámica (DRAM) cambie espontáneamente al estado opuesto. Inicialmente se pensó que esto se debía principalmente a las partículas alfa emitidas por contaminantes en el material de empaquetado de los chips, pero las investigaciones han demostrado que la mayoría de los errores blandos puntuales en los chips de DRAM se producen como resultado de la radiación de fondo, principalmente neutrones de secundarios de rayos cósmicos, que pueden cambiar el contenido de una o más celdas de memoria o interferir con la circuitería utilizada para leer o escribir en ellas.[3] Por lo tanto, las tasas de error aumentan rápidamente con la altitud; por ejemplo, en comparación con el nivel del mar, la tasa de flujo de neutrones es 3,5 veces mayor a 1,5 km y 300 veces mayor a 10-12 km (la altitud de crucero de los aviones comerciales).[4] Como resultado, los sistemas que operan a grandes altitudes requieren disposiciones especiales para la fiabilidad.

Como ejemplo, la nave espacial Cassini–Huygens, lanzada en 1997, contenía dos grabadores de vuelo idénticos, cada uno con 2,5 gigabits de memoria en forma de matrices de chips de DRAM comerciales. Debido a la funcionalidad EDAC incorporada, la telemetría de ingeniería de la nave informaba del número de errores de un solo bit por palabra (corregibles) y de errores de doble bit por palabra (incorregibles). Durante los primeros 2,5 años de vuelo, la nave informó de una tasa de error de un solo bit casi constante de unos 280 errores por día. Sin embargo, el 6 de noviembre de 1997, durante el primer mes en el espacio, el número de errores aumentó en más de un factor de cuatro en ese único día. Esto se atribuyó a un evento de partículas solares que había sido detectado por el satélite GOES 9.[5]

Hubo cierta preocupación de que, a medida que la densidad de la DRAM aumentara aún más, y por tanto los componentes de los chips se hicieran más pequeños, mientras que las tensiones de funcionamiento siguieran disminuyendo, los chips de DRAM se vieran afectados por esta radiación con mayor frecuencia, ya que las partículas de menor energía podrían cambiar el estado de una celda de memoria.[4] Por otro lado, las celdas más pequeñas son objetivos más pequeños, y los avances hacia tecnologías como SOI pueden hacer que las celdas individuales sean menos susceptibles, contrarrestando o incluso invirtiendo esta tendencia. Estudios recientes[6] demuestran que las alteraciones de un solo evento debidas a la radiación cósmica han disminuido drásticamente con la geometría del proceso, y las preocupaciones anteriores sobre el aumento de las tasas de error de las celdas de bits no tienen fundamento.

Tasas de error en el mundo real y consecuencias

[editar]

Los trabajos publicados entre 2007 y 2009 mostraron tasas de error muy variables, con más de 7 órdenes de magnitud de diferencia, que van desde 10−10 error/(bit·h), aproximadamente un error de bit por hora por gigabyte de memoria, hasta 10−17 error/(bit·h), aproximadamente un error de bit por milenio por gigabyte de memoria.[7][8][9] En la conferencia SIGMETRICS/Performance '09 se presentó un estudio a gran escala basado en el gran número de servidores de Google.[8] La tasa de error real encontrada fue varios órdenes de magnitud superior a la de los estudios anteriores a pequeña escala o de laboratorio, con entre 25.000 (2,5×10−11 error/(bit·h)) y 70.000 (7,0×10−11 error/(bit·h), o 1 error de bit por gigabyte de RAM cada 1,8 horas) errores por cada mil millones de horas de dispositivo por megabit. Más del 8% de los módulos de memoria DIMM se vieron afectados por errores al año.

La consecuencia de un error de memoria depende del sistema. En sistemas sin ECC, un error puede provocar un bloqueo o una corrupción de datos; en sitios de producción a gran escala, los errores de memoria son una de las causas más comunes de fallos de hardware en las máquinas.[10] Los errores de memoria pueden causar vulnerabilidades de seguridad.[10] Un error de memoria puede no tener consecuencias si cambia un bit que no provoca un mal funcionamiento observable ni afecta a los datos utilizados en los cálculos o guardados. Un estudio de simulación de 2010 demostró que, para un navegador web, solo una pequeña fracción de los errores de memoria causaban corrupción de datos, aunque, como muchos errores de memoria son intermitentes y están correlacionados, los efectos de los errores de memoria eran mayores de lo que cabría esperar para errores blandos independientes.[11]

Algunas pruebas concluyen que el aislamiento de las celdas de memoria DRAM puede ser sorteado por efectos secundarios no deseados de accesos especialmente diseñados a celdas adyacentes. Así, el acceso a los datos almacenados en la DRAM hace que las celdas de memoria pierdan sus cargas e interactúen eléctricamente, como resultado de la alta densidad de celdas en la memoria moderna, alterando el contenido de filas de memoria cercanas que en realidad no fueron direccionadas en el acceso original a la memoria. Este efecto se conoce como row hammer, y también se ha utilizado en algunos exploits de escalada de privilegios en seguridad informática.[12][13]

Un ejemplo de un error de un solo bit que sería ignorado por un sistema sin verificación de errores, detendría una máquina con verificación de paridad o sería corregido de forma invisible por ECC: un solo bit está fijado en 1 debido a un chip defectuoso, o se convierte en 1 debido a la radiación de fondo o cósmica; se carga una hoja de cálculo que almacena números en formato ASCII, y el carácter "8" (valor decimal 56 en la codificación ASCII) se almacena en el byte que contiene el bit fijo en su posición de bit más baja; luego, se realiza un cambio en la hoja de cálculo y se guarda. Como resultado, el "8" (0011 1000 binario) se ha convertido silenciosamente en un "9" (0011 1001).

Soluciones

[editar]

Se han desarrollado varios enfoques para tratar los cambios de bit no deseados, incluyendo la programación consciente de la inmunidad, la memoria de paridad de RAM y la memoria ECC.

Este problema puede mitigarse utilizando módulos DRAM que incluyan bits de memoria adicionales y controladores de memoria que exploten estos bits. Estos bits adicionales se utilizan para registrar paridad o para utilizar un código de corrección de errores (ECC). La paridad permite la detección de todos los errores de un solo bit (en realidad, cualquier número impar de bits incorrectos), pero no la corrección, por lo que el sistema tiene que continuar (simplemente señalando el problema) o detenerse. Los códigos de corrección de errores permiten corregir más errores; la cantidad depende del tipo exacto de memoria utilizada.

La memoria DRAM puede proporcionar una mayor protección contra los errores blandos mediante el uso de códigos de corrección de errores. Esta memoria de corrección de errores, conocida como memoria ECC o protegida por EDAC, es especialmente deseable para aplicaciones altamente tolerantes a fallos, como servidores, así como para aplicaciones en el espacio profundo debido al aumento de la radiación.

Algunos sistemas también "depuran" la memoria, leyendo periódicamente todas las direcciones y reescribiendo las versiones corregidas si es necesario para eliminar los errores blandos acumulados.

Esquemas

[editar]

Los subsistemas de memoria modernos pueden ofrecer integridad de datos a través de uno o más de los siguientes esquemas:[14]

  • Por controlador de memoria: Estos esquemas hacen que el controlador de memoria envíe o reciba datos adicionales al chip.
    • ECC de banda lateral (SBECC) es el enfoque tradicional de servidor. Los ECC se almacenan en chips DRAM separados y se transmiten con los datos a través de canales adicionales (bits extra por palabra). El controlador de memoria calcula los ECC al escribir, corrige errores al leer y notifica las correcciones y detecciones de errores al sistema operativo o firmware (UEFI o BIOS).
    • ECC en línea o ECC en banda (IBECC) no utiliza ancho de canal adicional y, como resultado, es compatible con módulos de memoria "no ECC". El controlador de memoria particiona el espacio físico.
      • En un estilo de implementación representado por el IBECC de Intel y el procesador RTOS de TI, el espacio de direcciones físicas se divide de modo que hay un bloque de memoria reservada.[15] Cada comando de escritura necesitaría ir acompañado de un comando de escritura adicional y lo mismo se aplica a los comandos de lectura. Esto resulta en un aumento aproximado del doble de la latencia de la memoria. Específicamente, la implementación de Intel tiene un impacto mínimo en el rendimiento en la navegación web y aplicaciones de productividad, pero puede reducir el rendimiento hasta en un 25% en cargas de trabajo de juegos y edición de vídeo.[16]
      • Es teóricamente posible simplemente particionar el canal existente (digamos, 64 bits en 56 bits de datos y 8 bits de verificación) para proporcionar un análogo de ECC de banda lateral. Una lectura superficial de la descripción de Synopsys de "ECC en línea" que menciona una partición del canal de 16 bits por chip llevaría a esta comprensión, pero esto no es muy común en productos comerciales.[17]
  • Por chip de memoria: ECC en el dado (ODECC), también llamado ECC en DRAM o ECC integrado,[18] es obligatorio en todos los módulos de memoria DDR5 y LPDDR6[19] para mitigar las mayores tasas de error asociadas con celdas de memoria más pequeñas. El almacenamiento ECC adicional y la circuitería de corrección de errores están integrados en los chips DRAM y son invisibles para el controlador de memoria. Los errores de transmisión no se corrigen ya que los ECC no se envían con los datos, y las correcciones y detecciones de errores no se notifican. La latencia adicional solo se introduce cuando se necesita la corrección de errores.
  • Por ambos
    • ECC de enlace añade corrección de errores al enlace de datos pero no al almacenamiento subyacente. El controlador de memoria calcula y transmite ECC con los datos al escribir en la DRAM, que verifica y corrige errores. Al leer, la DRAM calcula ECC que el controlador de memoria verifica. Forma parte de LPDDR5. Mientras que el ECC de banda lateral proporciona automáticamente redundancia a nivel de enlace, el ECC en banda/en línea que utiliza la reserva de espacio de direcciones físicas y el ECC en el dado no lo hacen; necesitarían una capa de ECC de enlace para protegerse contra la corrupción en la transmisión.

Notificación de errores

[editar]

Muchas implementaciones tempranas de memoria ECC, así como el ECC en el dado, enmascaran los errores corregibles, actuando "como si" el error nunca hubiera ocurrido, y solo notifican errores incorregibles. Las implementaciones modernas registran tanto los errores corregibles (CE) como los incorregibles (UE). Algunas personas reemplazan proactivamente los módulos de memoria que presentan altas tasas de error, para reducir la probabilidad de eventos de error incorregible.[20]

Implementaciones

[editar]

Memoria de servidor estándar: SECDED de banda lateral

[editar]

La memoria de servidor estándar está diseñada para un código de Hamming de corrección de errores de un solo bit y detección de errores dobles (SECDED), que permite corregir un error de un solo bit y detectar errores de dos bits por palabra (la unidad de transferencia del bus). Desde DDR SDRAM, el ancho de bus estándar (tamaño de palabra) en lo que respecta a la memoria es de 64 bits. Como resultado, la configuración típica entre DDR y DDR4 es una palabra de 72 bits con 64 bits de datos y 8 bits de verificación. DDR5 SDRAM divide el bus en dos subcanales de 32 bits algo independientes, por lo que la memoria ECC utiliza 80 bits de ancho en total, divididos entre dos canales de 40 bits (32 datos, 8 verificación).[21] ECC también se utiliza con tamaños más pequeños y más grandes.

Un controlador de memoria con capacidad ECC utiliza los bits adicionales para almacenar el código SECDED; la memoria solo es responsable de retener los bits extra. Desde finales de la década de 1990, el controlador de memoria también se comunica con el BIOS y mantiene un recuento de los errores detectados y corregidos, en parte para ayudar a identificar los módulos de memoria defectuosos antes de que el problema se vuelva catastrófico. La lectura del contador es compatible con muchos sistemas gracias al estándar SMBIOS, estando disponible en Linux, BSD y Windows (Windows 2000 y posteriores).[22]

Disposición de los bits

[editar]

La detección y corrección de errores depende de una expectativa de los tipos de errores que se producen. Implícitamente, se asume que el fallo de cada bit en una palabra de memoria es independiente, lo que resulta en la improbabilidad de dos errores simultáneos. Este solía ser el caso cuando los chips de memoria tenían un bit de ancho, lo que era típico en la primera mitad de la década de 1980; los desarrollos posteriores trasladaron muchos bits al mismo chip.

Esta debilidad se aborda mediante diversas tecnologías, incluyendo Chipkill de IBM, ECC extendido de Sun Microsystems, Chipspare de Hewlett-Packard y Corrección de datos de un solo dispositivo (SDDC) de Intel, todas las cuales aseguran que el fallo de un chip de memoria solo afecte a un bit por palabra ECC. Esto se logra dispersando los bits de las palabras ECC entre los chips, una forma de entrelazado. Para asegurar que cada chip solo reciba un bit por palabra, puede ser necesario entrelazar a través de múltiples módulos de memoria (sticks).

El entrelazado en general es una técnica útil para defenderse contra fallos correlacionados de múltiples bits. Un rayo cósmico, por ejemplo, puede alterar múltiples bits físicamente vecinos a través de múltiples palabras, asociando bits vecinos a diferentes palabras. Siempre que una alteración de un solo evento (SEU) no supere el umbral de error (por ejemplo, un solo error) en una palabra particular entre accesos, puede corregirse (por ejemplo, mediante un código de corrección de errores de un solo bit), y se puede mantener un sistema de memoria efectivamente libre de errores.[23]

Por el propio chip de memoria

[editar]

Algunos chips DRAM incluyen circuitos de corrección de errores internos "en chip" o "en el dado", que permiten a los sistemas con controladores de memoria no ECC obtener la mayoría de los beneficios de la memoria ECC.[24][25] En algunos sistemas, se puede lograr un efecto similar utilizando módulos de memoria EOS.

Como se mencionó anteriormente, el ECC en el dado es obligatorio en DDR5 y LPDDR6. Sin embargo, su falta de notificación significa que se sabe muy poco sobre el verdadero estado del chip de memoria hasta que los errores superan la capacidad del algoritmo en el dado para realizar la corrección; no se transmite información sobre cuánto "margen" existe. Se han construido algoritmos sofisticados para inferir la existencia de errores corregidos basándose en errores no corregidos.[18]

Ubicación de la corrección

[editar]

Muchos sistemas de memoria ECC utilizan un circuito EDAC "externo" entre la CPU y la memoria. Algunos sistemas con memoria ECC utilizan sistemas EDAC internos y externos; el sistema EDAC externo debe estar diseñado para corregir ciertos errores que el sistema EDAC interno no puede corregir.[24] Las CPU modernas de escritorio y servidor integran el circuito EDAC en la CPU,[26] incluso antes del cambio hacia controladores de memoria integrados en la CPU, que están relacionados con la arquitectura NUMA. La integración de la CPU permite un sistema EDAC sin penalización durante el funcionamiento sin errores.

Algoritmos de corrección

[editar]

En 2009, los códigos de corrección de errores más comunes utilizaban códigos de Hamming o Hsiao que proporcionan corrección de errores de un solo bit y detección de errores de dos bits (SEC-DED). Se han propuesto otros códigos de corrección de errores para proteger la memoria: códigos de corrección de errores de dos bits y detección de errores de tres bits (DEC-TED), códigos de corrección de errores de un solo nibble y detección de errores de dos nibbles (SNC-DND), códigos de corrección de errores Reed-Solomon, etc. Sin embargo, en la práctica, la corrección de múltiples bits suele implementarse mediante el entrelazado de múltiples códigos SEC-DED.[27][28]

La investigación temprana intentó minimizar el área y los retrasos de los circuitos ECC. Hamming demostró primero que los códigos SEC-DED eran posibles con una matriz de comprobación particular. Hsiao demostró que una matriz alternativa con columnas de peso impar proporciona capacidad SEC-DED con menos área de hardware y menor retardo que los códigos SEC-DED de Hamming tradicionales.[29] La investigación más reciente también intenta minimizar el consumo de energía, además de minimizar el área y el retardo.[30][31]

Redundancia en lugar de ECC

[editar]

Los controladores de memoria con corrección de errores utilizan tradicionalmente códigos de corrección de errores óptimos en espacio, como Hamming y Hsiao. Si el coste y el espacio no son una preocupación pero la velocidad sí lo es, se puede utilizar una redundancia modular triple (TMR) debido a su implementación de hardware más rápida.[32] Los sistemas de satélites espaciales suelen utilizar TMR,[33][34][35] aunque la RAM de los satélites suele utilizar la corrección de errores de Hamming.[36]

Ordenadores personales

[editar]
En 1982, esta placa de memoria de 512 KB de Cromemco utilizaba 22 bits de almacenamiento por palabra de 16 bits para realizar la corrección de errores de un solo bit.

Seymour Cray dijo famosamente "la paridad es para los granjeros" cuando se le preguntó por qué omitió esto en el CDC 6600.[37] Más tarde, incluyó la paridad en el CDC 7600, lo que llevó a los críticos a comentar que "al parecer, muchos granjeros compran ordenadores". El IBM PC original y todos los PC hasta principios de la década de 1990 utilizaban la verificación de paridad.[38] Los posteriores, en su mayoría, no lo hacían.

La mayoría de las rutas de datos de un ordenador personal de la década de 2020, incluyendo PCIe, SATA, la interconexión entre chips y el almacenamiento en disco, tienen alguna forma de protección ECC. La falta de ECC en la memoria principal es, en comparación, inusual, especialmente dada la mayor probabilidad de corrupción. Linus Torvalds escribió un extenso post en un foro en 2021 atacando la decisión de Intel de no incluir soporte ECC en las plataformas de escritorio, cuando las plataformas de escritorio contemporáneas de AMD podían utilizar (pero no necesariamente activar la función ECC en) DIMM registrados con soporte ECC.[39]

Caché

[editar]

Muchas CPU utilizan códigos de corrección de errores en la caché en chip, incluyendo los procesadores Intel Itanium, Xeon, Core y Pentium (desde la microarquitectura P6)[40],[41] los procesadores AMD Athlon, Opteron, todos los basados en Zen-[42] y Zen+-[43] (EPYC, EPYC Embedded, Ryzen y Ryzen Threadripper), y el DEC Alpha 21264.[27][44]

A 2006, EDC/ECC y ECC/ECC son las dos técnicas de protección contra errores de caché más comunes utilizadas en los microprocesadores comerciales. La técnica EDC/ECC utiliza un código de detección de errores (EDC) en la caché de nivel 1. Si se detecta un error, los datos se recuperan de la caché de nivel 2 protegida por ECC. La técnica ECC/ECC utiliza una caché de nivel 1 protegida por ECC y una caché de nivel 2 protegida por ECC.[45] Las CPU que utilizan la técnica EDC/ECC siempre realizan escritura directa de todas las operaciones STORE a la caché de nivel 2, de modo que cuando se detecta un error durante una lectura de la caché de datos de nivel 1, se puede recuperar una copia de esos datos de la caché de nivel 2.

Memoria registrada

[editar]

La memoria registrada o almacenada en búfer no es lo mismo que ECC; las tecnologías realizan funciones diferentes. Es habitual que la memoria utilizada en servidores sea tanto registrada, para permitir el uso de muchos módulos de memoria sin problemas eléctricos, como ECC, para la integridad de los datos.

Coste y beneficios

[editar]

El uso de ECC para aumentar la seguridad de los datos suele conllevar un mayor gasto, lo que resulta en un rendimiento ligeramente inferior y mayores costes de memoria.

La memoria ECC es más cara que la memoria no ECC debido a su funcionalidad adicional de verificación de errores.[46] El coste adicional añadido de la memoria ECC para 1 GB en 2010 varía entre 0 y 15 dólares, dependiendo del rendimiento y del fabricante.[47] El diseño de ECC y su propósito en cargas de trabajo de alta fiabilidad lo posicionan para tener una sobrecarga adicional para la validación y los diseños de circuitos adicionales dentro de la memoria.[10] Estas características suelen dar lugar a mayores costes para la implementación de ECC.

Los fabricantes de placas base pueden optar por añadir compatibilidad ECC de diversos niveles según el segmento del mercado.[48] Algunas placas base y procesadores con ECC son capaces de soportar ECC sin búfer (no registrada), pero también funcionarán con memoria no ECC; el firmware del sistema activa la funcionalidad ECC si se instala memoria ECC.[49]

ECC puede reducir el rendimiento de la memoria en aproximadamente un 2-3 por ciento en algunos sistemas, dependiendo de la aplicación y la implementación, debido al tiempo adicional necesario para que los controladores de memoria ECC realicen la verificación de errores.[50] Sin embargo, los sistemas modernos integran las pruebas ECC en la CPU, sin generar ningún retraso adicional en los accesos a la memoria siempre que no se detecten errores.[26][51][52]

Este no es el caso del ECC en banda, que almacena las tablas utilizadas para la protección en una región reservada de la memoria principal del sistema, compatible con Intel para Chromebooks, que mostró poco impacto en la navegación web y tareas de productividad, pero causó hasta un 25% de reducción en los puntos de referencia de juegos y edición de vídeo.[16]

Referencias

[editar]
  1. ↑ Werner Fischer. «RAM Revealed». ADMIN Magazine. Consultado el 20 de octubre de 2014.
  2. ↑ La mayoría de las memorias ECC utilizan un código SECDED.
  3. ↑ Single Event Upset at Ground Level, Eugene Normand, Member, IEEE, Boeing Defense & Space Group, Seattle, WA 98124-2499
  4. 1 2 Mittal, Sparsh; Vetter, Jeffrey S. (2016). «A Survey of Techniques for Modeling and Improving Reliability of Computing Systems». IEEE Transactions on Parallel and Distributed Systems 27 (4): 1226-1238. Bibcode:2016ITPDS..27.1226M. OSTI 1261262. doi:10.1109/TPDS.2015.2426179.
  5. ↑ Gary M. Swift and Steven M. Guertin. "In-Flight Observations of Multiple-Bit Upset in DRAMs". Jet Propulsion Laboratory
  6. ↑ Borucki, "Comparison of Accelerated DRAM Soft Error Rates Measured at Component and System Level", 46th Annual International Reliability Physics Symposium, Phoenix, 2008, pp. 482–487
  7. ↑ Borucki, "Comparison of Accelerated DRAM Soft Error Rates Measured at Component and System Level", 46th Annual International Reliability Physics Symposium, Phoenix, 2008, pp. 482–487
  8. 1 2
  9. ↑ «A Memory Soft Error Measurement on Production Systems». Archivado desde el original el 14 de febrero de 2017. Consultado el 27 de junio de 2011.
  10. 1 2 3
  11. ↑ Li, Huang; Shen, Chu (2010). «A Realistic Evaluation of Memory Hardware Errors and Software System Susceptibility». Usenix Annual Tech Conference 2010.
  12. ↑ Yoongu Kim; Ross Daly; Jeremie Kim; Chris Fallin; Ji Hye Lee; Donghyuk Lee; Chris Wilkerson; Konrad Lai et al. (24 de junio de 2014). «Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors». ece.cmu.edu. IEEE. Consultado el 10 de marzo de 2015.
  13. ↑ Dan Goodin (10 de marzo de 2015). «Cutting-edge hack gives super user status by exploiting DRAM weakness». Ars Technica. Consultado el 10 de marzo de 2015.
  14. ↑ «ECC Technical Details». MemTest86. PassMark Software. Consultado el 2 de agosto de 2025.
  15. ↑ «9.13. Enabling TI's inline ECC for DDR — Processor SDK RTOS J784S4». software-dl.ti.com.
  16. 1 2 Ganesh T S (29 de enero de 2023). dead «ASRock Industrial NUCS BOX-1360P/D4 Review: Raptor Lake-P Impresses, plus Surprise ECC». pp. 2-6. Archivado desde el original el 30 de enero de 2023. Consultado el 29 de enero de 2024.
  17. ↑ Sankaranarayanan, Vadhiraj (19 de octubre de 2020). «Error Correction Code (ECC) in DDR Memories». Synopsys. Consultado el 2 de agosto de 2025.
  18. 1 2 Patel, Minesh; Kim, Jeremie; Hassan, Hasan; Mutlu, Onur (June 2019). «Understanding and Modeling On-Die Error Correction in Modern DRAM: An Experimental Study Using Real Devices». 2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN). IEEE. pp. 13-25. ISBN 978-1-7281-0057-9. doi:10.1109/DSN.2019.00017.
  19. ↑ Williams, Wayne (12 de julio de 2025). «LPDDR6 likely to debut in 2026 as JEDEC publishes new standard document and targets mobile devices and AI - desktop PCs and workstations will have to wait». TechRadar. Consultado el 2 de agosto de 2025.
  20. ↑ Doug Thompson, Mauro Carvalho Chehab. "EDAC – Error Detection And Correction". (enlace roto disponible en este archivo).. 2005–2009. "El objetivo del módulo del kernel 'edac' es detectar y notificar los errores que ocurren dentro del sistema informático que se ejecuta bajo linux."
  21. ↑ «DDR5 Memory Standard: An introduction to the next generation of DRAM module technology - Kingston Technology». Kingston Technology Company (en inglés).
  22. ↑ DOMARS. «!mca». Microsoft Learn (en inglés estadounidense). Consultado el 27 de marzo de 2021.
  23. ↑ «Using StrongArm SA-1110 in the On-Board Computer of Nanosatellite». Tsinghua Space Center, Tsinghua University, Beijing. Archivado desde el original el 2 de octubre de 2011. Consultado el 16 de febrero de 2009.
  24. 1 2 A. H. Johnston. "Space Radiation Effects in Advanced Flash Memories". (enlace roto disponible en este archivo).. NASA Electronic Parts and Packaging Program (NEPP). 2001.
  25. ↑ «ECC DRAM». Intelligent Memory. Archivado desde el original el 12 de febrero de 2019. Consultado el 12 de junio de 2021.
  26. 1 2 «AMD-762™ System Controller Software/BIOS Design Guide, p. 179».
  27. 1 2 Doe Hyun Yoon; Mattan Erez. "Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches". 2009. p. 3.
  28. ↑ Daniele Rossi; Nicola Timoncini; Michael Spica; Cecilia Metra. "Error Correcting Code Analysis for Cache Memory High Reliability and Performance". (enlace roto disponible en este archivo)..
  29. ↑ M. Y. Hsiao. "A Class of Optimal Minimum Odd-weight-column SEC-DED Codes". 1970.
  30. ↑ Shalini Ghosh; Sugato Basu; and Nur A. Touba. "Selecting Error Correcting Codes to Minimize Power in Memory Checker Circuits". (enlace roto disponible en este archivo).. P. 2, 4.
  31. ↑ Chris Wilkerson; Alaa R. Alameldeen; Zeshan Chishti; Wei Wu; Dinesh Somasekhar; Shih-lien Lu. "Reducing cache power with low-cost, multi-bit error-correcting codes". doi 10.1145/1816038.1815973 10.1145/1816038.1815973.
  32. ↑ «Using StrongArm SA-1110 in the On-Board Computer of Nanosatellite». Tsinghua Space Center, Tsinghua University, Beijing. Archivado desde el original el 2 de octubre de 2011. Consultado el 16 de febrero de 2009.
  33. ↑ «Actel engineers use triple-module redundancy in new rad-hard FPGA». Military & Aerospace Electronics. Archivado desde el original el 14 de julio de 2012. Consultado el 16 de febrero de 2009.
  34. ↑ «SEU Hardening of Field Programmable Gate Arrays (FPGAs) For Space Applications and Device Characterization». Klabs.org. 3 de febrero de 2010. Archivado desde el original el 25 de noviembre de 2011. Consultado el 23 de noviembre de 2011.
  35. ↑ «FPGAs in Space». Techfocusmedia.net. Consultado el 23 de noviembre de 2011. (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  36. ↑ «Commercial Microelectronics Technologies for Applications in the Satellite Radiation Environment». Radhome.gsfc.nasa.gov. Archivado desde el original el 4 de marzo de 2001. Consultado el 23 de noviembre de 2011.
  37. ↑ «CDC 6600». Microsoft Research. Consultado el 23 de noviembre de 2011.
  38. ↑ Kozierok, Charles M. (17 de abril de 2001). «Parity Checking». The PC Guide. Memory Errors, Detection and Correction. Archivado desde dead el original el 12 de febrero de 2019. Consultado el 23 de noviembre de 2011.
  39. ↑ «Linus Torvalds On The Importance Of ECC RAM, Calls Out Intel's "Bad Policies" Over ECC». www.phoronix.com (en inglés). 3 de enero de 2021.
  40. ↑ Intel Corporation. "Intel Xeon Processor E7 Family: Reliability, Availability, and Serviceability". 2011. p. 12.
  41. ↑ «Bios and Cache». www.custom-build-computers.com. Consultado el 27 de marzo de 2021.
  42. ↑ «AMD Zen microarchitecture — Memory Hierarchy». WikiChip. Consultado el 15 de octubre de 2018.
  43. ↑ «AMD Zen+ microarchitecture — Memory Hierarchy». WikiChip. Consultado el 15 de octubre de 2018.
  44. ↑ Jangwoo Kim; Nikos Hardavellas; Ken Mai; Babak Falsafi; James C. Hoe. "Multi-bit Error Tolerant Caches Using Two-Dimensional Error Coding". 2007. p. 2.
  45. ↑ Nathan N. Sadler and Daniel J. Sorin. "Choosing an Error Protection Scheme for a Microprocessor's L1 Data Cache". 2006. p. 1.
  46. ↑ «What Are the Benefits of ECC Memory?». Lenovo. Consultado el 1 de octubre de 2025.
  47. ↑ Harrell, John (2010). «The Importance of ECC Memory in Your Substation Computer». Schweitzer Engineering Laboratories, Inc.: 4.
  48. ↑ Schroeder, B.; Gibson, G.A. (June 2006). «A large-scale study of failures in high-performance computing systems». International Conference on Dependable Systems and Networks (DSN'06). pp. 249-258. ISBN 0-7695-2607-1. doi:10.1109/DSN.2006.5.
  49. ↑ ECC vs. Non-ECC MEMORY (en inglés) (Rev A edición). viking TECHNOLOGY. 26 de mayo de 2020. p. 10.
  50. ↑ Kozierok, Charles M. (17 de abril de 2001). «ECC». The PC Guide. Memory Errors, Detection and Correction. Archivado desde dead el original el 6 de febrero de 2019. Consultado el 23 de noviembre de 2011.
  51. ↑ Benchmark of AMD-762/Athlon platform with and without ECC. (enlace roto disponible en este archivo)..
  52. ↑ «ECCploit: ECC Memory Vulnerable to Rowhammer Attacks After All». Systems and Network Security Group at VU Amsterdam. 12 de noviembre de 2018. Consultado el 22 de noviembre de 2018.

Enlaces externos

[editar]