Cache
Lien avec la mémoire cache
Dans un chapitre précédent, nous avons vu que la MMU se situe entre le processeur et la mémoire. Les systèmes modernes ont encore une autre mémoire entre le processeur et la mémoire principale: la mémoire cache.
La question qui se pose est donc: où se situe la MMU par rapport à cette mémoire cache? Nous avons deux possibilités:
- La MMU se situe entre le processeur et la mémoire cache.
- La MMU se situe entre la mémoire cache et la mémoire principale.
Dans le premier cas, la mémoire cache contient des adresses physiques, déjà traduites par la MMU. L’avantage de cette solution c’est que la mémoire cache est toujours cohérente avec la mémoire principale, quelles que soient les traductions faites par la MMU. L’inconvénient c’est que nous perdons un peu de temps, car la mémoire cache doit attendre que la MMU ait terminé sa traduction avant de pouvoir accéder à l’adresse physique correspondante.
Dans le deuxième cas, la mémoire cache contient des adresses virtuelles et cette configuration est plus rapide, car la mémoire cache n’a pas besoin d’attendre la MMU. Par contre, la mémoire cache n’est plus cohérente avec la mémoire principale, car la MMU peut changer les traductions à tout moment. Il faut donc que la MMU invalide toutes les entrées du cache quand le système d’exploitation passe d’un processus à un autre.
Le microprocesseur ARM Cortex-A utilise la première solution. La figure ci-dessous illustre cette configuration.