На главную страницу
Форум txt.version   




Статья :: Введение в микропроцессор 80386

               Введение в микропроцессор 80386
                       
                          Аннотация
                              
     Данный  документ  является  введением  в  микропроцессор
80386 и предназначен для программистов, разработчиков аппара-
туры и системного программного обеспечения.
     
                     С о д е р ж а н и е
     
1. Основные характеристики ...............................5
    1.1. 32-битная архитектура ...........................6
    1.2. Высокопроизводительная технология ...............7
    1.3. Обеспечение работы с виртуальной памятью ........9
    1.4. Механизмы защиты ...............................10
    1.5. Расширенные возможности отладки ................11
    1.6. Совместимость с микропроцессорами 8086/80286 ...12
    1.7. Заключение .....................................12
2. Прикладная архитектура ...............................13
    2.1. Регистры .......................................13
        2.1.1. Общие регистры ...........................14
        2.1.2. Флаги и счетчик команд ...................14
        2.1.3. Регистры математического сопроцессора ....16
    2.2. Память и логическая адресация ..................17
        2.2.1. Сегменты .................................17
        2.2.2. Логические адреса ........................18
        2.2.3. Регистры сегментов и дескрипторов ........19
        2.2.4. Способы адресации ........................22
    2.3. Типы данных и команды ..........................23
        2.3.1. Главные типы данных ......................23
        2.3.2. Типы данных математического сопроцессора..27
        2.3.3. Другие команды ...........................30
            2.3.3.1. Команды операций со стеком .........30
            2.3.3.2. Команды передачи управления ........30
            2.3.3.3. Дополнительные команды .............31
3. Системная архитектура ................................32
3.1 Системные регистры ..................................32
    3.2. Обеспечение многозадачных операционных систем ..33
        3.2.1. Сегмент состояния задачи .................34
        3.2.2. Смена задачи .............................35
    3.3. Адресация ......................................36
        3.3.1. Принцип тарнсляции адрса .................37
        3.3.2. Сегменты .................................39
        3.3.3. Страницы .................................42
        3.3.4. Виртуальная память .......................45
    3.4. Защита .........................................48
        3.4.1. Привилегии ...............................48
        3.4.2. Привилегированные команды ................50
        3.4.3. Защита сегментов .........................50
        3.4.4. Защита страниц ...........................52
    3.5. Системные вызовы ...............................52
    3.6. Прерывания и особые ситуации ...................55
        3.6.1. Таблица дескрипторов .....................56
        3.6.2. Особые случаи и регистры отладки .........58
    3.7. Ввод/вывод .....................................59
4. Архитектурная совместимость ..........................60
    4.1. Совместимость с 80286 ..........................61
    4.2. Режимы реального и виртуального 8086 ...........61
5. Аппаратурная реализация ..............................64
    5.1. Внутренняя структура ...........................65
    5.2. Внешний интерфейс ..............................67
        5.2.1. Синхросигнал .............................68
        5.2.2. Шины данных и адреса .....................68
        5.2.3. Определение циклов шины ..................69
        5.2.4. Управление циклом шины ...................70
        5.2.5. Динамическое управление разрядность шины .71
        5.2.6. Статус процессора и управление ...........72
        5.2.7. Управление сопроцессором .................73
     
     
     1. Основные характеристики
     
     Микропроцессор  80386  является   высокопроизводительным
32-битным  процессором, предназначенным для построения наибо-
лее совершенных вычислительных систем сегодняшнего и завтраш-
него дня. Станции САПР, графические системы с высокой  разре-
шающей  способностью, издательское дело, автоматизация контор
и производства - вот те области, где сегодня может быть  при-
менен  80386. Применения завтрашнего дня скорее будут ограни-
чены воображением разработчиков  систем,  чем  вычислительной
мощностью и возможностями 80386.
     Микропроцессор  80386  дает  разработчику систем большое
число новых и эффективных  возможностей,  включая  производи-
тельность  от  3  до  4  миллион  операций  в секунду, полную
32-битную архитектуру, 4 гигабитное (2 байт)  физическое  ад-
ресное  пространство и внутреннее обеспечение работы со стра-
ничной виртуальной памятью.
     Несмотря на введение в него последних достижений микроп-
роцессорной техники, 80386 сохраняет совместимость по об'ект-
ному коду с программным обеспечением,  в  большом  количестве
написанным для его предшественников, 8086 и 80286. Особый ин-
терес  представляет такое свойство 80386, как виртуальная ма-
шина, которое  позволяет  80386  переключаться  в  выполнении
программ,  управляемых  различными  операционными  системами,
например, UNIX и MS-DOS. Это свойство позволяет  производите-
лям  оригинальных  систем  непосредственно вводить прикладное
программное обеспечение для 16-битных машин в системе на базе
32-битных микропроцессоров.
     Объединяя в себе производительность супермини ЭВМ и низ-
кую  стоимость  и  функциональную  гибкость  микропроцессора,
80386 может открыть новые рынки для микропроцессорных систем.
Применения, недопустимые прежде из-за невысокого быстродейст-
вия  микропроцессоров или не экономности использования супер-
мини ЭВМ,  стали  теперь  практически  осуществимы  благодаря
80386.  Такие  новейшие применения, как машинное зрение, рас-
познавание речи, интеллектуальные работы и экспертные  систе-
мы, бывшие до недавнего времени в основном на стадии экспере-
мента, теперь могут быть предложены на рынке.
     Для  тго, чтобы удовлетворить требованиям будущих приме-
нений, мало иметь 32-битные регистры, команды и шины. Эти ос-
новные свойства являются лишь отправной точкой для  80386.  В
нижеследующих  разделах  в  общих  чертах  будет  рассмотрена
32-битная архитектура 80386, обладающая такими новыми  допол-
нительными свойствами, как:
     - высокопроизводительная технология,
     - обеспечение работы с виртуальной памятью,
     - механизмы защиты,
     - расширенное отладочное обеспечение,
     - совместимость по об'ектному коду с 8086/80286.
     
     1.1. 32-битная архитектура
     
     32-битная архитектура 80386 обеспечивает программные ре-
сурсы,  необходимые для поддержки "больших " систем, характе-
ризуемых операциями с большими числами, большими  структурами
данных,  большими программами (или большим числом программ) и
т.п. Физическое адресное пространство 80386 состоит из 2 байт
или 4 гбайт; его логическое адресное пространство состоит  из
2 байт или 64 терабайт (тбайт). Восемь 32-битных общих регис-
тров  80386  могут быть взаимозаменяемо использованы как опе-
ранды команд и как переменные различных  способов  адресации.
Типы данных включают в себя 8-, 16- или 32-битные целые и по-
рядковые,  упакованные и неупакованные десятичные, указатели,
строки бит, байтов, слов и двойных слов. Микропроцессор 80386
имеет полную систему команд для  операций  над  этими  типами
данных,  а также для управления выполнением программ. Способы
адресации 80386 обеспечивают эффективный доступ  к  элементам
стандартных  структур данных: массивов, записей, массивов за-
писей и записей, содержащих массивы.
     
     1.2. Высокопроизводительная технология
     
     32-битная архитектура не гарантирует высокой  производи-
