一些 MSR 寄存器是架构性的,这意味着它们保证在所有未来的处理器上都受到支持(并且定义的位字段在未来将具有相同的含义)。英特尔 SDM 第 4 卷(2019 年 10 月)的第 2.1 节指定架构 MSR 具有前缀“IA32_”,所有其他 MSR 均为非架构。
\n\n\n\n\nMSR 的子集和相关位字段在未来的处理器世代中不会更改,现在被视为架构 MSR。\n 由于历史原因(从 Pentium 4 处理器开始),这些\n \xe2\x80\x9架构 MSR \xe2\x80\x9d 被赋予前缀 \xe2\x80\x9cIA32_\xe2\x80\x9d。
\n
架构 MSR 没有必要使其所有位字段也都是架构的。MSR 198H 是一款架构型 MSR,因为它被命名为IA32_PERF_STATUS。根据其架构规范,位 15:0 具有一定意义,MSR 的其余部分被保留。如果体系结构 MSR 中存在非体系结构位字段,则在手册中的单独条目中进行定义,并且为同一 MSR 指定不带“IA32_”前缀的名称。在这种情况下,非架构位字段是在名称 下定义的MSR_PERF_STATUS。不保证任何其他处理器都支持这些位字段(具有相同的含义)。
此命名约定是在支持一些架构 MSR 后引入的。这些 MSR 的名称可能与此约定不同。手册中提供了当前名称(根据命名约定)和以前的名称。后来的 MSR 仅具有遵循惯例的名称。
\n\nMSR 的架构仅针对特定供应商,在本例中为英特尔。上面提到的命名约定仅遵循Intel。AMD 处理器上的架构 MSR 没有前缀。因此,在这种情况下,术语“架构”应该在供应商级别理解,而不是在 ISA 级别。
\n\n当 MSR 首次在 Pentium 处理器中引入时,它们被称为特定于型号的,因为 Intel 不想承诺在任何或所有未来的 x86 Intel 处理器中支持其中任何一个。从 Pentium 4 开始,Intel 决定制作 MSR 架构的一个子集,并提出了在这些 MSR 前面添加“IA32_”前缀的命名约定,这使得程序员只需查看其名称就可以更轻松地确定 MSR 是否是架构的。尽管将它们称为“特定于模型”在技术上不再准确,但它仍然有效。
\n