La memoria con código de corrección de errores ( memoria ECC ) es un tipo de almacenamiento de datos informático que utiliza un código de corrección de errores [ a ] (ECC) para detectar y corregir la corrupción de datos de n bits que se produce en la memoria.
Por lo general, 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 que se escribieron en ella, incluso si uno de los bits almacenados se ha cambiado a un estado incorrecto. La mayoría de las memorias que no son ECC no pueden detectar errores, aunque algunas memorias que sí admiten paridad permiten la detección, pero no la corrección.
La memoria ECC se utiliza en la mayoría de los ordenadores donde no se puede tolerar la corrupción de datos, como en aplicaciones de control industrial, bases de datos críticas y cachés de memoria de infraestructura.
Antecedentes: errores de memoria
Concepto
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, como por ejemplo en aplicaciones informáticas científicas y financieras, o en servidores de bases de datos y archivos . Los códigos de corrección de errores también pueden reducir el número de fallos 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 memoria de acceso aleatorio dinámico ( DRAM ) cambie espontáneamente al estado opuesto. Inicialmente se pensó que esto se debía principalmente a partículas alfa emitidas por contaminantes en el material de encapsulado del chip, pero la investigación ha demostrado que la mayoría de los errores transitorios en los chips DRAM ocurren como resultado de la radiación de fondo , principalmente neutrones de los secundarios de los rayos cósmicos , que pueden cambiar el contenido de una o más celdas de memoria o interferir con los circuitos utilizados para leer o escribir en ellas. [ 2 ] 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). [ 3 ] Como resultado, los sistemas que operan a grandes altitudes requieren disposiciones especiales para garantizar la fiabilidad.
Como ejemplo, la nave espacial Cassini-Huygens , lanzada en 1997, contenía dos registradores de vuelo idénticos, cada uno con 2,5 gigabits de memoria en forma de matrices de chips DRAM comerciales. Gracias a la funcionalidad EDAC integrada , la telemetría de ingeniería de la nave espacial informaba del número de errores de un bit por palabra (corregibles) y de errores de dos bits por palabra (no corregibles). Durante los primeros 2,5 años de vuelo, la nave espacial registró una tasa de errores de un bit casi constante de unos 280 errores al 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 cuatro veces 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. [ 4 ]
Existía cierta preocupación de que, a medida que la densidad de DRAM aumenta y, por lo tanto, los componentes de los chips se vuelven más pequeños, mientras que los voltajes de operación continúan disminuyendo, los chips DRAM se verán afectados por dicha radiación con mayor frecuencia, ya que las partículas de menor energía podrán cambiar el estado de una celda de memoria. [ 3 ] Por otro lado, las celdas más pequeñas hacen objetivos más pequeños, y los avances hacia tecnologías como SOI pueden hacer que las celdas individuales sean menos susceptibles y, por lo tanto, contrarrestar, o incluso revertir, esta tendencia. Estudios recientes [ 5 ] muestran que las perturbaciones de eventos únicos debido 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 son infundadas.
Tasas de error y consecuencias en el mundo real
Los trabajos publicados entre 2007 y 2009 mostraron tasas de error muy variables con diferencias de más de 7 órdenes de magnitud, que van desde10 −10 error/(bit·h) , aproximadamente un error de bit por hora por gigabyte de memoria, a10 −17 error/(bit·h) , aproximadamente un error de bit por milenio por gigabyte de memoria. [ 5 ] [ 6 ] [ 7 ] Un estudio a gran escala basado en la gran cantidad de servidores de Google se presentó en la conferencia SIGMETRICS/Performance '09. [ 6 ] La tasa de error real encontrada fue varios órdenes de magnitud mayor que 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 errores/(bit·h) , o 1 error de bit por gigabyte de RAM cada 1,8 horas) errores por mil millones de horas de dispositivo por megabit. Más del 8 % de los módulos de memoria DIMM se vieron afectados por errores cada año.
La consecuencia de un error de memoria depende del sistema. En sistemas sin ECC, un error puede provocar un fallo del sistema o la corrupción de datos; en entornos de producción a gran escala, los errores de memoria son una de las causas de fallos de hardware más comunes. [ 6 ] Los errores de memoria pueden generar vulnerabilidades de seguridad. [ 6 ] Un error de memoria puede no tener consecuencias si modifica un bit que no provoque un mal funcionamiento observable ni afecte a los datos utilizados en cálculos o guardados. Un estudio de simulación de 2010 demostró que, en un navegador web, solo una pequeña fracción de los errores de memoria causaba corrupción de datos, aunque, dado que muchos errores de memoria son intermitentes y están correlacionados, sus efectos fueron mayores de lo esperado para errores transitorios independientes. [ 8 ]
Algunas pruebas concluyen que el aislamiento de las celdas de memoria DRAM puede eludirse mediante efectos secundarios no deseados de accesos especialmente diseñados a celdas adyacentes. De este modo, el acceso a los datos almacenados en la DRAM provoca que las celdas de memoria filtren sus cargas e interactúen eléctricamente, como resultado de la alta densidad de celdas en la memoria moderna, alterando el contenido de las 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 seguridad informática para la escalada de privilegios . [ 9 ] [ 10 ]
Un ejemplo de un error de un solo bit que sería ignorado por un sistema sin comprobación de errores, detendría una máquina con comprobación de paridad o sería corregido invisiblemente por ECC: un solo bit se queda atascado en 1 debido a un chip defectuoso, o cambia a 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 atascado 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 100 0 binario) se ha convertido silenciosamente en un "9" (0011 100 1 ).
Soluciones
Se han desarrollado varios enfoques para lidiar con los cambios de bits no deseados, incluyendo la programación con conciencia de inmunidad, la memoria de paridad RAM y la memoria ECC .
Este problema se puede mitigar utilizando módulos DRAM con bits de memoria adicionales y controladores de memoria que aprovechen estos bits. Estos bits adicionales se utilizan para registrar la paridad o para aplicar un código de corrección de errores (ECC). La paridad permite detectar todos los errores de un solo bit (en realidad, cualquier número impar de bits erróneos), pero no corregirlos, por lo que el sistema debe 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 mayor protección contra errores transitorios gracias al uso de códigos de corrección de errores. Este tipo de memoria con corrección de errores , conocida como memoria ECC o protegida por EDAC , es especialmente deseable para aplicaciones que requieren alta tolerancia a fallos, como servidores, así como para aplicaciones en el espacio profundo debido a la mayor radiación .
Algunos sistemas también " limpian " la memoria, leyendo periódicamente todas las direcciones y reescribiendo versiones corregidas si es necesario para eliminar los errores transitorios acumulados.
Esquemas
Los subsistemas de memoria modernos pueden proporcionar integridad de datos a través de uno o más de los siguientes esquemas: [ 11 ]
- Mediante controlador de memoria: En estos sistemas, el controlador de memoria envía o recibe datos adicionales al chip.
- La corrección de errores de banda lateral (SBECC) es el método tradicional para servidores. Los códigos ECC se almacenan en chips DRAM independientes y se transmiten con los datos a través de canales adicionales (bits extra por palabra). El controlador de memoria calcula los códigos ECC al escribir, corrige los errores al leer e informa de las correcciones y detecciones de errores al sistema operativo o al firmware ( UEFI o BIOS ).
- La corrección de errores en línea (ECC) o la corrección de errores en banda (IBECC) no utilizan ancho de canal adicional y, por lo tanto, son compatibles 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 procesador IBECC de Intel y el RTOS de TI, el espacio de direcciones físicas se particiona de manera que existe un bloque de memoria reservada. [ 12 ] Cada comando de escritura debe ir acompañado de un comando de escritura adicional, y lo mismo ocurre con los comandos de lectura. Esto resulta en una duplicación aproximada de la latencia de la memoria. Específicamente, la implementación de Intel tiene un impacto mínimo en el rendimiento de la navegación web y las aplicaciones de productividad, pero puede reducir el rendimiento hasta en un 25 % en cargas de trabajo de juegos y edición de video. [ 13 ]
- En teoría, es posible simplemente particionar el canal existente (por ejemplo, 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 sobre "ECC en línea", que menciona una partición del canal de 16 bits por chip, llevaría a esta conclusión, pero esto no es muy común en productos comerciales. [ 14 ]
- Por chip de memoria: La corrección de errores en el chip (ODECC), también llamada ECC integrada en la DRAM, [ 15 ] es obligatoria en todos los módulos de memoria DDR5 y LPDDR6 [ 16 ] para mitigar las tasas de error más altas asociadas con las celdas de memoria más pequeñas. El almacenamiento adicional de ECC y los circuitos 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
- La corrección de errores de enlace (ECC) añade corrección de errores al enlace de datos, pero no al almacenamiento subyacente. El controlador de memoria calcula y transmite códigos ECC junto con los datos al escribir en la DRAM, que verifica y corrige los errores. Al leer, la DRAM calcula códigos ECC que el controlador de memoria verifica. Forma parte de LPDDR5 . Si bien la ECC de banda lateral proporciona automáticamente redundancia a nivel de enlace, la ECC en banda/en línea que utiliza la reserva de espacio de direcciones físicas y la ECC en el chip no lo hacen; necesitarían una capa de ECC de enlace para protegerse contra la corrupción durante la transmisión.
Notificación de errores
Muchas implementaciones antiguas de memoria ECC, así como la ECC integrada en el chip, enmascaran los errores corregibles, actuando "como si" el error nunca hubiera ocurrido, y solo informan de los errores no corregibles. Las implementaciones modernas registran tanto los errores corregibles (EC) como los errores no corregibles (ER). Algunas personas reemplazan de forma proactiva los módulos de memoria que presentan altas tasas de error para reducir la probabilidad de que se produzcan errores no corregibles. [ 17 ]
Implementaciones
Memoria estándar del servidor: banda lateral SECDED
La memoria estándar de servidor está diseñada para un código Hamming de corrección de errores simple y detección de errores doble (SECDED) , que permite corregir un error de un bit y detectar errores de dos bits por palabra (la unidad de transferencia del bus ). Desde la SDRAM DDR , 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. La SDRAM DDR5 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 de datos, 8 de verificación). [ 18 ] ECC también se utiliza con tamaños más pequeños y más grandes.
Un controlador de memoria compatible con ECC utiliza los bits adicionales para almacenar el código SECDED; la memoria solo se encarga de contener dichos bits. Desde finales de la década de 1990, el controlador de memoria también se comunica con la BIOS y mantiene un registro de los errores detectados y corregidos, en parte para ayudar a identificar módulos de memoria defectuosos antes de que el problema se agrave. La lectura del contador es compatible con muchos sistemas gracias al estándar SMBIOS , disponible en Linux , BSD y Windows ( Windows 2000 y versiones posteriores). [ 19 ]
Disposición de los bits
La detección y corrección de errores depende de la previsión 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 hace improbable que se produzcan dos errores simultáneos. Esto era así cuando los chips de memoria tenían un bit de ancho, lo que era habitual en la primera mitad de la década de 1980; posteriormente, se integraron muchos bits en el mismo chip.
Esta vulnerabilidad se soluciona con diversas tecnologías, como Chipkill de IBM , Extended ECC de Sun Microsystems , Chipspare de Hewlett-Packard y Single Device Data Correction (SDDC) de Intel . Todas ellas garantizan que el fallo de un chip de memoria afecte únicamente a un bit por palabra ECC. Esto se consigue distribuyendo los bits de las palabras ECC entre los chips, mediante un entrelazado . Para asegurar que cada chip reciba solo un bit por palabra, puede ser necesario entrelazar la memoria entre varios módulos (bloques) de memoria.
El entrelazado, en general, es una técnica útil para protegerse contra fallos multibit correlacionados. Un rayo cósmico, por ejemplo, puede alterar varios bits físicamente vecinos en varias palabras al asociar bits vecinos a palabras diferentes. Siempre que una alteración de evento único (SEU) no supere el umbral de error (por ejemplo, un solo error) en ninguna palabra en particular entre accesos, se puede corregir (por ejemplo, mediante un código de corrección de errores de un solo bit) y se puede mantener un sistema de memoria prácticamente libre de errores. [ 20 ]
Mediante el propio chip de memoria
Algunos chips DRAM incluyen circuitos internos de corrección de errores "en el chip" o "en el chip", que permiten que los sistemas con controladores de memoria que no son ECC sigan obteniendo la mayoría de los beneficios de la memoria ECC. [ 21 ] [ 22 ] En algunos sistemas, se puede lograr un efecto similar utilizando módulos de memoria EOS .
Como se mencionó anteriormente, la corrección de errores en el chip (ECC) es obligatoria en DDR5 y LPDDR6. Sin embargo, su falta de informes implica que se sabe muy poco sobre el estado real del chip de memoria hasta que los errores superan la capacidad del algoritmo integrado para corregirlos; no se proporciona información sobre el margen de error existente. Se han desarrollado algoritmos sofisticados para inferir la existencia de errores corregidos a partir de errores no corregidos. [ 15 ]
Ubicación de la corrección
Muchos sistemas de memoria ECC utilizan un circuito EDAC "externo" entre la CPU y la memoria. Algunos sistemas con memoria ECC utilizan sistemas EDAC tanto internos como externos; el sistema EDAC externo debe diseñarse para corregir ciertos errores que el sistema EDAC interno no puede corregir. [ 21 ] Las CPU modernas de escritorio y servidor integran el circuito EDAC en la CPU, [ 23 ] incluso antes del cambio hacia los 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
En 2009, los códigos de corrección de errores más comunes utilizaban códigos Hamming o Hsiao que proporcionaban corrección de errores de un bit y detección de errores de dos bits (SEC-DED). Se propusieron 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 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 se suele implementar intercalando varios códigos SEC-DED. [ 24 ] [ 25 ]
Las primeras investigaciones intentaron minimizar el área y la latencia de los circuitos ECC. Hamming fue el primero en demostrar que los códigos SEC-DED eran posibles con una matriz de verificación específica. Hsiao demostró que una matriz alternativa con columnas de peso impar proporciona capacidad SEC-DED con menor área de hardware y menor latencia que los códigos SEC-DED tradicionales de Hamming. [ 26 ] Investigaciones más recientes también intentan minimizar el consumo de energía, además de minimizar el área y la latencia. [ 27 ] [ 28 ]
Redundancia en lugar de ECC
Los controladores de memoria con corrección de errores tradicionalmente utilizan códigos de corrección de errores óptimos en cuanto a espacio, como Hamming y Hsiao. Si el costo y el espacio no son un problema, pero sí la velocidad, se puede utilizar una redundancia modular triple (TMR) debido a su implementación de hardware más rápida. [ 20 ] Los sistemas de satélites espaciales a menudo utilizan TMR, [ 29 ] [ 30 ] [ 31 ] aunque la RAM de los satélites generalmente utiliza la corrección de errores de Hamming. [ 32 ]
Ordenadores personales