тельности. Реализация потенциала архитектуры требует новейшей
микроэлектронной  технологии,  точного  разделения  функций и
внимания к внешним операциям кристалла, в особенности к взаи-
модействию процессора с памятью. Включение этих свойств обес-
печивает 80386 самую высокую произвидительность по  сравнению
с любым другим существующим микропроцессором.
     Микропроцессор  80386  реализован  с  помощью технологии
фирмы ИНТЕЛ CH MOSIII - технологического процесса, объединяю-
щего в себе возможности  высокого  быстродействия  технологии
HMOS с малым потреблением технологии кмоп. Использование гео-
метрии  1,5  мкм и слоев металлизации дает 80386 более 275000
транзисторов на кристаллле. Сейчас выпускаются  оба  варианта
80386, работающих на частоте I2 и I6 мгц без состояний ожида-
ния, причем вариант 80386 на 16 мгц обеспечивает скорость ра-
боты 3-4 миллиона операций в секунду.
     Микропроцессор  80386  разделен  внутри на 6 автономно и
параллельно работающих блоков с соответствующей синхронизаци-
ей. Все внутренние шины, соединяющие эти блоки, имеют разряд-
ность 32 бит. Конвейерная организация функциональных блоков в
80386 допускает временное наложение выполнения различных ста-
дий команды и позволяет одновременно выполнять несколько опе-
раций. Кроме конвейерной обработки всех команд, в  80386  вы-
полнение ряда важных операций осуществляется специальными ап-
паратными узлами. Блок умножения/деления 80386 может выпонять
32-битное умножение за 9-41 такт синхронизации, в зависимости
от числа значащих цифр; он может разделить 32-битные операнды
за  38  тактов (в случае чисел без знаков) или за 43 такта (в
случае чисел со знаками). Регистр группового сдвига 80386 мо-
жет за один такт сдвигать от 1 до 64 бит.
     Во многих 32-битных применениях, в таких как,  например,
перепрограммируемые  ЭВМ коллективного пользования, требуется
преобразование логических адресов в физические и защита памя-
ти с помощью блока управления памятью, БУП. В других примене-
ниях, например, в системах управления в реальном времени, это
не требуется.  Для  большинства  микропроцессорных  систем  с
32-битной  архитектурой  такое разделение функций реализуется
путем использования дополнительного корпуса блока  управления
памятью. В отличие от них буп 80386 входит в состав процессо-
ра  как один из двух функциональных блоков конвейерной струк-
туры. Операционная система, управляющая работой буп, позволя-
ет, например, системе реального времени  обходить  страничное
преобразование.  Введение управления памятью внутрь кристалла
дает повышенную производительность в  системах,  использующих
буп и не приводит к ее снижению в тех систмах, которые БУП не
используют.  Такие  характеристики  стали  возможны благодаря
снижению задержек распространения, использованию  внутреннего
полупериодного тактирования и параллельной работы.
     Еще  одно свойство, необходимое в одних применениях и не
требующееся в других, это обработка больших чисел, в  особен-
ности  в  арифметических операциях с плавающей запятой с оди-
нарной и двойной точностью. Операнды с плавающей запятой име-
ют большую длину, а необходимый набор команд для операций над
ними является довольно сложным; для  реализации  стандартного
набора  операций  с плавающей запятой в соответствии со стан-
дартом IEEE754 требуется несколько тысяч транзисторов. В этих
целях в 80386 имеется аппаратное обеспечение совместной рабо-
ты с отдельным математическим сопроцессором.  К  80386  может
быть  подключен  математический  сопроцессор либо 80287, либо
более производительный 80387.  Для  прикладного  программного
обеспечения  сопроцессоры прозрачны; они лишь расширяют архи-
тектуру 80386 с помощью регистров, типов данных  и  операций,
требуемых  стандартом IEEE754. Комбинация 80386 и 80387 может
исполнять 1,8 миллион операций.
     32-битный процессор, работающий с частотой 16 мгц, имеет
большее быстродействие, чем большинство быстродействующих па-
мятей, вследствии чего его производительность может быть  ог-
раничена  временами доступа к памяти. 80386 был спроектирован
так, чтобы с максимальной эффективностью использовать как на-
иболее быстродействующие статистические ОЗУ, так и  недорогие
динамические  ОЗУ.  Для  обращения к быстрой памяти, например
типа кэш, 80386 вырабатывает двухтактный  магистральный  цикл
для  адреса/данных.  (Памяти типа кэш 80386 могут иметь любой
объем от минимального полезного 4 кбайт до максимального, ох-
ватывающего все физическое адресное пространство).  Обращение
к более медленной памяти (или к устройствам ввода/вывода) мо-
жет  производиться с использованием конвейерного формирования
адреса для увеличения времени установки данных  после  адреса
до  3  тактов при сохранении двухтактных циклов в процессоре.
Вследствие внутреннего конвейерного форморования  адреса  при
исполнении команды, 80386, как правило, вычисляет адрес и оп-
ределяет  следующий  магистральный цикл во время текущего ма-
гистрального цикла. Узел конвейерного формирования адреса пе-
редает эту опережающую информацию в подсистему памяти, позво-
ляя, тем самым, одному банку памяти  дешифрировать  следующий
магистральный  цикл,  в то время как другой банк реагирует на
текущий магистральный цикл.
     
     1.3. Обеспечение работы с виртуальной памятью
     
     Виртуальная память позволяет ставить максимальный  объем
программы или группы программ в зависимость от имеющегося ад-
ресного  пространства на диске, а не от об'ема физической па-
мяти (ОЗУ), которая в настоящее время  приблизительно  в  400
раз  дороже. Из вытекающей отсюда гибкости выигрывают изгото-
вители оборудования (которые могут поставлять изделия,  отли-
чающиеся  лишь  в  конфигурациях памяти и в уровне производи-
тельности), программисты (которые могут предоставлять  управ-
ление хранением программ операционным системам и избегать на-
писания  программ  с перекрывающимися структурами) и конечные
пользователи (которые могут вводить новые и большие по объему
прикладные программы, не опасаясь нехватки памяти).
     Виртуальная память реализуется операционной  системой  с
