web-dev-qa-db-fra.com

Qu'est-ce qu'un hit en cache et un cache miss? Pourquoi la commutation de contexte ferait-elle disparaître le cache?

À partir du onzième chapitre (Performances et évolutivité) et de la section intitulée Context Switching du livre JCIP :

Lorsqu'un nouveau thread est mis en place, il est peu probable que les données dont il a besoin soient dans le cache du processeur local, donc un changement de contexte provoque une rafale de cache manque, et donc les threads courent un peu plus lentement quand ils sont premier prévu.

  1. Quelqu'un peut-il expliquer de manière simple le concept de cache miss et son contraire probable (cache hit)?
  2. Pourquoi la commutation de contexte causerait beaucoup de ratés?
59
Geek

Quelqu'un peut-il expliquer de manière simple le concept de cache cache et son contraire probable (succès de cache)?

Un cache miss, généralement, est quand quelque chose est recherché dans le cache et n'est pas trouvé - le cache ne contenait pas l'élément en cours de recherche. Le cache hit est lorsque vous recherchez quelque chose dans un cache et qu'il était stocke l'élément et est en mesure de satisfaire la requête.

Pourquoi la commutation de contexte causerait beaucoup de ratés?

En termes de mémoire, chaque processeur possède un cache mémoire - une copie à grande vitesse de petites parties de la mémoire principale. Lorsqu'un contexte est basculé dans un processeur sur un nouveau thread, la mémoire cache locale est vide ou ne correspond pas aux données nécessaires au thread. Cela signifie que toutes les recherches (ou la plupart) de mémoire effectuées par ce nouveau thread aboutissent à des erreurs de cache, car les données dont il a besoin sont non stockées dans le cache de mémoire locale. Le matériel doit ensuite adresser un certain nombre de requêtes à la mémoire principale pour remplir le cache de la mémoire locale, ce qui ralentit initialement l'exécution du thread.

89
Gray

Chaque fois que le processeur souhaite extraire des données de la mémoire principale, il examine d'abord le tampon de cache pour voir si l'adresse correspondante est présente dans le tampon. Si c'est le cas, il effectuera l'opération en utilisant le cache; pas besoin d'aller chercher de la mémoire principale. Ceci s'appelle un "coup de cache".

Si l'adresse n'est pas présente dans le cache, cela s'appelle un "cache miss". Si un cache manque, cela signifie que le processeur doit accéder à la mémoire principale pour extraire l'adresse et cela prend un peu plus de temps.

2
babu R

Vous devez également observer que si un changement de contexte provoque le retour à l'état actif d'un thread précédemment exécuté sur un processeur ayant accès aux données en cache, il est possible que le "jeu de travail" requis soit toujours dans le cache. La probabilité que cela soit vrai dépend de la taille du cache (et de sa structure). Cela dépend également de la charge de travail: quelle a été la demande de cache pendant la période d'inactivité ou d'attente des threads et la durée de la période d'inactivité ou d'attente.

1
Joe Temple

Si le processeur constate que l'emplacement de la mémoire se trouve dans le cache, on dit qu'un cache a réussi, sinon on parle d'un cache.

0
priya