Сборник по задачам и примерам Assembler

Домовой знак с подсветкой изготовление домовых знаков.


Команда CPUID — получение информации о текущем процессоре

Для получения информации о процессоре необходимо в регистр ЕАХ поместить параметр — одно из значений 0, 1 или 2.
Если ЕАХ = 0, то в регистрах ЕАХ, ЕВХ, EDX, ЕСХ формируется следующая информация:

  • ЕАХ = n, где n — максимально допустимое значение параметра, которое может быть помещено в регистр ЕАХ для задания режима сбора информации;
  • (EBX)+(EDX)+(ECX) — в этих регистрах содержится строка-идентификатор процессора Geninnelntel .

Если ЕАХ = 1, то в регистрах процессора сформируется следующая информация:

  • ЕАХ = n — информация о микропроцессоре (см. табл. 8.1 и 8.2);
  • EDX = n — информация о возможностях процессора (см. табл. 8.3).

Если ЕАХ = 2, то в регистрах ЕАХ, ЕВХ, ЕСХ и EDX формируется информация о кэшпамяти первого уровня и TLB-буферах. Первый байт регистра ЕАХ содержит число, означающее, сколько раз необходимо последовательно выполнить команду CPUID для получения полной информации о кэш-памяти первого уровня и TLB-буферах. Другие байты регистра ЕАХ и все байты регистров ЕВХ, ЕСХ и EDX содержат однобайтовые дескрипторы, характеризующие кэш-память и TLB-буферы (см. табл. 8.4). Старший бит каждого регистра характеризует достоверность информации в регистре. Если он равен нулю, то информация достоверна, иначе — регистр не используется.

Таблица 8.1. Поля регистра ЕАХ после выполнения команды CPUID (при ЕАХ = 1)

Биты ЕАХ
Назначение
0...3
Версия изменений модели
4...7
Модель в семействе (см. табл. 8.2)
8...11
Семейство микропроцессоров (см. табл. 8.2)
12...13
Тип процессора (00 — обычный процессор; 01 — Overdrive-процессор;
10 — процессор для использования в двухпроцессорных системах)

Таблица 8.2., Значения бит 4...7 и 8...11 регистра ЕАХ

Биты ЕАХ (8...11)
Биты ЕАХ (4...7)
Тип процессора
0100
0000 или 0001
I486DX
0100
0010
I486SX
0101
0010
Pentium 75-200
0101
0100
Pentium MMX 166-200
0110
0001
Pentium Pro
0110
0011
Pentium II, модель 3
0110
0101
Pentium II, модель 5,
Pentium II Xeon
0110
0110
Celeron, модель 6
0110
0111
Pentium III и Pentium HI
Xeon
0110
0011
Pentium II OverDrive

Таблица 8.3. Поля регистра EDX после выполнения команды CPUID (при ЕАХ=n)

Биты EDX
Назначение (если биты установлены)
0
Присутствует сопроцессор с набором команд i387
1
Поддержка расширенных возможностей обработки прерываний в режиме
виртуального процессора i8086
2
Процессор поддерживает точки прерывания ввода-вывода (точки останова
по обращению к портам) для предоставления расширенных возможностей
отладки и доступ к регистрам DR4 и DR5. Флаг CR4.DE=1
3
Процессор поддерживает 4-мегабайтные страницы
4
Поддержка счетчика меток реального времени TSC
5
Поддержка команд RDMSR и WRMSR для работы с модельно-зависимыми
регистрами
6
Процессор поддерживает физические адреса, большие, чем 32 бита,
расширенный формат элемента таблицы страниц, дополнительный
уровень трансляции страничного адреса и 2-мегабайтные страницы
7
Поддержка исключения 18 — машинного контроля
8
Поддержка инструкции CMPXCHG8B
9
Микропроцессор содержит программно-доступный контроллер
прерываний APIC
10
Резерв
11
Поддержка инструкций SYSENTER и SYSEXIT быстрых системных вызовов
12
Поддержка регистра управления кэшированием MTRR_CAP
(относится к MSR-регистрам)
13
Поддержка работы с битом G, определяющим глобальность страницы
в PTDE и РТЕ. Бит CR4.PGE = 1
14
Поддержка архитектуры машинного контроля (MSR-регистр MCG_CAP)
15
Поддержка инструкций CMOV, FCMOVCC, FCOMI условной пересылки
16
Поддержка инструкций CMOVCC, FMOVCC и FCOMI (если установлен бит 0)
17
Процессор поддерживает 36-разрядную физическую адресацию
с 4-мегабайтными страницами
18
Процессор поддерживает собственную идентификацию по уникальному
96-битному номеру и эта поддержка активна
19-22
Резерв
23
Поддержка целочисленного MMX-расширения
24
Процессор поддерживает команды FXSAVE и FXRSTOR
25
Поддержка MMX-расширения с плавающей точкой
24-31
Резерв

Таблица 8.4. Значения дескрипторов, описывающих кэш-память, и дескрипторов TLB

Содержание
дескриптора
Значение
00h
Olh
Нулевой дескриптор
Буфер TLB-команд: размер страницы — 4 Кбайт,
ассоциативный 4-канальный, 32 входа
02h
Буфер TLB-команд: размер страницы — 4 Кбайт, ассоциативный,
2 входа
03h
Буфер TLB-данных: размер страницы — 4 Кбайт,
ассоциативный 4-канальный, 64 входа
04h
Буфер TLB-данных: размер страницы — 4 Кбайт,
ассоциативный 4-направленный, 8 входов
06h
Кэш команд: размер 8 Кбайт, наборно-ассоциативный 4-канальный,
длина строки 32 байта
08h
Кэш команд: размер 16 Кбайт, наборно-ассоциативный 2-канальный,
длина строки 32 байта
Oah
Кэш данных: размер 8 Кбайт, ассоциативный 2-направленный,
длина строки 32 байта
Och
Кэш данных: размер 16 Кбайт,
ассоциативный 2-или 4-направленный, длина строки 32 байта
40h
Кэш-память второго уровня (L2) отсутствует
41h
Объединенный кэш: размер 128 Кбайт,
наборно-ассоциативный 4-канальный, длина строки 32 байта
42h
Объединенный кэш: размер 256 Кбайт,
наборно-ассоциативный 4-направленный, длина строки 32 байта
43h
Объединенный кэш: размер 512 Кбайт,
наборно-ассоциативный 4-направленный, длина строки 32 байта
44h
Объединенный кэш: размер 1 Мбайт,
наборно-ассоциативный 4-направленный, длина строки 32 байта
45h
Объединенный кэш: размер 2 Мбайт,
наборно-ассоциативный 4-нанравлеиный, длина строки 32 байта

Рассмотрим подробнее средства для мониторинга производительности, которые включают счетчик меток реального времени TSC (Time Stamp Counter) и счетчики событий CTRO, CTRL


Книжный магазин