Le calcul de page de Mémoire Virtuelle de table et de translation lookaside buffer
Je réponds à certains problèmes liés à la mémoire virtuelle et souhaitez aider à préciser ou de confirmer ma compréhension sur la façon dont ce genre de choses est fait.
Les questions sont les suivantes:
Donné un des octets adressables système avec les versions 32 bits des mots, un espace d'adresse virtuelle de 4 giga-octets, une adresse physique de l'espace de 1 go, et une taille de page de 4 kilo-octets. Il ya une hypothèse que les entrées de table de page sont arrondis à 4 octets.
a) Quelle est la taille de la page table en octets?
b) supposons Maintenant qu'un 4-way set-associative translation lookaside buffer est mis en place, avec un total de 256 traductions d'adresse. Calculer la taille de l'étiquette et les champs d'index.
Mes réponses sont les suivantes:
Un:
La taille de la table de pages est égal au nombre d'entrées dans la table des pages, multiplié par la taille des entrées.
Le nombre d'entrées dans la table de pages est égale à la taille de la mémoire divisé par la taille de la page: 2^32/2^12=2^20.
La taille des entrées est égale à la taille de mot moins les bits utilisés pour le nombre d'entrées dans la table de pages: 32-20=12.
Par conséquent, la page, la taille de la table est: (2^20) * 12 bits = 12582912 bits = 1572864 octets
Cependant, j'ai trouvé cette (sous le titre "de la Page Taille de la Table"), qui utilise essentiellement le même numéro.
De la Page Taille de la Table = ((espace d'adressage virtuel de taille)/(taille de la page)) * (page d'entrée de la table de la taille)
= (4 GO/4 KO) * 4 B = 4 MO
La réponse correcte?
Prochaine, B:
Je ne suis pas sûr de la façon de calculer la partie B. je crois que la Balise est calculée en additionnant le nombre de blocs, plus le décalage, en plus de l'index. C'est une 4 voies associatives, il y a donc 4 blocs dans chaque ensemble. L'indice est de 8 bits parce que la base de la taille de l'index est de 10 bits et est diminué par 2, aussi parce que c'est une 4 voie associative. Cependant, je ne suis pas au courant de la façon de calculer le décalage, qui est nécessaire pour aider à calculer la balise.
Toute aide serait grandement appréciée.
OriginalL'auteur basil | 2013-11-04
Vous devez vous connecter pour publier un commentaire.
Pour la partie a, vous avez fait deux erreurs. Tout d'abord, la question spécifiquement indiqué que "entrées de table de page sont arrondis à 4 octets". Deuxièmement, la PTE contient les bits nécessaires pour déterminer la physique adresse basée sur l'adresse de la page alignés. Dans le système décrit, adresses physiques ne sont qu'à 30 bits (1 GiB). Depuis que le système utilise 4KiB pages, le moins significatif de 12 bits de l'adresse physique dans la PTE serait tous les zéros et peut donc être implicite. Donc, juste pour le physique adresse: 18 bits (30-12) sont nécessaires.
Côté de l'opportunité de l'arrondissement à une puissance de deux nombre d'octets, la plupart des Pte inclure des données supplémentaires telles que un bit valide, un peu modifié, un accédé à peu, et la permission de bits pour l'utilisateur et superviseur de modes; de sorte que même avec un 512 MiB adresse physique de l'espace et 8 KiB pages (16 bits nécessaires pour indiquer l'adresse physique), on ne pourrait pas utiliser 2 octets Pte.
(Il convient de noter qu'aucun processeur 32 bits, utiliser un plat de la table des pages. Pour les adresses 32 bits, hiérarchique ou linéaires de tables de page sont généralement utilisés. Ces introduire un peu plus d'espace de surcharge pour occupation complète et peut nécessiter plusieurs accès à la mémoire de trouver une traduction, mais dans la plupart des cas d'occupation partielle et dense de l'allocation qu'ils utilisent nettement moins de mémoire. Ceci est particulièrement important parce que la plupart des processeurs sont conçus pour de multiples espace d'adressage Systèmes d'exploitation où chaque processus a sa propre page de table. À l'aide de près de la moitié de la mémoire physique [400 MiB] dans les tables de pages de soutien à seulement 100 processus est naturellement sans attrait.)
Pour la partie b, vous avez raison que le 4-way set associative signifie qu'il y a 4 blocs dans chaque jeu et donc 2 bits on soustrait le nombre de bits nécessaires à l'indexation basée sur le nombre d'entrées. Cependant, log2(256) est de 8 pas de 10, de sorte que seulement 6 bits sont utilisés pour l'indexation de la TLB.
Dans un cache de données, la balise de taille égale au nombre de bits de l'adresse moins le nombre d'index bits, moins le nombre de décalage de bits (dans le cache de bloc).
Pour une TLB, l'adresse virtuelle est aligné à la taille de la page (le moins significatif de bits dans la page sont non traduite). Pour 4 KiB pages, cela signifie que les 12 bits de poids faible sont ignorés. Avec la version 32 bits d'adressage virtuel, ce qui laisse 20 bits.
Que 6 de ces bits sont utilisés pour l'indexation a déjà été déterminé, de 14 bits sont à gauche.
Pour les non-cluster TLB, chaque étiquette est associée à une traduction. Ce serait l'équivalent d'un cache de données de taille de bloc de 1 byte (i.e., 0 décalage de bits). Par conséquent, l'étiquette (à l'exclusion de toute Espace d'adressage ID) serait de 14 bits.
(Dans un cluster TLB [analogue à sectoriel cache de blocs], de deux ou de plusieurs traductions sont fournies pour chaque "entrée"--entrée devient moins claire terme, car elle pourrait se référer à la traduction de l'entrée ou de la combinaison de l'étiquette et de multiples traductions associés à ce tag. [Je suppose que vous appréciez cette complexité ne faisant pas partie de ces problèmes.])
Non, vous avez raison en ce qui concerne le nombre d'entrées de table de page (pour l'hypothèse d'un plat de la table des pages), mais le nombre de bits par PTE est mauvais à la fois à partir de l'énoncé des hypothèses du problème et le nombre de bits nécessaires à l'expression de l'adresse physique d'une page. (Je ne mentionne qu'un plat de la table des pages est extrêmement peu probable; en ce sens, la taille de la page table serait incorrect, mais c'est un problème avec le problème des hypothèses non avec votre compréhension.)
Je pense que je reçois de vous. Vous dites que l'Entrée de la Taille serait de 18 bits, par votre explication de l'adresse physique ci-dessus? Et ce serait alors l'effet de mon calcul de la table des pages (c'était ma méthode de calcul-il correct?). Le bit sur l'arrondissement entrées de table de page est encore en me jetant, comment en serait-ce l'effet de la taille globale, à l'entrée de la taille, et le nombre d'entrées de table de page?
L'adresse physique partie de la PTE serait de 18 bits, mais Pte contenir d'autres données (comme indiqué dans la réponse). PTE taille est arrondie à une puissance de deux taille, de sorte que l'indexation de la page table est simple (variation par rapport à multiplier) et les accès sont alignés à l'accès de la taille. Un 32 bits PTE faudra tout de même en hausse de 32 bits, même si seulement 20-quelque chose sont utilisés. (Les autres bits peuvent être réservés pour une utilisation future, par exemple, d'étendre l'adresse physique de l'espace ou pour ajouter de la mise en cache des attributs, ou vers la gauche pour l'utilisation du système d'exploitation.) Évidemment 2^20*32bits n'est pas 2^20*18bits.
Je vous remercie pour votre explication. Je suppose que cela a du sens. Donc, la page table (2^20)*32 bits alors? Est ce que ce genre de chose (arrondi entrées de table de page) fait assez souvent?
OriginalL'auteur Paul A. Clayton