J'essaie d'étudier pour un examen et j'ai réalisé que je suis confus quant au fonctionnement du TLB et du cache de données.
Je comprends que le TLB est essentiellement un cache des adresses physiques les plus récemment utilisées. Cependant, je regardais un diagramme dans mon manuel (illustré ci-dessous), et je ne comprends pas ce qui s'y passe. Il divise soudainement l'adresse physique et l'utilise pour indexer le cache, je suppose. Mais pourquoi affiche-t-il le cache et les données séparément? et pourquoi le décalage d'octet vient-il de flotter? Je suis sûr que le cache est également censé stocker des données. Je ne pense pas que son seul but soit de déterminer s'il y a ou non un coup sûr ou non à l'intérieur.
Je m'excuse à l'avance de mon ignorance, mais le livre couvre à peine les TLB (c'est comme un peu plus qu'une page) et il ne fait pas un très bon travail pour expliquer la relation entre un TLB et le cache.
la source
Réponses:
Je pense que je vois votre confusion. Le TLB et le cache de données sont deux mécanismes distincts. Ce sont tous les deux des caches, mais ils mettent en cache des choses différentes:
Par conséquent, le TLB agit comme un cache dédié pour cette recherche. Le TLB a quelques entrées TLB, où chaque entrée TLB contient à la fois une adresse virtuelle et son adresse physique correspondante.
Le TLB permet au processeur de convertir très rapidement des adresses virtuelles en adresses physiques. Si une instruction demande au processeur d'effectuer une opération de mémoire sur une adresse (virtuelle), le processeur vérifie d'abord si le TLB contient une entrée pour cette adresse virtuelle. Si c'est le cas, cela s'appelle un "hit cache" pour la recherche TLB, et puisque l'entrée TLB contient également l'adresse physique traduite, le processeur sait immédiatement quelle adresse physique utiliser. Si ce n'est pas le cas, c'est une erreur de cache pour la recherche TLB, et le processeur doit laborieusement effectuer la conversion virtuelle-physique en parcourant la table des pages. (Une fois qu'il a terminé cette conversion, il ajoute une entrée au TLB afin que les futures conversions de cette adresse virtuelle se produisent beaucoup plus rapidement.)
Le cache de données est un cache pour le contenu de la mémoire. La mémoire principale vous permet de spécifier une adresse physique et de lire la valeur à cette adresse physique. Cependant, la mémoire principale est lente. Si nous devions aller dans la mémoire principale chaque fois que nous voulions effectuer une opération de mémoire, notre processeur serait très lent.
Par conséquent, le cache de données agit comme un cache dédié pour les lectures en mémoire. Le cache de données a des entrées de cache, où chaque entrée de cache contient une adresse physique et la valeur de la mémoire à cette adresse.
Le cache de données permet au processeur de lire très rapidement à partir de la mémoire. Lorsque le processeur souhaite lire la mémoire à une adresse (physique), il vérifie d'abord le cache de données pour voir s'il contient une entrée de cache pour cette adresse. Si tel est le cas, ceci est connu sous le nom de "hit cache" (dans le cache de données), et le processeur peut immédiatement utiliser la valeur de données stockée dans cette entrée de cache, sans avoir besoin de contacter la mémoire principale. Si ce n'est pas le cas, il s'agit d'un «échec de cache» (pour le cache de données), et le processeur doit aller dans la mémoire principale. (Une fois que le processeur a reçu la valeur à cette adresse de la mémoire principale, il ajoute une entrée de cache au cache de données afin que les tentatives de lecture de cette même adresse aboutissent dans le cache de données.)
Ce sont tous les deux des caches, mais ils servent un objectif différent. Le processeur utilise les deux pour chaque opération de mémoire: il utilise d'abord le TLB pour convertir de l'adresse virtuelle en adresse physique, puis il vérifie le cache de données pour accélérer le processus de lecture de la valeur stockée en mémoire à cette adresse.
Pour plus de détails, vous pouvez lire l'article Wikipedia sur les TLB . Si vous effectuez une recherche, de nombreuses autres informations sont disponibles sur les TLB et les caches de données. Je suggère de rechercher "TLB" et "cache L1" ou "cache L2" (les 2 derniers sont des types de caches de données).
(Pour référence future: nous nous attendons à ce que vous fassiez des recherches sur votre question avant de poser ici, et que vous vérifiiez les sources Internet standard. Si la réponse peut être trouvée sur Wikipedia, vous n'avez pas fait suffisamment de recherches par vous-même. plus de chance si vous aviez vérifié les sources Internet pour savoir comment les TLB avant de demander ici. Voir aussi Combien d'efforts de recherche sont attendus des utilisateurs de Stack Overflow?. Alors, profitez-en pour utiliser cette leçon pour savoir comment vous pouvez améliorer votre propre compétences en recherche - quelque chose qui vous sera précieux tout au long de votre carrière.)
la source