Seymour Cray dijo célebremente que " la paridad es para los agricultores " cuando se le preguntó por qué la había omitido en el CDC 6600. [ 33 ] Más tarde, incluyó la paridad en el CDC 7600 , lo que provocó que los expertos comentaran que "aparentemente muchos agricultores compran computadoras". El IBM PC original y todas las PC hasta principios de la década de 1990 usaban verificación de paridad. [ 34 ] Las posteriores, en su mayoría, no la usaban.
La mayoría de las rutas de datos en una computadora personal de la década de 2020, incluyendo PCIe, SATA, interconexión chip a chip y almacenamiento en disco, cuentan con algún tipo de protección ECC. La falta de ECC en la memoria principal resulta inusual, especialmente considerando su tamaño y la mayor probabilidad de corrupción. Linus Torvalds publicó un extenso artículo en un foro en 2021 criticando la decisión de Intel de no ofrecer soporte ECC en plataformas de escritorio, cuando las plataformas de escritorio AMD contemporáneas podían usar (aunque no necesariamente habilitar la función ECC en) módulos DIMM registrados con soporte ECC. [ 35 ]
Cache
Muchas CPU utilizan códigos de corrección de errores en la caché en el chip , incluidos los procesadores Intel Itanium , Xeon , Core y Pentium ( desde la microarquitectura P6 ) [ 36 ] [ 37 ] , los AMD Athlon , Opteron , todos los procesadores basados en Zen [ 38 ] y Zen+ [ 39 ] ( EPYC , EPYC Embedded , Ryzen y Ryzen Threadripper ), y el DEC Alpha 21264. [ 24 ] [ 40 ]
A partir de 2006EDC/ECC y ECC/ECC son las dos técnicas de protección contra errores de caché más comunes utilizadas en 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. [ 41 ] Las CPU que utilizan la técnica EDC/ECC siempre escriben directamente todas las operaciones STORE en 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
La memoria registrada o con búfer no es lo mismo que la memoria ECC; ambas tecnologías cumplen funciones diferentes. Es habitual que la memoria utilizada en los servidores sea tanto registrada, para permitir el uso de muchos módulos de memoria sin problemas eléctricos, como ECC, para garantizar la integridad de los datos.
Costos y beneficios
El uso de ECC para aumentar la seguridad de los datos suele conllevar un mayor gasto, lo que se traduce 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 comprobación de errores . [ 42 ] El costo adicional de la memoria ECC para 1 GB en 2010 varía entre $0 y $15, dependiendo del rendimiento y el fabricante. [ 43 ] El diseño de ECC y su propósito en cargas de trabajo de alta fiabilidad la posicionaron con una sobrecarga adicional para la validación y los diseños adicionales a nivel de circuito dentro de la memoria. [ 6 ] Dichas características generalmente resultan en costos más altos para la implementación de ECC.
Los fabricantes de placas base pueden optar por añadir compatibilidad con ECC en distintos niveles según el segmento de mercado. [ 44 ] Algunas placas y procesadores compatibles con ECC pueden admitir ECC sin búfer (no registrado), pero también funcionarán con memoria que no sea ECC; el firmware del sistema habilita la funcionalidad ECC si se instala memoria ECC. [ 45 ]
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 que necesitan los controladores de memoria ECC para realizar la comprobación de errores. [ 46 ] Sin embargo, los sistemas modernos integran las pruebas ECC en la CPU, lo que no genera retraso adicional en los accesos a la memoria siempre que no se detecten errores. [ 23 ] [ 47 ] [ 48 ]
Este no es el caso de ECC en banda , que almacena tablas utilizadas para protección en una región reservada de la memoria principal del sistema, [ 49 ] [ 50 ] compatible con Intel para Chromebooks , que mostró poco impacto en la navegación web y las tareas de productividad, pero causó una reducción de hasta un 25 % en los puntos de referencia de juegos y edición de video . [ 13 ]
Notas
- ↑ La mayoría de las memorias ECC utilizan un código SECDED .
Referencias
- ↑ Werner Fischer. "RAM al descubierto" . Revista ADMIN . Consultado el 20 de octubre de 2014 .
- ↑ Alteración de un solo evento a nivel del suelo, Eugene Normand, miembro del IEEE, Boeing Defense & Space Group, Seattle, WA 98124-2499
- 1 2 Mittal, Sparsh; Vetter, Jeffrey S. (2016). "Un estudio de técnicas para modelar y mejorar la fiabilidad de los sistemas informáticos" . IEEE Transactions on Parallel and Distributed Systems . 27 (4): 1226– 1238. Bibcode : 2016ITPDS..27.1226M . doi : 10.1109/TPDS.2015.2426179 . OSTI 1261262 .
- ↑ Gary M. Swift y Steven M. Guertin. "Observaciones en vuelo de errores de múltiples bits en DRAM". Laboratorio de Propulsión a Chorro
- 1 2 Borucki, "Comparación de las tasas de errores transitorios acelerados de DRAM medidas a nivel de componente y de sistema", 46.º Simposio Internacional Anual de Física de la Fiabilidad, Phoenix, 2008, págs. 482-487
- 1 2 3 4 5
- Schroeder, Bianca ; Pinheiro, Eduardo; Weber, Wolf-Dietrich (2009). «Errores de DRAM en entornos reales: Un estudio de campo a gran escala» (PDF) . ACM SIGMETRICS Performance Evaluation Review . 37 (1). ACM: 193–204 . doi : 10.1145/2492101.1555372 . ISBN 978-1-60558-511-6.
- Robin Harris (4 de octubre de 2009). "Tasas de error de DRAM: una pesadilla en el mercado de los módulos DIMM" . ZDNet .
- ↑ "Medición de errores suaves de memoria en sistemas de producción" . Archivado del original el 14 de febrero de 2017. Consultado el 27 de junio de 2011 .
- ↑ Li, Huang; Shen, Chu (2010). "Una evaluación realista de los errores del hardware de memoria y la susceptibilidad del sistema de software" (PDF) . Conferencia anual de tecnología de Usenix 2010 .
- ↑ Yoongu Kim; Ross Daly; Jeremie Kim; Chris Fallin; Ji Hye Lee; Donghyuk Lee; Chris Wilkerson; Konrad Lai; Onur Mutlu (24 de junio de 2014). "Invertir bits en la memoria sin acceder a ellos: un estudio experimental de errores de perturbación de DRAM" (PDF) . ece.cmu.edu . IEEE . Consultado el 10 de marzo de 2015 .
- ↑ Dan Goodin (10 de marzo de 2015). "Un hack de vanguardia otorga estatus de superusuario al explotar una vulnerabilidad de la DRAM" . Ars Technica . Consultado el 10 de marzo de 2015 .
- ↑ "Detalles técnicos de ECC" . MemTest86 . PassMark Software . Consultado el 2 de agosto de 2025 .
- ↑ "9.13. Habilitación de ECC en línea de TI para DDR — Procesador SDK RTOS J784S4" . software-dl.ti.com .
- 1 2 Ganesh TS (29-01-2023). "Análisis de ASRock Industrial NUCS BOX-1360P/D4: Raptor Lake-P impresiona, además de ECC sorprendente" . págs. 2–6 . Archivado del original el 30 de enero de 2023. Recuperado el 29-01-2024 .
- ↑ Sankaranarayanan, Vadhiraj (19 de octubre de 2020). "Código de corrección de errores (ECC) en memorias DDR" . Synopsys . Consultado el 2 de agosto de 2025 .
- 1 2 Patel, Minesh; Kim, Jeremie; Hassan, Hasan; Mutlu, Onur (junio de 2019). "Comprensión y modelado de la corrección de errores en el chip en la DRAM moderna: un estudio experimental con dispositivos reales". 49.ª Conferencia Internacional Anual IEEE/IFIP sobre Sistemas y Redes Confiables (DSN) de 2019. IEEE. págs. 13-25 . doi : 10.1109/DSN.2019.00017 . ISBN 978-1-7281-0057-9.
- ↑ Williams, Wayne (12 de julio de 2025). "Es probable que LPDDR6 debute en 2026, ya que JEDEC publica un nuevo documento estándar y se centra en dispositivos móviles e IA; los ordenadores de sobremesa y las estaciones de trabajo tendrán que esperar" . TechRadar . Consultado el 2 de agosto de 2025 .
- ↑ Doug Thompson, Mauro Carvalho Chehab. "EDAC – Detección y corrección de errores" . Archivado el 5 de septiembre de 2009 en Wayback Machine . 2005–2009. "El objetivo del módulo del kernel 'edac' es detectar e informar sobre los errores que se producen en el sistema informático que se ejecuta bajo Linux."
- ↑ "Estándar de memoria DDR5: Una introducción a la próxima generación de tecnología de módulos DRAM - Kingston Technology" . Kingston Technology Company .
- ↑ DOMARS. " " . Microsoft Learn . Consultado el 27 de marzo de 2021 .
!mca - 1 2 "Uso de StrongArm SA-1110 en la computadora de a bordo de un nanosatélite" . Centro Espacial Tsinghua, Universidad Tsinghua, Pekín. Archivado del original el 2 de octubre de 2011. Consultado el 16 de febrero de 2009 .
- 1 2 A. H. Johnston. "Efectos de la radiación espacial en memorias flash avanzadas" . Archivado el 4 de marzo de 2016 en Wayback Machine . Programa de piezas y embalajes electrónicos de la NASA (NEPP). 2001.
- ↑ "ECC DRAM" . Memoria inteligente . Archivado del original el 12 de febrero de 2019. Consultado el 12 de junio de 2021 .
- 1 2 "Guía de diseño de software/BIOS del controlador del sistema AMD-762™, pág. 179" (PDF) .
- 1 2 Doe Hyun Yoon; Mattan Erez. "ECC mapeado en memoria: protección contra errores de bajo costo para cachés de último nivel" . 2009. pág. 3.
- ↑ Daniele Rossi; Nicola Timoncini; Michael Spica; Cecilia Metra . "Análisis de código de corrección de errores para alta fiabilidad y rendimiento de la memoria caché" . Archivado el 3 de febrero de 2015 en Wayback Machine .
- ↑ MY Hsiao. "Una clase de códigos SEC-DED óptimos de columna de peso impar mínimo" . 1970.
- ↑ Shalini Ghosh; Sugato Basu; y Nur A. Touba. "Selección de códigos de corrección de errores para minimizar el consumo de energía en circuitos de verificación de memoria" . Archivado el 3 de febrero de 2015 en Wayback Machine . Págs. 2, 4.
- ^ Chris Wilkerson; Alaa R. Alameldeen; Zeshan Chishti; Wei Wu; Dinesh Somasekhar; Shih-lien Lu. "Reducir la potencia de la caché con códigos de corrección de errores de varios bits y de bajo costo" . doi : 10.1145/1816038.1815973 .
- ↑ "Ingenieros de Actel utilizan redundancia de triple módulo en un nuevo FPGA resistente a la radiación" . Military & Aerospace Electronics . Consultado el 16 de febrero de 2009 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Endurecimiento de SEU de matrices de puertas programables en campo (FPGA) para aplicaciones espaciales y caracterización de dispositivos" . Klabs.org. 3 de febrero de 2010. Archivado del original el 25 de noviembre de 2011. Consultado el 23 de noviembre de 2011 .
- ↑ "FPGAs en el espacio" . Techfocusmedia.net . Consultado el 23 de noviembre de 2011 .
- ↑ "Tecnologías microelectrónicas comerciales para aplicaciones en el entorno de radiación satelital" . Radhome.gsfc.nasa.gov. Archivado del original el 4 de marzo de 2001. Consultado el 23 de noviembre de 2011 .
- ↑ "CDC 6600" . Microsoft Research . Consultado el 23 de noviembre de 2011 .
- ↑ Kozierok, Charles M. (17 de abril de 2001). "Comprobación de paridad" . The PC Guide . Errores de memoria, detección y corrección. Archivado del original el 12 de febrero de 2019. Recuperado el 23 de noviembre de 2011 .
- ↑ "Linus Torvalds habla sobre la importancia de la memoria RAM ECC y critica las "malas políticas" de Intel respecto a la ECC" . www.phoronix.com . 3 de enero de 2021.
- ↑ Intel Corporation. "Familia de procesadores Intel Xeon E7: fiabilidad, disponibilidad y facilidad de mantenimiento" . 2011. pág. 12.
- ↑ "BIOS y caché" . www.custom-build-computers.com . Consultado el 27 de marzo de 2021 .
- ↑ "Microarquitectura AMD Zen : jerarquía de memoria" . WikiChip . Consultado el 15 de octubre de 2018 .
- ↑ "Microarquitectura AMD Zen+ — Jerarquía de memoria" . WikiChip . Consultado el 15 de octubre de 2018 .
- ↑ Jangwoo Kim; Nikos Hardavellas; Ken Mai; Babak Falsafi; James C. Hoe. "Cachés tolerantes a errores multibit mediante codificación de errores bidimensional" . 2007. pág. 2.
- ↑ Nathan N. Sadler y Daniel J. Sorin. "Elección de un esquema de protección contra errores para la caché de datos L1 de un microprocesador" . 2006. pág. 1.
- ↑ "¿Cuáles son los beneficios de la memoria ECC?" . Lenovo . Consultado el 1 de octubre de 2025 .
- ↑ Harrell, John (2010). "La importancia de la memoria ECC en la computadora de su subestación" (PDF) . Schweitzer Engineering Laboratories, Inc .: 4.
- ↑ Schroeder, B.; Gibson, GA (junio de 2006). «Un estudio a gran escala de fallos en sistemas informáticos de alto rendimiento». Conferencia Internacional sobre Sistemas y Redes Confiables (DSN'06) . págs. 249–258 . doi : 10.1109/DSN.2006.5 . ISBN 0-7695-2607-1.
- ↑ Memoria ECC frente a memoria no ECC ( Ed. Rev. A). Viking Technology . 26 de mayo de 2020. pág. 10.
- ↑ Kozierok, Charles M. (17 de abril de 2001). "ECC" . The PC Guide . Errores de memoria, detección y corrección. Archivado del original el 6 de febrero de 2019. Consultado el 23 de noviembre de 2011 .
- ↑ Prueba de rendimiento de la plataforma AMD-762/Athlon con y sin ECC . Archivado el 15/06/2013 en Wayback Machine .
- ↑ "ECCploit: La memoria ECC es vulnerable a los ataques Rowhammer después de todo" . Grupo de Seguridad de Sistemas y Redes de la Universidad VU de Ámsterdam. 12 de noviembre de 2018. Consultado el 22 de noviembre de 2018 .
- ^ EE. UU. abandonado 20190332469A1 , Amir A. RADJAI, Nagi Aboulenein, Steve L. GEIGER, Satyajit A. JADHAV, Bezan J. KAPADIA, Vivek Kozhikkottu, Rashmi LAKKUR SUBRAMANYAM, Srithar Rames, James M. Shehadi, Jason D. VAN DYKEN, "Código de corrección de errores de memoria en banda basado en rango de direcciones módulo de protección con búfer de síndrome", publicado el 31 de octubre de 2019, asignado a Intel
- ↑ Patente estadounidense 11768731B2 , Hartlieb, Heimo y Heiling, Christian, "Sistema y método para la detección y corrección transparente de errores en datos de registro a través de un bus de comunicación", publicada el 5 de noviembre de 2020, asignada a Infineon Technologies.
Enlaces externos
- SoftECC: Un sistema para la comprobación de la integridad de la memoria del software
- Biblioteca de detección y corrección de errores de DRAM configurable y basada en software para computación de alto rendimiento (HPC).
- Detección y corrección de la corrupción silenciosa de datos para la computación de alto rendimiento a gran escala.
- Errores de un solo bit: la perspectiva de un proveedor de módulos de memoria sobre la causa, el impacto y la detección.
- Guía de configuración de memoria para la familia de procesadores Intel Xeon E3-1200
- Memoria de computadora
- Sistemas informáticos tolerantes a fallos