Микропроцессоры Intel 8086 и Intel 80286

Автор работы: Пользователь скрыл имя, 31 Октября 2010 в 20:19, Не определен

Описание работы

Доклад

Файлы: 1 файл

Микропроцессоры Intel 8086 и Intel 80286.doc

— 233.50 Кб (Скачать файл)

     Преобразование  логических адресов в физические происходит следующим образом. Как  и в микропроцессоре 8086, программа  разбивается на сегменты, причём не делается предположений о размещении сегментов в физической памяти. Номер  сегмента в логическом адресе служит индексом сегментной таблицы, которая возвращает начальный физический адрес требуемого сегмента. Этот адрес суммируется со смещением ячейки памяти в сегменте, образуя физический адрес ячейки памяти. Если каждому заданию назначается отдельная область в сегментной таблице, то базовый адрес той секции сегментной таблицы, которая ассоциируется с текущим выполняемым заданием, находится в регистре, называемом регистром сегментной таблицы. Индекс сегмента берется относительно регистра сегментной таблицы. Поскольку преобразование адреса должно выполняться при каждом обращении к памяти, либо вся сегментная таблица, либо ее часть, содержащая начальные адреса сегментов выполняемого задания, должна храниться в регистрах, входящих в состав схемы управления памятью.

     Каждый  элемент в сегментной таблице (длиной до 8192 элементов) называется дескриптором сегмента. Кроме сегментных дескрипторов для сегментов кода, данных и стека, в микропроцессоре 80286 имеются системные управляющие дескрипторы для специальных системных данных и операций передач управления. Дескриптор содержит начальный адрес сегмента, а также следующие атрибуты:

  • поле состояния, которое показывает, находится в памяти или нет сегмент, к которому производится обращение. Если требуемый сегмент в памяти отсутствует, возникает сегментное нарушение, инициирующее вызов монитора. Монитор загружает нужный сегмент в память, модифицирует сегментную таблицу и возобновляет выполнение программы. Когда достаточного пространства в памяти нет, один или несколько сегментов передаются во внешнюю память и удаляются из оперативной, освобождая в ней место;
  • поле предела, показывающее размер сегмента (до 64 Кбайт). Эта информация предотвращает обращения к сегментам по недействительному адресу, вызываемые, например, переполнением стека. Когда смещение больше длины сегмента, генерируется прерывание с вызовом монитора;
  • поле привилегий,59 показывающее, каким минимальным уровнем привилегий должна обладать задача, чтобы получить доступ к сегменту. Микропроцессор 80286 поддерживает 4 уровня привилегий;
  • поле типа, обеспечивающее защиту от несанкционированных считывания, записи или выполнения сегмента. Это поле содержит 4 бита, которые показывают следующие возможности по обращению к сегменту:
    • выполнимый – содержимое сегмента можно выполнять как команды, запись в сегмент запрещена;
    • считываемый (для невыполнимого сегмента) – содержимое сегмента можно считывать как операнды;
    • записываемый (для выполнимого сегмента) – содержимое сегмента допускается модифицировать;
    • направление расширения (для невыполнимого сегмента) – сегмент данных растёт вверх, сегмент стека – вниз;
    • ограниченно выполнимый (для выполнимого сегмента) – содержимое сегмента может выполняться только задачами с уровнем привилегий не ниже привилегий данного сегмента.

     Направление расширения сегмента влияет на то, какие  адреса считаются недействительными  – больше или меньше предела сегмента. Каждому сегменту, как логической единице программы, можно придавать несколько ограничений по доступу посредством установки комбинаций этих бит. Четвёртый бит поля типа определяет тип дескриптора – дескриптор сегмента или системный дескриптор. Системный дескриптор нельзя загрузить в расширение сегментного регистра;

  • поле доступа, которое обеспечивает полезную информацию о выборе сегмента для замены в случае нехватки физической памяти, когда из внешней памяти вызывается новый сегмент. Были предложены и исследованы такие алгоритмы замены, как очередь, замена наименее часто используемого и замена наиболее давно используемого. Однако, за исключением алгоритма очереди, их реализации требуют сложных аппаратных средств. Альтернативой служат биты доступа, ассоциируемые с каждым сегментом. Когда к сегменту производится обращение, один из его битов доступа автоматически устанавливается в 1. После того, как все биты доступа установлены в 1, монитор может сбросить их в 0. Анализируя биты доступа, монитор выбирает сегмент, к которому давно не было обращений. В дескрипторах микропроцессора 80286 поле доступа имеет длину 1 бит;
  • поле изменения, которое показывает, модифицировался сегмент или нет после передачи его в память. При замене сегмента, если он был изменен, необходимо передать его во внешнюю память перед загрузкой нового сегмента. Если же сегмент не модифицировался, монитор должен только загрузить новый сегмент из внешней памяти, что позволяет избежать относительно длительной операции записи.

     Важно осознавать, что и в защищённом режиме процессора 80286 сегменты могут перекрываться в физической памяти. Это часто используется для создания нескольких дескрипторов одного сегмента с разными правами доступа, например, для передачи дочерней задаче. Другое применение «псевдонимов» сегментов состоит в самомодификации кода: запись в сегмент кода, помеченный как выполнимый, не допускается, но возможно создание записываемого сегмента данных по тому же физическому адресу и запись в этот сегмент с модификацией кода.

     При обращении к памяти типичная последовательность операций, выполняемых схемой управления памятью, выглядит таким образом:

1. Определить  номер сегмента и обратиться  к соответствующему элементу  сегментной таблицы; 

2. Проверить  состояние. Если в памяти нужного  сегмента нет, генерировать прерывание в монитор, который инициирует процедуру обслуживания сегментного нарушения;

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) была добавлена возможность одновременного выполнения нескольких программ реального режима, а также возможность одновременного выполнения программ реального и защищённого режима.

Информация о работе Микропроцессоры Intel 8086 и Intel 80286