2

J'essaie de comprendre pourquoi la taille de page est spécifiée dans le cadre d'un ISA. Plus précisément, je cherche des détails où l'un des modules matériels (MMU, TLB) (en dehors du système d'exploitation) utilise les informations de taille de page pour fournir une certaine fonctionnalité. S'il vous plaît laissez-moi savoir les raisons pour lesquelles la taille de page doit faire partie de l'ISA au lieu d'être décidé par le système d'exploitation.Pourquoi la taille de page est-elle spécifiée dans le cadre de l'architecture d'ensemble d'instructions?

Merci.

+2

Je vote pour clore cette question hors-sujet parce que ce n'est pas une question de programmation. –

Répondre

0

Le matériel TLB doit connaître la taille de la page pour savoir si une traduction s'applique à une adresse ou non. par exemple. étant donné une traduction, une adresse de 2500 octets au dessus utilise-t-elle ou non cette traduction?

En d'autres termes, le TLB doit savoir quels bits d'adresse font partie du décalage de page (dans une page) et quels bits doivent être traduits de virtuel en physique.

En outre, sur les architectures avec la marche de page HW, le format de table de page entière fait partie de l'ISA.

+0

Juste un scénario hypothétique, supposons qu'il n'y a pas de TLB matériel et pas de marche de page hw, mais une MMU pour aider les traductions, alors il n'y a pas besoin de taille de page pour faire partie d'ISA. Correct ? Parce que le système d'exploitation gère la table de pages et la page à pied, et la MMU ne fait que traduire la partie VPN en excluant le décalage. Ou avons-nous besoin de l'information sur la taille de la page ailleurs dans l'architecture? –

+0

@UchiaItachi: Rien d'autre ne me vient à l'esprit. La traduction vers physique se produit tôt, et après cela le reste du système cache/mémoire utilise des adresses physiques. Une conception sans TLB basé sur une page pourrait utiliser des entrées de traduction de base/limite, gérées par logiciel. Vous pouvez l'utiliser avec une taille fixe pour chaque traduction, mais le HW ne fournirait probablement que quelques emplacements de traduction, donc vous feriez mieux de l'utiliser comme des extensions: une traduction pour toute la gamme que vous mappez. –

+0

Sans traduction matérielle, tout ce qu'un MMU pourrait faire est d'invoquer la traduction de logiciel sur * chaque * accès à la mémoire. Pour la plupart des charges de travail sur un processeur normal, la mémoire virtuelle coûte quelques% de performance. Invoquer un manquant de logiciel sur chaque accès mémoire ferait probablement au moins 100% de cette pénalité, peut-être 1000%. Oh, cela devrait inclure le code-fetch, donc peut-être un facteur de 10 est une sous-estimation. Plus plausible est si vous pouviez fournir le firmware pour un gestionnaire de miss (plutôt que d'avoir une exception pour l'ensemble du CPU), ou si le format de la page était simplement configurable. –