Detección y corrección de errores

Dic 28, 2021
admin

Las aplicaciones que requieren una baja latencia (como las conversaciones telefónicas) no pueden utilizar la solicitud de repetición automática (ARQ); deben utilizar la corrección de errores hacia adelante (FEC). Para cuando un sistema ARQ descubre un error y lo retransmite, los datos reenviados llegarán demasiado tarde para ser utilizables.

Las aplicaciones en las que el transmisor olvida inmediatamente la información tan pronto como se envía (como la mayoría de las cámaras de televisión) no pueden utilizar ARQ; deben utilizar 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 tienen canal de retorno no pueden utilizar ARQ.

Las aplicaciones que requieren tasas de error extremadamente bajas (como las transferencias digitales de dinero) deben utilizar ARQ debido a la posibilidad de que se produzcan errores no corregibles con FEC.

La fiabilidad y la ingeniería de inspección también hacen uso de la teoría de los códigos de corrección de errores.

InternetEdit

En una pila TCP/IP típica, el control de errores se realiza en varios niveles:

  • Cada trama Ethernet utiliza la detección de errores CRC-32. Las tramas con errores detectados son descartadas por el hardware receptor.
  • La cabecera IPv4 contiene una suma de comprobación que protege el contenido de la cabecera. Los paquetes con sumas de comprobación incorrectas se descartan dentro de la red o en el receptor.
  • La suma de comprobación se omitió en la cabecera IPv6 para minimizar los costes de procesamiento en el enrutamiento de la red y porque se supone que la tecnología actual de la capa de enlace proporciona suficiente detección de errores (véase también RFC 3819).
  • UDP tiene una suma de comprobación opcional que cubre la carga útil y la información de direccionamiento en las cabeceras UDP e IP. Los paquetes con sumas de comprobación incorrectas son descartados por la pila de red. La suma de comprobación es opcional en IPv4 y obligatoria en IPv6. Cuando se omite, se asume que la capa de enlace de datos proporciona el nivel deseado de protección contra errores.
  • TCP proporciona una suma de comprobación para proteger la carga útil y la información de direccionamiento en las cabeceras TCP e IP. Los paquetes con sumas de comprobación incorrectas son descartados por la pila de la red, y eventualmente se retransmiten utilizando ARQ, ya sea explícitamente (como a través de triple-ack) o implícitamente debido a un tiempo de espera.

Telecomunicaciones en el espacio profundoEditar

El desarrollo de los códigos de corrección de errores estuvo estrechamente vinculado a la historia de las misiones en el espacio profundo debido a la extrema dilución de la potencia de la señal a través de distancias interplanetarias, y 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 (con decodificación subóptima) y códigos Reed-Muller. El código Reed-Muller se adaptaba bien al ruido al que estaba sometida la nave espacial (que se ajustaba aproximadamente a una curva de campana), y se implementó para la nave espacial Mariner y se utilizó en las 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. Esto dio lugar a un aumento de los requisitos de codificación, por lo que las naves espaciales se apoyaron en códigos convolucionales (óptimamente decodificados por Viterbi) que podían concatenarse con un código Golay exterior (24,12,8). La nave Voyager 2 soportaba además una implementación de un código Reed-Solomon. El código Reed-Solomon-Viterbi (RSV) concatenado permitía una corrección de errores muy potente y posibilitó el extenso viaje de la nave a Urano y Neptuno. Tras las actualizaciones del sistema ECC en 1989, ambas naves utilizaron la codificación RSV V2.

El Comité Consultivo de Sistemas de Datos Espaciales recomienda actualmente el uso de códigos de corrección de errores con un rendimiento similar al código RSV de la Voyager 2 como mínimo. Los códigos concatenados están cayendo cada vez más en desgracia en las misiones espaciales, y son sustituidos por códigos más potentes como los códigos Turbo o los códigos LDPC.

