Quelle est la différence entre un cache et un tampon?

Est-ce que le cache est un type spécial de tampon correct? Ils ont tous deux des fonctions similaires, mais y at-il une différence sous-jacente qui me manque?

De l'article de Wikipédia sur les tampons de données :

Un tampon est une région d'un stockage de mémoire physique utilisé pour conserver temporairement des données pendant qu'il est déplacé d'un endroit à l'autre

Un tampon finit par parcourir et en maintenant toutes les données transmises d'un emplacement de stockage à l'autre (comme lors de l'utilisation d'un tampon circulaire dans le traitement audio). Un tampon permet simplement – un "tampon" de données avant et après votre position actuelle dans le flux de données.

En effet, il existe des aspects communs d'un tampon et d'un cache. Cependant, le cache dans le sens conventionnel ne stocke généralement pas toutes les données lorsqu'elles sont déplacées d'un endroit à l'autre (c.-à-d. Le cache de la CPU).

L'objectif d'un cache est de stocker des données de manière transparente, de sorte que juste assez de données soient mis en cache afin que les données restantes puissent être transférées sans aucune pénalité de performance. Dans ce contexte, le cache ne permet que "pré-extraire" une petite quantité de données (en fonction des taux de transfert, des tailles de cache, etc.).

La principale différence réside dans le fait qu'un tampon aura finalement conservé toutes les données. À l'inverse, un cache peut avoir conservé tout, certaines ou aucune des données (selon la conception). Toutefois, on accède à un cache comme si vous accédez directement aux données en premier lieu – ce qui est exactement mis en cache est transparent pour le «utilisateur» du cache.


La différence se trouve dans l' interface . Lorsque vous utilisez un cache pour accéder à une source de données, vous l'utilisez comme si le cache était la source de données: vous pouvez accéder à chaque partie de la source de données via le cache et le cache déterminera d'où proviennent les données (le Le cache lui-même ou la source). Le cache lui-même détermine quelles parties des données doivent être préchargées (habituellement juste le début, mais parfois toutes), tandis que l' algorithme de remplacement du cache en cours détermine ce qui ou quand les éléments sont supprimés du cache. Le meilleur exemple de cela est un système, mis à part le cache de la CPU , est prefetcher / readahead . Les deux chargent les parties de données qu'ils pensent que vous utiliserez le plus dans la mémoire, et revenir sur le disque dur si quelque chose n'est pas mis en cache.

À l'inverse, un tampon ne peut pas être utilisé pour déplacer instantanément votre emplacement dans le flux de données, sauf si la nouvelle partie a déjà été déplacée vers le tampon. Pour ce faire, il faudrait que le tampon se déplace (étant donné que le nouvel emplacement dépasse la longueur du tampon), ce qui vous oblige à "redémarrer" le tampon à partir d'un nouvel emplacement. Le meilleur exemple est de déplacer le curseur dans une vidéo Youtube.

Un autre bon exemple d'un tampon est de lire de l'audio dans Winamp. Étant donné que les fichiers audio doivent être décodés par la CPU, il faut un certain temps entre la lecture de la chanson, la date de traitement de l'audio et l'envoi à votre carte son. Winamp intercepte certaines des données audio, de sorte qu'il y a déjà assez de données audio déjà traitées pour éviter tout "lock-up" (c'est-à-dire que la CPU prépare toujours l'audio que vous entendrez dans quelques centaines de millisecondes, jamais en temps réel , Ce que vous entendez vient du tampon, c'est ce que le CPU a préparé dans le passé).

Il serait plus exact de dire qu'un cache est un modèle d'utilisation particulier d'un tampon, ce qui implique des utilisations multiples des mêmes données. La plupart des utilisations de «tampon» impliquent que les données seront vidées ou rejetées après une utilisation unique (bien que ce ne soit pas nécessairement le cas), alors que «cache» implique que les données seront réutilisées à plusieurs reprises. La mise en cache implique souvent que les données sont stockées car elles sont également utilisées simultanément, bien que ce ne soit pas nécessairement le cas (comme dans le cas de la pré-extraction et autres), alors que la mise en mémoire tampon implique que les données sont stockées pour une utilisation ultérieure.

Toutefois, il existe certainement un chevauchement important dans la mise en œuvre et l'utilisation.

Une différence importante entre le cache et le tampon est:

Le tampon fait partie de la mémoire principale. Ce sont des structures présentes et accessibles à partir de la mémoire primaire (RAM).

D'autre part, le cache est une mémoire physique distincte dans la hiérarchie de la mémoire d'un ordinateur.

Buffer est parfois appelé aussi – Buffer cache. Ce nom met l'accent sur le fait que l'utilisation du tampon est similaire à celle du cache, c'est-à-dire de stocker des données. Alors que la différence réside dans le contexte de son utilisation.

Les tampons sont utilisés pour stocker temporairement des données, tandis que les données sont déplacées d'un objet à l'autre. EX: lorsqu'une vidéo est déplacée d'Internet sur notre PC, les tampons d'affichage sont utilisés pour stocker les images de la vidéo qui seront affichées ensuite. (CELLE-ci AUGMENTE LA QoS, LA VIDÉO A ÉTÉ FONCTIONNÉMENT SIMPLEMENT APRÈS UN PROCESSUS DE BUFFERAGE SUCCÈS.) EX: un autre exemple est le scénario lorsque nous écrivons des données sur nos fichiers. Les données nouvellement écrites ne sont pas copiées instantanément sur la mémoire secondaire. Les modifications apportées sont stockées dans le tampon, puis selon la stratégie conçue, les modifications sont reflétées dans le fichier dans la mémoire secondaire (disque dur).

Les caches d'autre part sont utilisés entre la mémoire principale et les processeurs, pour combler l'écart entre la vitesse d'exécution de la RAM et le processeur. De plus, les données les plus fréquemment consultées sont stockées dans le cache pour réduire l'accès à la RAM.