соответствующей аппаратурной поддержкой. Микропроцессор 80386
обеспечивает работу с системами виртуальной памяти с сегмент-
ной  или  страничной организацией. Сегментная виртуальная па-
мять больше подходит для небольших 16-битных систем, в  кото-
рых  об'ем сегмента не превышает 64 кбайт. 80386 обеспечивает
работу с сегментами объемом до 4 гбайт; поэтому в большинстве
больших систем на базе 80386 системы виртуальной памяти будут
использовать  возможность  страничного  запроса.  Для  каждой
страницы  80386  вырабатывает биты присутствия, занятости или
регистрации обращения, которые необходимы для эффективной ре-
ализации виртуальной памяти со страничными запросами. В  слу-
чае  обращения  к несуществующей странице 80386 автоматически
делает переход к операционной системе, если операционная сис-
тема считала с диска отсутствующую страницу, 80386  выполняет
команду  повторно. Высокая производительность в работе с вир-
туальной памятью обеспечивается в 80386 использованием  внут-
ренней  кэш-памяти  для  хранения  страничной информации. Эта
кэш-память (называемая буфером просмотра трансляции, TLB) со-
держит информацию о распределении адресов 32 страниц, исполь-
зовавшихся последними. Страницы виртуальной памяти 80386 име-
ют об'ем 4 кбайт, храня одновременно распределение 128  кбайт
памяти, буфер TLB позволяет 80386 преобразовать адреса внутри
кристалла,  не  обращаясь к хранящейся в памяти таблице стра-
ниц. В типичных системах 98-99% поиска адресов будет осущест-
вляться через буфер TLB.
     
     1.4. Механизмы защиты
     
     Выполняя  3-4  миллиона  операций в секунду, 80386 имеет
достаточно  вычислительной  мощности  для  обеспечения  самых
сложных систем, состоящих из сотен или тысяч программных  мо-
дулей. В таких системах вопрос заключается не в том, будут ли
ошибки, а в том как их накти и повозможности быстро устранить
и  насколько их действие может быть ограничено. Такие системы
могут быть быстро отлажены и сделаны более надежными при  се-
рийном освоении, если процессор будет проверять каждую коман-
ду  по  критерию  защиты. При этом степень и тип используемой
защиты зависит от конкретного применения. Обычно простые сис-
темы реального времени работают достаточно хорошо без исполь-
зования защиты. Различные требования к защите могут быть наи-
более полно удовлетворены с помощью набора выборочно  исполь-
зуемых функций защиты, введенных в 80386:
     - разделение адресных пространств задач;
     - введение 0-4 уровней привилегий ;
     - использование привилегированных команд (например,HALT);
     - разделение  сегментов по типам (например, кодовый сег-
       мент или сегмент данных);
     - введение прав доступа к сегментам и страницам  (напри-
       мер, право только чтения или только исполнения);
     - проверка границ сегмента.
     Для  сохранения максимельной производительности все про-
верки защиты в 80386 выполняются одновременно  с  выполнением
команды.
     
     1.5. Расширенные возможности отладки
     
     Четыре  внутренних  отладочных  регистра  80386 помогают
значительно сократить время отладки программы.  Эти  регистры
работают  независимо  от  системы защиты и поэтому могут быть
использованы в любых системах, включая те, которые будут  ра-
ботать  без защиты. Не менее важно и то, что они дают возмож-
ность устанавливать контрольные точки  данных,  помимо  конт-
рольных  точек  команд.  80386 отслеживает все четыре текущих
адресных контрольных точки одновременно, не  снижая  скорости
выполнения программы.
     Контрольные  точки  команд  вызывают  переход  (обычно в
программу-отладчик) при  выполнении  команды,  в  большинстве
процессоров это осуществляется с помощью специальной команды,
которую отладчик записывает после команды, представляющей ин-
терес.  Задавая  адреса  контрольных точек в регистрах, 80386
устраняет программные искажения, неизбежные при внесении  ко-
манд  перехода  в защищенную или общую часть программы. Конт-
рольные точки данных, наличие которых является, для микропро-
цессора свойством уникальным, для целей отладки особенно  по-
лезны.  По  контрольной  точке данных можно установить момент
чтения адреса или же момент его записи или чтения.  Используя
контрольные точки данных, программист может, например, быстро
установить  команду,  ответственную  за  ошибочную  запись  в
структуре данных.
     Кроме регистров контрольных точек, 80386 имеет  и  более
традиционные  отладочные функции в виде контрольных точек ко-
манд и пошагового исполнения программы.
     
     1.6. Совместимость с микропроцессорами 8086/80286
     
     Два поколения процессоров семейства 86 предшествуют про-
цессору 80386 - 80286 и 8086, с каждым из них 80386 совместим
на уровне двоичных кодов. Благодаря такой совместимости  эко-
номятся  программные затраты, обеспечивается быстрый выход на
рынок и доступ к обширной библиотеке  программного  обеспече-
ния, написанного для машин на базе микропроцессоров семейства
86.
     Микропроцессор 80386, конечно, может выполнять программы
для 8086, он также может одновременно выполнять программы для
80286 и 80386. Однако наиболее важным свойством совместимости
80386 представляется свойство, называемое VIRTUAL 86 ( вирту-
альный  86),  устанавливающее  защищенную  структуру для 8086
внутри системы задач 80386.  Дополняя  свойство  виртуального
8086 страничной организацией памяти, 80386 может закрепить за
каждой  задачей  виртуального 8086 1 мбайтное адресное прост-
ранство в любой области  физического  адресного  пространства
80386.  Более того, если операционная система 80386 обеспечи-
вает работу с виртуальной  памятью,  то  задачи  виртуального
8086  могут  переноситься  с диска и обратно как любые другие
задачи. Таким образом, свойство виртуального  8086  позволяет
80386  одновременно  выполнять программы, написанные для трех
поколений семейства 86.
     
     1.7. Заключение
     
     Микропроцессор 80386 обеспечивает ту базовую  производи-
тельность, которая необходима для построения высокопроизводи-
тельных микропроцессорных систем. Архитектура 80386 достаточ-
но  гибка:  не  ориентируясь на одно представление о вычисли-
тельной машине, она дает разработчикам систем воможность  вы-
бирать  те  варианты,  которые наилучшим образом подходят для
конкретного применения.
     Полный набор свойств для управления памятью,  включающий
сегментацию,  страничное  разделение  и  обеспечение работы с
виртуальной памятью, реализуется внутри кристалла. До четырех
уровней защиты может быть использовано для возведения  границ
между программными компонентами, однако защита может и не ис-
пользоваться.   Задачи   виртуального  8086  могут  обогатить
32-битные  системы  необычайно  большим  набором  стандартных
программ, уже разработанных для машин на базе 8086.
     Производительность  и гибкость микропроцессора 80386 мо-
гут быть дополены другими устройствами фирмы ИНТЕЛ и доведены
до максимума. К этим устройствам  относятся  контроллеры  ло-
кальных  сетей, усовершенстванные контроллеры прямого доступа
к памяти, контроллеры дисков и графические сопроцессоры.
     
     
     2. Прикладная архитектура
     
     Микропроцессор 80386 дает разработчику прикладных  прог-
рамм на языке ассемблера или разработчику компилятора широкий
набор 32-битных ресурсов. В данной главе эти ресурсы рассмат-
риваются в трех разделах:
     1) регистры;
     2) память и логическая адресация;
     3) типы данных и команды.
     
     2.1. Регистры
     
     Во  всех  вычислительных машинах, включая 80386, имеются
