3. Сравнить смещение и длину сегмента. Если смещение слишком велико, генерировать прерывание в монитор;
4. Проверить тип доступа. При попытке несанкционированного обращения генерировать прерывание в монитор;
5. Прибавить начальный адрес сегмента к смещению для образования физического адреса и выдать результат на шину адреса;
6. Модифицировать поля доступа и изменения, а затем ожидать следующего обращения к памяти.
Процедура обслуживания сегментного нарушения реализует следующие действия:
1. Проверить таблицу карты памяти. Если требуемый сегмент помещается в свободную область памяти, перейти к шагу 4;
2. Выбрать удаляемый сегмент, анализируя биты доступа, и модифицировать состояние выбранного сегмента;
3. Проверить бит изменения заменяемого сегмента и, если этот сегмент был модифицирован, записать его во внешнюю память;
4. Загрузить требуемый сегмент в память и модифицировать карту памяти и сегментную таблицу;
5. Возвратиться к команде, которая вызвала сегментное нарушение.
Прерывания, которые возникают во время преобразования адреса, но не связаны с сегментным нарушением, обычно вызывают прекращение текущего задания.
Таким образом, в режиме защищенного виртуального адреса (защищенном режиме) микропроцессора 80286 содержимое сегментного регистра используется как селектор сегмента, показывающий, где в дескрипторной таблице хранится дескриптор сегмента. Микропроцессор 80286 поддерживает одну дескрипторную таблицу прерываний, одну глобальную дескрипторную таблицу и неограниченное число локальных дескрипторных таблиц. Каждая задача имеет свою локальную дескрипторную таблицу, которая, следовательно, защищена от других задач, и использует глобальную дескрипторную таблицу для доступа к разделенным сегментам. Эти таблицы могут находиться по любым адресам памяти и адресуются регистром дескрипторной таблицы прерываний, регистром глобальной дескрипторной таблицы и регистром локальной дескрипторной таблицы соответственно. Регистры дескрипторных таблиц должны загружаться операционной системой с помощью специальных команд.
В 48-битных динамически модифицируемых регистрах расширения сегментных регистров хранятся дескрипторы соответствующих сегментов. Эти регистры расширения состоят из 8-битного поля управления доступом, 24-битного поля начального адреса сегмента и 16-битного поля предела. Важно отметить, что регистры расширения не являются программируемыми. Когда содержимое сегментного регистра изменяется командой, первые три слова выбранного сегментного дескриптора автоматически загружается в расширение этого сегментного регистра из соответствующей дескрипторной таблицы, находящейся в памяти. (В дескрипторах таблиц имеется и четвертое слово, но оно пока не используется.) Переключение с одной задачи на другую изменяет содержимое регистра локальной дескрипторной таблицы, и он адресует другую локальную дескрипторную таблицу.
Селектор сегмента, хранимый в сегментном регистре, состоит из бита, определяющего использование для хранения дескриптора сегмента локальной или глобальной дескрипторных таблиц, 13-битного индекса сегмента в этой таблице, и 2-битного уровня привилегий, запрашиваемого для доступа к этому сегменту. Уровень привилегий сегмента можно настраивать для защиты этого сегмента от обращений задач с меньшими уровнями привилегий.
Обращение к памяти в защищённом режиме процессора 80286 происходит следующим образом. Если при этом обращении используемый сегментный регистр не менялся, 24-битный физический адрес формируется сложением эффективного адреса и 24-битного базового адреса сегмента из расширения сегментного регистра (при условии, что предел и права доступа не нарушаются). Если же сегментный регистр изменялся явно (например, командой передачи данных) или неявно (например, командой межсегментного перехода), старшие 13 бит сегментного регистра используются как индекс, который прибавляется к содержимому соответствующего регистра дескрипторной таблицы для получения местоположения дескриптора, автоматически затем загружаемого микропроцессором из дескрипторной таблицы в расширение сегментного регистра. После загрузки нового расширения микропроцессор проверяет, находится ли нужный сегмент в памяти, и если его там нет, генерируется прерывание; тогда операционная система передает сегмент из внешней памяти. Когда сегмент загружен, эффективный адрес прибавляется к базовому адресу сегмента для получения физического адреса операнда в памяти.
Чтобы упростить переключение процессов (или задач), каждая задача имеет сегмент состояния задачи размером 104 байта, который служит областью хранения всего состояния выполнения. Текущий сегмент состояния задачи определяется системным сегментным дескриптором, который адресуется регистром задачи. Сегмент состояния задачи в основном предназначен для запоминания регистров. Во время переключения задач микропроцессор 80286 запоминает все состояние выполнения в текущем сегменте состояния задачи и загружает в регистр задачи адрес сегмента состояния новой задачи. Затем из выбранного сегмента состояния задачи загружается новое состояние выполнения и процессор возобновляет новую задачу. Это позволяет переключать задачи всего за 250 – 300 тактов, что соответствует нескольким десяткам микросекунд (до десятков тысяч переключений задач в секунду).
В режиме реального адреса процессор 80286 функционирует так же, как микропроцессор 8086, и дополнительные регистры не используются.
В отличие от микропроцессоров 8086/8088 и 80186, в процессоре 80286 линии данных и адресов не мультиплексируются: имеется 16 линий данных и 24 линии адреса, что позволяет процессору адресовать память до 16 Мбайт. В реальном режиме процессор формирует 20-битный адрес, и четыре старшие линии адреса не используются. Логический адрес, используемый в защищённом режиме микропроцессора 80286, состоит из 14-битного номера сегмента (13-битный индекс таблицы и однобитный индикатор таблицы) и 16-битного эффективного адреса. Это позволяет каждому заданию использовать виртуальную память до 1 Гбайт (230 байт).
Кроме средств управления памятью, увеличенной ёмкости памяти благодаря 24-битным адресам и дополнительных команд, производительность процессора 80286 в мультипрограммной среде в шесть раз выше производительности микропроцессора 8086. Имеются процессор числовых данных 80287, генератор синхронизации 82284, контроллер шины 82288 и арбитр шины 82289, совместимые с процессором 80286 и являющиеся аналогами микросхем 8087, 8284A, 8288 и 8289 для микропроцессоров 8086/8088. Защёлки адреса 8282/8283 и приёмопередатчики 8286/8287 совместимы с процессором 80286.
Отметим, что процессор числовых данных должен контролировать переключения задач центральным процессором, так как иначе он может сохранить результат вычислений одной задачи в памяти другой задачи. Поэтому когда сопроцессор 80287 перехватывает команду «ожидать готовности сопроцессора» после переключения задачи ЦП, он сохраняет своё текущее состояние в сегменте состояния старой задачи и восстанавливает из сегмента состояния вновь запущенной задачи своё новое состояние. Подразумевается, что каждая команда сопроцессора предваряется командой ожидания завершения его предыдущей операции, как это автоматически делают ассемблеры. Таким образом, сопроцессор 80287 также обладает средствами поддержки мультипрограммирования.
Самой известной мультизадачной операционной системой для микропроцессоров 80286 стала Microsoft Windows 3.0. Она позволяла запускать как программы, разработанные специально для неё, так и программы реального режима, разработанные для ОС MS-DOS. При этом программы реального режима не могли выполняться одновременно с программами защищённого режима. В более поздних версиях этой системы (использующих дополнительные возможности микропроцессора 80386) была добавлена возможность одновременного выполнения нескольких программ реального режима, а также возможность одновременного выполнения программ реального и защищённого режима.
Процессор 80286 стал невероятно популярным: на его базе фирмой IBM летом 1984 г. был выпущен персональный компьютер IBM AT,65 с энтузиазмом воспринятый и деловыми кругами, и индивидуальными пользователями. К 1988 г., через 6 лет после выпуска процессора, по всему миру насчитывалось более 15 млн компьютеров на его базе. Микропроцессор 80286 показал, что персональные компьютеры могут быть также мощны, как и большие промышленные компьютеры.
В апреле 1987 г. фирма IBM объявила о создании нового семейства персональных компьютеров, названного PS/2. В компьютерах IBM PS/2-30 использовался микропроцессор 8088, как и в оригинальных IBM PC, а в компьютерах IBM PS/2-50/60 – новый микропроцессор 80286. Для последних фирмой Microsoft также была разработана мультизадачная операционная система OS/2. Эта система не имела графического интерфейса, в отличие от ОС Microsoft Windows, и потому была менее требовательна к ресурсам компьютера. Позже фирма IBM выкупила права на систему OS/2 и разрабатывала её самостоятельно.
Технические характеристики
· Дата анонса: 1982 год
· Тактовая частота (МГц): 6-12 МГц
· Разрядность регистров: 16 бит
· Разрядность шины данных: 16 бит
· Разрядность шины адреса: 24 бит
· Объём адресуемой памяти: 16 Мбайт
· Количество транзисторов: 134 000
· Техпроцесс (нм): 1500 нм
· Площадь кристалла (кв. мм): ~49
· Максимальное напряжение: 5 В
· Напряжение питания: +5 В
· Корпус: 68-контактный керамический DIP
Используемая литература:
1. http://cs.usu.edu.ru/study/chips.html#_Toc9352961
2. http://www.thg.ru/cpu/intel_cpu_history/intel_cpu_history-01.html