Vous êtes ‘tampon’. À la base, cette expression est une insulte. Pourtant en informatique, il s’agit d’un des mécanismes des plus utiles. Il faut dire que derrière ce terme se cache beaucoup d’histoires. Le tampon est un lieu de stockage intermédiaire entre deux traitements, une mémoire temporaire si l’on préfère.
L’idée est d’effectuer une copie des informations à proximité du lieu de traitement. Il existe de nombreuses mémoires dont l’accès est plus un moins rapide. Une information stockée dans la mémoire vive (RAM) sera accessible plus rapidement qu’une information sur un disque dur à l’autre bout d’Internet.
À ce titre, les registres que l’on manipule dans le langage Assembleur sont des tampons. Enfin, on connaît surtout son nom anglais : le buffer. Les informaticiens connaissent surtout cette zone pour l’erreur qui en résulte lorsqu’elle est mal maîtrisée : le débordement de tampon (ou buffer overflow pour les puristes).
Concrètement, un registre de base permet de contenir 8 bits, 8 ‘0’ ou ‘1’. C’est à peine de quoi compter de 0 à 255 mais c’est suffisant pour stocker le compteur de vies dans un jeu vidéo. Maintenant, si un traitement essaie de stocker un nombre plus grand, l’erreur apparaît et peut avoir des effets surprenants.
‘Nuclear Gandhi’ en est l’un des exemples les plus fameux. De même, le premier vol d’Ariane V, la navette spatiale devenue depuis l’une des plus sûres, s’est soldé par un échec à cause d’un tampon trop court. Bien sûr, les registres utilisés comme mémoire tampons ont depuis bien augmenté. Passant de 8 à 16 bits, puis 32, 64, 128, …
Petit conseil de développeur, avant de stocker une donnée dans un tampon, demandez-vous quelles sont les limites des valeurs que vous voulez stocker. Et prévoyez un contrôle si cela n’est pas suffisant. Je dis cela mais même si l’erreur n’a pas toujours des conséquences catastrophiques, elle arrive encore trop souvent.
Mais passons à l’échelle au-dessus. Les tampons ont depuis bien grandi. Désormais, il est possible de stocker de la musique ou de la vidéo. Si l’on reste à l’échelle locale, l’intérêt semble limité. Pourtant, c’est ce qui permet d’avoir des jeux vidéo qui se déroulent sans transition.
Prenons l’exemple des jeux en monde ouvert. Sans mémoire tampon, de temps en temps, le jeu devrait se mettre en pause pour charger la zone ouverte où vient d’arriver le personnage contrôlé. Pour rendre l’expérience fluide, il suffit de pré-charger la zone suivante. Dès que le joueur franchit un seuil alors celle-ci remplace les données de la zone précédente.
L’écriture entre une zone tampon et la mémoire principale est presque instantanée. Ainsi, les temps de chargement ont quasiment disparu dans les jeux modernes et les Taurens peuvent traverser les plaines d’Azeroth sans crainte d’être interrompus dans leurs quêtes comme l’est Mario.
De nos jours, l’usage principal des tampons en informatique est la diffusion de contenus à travers Internet. Même si le réseau des réseaux répond avec une latence très faible ,il peut arriver que des paquets se perdent. Il faut attendre que ceux-ci retrouvent le chemin ou qu’une demande de renvoi soit effectuée pour continuer.
Il serait dommage que le consommateur voit sa vidéo mise en pause le temps de réémission des éléments manquants. Vous connaissez au moins tous un de ces tampons, la fameuse barre blanche de Youtube et sa némésis la barre rouge. La différence entre les deux correspond à la vidéo stockée en tampon et non lue.
Même si Internet se coupe, la vidéo continue tant que la rouge ne recouvre pas totalement la grise. Ainsi, les zones tampons s’assurent que les contenus audio et vidéo ne s’arrêtent jamais. Les algorithmes s’assurent du débit et font en sorte d’adapter la taille du tampon pour cela.
Mais ce mécanisme a une contrainte. Dans le cas d’une diffusion en temps réel, le tampon implique toujours un différé. Si celui-ci est trop faible, des coupures peuvent apparaître. Il est donc nécessaire d’augmenter la zone tampon. Par contre si le différé est trop important cela peut entraîner des déceptions chez les supporters de foot.
Si vous regardez un match très attendu, il n’est pas rare d’entendre des gens célébrer un but dans les appartements voisins alors que l’action est encore en cours chez vous. Le son n’est pas devenu plus rapide que la lumière. En réalité, les télévisions connectées privilégient la qualité à l’instantanéité. Quelques secondes suffisent à gâcher le moment.