Les ordinateurs ont différents types de cache, chacune a son propre usage, mais elles possèdent toutes, à peu de chose près, la même définition.
Que fait une cache ? La cache réalise quelques tâches spécifiques. Certaines caches sont dédiées à ne faire qu'une seule tâche, mais la plupart réalisent les tâches suivantes:
Cache en écriture - utilisée lorsqu'un périphérique rapide envoi de l'information à un périphérique lent. Normalement le périphérique rapide devrait attendre que le périphérique lent lui indique qu'il est prêt à recevoir d'autres données. C'est comme essayer de tenir une conversation pendant que quelqu'un traduit chaque mot que l'on dit avec un dictionnaire. Ainsi la cache en écriture possède une logique et les logiciels lui permettant de transmettre (écrire) son contenu dans le périphérique lent à la vitesse de celui-ci automatiquement, de manière à ce que les périphériques soient libérés et prêts à une autre utilisation.
Le rapport entre les vitesses des périphériques décidera de la grosseur de la cache à utiliser (plus la différence de vitesse est grande, plus grande devra être la cache).
Cache en lecture - utilisée lorsqu'un périphérique rapide obtient de l'information d'un périphérique lent. Les caches en lecture possèdent la plupart du temps une logique leur permettant de lire d'avance (prefetch) ce que vous pourriez avoir besoin par la suite. Ainsi ils font une lecture lente de toutes les informations dont vous pourriez avoir besoin. Lorsque vous demandez quelque chose qui est déjà dans la cache, vous l'obtiendrez rapidement. Lorsque la cache est vide, elle peut se remplir d'elle même pendant que vous faites autre chose.
Tampons de cache - ce sont des zones qui renferment des choses que vous avez demandées auparavant. Ils se rappellent des dernières données ou informations, ainsi si vous les désirez à nouveau, elles vous attendent déjà. Si vous répétez souvent la même chose, grandes sont les chances d'avoir accès à l'information directement dans le tampon. Les programmes d'ordinateur effectuent souvent un travail répétitif, et cela survient beaucoup plus souvent que vous ne pouvez l'imaginer.
Combinaisons - la plupart des caches sont des combinaisons des fonctions énumérées précédemment ou renferment toutes ces fonctions.
Le processeur de votre ordinateur est très rapide, il peut tourner à des vitesses dépassant 200mhz. La mémoire RAM standard est plus rapide que la plupart des autres composantes de votre ordinateur, mais elle ne tient pas le coup face à des vitesses approchant celle du processeur. Ainsi les concepteurs de processeur (CPU) ont réservé un espace mémoire très rapide à l'intérieur même de la puce du processeur. C'est la cache L1, elle fonctionne à la même vitesse que le processeur. L'espace sur la puce du processeur coûte très cher, il n'est alors pas possible de réserver une grande quantité de mémoire pour la cache L1 (approximativement 1/1000 de la taille totale de la mémoire RAM de votre ordinateur). Puisque les programmes d'ordinateur effectuent beaucoup de boucles autour du même code, les instructions et données de la cache L1 sont exécutées souvent. Même une petite cache L1 peut donner un gain très appréciable en vitesse. Plus la vitesse du processeur est rapide par rapport à la mémoire principale RAM et plus la quantité de données sur laquelle vous travaillez est importante, plus grande devra être la cache L1.
La mémoire rapide située dans le processeur (cache L1) est de petite taille, et la cache L1 ainsi que le processeur sont encore beaucoup plus rapides que la mémoire RAM (jusqu'à 50 fois plus rapides). Lorsque que les données ne sont pas dans la cache L1, le processeur doit aller les chercher dans la mémoire RAM, il y a alors un ralentissement notable. Le processeur doit alors attendre un long moment (par rapport à sa vitesse) pour que la mémoire RAM lui rende l'information, le processeur ne peut alors rien faire d'autre qu'attendre. Ainsi entre la cache rapide L1 (et le processeur) et la mémoire lente RAM, est insérée une deuxième cache, la cache niveau 2 ou L2.
Cette cache est fabriquée à partir de mémoire rapide, mais relativement peu dispendieuse, appelé mémoire statique ou SRAM et est approximativement 10 fois plus rapide que la mémoire RAM standard. On peut ainsi se permettre 256k et même 1 ou 2 mégaoctets de SRAM.
Le processeur travaille presque toujours sans arrêt, il fera probablement quelque chose qu'il a fait récemment (une boucle) et les données seront dans la cache L1; ou il possédera la logique qui lui aura permis de lire d'avance (prefetch) l'information située dans la cache L1; cependant les ordinateurs exécutent des centaines de millions d'instructions à la seconde! 1% de ratés dans la cache L1 signifie que pendant un million de fois par seconde le processeur devra lire dans la mémoire RAM. Les ratés dans la cache L1 peuvent atteindre 10 à 20%, ainsi la cache L2 apporte un aide précieux. Lorsque le processeur ne trouve pas ce dont il a besoin dans la cache L1, il le trouvera la plupart du temps dans la cache L2. Le fait que la mémoire RAM soit plus lente que le processeur devient alors beaucoup moins significatif.
Lorsqu'on entend parler de cache, il s'agit la plupart du temps de la cache L2. La majorité des ordinateurs personnels d'aujourd'hui possède les deux niveaux de cache (L1 et L2).
Certains systèmes sont tellement rapides qu'ils ont besoin de plusieurs niveaux de cache entre le processeur et la mémoire RAM. Chacun de ces niveaux possède le numéro suivant dans la séquence de numérotation des caches (L1, L2, L3, etc.). Le processeur x704 de la compagnie Exponential possède 3 niveaux de cache, ainsi que le processeur Alpha de DEC. Les caches L3 sont rares et peu connues, mais elles sont présentent dans les processeurs qui tournent à des vitesses supérieures à 500mhz, pour l'instant je n'ai pas entendu parler de processeurs qui possèdent plus de 3 niveaux de cache. Cependant les ordinateurs évoluent si rapidement, qui sait le nombre de caches que posséderont les futurs processeurs ?
De la même manière que le processeur est plus rapide que la mémoire RAM, celle-ci est beaucoup plus rapide que les disques durs. Une cache est utilisée entre le disque dur et la mémoire, lorsque l'ordinateur écrit sur le disque, les données sont placées dans la cache, elles sont alors écrites lentement (à la vitesse maximale du disque dur) alors que l'ordinateur peut s'occuper à faire autre chose. Lorsque l'ordinateur désire lire sur le disque, la cache peut avoir lu d'avance (prefetch) ou posséder des données lues auparavant, celles-ci sont alors tirées directement de la cache sans avoir à passer par le disque dur.
Non seulement l'ordinateur peut-il lui-même utiliser une partie de sa mémoire RAM comme cache entre lui et le disque dur (cache logicielle), les concepteurs de disques durs ont également ajouté une petite quantité de mémoire directement sur les contrôleurs de disques durs comme cache (cache matérielle) et c'est la norme actuellement dans la fabrication des disques durs. Cependant les gens ont de la difficulté à différencier entre la cache logicielle et la cache matérielle du disque dur, soyez donc prudent lorsque vous utiliserez cette terminologie; les caches font la même chose, mais différemment.
Les disques durs sont rapides comme l'éclair comparativement à la majorité des lecteurs CD-ROM. Des ingénieurs astucieux ont décidé d'utiliser le disque dur ou la mémoire RAM ou les deux à la fois pour accélérer les accès au CD-ROM. Ils fonctionnement comme les caches de disques durs et conservent les données temporairement sur le disque dur ou dans la mémoire RAM, jusqu'à ce que l'ordinateur ait besoin de lire. Rappelez-vous que les CD-ROM ne peuvent être que lus, il n'y donc pas de cache en écriture pour ceux-ci. (On peut écrire sur certains lecteurs CD, mais ils ne sont pas appelés CD-ROM, plutôt CD-R, PD-CD, WORM).
Il y a également des caches de lecture d'avance (prefetch) directement sur les lecteurs CD-ROM.
Une cache est placée entre deux composantes possédant des vitesses différentes. La cache existe alors sur la composante rapide et utilise une partie de la composante rapide pour simuler une version rapide de la composante lente. Quelquefois la cache est matérielle, mais plus souvent elle est logicielle. Les caches ne sont parfois utilisées que pour emmagasiner de l'information, elles peuvent posséder également leur propre logique leur permettant de se vider et lire d'avance (prefetch) ce que vous risquez d'avoir besoin plus tard.
Merci aux caches, nos ordinateurs et leurs composantes fonctionnent beaucoup plus rapidement grâce à elles.