Qu'est-ce que Pagination imbriquée (nested paging) ?

Méthode où le matériel parcourt successivement deux niveaux de tables des pages : la traduction gérée par l'OS de la machine virtuelle et celle gérée par l'hyperviseur. Elle réduit les interventions de l'hyperviseur et accélère la virtualisation.

Nom japonais: 入れ子ページング

« Pagination imbriquée (nested paging) » apparaît dans 3 questions d'entraînement réparties sur 1 thèmes, dont Système d'exploitation et matériel.

Domaine: Système d'exploitation et matériel

Deux traductions en un seul parcours matériel

Un système d'exploitation invité dans une machine virtuelle gère des tables des pages qui associent les adresses virtuelles invitées à ce qu'il croit être des adresses physiques, appelées adresses physiques invitées. Cette mémoire se trouve en réalité là où l'hyperviseur l'a placée. Avec la pagination imbriquée, aussi appelée traduction en deux étapes, le matériel parcourt les tables des pages de l'invité puis les propres tables de l'hyperviseur, traduisant automatiquement adresse virtuelle invitée, puis physique invitée, puis physique hôte. Les implémentations courantes sont les Extended Page Tables (EPT) d'Intel, les Nested Page Tables (NPT) d'AMD et la traduction de stage 2 d'Arm.

Ce qu'elle a remplacé : les tables des pages fantômes

Avant le support matériel, les hyperviseurs utilisaient des tables des pages fantômes (shadow page tables) : des tables maintenues par logiciel qui associaient directement les adresses virtuelles invitées aux adresses physiques hôtes, et que la MMU réelle utilisait. Pour les maintenir correctes, l'hyperviseur devait intercepter les écritures de l'invité dans ses tables des pages et ses changements d'espace d'adressage, provoquant des sorties de la machine virtuelle fréquentes et coûteuses. La pagination imbriquée laisse l'invité modifier librement ses propres tables, supprimant la plupart de ces sorties et simplifiant l'hyperviseur. Le compromis se déplace vers le coût d'un défaut de TLB.

Pourquoi un défaut de TLB peut coûter 24 accès mémoire

Chaque entrée dont le parcours invité a besoin est localisée par une adresse physique invitée, qui doit elle-même être traduite par les tables de l'hôte avant de pouvoir être lue. Avec des tables à quatre niveaux des deux côtés, chaque niveau invité coûte quatre lectures hôte plus une lecture de table invitée, soit cinq au total, donc 20 pour quatre niveaux, et traduire l'adresse finale de la donnée par l'hôte en ajoute quatre : (4 + 1) × (4 + 1) − 1 = 24, contre quatre pour un parcours natif. Les caches de parcours de pages (page-walk caches), les TLB qui mémorisent la traduction combinée finale et les grandes pages côté hôte maintiennent le coût moyen bien plus bas.

S'entraîner : questions sur Pagination imbriquée (nested paging)

Dans une virtualisation avec pagination imbriquée (traduction d’adresse à deux niveaux), quelle description de la traduction effectuée par le matériel est correcte ?

  1. ASeule la table des pages de l’OS de la machine virtuelle est parcourue ; la table de l’hyperviseur n’est pas utilisée
  2. BLa traduction se fait en deux étapes : virtuelle invitée → physique invitée → physique hôte
  3. CL’hyperviseur intercepte tous les accès mémoire et les traduit un par un par logiciel
Afficher la réponse et l'explication

Réponse : B. La traduction se fait en deux étapes : virtuelle invitée → physique invitée → physique hôte

L’OS d’une machine virtuelle croit que les adresses physiques qu’il gère (adresses physiques invitées) sont la mémoire réelle, alors qu’elles se trouvent à un autre emplacement alloué par l’hyperviseur. En pagination imbriquée, le matériel traduit jusqu’à l’adresse physique invitée avec la table des pages de l’invité, puis jusqu’à l’adresse physique hôte avec la table de l’hyperviseur. L’hyperviseur n’a plus à intervenir à chaque modification de la table des pages de l’invité. Traduire tous les accès par logiciel serait beaucoup trop lent.

En pagination imbriquée où l’invité et l’hôte utilisent tous deux des tables des pages à 4 niveaux, combien d’accès mémoire faut-il au pire lors d’un défaut de TLB ?

  1. A8
  2. B16
  3. C24
Afficher la réponse et l'explication

Réponse : C. 24

L’emplacement de chacune des 4 tables de l’invité est exprimé en adresse physique invitée ; avant de lire chacune, il faut la traduire avec les 4 niveaux de l’hôte. Chaque niveau de l’invité coûte donc 5 accès (4 pour l’hôte + 1 pour la table de l’invité), soit 20 pour 4 niveaux, auxquels s’ajoutent les 4 accès de traduction par l’hôte de l’adresse physique invitée finale des données : 24 au total. En formule, (4 + 1) × (4 + 1) − 1 = 24. 8 suppose qu’on parcourt simplement deux fois 4 niveaux et oublie la traduction de l’emplacement des tables.

Questions fréquentes

Quelle est la différence entre pagination imbriquée et tables des pages fantômes ?

Avec les tables des pages fantômes, l'hyperviseur maintient par logiciel des tables combinées allant de l'adresse virtuelle invitée à l'adresse physique hôte et intercepte les mises à jour des tables des pages de l'invité. Avec la pagination imbriquée, le matériel parcourt successivement les tables de l'invité et de l'hôte, si bien que l'invité met à jour ses propres tables sans intervention de l'hyperviseur.

Combien d'accès mémoire nécessite un parcours de pages imbriqué ?

Avec des tables des pages à quatre niveaux à la fois chez l'invité et chez l'hôte, un défaut de TLB peut nécessiter jusqu'à 24 accès mémoire dans le pire cas, contre quatre pour un parcours non virtualisé.

La pagination imbriquée est-elle la même chose que la virtualisation imbriquée ?

Non. La pagination imbriquée est une traduction d'adresses en deux étapes pour des machines virtuelles ordinaires, tandis que la virtualisation imbriquée consiste à exécuter un hyperviseur à l'intérieur d'une machine virtuelle.

« Pagination imbriquée (nested paging) » dans les explications

Questions mentionnant « Pagination imbriquée (nested paging) » (3)

  1. Dans une virtualisation avec pagination imbriquée (traduction d’adresse à deux niveaux), quelle description de la traduction effectuée par le matériel est correcte ?
  2. En pagination imbriquée où l’invité et l’hôte utilisent tous deux des tables des pages à 4 niveaux, combien d’accès mémoire faut-il au pire lors d’un défaut de TLB ?
  3. Comment s’appelle le logiciel qui permet d’exécuter simultanément sur un même ordinateur plusieurs OS, chacun dans une machine virtuelle indépendante ?

Termes associés

Hyperviseur Table des pages TLB (tampon de traduction d'adresses) Pilote de périphérique Appel système ASID (identifiant d'espace d'adressage) Changement de contexte Copie sur écriture (copy-on-write) Défaut de page (page fault) E/S mappées en mémoire

Retour au glossaire