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

На рис. 6.2 приведена блок-схема микропроцессора 80286. Она, в отличие от микропроцессоров 80186/80188, не содержит в себе встроенных контроллеров. Вместо них он содержит блок управления памятью, иначе MMU (Memory-Management Unit), который на блок-схеме назван блоком адресации (address unit). Ознакомление с блок-схемой показывает, что адресные выводы А23—А0, а также выводы BUSY , CAP, ERROR , PEREQ и РЕАСК являются новыми, или добавленными, выводами, которых нет в микропроцессоре 8086.

Сигналы BUSY , ERROR , PEREQ и РЕАСК используются при работе с сопроцессором, примером которого является 80287. Аналогичный вывод TEST процессора 8088/8086 в процессоре 80286 называется BUSY. Шина адреса разрядностью 24 бита позволяет адресовать 16 Мбайт физической памяти. Вывод САР соединяется с конденсатором емкостью 0,047 мкФ +20% с рабочим напряжением 12 В, который в свою очередь подключают к нулевому потенциалу. Конденсатор необходим для работы внутреннего делителя частоты. Для сравнения на рис. 6.3 приведены условные схемы обозначения микропроцессоров 8086 и 80286. Следует заметить, что микропроцессор 80286 не имеет мультиплексированной шины адреса/данных.

Микропроцессор 80286 работает в реальном и защищенном режимах. В реальном режиме работы микропроцессор 80286, используя только 16-разрядную шину адреса, адресует лишь 1 Мбайт памяти и, в сущности, является идентичным с микропроцессором 8086. В защищенном режиме работы микропроцессор 80286, используя все 24 разряда, адресует уже 16 Мбайт физической памяти.

В состав микропроцессора 80286, кроме регистра EFLAGS, добавлены еще регистр слова состояния машины (MSW), регистр задачи (TR), регистры таблиц дескрипторов (GDTR, IDTR, LDTR) и 6 регистров расширения сегментных регистров.

 

Рис. 6.2 Блок-схема микропроцессора 80286

 

Рис. 6.3. Схемы обозначения микропроцессоров 8086 и 80286

Система команд

Система команд микропроцессора 80286 включает все команды процессоров 8086/8088 и имеет ряд дополнительных команд. Дополнительные команды управляют системой виртуальной памяти с помощью блока управления памятью микропроцессора 80286. В табл. 6.1 перечислены все эти команды с комментариями относительно назначения каждой из них. Здесь приведены только дополнительно добавленные в микропроцессоре 80286 команды. Кроме них система команд микропроцессора 80286 содержит новые, добавленные еще и для микропроцессоров 80186/80188 команды, такие как: INS, OUTS, BOUND, ENTER, LEAVE, PUSHA, POPA, а также команды целочисленного умножения на константу и команды сдвигов, включая циклические, с указанием счетчика в константе.

 

Таблица 6.1.

Дополнительные команды микропроцессора 80286

Команда Назначение
CLTS Сбрасывает бит флага переключения задач
LGDT Загружает из памяти регистр глобальной таблицы дескрипторов
SGDT Сохраняет в памяти содержимое регистра глобальной таблицы дескрипторов
LIDT Загружает из памяти регистр таблицы дескрипторов прерываний
SIDT Сохраняет в памяти содержимое регистра таблицы дескрипторов прерываний
LLDT Загружает из регистра или памяти регистр локальной таблицы дескрипторов
SLOT Сохраняет в регистре или в памяти содержимое регистра локальной таблицы дескрипторов
LMSW Загружает регистр состояния машины (MSW)
SMSW Сохраняет содержимое регистра состояния машины
LAR Загружает права доступа дескриптора
LSL Загружает граничное значение сегмента
STR Сохранение содержимого регистра задачи
LTR Загружает регистр задачи
ARPL Приводит уровень привилегии к наибольшему значению
VERR Проверяет сегмент на возможность считывания
VERW Проверяет сегмент на возможность записи

 

Ниже следует описание некоторых специальных команд, которые используются для управления защитой.

CLTS

