phhsnews.com


phhsnews.com / Quand la mémoire cache d'un CPU est-elle retournée à la mémoire principale?

Quand la mémoire cache d'un CPU est-elle retournée à la mémoire principale?


Si vous commencez à apprendre comment fonctionnent les processeurs multicœurs, la mise en cache, la cohérence du cache et la mémoire, peu déroutant au début. Dans cet esprit, le post de questions et réponses de SuperUser répond à la question d'un lecteur curieux

La session de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A. > Le lecteur de SuperUser de Question

CarmeloS veut savoir quand la mémoire cache d'un CPU est renvoyée dans la mémoire principale:

Si j'ai un CPU avec deux cœurs et que chaque noyau a son propre cache L1, est-il possible que Core1 et Core2 les deux mettent en cache la même partie de la mémoire en même temps? Si c'est possible, quelle sera la valeur de la mémoire principale si Core1 et Core2 ont modifié leurs valeurs dans le cache?

Quand la mémoire cache d'un CPU est-elle retournée en mémoire principale?

Les Réponses

SuperUser contributeurs David Schwartz, sleske et Kimberly W ont la réponse pour nous. Premièrement, David Schwartz:

Si j'ai un processeur avec deux cœurs et que chaque cœur a son propre cache L1, est-il possible que Core1 et Core2 mettent en cache la même partie de la mémoire en même temps?

Oui, la performance serait terrible si ce n'était pas le cas. Considérez deux threads exécutant le même code. Vous voulez ce code dans les deux caches L1

Si c'est possible, quelle sera la valeur de la mémoire principale si Core1 et Core2 ont édité leurs valeurs dans le cache?

L'ancienne valeur sera dans la mémoire principale, qui n'aura pas d'importance puisque aucun noyau ne le lira. Avant d'éjecter une valeur modifiée du cache, elle doit être écrite en mémoire. Typiquement, une variante du protocole MESI est utilisée. Dans l'implémentation traditionnelle de MESI, si une valeur est modifiée dans un cache, elle ne peut être présente dans aucun autre cache au même niveau.

Suivi de la réponse de sleske:

Oui, avec deux caches cache la même région de mémoire peut se produire et est en fait un problème qui se produit beaucoup dans la pratique. Il existe différentes solutions, par exemple:

Les deux caches peuvent communiquer pour s'assurer qu'ils ne sont pas en désaccord

  • Vous pouvez avoir un superviseur qui surveille tous les caches et les met à jour
  • Chaque processeur surveille les zones de mémoire Lorsqu'il a détecté une écriture, il jette son cache (maintenant invalide)
  • . Le problème est appelé cohérence du cache et l'article de Wikipédia sur le sujet présente un bon aperçu du problème et des solutions possibles.

Et notre réponse finale de Kimberly W:

Pour répondre à la question dans le titre de votre article, cela dépend du protocole de mise en cache. S'il s'agit d'une ré-écriture, le cache ne sera renvoyé à la mémoire principale que si le contrôleur de cache n'a pas d'autre choix que de placer un nouveau bloc de cache dans l'espace déjà occupé. Le bloc qui occupait précédemment l'espace est supprimé et sa valeur est réécrite dans la mémoire principale

L'autre protocole est en écriture immédiate. Dans ce cas, à chaque fois que le bloc de cache est écrit au niveau

n , le bloc correspondant au niveau n + 1 est mis à jour. Il est similaire dans le concept de remplir un formulaire avec du papier carbone en dessous; tout ce que vous écrivez dessus est copié sur la feuille ci-dessous. Ceci est plus lent car il implique évidemment plus d'opérations d'écriture, mais les valeurs entre les caches sont plus cohérentes. Dans le schéma de réécriture, seul le cache de plus haut niveau aurait la valeur la plus à jour pour un bloc de mémoire particulier Avez-vous quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.


Crédit image: Lemsipmatt (Flickr)


Comment diffuser un jeu PC sur Twitch avec OBS

Comment diffuser un jeu PC sur Twitch avec OBS

Les services de streaming de jeux comme Twitch sont plus grands que jamais. Que vous souhaitiez laisser vos amis vous regarder jouer à un jeu ou essayer de créer une audience plus large, le streaming est facile. Obtenez une clé de flux Twitch depuis votre Twitch.tv profile Téléchargez Open Broadcaster Software et configurez le mode Game Capture Ajoutez votre touche Twitch à OBS 'Stream Settings Cliquez sur "Start Streaming" et jouez à votre jeu Si vous avez réglé Twitch, vérifiez le jeu que vous voulez diffuser avant de passer par ce guide.

(how-top)

Activation du cryptage de disque complet sous Windows 10

Activation du cryptage de disque complet sous Windows 10

Windows 10 utilise parfois le cryptage par défaut, et parfois non - c'est compliqué. Voici comment vérifier si le stockage de votre ordinateur Windows 10 est chiffré et comment le chiffrer s'il ne l'est pas. Le cryptage ne consiste pas seulement à arrêter le NSA: il s'agit de protéger vos données sensibles au cas où vous perdriez votre PC, ce dont tout le monde a besoin.

(how-top)