Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборка Часть2 / АВМиС / Лекции / идентификация процессоров

.doc
Скачиваний:
60
Добавлен:
15.09.2014
Размер:
34.3 Кб
Скачать

идентификация процессоров

Идентификация процессора необходима операционной системе для эффективного использования возможностей аппаратных средств и корректной работы. BIOS может получить информацию о типе 32-разрядного процессора, считав содержимое регистра DX непосредственно после сигнала RESET. Расшифровка полей регистра DX для процессоров 486 и старше приводится в табл. 3.14. Для младших процессоров регистр DH содержит идентификатор процессора, DL - номер модели.

Поле "тип" (биты 13:12) различает процессоры ОЕМ-версий (00), OverDrive (01) и Dual (10); значение 11 зарезервировано. В полях "семейство" (биты 11:8) и "модель" (биты 7:4) содержится идентификационная информация. Поле степпинга (биты 3:0) несет дополнительную информацию, которая расшифровывается с помощью таблиц изготовителя.

Прикладным программам эта информация недоступна (аппаратный сброс был слишком давно). Для идентификации процессоров, начиная еще с 16-разрядных, используют анализ значения регистра флагов, сохраненного по команде PUSHF после попытки его изменения:

- у процессоров 8086/88 биты 12-15 всегда установлены - попытка их сброса не удается;

- у 80286 в реальном режиме биты 12-15 всегда сброшены;

- у 32-разрядных процессоров в реальном режиме бит 15 всегда сброшен, а биты с 12-14 хранят последнее загруженное в них значение. В защищенном режиме бит 15 всегда сброшен, а бит 14 хранит последнее загруженное в него значение;

- бит 18 доступен, начиная с процессоров 486, - у 80386 его невозможно изменить;

- биты 19 (VIF) и 20 (VIP) у процессоров, не поддерживающих расширения виртуального режима (VME), всегда нулевые;

- бит 21 (ID) определяет возможность использования команды CPUID. Признаком доступности команды является возможность программного изменения значения этого бита.

Анализируя рассмотренные выше биты регистра флагов, можно идентифицировать процессоры до i80486. Для определения присутствия сопроцессора выполняют команду FNINIT, после чего исполняют команду FNSTENV и проверяют корректность образа сопроцессора, сохраненного в памяти.

Начиная с Pentium, появилась специальная команда идентификации процессора CPUID, которая вызывается с параметром, указанным в регистре ЕАХ:

- СРиГО(О) - (ЕАХ=0) - в регистрах ЕВХ, EDX и ЕСХ процессор возвращает символьную строку, специфичную для производителя; в регистре ЕАХ возвращается максимально допустимое значение параметра вызова. Символы строки размещаются в регистрах в указанном порядке, начиная с младших байт. Процессоры Intel возвращают строку "Genuinelntel" a AMD возвращают строку "AuthenticAMD";

- CPUID(1) - (ЕАХ=1) - в младшем слове регистра ЕАХ процессор возвращает код идентификации, аналогичный содержимому регистра DX

Таблица 3.15 - Назначение флагов расширения архитектуры

Бит

Название

Назначение

0

FPU

наличие математического сопроцессора

1

VME

расширение режима V86 (виртуализация флага прерываний)

2

расширение отладки (возможность остановки но обращении к иортам)

3

PSE

возможность применения страницы размером 4 Мбайт

4

TSC

наличие счетчика меток реального времени

5

MSR

поддержка модельно-снецифических регистров (команды RJDMSR, WRMSR)

6

РАЕ

возможность расширения физического адреса до 36 бит

7

MCE

поддержка исключения машинного контроля #МС

8

CX8

Поддержка команды CMPXCHG8B

9

APIC

Наличие встроенного программно-доступного контроллера прерываний APIC

10

-

Зарезервировано

11

SEP

поддержка команд быстрых системных вызовов SYSENTER и SYSEX1T

12

MTRR

наличие регистра управления кэшированием MTRRcap

13

PGE

поддержка бита глобальности в элементах каталога и таблиц страниц, а также бита PGE в регистре CR4

14

MCA

поддержка архитектуры машинного контроля

15

CMOV

поддержка команд условной пересылки CMOVCC, FCMOVCC, FCOMI

16-22

-

Зарезервировано

23

MMX

Поддержка ММХ

24-31

-

Зарезервировано

Вызовы команды CPUID с ЕАХ>2 (в пределах разрешенного значения, сообщенного процессором при вызове CPUID(O)) зарезервированы для будущих применений.

Фирма AMD расширила вызовы CPU1D. Для проверки наличия расширений вызывается СР11ГО с EAX=80000000h. При наличии расширений в ЕАХ результатом будет число, большее 80000000h, - максимальный параметр расширенного вызова. Вызовом с EAX=80000G01h можно определить специфические расширения архитектуры от AMD. Например, поддержка 3DNow! определяется по установленному биту 31 регистра EDX.

после аппаратного сброса (см. табл. ЗЛ4). Регистры ЕВХ=0, ЕСХ=0, Регистр EDX содержит список имеющихся расширений базовой архитектуры. Назначение бит регистра приведено в табл. 3.15;

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