регистры, которые программисты могут использовать для срочно-
го промежуточного хранения. К данным, хранящимся в  этих  ре-
гистрах,  можно обратиться без магистральных циклов, что сок-
ращает время использования команды и предоставляет больше ма-
гистрального времени другим процессором, например, контролле-
рам прямого доступа к памяти. В 80386 имеется восемь програм-
мно доступных общих регистров, еще восемь регистров  добавля-
ется  при  подключении математического сопроцессора 80287 или
80387. Два других регистра 80386, предназначенных не для хра-
нения данных, а для хранения статуса и  управления  процессо-
ром,  также  важны  для  программистов.  Это регистр флагов и
счетчик команд.
     
     2.1.1. Общие регистры
     
     Как видно из рис.2-1, Общие регистры 80386 имеют разряд-
ность 32 бит, внутренние шины данных, внешние шины  данных  и
адреса процессора также имеют разрядность 32 бит. В соответс-
твии  с  любым  обще  принятым  определением  80386  являются
32-битной машиной. Однако в соответствии с  практикой  других
процессоров, предшественниками которых были 16-битные машины,
принято, что в 80386 слово означает 16 бит, а 32-бита образу-
ют двойное слово.
     Как  видно из рис.2-1 все общие регистры могут использо-
ваться как 16 или 32-битные регистры, а четыре из  них  могут
быть использованы и как 8-битные регистры. Почти во всех опе-
рациях  любой общий регистр может быть определен как операнд.
Любые два регистра, например, могут быть перемножены.  Анало-
гичным  образом,  любой  регистр  при вычислении адреса может
быть исползован в качестве базового или индексного. Поскольку
в любой практической программе требуется стек, общий  регистр
ESP подразумевается как указатель вершины стека.
     
     2.1.2. Флаги и счетчик команд
     
     На  рис.2-2  показан формат регистра флагов 80386. Флаги
делятся на три класса: статусные,  управляющие  и  системные.
Процессор  устанавливает статусные флаги после многих команд,
чтобы отразить результат операции. Например, если два операн-
да при сравнении оказываются равными, то процессор устанавли-
вает флаг нулевого результата. Другие команды, преимуществен-
но команды условного перехода, проверяют флаг статуса и  дают
различные  результаты в зависимости от состояния флага. Прог-
раммист может устанавливать флаги  управления  для  изменения
семантики некоторых команд. Например, команда просмотра стро-
ки  может иметь направление в сторону больших или меньших ад-
ресов в зависимости от состояния флага направления. Системные
флаги предназначены для использования операционной системой и
в прикладных программах могут игнорироваться. (Системные фла-
ги рассматриваются в главе 3).  На  практике  для  исключения
возможного изменения системных флагов прикладными программами
может быть использована система защиты 80386.
     
     1 - статусные флаги
     2 - перенос
     3 - четность
     4 - вспомогательный перенос
     5 - ноль
     6 - знак
     7 - переполнение
          г================T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=¬
          ¦                ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
          L================¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=-
     8 -
     9 -
    10 -
    11 -
    12 -
    13 -
    14 -
    15 -
    16 -
     
               Рис.2-2 Регистр флагов
     
     Счетчик  команд  80386,  обозначаемый EIP, имеет разряд-
ность 32 бит. Счетчик команд управляет выборкой команд (вклю-
чая предварительную выборку) и после выполнения команды  про-
цессор автоматически увеличивает его на I. Содержимое счетчи-
ка  команд меняется по прерываниям, в особых и при выполнении
команд меняется по прерываниям, в особых случаях и при выпол-
нении команд передачи управления, например, переходах и вызо-
вах.
     
     2.1.3. Регистры математического сопроцессора
     
     Регистры  математического  сопроцессора,  показанные  на
рис.2-3, повышают производительность систем с большим объемом
вычислений. При подключении к 80386 математического сопроцес-
сора  80287  или 80387 эти регистры добавляются к 80386. Хотя
математический сопроцессор распознает форматы  целых,  упако-
ванных  десятичных и чисел с плавающей запятой различной дли-
ны, внутри него все величины хранятся в формате  с  плавающей
запятой в регистровом стеке 8х80 бит. В математических опера-
циях могут быть как неявные ссылки на верхние элементы стека,
так  и  явные  на дригие регистры. Статусный регистр содержит
указатель вершины стека, флаги, идентифицирующие особые  слу-
чаи (например, переполнение) и коды состояний, отражающие ре-
зультат  последней  команды. Регистр управления содержит биты
вариантов и масок, которые  программист  может  устанавливать
для выбора алгоритма округления, интерпретации бесконечности,
а  также задания того, как будут обрабатываться особые случаи
- сопроцессором или программно.
     
                         1-REGISTER STACK
               79  78          64  65                   0
               г==T==============T======================¬
               ¦  ¦  EXSPONENT   ¦    SIGNIFICAND       ¦
               ¦==+==============+======================¦
               ¦  ¦       2      ¦           3          ¦
               ¦==+==============+======================¦
               ¦  ¦              ¦                      ¦
               ¦==+==============+======================¦
               ¦  ¦              ¦                      ¦
               ¦==+==============+======================¦
               ¦  ¦              ¦                      ¦
               ¦==+==============+======================¦
               ¦  ¦              ¦                      ¦
               L==¦==============¦======================-

                       15                     0
                       г======================¬
                    4- ¦ CONTHOL REGISTER     ¦
                       ¦======================¦
                    5- ¦ STATUS REGISTER      ¦
                       L======================-
     
     Рис.2-3 Регистры математического сопроцессора; 1  -  ре-
гистровый стек; 2 - порядок; 3 - мантисса; 4 - регистр управ-
ления; 5 - регистр статуса.
     
     2.2. Память и логическая адресация
     
     Для  адресации операдндов в 4г байтном физическом адрес-
ном пространстве прикладные программы 80386 используют  логи-
ческую  адрсацию. Процессор автоматически транслирует эти ло-
гические адреса в физические, которые затем выдаются на  сис-
темную  магистраль.  Как  будет  рассмотрено более подробно в
главе 3, операционная система 80386 может перестраивать пред-
ставление прикладной программы о ее логическом адресном прос-
транстве. Например, операционная система 80386 может  опреде-
лить  логическое  адресное пространство так, как это делается
во многих архитектурах , а именно, как простой  массив  из  2
байт. С другой стороны, она может организовать логическое ад-
ресное  пространство  как  набор  сегментов переменной длины.
Операционная система может определить как большое число  сег-
ментов,  так и всего несколько, в зависимости от ее представ-
ления о логической памяти; 80386 не дисктует  конкретное  ис-
пользование  сегментов  и  позволяет использовать их так, как
того требует данное  применение.  Читая  дальнейшие  разделы,
следует  помнить  о  том, что степень активного использования
сегментов прикладной программой зависит от того, как они  ор-
ганизованы операционной системой.
     
     2.2.1. Сегменты
     
     Как было отмечено выше, операционная система может опре-
делить  адресное  пространство как один или несколько сегмен-
тов. Сегменты являются логоческими блоками, хорошо приспособ-
ленными под программные структуры, которые по сути своей име-
ют переменную длину. Например,  1516-байтная  процедура  пол-
ностью  содержит сегменте 1516 байт, так же, как и 8 мбайтный
массив (например,  дисплейный  буфер  1028X1028X8)  полностью
входит  в сегмент такого же размера. Имея для сегментов соот-
ветствующие архитектурные решения, 80386 повышает  производи-
тельность систем, в которых механизм структурирования основан
на  сегментах.  (Страницы, которые рассматриваются в главе 3,
имеют фиксированные размеры; они не приспособлены  под  прог-
раммные  структуры,  но, с другой стороны, более подходят для
таких функций операционной системы, как, например,  пересылки
между ОЗУ и диском).
     Сегмент  в  системе  80386 может иметь любой размер от 1
байта до 4гбайт. Для каждого  сегмента  операционная  система
поддерживает  заданный  архитектурой  дескриптор,  содержащий
описание сегмента. Описание сегмента включает в себя  32-бит-
ный  базовый адрес и длину сегмента, а также информацию о за-
щите, предотвращающей  неправильное  использование  сегмента.
Ввиду того, что дескрипторы поддерживаются операционными сис-
темами,  их рассмотрение откладывается до главы 3. Прикладные
программы пользуются дескрипторами лишь косвенно, обращаясь к
сегментам с помощью логических адресов.
     
     2.2.2. Логические адреса
     
     Ввиду того, что программа может в принципе обращаться  к
нескольким сегментам, логический адрес 80386 должен идентифи-
цировать  сегмент.  Поэтому логический адрес 80386 состоит из
двух частей, 16-битного селектора сегмента и 32-битного  сме-
щения  в выбранном  сегменте (см. Рис.2-4). После селектора в
логическом адресе указывает на дескриптор сегмента. В принци-
пе процессор определяет адрес сегмента с  помощью  селектора,
как указателя для таблицы дескрипторов, поддерживаемой опера-
ционной  системой.  Добавление  смещения логического адреса к
базовому адресу, полученному по  дескриптору  сегмента,  дает
адрес операнда.

     1 - Логический адрес              2 - Сегмент
                                     г===========¬ ==¬
 47     3   31 32    4     0         ¦           ¦   ¦
 г============T============¬         ¦           ¦   ¦
 ¦   селектор ¦  смещение  ¦         ¦           ¦   ¦
 L=T==========¦======T=====-         ¦           ¦   ¦
   ¦                 ¦               ¦     5     ¦   ¦ 7
   ¦                 ¦               ¦===========¦   ¦
   ¦                 L==========T===>¦ операнд   ¦   ¦до 2
   ¦                            ¦    ¦===========¦   ¦
   ¦  таблица дескрипторов      ¦    ¦           ¦   ¦байт
   ¦   г=================¬      +    ¦           ¦   ¦
   ¦   ¦                 ¦      ¦    ¦           ¦   ¦
   ¦   ¦                 ¦    г=¦===>¦           ¦   ¦
   ¦   ¦       8         ¦    ¦      ¦           ¦   ¦
   ¦   ¦=================¦    ¦      L===========-   ¦
   L==>¦  дескриптор     ¦====-                    ==-
       ¦=================¦
       ¦                 ¦
       ¦                 ¦
       L=================-

                    Рис.2-4.
                           
               
     2.2.3. Регистры сегментов и дескрипторов
     
     Для повышения эффективности логической адресации в 80386
введено 6 регистров сегментов и дескрипторов (см. Рис.2-5).

    1 - Сегмент               2 - Дескриптор
 15              0 63                             0
 г===============¬ г==============================¬
 ¦  3-селектор   ¦ ¦ 4-базовый адрес,размер и т.Д.¦ 5 Кодовый
 ¦               ¦ ¦                              ¦   сегмент
 ¦===============¦ ¦==============================¦
 ¦               ¦ ¦                              ¦ 6 Стек
 ¦===============¦ ¦==============================¦
 ¦               ¦ ¦                              ¦ 7 Данные
 ¦===============¦ ¦==============================¦
 ¦               ¦ ¦                              ¦ 7
 ¦===============¦ ¦==============================¦
 ¦               ¦ ¦                              ¦ 7
 ¦===============¦ ¦==============================¦
 ¦               ¦ ¦                              ¦ 7
 L===============- L==============================-

     8 остальные поля дескрипторов описываются в главе 3.
     
     Фактически  эти регистры используются как программно уп-
равляемый кэш, позволяющий исключить  из  большенства  команд
селекторы и производить трансляцию большинства логических ад-
ресов внутри кристалла без обращений к таблице дескрипторов.
     Адресные  ссылки  в  большинстве программ производятся в
небольших адресных диапазонах (такая "локальность ссылок" де-
лают виртуальную память практичной). Например, если процедура
хранится в сегменте, то вероятнее всего большое число  команд
будет  считано  из сегмента прежде, чем управление перейдет к
другой процедуре в  другом  сегменте.  Локальность  ссылок  в
80386  обеспечивается  программно, путем запоминания во внут-
ренних регистрах последних использовавшихся селекторов и дес-
крипторов. Внутреннее хранение дескрипторов позволяет  транс-
лировать большинство логических адресов без обращений к памя-
ти, занимающих много времени.
     В любой момент времени можно адресовать до шести сегмен-
тов: кодовый сегмент, сегмент стека и четыре сегмента данных.
В  сегментных  регистрах CS, SS, DS, ES, FS и GS хранятся се-
лекторы этих сегментов. Их дескрипторы хранятся в  соответст-
вующих  регистрах  дескрипторов. В случае необходимости прог-
рамма может сделать адресуемым новый сегмент с  помощью  заг-
рузки селектора нового сегмента в сегментный регистр. Процес-
сор  автоматически поддерживает регистры дескрипторов, загру-
жая требуемый дескриптор каждый раз, когда  программа  меняет
сегментный  регистр. (Фактически, регистры дескрипторов могут
загружаться только процессором; программе они  не  доступны).
Счетчик  команд  содержит  смещение текущей команды в текущем
кодовом сегменте (определяемом регистром CS), а  регистр  ESP
содержит смещение вершины стека в текущем сегменте стека (оп-
ределяемом регистром SS).
     Высокая  эффективность дешифрации команд достигается для
большинства из них благодаря отсутствию явных ссылок на  сег-
ментные регистры. Например, в командах перехода и занесение в
стек  ссылки,  соответственно,  на регистры CS и SS, делаются
неявно. В случае необходимости программист может указать про-
цессору на использование конкретного сегмента в данной коман-
де, что осуществляется путем добавления перед командой  одно-
байтного  префикса  перемены сегмента. Префикс указывает про-
цессору на регистр сегмента, который должен использоваться  в
трансляции адреса в следующей за префиксом команде.
     Сегмент,  базовый  адрес  которого равен 0, а предельный
