Relation entre la ligne de cache et la page mémoire

  1. Si jai raison, une page dans une mémoire principale est la plus petite unité pour le transfert de données entre la mémoire principale et un périphérique de stockage externe, tel quun disque dur. Une ligne de cache dune mémoire principale est la plus petite unité de transfert de données entre la mémoire principale et les caches du processeur.

  2. Je me demande si une taille de page est toujours ou préférable dêtre un nombre naturel de taille de ligne de cache? Si une taille de ligne de cache est de 64 octets et une taille de page de mémoire est de 4 Ko, alors chaque page contient 4 Ko / 64 octets = = 64 lignes de cache.

  3. Une page et une ligne de cache sont-elles toutes deux des objets fixes dans une mémoire? Ou sagit-il simplement dun bloc contigu dune mémoire dune certaine taille, qui peut démarrer et flotter nimporte où dans la mémoire?

  4. Est-ce toujours quune ligne de cache ne peut pas sétendre sur plus de une page, cest-à-dire une partie dune ligne de cache se trouve dans une page et lautre partie de la ligne de cache est dans une autre page?

Merci.

Commentaires

  • Les réponses à vos questions dépendent fortement de larchitecture du processeur.

Réponse

  1. Une ligne de cache est la plus petite unité avec laquelle vous pouvez toucher la mémoire physique. Cela signifie que lorsque vous lisez / écrivez 1 octet, une ligne de cache complète le contenant est lue dans le cache du processeur et réécrite. Notez que même les instructions qui contournent le cache pour écrire (instructions de streaming éphémères) écrivent dans des tailles de ligne de cache. En fonction du processeur, la taille des lignes de cache est généralement de 32/64/128 octets. Lorsque les pages mémoire sont écrites sur le disque, elles sont écrites en totalité. Cela se produit lorsque la pression de la mémoire est trop élevée ou avec des processus dhibernation (et éventuellement pour dautres utilisations). Ils seront également lus en entier si nécessaire. Ceci est principalement dû au fait que le noyau na aucun moyen de savoir si la page est partiellement ou totalement utilisée. Dautres opérations de lecture / écriture de stockage externe peuvent avoir une granularité arbitraire (par exemple: fwrite (..)).

  2. La taille de la page dépend du processeur / GPU. Pour la plupart des processeurs, les tailles de page seront dau moins 4 Ko et prendront généralement en charge un mélange de 4 Ko / 64 Ko / 2 Mo / 4 Mo / 16 Mo / 1 Go (pas nécessairement tous pris en charge en même temps). La taille sera toujours une puissance de deux.

  3. Une page et une ligne de cache sont contiguës et doivent être alignées sur leur taille respective. Une ligne de cache de 64 octets est toujours alignée sur 64 octets et une page de 2 Mo est toujours alignée sur 2 Mo.

  4. À cause du n ° 3, une ligne de cache ne peut jamais sétendre sur 2 pages car les tailles de page sera toujours plus grande quune ligne de cache et sera toujours un multiple de la taille dune ligne de cache.

Voir cette excellente source pour une mine dinformations concernant la mémoire: http://lwn.net/Articles/250967/

Commentaires

  • Est cette réponse toujours dactualité en 2020? Ces tailles ont-elles changé?
  • Pour autant que je sache, ces valeurs restent pertinentes aujourdhui. Tous les processeurs x86 et x64 modernes utilisent 64 octets par ligne de cache et 4 Ko reste la taille de page la plus courante sous Windows et Linux. Pour les appareils intégrés, consultez le manuel interne de votre processeur pour plus de détails sur ce qui est pris en charge.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *