Регистр , специфичный для модели ( MSR ), — это любой из различных регистров управления в архитектуре системы x86 , используемый для отладки , отслеживания выполнения программ, мониторинга производительности компьютера и переключения определенных функций ЦП .
С появлением процессора 80386 компания Intel начала внедрять «экспериментальные» функции, которые не обязательно будут присутствовать в будущих версиях процессора. Первыми из них были два «тестовых регистра» (TR6 и TR7), которые позволяли тестировать буфер TLB ( translation lookaside buffer ) процессора; специальный вариант инструкции MOV позволял перемещаться в тестовые регистры и из них. [1] В 80486 появились три дополнительных тестовых регистра (TR3–TR5), которые позволяли тестировать кэши процессора для кода и данных. [2] Ни один из этих пяти регистров не был реализован в последующем процессоре Pentium; специальный вариант MOV генерировал исключение недопустимого кода операции . [3] [4]
С появлением процессора Pentium компания Intel предоставила пару инструкций ( RDMSR и WRMSR ) для доступа к текущим и будущим «регистрам, специфичным для модели», а также инструкцию CPUID для определения того, какие функции присутствуют в конкретной модели. Многие из этих регистров оказались достаточно полезными, чтобы их сохранить. Intel классифицировала их как архитектурные регистры, специфичные для модели, и взяла на себя обязательство включить их в будущие линейки продуктов. [5]
Чтение и запись в эти регистры обрабатываются инструкциями rdmsr
и wrmsr
соответственно. Поскольку это привилегированные инструкции, они могут быть выполнены только операционной системой. Использование модуля ядра Linux msr создает псевдофайл "/dev/cpu/ x /msr" (с уникальным x для каждого процессора или ядра процессора). Пользователь с правами на чтение и/или запись в этот файл может использовать API файлового ввода-вывода для доступа к этим регистрам. Пакет msr-tools [6] предоставляет эталонную реализацию.
Документация относительно того, какие MSR поддерживает определенная реализация процессора, обычно находится в документации процессора поставщика ЦП. Примерами довольно известных MSR являются регистры диапазона типа памяти (MTRR) и регистры диапазона адреса (ARR).