размер - 4гбайт,  определяет  4гбайтное  логическое  адресное
пространство. Поскольку процессор выбирает сегментный регистр
автоматически,  то команда может ссылаться на операнд в любой
ячейке этого 4гбайтного  пространства  с  помощью  32-битного
смещения.  Если,  как показано на рис.2-6, Все регистры деск-
рипторов будут загружены базовым адресом 0 к предельным  раз-
мерам  4гбайт, то в этом случае сегменты исчезают. Любой байт
в логическом адресном пространстве, независимо от  того,  ко-
мандный это байт или байт данных, или же элемент стека, адре-
суется  с  помощью простого 32-байтного смещения. Таким обра-
зом, сегментные регистры дают 80386 шесть одновременно  адре-
суемых  логических  адресных  пространств  размером до 4гбайт
каждое. В том случае, если эти сегменты совпадают,  то  прог-
рамма  будет  располагать одним 4гбайтным логическим адресным
пространстве, идентичным такому пространству, которое обеспе-
чивается менее гибкими 32-битными архитектурами.
     
     2.2.4. Способы адресации
     
     Микропроцессор 80386 обеспечивает регистровую  и  непос-
редственную  адресацию операндов, содержащихся, соответствен-
но, в регистрах или командах. Eще более важным является  спо-
собность 80386 обеспечивать различные способы адресации необ-
ходимые для эффективного обращения к таким элементам структур
данных  в памяти как массивы, записи (структуры), массивы за-
писей и записи, содержащие массивы. При этом программа  опре-
деляет  поле смещения в логическом адресе по одному из спосо-
бов адресации памяти в 80386. Процессор 80386 вычисляет  поле
смещения логического адреса по следующей формуле:
     
смещение = база + (идекс X масштаб) + отклонение
     
     Для  вычисления  смещения  могут быть использованы любые
или все переменные базы, индекса и отклонения. Переменные ба-
зы и индекса являются величинами, хранящимися в общих  регис-
рах, а величина отклонения содержится в команде. Для хранения
базы  или индекса может быть использован любой общий регистр.
Величина в индексном регистре может быть отмаштабирована (ум-
ножена) коэффициэнтом 1,2,4 или 8, что дает  возможность  де-
лать  ссылки  на  элементы массива или записи соответствующей
длины. Величина отклонения может иметь разрядность 8  или  32
бит  и  интерпретируется процесспром как величина со знаком в
дополнительном коде.
     Разумные комбинации базы, индекса и отклонения дают сле-
дующие способы адресации памяти 80386:
     - прямая: используется только отклонение;
     - регистривая косвенная: используется только база;
     - базовая: используется база + отклонение;
     - индексная: используется индекс (в масштабе);
     - индексная с отклонением: используется индекс (в  масш-
       табе) + отклонение;
     - базовая индексная: используется база + индекс (в масш-
       табе);
     - базовая  индексная  с отклонением: используется база +
       индекс (в масштабе) + отклонение;
     
     2.3. Типы данных и команды
     
     В данном разделе будут рассмотрены команды,  чаще  всего
используемые  программистами.  Поскольку  большинство  команд
оперирует с конкретными типами данных (например,  с  целыми),
эти типы и команды рассматриваются совместно. Привилегирован-
ные  команды,  включая  те, которые осуществляют ввод/вывод и
обработку прерываний будут рассмотрены в главе 3.
     
     2.3.1. Главные типы данных
     
     В табл. 2-1 Перечислены типы данных и команды, обеспечи-
ваемые процессором 80386. В этой таблице приведены только на-
иболее употребимые команды. Варианты  команд,  такие  как  (в
случае циклического сдвига) циклический сдвиг вправо и цикли-
ческий сдвиг через перенос, также опущены.

                                                 Таблица 2-1.
                                                  
                Главные типы данных и команды
г=============T===============T=============================¬
¦   Тип       ¦  Разрядность  ¦          Команды            ¦
¦=============+===============+=============================¦
¦Целое,       ¦ 8, 16, 32 бит ¦Пересылка,  обмен, преобразо-¦
¦порядковое   ¦               ¦вание,  проверка,  сравнение,¦
¦             ¦               ¦перевод,    сдвиг,    двойной¦
¦             ¦               ¦сдвиг, циклический сдвиг, от-¦
¦             ¦               ¦рицание,   логическое    "и",¦
¦             ¦               ¦"или",   исключающее   "или".¦
¦             ¦               ¦Сложение, вычитание,  умноже-¦
¦             ¦               ¦ние,  деление,  увеличение на¦
¦             ¦               ¦1, уменьшение на  1,  перевод¦
¦             ¦               ¦(пересылка с расширением зна-¦
¦             ¦               ¦ка/ноля)                     ¦
¦=============+===============+=============================¦
¦Неупакованное¦ 1 цифра       ¦Коррекция для сложения,      ¦
¦десятичное   ¦               ¦вычитания,умножения, деления ¦
¦=============+===============+=============================¦
¦Упакованное  ¦ 2 цифры       ¦Коррекция для сложения,      ¦
¦десятичное   ¦               ¦вычитания                    ¦
¦=============+===============+=============================¦
¦Строка       ¦ 0-4гбайт слов,¦Пересылка, загрузка,         ¦
¦(байтов,слов,¦ двойных слов  ¦запоминание, сравнение,      ¦
¦двойных слов)¦               ¦просмотр, повтор             ¦
¦=============+===============+=============================¦
¦Строка бит   ¦ 1-4гбит       ¦Проверка, проверка и установ-¦
¦             ¦               ¦ка,  проверка и гашение, про-¦
¦             ¦               ¦верка и дополнение, просмотр,¦
¦             ¦               ¦вставление, из'ятие          ¦
¦=============+===============+=============================¦
¦Локальный    ¦  32 бит       ¦ (см. Порядковое)            ¦
¦указатель    ¦               ¦                             ¦
¦=============+===============+=============================¦
¦Глобальный   ¦  48 бит       ¦ Загрузка                    ¦
¦указатель    ¦               ¦                             ¦
L=============¦===============¦=============================-

     Примечание. Локальный указатель - 32 битное  смещение  в
сегменте,  определенном одной из регистрированных пар сегмен-
та/дескриптора. Глобальный указатель - это полный  логический
адрес, состоящий из селектора и смещения.
     На  рис.2-7 показаны примеры того, как главные типы дан-
ных хранятся в памяти. Многобайтные элементы могут размещать-
ся с любого адреса байта в зависимости от структуры магистра-
ли, для обращения к  операндам,  размещенным  по  адресу,  не
кратным длине операнда в байтах, могут потребоваться дополни-
тельные  магистральные  циклы. Поэтому для высокой производи-
тельности, не зависящей от структуры магистрали,  большинство
программ ориентируют словные операнды из двойных слов на гра-
ницах двойных слов и т.п.

     
¦  5  ¦  4  ¦  3  ¦  2  ¦  1  ¦  0  ¦ Относительные адреса-1
L=====¦=====¦=====¦=====¦=====¦=====¦========================
     <=============== возрастание порядка - 2
     
                              7      0
                              г======¬
                              ¦      ¦      3
                              ¦      ¦ байт порядкового
                              L======-
                            L====T======-
                     4           ¦
                  величина ======-
     
             31                      0
             г=T=====================¬
             ¦ ¦                     ¦         5
             ¦ ¦                     ¦ двойное слово целого
             L=¦=====================-
              ¦L====== величина = 4 =-
              L======= знак       6
     
                              7      0
                              г======¬
                              ¦      ¦         7
                              ¦      ¦ неупакованное
                              L======- десятичное
     
                              7   3  0
                              г===T==¬
                              ¦   ¦  ¦         8
                              ¦   ¦  ¦   упакованное
                              L===¦==-   десятичное
     
   г=====T=  =T=====T=====T=====T====¬
   ¦     ¦    ¦     ¦     ¦     ¦    ¦          9
   ¦     ¦    ¦     ¦     ¦     ¦    ¦ строка байтов
   L=====¦=  =¦=====¦=====¦=====¦====-
             10 младший байт ======-
     
             31                      0
             г=======================¬
             ¦                       ¦         11
             ¦                       ¦ локальный указатель
             L=======================-
     
    47       31                      0
    г========T=======================¬
    ¦        ¦                       ¦         12
    ¦    13  ¦          14           ¦ глобальный указатель
    L========¦=======================-
    L========-L======================-
     селектор         смещение

     
     2.3.2. Типы данных математического сопроцессора
     
     Математический  сопроцессор  80287 или 80387 добавляют к
