3. Тридцатидвухразрядные процессоры фирмы Intel

3.1. Общие сведения и терминология

3.2. Реальный режим

3.3. Переключение в защищенный режим

3.4. Системные таблицы

3.5. Механизмы адресации в защищенном режиме

3.6. Сегментный механизм

3.7. Страничный механизм

3.8. Формат элемента PTE (PDE)

3.9. Особенности страничного механизма в Pentium и Р6

3.10. Механизм V86

3.11. Методы обработки прерываний, возникших в режиме V86

3.12. Механизм переключения задач. Формат сегмента TSS

3.13. Битовая карта ввода-вывода

3.14. Действия процессора при переключении задач

3.15. Формат дескриптора

3.16. Форматы шлюзов

3.17. Программная модель 32-разрядного МП

3.18. Регистры системного программиста

3.19. Буфер TLB (кэш-память страниц)

3.20. Общие сведения о кэш-памяти

3.21. Внутренняя кэш-память

3.22. Сведения о кэшах в процессорах фирмы Intel

3.23. Инициализация процессора

3.24. Некоторые сведения о внутренней организации 32-разрядных процессоров

3.25. Режим SMM

3.26. Система прерываний 32-разрядных процессоров

3.27. Переключение из защищенного режима в реальный

3.28. Формат машинной команды

3.29. Команда CPUID

3.1. Общие сведения и терминология

Среди 32-разрядных процессоров фирмы Intel различают процессоры 386, 486, Pentium, семейство Р6 (процессоры Pentium Pro, Pentium II, Celerone и Pentium III, в котрых фирма реализует микроархитектуру Р6) и Pentium IV, в котором реализована NetBurstмикроархитектура. Базовые механизмы, реализуемые всеми этими процессорами,практически идентичны. При употреблении термина «процессор» речь будет идти обо всех вышеперечисленных процессорах, а конкретные особенности для отдельного процессора будут оговариваться дополнительно.

Итак, процессор имеет 32-адресные линии (А31-0) и, следовательно, может адресовать 232 байта (4 Гбайта) оперативной памяти. Начиная с Р6, в регистре cr4 (control register – регистр управления) введен специальный бит PAE (physical address extension – расширение физического адреса). Если этот бит установлен в единицу, то к процессору добавляются еще 4 адресные линии (А35-32) и он может адресовать 64 Гбайта оперативной памяти. Но при этом обязательно должен быть включен страничный механизм, так как, несмотря на наличие 36-адресных линий, сегментный механизм процессора продолжает вырабатывать 32-разрядный адрес, т.е. продолжает адресовать 4 Гбайта ОП. И только наличие страничного механизма позволяет транслировать эти 4 Гбайта в любое место 64-Гбайтного пространства.

Шина данных у процессоров 386 и 486 32-разрядная, начиная с Pentium – 64-разрядная. При этом во всех процессорах (в отличие от ВМ86) шины адреса и данных раздельные (не мультиплексные). Процессор может работать в следующих режимах.

1. Реальный режим. С точки зрения пользователя, МП в этом режиме представляет из себя аналог МП 8086, только более быстрый и с расширенной системой команд. Механизм формирования физического адреса в реальном режиме аналогичен подобному механизму МП 8086:

Аф = (sr)×16+Аэф.

Надо отметить, что сами процессы формирования Аф в 8086 и реальном режиме различны, а результат ‑ один и тот же. Так как сегментные регистры (sr) и Аэф ‑ 16-разрядные, то формируемый таким образом Аф будет 20-разрядным. Следовательно, в реальном режиме МП адресует 1Мбайт оперативной памяти (младший мегабайт 4-Гбайтного пространства памяти). Сегменты, как и в ВМ86 имеют фиксированный размер 64 Кбайта.

2. Режим виртуального 86-го процессора (V86). Этот режим предназначен для того, чтобы в защищенном режиме была возможность выполнять программы, написанные для ВМ86 (DOS-задачи). Работа процессора в этом режиме похожа на работу ВМ86, но сам режим V86 является подмножеством защищенного режима.

3. Режим SMM (system management mode – режим управления системой). Работа процессора в этом режиме «не видна» ни прикладным программам, ни даже операционной системе. Связано это с тем, что в этом режиме процессор адресует область памяти, недоступную в других режимах. Обычно в этом режиме процессор выполняет программу, написанную разработчиками аппаратуры. Чаще всего эта программа реализует системные функции пониженного энергопотребления. Попасть в режим SMM можно только по специальному внешнему аппаратному прерыванию SMI (system mode interrupt). Выход из режима SMM осуществляется специальной командой RSM (resume system mode).

