Si je ne me trompe pas, une page dans une mémoire principale est la plus petite unité unitaire pour transférer des données entre la mémoire principale et un périphérique de stockage externe, tel qu'un disque dur. Une ligne de cache d'une mémoire principale est la plus petite unité de transfert de données entre la mémoire principale et les caches de processeur.
Je me demande si une taille de page est toujours ou mieux 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 de 4 Ko, alors chaque page contient 4 Ko / 64 octets == 64 lignes de cache.
Une page et une ligne de cache sont-elles des objets fixes dans une mémoire? Ou s'agit-il simplement d'un bloc contigu d'une mémoire d'une certaine taille, qui peut démarrer et flotter n'importe où dans la mémoire?
Est-ce toujours qu'une ligne de cache ne peut pas s'étendre sur plus d'une page, c'est-à-dire qu'une partie d'une ligne de cache est dans une page et l'autre partie de la ligne de cache est dans une autre page?
Merci.
Réponses:
Une ligne de cache est la plus petite unité avec laquelle vous pouvez toucher la mémoire physique. Ce qui 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 diffusion éphémère) écrivent dans les tailles de ligne du cache. Selon le processeur, les tailles de ligne de cache sont généralement de 32/64/128 octets. Lorsque les pages mémoire sont écrites sur le disque, elles sont écrites en entier. Cela se produira lorsque la pression de la mémoire est trop élevée ou lors de processus d'hibernation (et éventuellement pour d'autres utilisations). Ils seront également lus entiers en cas de besoin. Ceci est principalement dû au fait que le noyau n'a aucun moyen de savoir si la page est partiellement ou entièrement utilisée. D'autres opérations de lecture / écriture de stockage externe peuvent avoir une granularité arbitraire (par exemple: fwrite (..)).
La taille de la page dépend du CPU / GPU. Pour la plupart des processeurs, les tailles de page seront d'au moins 4 Ko et prend 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.
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.
En raison de # 3, une ligne de cache ne peut jamais s'étendre sur 2 pages car la taille des pages sera toujours plus grande qu'une ligne de cache et sera toujours un multiple de la taille d'une ligne de cache.
Voir cette excellente source pour une mine d'informations sur la mémoire: http://lwn.net/Articles/250967/
la source