2015-11-09 2 views
3

L'architecture actuelle du cache de l'unité centrale d'Intel est constituée de caches L1 et L2 locaux et d'un cache L3 partagé inclus. J'ai deux questions similaires à ce sujet:L'utilisation intensive du cache L3 par un cœur invalide-t-elle le cache L1/L2 d'un autre cœur?

  1. L'accès mémoire étendu par le thread s'exécutant sur un noyau invalide le cache L1/L2 d'un autre core?
  2. Les données requises par un thread s'exécutant sur un seul noyau occupent-elles l'ensemble du cache L3?

Répondre

5

La réponse à ces deux questions est oui. La seconde est plus simple, alors commençons par là - le principal avantage du cache L3 est qu'il est partagé. Le but de ce partage est de vous permettre d'utiliser plus de capacité de cache par un seul thread en cas de besoin que si vous deviez partager les mêmes ressources entre les cœurs au lieu de les partager. En d'autres termes, si tous les N coeurs sont actifs et équilibrés et que les données sont réparties uniformément (c'est-à-dire sans problème d'alignement), vous obtenez exactement le même partage (1/N) de LLC par cœur. Cependant, si un noyau a plus de mémoire cache, il peut se développer au détriment des autres qui sont actuellement moins liés au cache. Dans le cas extrême bien sûr, vous pouvez utiliser l'ensemble de la L3 par un seul processus, sans tenir compte des cas où l'architecture décide de conserver un sous-ensemble de la L3 dédié à une tâche (assez courante) ou un noyau (beaucoup moins commun). Comme pour la première question - si le L3 est inclusif (comme c'est le cas dans la plupart des processeurs courants, principalement pour un filtrage efficace de snoop), l'un des threads devient dominant et prend tout le contrôle, puis les données par les autres cœurs (les moins actifs) devront être expulsés vers la mémoire, et afin de renforcer l'inclusivité - ces lignes devront également être expulsées des L1 et L2 des coeurs respectifs. Si vous gardez les données là (rupture d'inclusivité), vous perdrez la cohérence.

Sur les systèmes où le L3 n'est pas inclus, ce comportement ne se produira pas, et le noyau le moins actif sera capable de conserver ses données en interne dans le L1/L2. Cependant, de tels systèmes peuvent utiliser un filtre snoop inclusif, qui peut souffrir du même problème (et des expulsions de force à nouveau) - en fonction du protocole de cache exact.