Команда 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 |