4. Защищенный режим. В этом режиме раскрываются все возможности МП. В режиме используются все 32 адресных линии и может адресоваться память объемом до 4 Гбайт. Сегменты в защищенном режиме имеют переменный объем (1 байт ‑ 4 Гбайта). Одновременно МП может работать с 214  таких сегментов. Очевидно, что все сегменты могут не поместиться в реально существующей оперативной памяти (ОП), поэтому часть из них (а скорее всего большинство) находится на диске. Когда процессор обращается к сегменту, которого нет в ОП, происходит прерывание. Обработчик этого прерывания должен подка-чать с диска в ОП нужный сегмент, после чего происходит рестарт «виноватой» команды. От пользователя этот процесс скрыт и у него создается впечатление что в его распоряжении находится память объемом 64 Тбайта (214 сегментов по 4 Гбайта каждый, т.е. 246 байта). Такая память называется виртуальной (кажущаяся).

В защищенном режиме МП аппаратно поддерживает многозадачность. То есть в системе одновременно может находиться множество задач, а МП обеспечивает быстрое переключение между этими задачами. Наличие многозадачности приводит к ряду проблем, основные две из которых следующие: как переключаться с задачи на задачу и как защитить задачи друг от друга.

Для решения первой проблемы для каждой задачи в системе создается так называемый сегмент состояния задачи (TSS task state segment). Размер этого сегмента должен быть не менее 104-х байт. Когда МП переключается с задачи А на задачу В, то он автоматически запоминает контекст задачи А (содержимое почти всех своих внутренних регистров) в TSS задачи А, а затем также автоматически загружает в свои регистры контекст задачи В (из TSS задачи В). Тем самым обеспечивается переключение на задачу В и в то же время возможность возврата и продолжения выполнения задачи А. Под задачей понимается любой программный код, для которого в системе создан свой TSS. Создание TSS ‑ это функция ОС.

Для решения проблемы защиты задач друг от друга всем создаваемым в системе сегментам присваивается уровень привилегий. Возможно четыре уровня привилегий: 0,1,2 и 3, причем 0-й уровень самый старший. Уровень 3 (самый низкий) присваивается обычно сегментам  пользователя, уровень 0 ‑ сегментам ОС, а уровни 1 и 2 предназначены для расширения ОС и на практике часто не используются.

Если программа с уровнем привилегий А обращается к сегменту с уровнем привилегий В, то процессор проверяет условие А£В. Если условие выполняется, то доступ к сегменту предоставлен, если же условие не выполняется, то будет прерывание (нарушены права доступа к сегменту).

Механизм формирования физического адреса в защищенном режиме радикально отличается от механизма МП 8086. Для каждого создаваемого в системе сегмента создается (как правило, ОС) специальная структура, называемая дескриптором этого сегмента. Дескриптор занимает в памяти 8 байт и содержит все необходимые сведения о сегменте: начальный адрес сегмента, размер сегмента, уровень привилегий, атрибуты сегмента и.т.д. МП вычисляет физический адрес по формуле

Аф = начальный адрес сегмента+Аэф.

В отличие от 8086, начальный адрес сегмента не вычисляется, а берется готовым из дескриптора.

Все созданные в системы дескрипторы сводятся в дескрипторные таблицы. Любая задача может одновременно работать с двумя такими таблицами. Одна из них называется глобальной (GDT global descriptor table), а другая ‑ локальной (LDT local descriptor table). В GDT собраны дескрипторы сегментов, разделяемых всеми задачами в системе, а в LDT располагаются дескрипторы сегментов, с которыми работает только данная задача. GDT в системе одна и всегда должна находиться в ОП, а LDT может быть столько же, сколько и задач (для любой задачи LDT может быть создана, а может и не создаваться), и располагаться эти таблицы могут как в ОП, так и на диске.

Для того чтобы перейти к новому сегменту, надо обратиться к его дескриптору, т.е. надо найти этот дескриптор в дескрипторной таблице. Для этого необходимо знать начальный адрес таблицы и внутритабличное смещение (это смещение принято называть селектором дескриптора). Начальные адреса таблиц процессору известны, они хранятся в специальных внутренних регистрах МП, а смещение берется из сегментного регистра. Любой сегментный регистр в МП имеет формат, приведенный на рис. 3.1.

Видимая часть   Теневая часть

16 бит

 

64 бита

To top