типам данных и командам процессора 80386 свои, приведенные  в
табл.2-2.  В  большинстве прикладных задач входные величины и
получаемые результаты хранятся в виде типов  целых,  действи-
тельных или упакованных десятичных, а для промежуточных вели-
чин  имеется  тип данных промежуточное действительное, расши-
ренный диапазон и точность  которого  в  сложных  вычислениях
сводят  к минимуму ошибки округления, переполнения и исчезно-
вения порядка. В соответствии с такой моделью  математический
сопроцессор  производит большую часть вычислений над промежу-
точными величинами, хранящимися в его регистрах. При загрузке
любого типа данных в регистровый стек, этот тип автоматически
меняется на промежуточный действительный. Промежуточная дейс-
твительная величина в регистре, в свою  очередь,  может  быть
переведена в любой другой тип с помощью команды запоминания.
     На  рис.2-8  Показано,  как  типы данных математического
сопроцессора хранятся в памяти.
     
                                                 Таблица 2-2.
     
        Главные типы данных и команды математического
                        сопроцессора
г==============T==============T=============================¬
¦     Тип      ¦  Разрядность ¦        Команды              ¦
¦==============+==============+=============================¦
¦Целое         ¦ 16,32,64 бит ¦Загрузка, запоминание,  срав-¦
¦              ¦              ¦нение,  сложение,  вычитание,¦
¦              ¦              ¦умножение, деление           ¦
¦==============+==============+=============================¦
¦Упакованное   ¦ 18 цифр      ¦Загрузка, запоминание        ¦
¦десятичное    ¦              ¦                             ¦
¦==============+==============+=============================¦
¦Действительное¦ 32,64 бит    ¦Загрузка, запомонание,  срав-¦
¦              ¦              ¦нение   сложение,  вычитание,¦
¦              ¦              ¦умножение, деление           ¦
¦==============+==============+=============================¦
¦Промежуточное ¦ 80 бит       ¦Сложение, вычитание,  умноже-¦
¦действительное¦              ¦ние,    деление,   извлечение¦
¦              ¦              ¦квадратного корня,  масштаби-¦
¦              ¦              ¦рование  остатка,  вычисление¦
¦              ¦              ¦части  целого,  смена  знака,¦
¦              ¦              ¦вычисление абсолютной величи-¦
¦              ¦              ¦ны,  выделение порядка и ман-¦
¦              ¦              ¦тиссы,   сравнение,   осмотр,¦
¦              ¦              ¦проверка,  обмен, арктангенс,¦
¦              ¦              ¦2-1,Y*LOG(X+1),Y*LOG(X), заг-¦
¦              ¦              ¦рузка константы  (0.0,  П,  и¦
¦              ¦              ¦т.д.) (80387 добавляет синус,¦
¦              ¦              ¦косинус, синус и косинус, не-¦
¦              ¦              ¦упорядоченное сравнение).    ¦
L==============¦==============¦=============================-
 
                           

                                        ¦ Относительные
¦ 9 ¦ 8 ¦ 7 ¦ 6 ¦ 5 ¦ 4 ¦ 3 ¦ 2 ¦ 1 ¦ 0 ¦ адреса - 1
L===¦===¦===¦===¦===¦===¦===¦===¦===¦===¦=================
            <=============== возрастание порядка - 2
            
            
79      71                              3 0
 г=======T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=T=¬    упаковочное
 ¦       ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦    десятичное
 L=======¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=¦=-          5
 ¦   L======== 4   величина ===============-
 L======= знак - 3

           31       23            0
           г=T======T=============¬    7
           ¦ ¦      ¦             ¦ неполное
           ¦ ¦      ¦             ¦ действительное
           L=¦======¦=============-
            ¦L===T==-L= величина =-
            ¦    L======== смещенный порядок 6
            L============= знак
                                     
60               51                          0
г==T=============T===========================¬   8
¦  ¦             ¦                           ¦ полное
¦  ¦             ¦                           ¦ действительное
¦==¦=============¦===========================-
¦ L======T======- L===== величина ==========-
¦        L====== смещенный порядок
L=============== знак

79               62                          0
г=T===========T==T===========================¬ промежуточное
¦ ¦           ¦  ¦                           ¦ действие
L=¦===========¦==¦===========================-   9
¦ L=====T=====-  L===== 4   величина ========-
¦       L================== смещенный порядок
L======= знак - 3
     
     Рис.2-8.Примеры хранения  типов  данных  математического
             сопроцессора
     
     
     2.3.3. Другие команды
     
     Не все команды процессора 80386 связаны с типами данных.
Такие команды рассматриваются в нижеследующих параграфах.
     
     2.3.3.1. Команды операций со стеком
     
     Стек  процессора 80386 является стеком двойных слов, ос-
нование и вершина которого определяются регистрами, соответс-
твенно, SS и ESP. Команда PUSH заносит двойное слово в  стек,
а  команда POP извлекает с вершины стека двойное слово и хар-
нит его в регистре памяти или в памяти. По команде PUSH ALL в
стек заносятся все общие регистры, а по команде POP ALL  про-
изводится обратная операция.
     Команда  INTER  (входа  в  процедуру) и LEAVE (выхода из
процедуры) предназначены для языков высокого уровня с блочной
структурой. По команде ENTER создается кадр  и  образ  стека,
которые  компиляторы  используют для связки вызовов процедур.
По команде LEAVE кадр стека и образ удаляются  из  стека  для
подготовки возврата к процедуре, сделавшей вызов.
     
     2.3.3.2. Команды передачи управления
     
     Команда JUMP (переход) передает управление другой коман-
де  путем  замены  содержимого счетчика команд. Новая команда
может быть в том же кодовом сегменте (со смещение до 2  байт)
или совсем в другом. Операндом внутрисегментного перехода яв-
ляется локальный указатель, т.е. смещение новой команды в те-
кущем  кодовом  сегменте;  переход  таким образом, может быть
сделан к любой ячейке в максимально возможном сегменте.  Опе-
рандом межсегментного перехода является глобальный указатель,
что  позволяет  передавать управление в любую точку сегмента.
(Поле селектора в глобальном указателе  замещает  величину  в
регистре CS, а поле смещение - величину в EIP). В системе ко-
манд  также  имеется  полный набор команд условных переходов,
ветвление которых основано на величине флага статуса; эти ко-
манды могут передавать управление ячейкам, которые также сме-
щены на максимум 2 байта.
     Вызов процедур и функций (подпрограмм)  производится  по
