2017-03-09 7 views
0

J'essaie de faire de la gestion de la mémoire sur xen-4.5.0, et de confondre quelque chose avec MTRR (Memory-type-range-register). Pendant que j'essayais d'obtenir la valeur du registre IA32_MTRRCAP, j'ai la valeur 1d0a.Pourquoi ai-je obtenu un 1 sur un bit réservé du registre IA32_MTRRCAP?

Cependant, dans le manuel d'Intel publié en décembre 2016, les bits 12-63 du registre IA32_MTRRCAP sont tous marqués réservés, alors que j'ai reçu un 1 sur 12. 12. Pourquoi? Pendant ce temps, lorsque j'essayais de lire les informations de mémoire des MTRR, je ne pouvais pas trouver la plupart des adresses de mémoire dans les MTRR.

Je les ai essayés sur plusieurs machines avec des processeurs Intel Skylake, et leurs situations sont les mêmes. Mais sur les machines équipées de processeurs Intel Haswell, la valeur de IA32_MTRRCAP n'a rien d'étrange, je peux aussi lire toutes les informations de mémoire des MTRR.

Le mode de programmation des MTRR a-t-il changé dans Skylake? Je ne peux que deviner de cette façon.

Merci.

Répondre

0

Je suppose que les valeurs lues sont correctes - comme elles semblent l'être.
Un bit réservé ne doit pas nécessairement être zéro, réservé signifie de plus près "utilisé en interne par les ingénieurs Intel".

1.3.2 bits réservés et logiciel de compatibilité

Dans beaucoup de descriptions et mise en page registre de mémoire, certains bits sont marqués comme réservés. Lorsque les bits sont marqués comme réservés, il est essentiel pour la compatibilité avec les futurs processeurs que le logiciel traite ces bits comme ayant un effet futur, bien qu'inconnu, .

Le comportement des bits réservés doit être considéré non seulement comme indéfini, mais aussi comme imprévisible..

Le logiciel devrait suivre ces directives dans le traitement des bits réservés:

  • Ne comptez pas sur les états de tous les bits réservés lors du test les valeurs des registres qui contiennent de tels trépans.
    Masquer les bits réservés avant le test.
  • Ne dépendez pas des états des bits réservés lors du stockage en mémoire ou dans un registre.
  • Ne dépendez pas de la possibilité de conserver des informations écrites dans des bits réservés.
  • Lors du chargement d'un registre, chargez toujours les bits réservés avec les valeurs indiquées dans la documentation, le cas échéant, ou rechargez-les avec des valeurs précédemment lues dans le même registre.

NOTE
éviter toute dépendance du logiciel de l'état des bits réservés dans Intel 64 et IA-32 registres. En fonction des valeurs des bits de registre réservés, le logiciel dépendra de la manière non spécifiée dont le processeur traite ces bits. Les programmes qui dépendent de valeurs réservées risquent d'être incompatibles avec les futurs processeurs.


MTTRs n'ont pas changé Skylake, leur comportement architectural est encore celui défini dans le manuel que vous avez mentionné.