Тема 4.1. Архитектура 32-разрядных микропроцессоров
РАЗДЕЛ 4.ОДНОКРИСТАЛЬНЫЕ УНИВЕРСАЛЬНЫЕ МИКРОПРОЦЕССОРЫ
Существующие 32-разрядные МП i386, i486, Pentium, Pentium Pro и Pentium II имеют разрядность регистров и шины адреса, равную 32. Шина данных для процессоров i386, i486 является 32-разрядной, а для процессоров Pentium, Pentium Pro и Pentium II — 64-разрядной. Они позволяют адресовать 4 Гбайт памяти, имеют средства поддержки сегментной и страничной
адресации памяти. Процессоры имеют четырехуровневую систему защиты памяти и портов ввода/вывода, могут работать в многозадачном режиме.
К режимам работы МП i80286 добавлен Virtual Real Mode — режим виртуального процессора i8086. Допускается параллельная работа нескольких виртуальных процессоров i8086 под управлением операционной системы типа Windows, OS/2, Unix. Процессоры оперируют с битами, полями бит, 8-, 16- и 32-битными операндами, строками битов, байтов, слов (16-разрядных
данных) и двойных слов (32-разрядных данных). В архитектуру процессоров введены средства отладки и тестирования.
Процессор позволяет выделять в памяти сегменты и страницы. Сегменты в реальном режиме имеют фиксированный размер, в защищенном — переменный. Страницы, которых не было в предыдущих моделях, представляют собой области логической памяти размером 4 Кбайт, каждая из которых может отображаться на любую область физической памяти. Если сегменты используются на прикладном уровне, то страницы применяются на системном.
Программная модель. Программная модель 32-разрядного процессора изображена на рис. 3.8. Она содержит следующие группы регистров: регистры общего назначения; указатель команд; регистр флагов; сегментные регистры; регистры управления; системные адресные регистры; регистры отладки; регистры тестирования.
Регистры общего назначения содержат все регистры данных и регистры-указатели МП i8086 и i80286 и столько же дополнительных 32-разрядных регистров. В обозначении 32-разрядных регистров используется начальная буква Е (Expanded — расширенный).
Указатель команд EIP содержит смещение следующей выполняемой команды в сегменте кодов. При 16-разрядных адресах используются младшие 16 разрядов (IP).
Регистр флагов EF расширен до 32 разрядов. Младшие 16 разрядов регистра EF составляют регистр флагов F 16-разрядного процессора. В регистр EF добавлены новые флаги:
□ флаг разрешения команды идентификации (ID, Identification Flag) процессора (CPUID, Central Processor Unit Identification) — для Pentium+' и некоторых процессоров типа 486;
□ виртуальный запрос прерывания (VIP, Virtual Interrupt Pending) — для Pentium;
□ виртуальная версия флага разрешения (VIF, Virtual Interrupt Flag) прерывания IF для многозадачных систем (Pentium);
□ флаг контроля выравнивания (AC, Alignment Check). Используется только на уровне привилегий 3. Если АСС = 1 и AM = 1 (AM — бит в регистре управления CR0), то в случае обращения к операнду, не выровненному по соответствующему пределу (2, 4, 8)2 байт, будет вызвано исключение 17 (для i486+);
□ флаг (VM, Virtual 8086 Mode) в защищенном режиме включает режим виртуального процессора 8086. Попытка использования привилегированных команд в этом режиме приведет к исключению 13;
□ флаг возобновления (RF, Resume Flag). В режиме отладки единичное значение RF позволяет осуществить рестарт команды после прерываний. Используется совместно с регистрами точек отладочного останова.
Сегментные регистры. Кроме сегментных регистров МП i8086 и i80286 (DS. CS, SS, ES), программная модель содержит два дополнительных сегментных регистра данных: FS и GS. С каждым из шести сегментных регистров связаны теневые регистры дескрипторов. В теневые регистры в защищенном режиме переписываются 32-разрядный базовый адрес сегмента, 20-разрядный предел и атрибуты (права доступа) из дескрипторных таблиц.
В управляющих регистрах CR0—CR3 (Control Register) хранятся признаки состояния процессора, общие для всех задач. Младшие четыре разряда регистра CR0 содержат биты регистра MSW МП i80286 и некоторые другие биты управления. Регистр CR1 зарезервирован; в CR2 хранится 32- разрядный линейный адрес, по которому получен отказ страницы памяти; в 20 старших разрядах регистра CR3 хранится физический базовый адрес таблицы каталога страниц и биты управления кэш-памятью. Регистр CR4 (Pentium) содержит биты разрешения архитектурных расширений МП.
Системные адресные регистры. В системных регистрах-указателях глобальной дескрипторной таблицы GDTR и таблицы прерываний IDTR — хранятся 32- разрядные базовые адреса и 16-разрядные пределы таблиц соответственно. Системные сегментные регистры задач TR и локальной дескрипторной таблицы LDTR являются 16-разрядными селекторами. Им соответствуют теневые регистры дескрипторов, которые содержат 32-разрядный базовый адрес сегмента, 20-разрядный предел и байт права доступа.
В регистрах отладки DR0—DR3 (Debug Register) содержатся 32-разрядные адреса точек останова в режиме отладки; DR4—DR5 зарезервированы и не используются; DR6 отображает состояние контрольной точки; DR7 — руководит размещением в программе контрольных точек.
Регистры тестирования TR (Test Register) входят в группу модельно-специфических регистров, их состав и количество зависят от типа процессора: в МП 386 используются два регистра TR6 и TR7, в Pentium II — TR1— TR12. Эта группа регистров содержит результаты тестирования МП и кэш-памяти.