Détection et correction d’erreurs

Déc 28, 2021
admin

Les applications qui nécessitent une faible latence (telles que les conversations téléphoniques) ne peuvent pas utiliser la demande de répétition automatique (ARQ) ; elles doivent utiliser la correction d’erreurs avant (FEC). Le temps qu’un système ARQ découvre une erreur et la retransmette, les données retransmises arriveront trop tard pour être utilisables.

Les applications où l’émetteur oublie immédiatement l’information dès qu’elle est envoyée (comme la plupart des caméras de télévision) ne peuvent pas utiliser ARQ ; elles doivent utiliser FEC car lorsqu’une erreur se produit, les données originales ne sont plus disponibles.

Les applications qui utilisent ARQ doivent avoir un canal de retour ; les applications n’ayant pas de canal de retour ne peuvent pas utiliser ARQ.

Les applications qui nécessitent des taux d’erreur extrêmement faibles (comme les transferts d’argent numérique) doivent utiliser l’ARQ en raison de la possibilité d’erreurs non corrigibles avec le FEC.

L’ingénierie de fiabilité et d’inspection utilise également la théorie des codes correcteurs d’erreurs.

InternetEdit

Dans une pile TCP/IP typique, le contrôle d’erreurs est effectué à plusieurs niveaux :

  • Chaque trame Ethernet utilise la détection d’erreurs CRC-32. Les trames avec des erreurs détectées sont rejetées par le matériel récepteur.
  • L’en-tête IPv4 contient une somme de contrôle protégeant le contenu de l’en-tête. Les paquets avec des sommes de contrôle incorrectes sont abandonnés dans le réseau ou au niveau du récepteur.
  • La somme de contrôle a été omise de l’en-tête IPv6 afin de minimiser les coûts de traitement dans le routage du réseau et parce que la technologie actuelle de la couche liaison est supposée fournir une détection d’erreur suffisante (voir également RFC 3819).
  • UDP a une somme de contrôle optionnelle couvrant la charge utile et les informations d’adressage dans les en-têtes UDP et IP. Les paquets dont la somme de contrôle est incorrecte sont rejetés par la pile réseau. La somme de contrôle est facultative sous IPv4, et obligatoire sous IPv6. Lorsqu’elle est omise, il est supposé que la couche de liaison de données fournit le niveau souhaité de protection contre les erreurs.
  • TCP fournit une somme de contrôle pour protéger la charge utile et les informations d’adressage dans les en-têtes TCP et IP. Les paquets avec des sommes de contrôle incorrectes sont rejetés par la pile réseau, et finissent par être retransmis en utilisant l’ARQ, soit explicitement (comme par triple-ack), soit implicitement en raison d’un timeout.

Télécommunications dans l’espace profondEdit

Le développement des codes de correction d’erreurs a été étroitement couplé à l’histoire des missions dans l’espace profond en raison de l’extrême dilution de la puissance du signal sur les distances interplanétaires, et de la disponibilité limitée de puissance à bord des sondes spatiales. Alors que les premières missions envoyaient leurs données non codées, à partir de 1968, la correction numérique des erreurs a été mise en œuvre sous la forme de codes convolutifs (décodés de manière sous-optimale) et de codes de Reed-Muller. Le code de Reed-Muller était bien adapté au bruit auquel le vaisseau spatial était soumis (correspondant approximativement à une courbe en cloche), et a été mis en œuvre pour le vaisseau spatial Mariner et utilisé lors des missions entre 1969 et 1977.

Les missions Voyager 1 et Voyager 2, qui ont débuté en 1977, ont été conçues pour fournir des images en couleur et des informations scientifiques de Jupiter et Saturne. Cela a entraîné des exigences accrues en matière de codage, et donc, les vaisseaux spatiaux ont été pris en charge par des codes convolutifs (décodés par Viterbi de manière optimale) qui pouvaient être concaténés avec un code Golay (24,12,8) extérieur. Le vaisseau Voyager 2 supportait en outre une implémentation d’un code de Reed-Solomon. Le code concaténé Reed-Solomon-Viterbi (RSV) permettait une correction d’erreur très puissante, et a permis au vaisseau spatial d’effectuer un voyage prolongé vers Uranus et Neptune. Après la mise à niveau du système ECC en 1989, les deux vaisseaux ont utilisé le codage RSV V2.

Le Comité consultatif pour les systèmes de données spatiales recommande actuellement l’utilisation de codes de correction d’erreurs ayant des performances similaires au code RSV de Voyager 2, au minimum. Les codes concaténés tombent de plus en plus en disgrâce auprès des missions spatiales et sont remplacés par des codes plus puissants tels que les turbo-codes ou les codes LDPC.

