Команда 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 III Xeon |
0110 | 0011 | Pentium II OverDrive |