>> Technologie Électronique >  >> Téléviseurs >> Accessoires TV

Tables de Correspondance (LUT) : Accès Rapide aux Données par Précalcul

Tables de Correspondance (LUT) : Accès Rapide aux Données par Précalcul

Une Table de Correspondance (LUT - Lookup Table) est une structure de données qui remplace le calcul à l'exécution par un accès mémoire. Elle associe des clés d'entrée à des valeurs de sortie précalculées, échangeant du stockage contre de la vitesse et du déterminisme.

Concept Fondamental

 Entrée (Clé) ──► [ Mémoire LUT ] ──► Sortie (Valeur) Index Tableau Données 
  • Complexité Temporelle : O(1) — Lecture mémoire unique (index tableau) ou recherche hash.
  • Complexité Spatiale : O(N) — N entrées stockées.
  • Déterminisme : Latence fixe (critique pour temps réel / RTOS dur).

Formes d'Implémentation

FormeStructureCas d'Usage
Tableau 1D / Vecteursortie = table[entrée]Mapping direct : Sin(x), Correction gamma, Linéarisation thermocouple, CRC8.
Tableau 2D / Multi-Dsortie = table[x][y]Interpolation bilinéaire, Machines d'état, Tables de vérité (portes logiques).
Hash Map / Dictionnairesortie = dict[clé]Clés éparse, Clés non-entières (chaînes, enums), Tables dynamiques.
RAM Blocs FPGA/ASICBlocs mémoire matérielsDSP : Sin/Cos, CORDIC, Coeff FIR, Conversion espace couleur (RGB→YUV). Latence nulle.
Mémoire Texture (GPU)Textures 1D/2D/3D en cacheGraphismes : Filtrage, Mipmaps. Calcul : LUT interpolées.

Applications Classiques

  • Fonctions Transcendantes : sin, cos, log, exp, sqrt — là où instruction matérielle absente ou lente (MCU 8-bit, cœur soft FPGA).
  • Linéarisation : Thermocouple (Type K, J, T), Sonde PT100 (Callendar-Van Dusen), Capteur pression polynomial.
  • Couleur / Gamma : sRGB ↔ Linéaire, CMYK ↔ RGB, LUT 3D (Étalonnage couleur, cubes 17×17×17).
  • Communications Numériques : Mapping modulation (Constellation QAM), Métriques branches décodeur Viterbi, CRC (piloté par table).
  • Systèmes de Contrôle : Ordonnancement gains (vanne non-linéaire → linéarisée), Profils came.
  • Cryptographie : S-Boxes (AES SubBytes), Constantes Montgomery précalculées.
  • Jeu Vidéo : Lightmaps, Shadow maps, GI précalculé, Courbes animation.

Considérations de Conception

  • Résolution vs Taille : Entrée 8-bit = 256 entrées. 16-bit = 65 536 entrées. Interpolation (linéaire/cubique) réduit entrées nécessaires.
  • Coût d'Initialisation : Calcul une fois au démarrage / compilation (constexpr). Embarqué dans binaire.
  • Localité Cache : Petites LUTs tiennent dans cache L1. Grandes LUTs → défauts cache → plus lent que calcul.
  • Précision : Erreur quantification (arrondi index entrée) + Précision sortie. Interpolation réduit erreur.
  • Volatilité : Statique (ROM/Flash) vs Dynamique (RAM, mise à jour exécution — ex. égaliseur adaptatif).

Exemple Interpolation (1D Linéaire)

 float lut_interp(const float* table, int n, float x, float x_min, float x_max) { float idx = (x - x_min) * (n - 1) / (x_max - x_min); int i = (int)floorf(idx); float frac = idx - i; i = clamp(i, 0, n - 2); return table[i] * (1 - frac) + table[i + 1] * frac; } 

Quand NE PAS Utiliser de LUT

  • Fonction simple et rapide (ex. y = 2*x + 1). Le calcul gagne.
  • Plage d'entrée énorme / précision continue haute (ex. float 32-bit → 4G entrées impossible).
  • Mémoire sévèrement contrainte (minuscule MCU, 2 Ko RAM) et fonction calculable en < 10 cycles.
  • Données changent chaque cycle (pas de réutilisation).

En Résumé : Les LUTs sont une technique d'optimisation fondamentale — « Espace contre Temps  ». Ubiquitaires dans l'embarqué, DSP, graphismes, crypto, calcul scientifique. Profilez d'abord : mesurez cycles calcul vs bande passante/latence mémoire.

Accessoires TV