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).

Джерела[ред. | ред. код]

  1. Alan Cruse (2006). Lecture notes: Advanced Microcomputer Programming class. University of San Francisco. Архів оригіналу за 3 квітня 2020. Процитовано 19 серпня 2019.
  2. Intel 64 and IA-32 Architectures Software Developer's Manual (System Programming Guide, 325384-060US) (PDF). Т. Volume 3. September, 2016. Архів оригіналу (PDF) за 19 серпня 2019. Процитовано 19 серпня 2019. {{cite web}}: Проігноровано |chapter= (довідка)
  3. msr-tools. Архів оригіналу за 22 квітня 2019. Процитовано 19 серпня 2019.

Посилання[ред. | ред. код]