
En la teoría de la información y la teoría de la codificación , con aplicaciones en informática y telecomunicaciones , la detección y corrección de errores ( EDAC ) o el control de errores son técnicas que permiten la transmisión fiable de datos digitales a través de canales de comunicación poco fiables . Muchos canales de comunicación están sujetos a ruido , por lo que pueden introducirse errores durante la transmisión desde la fuente al receptor. Las técnicas de detección de errores permiten detectar dichos errores, mientras que la corrección de errores permite reconstruir los datos originales en muchos casos.
Definiciones
La detección de errores consiste en la detección de errores causados por ruido u otras deficiencias durante la transmisión desde el transmisor al receptor.
La corrección de errores consiste en la detección de errores y la reconstrucción de los datos originales, libres de errores.
Historia
En la antigüedad clásica, los copistas de la Biblia hebrea recibían un pago por su trabajo según el número de puntadas (líneas de versículo). Como los libros en prosa de la Biblia casi nunca se escribían en puntadas, los copistas, para estimar la cantidad de trabajo, tenían que contar las letras. [ 1 ] Esto también ayudó a garantizar la precisión en la transmisión del texto con la producción de copias posteriores. [ 2 ] [ 3 ] Entre los siglos VII y X d. C., un grupo de escribas judíos formalizó y amplió esto para crear la Masorá Numérica para asegurar la reproducción precisa del texto sagrado. Incluía recuentos del número de palabras en una línea, sección, libro y grupos de libros, anotando la puntada central de un libro, estadísticas de uso de palabras y comentarios. [ 1 ] Los estándares llegaron a ser tales que una desviación de incluso una sola letra en un rollo de la Torá se consideraba inaceptable. [ 4 ] La eficacia de su método de corrección de errores fue verificada por la precisión de la copia a través de los siglos demostrada por el descubrimiento de los Rollos del Mar Muerto en 1947–1956, que datan de c. 150 a. C. – 75 d. C. . [ 5 ]
El desarrollo moderno de los códigos de corrección de errores se atribuye a Richard Hamming en 1947. [ 6 ] Una descripción del código de Hamming apareció en A Mathematical Theory of Communication de Claude Shannon [ 7 ] y fue rápidamente generalizado por Marcel JE Golay . [ 8 ]
Principios
Todos los sistemas de detección y corrección de errores añaden cierta redundancia (es decir, datos adicionales) a un mensaje, que los receptores pueden usar para comprobar la coherencia del mensaje entregado y recuperar los datos que se hayan determinado como corruptos. Estos sistemas pueden ser sistemáticos o no sistemáticos. En un sistema sistemático, el transmisor envía los datos originales (sin errores) y adjunta un número fijo de bits de control (o datos de paridad ), que se derivan de los bits de datos mediante un algoritmo de codificación. Si se requiere la detección de errores, el receptor puede aplicar el mismo algoritmo a los bits de datos recibidos y comparar su resultado con los bits de control recibidos; si los valores no coinciden, se ha producido un error en algún punto de la transmisión. Si se requiere la corrección de errores, el receptor puede aplicar el algoritmo de decodificación a los bits de datos recibidos y a los bits de control recibidos para recuperar los datos originales sin errores. En un sistema que utiliza un código no sistemático, el mensaje original se transforma en un mensaje codificado que contiene la misma información y que tiene al menos tantos bits como el mensaje original.
Para un buen control de errores, es necesario seleccionar el esquema adecuado según las características del canal de comunicación. Los modelos de canal más comunes incluyen modelos sin memoria, donde los errores ocurren de forma aleatoria y con cierta probabilidad, y modelos dinámicos, donde los errores ocurren principalmente en ráfagas . Por consiguiente, los códigos de detección y corrección de errores se pueden clasificar generalmente entre aquellos que detectan y corrigen errores aleatorios y aquellos que detectan y corrigen errores en ráfagas . Algunos códigos también pueden ser adecuados para una combinación de errores aleatorios y errores en ráfagas.
Si las características del canal no se pueden determinar o son muy variables, se puede combinar un esquema de detección de errores con un sistema de retransmisión de datos erróneos. Esto se conoce como solicitud de repetición automática (ARQ) y se utiliza principalmente en Internet. Un enfoque alternativo para el control de errores es la solicitud de repetición automática híbrida (HARQ), que combina ARQ con codificación de corrección de errores.
Tipos de corrección de errores
Existen tres tipos principales de corrección de errores: [ 9 ]
Solicitud de repetición automática
La solicitud de repetición automática (ARQ) es un método de control de errores para la transmisión de datos que utiliza códigos de detección de errores, mensajes de acuse de recibo y/o acuse de recibo negativo, y tiempos de espera para lograr una transmisión de datos confiable. Un acuse de recibo es un mensaje enviado por el receptor para indicar que ha recibido correctamente una trama de datos .
Normalmente, cuando el transmisor no recibe la confirmación antes de que se agote el tiempo de espera (es decir, dentro de un plazo razonable después de enviar la trama de datos), retransmite la trama hasta que se recibe correctamente o el error persiste más allá de un número predeterminado de retransmisiones.
Existen tres tipos de protocolos ARQ: ARQ de parada y espera , ARQ de retroceso N y ARQ de repetición selectiva .
ARQ es apropiado si el canal de comunicación tiene capacidad variable o desconocida , como ocurre en Internet. Sin embargo, ARQ requiere la disponibilidad de un canal de retorno , puede aumentar la latencia debido a las retransmisiones y requiere el mantenimiento de búferes y temporizadores para las retransmisiones, lo que, en caso de congestión de la red , puede sobrecargar el servidor y la capacidad general de la red. [ 10 ]
Por ejemplo, ARQ se utiliza en enlaces de datos de radio de onda corta en forma de ARQ-E , o combinado con multiplexación como ARQ-M .
Corrección de errores hacia adelante
La corrección de errores hacia adelante (FEC) es un proceso que añade datos redundantes, como un código de corrección de errores (ECC), a un mensaje para que el receptor pueda recuperarlo incluso cuando se introducen varios errores (hasta el límite de la capacidad del código utilizado), ya sea durante la transmisión o en el almacenamiento. Dado que el receptor no tiene que solicitar al emisor la retransmisión de los datos, no se requiere un canal de retorno en la corrección de errores hacia adelante. Los códigos de corrección de errores se utilizan en comunicaciones de capa inferior , como redes celulares , comunicaciones de fibra óptica de alta velocidad y Wi-Fi , [ 11 ] [ 12 ] así como para el almacenamiento fiable en medios como memoria flash , disco duro y RAM . [ 13 ]
Los códigos de corrección de errores se suelen distinguir entre códigos convolucionales y códigos de bloque :
- Los códigos convolucionales se procesan bit a bit. Son especialmente adecuados para su implementación en hardware, y el decodificador Viterbi permite una decodificación óptima .
- Los códigos de bloques se procesan bloque a bloque . Los primeros ejemplos de códigos de bloques son los códigos de repetición , los códigos de Hamming y los códigos de verificación de paridad multidimensionales . Posteriormente surgieron varios códigos eficientes, siendo los códigos de Reed-Solomon los más destacados debido a su uso generalizado actual. Los códigos turbo y los códigos de verificación de paridad de baja densidad (LDPC) son construcciones relativamente nuevas que pueden proporcionar una eficiencia casi óptima .
El teorema de Shannon es fundamental en la corrección de errores hacia adelante y describe la tasa máxima de información a la que es posible una comunicación fiable en un canal con una determinada probabilidad de error o relación señal-ruido (SNR). Este límite superior estricto se expresa en términos de la capacidad del canal . Más específicamente, el teorema establece que existen códigos tales que, al aumentar la longitud de codificación, la probabilidad de error en un canal discreto sin memoria puede hacerse arbitrariamente pequeña, siempre que la tasa de codificación sea inferior a la capacidad del canal. La tasa de codificación se define como la fracción k/n de k símbolos fuente y n símbolos codificados.
La tasa de codificación máxima permitida depende del código corrector de errores utilizado y puede ser menor. Esto se debe a que la demostración de Shannon era de naturaleza existencial y no mostraba cómo construir códigos que fueran óptimos y que contaran con algoritmos de codificación y decodificación eficientes .
esquemas híbridos
El ARQ híbrido es una combinación de ARQ y corrección de errores hacia adelante. Hay dos enfoques básicos: [ 10 ]
- Los mensajes siempre se transmiten con datos de paridad FEC (y redundancia de detección de errores). El receptor decodifica un mensaje utilizando la información de paridad y solicita la retransmisión mediante ARQ solo si los datos de paridad no fueron suficientes para una decodificación exitosa (identificado mediante una comprobación de integridad fallida).
- Los mensajes se transmiten sin datos de paridad (solo con información de detección de errores). Si un receptor detecta un error, solicita información FEC al transmisor mediante ARQ y la utiliza para reconstruir el mensaje original.
Este último enfoque resulta particularmente atractivo en un canal de borrado cuando se utiliza un código de borrado sin tasa .
Tipos de detección de errores
La detección de errores se realiza habitualmente mediante una función hash adecuada (o, más concretamente, una suma de comprobación , una comprobación de redundancia cíclica u otro algoritmo). Una función hash añade una etiqueta de longitud fija a un mensaje, lo que permite a los receptores verificar el mensaje entregado recalculando la etiqueta y comparándola con la proporcionada.
Existe una gran variedad de diseños de funciones hash diferentes. Sin embargo, algunos son particularmente utilizados debido a su simplicidad o a su idoneidad para detectar ciertos tipos de errores (por ejemplo, el rendimiento de la comprobación de redundancia cíclica en la detección de errores en ráfaga ).
Codificación de distancia mínima
Un código de corrección de errores aleatorios basado en la codificación de distancia mínima puede proporcionar una garantía estricta sobre el número de errores detectables, pero puede que no proteja contra un ataque de preimagen .
Códigos de repetición
Un código de repetición es un esquema de codificación que repite los bits a través de un canal para lograr una comunicación sin errores. Dado un flujo de datos para transmitir, estos se dividen en bloques de bits. Cada bloque se transmite un número predeterminado de veces. Por ejemplo, para enviar el patrón de bits 1011 , el bloque de cuatro bits se puede repetir tres veces, produciendo así 1011 1011 1011. Si este patrón de doce bits se recibe como 1010 1011 1011 (donde el primer bloque es diferente de los otros dos), se ha producido un error.
Un código de repetición es muy ineficiente y puede ser susceptible a problemas si el error ocurre exactamente en el mismo lugar para cada grupo (por ejemplo, 1010 1010 1010 en el ejemplo anterior se detectaría como correcto). La ventaja de los códigos de repetición es que son extremadamente simples y, de hecho, se utilizan en algunas transmisiones de estaciones de números . [ 14 ] [ 15 ]
Bit de paridad
Un bit de paridad es un bit que se añade a un grupo de bits de origen para asegurar que el número de bits activados (es decir, bits con valor 1) en el resultado sea par o impar. Es un método muy sencillo que permite detectar errores simples o cualquier otro número impar (por ejemplo, tres, cinco, etc.) en la salida. Un número par de bits alterados hará que el bit de paridad parezca correcto, aunque los datos sean erróneos.
Los bits de paridad añadidos a cada palabra enviada se denominan comprobaciones de redundancia transversal , mientras que los añadidos al final de una secuencia de palabras se denominan comprobaciones de redundancia longitudinal . Por ejemplo, si a cada una de una serie de palabras de m bits se le añade un bit de paridad que indica si había un número par o impar de unos en esa palabra, se detectará cualquier palabra con un único error. Sin embargo, no se sabrá en qué parte de la palabra se encuentra el error. Si, además, después de cada secuencia de n palabras se envía una suma de paridad, donde cada bit indica si había un número par o impar de unos en esa posición de bit en el grupo más reciente, se puede determinar la posición exacta del error y corregirlo. No obstante, este método solo está garantizado para ser efectivo si no hay más de un error en cada grupo de n palabras. Con más bits de corrección de errores, se pueden detectar más errores y, en algunos casos, corregirlos.
También existen otras técnicas de agrupación de bits.
Suma de verificación
La suma de verificación de un mensaje es una suma aritmética modular de las palabras clave del mensaje, que tienen una longitud fija (por ejemplo, valores en bytes). Esta suma puede ser negada mediante una operación de complemento a uno antes de la transmisión para detectar mensajes con solo ceros que no se hayan producido intencionadamente.
Los sistemas de suma de verificación incluyen bits de paridad, dígitos de control y comprobaciones de redundancia longitudinal . Algunos sistemas de suma de verificación, como el algoritmo de Damm , el algoritmo de Luhn y el algoritmo de Verhoeff , están diseñados específicamente para detectar errores que suelen cometer los humanos al escribir o recordar números de identificación.
Verificación de redundancia cíclica
Una comprobación de redundancia cíclica (CRC) es una función hash no segura diseñada para detectar cambios accidentales en datos digitales en redes informáticas. No es adecuada para detectar errores introducidos maliciosamente. Se caracteriza por la especificación de un polinomio generador , que se utiliza como divisor en una división larga de polinomios sobre un campo finito , tomando los datos de entrada como dividendo . El resto se convierte en el resultado.
Un CRC posee propiedades que lo hacen idóneo para detectar errores en ráfaga . Los CRC son particularmente fáciles de implementar en hardware y, por lo tanto, se utilizan comúnmente en redes informáticas y dispositivos de almacenamiento como discos duros .
El bit de paridad puede considerarse un caso especial de CRC de 1 bit.
Función hash criptográfica
El resultado de una función hash criptográfica , también conocida como resumen de mensaje , ofrece una gran garantía de integridad de los datos, tanto si las modificaciones son accidentales (por ejemplo, debido a errores de transmisión) como si se introducen de forma maliciosa. Cualquier modificación de los datos probablemente se detectará mediante un valor hash incorrecto. Además, dado un valor hash, suele ser imposible encontrar datos de entrada (distintos del proporcionado) que produzcan el mismo valor. Si un atacante puede modificar no solo el mensaje, sino también el valor hash, puede utilizar un hash con clave o un código de autenticación de mensajes (MAC) para mayor seguridad. Sin conocer la clave, al atacante le resulta imposible calcular fácilmente el valor hash correcto para un mensaje modificado.
Firma digital
Las firmas digitales ofrecen una sólida garantía sobre la integridad de los datos, tanto si las modificaciones son accidentales como si se introducen de forma maliciosa. Las firmas digitales son especialmente conocidas por formar parte del protocolo HTTPS, que permite navegar por internet de forma segura.
Código de corrección de errores
Cualquier código corrector de errores puede utilizarse para la detección de errores. Un código con una distancia de Hamming mínima , d , puede detectar hasta d − 1 errores en una palabra clave. El uso de códigos correctores de errores basados en la distancia mínima para la detección de errores puede ser adecuado si se desea establecer un límite estricto en el número mínimo de errores a detectar.
Los códigos con una distancia de Hamming mínima d = 2 son casos degenerados de códigos correctores de errores y pueden utilizarse para detectar errores individuales. El bit de paridad es un ejemplo de código de detección de errores individuales.
Aplicaciones
Las aplicaciones que requieren baja latencia (como las conversaciones telefónicas) no pueden usar la solicitud de repetición automática (ARQ); deben usar la corrección de errores hacia adelante (FEC). Para cuando un sistema ARQ detecta un error y lo retransmite, los datos reenviados llegan demasiado tarde para ser utilizables.
Las aplicaciones en las que el transmisor olvida inmediatamente la información en cuanto se envía (como la mayoría de las cámaras de televisión) no pueden usar ARQ; deben usar FEC porque, cuando se produce un error, los datos originales ya no están disponibles.
Las aplicaciones que utilizan ARQ deben tener un canal de retorno ; las aplicaciones que no lo tienen no pueden usar ARQ. Las aplicaciones que requieren tasas de error extremadamente bajas (como las transferencias de dinero digital) deben usar ARQ debido a la posibilidad de errores irrecuperables con FEC.
La ingeniería de confiabilidad e inspección también utiliza la teoría de códigos de corrección de errores, [ 16 ] así como el lenguaje natural. [ 17 ]
Internet
En una pila TCP/IP típica , el control de errores se realiza en múltiples niveles:
- Cada trama Ethernet utiliza la detección de errores CRC-32 . Las tramas con errores detectados son descartadas por el hardware del receptor.
- La cabecera IPv4 contiene una suma de comprobación que protege su contenido. Los paquetes con sumas de comprobación incorrectas se descartan dentro de la red o en el receptor.
- La suma de verificación se omitió del encabezado IPv6 para minimizar los costos de procesamiento en el enrutamiento de red y porque se supone que la tecnología actual de la capa de enlace proporciona una detección de errores suficiente (véase también RFC 3819).
- UDP incluye una suma de verificación opcional que abarca la información de carga útil y de direccionamiento en las cabeceras UDP e IP. Los paquetes con sumas de verificación incorrectas son descartados por la pila de red . La suma de verificación es opcional en IPv4 y obligatoria en IPv6. Cuando se omite, se asume que la capa de enlace de datos proporciona el nivel de protección contra errores deseado.
- TCP proporciona una suma de verificación para proteger la carga útil y la información de direccionamiento en las cabeceras TCP e IP. Los paquetes con sumas de verificación incorrectas son descartados por la pila de red y, finalmente, se retransmiten mediante ARQ, ya sea explícitamente (como a través del protocolo de enlace de tres vías ) o implícitamente debido a un tiempo de espera .
Telecomunicaciones en el espacio profundo
El desarrollo de los códigos de corrección de errores estuvo estrechamente ligado a la historia de las misiones al espacio profundo debido a la extrema atenuación de la potencia de la señal en distancias interplanetarias y a la limitada disponibilidad de energía a bordo de las sondas espaciales. Mientras que las primeras misiones enviaban sus datos sin codificar, a partir de 1968 se implementó la corrección digital de errores en forma de códigos convolucionales (decodificados de forma subóptima) y códigos Reed-Muller . [ 18 ] El código Reed-Muller se ajustaba bien al ruido al que estaba sujeta la nave espacial (aproximadamente a una curva de campana ) y se implementó para la nave espacial Mariner y se utilizó en misiones entre 1969 y 1977.
Las misiones Voyager 1 y Voyager 2 , que comenzaron en 1977, fueron diseñadas para proporcionar imágenes en color e información científica de Júpiter y Saturno . [ 19 ] Esto resultó en mayores requisitos de codificación, y por lo tanto, las naves espaciales fueron soportadas por códigos convolucionales ( decodificados de Viterbi de forma óptima ) que podían concatenarse con un código Golay (24,12,8) externo . La nave Voyager 2 admitió además una implementación de un código Reed-Solomon . El código Reed-Solomon-Viterbi (RSV) concatenado permitió una corrección de errores muy potente y posibilitó el viaje extendido de la nave espacial a Urano y Neptuno . Después de las actualizaciones del sistema ECC en 1989, ambas naves utilizaron la codificación V2 RSV.
El Comité Consultivo para Sistemas de Datos Espaciales recomienda actualmente el uso de códigos de corrección de errores con un rendimiento similar al del código RSV de la Voyager 2 como mínimo. Los códigos concatenados están cayendo en desuso en las misiones espaciales y se están reemplazando por códigos más potentes, como los códigos Turbo o los códigos LDPC .
Los distintos tipos de misiones orbitales y de exploración del espacio profundo sugieren que encontrar un sistema de corrección de errores universal seguirá siendo un problema constante. En las misiones cercanas a la Tierra, la naturaleza del ruido en el canal de comunicación difiere de la que experimenta una nave espacial en una misión interplanetaria. Además, a medida que la nave espacial se aleja de la Tierra, el problema de corregir el ruido se vuelve más complejo.
Radiodifusión por satélite
La demanda de ancho de banda para transpondedores satelitales sigue creciendo, impulsada por el deseo de ofrecer televisión (incluidos nuevos canales y televisión de alta definición ) y datos IP. La disponibilidad de transpondedores y las limitaciones de ancho de banda han restringido este crecimiento. La capacidad del transpondedor viene determinada por el esquema de modulación seleccionado y la proporción de capacidad consumida por la corrección de errores hacia adelante (FEC).
Almacenamiento de datos
Los códigos de detección y corrección de errores se utilizan a menudo para mejorar la fiabilidad de los medios de almacenamiento de datos. [ 20 ] En 1951, la primera cinta magnética de almacenamiento de datos incluía una pista de paridad capaz de detectar errores de un solo bit. El código rectangular óptimo utilizado en las cintas de grabación codificadas en grupo no solo detecta sino que también corrige errores de un solo bit. Algunos formatos de archivo , en particular los formatos de archivo comprimido , incluyen una suma de comprobación (generalmente CRC-32) para detectar corrupción y truncamiento, y pueden emplear archivos de redundancia o paridad para recuperar porciones de datos corruptos. Los códigos Reed-Solomon se utilizan en discos compactos para corregir errores causados por arañazos.
Los discos duros modernos utilizan códigos Reed-Solomon para detectar y corregir errores menores en las lecturas de sectores, y para recuperar datos corruptos de sectores defectuosos y almacenarlos en los sectores de reserva. [ 21 ] Los sistemas RAID utilizan diversas técnicas de corrección de errores para recuperar datos cuando un disco duro falla por completo. Los sistemas de archivos como ZFS o Btrfs , así como algunas implementaciones RAID , admiten la limpieza y reconstrucción de datos , lo que permite detectar bloques defectuosos y (con suerte) recuperarlos antes de que se utilicen. [ 22 ] Los datos recuperados pueden reescribirse exactamente en la misma ubicación física, en bloques de reserva en otra parte del mismo hardware, o pueden reescribirse en hardware de reemplazo.
Memoria correctora de errores
La memoria de acceso aleatorio dinámico (DRAM) puede ofrecer una mayor protección contra errores transitorios gracias al uso de códigos de corrección de errores. Este tipo de memoria, conocida como ECC o memoria protegida por EDAC , resulta especialmente útil para aplicaciones críticas, como la computación científica, las finanzas, la medicina, etc., así como para aplicaciones extraterrestres debido a la mayor radiación en el espacio.
Los controladores de memoria con corrección de errores tradicionalmente utilizan códigos de Hamming , aunque algunos emplean redundancia modular triple . El entrelazado permite distribuir el efecto de un único rayo cósmico que potencialmente perturba múltiples bits físicamente vecinos entre varias palabras, asociando los bits vecinos a diferentes palabras. Siempre que una perturbación por evento único (SEU) no supere el umbral de error (por ejemplo, un solo error) en cualquier 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 la ilusión de un sistema de memoria libre de errores. [ 23 ]
Además del hardware que proporciona las características necesarias para que funcione la memoria ECC, los sistemas operativos suelen contener funciones de informes relacionadas que se utilizan para proporcionar notificaciones cuando se recuperan errores leves de forma transparente. Un ejemplo es el subsistema EDAC del kernel de Linux (anteriormente conocido como Bluesmoke ), que recopila los datos de los componentes habilitados para la comprobación de errores dentro de un sistema informático; además de recopilar e informar de los eventos relacionados con la memoria ECC, también admite otros errores de suma de comprobación, incluidos los detectados en el bus PCI . [ 24 ] [ 25 ] [ 26 ] Algunos sistemas también admiten la limpieza de memoria para detectar y corregir errores tempranamente antes de que se vuelvan irrecuperables.
Véase también
- Código Berger
- Código de corrección de errores en ráfaga
- Memoria ECC , un tipo de almacenamiento de datos informáticos
- Adaptación de enlaces
- Lista de algoritmos § Detección y corrección de errores
- Lista de funciones hash
Referencias
- 1 2 "Masorah". Enciclopedia judía .
- ↑ Pratico, Gary D.; Pelt, Miles V. Van (2009). Fundamentos de la gramática hebrea bíblica: Segunda edición . Zondervan. ISBN 978-0-310-55882-8.
- ↑ Mounce, William D. (2007). Griego para todos: Cómo usar herramientas griegas sin dominar las lenguas bíblicas . Zondervan. pág. 289. ISBN 978-0-310-28289-1.
- ↑ Mishné Torá , Tefilín, Mezuzá y Sefer Torá, 1:2. Ejemplo de traducción al inglés: Eliyahu Touger. Mishné Torá del Rambam . Moznaim Publishing Corporation.
- ↑ Brian M. Fagan (5 de diciembre de 1996). «Los Rollos del Mar Muerto». The Oxford Companion to Archaeology . Oxford University Press . ISBN 0195076184.
- ↑ Thompson, Thomas M. (1983), From Error-Correcting Codes through Sphere Packings to Simple Groups , The Carus Mathematical Monographs (#21), The Mathematical Association of America, p. vii, ISBN 0-88385-023-0
- ↑ Shannon, CE (1948), "Una teoría matemática de la comunicación", Bell System Technical Journal , 27 (3): 379– 423, doi : 10.1002/j.1538-7305.1948.tb01338.x , hdl : 10338.dmlcz/101429 , PMID 9230594
- ↑ Golay, Marcel JE (1949), "Notas sobre codificación digital", Proc.IRE (IEEE) , 37 : 657
- ↑ Gupta, Vikas; Verma, Chanderkant (noviembre de 2012). "Detección y corrección de errores: una introducción". Revista internacional de investigación avanzada en ciencias de la computación e ingeniería de software . 2 (11). S2CID 17499858 .
- 1 2 A. J. McAuley, Comunicación de banda ancha confiable mediante un código de corrección de borrado de ráfaga , ACM SIGCOMM, 1990.
- ↑ Shah, Pradeep M.; Vyavahare, Prakash D.; Jain, Anjana (septiembre de 2015). "Códigos modernos de corrección de errores para 4G y más allá: códigos Turbo y códigos LDPC" . 2015 Radio and Antenna Days of the Indian Ocean (RADIO) . págs. 1–2 . doi : 10.1109/RADIO.2015.7323369 . ISBN 978-9-9903-7339-4. S2CID 28885076 . Consultado el 22 de mayo de 2022 .
- ↑ "IEEE SA - IEEE 802.11ac-2013" . Asociación de Estándares IEEE . Archivado del original el 22 de mayo de 2022. Consultado el 22 de mayo de 2022 .
- ↑ "Transición a discos duros de sector 4K de formato avanzado | Seagate EE. UU." . Seagate.com . Consultado el 22 de mayo de 2022 .
- ↑ Frank van Gerwen. "Números (y otras estaciones misteriosas)" . Archivado del original el 12 de julio de 2017. Consultado el 12 de marzo de 2012 .
- ↑ Gary Cutlack (25 de agosto de 2010). "Misteriosa 'estación de números' rusa cambia su programación después de 20 años" . Gizmodo . Archivado del original el 5 de julio de 2017. Consultado el 12 de marzo de 2012 .
- ↑ Ben-Gal I.; Herer Y.; Raz T. (2003). "Procedimiento de inspección autocorrectivo bajo errores de inspección" (PDF) . IIE Transactions . IIE Transactions on Quality and Reliability, 34(6), pp. 529-540. Archivado del original (PDF) el 13 de octubre de 2013. Recuperado el 10 de enero de 2014 .
- ↑ Yvo Meeres, Tommi A. Pirinen (2021). "La armonía vocálica vista como un código corrector de errores". Actas de la Sociedad para la Computación en Lingüística . 4 (1): 313– 322. doi : 10.7275/bjvb-2n37 .
- ↑ K. Andrews et al., El desarrollo de códigos Turbo y LDPC para aplicaciones en el espacio profundo , Actas del IEEE, vol. 95, n.º 11, noviembre de 2007.
- ↑ Huffman, William Cary; Pless, Vera S. (2003). Fundamentos de los códigos correctores de errores . Cambridge University Press . ISBN 978-0-521-78280-7.
- ↑ Kurtas, Erozan M.; Vasic, Bane (2018-10-03). Técnicas avanzadas de control de errores para sistemas de almacenamiento de datos . CRC Press. ISBN 978-1-4200-3649-7.
- ↑ Scott A. Moulton. "Mi disco duro se averió" . Archivado del original el 2 de febrero de 2008.
- ↑ Qiao, Zhi; Fu, Song; Chen, Hsing-Bung; Settlemyer, Bradley (2019). «Construcción de sistemas de almacenamiento fiables y de alto rendimiento: un estudio empírico y analítico». 2019 IEEE International Conference on Cluster Computing (CLUSTER) . pp. 1–10 . doi : 10.1109/CLUSTER.2019.8891006 . ISBN 978-1-7281-4734-5. S2CID 207951690 .
- ↑ "Uso del 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 .
- ↑ Jeff Layton. "Detección y corrección de errores" . Linux Magazine . Consultado el 12 de agosto de 2014 .
- ↑ "Proyecto EDAC" . bluesmoke.sourceforge.net . Consultado el 12 de agosto de 2014 .
- ↑ "Documentation/edac.txt" . Documentación del kernel de Linux . kernel.org . 16 de junio de 2014. Archivado del original el 5 de septiembre de 2009. Consultado el 12 de agosto de 2014 .
Lecturas adicionales
- Shu Lin; Daniel J. Costello, Jr. (1983). Codificación de control de errores: Fundamentos y aplicaciones . Prentice Hall . ISBN 0-13-283796-X.
- 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) Archivada el 7 de noviembre de 2014 en Wayback Machine.
- Detección y corrección de la corrupción silenciosa de datos para la computación de alto rendimiento a gran escala. Archivado el 7 de noviembre de 2014 en Wayback Machine.
Enlaces externos
- El libro de texto en línea: Information Theory, Inference, and Learning Algorithms , de David JC MacKay , contiene capítulos sobre códigos de corrección de errores elementales; sobre los límites teóricos de la corrección de errores; y sobre los códigos de corrección de errores más avanzados, incluidos los códigos de verificación de paridad de baja densidad , los códigos turbo y los códigos fuente .
- Página de ECC : implementaciones de rutinas populares de codificación y decodificación ECC
- Detección y corrección de errores
- Errores informáticos