Los diferentes tipos de misiones espaciales y orbitales que se llevan a cabo sugieren que tratar de encontrar un sistema de corrección de errores de talla única será un problema constante. Para las misiones cercanas a la Tierra, la naturaleza del ruido en el canal de comunicación es diferente de la que experimenta una nave espacial en una misión interplanetaria. Además, a medida que una nave espacial aumenta su distancia de la Tierra, el problema de la corrección del ruido se hace más difícil.

Transmisión por satéliteEditar

La demanda de ancho de banda del transpondedor de satélite sigue creciendo, alimentada por el deseo de entregar televisión (incluyendo nuevos canales y televisión de alta definición) y datos IP. La disponibilidad del transpondedor y las restricciones de ancho de banda han limitado este crecimiento. La capacidad del transpondedor viene determinada por el esquema de modulación seleccionado y la proporción de capacidad consumida por la FEC.

Almacenamiento de datosEditar

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. Una pista de paridad capaz de detectar errores de un solo bit estaba presente en el primer almacenamiento de datos en cinta magnética en 1951. El código rectangular óptimo utilizado en las cintas de grabación codificadas en grupo no sólo detecta sino que también corrige los errores de un solo bit. Algunos formatos de archivo, sobre todo de archivo, incluyen una suma de comprobación (casi siempre CRC32) para detectar la corrupción y el truncamiento, y pueden emplear archivos de redundancia o paridad para recuperar porciones de datos corruptos. Los códigos Reed-Solomon se utilizan en los discos compactos para corregir los errores causados por los arañazos.

Los discos duros modernos utilizan códigos CRC para detectar y códigos Reed-Solomon para corregir errores menores en las lecturas de los sectores, y para recuperar los datos de los sectores que se han «estropeado» y almacenar esos datos en los sectores de reserva. Los sistemas RAID utilizan diversas técnicas de corrección de errores para corregirlos cuando un disco duro falla por completo. Los sistemas de archivos como ZFS o Btrfs, así como algunas implementaciones de RAID, admiten el lavado de datos y el resilenciamiento, lo que permite detectar los bloques defectuosos y (con suerte) recuperarlos antes de que se utilicen. Los datos recuperados pueden reescribirse exactamente en la misma ubicación física, en bloques de repuesto en la misma pieza de hardware, o los datos pueden reescribirse en hardware de reemplazo.

Memoria de corrección de erroresEditar

Artículo principal: Memoria ECC

La memoria DRAM puede proporcionar una mayor protección contra los errores blandos al basarse en códigos de corrección de errores. Dicha memoria de corrección de errores, conocida como memoria protegida por ECC o EDAC, es particularmente deseable para aplicaciones de misión crítica, como la informática científica, financiera, médica, etc., así como para aplicaciones en el espacio profundo debido al aumento de la radiación en el espacio.

Los controladores de memoria con corrección de errores utilizan tradicionalmente códigos Hamming, aunque algunos emplean la triple redundancia modular.

El entrelazado permite distribuir el efecto de un solo rayo cósmico que altere potencialmente múltiples bits físicamente vecinos a través de múltiples palabras, asociando los bits vecinos a diferentes palabras. Mientras un evento único (SEU) no supere el umbral de error (por ejemplo, un solo error) en una palabra concreta entre accesos, puede corregirse (por ejemplo, mediante un código de corrección de errores de un solo bit), y puede mantenerse la ilusión de un sistema de memoria libre de errores.

Además de que el hardware proporcione las características necesarias para que la memoria ECC funcione, los sistemas operativos suelen contener instalaciones de información relacionadas que se utilizan para proporcionar notificaciones cuando los errores blandos se recuperan de forma transparente. Una tasa creciente de errores blandos podría indicar que un módulo DIMM necesita ser reemplazado, y tal información de retroalimentación no estaría fácilmente disponible sin las capacidades de reporte relacionadas. Un ejemplo es el subsistema EDAC del kernel de Linux (anteriormente conocido como Bluesmoke), que recoge los datos de los componentes habilitados para la comprobación de errores dentro de un sistema informático; además de recoger y notificar los eventos relacionados con la memoria ECC, también admite otros errores de suma de comprobación, incluidos los detectados en el bus PCI.

Unos pocos sistemas también admiten la depuración de la memoria.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.