Les différents types de missions spatiales profondes et orbitales qui sont menées suggèrent qu’essayer de trouver un système de correction d’erreur unique sera un problème permanent. Pour les missions proches de la Terre, la nature du bruit dans le canal de communication est différente de celle que subit un engin spatial en mission interplanétaire. En outre, à mesure qu’un engin spatial augmente sa distance par rapport à la Terre, le problème de la correction du bruit devient plus difficile.

Diffusion par satelliteEdit

La demande de largeur de bande de transpondeur de satellite continue de croître, alimentée par le désir de livrer la télévision (y compris les nouvelles chaînes et la télévision haute définition) et les données IP. La disponibilité des transpondeurs et les contraintes de bande passante ont limité cette croissance. La capacité du transpondeur est déterminée par le schéma de modulation sélectionné et la proportion de la capacité consommée par la FEC.

Stockage de donnéesEdit

Les codes de détection et de correction d’erreurs sont souvent utilisés pour améliorer la fiabilité des supports de stockage de données. Une piste de parité capable de détecter les erreurs d’un seul bit était présente sur le premier stockage de données sur bande magnétique en 1951. Le code rectangulaire optimal utilisé dans les bandes d’enregistrement à codage de groupe permet non seulement de détecter mais aussi de corriger les erreurs d’un seul bit. Certains formats de fichiers, notamment les formats d’archives, incluent une somme de contrôle (le plus souvent CRC32) pour détecter la corruption et la troncature et peuvent utiliser des fichiers de redondance ou de parité pour récupérer des parties de données corrompues. Les codes Reed-Solomon sont utilisés dans les disques compacts pour corriger les erreurs causées par les rayures.

Les disques durs modernes utilisent des codes CRC pour détecter et des codes Reed-Solomon pour corriger les erreurs mineures dans les lectures de secteurs, et pour récupérer les données des secteurs qui ont « mal tourné » et stocker ces données dans les secteurs de réserve. Les systèmes RAID utilisent une variété de techniques de correction d’erreurs pour corriger les erreurs lorsqu’un disque dur tombe complètement en panne. Les systèmes de fichiers tels que ZFS ou Btrfs, ainsi que certaines implémentations RAID, prennent en charge le nettoyage et le réarrimage des données, ce qui permet de détecter les blocs défectueux et de les récupérer (si possible) avant qu’ils ne soient utilisés. Les données récupérées peuvent être réécrites exactement au même emplacement physique, sur des blocs de rechange ailleurs sur la même pièce de matériel, ou les données peuvent être réécrites sur du matériel de remplacement.

Mémoire à correction d’erreurModifier

Article principal : Mémoire ECC

La mémoire DRAM peut fournir une protection plus forte contre les erreurs logicielles en s’appuyant sur des codes correcteurs d’erreurs. Une telle mémoire de correction d’erreurs, connue sous le nom de mémoire protégée par ECC ou EDAC, est particulièrement souhaitable pour les applications critiques de mission, telles que l’informatique scientifique, financière, médicale, etc. ainsi que pour les applications dans l’espace profond en raison de l’augmentation des radiations dans l’espace.

Les contrôleurs de mémoire correcteurs d’erreurs utilisent traditionnellement des codes de Hamming, bien que certains utilisent une triple redondance modulaire.

L’entrelacement permet de distribuer l’effet d’un seul rayon cosmique bouleversant potentiellement plusieurs bits physiquement voisins sur plusieurs mots en associant les bits voisins à différents mots. Tant qu’un bouleversement d’événement unique (SEU) ne dépasse pas le seuil d’erreur (par exemple, une erreur unique) dans un mot particulier entre les accès, il peut être corrigé (par exemple, par un code correcteur d’erreurs à un seul bit), et l’illusion d’un système de mémoire sans erreur peut être maintenue.

En plus du matériel fournissant les fonctionnalités nécessaires au fonctionnement de la mémoire ECC, les systèmes d’exploitation contiennent généralement des installations de rapport connexes qui sont utilisées pour fournir des notifications lorsque des erreurs logicielles sont récupérées de manière transparente. Un taux croissant d’erreurs logicielles pourrait indiquer qu’un module DIMM a besoin d’être remplacé, et une telle information de retour ne serait pas facilement disponible sans les capacités de rapport connexes. Un exemple est le sous-système EDAC du noyau Linux (anciennement connu sous le nom de Bluesmoke), qui collecte les données des composants activés pour la vérification des erreurs à l’intérieur d’un système informatique ; en plus de collecter et de rapporter les événements liés à la mémoire ECC, il prend également en charge d’autres erreurs de checksumming, y compris celles détectées sur le bus PCI.

Quelques systèmes prennent également en charge le scrubbing de la mémoire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.