Автор работы: Пользователь скрыл имя, 31 Октября 2010 в 20:19, Не определен
Доклад
Преобразование логических адресов в физические происходит следующим образом. Как и в микропроцессоре 8086, программа разбивается на сегменты, причём не делается предположений о размещении сегментов в физической памяти. Номер сегмента в логическом адресе служит индексом сегментной таблицы, которая возвращает начальный физический адрес требуемого сегмента. Этот адрес суммируется со смещением ячейки памяти в сегменте, образуя физический адрес ячейки памяти. Если каждому заданию назначается отдельная область в сегментной таблице, то базовый адрес той секции сегментной таблицы, которая ассоциируется с текущим выполняемым заданием, находится в регистре, называемом регистром сегментной таблицы. Индекс сегмента берется относительно регистра сегментной таблицы. Поскольку преобразование адреса должно выполняться при каждом обращении к памяти, либо вся сегментная таблица, либо ее часть, содержащая начальные адреса сегментов выполняемого задания, должна храниться в регистрах, входящих в состав схемы управления памятью.
Каждый элемент в сегментной таблице (длиной до 8192 элементов) называется дескриптором сегмента. Кроме сегментных дескрипторов для сегментов кода, данных и стека, в микропроцессоре 80286 имеются системные управляющие дескрипторы для специальных системных данных и операций передач управления. Дескриптор содержит начальный адрес сегмента, а также следующие атрибуты:
Направление расширения сегмента влияет на то, какие адреса считаются недействительными – больше или меньше предела сегмента. Каждому сегменту, как логической единице программы, можно придавать несколько ограничений по доступу посредством установки комбинаций этих бит. Четвёртый бит поля типа определяет тип дескриптора – дескриптор сегмента или системный дескриптор. Системный дескриптор нельзя загрузить в расширение сегментного регистра;
Важно осознавать, что и в защищённом режиме процессора 80286 сегменты могут перекрываться в физической памяти. Это часто используется для создания нескольких дескрипторов одного сегмента с разными правами доступа, например, для передачи дочерней задаче. Другое применение «псевдонимов» сегментов состоит в самомодификации кода: запись в сегмент кода, помеченный как выполнимый, не допускается, но возможно создание записываемого сегмента данных по тому же физическому адресу и запись в этот сегмент с модификацией кода.
При обращении к памяти типичная последовательность операций, выполняемых схемой управления памятью, выглядит таким образом:
1. Определить номер сегмента и обратиться к соответствующему элементу сегментной таблицы;
2. Проверить
состояние. Если в памяти
3. Сравнить смещение и длину сегмента. Если смещение слишком велико, генерировать прерывание в монитор;
4. Проверить
тип доступа. При попытке
5. Прибавить
начальный адрес сегмента к
смещению для образования
6. Модифицировать
поля доступа и изменения, а
затем ожидать следующего
Процедура обслуживания сегментного нарушения реализует следующие действия:
1. Проверить
таблицу карты памяти. Если требуемый
сегмент помещается в
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) была добавлена возможность одновременного выполнения нескольких программ реального режима, а также возможность одновременного выполнения программ реального и защищённого режима.
Информация о работе Микропроцессоры Intel 8086 и Intel 80286