IA32 против префикса MSR для имен x86 MSR - PullRequest
1 голос
/ 14 января 2020

Intel иногда использует префикс MSR_ для имен MSR, а иногда IA32_, даже для того же MSR.

Например, на SNB, в SDM Том 4 , они документируют как IA32_PERF_STATUS, так и MSR_PERF_STATUS для MSR 0x198 с несколько иными (но не совсем несовместимыми 1 ) значениями для битов:

Intel SDM Vol. 4

Что с этим?


1 В том смысле, что биты, которые определены как зарезервированы в версии IA32 указываются значения c, то есть в версии MSR.

1 Ответ

3 голосов
/ 14 января 2020

Некоторые регистры MSR являются архитектурными, что означает, что они гарантированно поддерживаются на всех будущих процессорах (и определенные битовые поля будут иметь то же значение в будущем). В разделе 2.1 тома 4 SDM Intel (октябрь 2019 г.) указано, что архитектурные MSR имеют префикс «IA32_», а все остальные MSR не являются архитектурными.

Подмножество MSR и связанных битовых полей, которые не меняются на будущие поколения процессоров, теперь считаются архитектурными MSR. По историческим причинам (начиная с процессора Pentium 4) этим «архитектурным MSR» был присвоен префикс «IA32 _».

Для архитектурного MSR необязательно иметь все свои битовые поля, чтобы также архитектурный. MSR 198H является архитектурной MSR, поскольку ей присвоено имя IA32_PERF_STATUS. В соответствии с его архитектурной спецификацией c биты 15: 0 имеют некоторое значение, а остальная часть MSR зарезервирована. Если в архитектурном MSR есть битовые поля неархитектуры, они определены в отдельной записи в руководстве, и тому же MSR присваивается имя, которому не предшествует «IA32_». В этом случае неархитектические битовые поля определяются под именем MSR_PERF_STATUS. Эти битовые поля не гарантированно поддерживаются (с тем же значением) в любом другом процессоре.

Это соглашение об именах было введено после поддержки некоторых архитектурных MSR. Этим MSR были даны имена, которые могут отличаться от этого соглашения. Как текущие имена (в соответствии с соглашением об именах), так и прежние имена приведены в руководстве. Более поздние MSR имеют только имена, которые следуют соглашению.

MSR являются архитектурными только по отношению к конкретному поставщику c, который в данном случае является Intel. Соглашение об именах, упомянутое выше, соблюдается только Intel. Архитектурные MSR на процессорах AMD не имеют префиксов. Таким образом, термин «архитектурный» в этом контексте следует понимать на уровне поставщика, а не на уровне ISA.

Когда MSR впервые были представлены в процессорах Pentium, их называли спецификацией модели c, потому что Intel Я не хотел делать какие-либо из них поддерживаемыми в любом или во всех будущих процессорах Intel x86. Начиная с Pentium 4, Intel решила создать подмножество архитектур MSR и разработала соглашение о присвоении имен, заключающееся в том, что префикс «MS32_» префикса этих MSR упрощается, чтобы программистам было проще определить, является ли MSR архитектурным, просто взглянув на его название. , Хотя называть их «модель-спецификация c» технически более не точна, но она застряла.

...