Команда CLTS (clear task-switched flag) сбрасывает бит флага переключения задач TS (task-switched) в регистре состояния машины MSW (machine state word). Если флаг TS установлен и следующая команда, относящаяся к сопроцессору 80287, вызовет прерывание (тип вектора 7). Это позволяет программно определить, относится ли контекст сопроцессора к текущей задаче. Команда clts используется в системе и считается привилегированной командой, поскольку она может вы­полняться только в защищенном режиме с нулевым уровнем привилегий. Команды для установки флага TS не существует. Однако установить флаг можно при помощи записи логической единицы в бит 3 (TS) регистра состояния маши­ны MSW с использованием команды lmsw.

LAR

Команда LAR (load access rights) считывает дескриптор сегмента и размещает копию байта прав доступа в 16-разрядный регистр. Примером является команда LAR ах, вх, которая загружает регистр АХ байтом прав доступа из выбранного дескриптора по значению селектора, указанного в регистре ВХ. Команда используется для получения прав доступа, чтобы она могла быть проверена перед программным использованием сегмента памяти, описанного дескриптором.

LSL

Команда LSL (load segment limit) загружает в выделенный для пользователя регистр граничное значение сегмента. Например, команда LSL ах, вх загружает в регистр АХ граничное значение сегмента, описываемое дескриптором, который выбирается селектором, указанным в регистре ВХ. Эта команда используется для проверки граничного значения сегмента.

ARPL

Команда ARPL (adjust requested privilege level) используется для проверки селектора, чтобы уровень привилегий запрашиваемого селектора не нарушался. Примером является команда ARPL ах, CX. Регистр АХ содержит запрашиваемый уровень привилегий, а СХ содержит значения селектора вызывающего процесса для доступа к дескриптору. Если запрашиваемый уровень привилегий имеет приоритет ниже, чем у проверяемого дескриптора, то устанавливается флаг нуля ZF. Ис­пользование команды гарантирует, что параметр-селектор в подпрограмме не запросит большего уровня привилегированности, чем ему позволит вызывающий процесс.

 

VERR

Команда VERR (verify for read access) проверяет сегмент на возможность считывания. Это означает, что сегмент кода может иметь защиту от несанкционированного чтения. Если считывание из сегмента кода разрешено, то устанавливается флаг нуля ZF, если же не разрешено, то флаг будет сброшен. Команда VERR ах проверяет дескриптор, выбираемый с помощью регистра АХ.

VERW

Команда VERW (verify for write access) проверяет сегмент на возможность записи. Сегмент кода может иметь защиту от не­санкционированной записи. Если запись в сегмент кода разрешена, то устанавливается флаг нуля ZF, если же не разрешена, то флаг будет сброшен.

 

Виртуальная память

Механизм виртуальной памяти (virtual memory machine) позволяет системам, имеющим относительно небольшую физическую память (16 Мбайт для микропроцессора 80286), отображать достаточно большую область памяти (1 Гбайт для процессора 80286). Сам же механизм виртуальной памяти заключается в том, что на жестком диске создается файл обмена (swap-файл) размером в несколько десятков мегабайт, который, по сути, является как бы расширением оперативной памяти системы. При работе системы по мере необходимости осуществляется перекачка данных и программ между файлом обмена на жестком диске и физической памятью. Адресация виртуальной памяти в системе осуществляется с помощью дескрипторов. Каждый дескриптор (рис. 6.7) процессора 80286 описывает сегмент памяти размером в 64 Кбайта, а сам процессор имеет возможность использовать 16К дескрипторов. Таким образом, это позволяет системе иметь виртуальную память емкостью до 1 Гбайт (64 Кбайт х 16К).

Дескрипторы описывают сегмент памяти только в защищенном режиме. Микропроцессор 80286 имеет дескрипторы, которые определяют коды, данные, стековые сегменты, прерывания, процедуры и задачи. Доступ к дескриптору выполняется загрузкой, выполняемой в защищенном режиме, сегментного регистра селектором. Селектор получает доступ к дескриптору, который описывает область памяти.

 








Дата добавления: 2016-03-10; просмотров: 888;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.