командам  CALL  (вызов),  а возврат к вызывавшей подпрограмме
осуществляется с помощью команды RETURN  (возврат).  Так  же,
как  команды  перехода,  вызовы  внутри сегмента имеют своими
операндами локальный указатель,  задающий  новую  величину  в
счетчике  команд,  а вызовы между сегментами используют в ка-
честве операндов глобальный указатель, который кроме CS изме-
няет и величину EIP. По командам вызова адрес  следующей  ко-
манды  заносится  в  стек,  после  чего производится загрузка
счетчика команд (и регистра CS, если переход делается в  дру-
гой сегмент). По команде возвратасохранненные величины извле-
каются  из  стека в EIP и, если требуется, в CS. Вызовы могут
иметь бесконечную вложенность и  рекурсивность,  ограниченные
лишь  размером стека.
     Для управления циклами, помимо условных переходов, 80386
обеспечивает выполнение команд LOOP (безусловно  и  условного
цикла).  Команды  цикла в качестве счетчика циклов используют
регистр ECX; в каждом цикле ECX уменьшается на 1 и выполнение
команды заканчивается, когда величина в ECX становится равной
нулю. Команды условных циклов заканчиваются в том случае, ес-
ли флаг содержит заданныю величину. В то  время  как  команды
цикла  предназначены  для  проверок  "в конце цикла", команда
"переход", если ECX=0 реализует проверку  в  начале  цикла  и
позволяет выполнять цикл 0 раз.
     
     2.3.3.3. Дополнительные команды
     
     Команда BOUND (проверка границ) 80386 может быть исполь-
зована  для проверки того, что индекс нассива находится в его
границах. Процессор 80386 имеет также команды установки и га-
шения флагов, загруаки и запоминания байта  статуса  регистра
флагов.
     Математический сопроцессор 80287 или 80387 добавляет ко-
манды,  необходимые  операционной системе для его инициализа-
ции, обработки особых случаев, а также для запоминания и вос-
становления статуся сопроцессора.
     Наконец, естественно, процессое 80386 имеет команду "нет
операции".
     
     
     3. Системная архитектура
     
     Назначение системной архитектуры заключается в обеспече-
нии иперационных систем, однако операционные  системы  весьма
различны  по  своим  требованиям.  Для решения этой проблемы,
процессор 80386 обеспечивает набор ресурсов,  которые  разра-
ботчики  операционных систем могут использовать по своему ус-
мотрению. В результате системная архитектура 80386 может быть
сконфигурирована так, чтобы  удовлетворить  всем  требованиям
разрабатываемой операционной системы.
     
     3.1 Системные регистры
     
     Кроме  регистров, рассмотренных в предыдущей главе, опе-
рационная система иногда использует регистры 80386,  показан-
ные  на  рис.3-1.  (Далее в этой главе эти регистры еще будут
рассматриваться; здесь они показаны для справки). В  основном
этими  регистрами  пользуется сам 80386; операционная система
лишь инициализирует системные регистры и  игнорирует  их  при
нормальной  работе.  Однако,  операционная система может вос-
пользоваться системным регистром при обработке  особого  слу-
чая. Например, при страничной ошибке процессор загружает оши-
бочный адрес в регистр CR2; обработчик страничных ошибок опе-
рационной системы использует этот адрес для поиска соответст-
вующего элемента страничной таблицы. Системные регистры обыч-
но недопустимы прикладным программам, поскольку оперировать с
ними  могут только привилегированные команды. (Особые случаи,
страничные ошибки и привилегированные команды рассматриваются
далее в этой главе).

             47               15        0
             г================T===========¬
             ¦  базовый адрес ¦ пр.размер ¦ глобальная табл.
             ¦================+===========¦ дескрипторов
             ¦                ¦           ¦ табл.дескрипторов
 г===========+================+===========¦ прерываний
 ¦ селектор  ¦                ¦           ¦ локальная табл.
 L============================¦===========- дескрипторов
 L===========¦============================-
             системные адресные регистры

   31                        0
   г=========================¬
   ¦                         ¦ вспомогательный
   ¦=========================¦
   ¦                         ¦ резервный
   ¦=========================¦
   ¦                         ¦ линейный адрес стр.ошибки
   ¦=========================¦
   ¦                         ¦ базовый адрес справочника
   ¦                         ¦ страниц
   L=========================-
    системные управляющие регистры
     
     
     3.2. Обеспечение многозадачных операционных систем
     
     Многие свойства системной архитектуры 80386  непосредст-
венно  обеспечивают многозадачные операционные системы, хотя,
конечно, 80386 может быть использован и в однозазадачных сис-
темах с повушенными тербованиями. Многозадачная работа предс-
тавляет собой способ управления работой вычислительной систе-
мой в тех случаях, когда работа системы состоит из нескольких
видов деятельности; тремя видами деятельности могут быть нап-
ример, редактирование одного файла, компиляция другого и  пе-
редача третьего файла в другую машину.
     В многозадачной системе каждый вид деятельности, который
может осуществляться одновременно с другими, называется зада-
чей. (В данном материале термин "задача " эквивалентен терми-
ну  "процесс").  Каждая задача выполняет программу, состоящую
из команд и исходных данных. Одна и та же программа может вы-
полнятся несколькими задачами; например, в многозадачной сис-
теме с разделением времени несколько задач (по числу  пользо-
вателей) могут использоваться одним и тем же компилятором или
редактором.  Программы и задачи соотносятся друг с другом по-
добно партитуре музыкального произведения и  его  исполнению:
программа  -  это текст, описывающий алгоритм, а задача - это
однократное исполнение этого алгоритма.
     Программы, выполняемые задачами. Составлены так, как ес-
ли бы они выполнялись на отдельных процессорах  с  общей  па-
мятью,  т.е. Используя паузы, необходимые для связи или синх-
ронизации с другими задачами, теоретически каждая задача  вы-
полняется непрерывно параллельно с другими задачами. На самом
деле  , однако, задачи выполняются поочередно одним процессо-
ром.
     Многозадачная операционная система моделирует  несколько
процессоров,  предоставляя каждой задаче "виртуальный процес-
сор". В каждый момент времени операционная  система  передает
реальный  процессор одному из виртуальных процессоров, выпол-
няющему свою задачу. Для поддерживания впечатления, что  каж-
дая  задача  имеет свой процессор, операционная система часто
переключает реальный процессор на различные виртуальные  про-
цессоры. В системной архитектуре 80386 для операции смены за-
дачи  предусмотрены  сегменты состояния задачи и команды, вы-
полняющие эту операцию.
     

Введение в микропроцессор 80386

страницы в данном разделе 
 Сегмент состояния задачи  Внутренняя структура
 Неконвейерная адресация  Введение в микропроцессор 80386


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста