Реферат: 80386 процессор
Реферат: 80386 процессор
Содержание
1.Введение
2.Режимы
процессора
2.1.Реальный
режим
2.2.Защищенный
режим
3.Типы данных
4.Регистры
4.1.Регистры
общего назначения
4.2.Регистр
системных флагов
4.3.Регистры
сегментов
4.4.Регистры управления сегментированной
памятью
4.5.Указатель
команд
4.6.Регистры
управления
4.7.Регистры
отладки
4.8.Буфер
ассоциативной трансляции
5.Система
команд
5.1.Формат
команд
5.2.Описание
обозначения
5.3.Список команд
1. Введение
МП 80386 вышел на рынок с уникальным преимуществом.
Он является единственным 32-разрядным МП, для которого пригодно существующее
прикладное програмное обеспечение, написанное для МП предыдущих моделей от
8086/88 до 80286. Любые программы, написанные для этих МП могут выполняться на
80386 без всяких исправлений и дополнений, лишь только с увеличением скорости
их выполнения. Это свойство МП называется совместимостью снизу вверх. Также,
дополнительными преимуществами этого МП являются многозадачность, встроенное
управление памятью, виртуальная память с разделением на страницы, защита
программ и большое адресное пространство. Аппаратная совместимость с
предыдущими моделями сохранена посредством динамического изменения разрядности
магистрали.
МП 80386 выполнен на основе технологии CHMOS III
фирмы Intel, которая вобрала в себя быстродействие технологии HMOS (МДП высокой
плотности) и малое потребление мощности технологии CMOS (КМДП). МП 80386
предусматривает переключение программ, выполняемых под управлением различных
операционных систем, таких как MS-DOS и UNIX. Это свойство позволяет разработчикам
программ включать стандартное прикладное программное обеспечение для
16-разрядных МП непосредственно в 32-разрядную систему. Процессор определяет адресное
пространство как один или несколько сегментов памяти любого размера в диапазоне
от 1 байт до 4 Гбайт. Эти сегменты могут быть индивидуально защищены уровнями
привилегий и таким образом избирательно разделяться различными задачами.
2.
Режимы процессора
Для более полного понятия системы команд МП 80386
необходимо предварительно описать общую схему его работы и архитектуру.
В данном реферате не раскрывается более подробно
значения некоторых специфических слов и понятий, считая, что читатель предварительно
ознакомился с МП 8086 и МП 80286 и имеет представление о их работе и
архитектуре. Описываются только те функции МП 80386, которые отсутствуют или
изменены в предыдущих моделях МП.
МП 80386 имеет два режима работы: режим реальных адресов, называемый
реальным режимом, и защищенный режим.
2.1.
Реальный режим
При подаче сигнала сброса или при включении питания
устанавливается реальный режим, причем МП 80386 работает как очень быстрый МП
8086, но, по желанию программиста, с 32-разрядным расширением. В реальном
режиме МП 80386 имеет такую же базовую архитектуру, что и МП 8086, но
обеспечивает доступ к 32-разрядным регистрам. Механизм адресации, размеры
памяти и обработка прерываний МП 8086 полностью совпадают с аналогичными
функциями МП 80386 в реальном режиме.
Единственным способом выхода из реального режима
является явное переключение в защищенный режим. В защищенный режим МП 80386
входит при установке бита включения защиты (РЕ) в нулевом регистре управления
(CR0) с помощью команды пересылки (MOV to CR0). Для совместимости с МП 80286 с
целью установки бита РЕ может быть также использована команда загрузки слова
состояния машины LMSW. Процессор повторно входит в реальный режим в том
случае, если программа командой пересылки сбрасывает бит РЕ регистра CR0.
2.2.
Защищенный режим
Полные возможности МП 80386 раскрываются в
защищенном режиме. Программы могут исполнять переключение между процессами с
целью входа в задачи, предназначенные для режима виртуального МП 8086. Каждая
такая задача проявляет себя в семантике МП 8086 (т.е. в отношениях между
символами и приписываемыми им значениями независимо от интерпретирующего их
оборудования). Это позволяет выполнять на МП 80386 програмное обеспечение для
МП 8086 - прикладную программу или целую операционную систему. В то же время
задачи для виртуального МП 8086 изолированы и защищены как друг от друга, так и
от главной операционной системы МП 80386.
3.
Типы данных
МП 80386 подразделяет память на 8-разрядные байты,
16-разрядные слова и 32-разрядные двойные слова. Дополнительно МП 80386
поддерживает также следующие дополнительные типы данных.
Неупакованный двоично-десятичный тип -
распакованное байтовое представление десятичной цифры от 0 до 9. Распакованные
десятичные числа хранятся как беззнаковые байтовые значения по одной цифре в
каждом байте. Значение цифры определяется младшим полубайтом. Старший полубайт
должен быть равным нулю при делении и умножении, но может иметь любое значение
при вычитании или сложении.
Упакованный двоично-десятичный тип - упакованное
байтовое представление двух десятичных цифр от 0 до 9. Каждая цифра хранится в
своем полубайте. Цифра в старшем полубайте является более значимой. Диапазон
упакованного десятичного байта составляет от 0 до 99.
Битовое поле - непрерывная последовательность
битов, в которой каждый бит рассматривается как независимая переменная. Битовое
поле может начинаться с любого бита любого байта и может быть длиной до 32
бит.
Битовая строка - подобно битовому полю, битовая
строка является непрерывной последовательностью битов. Битовая строка может
начинаться с любого бита любого байта и иметь длину до (2Е32-1) бит.
Ближний указатель - 32-разрядный логический адрес,
который представляет собой относительный адрес внутри сегмента. Ближние
указатели используются как в сплошной, так и в сегментированной модели памяти.
Дальний указатель - 48-разрядный логический адрес
из двух компонентов: 16-разрядного сегмента и 32-разрядного относительного
адреса. Дальние указатели используются программистами тольком в том случае,
когда конструкторы системы выбирают сегментированную организацию памяти.
Целый тип - знаковое двоичное значение,
содержащееся в 32-разрядном двойном слове, 16-разрядном слове или 8-разрядном
байте. Все операции предполагают представление чисел в дополнительном коде.
Знаковый бит расположен в бите 7 в байте, в бите 15 в слове и в бите 31 в
двойном слове. Он равен нулю для положительных чисел и единице для
отрицательных. Поскольку этот старший бит используется как знаковый, то
8-разрядное (байт) целое число может изменяться в диапазоне от -128 до +127,
16-разрядное (слово) целое число в диапазоне от -32768 до +32767, а
32-разрядное (двойное слово) целое число в диапазоне от -2Е31 до +2Е31-1.
Нулевое значение имеет положительный знак.
Обычный тип - беззнаковое двоичное значение, содержащееся в 32-разрядном
двойном слове, 16-разрядном слове или 8-разрядном байте. Все биты определяют
величину числа.
Строка - непрерывная последовательность байтов,
слов или двойных слов. Строка может содержать от 0 до 2Е32 -1 байтов или 4
Гбайтов.
4.
Регистры
Регистр является устройством временного хранения
данных и используется с целью облегчения арифметических, логических и
пересылочных операций. Регистры МП 80386 являются расширением регистров прежних
МП 8086, 80186, 80286. Все 16-разрядные регистры МП предыдущих поколений
содержатся внутри 32-разрядной архитектуры.
Микропроцессор 80386 включает шесть непосредственно
доступных программисту регистров селекторов сегментов, которые содержат
указатели сегментов. Значения этих селекторов могут быть загружены при
исполнении программы и являются специфичными для задачи. Это значит, что
регистры сегментов перезагружаются автоматически при переключении МП 80386 на
другую задачу. За регистрами селекторов сегментов стоят реальные регистры кэш-памяти
сегментов, которые содержат описания сегментов, указываемых селектором. Это
сделано на аппаратном уровне для того, чтобы избежать дополнительной выборки из
памяти в случае, когда требуется описание сегмента.
4.1.
Регистры общего назначения
Восемь регистров общего назначения имеют длину в 32
бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8,
16, 32 и 64 бит; битовые поля от 1 до 32 бит: операнды-адреса длиной 16 и 32
бит. Эти регистры называются EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
Доступ к младшим 16 бит этих регистров выполняется
независимо. Это делается в большинстве ассемблеров при использовании
16-разрядных имен регистров: AX, BX, CX, DX, SI, DI, BP, SP.
4.2.
Регистр системных флагов
Регистр EFLAGS управляет вводом-выводом,
маскируемыми прерываниями, отладкой, переключением задач и включением
исполнения в режиме виртуального МП 8086 в защищенной многозадачной среде -
все это в дополнение к флагам состояния, которые отражают результат исполнения
команды. Младшие 16 бит его представляют собой 16-разрядный регистр флагов и
состояния МП 80286, называемый FLAGS, который наиболее полезен при исполнении
программ для МП 8086 и 80286.
4.2.
Регистры сегментов
Шесть 16-разрядных регистров содержат значения
селекторов сегментов, которые указывают на текущие адресуемые сегменты памяти.
Ниже перечислены эти регистры.
Регистр сегмента программы (CS) - указывает на
сегмент, который содержит текущую последовательность исполняемых команд.
Процессор выбирает все команды из этого сегмента, используя содержимое счетчика
команд как относительный адрес. Содержимое CS изменяется в результате
выполнения внутрисегментных команд управления потоком, прерываний и
исключений. Он не может быть загружен явным способом.
Регистр сегмента стека (SS). Вызовы подпрограмм,
записи параметров и активизация процедур обычно требуют области памяти,
резервируемой под стек. Все операции со стеком используют регистр SS при
обращении к стеку. В отличие от регистра CS регистр SS может быть загружен
явно с помощью команды программы.
Остальные четыре регистра являются регистрами
сегментов данных (DS, ES, FS, GS), каждый из которых адресуется текущей
исполняемой программой. Доступ к четырем раздельным областям данных имеет целью
повысить эффективность программ, позволяя им обращаться к различным типам
структур данных. Содержимое этих регистров может быть заменено под управлением
программы.
При использовании регистров сегментов МП 80386 с
каждым выбранным сегментом связывает базовый адрес. При адресации единицы данных
внутри сегмента к базовому адресу сегмента добавляется 32-разрядный
относительный адрес. Если сегмент выбран загрузкой селектора сегмента в
регистр сегмента, то командам манипуляции данными нужен только этот
относительный адрес.
4.3. Регистры управления
сегментированной памятью
Регистр таблицы глобальных дескрипторов (GDTR).
Содержит 32-разрядный линейный адрес и 16-разрядную границу таблицы глобальных
дескрипторов.
Регистр таблицы локальных дескрипторов (LDTR).
Содержит 16-разрядный селектор для таблицы локальных дескрипторов. Так как эта
таблица является специфичным для задачи сегментом, то она определяется
значением селектора, хранимым в регистрах системного сегмента. Регистр
дескриптора сегмента, связанный с этой таблицей, програмно недоступен.
Регистр таблицы дескрипторов прерываний (IDTR).
Указывает на таблицу точек входа в программы обработки прерываний. Регистр
содержит 32-разрядный линейный базовый адрес и 16-разрядную границу таблицы
дескрипторов прерываний (IDT).
Регистр задачи (TR). Указывает на информацию,
необходимую процессору для определения текущей задачи. Регистр TR содержит
16-разрядный селектор дескриптора сегмента состояния задачи. Поскольку этот
сегмент специфичен для задачи, то он определяется значениями селекторов,
хранящихся в регистрах системного сегмента. Заметим, что с каждым регистром
системных сегментов связан программно недоступный регистр дескриптора сегмента.
4.5.
Указатель команд
Расширенный указатель команд (EIP) является
32-разрядным регистром. Он содержит относительный адрес следующей команды,
подлежащей выполнению. Относительный адрес отсчитывается от начала сегмента
текущей программы. Указатель команд непосредственно не доступен программисту,
но он управляется явно командами управления потоком, прерываниями и исключениями.
Младшие 16 бит регистра EIP называются IP и могут
быть использованы процессором независимо. Это свойство полезно при исполнении
команд МП 8086 и 80286, которые имеют только регистр IP.
4.6.
Регистры управления
МП 80386 имеет три 32-разрядных регистра управления
(CR0, CR2 и CR3, а CR1 зарезервирован фирмой Intel), в которых хранятся
состояния машины или глобальные состояния. Глобальное состояние - это такое
состояние, к которому может получить доступ любой из логических блоков системы
или которое управляет этими блоками. Вместе с регистрами системных адресов эти
регистры хранят информацию о состоянии машины, которая влияет на все задачи в
системе. Для доступа к регистрам управления определены команды их загрузки и
сохранности содержимого.
Системным программистам регистры управления
доступны только через варианты команды MOV, которые позволяют их загружать или
сохранять в регистрах общего назначения.
4.7.
Регистры отладки
Шесть доступных программисту регистров отладки
(DR0-DR3, DR6 и DR7) расширяют возможности отладки в МП 80386, они устанавливают
точки останова по данным и позволяют устанавливать точки останова по командам
без модификации сегментов программ. Регистры DR0-DR3 предназначены для четырех
линейных точек останова. Регистры DR4 и DR5 зарезервированы фирмой Intel для
будущих разработок. Регистр DR6 показывает текущее состояние точек останова, а
регистр DR7 используется для установки точек останова.
4.8.
Буфер ассоциативной трансляции
Буфер ассоциативной трансляции (TLB) - это кэш-память,
используемая для трансляции линейных адресов в физические.
Механизм проверки TLB является уникальным для МП
80386 и может быть не реализован в том же виде в будущих процессорах.
Программы, которые используют этот механизм в его нынешнем виде, могут оказаться
несовместимыми с будущими процессорами.
5. Система команд
5.1.
Формат команд
Команды МП 80386 состоят из отдельных элементов и
могут иметь различные форматы. Из всех описанных ниже элементов только один
(код операции, Коп) обязательно присутствует в любой команде. Остальные
элементы могут отсутствовать, что определяется характером операции, а также
местоположением и типом операндов.
Команды состоят из следующих элементов:
необязательных префиксов; одного или двух байтов кодов операции; возможно - описателя
адреса, который включает байт Mod R/M и байт масштаба, индекса и базы;
смещения - если требуется; поля непосредственных данных - если требуется.
Префиксы - один или несколько байтов,
предшествующих команде и модифицирующих операцию этой команды. Имеется 4 типа
префиксов.
1. Повторение - используется с командами обработки строк; заставляет
команду воздействовать на каждый элемент строки.
2. Размер операнда - переключает разрядность
операндов, устанавливая их 32-разрядными или 16-разрядными.
3. Размер адреса - переключает разрядность адреса,
определяя образование 32-разрядных или 16-разрядных адресов.
4. Замена сегмента - в явной форме указывает, какой
сегментный регистр должна использовать команда. Префикс отменяет действующий
по умолчанию выбор сегментного регистра, обычно осуществляемый МП 80386 при
выполнении этой команды.
Код операции (Коп) - описывает операцию,
выполняемую командой. Некоторым командам присущи несколько кодов операций,
каждый из которых описывает определенный вариант операции.
Описатель регистра - в команде могут быть описаны
один или два регистра в качестве операндов. Описатель регистра может
присутствовать как в байте кода операции, так и в байте описателя режима
адресации.
Описатель режима адресации. Этот элемент, если он
присутствует, описывает, является ли операнд содержимым регистра или ячейки
памяти. Если операнд находится в памяти, описатель режима указывает, надо ли
использовать смещение, индексный регистр, регистр базы и масштабирование.
Байты MOD R/M и SIB. Большинство команд,
ссылающихся на операнд, находящийся в памяти, содержат после байта основного
кода операции еще байт формы адресации. Этот байт описывает используемую форму
адреса. Определенные значения кода поля MOD R/M указывают на наличие второго
адресного байта SIB.
Байты MOD R/M
и SIB содержат следующую информацию:
- тип индексации или номер регистра, используемого
в команде;
- используемый регистр или дополнительную
информацию о выборе команды;
- информацию
о базе, индексе и масштабе;
Смещение. Если описатель режима адресации
указывает, что при вычислении адреса операнда будет использовано смещение, в
состав кода команды включается поле смещения. Смещение представляет собой 8-,
16- или 32-разрядное целое число со знаком. 8-разрядная форма используется в
тех случаях, когда значение смещения невелико.
Непосредственный операнд (данное). Если этот
элемент присутствует, он представляет значение операнда команды. Непосредственные
операнды могут быть 8-, 16- или 32-разрядными. В случаях когда 8-разрядный непосредственный
операнд используется в команде вместе с 16- или 32-разрядным операндом, процессор
автоматически увеличивает размер 8-разрядного операнда путем расширения его
знакового разряда.
Страницы: 1, 2
|