Model-specific register
Model-specific register (MSR, регістр, залежний від моделі) — назва різноманітних контрольних регістрів у процесорній архітектурі x86. Прикладами MSR є регістри для налагоджування, трасування виконання програми, моніторингу швидкодії, активації деяких особливостей центрального процесора.
Історія
Після виходу 80386, компанія Intel почала додавати до процесорів різні «експериментальні особливості», які необов'язково мали бути присутніми і у майбутніх версіях процесорів. Першими з таких «особливостей» були два «тестових регістри» 80386 (T6 і T7), за допомогою яких досягалося пришвидшення перетворення віртуальних адрес у фізичні. У процесорі Intel 80486 з'явилося ще три тестових регістри (TR3 – TR5), які, з-поміж іншого, дозволяли деякі маніпуляції з кеш-пам'яттю процесора. Pentium, що послідував наступним, не мав всіх цих регістрів.[1]
У процесорах Pentium з'явилися дві нових інструкції rdmsr
і wrmsr
, що забезпечували доступ до документованих і майбутніх «регістрів, залежних від моделі» (англ. model-specific registers). Нововведення виявилося вдалим, і Intel оголосила деякі з регістрів MSR «архітектурно важливими», неформально зобов'язавшись підтримувати їх і у майбутніх продуктах.[2]
Використання
Читання і запис регістрів MSR здійснюються, відповідно, командами rdmsr
і wrmsr
. Дані інструкції привілейовані, тому можуть виконуватися лише операційною системою. Ядро Linux, точніше його модуль msr, створює псевдо-файл /dev/cpu/x/msr (де x унікальне для кожного процесора або процесорного ядра). Користувач, що має дозвіл на читання і/або запис цих файлів може використовувати звичайні бібліотечні функції читання і запису файлів для доступу до MSR. Референсна реалізація присутня у пакеті msr-tools[3].
Регістри MSR документуються у відповідних довідниках, які надає виробник мікропроцесора.
Відомими прикладами MSR є memory type range register (MTRR) і address-range register (ARR).
Джерела
- Alan Cruse (2006). Lecture notes: Advanced Microcomputer Programming class. University of San Francisco.
- 35.1. Intel 64 and IA-32 Architectures Software Developer's Manual (System Programming Guide, 325384-060US). Volume 3. September, 2016.
- msr-tools.