Ceci est un paragraphe de Operating System Concepts, 9ème édition de Silberschatz et al:
Pourcentage de fois où le numéro de page d'intérêt est trouvé dans le TLB est appelé le taux de réussite. Un taux de réussite de 80%, par exemple, signifie que nous trouvons le numéro de page souhaité dans le TLB à 80% de le temps. S'il faut 100 nanosecondes pour accéder à la mémoire, alors un L'accès à la mémoire mappée prend 100 nanosecondes lorsque le numéro de page est en le TLB. Si nous ne parvenons pas à trouver le numéro de page dans le TLB, nous devons alors accédez d'abord à la mémoire pour la table de pages et le numéro de cadre (100 nanosecondes), puis accédez à l'octet souhaité en mémoire (100 nanosecondes), pour un total de 200 nanosecondes. (Nous supposons qu'une consultation de table de pages .__ ne prend qu'un accès mémoire, mais peut en prendre plus, comme nous le verrons plus loin.) Pour trouver le temps effectif d'accès à la mémoire, nous pondérons le cas par sa probabilité: temps d'accès effectif = 0,80 × 100 + 0,20 × 200 = 120 nanosecondes
mais dans la 8ème édition du même livre
Je suis confus avec le
temps d'accès effectif
Quelqu'un peut-il l'expliquer pour moi?
Si la page est trouvée dans le TLB (TLB hit), le temps total sera le temps de recherche dans le TLB plus le temps d’accès à la mémoire, donc
TLB_hit_time := TLB_search_time + memory_access_time
Au cas où la page ne serait pas trouvée dans le TLB (le TLB manquant), le temps total serait le temps nécessaire pour rechercher le TLB (vous ne trouvez rien, mais la recherche a été effectuée sans aucun problème), plus le temps nécessaire pour accéder à la mémoire afin d'obtenir le tableau de page et le cadre, plus le temps d'accéder à la mémoire pour obtenir les données, donc
TLB_miss_time := TLB_search_time + memory_access_time + memory_access_time
Mais dans certains cas, lorsque vous souhaitez connaître une mesure moyenne de la performance du TLB, vous utilisez le temps d'accès effectif, soit la moyenne pondérée des mesures précédentes.
EAT := TLB_miss_time * (1- hit_ratio) + TLB_hit_time * hit_ratio
ou
EAT := (TLB_search_time + 2*memory_access_time) * (1- hit_ratio) +
(TLB_search_time + memory_access_time) * hit_ratio
Le temps effectif ici est juste le moyen temps en utilisant les probabilités relatives d'un coup ou d'un raté. Donc, si un hit survient 80% du temps et un échec 20% du temps, le temps effectif (c.-à-d. Le temps moyen) sur un grand nombre de hits/manques sera de 0.8 * (temps du coup) + 0.2 * (temps ).
Dans TLB, une copie du numéro de page fréquemment utilisé et du numéro de vue est conservée et provient du tableau de pages stocké en mémoire.
Il examine d'abord le TLB. Si trouvé, il va à l'emplacement de la mémoire de sorte que le temps d'accès total est égal à:
20 + 100 = 120 ns
Maintenant, si TLB est manquant, vous devez d'abord rechercher TLB, puis pour la table de pages qui est stockée dans la mémoire. Donc, un accès mémoire plus une page particulière, rien qu'un autre accès mémoire. Donc le temps total est égal à:
20 + 100 + 100 = 220 ns
Et le temps d'accès effectif à la mémoire est égal à:
0.80 * 120 + 0.20* 220 = 140 ns
Formule générale pour EAT
Taux de réussite = a
Temps d'accès à la mémoire principale = m
Recherche associative (accès TLB) = e
EAT = (m + e) a + (2m + e) (1 - a)
= 2m - ma + e