ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 1

               Введение в микропроцессор 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 - переполнение
          ЙННННННННННННННННЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛН»
          є                є є є є є є є є є є є є є є є є є є
          ИННННННННННННННННКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНј
     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
               ЙННЛННННННННННННННЛНННННННННННННННННННННН»
               є  є  EXSPONENT   є    SIGNIFICAND       є
               МННОННННННННННННННОНННННННННННННННННННННН№
               є  є       2      є           3          є
               МННОННННННННННННННОНННННННННННННННННННННН№
               є  є              є                      є
               МННОННННННННННННННОНННННННННННННННННННННН№
               є  є              є                      є
               МННОННННННННННННННОНННННННННННННННННННННН№
               є  є              є                      є
               МННОННННННННННННННОНННННННННННННННННННННН№
               є  є              є                      є
               ИННКННННННННННННННКННННННННННННННННННННННј
                       15                     0
                       ЙНННННННННННННННННННННН»
                    4- є CONTHOL REGISTER     є
                       МНННННННННННННННННННННН№
                    5- є STATUS REGISTER      є
                       ИННННННННННННННННННННННј
     
     Рис.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         є           є   є
 ЙННННННННННННЛНННННННННННН»         є           є   є
 є   селектор є  смещение  є         є           є   є
 ИНЛННННННННННКННННННЛНННННј         є           є   є
   є                 є               є     5     є   є 7
   є                 є               МННННННННННН№   є
   є                 ИННННННННННЛННН>є операнд   є   єдо 2
   є                            є    МННННННННННН№   є
   є  таблица дескрипторов      є    є           є   єбайт
   є   ЙННННННННННННННННН»      +    є           є   є
   є   є                 є      є    є           є   є
   є   є                 є    ЙНКННН>є           є   є
   є   є       8         є    є      є           є   є
   є   МНННННННННННННННННє    є      ИНННННННННННј   є
   ИНН>є  дескриптор     МННННј                    ННј
       МННННННННННННННННН№
       є                 є
       є                 є
       ИНННННННННННННННННј
                    Рис.2-4.
                           
               
     2.2.3. Регистры сегментов и дескрипторов
     
     Для повышения эффективности логической адресации в 80386
введено 6 регистров сегментов и дескрипторов (см. Рис.2-5).
    1 - Сегмент               2 - Дескриптор
 15              0 63                             0
 ЙННННННННННННННН» ЙНННННННННННННННННННННННННННННН»
 є  3-селектор   є є 4-базовый адрес,размер и т.Д.є 5 Кодовый
 є               є є                              є   сегмент
 МННННННННННННННН№ МНННННННННННННННННННННННННННННН№
 є               є є                              є 6 Стек
 МННННННННННННННН№ МНННННННННННННННННННННННННННННН№
 є               є є                              є 7 Данные
 МННННННННННННННН№ МНННННННННННННННННННННННННННННН№
 є               є є                              є 7
 МННННННННННННННН№ МНННННННННННННННННННННННННННННН№
 є               є є                              є 7
 МННННННННННННННН№ МНННННННННННННННННННННННННННННН№
 є               є є                              є 7
 ИНННННННННННННННј ИННННННННННННННННННННННННННННННј
     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.
                                                  
                Главные типы данных и команды
ЙНННННННННННННЛНННННННННННННННЛННННННННННННННННННННННННННННН»
є   Тип       є  Разрядность  є          Команды            є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єЦелое,       є 8, 16, 32 бит єПересылка,  обмен, преобразо-є
єпорядковое   є               євание,  проверка,  сравнение,є
є             є               єперевод,    сдвиг,    двойнойє
є             є               єсдвиг, циклический сдвиг, от-є
є             є               єрицание,   логическое    "и",є
є             є               є"или",   исключающее   "или".є
є             є               єСложение, вычитание,  умноже-є
є             є               єние,  деление,  увеличение нає
є             є               є1, уменьшение на  1,  переводє
є             є               є(пересылка с расширением зна-є
є             є               єка/ноля)                     є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єНеупакованноеє 1 цифра       єКоррекция для сложения,      є
єдесятичное   є               євычитания,умножения, деления є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єУпакованное  є 2 цифры       єКоррекция для сложения,      є
єдесятичное   є               євычитания                    є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єСтрока       є 0-4гбайт слов,єПересылка, загрузка,         є
є(байтов,слов,є двойных слов  єзапоминание, сравнение,      є
єдвойных слов)є               єпросмотр, повтор             є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єСтрока бит   є 1-4гбит       єПроверка, проверка и установ-є
є             є               єка,  проверка и гашение, про-є
є             є               єверка и дополнение, просмотр,є
є             є               євставление, из'ятие          є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єЛокальный    є  32 бит       є (см. Порядковое)            є
єуказатель    є               є                             є
МНННННННННННННОНННННННННННННННОННННННННННННННННННННННННННННН№
єГлобальный   є  48 бит       є Загрузка                    є
єуказатель    є               є                             є
ИНННННННННННННКНННННННННННННННКНННННННННННННННННННННННННННННј
     Примечание. Локальный указатель - 32 битное  смещение  в
сегменте,  определенном одной из регистрированных пар сегмен-
та/дескриптора. Глобальный указатель - это полный  логический
адрес, состоящий из селектора и смещения.
     На  рис.2-7 показаны примеры того, как главные типы дан-
ных хранятся в памяти. Многобайтные элементы могут размещать-
ся с любого адреса байта в зависимости от структуры магистра-
ли, для обращения к  операндам,  размещенным  по  адресу,  не
кратным длине операнда в байтах, могут потребоваться дополни-
тельные  магистральные  циклы. Поэтому для высокой производи-
тельности, не зависящей от структуры магистрали,  большинство
программ ориентируют словные операнды из двойных слов на гра-
ницах двойных слов и т.п.
     
є  5  є  4  є  3  є  2  є  1  є  0  є Относительные адреса-1
ИНННННКНННННКНННННКНННННКНННННКНННННКНННННННННННННННННННННННН
     <ННННННННННННННН возрастание порядка - 2
     
                              7      0
                              ЙНННННН»
                              є      є      3
                              є      є байт порядкового
                              ИННННННј
                            ИННННЛННННННј
                     4           є
                  величина ННННННј
     
             31                      0
             ЙНЛННННННННННННННННННННН»
             є є                     є         5
             є є                     є двойное слово целого
             ИНКНННННННННННННННННННННј
              єИНННННН величина Н 4 Нј
              ИННННННН знак       6
     
                              7      0
                              ЙНННННН»
                              є      є         7
                              є      є неупакованное
                              ИННННННј десятичное
     
                              7   3  0
                              ЙНННЛНН»
                              є   є  є         8
                              є   є  є   упакованное
                              ИНННКННј   десятичное
     
   ЙНННННЛН  НЛНННННЛНННННЛНННННЛНННН»
   є     є    є     є     є     є    є          9
   є     є    є     є     є     є    є строка байтов
   ИНННННКН  НКНННННКНННННКНННННКННННј
             10 младший байт ННННННј
     
             31                      0
             ЙННННННННННННННННННННННН»
             є                       є         11
             є                       є локальный указатель
             ИНННННННННННННННННННННННј
     
    47       31                      0
    ЙННННННННЛННННННННННННННННННННННН»
    є        є                       є         12
    є    13  є          14           є глобальный указатель
    ИННННННННКНННННННННННННННННННННННј
    ИННННННННјИННННННННННННННННННННННј
     селектор         смещение
     
     2.3.2. Типы данных математического сопроцессора
     
     Математический  сопроцессор  80287 или 80387 добавляют к
типам данных и командам процессора 80386 свои, приведенные  в
табл.2-2.  В  большинстве прикладных задач входные величины и
получаемые результаты хранятся в виде типов  целых,  действи-
тельных или упакованных десятичных, а для промежуточных вели-
чин  имеется  тип данных промежуточное действительное, расши-
ренный диапазон и точность  которого  в  сложных  вычислениях
сводят  к минимуму ошибки округления, переполнения и исчезно-
вения порядка. В соответствии с такой моделью  математический
сопроцессор  производит большую часть вычислений над промежу-
точными величинами, хранящимися в его регистрах. При загрузке
любого типа данных в регистровый стек, этот тип автоматически
меняется на промежуточный действительный. Промежуточная дейс-
твительная величина в регистре, в свою  очередь,  может  быть
переведена в любой другой тип с помощью команды запоминания.
     На  рис.2-8  Показано,  как  типы данных математического
сопроцессора хранятся в памяти.
     
                                                 Таблица 2-2.
     
        Главные типы данных и команды математического
                        сопроцессора
ЙННННННННННННННЛННННННННННННННЛННННННННННННННННННННННННННННН»
є     Тип      є  Разрядность є        Команды              є
МННННННННННННННОННННННННННННННОННННННННННННННННННННННННННННН№
єЦелое         є 16,32,64 бит єЗагрузка, запоминание,  срав-є
є              є              єнение,  сложение,  вычитание,є
є              є              єумножение, деление           є
МННННННННННННННОННННННННННННННОННННННННННННННННННННННННННННН№
єУпакованное   є 18 цифр      єЗагрузка, запоминание        є
єдесятичное    є              є                             є
МННННННННННННННОННННННННННННННОННННННННННННННННННННННННННННН№
єДействительноеє 32,64 бит    єЗагрузка, запомонание,  срав-є
є              є              єнение   сложение,  вычитание,є
є              є              єумножение, деление           є
МННННННННННННННОННННННННННННННОННННННННННННННННННННННННННННН№
єПромежуточное є 80 бит       єСложение, вычитание,  умноже-є
єдействительноеє              єние,    деление,   извлечениеє
є              є              єквадратного корня,  масштаби-є
є              є              єрование  остатка,  вычислениеє
є              є              єчасти  целого,  смена  знака,є
є              є              євычисление абсолютной величи-є
є              є              єны,  выделение порядка и ман-є
є              є              єтиссы,   сравнение,   осмотр,є
є              є              єпроверка,  обмен, арктангенс,є
є              є              є2-1,Y*LOG(X+1),Y*LOG(X), заг-є
є              є              єрузка константы  (0.0,  П,  иє
є              є              єт.д.) (80387 добавляет синус,є
є              є              єкосинус, синус и косинус, не-є
є              є              єупорядоченное сравнение).    є
ИННННННННННННННКННННННННННННННКНННННННННННННННННННННННННННННј
                           
                                        є Относительные
є 9 є 8 є 7 є 6 є 5 є 4 є 3 є 2 є 1 є 0 є адреса - 1
ИНННКНННКНННКНННКНННКНННКНННКНННКНННКНННКННННННННННННННННН
            <ННННННННННННННН возрастание порядка - 2
            
            
79      71                              3 0
 ЙНННННННЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛНЛН»    упаковочное
 є       є є є є є є є є є є є є є є є є є є    десятичное
 ИНННННННКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНКНј          5
 є   ИНННННННН 4   величина НННННННННННННННј
 ИННННННН знак - 3
           31       23            0
           ЙНЛННННННЛННННННННННННН»    7
           є є      є             є неполное
           є є      є             є действительное
           ИНКННННННКНННННННННННННј
            єИНННЛННјИН величина Нј
            є    ИНННННННН смещенный порядок 6
            ИННННННННННННН знак
                                     
60               51                          0
ЙННЛНННННННННННННЛННННННННННННННННННННННННННН»   8
є  є             є                           є полное
є  є             є                           є действительное
МННКНННННННННННННКНННННННННННННННННННННННННННј
є ИННННННЛННННННј ИННННН величина ННННННННННј
є        ИНННННН смещенный порядок
ИННННННННННННННН знак
79               62                          0
ЙНЛНННННННННННЛННЛННННННННННННННННННННННННННН» промежуточное
є є           є  є                           є действие
ИНКНННННННННННКННКНННННННННННННННННННННННННННј   9
є ИНННННЛНННННј  ИННННН 4   величина ННННННННј
є       ИНННННННННННННННННН смещенный порядок
ИННННННН знак - 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
             ЙННННННННННННННННЛННННННННННН»
             є  базовый адрес є пр.размер є глобальная табл.
             МННННННННННННННННОННННННННННН№ дескрипторов
             є                є           є табл.дескрипторов
 ЙНННННННННННОННННННННННННННННОННННННННННН№ прерываний
 є селектор  є                є           є локальная табл.
 ИННННННННННННННННННННННННННННКНННННННННННј дескрипторов
 ИНННННННННННКННННННННННННННННННННННННННННј
             системные адресные регистры
   31                        0
   ЙННННННННННННННННННННННННН»
   є                         є вспомогательный
   МННННННННННННННННННННННННН№
   є                         є резервный
   МННННННННННННННННННННННННН№
   є                         є линейный адрес стр.ошибки
   МННННННННННННННННННННННННН№
   є                         є базовый адрес справочника
   є                         є страниц
   ИНННННННННННННННННННННННННј
    системные управляющие регистры
     
     
     3.2. Обеспечение многозадачных операционных систем
     
     Многие свойства системной архитектуры 80386  непосредст-
венно  обеспечивают многозадачные операционные системы, хотя,
конечно, 80386 может быть использован и в однозазадачных сис-
темах с повушенными тербованиями. Многозадачная работа предс-
тавляет собой способ управления работой вычислительной систе-
мой в тех случаях, когда работа системы состоит из нескольких
видов деятельности; тремя видами деятельности могут быть нап-
ример, редактирование одного файла, компиляция другого и  пе-
редача третьего файла в другую машину.
     В многозадачной системе каждый вид деятельности, который
может осуществляться одновременно с другими, называется зада-
чей. (В данном материале термин "задача " эквивалентен терми-
ну  "процесс").  Каждая задача выполняет программу, состоящую
из команд и исходных данных. Одна и та же программа может вы-
полнятся несколькими задачами; например, в многозадачной сис-
теме с разделением времени несколько задач (по числу  пользо-
вателей) могут использоваться одним и тем же компилятором или
редактором.  Программы и задачи соотносятся друг с другом по-
добно партитуре музыкального произведения и  его  исполнению:
программа  -  это текст, описывающий алгоритм, а задача - это
однократное исполнение этого алгоритма.
     Программы, выполняемые задачами. Составлены так, как ес-
ли бы они выполнялись на отдельных процессорах  с  общей  па-
мятью,  т.е. Используя паузы, необходимые для связи или синх-
ронизации с другими задачами, теоретически каждая задача  вы-
полняется непрерывно параллельно с другими задачами. На самом
деле  , однако, задачи выполняются поочередно одним процессо-
ром.
     Многозадачная операционная система моделирует  несколько
процессоров,  предоставляя каждой задаче "виртуальный процес-
сор". В каждый момент времени операционная  система  передает
реальный  процессор одному из виртуальных процессоров, выпол-
няющему свою задачу. Для поддерживания впечатления, что  каж-
дая  задача  имеет свой процессор, операционная система часто
переключает реальный процессор на различные виртуальные  про-
цессоры. В системной архитектуре 80386 для операции смены за-
дачи  предусмотрены  сегменты состояния задачи и команды, вы-
полняющие эту операцию.
     
     3.2.1. Сегмент состояния задачи
     
     Сегмент состояния задачи (TSS) является  одной  из  нес-
кольких структур данных, определяемых системоной архитектурой
80386. Фактически, эти структуры данных являются "типами дан-
ных"  для  операционных систем. Сегмент TSS(см.Рис.3-2) Соот-
ветствует тому, что в некоторых операционных системах называ-
ется блоком управления задачей; в этом сегменте хранится сос-
тояние виртуального процесора  задачи.  Каждая  задача  80386
представлена своим TSS, который делится на две части. Младшая
часть  TSS определена системной архитектурой 80386 и содержит
значения регистров процессора. Старшая часть TSS  может  быть
определена операционной системой для хранения данных, связан-
ных  с задачей, например, приоритета выполнения, дескрипторов
файлов и т.д. Дла создания своей задачи операционная  система
формирует  TSS  и инициализирует его величинами, необходимыми
задаче для начала ее выполнения. В результате 80386 поддержи-
вает младшую часть TSS, а за его старшую часть несет ответст-
венность операционная система.
     
           ЙННННННННННННННННННННННННННННННННННННН»
           є (Определенная операционная          є
           .               система)              .
           МННННННННННННННННННННННННННННННННННННН№
           є Адрес локальной табл.дескрипторов   є
           МННННННННННННННННННННННННННННННННННННН№
           є Справочный адрес страничной табл.   є
           МННННННННННННННННННННННННННННННННННННН№
           є Общие регистры                      є
           .                                     .
           МННННННННННННННННННННННННННННННННННННН№
           є Регистр флагов                      є
           МННННННННННННННННННННННННННННННННННННН№
           МННННННННННННННННННННННННННННННННННННН№
           є Сегментные регистры                 є
           .                                     .
           МННННННННННННННННННННННННННННННННННННН№
           є Привилигированные                   є
           .                                     .
           ИНННННННННННННННННННННННННННННННННННННј
     
     
     3.2.2. Смена задачи
     
     Операционная система разрешет выполнение ??????? в соот-
ветствии с планом. Этот план устанавливает  время  выполнения
задач.  Поскольку  методы  планирования  ????????  различные,
80386 предоставляет это операционной системе. ???? Когда опе-
рационная система решает начать выполнение ????? задачи,  она
направляет  процессор  на выполнение еще одного ?????, иногда
называемого сменой контекста.
     Процессор 80386 хранит селектор и дескриптор ????? теку-
щей задачи в своем регистре задачи ?????? операционная систе-
ма выдает команду перехода ???????? является селектор сегмен-
та TSS новой задачи ?????? эту команду, занося  вначале  свои
регистры  в  текущий  TSS,  а затем загружая TR селектором (и
связанным с ним дескриптором), указанным в  команде.  Получив
адрес нового TSS, процессор загружает свои регистры величина-
ми из нового TSS. После чего выполнение программы продолжает-
ся с команды, на которую указывает счетчик команд новой зада-
чи. Для возобнавления старой задачи операционная система дол-
жна  выдать команду перехода и TSS старой задачи, после этого
выполнение старой задачи продолжается с  командой,  следующей
после команды перехода TSS, прекратившей ее выполнение. Такая
смена  задачи  занимает  17 мкс (при рабочей частоте 16 мгц и
отсутствии состояний ожидания).
     
     3.3. Адресация
     
     Физическое адресное  пространство  большинства  вычисли-
тельных  машин организовано просто как массив байтов. С появ-
ления блоков управления памятью (БУП), архитектура машин ста-
ла различать физическое адресное  пространство,  реализуемое,
аппаратурой  памяти и логическое адресное пространство, види-
мое программистом. Блок управления памятью транслирует  логи-
ческие  адреса  программ  в  физические адреса, выдаваемые на
системную магистраль. В большинстве архитектур логическое ад-
ресное пространство задачи представляется как набор следующих
вариантов:
     
     Байты          логическое адресное простарнство  состоит
                    из массива байтов, не имеющего определен-
                    ной структуры (такое адресное пространст-
                    во  иногда  называется "плоским" или "ли-
                    нейным"). Трансляция адреса в этом случае
                    не требуется, поскольку логический  адрес
                    точно эквивалентен физическому.
     Сегмент        логическое  адресное пространство состоит
                    из нескольких или большого числа  сегмен-
                    тов,  каждый из которых содержит перемен-
                    ное число байтов. Логический адрес разде-
                    лен  на  две  части,  номера  сегмента  и
                    сMещения  внутри сегмента. Буп производит
                    трансляцию логического адреса в  физичес-
                    кий.
     Страницы       логическое  адресное пространство состоит
                    из большого числа страниц, каждая из  ко-
                    торых включает в себя фиксированное число
                    байтов. Логический адрес состоит из номе-
                    ра  страницы  и смещения внутри страницы.
                    Буп производит трансляцию логического ад-
                    реса в физический.
     Страничные     логическое адресное пространство  состоит
                    из  сегментов,
     сегменты       которые  в свою очередь, состоят из стра-
                    ниц. Логический адрес состоит  из  номера
                    сегмента  и смещения внутри сегмента. Буп
                    производит трансляцию логического  адреса
                    в  номер страницы и смещение в ней, кото-
                    рые затем транслируются в физический  ад-
                    рес.
     Каждый  из этих вариантов хорошо подходит для одних сис-
тем и мало пригоден для других. Например, линейное пространс-
тво вполне подходит для систем с простыми ветвлениями,  в  то
время как для систем, которые выполняют индивидуальное управ-
ление  и защиту отдельных программных структур, больше подхо-
дит вариант с сегментацией памяти. В 80386  реализован  вари-
ант,  представляющий  память  как набор сегментов, которые по
желанию могут быть разделены на страницы. На  практике  архи-
тектура  80386 обеспечивает операционные сситемы любым из че-
тырех вариантов представления памяти.
     
     3.3.1. Принцип трансляции адреса
     
     Принцип трансляции логического  адреса  в  физический  в
процессоре  80386  иллюстрируется  на рис.3-3. Последователь-
ность операций, показанная на  рис.3-3, является  центральной
как для адресации, так и для защиты. Здесь она рассматривает-
ся в схематичной форме с целью дать ясное общее представление
о  ней  прежде, чем перейти к рассмотрению таких свойств, как
виртуальная память и защита.
     В последующих разделах будут подробно  рассмотрены  раз-
личные  этапы трансляции адреса и будет показано, как они мо-
гут быть приспособлены под требования конкретной системы.
     Как показано в предыдущей главе, способы адресации памя-
ти 80386 дают 32-битное смещение искомого операнда. Совместно
с селектором сегмента это смещение образует  составной  логи-
ческий  адрес:  селектор  этого  адреса идентифицируетискомый
сегмент, а смещение указывает на операнд в сегменте. В  боль-
шинстве  команд  селектор задается неявно как содержимое сег-
ментного регистра.
                        ЙНННННННННННН»
                        є  Таблицы   є
                        єдескрипторовє
                        ИНННННЛННННННј
 логический адрес             є    линейный адрес
ЙННННННННЛНННННННН»  ЙННННННННКН»    ЙНННННННН»  ЙНН»
єселекторєсмещениеМН>єтрансляцияМННН>є        МНН№  МННННЛН»
ИННННННННКННННННННј  є сегмента є    ИННННННННј  ИННј    є є
47       31       0  ИННННННННННј    31       0   запрет є є
                                                  страницє є
             ЙНННННННННННННННННННННННННННННННННННННННННННј є
             є                              ЙННННННННННННННј
             є            ЙННННННННННН»     є  31          0
             є            є  таблицы  є     є  ЙННННННННННН»
             є            є  страниц  є     >НН№ физ.адрес є
             є            ИНННННЛНННННј     є  ИНННННННННННј
             є                  є           ИНННННННННННННН»
        31   є      0           є              31        0 є
        ЙННННКНННННН»    ЙННННННКННННН»        ЙННННННННН» є
        є           МННН>є            МННННННН>є         МНј
        ИНННННННННННј    ИННННННННННННј        ИНННННННННј
      линейный адрес   трансляция страницы   физический адрес
                                                    
                                                    
     Селектор представляет собой индекс в таблице  дескрипто-
ров  сегментов, т.е. это поле содержит номер сегмента. Каждый
элемент таблицы дескрипторов сегментов содержит базовый адрес
сегмента. Процессор добавляет  к  нему  смещение  и  получает
32-битный линейный адрес. Если страницы не разрешены, процес-
сор считает, что линейный адрес является физическим, и выдает
его на адрсные выводы.
     Если  страницы  разрешены, то 80386 транслирует линейный
адрес в физический. Это делается с помощью страничных таблиц.
Страничная таблица по своей  организации  аналогична  таблице
дескрипторов,  за  исключением того, что каждый элемент стра-
ничной таблицы содержит  физический  базовый  адрес  страницы
4кбайт.
     Поскольку  способы адресации 80386 охватывают как тради-
ционные элементы структурного деления адресного  пространства
(сегменты,  и  дополнительно,  страницы) и поскольку сегменты
могут быть очень большими (до 4 гбайт), то эти способы  адре-
сации  оказываются очень гибкими. Таким образом, операционная
система может дать задаче одно линейное адресное  пространст-
во, линейное адресное пространство из страниц, адресное прос-
транство из сегментов или сегментированное адресное простран-
ство со страничным делением.
     По всей своей гибкости многоступенчатая трансляция адре-
са  в 80386 выполняется достаточно быстро. Типичное время вы-
числения смещения и трансляции логического адреса в  физичес-
кий состовляет 1,5 такта. Более того, время трансляции адреса
незаметно для программы, поскольку внутренний БУП 80386 тран-
слирует  адрес  параллельно  с  другими операциями процессора
(кроме случаев, когда команды перехода  или  вызова  временно
прерывают совмещенное выполнение операций).
     
     3.3.2. Сегменты
     
     Сегмент   является  единицей  логического  пространства,
представляемого процессором задаче, т.е. логическое  адресное
пространство  задачи состоит из одного или нескольких сегмен-
тов. Операционные системы существенно отличаются друг от дру-
га по способу определения логического адресного  пространства
задачи. Например, система реального времени с ветвлениями мо-
жет  определить  логическое  адресное пространство как единое
целое, совместно используемое всеми задачами и самой операци-
онной системой, другими словами один сегмент коллективно  ис-
пользуется всей системой. В другом крайнем случае система мо-
жет распределить каждую структуру данных и процедуру по своим
сегментам,  вследствии  чего логическое адресное пространство
задачи предстанет в виде десятков или сотен  адресных  прост-
ранств,  каждое из которых будет соответствовать своей струк-
туре данных или процедуре. Между этими крайними случаями ока-
зывается универсальная система с разделением времени, в кото-
рой задачи выполняются в отдельных логических адресных прост-
ранствах, и в которых программы задач отделены от их  данных,
а  прикладные программы и данные отделены от программы и дан-
ных операционной системы. Свойство сегментации  в  процессоре
80386  достаточно  гибкое,  и может обеспечить каждый из этих
примеров, как и любые другие.
     Как уже было показано в главе 2, команда 80386 ссылается
на операнд в памяти с помощью составного логоческого  адреса,
состоящего  из селектора сегмента и смещения внутри сегмента.
В принципе 80386 транслирует логический адрес  в  линейный  с
помощью селектора, указывающего на дескриптор сегмента в таб-
лице дескрипторов. Дескриптор содержит базовый адрес сегмента
в линейном адресном пространстве, добавление смещения к базо-
вому  адресу дает линейный адрес операнда. На практике транс-
ляция логического адреса в линейный оптимизирована с  помощью
неявного  указания на селекторы и хранения дескрипторов в ре-
гистрах. Поэтому обращение к таблице дескрипторов производит-
ся толькодля тех команд, которые загружают новые селекторы  в
сегментные  регистры  (например,  вызов  процедуры из другого
сегмента приводит к замене селектора в регистре CS). Хотя  на
практике  это бывает редко, тем не менее удобнее представлять
трансляцию процессором логического  адреса  как  обращение  к
дескрипторам в таблицах дескрипторов сегментов, поскольку от-
сюда  следует, что именно дескрипторы в таблицах дескрипторов
сегментов задачи определяют логическое адресное  пространство
задачи.  Без  дескриптора задача не в состоянии сгенерировать
линейные адреса.
     Таблица дескрипторов сегментов представляет собой массив
дескрипторов, на рис.3-4 дан логический  формат  дескриптора.
Поле  базового адреса уже рассматривалось выше. Поле предель-
ного размера определяет длину сегмента, 80386 использует поле
предельного размера для проверки правильности величины смеще-
ния в логическом адресе, а именно, что  оно  попадает  внутрь
сегмента.  Аттрибуты сегмента, в основном, относятся к защите
и будут рассмотрены далее в этой главе.
     
     атрибуты
     признак последнего обращения ННННННННННННННННННННН»
     права ННННННННННННННННННННННННННННННННННННННННН»  є
     тип НННННННННННННННННННННННННННННННННННННННН»  є  є
     привилегия НННННННННННННННННННННННННННННН»  є  є  є
     признак присутствия НННННННННННННННННН»  є  є  є  є
                                           є  є  є  є  є
                                         ЙНКЛНКЛНКЛНКЛНК»
                                         є  є  є  є  є  є
                         ЙНННННННННННННННКННКННКННКННКНН№
                         є      предельный размер       є
                         МНННННННННННННННННННННННННННННН№
                         є      базовый адрес           є
                         ИННННННННННННННННННННННННННННННј
     
     Каждая задача может иметь системное и индивидуальное ло-
гическое адресное пространство. Эти пространства описываются,
соответственно  глобальной  таблицей дескрипторов (GDT) и ло-
кальной таблицей дескрипторов  (LTD).  (В  селекторе  имеется
бит,  связывающий  его  с той или иной таблицей). Эти таблицы
дескрипторов могут содержать максимум 8192 дескриптора и сов-
местно они определяют логическое адресное пространство  зада-
чи. Это означает, что для того, чтобы новый сегмент мог адре-
соваться  задачей,  операционная  система должна внести новый
дескриптор этого сегмента либо в GDT, либо в  LDT  задачи.  В
системах  с защитой GDT и LDT могут быть сделаны привилегиро-
ванными структурами так, что изменения в них сможет  произво-
дить толцко операционная система.
     Операционная  система из ее названия, глобальная таблица
дескрипторов доступна всем задачам, обычно операционные  сис-
темы  заносят  дескрипторы системных сегментов в GDT. Кодовый
сегмент (или сегменты) операционной системы является  хорошим
примером  сегмента,  который должен быть доступным всем зада-
чам, и дескриптор которого обычно находится в GDT. В противо-
положность этому каждая задача  может  иметь  свою  локальную
таблицу  дескрипторов. Процессор поддерживает адрес LDT теку-
щей задачи в своем регистре  локальной  таблицы  дескрипторов
(LDTR),  однако он перезагружает этот регистр (так же, как он
перезагружает свои общие и сегментный регистры) новым  значе-
нием TSS при смене задач.
     Задачи  могут  делить  одни сегменты в следующух случаях
(см.Рис.3-5):
     
     1. Сегмент, дескриптор которого находится в GDT, являет-
        ся общим для всех задач.
     2. Задачи, имеющие общую LDT, имеют  и  общие  сегменты,
        описываемые  этой LDT, такой подход допустим в случае
        тесно взаимодействующих задач.
     3. Дескрипторы в различных LDT могут указывать на один о
        тот же сегмент, такие дескрипторы называются псевдои-
        менами. Использование псевдоимени  позволяет  задачам
        иметь  общим  только один сегмент, а не все сегменты,
        определенные таблицей дескрипторов.
     
     3.3.3. Страницы
     
     Независимо от  того,  содержит  ли  логическое  адресное
пространство  задачи  один  или много сегментов, операционная
система может разделить  линейное  адресное  пространство  на
страницы.  С точки зрения операционной системы страницы явля-
ются удобными элементами для распределения и  перераспределе-
ния  памяти, поскольку они все имеют одинаковый размер. Стра-
ницы также являются средством защиты частей больших сегментов
и, что особенно важно, обеспечивают удобный способ  организа-
ции виртуальной памяти. Указанные применения страничной орга-
низации памяти обсуждаются ниже.
     Страница  в 80386 имеет длину 4к байт. Этот размер нахо-
дится в согласии с промышленной тенденцией к увеличению длины
страниц и ведет к увеличению производительности по двум  нап-
равлениям.
     Во-первых,  он  обеспечивает хорошее отношение показаний
страниц в кэш при данном  объеме  кэш-памяти,  которая  может
быть в настоящее время реально размещена на кристалле, исходя
из  достигнутого уровня технологии. (Кэш-память 80386, распо-
ложенная на кристалле,  описывается  кратко).  Во-вторых,  4к
байтов являются эффективным размером блока для дисковых пере-
дач. Большинство операционных систем, работающих на машинах с
меньшей  длиной  страницы,  должны  группировать  страницы  в
"кластеры", чтобы сократить количество дисковых передач.
     Операционная система 80386 включает страничный механизм,
устанавливая бит PG в управляющем регистре 0 при помощи  при-
вилегированной  команды.  Когда  страничный механизм включен,
процессор транслирует линейный адрес в физический адрес,  ис-
пользуя   страничные  таблицы.  Страничные  таблицы  являются
частью таблиц дескрипторов сегментов. Так же как таблицы дес-
крипторов сегментов задачи определяют ее логическое  адресное
пространство,  страничные таблицы задачи определяют ее линей-
ное адресное пространство. Аналогично супер-мини-эвм и  боль-
шим  эвм  страничные  таблицы  80386 организованы по принципу
двухуровневой иерархии, как показано на рис.3-6. Каждая заад-
ча может иметь справочник системных таблиц. Системный регистр
CR3 процессора 80386 (база справочника системных таблиц) ука-
зывает на справочник  страничных  таблиц  работающей  задачи.
Процессор обновляет регистр CR3 при каждом переключении зада-
чи,  получая новый адрес задачи из TSS новой задачи. Справоч-
ник страничных таблиц имеет длину, равную  одной  странице  и
содержит элементы страничной таблицы описывают 1024 страницы.
Таким  образом, кацдая страничная таблица описывает 4м байта,
а оглавление может описать до 4г байт - максимальное адресное
пространство.
     На рис.3-6 в функциональных обозначениях показано как 80
786 транслирует линейный адрес в физический адрес, если стра-
ничная адресация включена. Процессор  использует  старшие  10
бит  линейного адреса как индекс в оглавлении. Выбранный эле-
мент оглавления содержит адрес страничной таблицы.  Процессор
добавляет средние 10 бит линейного адреса к адресу страничной
таблицы, чтобы найти элемент страничной таблицы, который опи-
сывает необходимую страницу. Добавляя младшие 12 бит линейно-
го  адреса  к  адресу  начала  страницы,  процессор  получает
32-битный физический адрес.
     Для того, чтобы сократить накладные  расходы,  возникшие
от  поиска  в  страничных таблицах, 80386 помещает справочную
информацию о 32-х последних страницах, использовавшихся им, в
специальную быструю память (кэш), находящуюся  внутри  самого
микропроцессора. Эта память называется перекодированным буфе-
ром  просмотра  исключений  (TLB).  Только в том случае, если
процессор не находит справочной  информации  для  страницы  в
TLB,  он обращается к справочникам и страничным таблицам, на-
ходящимся в памяти. Как правило, 98-99% адресных ссылок попа-
дают в TLB, не требуя обращений к основной памяти для  транс-
ляции.  Когда  необходимой  информации  в TLB не оказывается,
процессор заменяет наиболее старый элемент TLB новым  элемен-
том.  Принцип локальности ссылок предполагает, что новый эле-
мент скорее всего будет использоваться в будещем.
     Поскольку включение старничного механизма не увеличивает
времени трансляции адреса, оно мало влияет на время  исполне-
ния команды только при непопаданиях в TLB.
     На  рис.3-7  показаны  основные поля элемента страничной
таблицы (PTE). Элементы справочника страничных  таблиц  иден-
тичны  показанному  за тем исключением, что поле адреса расс-
матривается как физический адрес страничной таблицы, а не ад-
рес страницы.
          атрибуты
          присутствие ННННННННННННННННННННННННННННННННННННН»
          права ННННННННННННННННННННННННННННННННННННННН»   є
          привилегии НННННННННННННННННННННННННННННН»   є   є
          было обращение НННННННННННННННННННННН»   є   є   є
          была запись ННННННННННННННННННННН»   є   є   є   є
          определяется пользователем НН»   є   є   є   є   є
                                       V   V   V   V   V   V
ЙННННННННННННННННННННННННННННННННННННЛНННЛНННЛНННЛНННЛНННЛНН»
є           адрес страницы           є   є   є   є   є   є  є
ИННННННННННННННННННННННННННННННННННННКНННКНННКНННКНННКНННКННј
     
     Задачи могут совместно пользоваться отдельными страница-
ми или целыми страничными  таблицами.  Элементы  1  различных
страничных таблиц, указывающие на одну и ту же страницу , яв-
ляются  синонимами  один для другого, также как дескрипторы с
теми же самыми адресами являются синонимами друг для друга.
     В двух уровневой структуре страничных таблиц  процессора
80786  легче разделять страницы между задачами путем разделе-
ния целой страничной  таблицы.  Поскольку  адрес  разделяемой
страницы  в этом случае находится в одной страничной таблице,
операционной системы необходимо изменить только один  элемент
страничной таблицы, когда она перемещает эту страницу.
     
     3.3.4. Виртуальная память
     
     Виртуальная  память  позволяет  очень большим программам
или группам работать в значительно меньшем объеме  физической
памяти  без  использования техники оверлеев. Системы с вирту-
альной могут основываться или на сегментах, или на страницах.
В обоих случаях основная идея виртуальной  памяти  состоит  в
том,  чтобы  использовать  значительно более дешевую дисковую
память вместо полупроводниковой памяти. Операционная  система
в  случае  с  виртуальной памятью запоминает все сегменты или
страницы в большой области дисковой памяти, называемой  часто
"областью  обмена". Значительно меньшая физическая (реальная)
память содержит только наиболее часто  используемые  сегменты
или  страницы.  До тех пор, пока сегменты или страницы запом-
ненные на диске, используются нечасто, система с  виртуальной
памятью  будет вести себя также хорошо, как и система со зна-
чительно большей оперативной памятью, но за значительно мень-
шую цену. Ключевые архитектурные  свойства,  необходимые  для
эффектовного  использования виртуальной памяти, перечисляются
ниже:
     - бит для каждого сегмента или старницы, который говорит
процессору (или устройству управления  памятью),  имеется  ли
данный  сегмент  или страница в памяти, или необходимо загру-
зить его (ее) с диска;
     - механизм ловушки или особого  прерывания,  при  помощи
которого процессор может указать операционной системе о необ-
ходимости загрузки в память отсутствующего сегмента или стра-
ницы;
     -  перезапускаемые  команды, которые позволяют процесору
выбирать заново команду после того,как  операционная  система
загрузила только что неприсутствующую страницу в память и по-
метила ее присутствующей.
     
     Процессор  80786  имеет  все эти необходимые свойства, а
также другие, которые улучшают эффективность механизма управ-
ления виртуальной памятью. Как дескрипторы,  так  и  элементы
старничных  таблиц имеют бит присутствия и поэтому могут быть
использованы как основа для построения  виртуальной  памятью.
Обмен  сегментами  между  памятью  и диском являются разумным
подходом, когда сегменты относительно малы, как  это  было  в
16-битных архитектурах. Когда сегменты могут быть очень вели-
ки, как это возможно в 80786, обмен страницами обычно являет-
ся более эффективным приемом благодаря фиксированному размеру
страниц. В страничных системах операционная система распреде-
ляет  и  освобождает  память элементами размером со страницу,
называемыеми старничными кадрами; старница  ,  загружаемая  с
диска,  будет  подходить  любому  имеющемуся кадру. Поскольку
большинство из 32-битных систем с виртуальной памятью основы-
вается на механизме страниц, оставшаяся часть  этого  раздела
описывает страничный виртуальный механизм 80786.
     В общем случае операционная система со страничной вирту-
альной  памятью  пересылает  отсутствующие страницы с диска в
старничные кадры по запросам, т.е. когда она будет  оповещена
процессором, что команда обращается к отсутствующей странице.
Когда  количество свободных кадров становится маленьким, опе-
рационная система также передает страницы из страничных  кад-
ров  на диск, пытаясь изъять те страницы, которые вряд ли бу-
дут использованы в ближайшем будущем. Путем такого  "прозрач-
ного"  обмена  старницами  между страничными кадрами и диском
операционная система создает у прикладного программного обес-
печения иллюзию, что физическая  память  имеет  размер  очень
большой  области  обмена  на диске. Ниже подробно описывается
этот механизм.
     Когда в процессе трансляции логического адреса процессор
получает линейный адрес, который ссылается на  элемент  стра-
ничной  таблицы,  чей  бит  присутствия сброшен, в процессоре
возникает особая ситуация,  называемая,  условно,  страничной
ошибкой. Особые ситуации рассматриваются ниже в этом разделе,
но основным следствием этой ошибки является вызов процессором
процедуры операционной системы, называемой обработчиком стра-
ничной  ошибки.  При  входе  в  обработчик  страничной ошибки
Uправляющий регистр 2 содержит линейный  адрес,  связанный  с
отсутствующей  страницей. По этому адресу обработчик странич-
ной ошибки может найти относящийся к нему элемент  страничной
таблицы  путем  трансляции  линейного  адреса, как это делает
процессор. Отметим, что все остальные  биты,  за  исключением
бита  присутствия в элементе страничной таблицы, определяются
пользователем;  они  представляют  для  операционной  системы
удобное  место для запоминания дискового адреса отсутствующей
страницы. Определив дисковый  адрес  отсутствующей  страницы,
обработчик страничной ошибки может найти свободный страничный
кадр  и передать страницу с диска в этот кадр. Затем обработ-
чик старничной ошибки изменяет адресное поле в элементе стра-
ничной таблицы и бит присутствия, после чего  возвращает  уп-
равление программе, прерванной страничной ошибкой. После это-
го процессор автоматически заново выбирает команду, в которой
произошла  страничная ошибка, и результат будет таким же, как
если бы страница ранее находилась в памяти, когда команда на-
чала исполнятьяся в первый раз.
     Другие поля в  элементе  старничной  таблицы  процессора
80786  помогают  операционной  системе эффективно производить
действия, связанные с управлением виртуальной памятью.  Кроме
загрузки старниц по запросам операционная система должна под-
держивать  набор  свободных  страничных кадров, которые могут
быть распределены обработчиком страничных ошибок. Для  увели-
чения набора свободных старничных кадров операционная система
должна  знать,  какой  кадр освободить. Прежде чем освободить
кадр, операционная система должна записать  эту  страницу  на
диск,  если страница была модифицирована с тех пор, когда она
была загружена. Для того, чтобы помочь операционной системе в
этой длительности, архитектура 80786 имеет бит доступа и  бит
изменения в каждом элементе страничной таблицы, процессор из-
меняет  эти  биты  автоматически, для всех имеющихся в памяти
страниц 80786 устанавливает бит доступа всегда, когда  проис-
ходит чтение или запись в данной странице, иустанавливает бит
изменения,  когда происходит запись в эту страницу. Путем пе-
риодического просмотра и сброса  битов  доступа  операционная
система может определить страницы, которые давно не использо-
вались.  Кадры,  содержащие такие страницы, являются хорошими
кандидатами на освобождение, поскольку стрсницы, которые дав-
но не использовались, вряд ли будут использованы в  ближайшем
будущем.  Когда операционная система выбрала страницу для ос-
вобождения ее страничного кадра, страница не  должна  записы-
ваться на диск за исключением случая, когда процессор устано-
вил ее бит изменения.
     Каждый  элемент  старничной  таблицы  также содержит 3-х
битное поле, которое операционная система может  использовать
по  своему усмотрению. Операционные системы обычно используют
это поле для маркировки страниц специальными  знаками  такими
как, например, "закрыто для ввода/вывода".
     
     3.4. Защита
     
     Процессор  80786 обеспечивает несколько мрханизмов защи-
ты, которое операционная система  может  селективно  выбирать
для  своих  нужд. Одна из форм защиты - отделение пространств
адресов задач при  помощи  таблиц  дескрипторов  сегментов  и
старничных таблиц, обсуждалась выше. Это разделение эффектив-
но  предотвращает  налоложение кодов и данных различных прик-
ладных задач. В дополнение к изоляции  задач  друг  от  друга
80386 обеспечивает возможность защиты операционной системы от
прикладных  задач, защиту одной части операционной системы от
других частей и защиту задач от некоторых их собственных оши-
бок. Кроме того, что система защиты 80386 делает операционные
системы более надежными, она может упростить процесс отладки,
используя прерывания (ловушки) по ошибкам для конкретных  за-
дач.  Все свойства защиты процессора 80386 реализованы внутри
кристалла, поэтому действия по проверке защиты  не  вляют  на
производительность процессора.
     
     3.4.1. Привилегии
     
     Многие  из свойств защиты процессора 80386 базируются на
понятии иерархии привилегий. В любой момент привилегии задачи
эквивалентна уровню привилегий исполняемого кодового  сегмен-
та. В каждом дескрипторе сегмента имеется поле, которое опре-
деляет уровень привилегии связанного с ним сегмента, поле мо-
жет  принимать  0 - это наиболее привилегированный уровень, а
уровень привелегии 3 - наименее привилегированный.
     На рис.3-8 Показано, как  уровни  привилегии  процессора
80386 могут быть использованы для установки различных страте-
гий  защиты.  Система без защиты может быть реализована путем
простого помещения всех процедур в  сегмент  (или  сегменты),
чей  уровень  привилегии  равен 0. Традиционное разделение на
супервизора и пользователя может быть реализовано путем поме-
щения прикладной задачи в сегмент с уровнем привилегии  3,  а
процедур супервизора - в сегмент чей уровень привилегий равен
0.  Операционная система может также использовать уровни при-
вилегии 1 и 2, если это необходимо. Например, наиболее крити-
ческие и наиболее изменяемые процедуры  операционной  системы
(иногда  называемые  ядром  операционной системы) могут иметь
уровень привилегий 0. Уровень привилегий 0. Уровень  привиле-
гий 1 может быть использован для функций операционной системы
, которые являются менее критическими и более часто изменяют-
ся  или  расширяются, например, для драйверов устройств. Уро-
вень 2 может быть использован для использования  производите-
лями  оригинального  обурудования, такие производители ориги-
нального оборудования должны затем присваивать уровень приви-
легий 2 своим программам, оставляя уровень привилегий  3  для
конечных  пользователей. В этом случае программы производите-
лей оригинального оборудования защищены от программ  конечных
пользователей.  Операционная система защищена как от программ
производителей оригинального оборудования и программ конечных
пользователей, а ядро операционной системы защищено  от  всех
остальных  программ,  включая  ту часть операционной системы,
которая является предметом частных изменений.
     Как будет показано ниже, уровень привилегий задачи опре-
деляет, какие команды можно использовать и какое подмножество
сегментов и/или страниц в их адресном пространстве они  могут
обрабатывать  (исполнять). Процессор осуществляет проверку на
допустимость работы согласно уровню привилегии задачи и уров-
ню привилегии сегментов или страниц, которые являются операн-
дами команд. Любая попытка задачи использовать более привиле-
гированный сегмент или страницу приводит к  остановке  работы
процессора над командой и возникновению особой ситуации защи-
ты.  (Особые  ситуации  описываются в данном разделе ниже как
системные вызовы, которые обеспечивают управляемый  путь  для
вызова  менее привилегированными процедурами более привилеги-
рованных процедур).
     
     3.4.2. Привилегированные команды
     
     В дополнение к тому, какие  сегменты  и  страницы  могут
быть  использованы,  уровень прувулегии задачи определяет ко-
манды, которые задачей  могут  быть  использованы.  Процессор
80386  имеет  подмножество  команд, исполнение которых должно
быть тщательно проанализировано для того, чтобы предотвратить
серьезные разрушения системы. Все команды, которые  загружают
новые  значения в системные регистры, являются примерами при-
вилегированных команд. Только задача,  работающая  на  уровне
привилегий 0, может исполнять привилегированные команды.
     
     3.4.3. Защита сегментов
     
     Дескрипторы в регистрах LDT и GDT - задач определяют ло-
гическое адресное пространство задачи. Сегменты, определенные
в  этих  таблицах,  теоретически адресуемы, поскольку таблицы
дескрипторов обеспечивают информацией, необходимой для вычис-
ления адреса сегмента. Однако  адресуемый  сегмент  не  может
быть  доступен  для  некоторых операций, из-за дополнительных
проверок защиты, осуществляемых процессором 80386.  Процессор
проверяет  каждое  обращение  к сегменту (сгенерированное при
исполнении команды или при выборке  команды),  чтобы  опреде-
лить, что обращение согласуется с атрубутами защиты сегмента,
как это описано ниже.
     Привилегия.  Чтобы получить доступ к сегменту, программа
должна иметь, по крайней мере, такую же привилегию  как  сег-
мент.  Например, программа, работающая на уровне 3, может об-
ращаться только к тем сегментам, чей уровень привилегий также
равен 3, в то время, как программа, работающая на  уровне  0,
может обращаться ко всем сегментам в своем адресном простран-
стве.
     Граница.  Обращение  к сегменту должно находиться внутри
границ сегмента. Границы сегмента позволяют процессору  обна-
руживать  программные  ошибки,  такие как переполнение стека,
неверные указатели и индексы массивов, а  также  неправильные
адреса  вызовов  и  переходов.  В случаях, когда операционная
система может определить, что обращение за  границы  сегмента
не является ошибкой (переполнение стека является примером для
некоторых  систем), операционная система может расширить сег-
мент (например, путем добавления старницы к  нему)  и  начать
команду с начала.
     Тип.  Каждый дескриптор содержит поле типа, которое про-
цессор проверяет на соответствие команде, которую он исполня-
ет. Обычные сегменты имеют тип команд или данных  ,  позволяя
процессору,  например, обнаружить попытку записи в существую-
щий код, например, типы сегментов, непосредственно работающие
в прикладных программах - это  команды  и  данные.  Системные
дескрипторы  также имеют тип, так что процессор может, напри-
мер, проверить при переключении задач, что сегмент, указанный
в команде JUMP TSS, действительно является сегментом сосотоя-
ния задачи.
     Права. Дескриптор сегмента может быть  помечен  правами,
ограничивающими  операции,  которые можно производить со свя-
занным с ним сегментом. Сегменты команд могут  быть  помечены
как  исполняемый или читаемый. Сегменты данных могут быть по-
мечены как доступные толко для чтения или как  доступные  для
чтения и записи.
     Все  проверки,  описанные  выше,  зависят от целостности
дескрипторв. Если задача, исполняющая  прикладную  программу,
могла  бы изменять дескриптор, проверка ничего бы не гаранти-
ровала. По этой причине операционная система может ограничить
доступ к таблицам дескрипторов только для программ с  уровнем
привилегии 0.
     Заметим,  что  в  случае разделяемых сегментов различные
дескрипторы для одного и того же сегмента (т.е. синонимы) мо-
гут иметь различные атрибуты защиты, позволяя, например,  од-
ной  задаче  читать  и писать сегмент, в то время, как другой
только читать его. Синонимы также позволяют операционной сис-
теме преодолеть механизм защиты, если это необходимо,  напри-
мер для перемещения кодового сегмента.
     
     3.4.4. Защита страниц
     
     Системы,  которые широко не используют защиту сегментов,
вместо этого могут защищать страницы  (защита  старниц  может
быть  также  приложима  к отдельным чатям больших сегментов).
Аналогично дескриптору элемент страничной таблицы имеет набор
атрибутов защиты, процессор 80386 проверяет каждое  обращение
к странице на соответствие этим атрибутам.
     Элемент  страничной  таблицы может быть отмечен одним из
двух уровней привилегий: пользовательский или  супервизорный.
Пользовательский уровень соответствует уровню привилегий 3, а
супервизорные  страницы  могут быть досатупны только задачам,
работающим с уровнями привилегий 0, 1 или 2, пользовательская
страница может быть отмечена как доступная только для  чтения
или для чтения и записи.
     Процессор  80386 проверяет атрибуты защиты страниц после
того, как он удостоверился, что доступ находится в соответст-
вии с атрибутами сегмента. Таким образом, защита старниц  яв-
ляется удобным средством для операционной системы реализовать
дополнительную  защиту частей сегментов. Например, операцион-
ная сиситема может базопасно  заполнить  данные  операционной
системе,  относящиеся к задачам, такие как страничные таблицы
и дескрипторы файлов, в  сегменте  данных  задачи,  обозначив
страницы, где расположены эти данные, как супервизорные.
     
     3.5. Системные вызовы
     
     Большинство  операционных систем организуют свои функции
как набор процедур, которые могут быть вызваны задачами.  Не-
защищенная операционная система процессора 80386 может помес-
тить  свои  процедуры  и  прикладной  код в кодовой сегмент с
уровнем привилегии 0/ или в более  чем  один  такой  сегмент,
прикладная  задача  может  затем вызвать функцию операционной
системы обычной командной вызова. Такой подход является быст-
рым, но требует от прикладных задач, чтобы в них не было оши-
бок и чтобы они выполнялись правильно (как это, например, ре-
ализуется во встроенных системах). Ничто не запрещает задаче,
работающей на уровне привилегии 0, вызывать процедуры,  нахо-
дящиеся в адресе, который не является точкой входа в операци-
онную систему, ничто не запрещает такой задаче испортить дан-
ные  операционной  системы.  Для  защиты операционной системы
прикладные прогарммы и данные могут  быть  помещены  в  менее
привилегированные  сегменты.  Также как задача, работающая на
данном уровне привилегии, не может читать или писать данные в
сегмент с большим уровнем привилегии, задача также  не  может
непосредственно вызвать процедуру из более привилегированного
сегмента.
     Для того, чтобы позволить задаче, исполняющей команды из
менее  привилегированного  сегмента, сделать вызов защищенной
системной процедуры, операционная система  должна  определить
одну  или более входных точек. В процессоре 80386 эти входные
точки называются шлюзами (см.Рис.3-9).
     
           атрибуты
           счетчик двойных слов
           тип
           привилегия
           ЙНННЛНННЛННННННЛННННННННННЛНННННННННННННННННННННН»
           є   є   є      є          є бит наличия          є
           МНННКНННКННННННКННННННННННКНННННННННННННННННННННН№
           є   указатель точки входа                        є
           ИННННННННННННННННННННННННННННННННННННННННННННННННј
     
           Счетчик двойных слов относится только к шлюзам
     
     Имеются два типа шлюзов, которые могут быть использованы
для реализации входных точек операционной системы: шлюзы  ло-
вушек  и шлюзы вызовов. Два типа шлюзов, вообще говоря, похо-
жи, однако шлюз вызова позволяет сделать интерфейс операцион-
ной системы идентичным с интерфейсом обычной  процедуры.  Ис-
пользуя  шлюзы вызовов, программисты компиляторов и ассембле-
ров могут использовать общий набор соглашений для вызова  лю-
бых процедур, оставляя за процессором 80386 заботы о дополни-
тельной обработке, необходимой для изменения уровней привиле-
гии.
     Как  показано на рис.3-9, шлюз содержит логический адрес
входной точки и набор атрибутов. Наиболее  важный  атрибут  -
это  уровень привилегии шлюза. Уровень привилегии шлюза опре-
деляет уровни привилегии, которые  могут  использовать  шлюз,
для использования шлюза вызывающая процедура должна быть, как
минимум,  также привилегирована как шлюз. На рис.3-10 Показан
пример. В этой гипотической  системе  программа  пользователя
имеет  уровень привилегии 3, в то время как операционная сис-
тема разделена на 2 уровня. Ядро операционной системы работа-
ет на уровне привилегии 0, а менее критичные функции операци-
онной системы работают на уровне привилегии 1. (Уровень  при-
вилегии  2  не используется). В этой системе пользовательская
программа позволяет вызывать сервисные процедуры, но не ядро.
В соответствии с этим обеспечивает шлюз для сервисных  проце-
дур. Уровень привилегий этого шлюза равен 3, так что програм-
ма пользователя может вызывать процедуры через него. Присваи-
вая  шлюзу  ядра  уровень привилегиии 1, операционная система
позволяет сервисным процедурам вызывать  ядро,  но  запрещает
доступ к программе пользователя, которая менее привилегирова-
на,  чем  шлюз ядра. Таким образом операционная система может
применять шлюзы для аккуратного определения своих точек  вхо-
да,  включая уровни привилегии, необходимые для использования
этих точек входа. Для того, чтобы сделать функции  операцион-
ной  системы вызываемыми из всех задач, операционная система,
обычно помещает их шлюзы вызовов в глобальную  таблицу  деск-
рипторов.
     Для  осуществления  вызова через шлюз ловушки задача ис-
пользует команду прерывания, для осуществления  вызова  через
шлюз  вызова задача исполняет команду обычного межсегментного
вызова. Обе команды изменяют уровень привилегии заадчи  пере-
ходят  к  стеку,  определенному  (в  TSS задаче) для старшего
уровня привилегии. (Определенная система  должна  иметь  свой
собственный  стек  для  того,  чтобы гарантировать достаточно
стековое пространство для работы,  нельзя  верить  прикладным
задачам, что они имеют достаточное стековое пространство).
     Перед вызовом через стек вызова задача может заслать па-
раметры  в  свой  стек,  как она сделала бы это перед вызовом
другой процедуры. Процессор 80386 автоматически копирует  па-
раметры  в привилегированный стек (поле счетчика двойных слов
в шлюзе вызова говорит процессору 80386, сколько двойных слов
параметров необходимо скопирировать). Системы,  которые  осу-
ществляют  вызовы через шлюзы ловушек, могут пересылать пара-
метры в регистрах.
     
     3.6. Прерывания и особые ситуации
     
     Устройства генерируют прерывания, когда они требуют вни-
мания, в то время как команды могут вызвать особые  ситуации,
если при их использовании возникают особые условия, такие как
несуществующая страница. Типичное прерывание или особая ситу-
ация  требуют  быстрого  вмешательства программного драйвера,
который отвечает на прерывание или особую ситуацию. После то-
го, как драйвер вернет управление, 80386 возобнавляет  испол-
нение командного потока, который был прерван или который выз-
вал  особую  ситуацию. Поскольку прерывания и особые ситуации
весьма похожи, процессор 80386 рассматривает их унифицирован-
ным способом.
     Каждый источник прерывания и каждый тип особой  ситуации
имеет  идентофикационных  номер в диапазоне от 0 до 255, про-
цессор 80386 использует этот номер для  того,  чтобы  вызвать
обработчик, связанный с прерыванием или особой ситуацией. При
возникновении  особых  ситуаций  они распознаются процессором
80386, который определяет номера особых ситуаций, как это по-
казано в табл.3-1. Номера прерываний определяются  операцион-
ной  системой. Операционная система инициализирует программи-
руемый контроллер прерываний 8259а таким образом, что  каждый
источник прерываний связывается со своим номером. При появле-
нии прерывания 8259а передает процессору 80386 номер прерыва-
ния.  Команды  прерываний указывают свои номера своих операн-
дах. Заметим, что для совместимости с существующим и  будущим
оборудованием фирмы интел номера прерываний и особых ситуаций
от  0 до 71 не должны использоваться иначе, чем это указано в
табл.3-1. Все другие номера могут применяться  без  ограниче-
ний.
     
                                                 Таблица 3-1.
     
ЙННННННННННННННННЛНННННННННННННННННННННННННННННННННННННННННН»
є Номер          є     Описание                             є
МННННННННННННННННОНННННННННННННННННННННННННННННННННННННННННН№
є  0             є     деление на 0                         є
є  1             є     особая ситуация отладки              є
є  3             є     контрольная точка программы          є
є  4             є     переполнение                         є
є  5             є     нарушение гарниц массива             є
є  6             є     недопустимый код операции            є
є  7             є     сопроцессор отсутствует              є
є  8             є     двойная ошибка                       є
є 10             є     неправильный TSS                     є
є 11             є     сегментная ошибка                    є
є 12             є     переполнение стека сверху или снизу  є
є 13             є     нарушение общей защиты               є
є 14             є     страничная ошибка                    є
є 16             є     ошибка сопроцессора                  є
ИННННННННННННННННКННННННННННННННННННННННННННННННННННННННННННј
     3.6.1. Таблица дескрипторов
     
     Сгенерировав или получив номер прерывания или особой си-
туации,  процессор  80386 использует его как индекс в таблице
дескрипторов прерываний (IDT). IDT Может быть  расположена  в
любом месте памяти, операционная система инициализирует IDT и
загружает  ее адрес в регистр таблицы дескрипторов прерываний
(IDTR). Подобно GDT или LDT, IDT является вектором дескрипто-
ров, хотя шлюзы являются единственным типом дескрипторов, до-
пустимых в IDT. В IDT имеется один шлюз для каждого  обработ-
чика  прерывания и особой ситуации (IDT функционально подобна
таблице прерываний, имеющейся во многих архитектурах).
     Обработчик прерываний  или  особых  ситуаций  процессора
80386 может быть реализован в виде процедуры или задачи, ниже
кратко  обсуждаются достоинства этих двух способов. Процессор
80386 вызывает обработчик, организованный  в  виде  процедуры
так,  он выполняет системный вызов через шлюз. Для вызова об-
работчика, организованного в  виде  задачи,  процессор  80386
осуществляет  переключение  задач.  Тип шлюза IDT обработчика
говорит процессору, каким образом необходимо вызвать обработ-
чик (см. Табл.3-2). Как было указано, шлюзы прерываний и  ло-
вушек  функционально  подобны  шлюзам вызовов, за исключением
того что они заставляют 80386 запомнить регистр флагов в стек
обработчика. Они отличаются один от другого только состоянием
флага разрешения прерывания (IF) при входе  в  обработчик,  в
обработчик  прерываний  входят с запрещенными прерываниями, в
то время как в обработчик ловушки, который обычно использует-
ся для обработки особых ситуаций, входят без изменения запре-
та. В процессе входа в обработчик -  зада^у  80386  загружает
регистр  флагов  значением,  запомненным  в его TSS - задаче,
разрешая обработчику работать с разрешенными или запрещенными
прерываниями.
     
                                                 Таблица 3-2.
     
     Характеристики шлюзов прерываний и особых ситуаций
ЙННННННННННННЛННННННННННННННННННННННЛННННННННННННННННННННННН»
є Тип шлюза  є      Обработчик      є     Прерывания        є
МННННННННННННОННННННННННННННННННННННОННННННННННННННННННННННН№
є прерывание є      процедура       є      запрещены        є
є шлюз       є      процедура       є      разрешены        є
є задача     є      задача          є (флаг IF обработчика) є
ИННННННННННННКННННННННННННННННННННННКНННННННННННННННННННННННј
     
     Обработчики - процедуры  являются  подходящим  средством
для  программ,  которые должны работать в контексте (т.е. ис-
пользовать адресное пространство и значения регистров)  зада-
чи,   которая  прервана  или  вызвала  особую  ситуацию.  При
16-мгц-синхросигнале процедура входа  в  обработчик  занимает
3,6 мкс. Подобно любой другой процедура прерывания или особой
ситуации  имеет  доступ ко всем ресурсам работающей задачи: к
ее данным и коду, ее регистрам и стеку. Так и должно быть для
большинства особых ситуаций, поскольку в задаче возникла осо-
бая ситуация и может потребоваться доступ  к  данным  задачи,
чтобы  эту  особую  ситуацию разрешить. Например, обработчику
страни^ных ошибок необходимы  страничные  таблицы  работающей
задачи  для  того,  чтобы  найти дисковый адрес отсутствующей
страницы. В идеале прерывания должны обрабатываться задачами,
а не процедурами, так как прерывание , вообще говоря, не  от-
носится к задаче, которую оно прерывает. Более того, обработ-
чик  прерываний должен иметь свои собственные ресурсы (напри-
мер, свой собственный стек), а не внедрять  в  стек  какой-то
задачи,  которая  работала  в  момент появления прерывания. С
другой стороны переключение задач требует значительно больше-
го времени чем вызов процедуры (17 мкс вместо 3,6), поскольку
процессор запоминает и восстанавливает регистры при  переклю-
чении  задач.  Системы,  которые чрезвычайно чувствительны ко
времени реакции на прерывания, могут обрабатывать  прерывания
при помощи процедур.
     
     3.6.2. Особые случаи и регистры отладки
     
     Подобно большинству процесоров 80386 имеет команду конт-
рольной точки, которую можно использовать для вызова отладчи-
ка.  Однако отладочная аппаратура 80386 имеет форму регистров
отладки, показанных на рис.3-11. Регистры отладки поддержива-
ют контрольные точки данных  являются  важным  нововведением,
которое  может  сократить  время отладки на многие часы, т.К.
Например, позволяет установить, когда происходит непредусмот-
ренная запись в структуры данных.
     Регистры отладки также сокращают искажения в программах,
необходимые для записи команды точек останова в код, особенно
для программ, которые защищены от записи или разделены други-
ми задачами.
     Отладчик 80386 реализует в виде обработчика особой ситу-
ации с номером 1. Процессор может непосредственно вызвать от-
ладчик после исполнения любой команды (путем установки  флага
TF - флага ловушки пошагового исполнения), после переключения
определенной  задачи  или после появления условия точки оста-
нов, определенного осним из регистров отладки. Анализируя ре-
гистр статуса отладки, обработчик отладочной особой  ситуации
может определить, какая из причин его вызвала.
     Будучи вызван при переключении задач, отладчик может пе-
резагрузить регистры регистры отладки значениями, подходящими
для новой задачи.
     80386  Может  ожидать  появления одновременно до четырех
условий контрольных точек, вызывая обработчик отладочной осо-
бой ситуации про появлении одного из условий. Каждое  условие
контрольной  точки  определяется содержимым регистра отлдаки,
эти регистры могут быть загружены и запомнены при помощи при-
вилегированных форматов  команды  MOVE.  Условие  контрольной
точки  содержит 32-битный линейный адрес, 2-битное поле длины
и поле доступа, последние два элемента  указываются  в  полях
регистра  управления  отладкой DR7. Адрес условия контрольной
то^кой и длина формируют адресный диапазон, который контроли-
руется процессором при каждой ссылке на память. Поле  доступа
определяет  тип  доступа, для которого процесор может вызвать
особую ситуацию 1. Могут быть указаны 3 типа доступа:
     1) исполнение команды по указанному адресу;
     2) запись данных в диапазон адресов;
     3) чтение или запись данных в диапазоне адресов.
     
     3.7. Ввод/вывод
     
     Системы, базирующиеся на 80386, могут распределять  уст-
ройства  ввода/вывода  в пространство памяти процессора или в
отдельное пространство ввода/вывода. Устройствам  ввода/выво-
да,  распределенным  в  пространство памяти, можно обращаться
для чтения или записи, используя такие команды обращения, как
MOVE, OR или аналогичные. Устройства, распределенные в  памя-
ти,  могут быть защищены с помощью стандартного механизма за-
щиты сегмента и страницы процессора 808386.
     В дополнении к своему адресному  пространству  процессор
80386  имеет 64к-байтное  адресное пространство ввода/вывода.
Устройства, распределенные в  это  пространство,  управляются
командами ввода, вывода, ввода строки и вывода строки. Первые
две  команды  передаеют  байт,  слово, двойное слово в или из
цредит аедит EAX-регистра.  Последние  две  команды  передают
строку байтов, слов или двойных слов в память или из памяти.
     Команды ввода-вывода 80386 чувствительны к уровню приви-
легий.  В  регистре  флагов  имеется поле, называемое уровнем
привилегий ввода/вывода (IOPL), которое определяет  минималь-
ный  уровень  привилегий , на котором работающая задача может
исполнять команды ввода/вывода (IOPL загружается из TSS,  так
что  задачи  могут иметь различные IOPL). Например, если IOPL
задачи равен 1, то задача не может выдавать команды ввода-вы-
вода, исключая случаи, когда она работает на уровне  привиле-
гии  0 или 1. Механизм IOPL поддерживает операционные системы
с многоуровневой защитой, в которых,  например,  критичные  и
стабильные  процедуры ядра работают на уровне привилегии 0, а
более изменчивые процедуры ввода-вывода  работают  на  уровне
привилегии 1, в этом случае операционная система должна толь-
ко  установить  IOPL равным 1, когда она создает задачу, пос-
кольку IOPL характерен для задачи, те задачи,  которым  можно
доверять,  могут исполнять команды ввода-вывода на прикладном
уровне, позволяя тем самым непосредственно работать со специ-
альными устройствами, для которых не имеется драйвера  опира-
ционной системы.
     Для того, чтобы реализовать прямой доступ к памяти (DMA)
от устройств ввода/вывода, операционная система 80386 переда-
ет  физический  адрес контроллеру DMA и должна гарантировать,
что сегменты и/или страницы, ко которым происходит  обращение
при DMA-передачах , не будут преремещаться во время этой опе-
раци.  Один  из способов пометить страницы "фиксированными на
время ввода-вывода" - это использование одного из трех  битов
пользователя в страничной таблице.
     
     
     4. Архитектурная совместимость
     
     80386  совместим  на  уровне объектного кода с 80286 и с
8086. Хотя можно просто использовать 80386 как быстрый  80286
или  как очень быстрый 8086, их совместимость обладает доста-
точно большой  гибкостью.  Процессор  80386  может  выполнять
программы 80286 и 80386 параллельно, и, используя виртуальный
режим  86 процессора 80386, существующие программы 8086 могут
также исполняться параллельно. Таким образом при помощи 80386
становится возможным строить системы,  которые  могут  парал-
лельно  исполнять программы, написанные для различных поколе-
ний семейства микропроцессоров.
     
     4.1. Совместимость с 80286
     
     Архитектура 80286 является точным подмножеством архитек-
туры 80386. Так как процесор  80386  распознает  все  команды
80286,  регистры, дескрипторы и т.Д., То операционная система
80286 и прикладные программы могут быть перенесены на  анало-
гичное  оборудование, построенное на основе 80386 без измене-
ния хотя бы одного бита.
     Прямой перенос, упомянутый выше, является наиболее быст-
рым путем для того, чтобы запустить  существующие  программы,
написанные для 80286 на системе, построенной на 80386. С дру-
гой  стороны  операционные системы для 80386 могут разрабаты-
ваться так, чтобы они  поддерживали  существующие  прикладные
программы  для  80286, и, позволяя в то же время, новым прик-
ладным программам полностью использовать свойства архитектуры
80386 (например, 32-битные параметры и длинные  сегменты).  В
таких  гибких разработках новые прикладные программы вызывают
операционную систему непосредственно, передавая 32-битные па-
раметры. Возовы старых прикладных программ, которые организо-
ваныв 16-битном формате 80286, перехватываются и преоразуются
в 32-битный формат, а затем передаются в операционную  систе-
му.
     
     4.2. Режимы реального и виртуального 8086
     
     Процессор  80386  может  выполнить  объектные  программы
80386 водном из 2 режимов: реальном  режиме  или  виртуальном
режиме 86. 80386 Входит в реальный режим при сбросе. В реаль-
ном  режиме процессор обеспечивает быстрое исполнение без за-
щиты так, как на 8086. Многие операционные системы будут  пе-
реключаться  из реального режима в режим защиты после инициа-
лизации, но также возможно работать все время в реальном  ре-
жиме  8086.  Принципиальное  различие  между реальным режимом
80386 и действительным режимом 8086 заключается  в  скорости:
программы 8086, которые критичны по скорости исполнения (нап-
ример, использующие рассчитанные временыые циклы), могут пот-
ребовать  небольших  изменений  для  того, чтобы они работали
правильно в значительно более быстром реальном режиме  80386.
Но  основное  множество  программ 8086 будет работать без ка-
ких-либо трудностей, т.к.  они  работают  в  реальном  режиме
80286.
     Виртуальный  режим 86 устанавливает исполнительную среду
8086 внутри защищенной многозадачной среды 80386. В то время,
как реальный режим управляет всем, что делает процессор, вир-
туальный режим  86  может  применяться  в  избранных  задачах
80386.  Когда  процессор работает в виртуальном режиме 86, он
ведет себя, как в 8086, но поле переключения к нормальной за-
даче, процессор работает как 80386 (который, на  самом  деле,
может интерпретировать программы как для 80286, так и 80386).
Таким  образом  виртуальный  режим  86 позволяет операционной
системе поддерживать исполнение программ 8086, 80286 и  80386
одновременно.
     В  разделе  3 было описано, как сегмент состояния задачи
отражает состояние своего виртуального процессора. Флаг  VM86
в регистре флагов, который загружается из TSS, определяет ра-
ботающий  виртуальный  процессор  задачи  как 8086 или 80386.
Когда 80386 загружает свои регистры из TSS, у  которого  флаг
VM86  установлен,  процессор  входит  в виртуальный режим 86.
Когда при последующем переключении задачи, процессор загружа-
ет значения в регистр из TSS, у которого флаг  VM86  сброшен,
он выходит из виртуального режима 86. Таким образом от задачи
к задаче процессор эмулирует 80386 или 8086 согласно значению
флага  VM86.  80386  Также выходит из виртуального режима 86,
когда он выдает особую ситуацию или возникает  прерывание,  и
предоставляет полные ресурсы архитектуры обработчику прерыва-
ний и исобых ситуаций. При возврате из обработчика, вызванно-
го  в  виртульном режиме 86,80386 автометически возвращется в
виртуальный режим 86. Так как адресное пространство 8086 рав-
но 1 мбайту, логические адреса, генерируемые задачей в вирту-
альном режиме 86, попадает в первый мбайт линейного адресного
пространства 80386. Множество задач, работающих в виртуальном
режиме 86, могут пересекаться друг с другом, поэтому они  все
должны разделять младший мбайт линейного адресного пространс-
тва. Операционная система может использовать страничный меха-
низм  80386 для перемещения линейных адресных пространств за-
дач, работающих в виртуальном режиме 86, в различные  области
физического  адресного пространства. Используя страничный ме-
ханизм таким способом, не только предотвращают наложение  за-
дач,  работающих в виртуальном режиме 86, но позволяют опера-
ционной системе с виртуальной памятью обменивать страницы за-
дач, работающих в виртуальном режиме 86, как если бы они были
задачами 80386.
     Задача, работающая в виртуальном режиме 86, может выпол-
нять программу, которая была написана для выполнения на одно-
задачном персональном компьюторе. Такая программа  может  со-
держать  команды,  которые потенциально опасны, когда они вы-
полняются в многозадачной среде.  Например  позволяя  задаче,
работающей в виртуальном режиме 86, выполнять команду Oчистки
флага  прерываний, тем самым запрещая прерывания, можно оста-
новить всю систему. Для предотвращения таких нарушений  80386
выдает  особую ситуацию, когда задача, работающая в виртуаль-
ном режиме 86, пытается исполнять  команду  ввода/вывода  или
команду, относящуюся к прерываниям.
     Запрещение  исполнения  таких  команд защищает остальную
часть системы от задач, работающих в виртуальном  режиме  86,
но  не удовлетворяет потребности задач виртуального режима 86
в исполнении  команд.  Решение  заключается  в  моделировании
опасных  команд  в процедуре операционной системы, называемой
монитором виртуальной  машины.  Когда  вызывается  обработчик
особых ситуаций, он может проверить флаг VM86 в образе регис-
тров  флагов  в стеке, чтобы определить, является ли источник
особой ситуации задачей виртуального режима 86, в этом случае
обработчик особых ситуаций может вызвать монитор  виртуальной
машины,  который  может промоделировать команду и вернуть уп-
равление задаче виртуального режима 86. Следует заметить, что
монитор виртуальной машины моделирует только несколько команд
8086, и как моделируемые команды, так и те  команды,  которые
80386 исполняет непосредственно, выполняются значительно быс-
трее на 80386, чем на 8086.
     Работая  совместно,  80386  и монитор виртуальной машины
реализует полный набор команд 8086, и страничный механизм мо-
жет обеспечить каждую задачувиртуального режима 86 своим соб-
ственным защищенным адресным пространством. Однако, большинс-
тво задач 8086 требуют дополнительных ресурсов,  обеспечивае-
мых опеарционной системой и периферийным оборудованием. В ка-
честве  примера первого типа ресурсов можно привести файловую
систему, в качестве второго типа  можно  привести  контроллер
растрового  дисплея, работающего непосредственно под управле-
нием прикладной программы. Эти ресурсы могут присутствовать в
системе, основанной на 80386 в форме, отличной от топ, в  ко-
торой  они  присутствовали ранее в системах, для которых была
создана программа 8086, чтобы упростить работу для предостав-
ления этих ресурсов в различных средах, 80386 может  реализо-
вать ловушки при обращении к операционной системе и к перифе-
рийным  устройствам,  которые  делаются задачами виртуального
режима 86.
     Например, большинство операционных систем 8086 использу-
ют команду прерывания  для  реализации  вызовов  операционной
системы. 80386 Выдает особую ситуацию, когда задача виртуаль-
ного режима 86 пытается исполнить команду прерываний. Монитор
виртуальной  машины может затем протранслировать вызов опера-
ционной системы в вызов операционной системы 80386,  как  это
показано  на рис.4-1. Если IOPL задачи виртуального режима 86
установлен равным значению, меньшему 3, то 80386 будет анало-
гичным образом создавать ловушки при исполнении  всех  команд
ввода/вывода программой 8086. Страничный механизм 80386 может
быть  использован для перенаправления обращений к устройствам
ввода/вывода, распределенным в память, на другие адреса, если
это необходимо. Подобные обращения могут также вызвать особые
ситуации путем указания соответствующих страниц  памяти,  как
предназначенных  только для чтения (чтобы быть обнаруженным в
случае записи) или как  отсутствующих  (для  обнаружения  при
чтении или записи).
     
     
     5. Аппаратурная реализация
     
     Архитектура  процессора  80386,  описанная  в предыдущих
разделах, реализована более чем в  275000  транзисторах,  ис-
пользующих  технологический  процесс CHMOS III фирмы ИНТЕЛ. В
данном разделе кратко рассматривается  внутреннее  устройство
кристалла  80386 и более подробно сигналы, при помощи которых
80386 взаимодействует с другими компонентами.
     
     5.1. Внутренняя структура
     
     На рис.5.1. приведена обобщенная функциональная структу-
ра процессора 80386. Показанные 6  устройств  организованы  в
конвейерную  структуру,  которая  позволяя им рабитать парал-
лельно над различными комнадами или  над  различными  частями
одной  и то же команды. Устройство управления шиной управляет
передачами на шине для других устройств. Если ни одно из дру-
гих устройств не требуется шиной, устройство  предварительной
выборки  читает  следующее двойное слово комнадного потока из
памяти в  очередь  предварительной  выборки.  Таким  образом,
большинство  чтений байтов команды производится параллельно с
исполнением других команд во время свободных циклов шины. Ус-
тройство декодирования расшифровывает каждый  код  операции.,
Преобразовывает его в указатель на микрокод, которые реализу-
ет данную команду. Исполнительное устройство выполняет микро-
инструкции.  Исполнительное  устройство  может складывать два
32-битные регистра за 2 такта.  Аппаратура  умножения/деления
выполняет  32-битное  умножение  за время от 9 до 41 такта, в
зависимости от каличества значащих цифр, а 32-битное  деление
за  время от 38 до 42 тактов, в зависимости от того, являются
операнды знаковыми или беззнаковыми. Сдвиг, циклический сдвиг
и операции над полями битов выполняются при  помощи  быстрого
сдвигателя,  который может сдвигать до 64 бит за один такт. В
типичной смеси команд, которая включает  переходы  и  вызовы,
80386 исполняет команды со средней скоростью в 4,4 такта каж-
дая.
     
Исполнительное         Страничное           Устройство
устройство        устройство сегментации
ЙНННННННННННННННННН»  ЙНННННННННННН»  ЙНННННННННННННННННННН»
є                  є  є            є  є перекодировочный   є
є  регистры        є  є регистры   є  є буфер просмотра    є
є                  є  є сегментов  є  є исключений         є
МНННННННННННННННННН№  є            є  є                    є
є быстрый          є  є            є  є                    є
є сдвигатель       є  є            є  є                    є
МНННННННННННННННННН№  МНННННННННННН№  МНННННННННННННННННННН№
є умножение/делениеє  є транслятор є  є    транслятор      є
МНННННННННННННННННН№  є сегментов  є  є    страниц         є
єариф.лог.устр-во  МН>є            МН>є                    є
ИННННЛНННЛНННННННННј  ИНННННЛННННННј  ИНННННННННЛННННННННННј
     є   є                  є           ЙНННННННј
ЙННННј   є                  є           є   устройство
є        є                  є           є   управления шиной
є        є                  є           є   ЙНННННННННННННН»
є        є                  V           V   є   интерфейс  є
є        ИННННННННННЛННННННННННННННННННННННН№   шины       М»
є                   V                       ИННННННННННННННјє
є             ЙННННННННННННННН»     ЙННННННННННННННННН»     є
є             є  дешифратор   є<НННН№очередь предвари-є<ННННј
є             є               є     є тельной выборки є
є             МННННННННННННННН№     МННННННННННННННННН№
є             є   очередь     є     є узел предварите-є
ИННННННННННННН№   команд      є     є  ной выборки    є
              ИНННННННННННННННј     ИНННННННННННННННННј
              устройство
              декодирования
     
     Конвейерная  организация выборки команды, ее декодирова-
ние и исполнение на одном кристалле не является типичным  для
современных  микропроцесоров. С другой стороны помещение уст-
ройства управления памятью (MMU) на кристалл, содержащий кон-
вейерную структуру, также является  нововведением.  Включение
MMU  в процессорный кристалл улучшает производительность, ус-
коряет трансляцию адреса. За счет уменьшения  задержки  расп-
ространения  сигнала  (большинство  устройств  управления па-
мятью, организованных в виде  отдельных  кристаллов,  вводят,
как  минимум,  один такт ожидания на каждое обращение к памя-
ти). Еще одним средством ускорения работы процессора является
использование границ полутактов синхросигнала,  которые  дос-
тупны  внутри кристалла (частота синхронизации на входе 80386
вдвое выше частоты, используемой в кристалле). Устройство уп-
равления памятью 80386 состоит из  сегментного  устройства  и
устройства управления страницами, как показано на рис.5-1.
     Устройство  управления сегментами транслирует логические
адреса и проверяет каждый доступ  на  соответствие  атрибутам
защиты сегмента. Для большинства команд устройство управления
сегментами получает данные для трансляции и защиты из регист-
ров сегментов и дескрипторов, находящихся на кристалле 80386.
Устройство  управления  страницами включается или выключается
программами операционной системы. Когда устройство выключено,
линейные адреса, полученные устройством управления,  проходят
через  устройство  управления страницами без изменения. Когда
страничный механизм включен, устройство управления страницами
транслирует линейные адреса в физические адреса и  проверяет,
что  доступ  соответствует атрибутам страницы. Устройство уп-
равления страницами включает  32-элементный  перекадировочный
буфер  просмотра исключений (TLB), который запоминает необхо-
димую для трансляции информацию для некоторого числа страниц,
к которым происходили последние обращения. Используя TLB, ус-
тройство управления страницами может транслировать большинст-
во обращений к страницам  (обычно  98-99%)  без  обращения  к
страничным  таблицам, находящимся в памяти. При необходимости
устройство управления страницами генерирует циклы шины, необ-
ходимые для возврата старых элементов  TLB  в  их  страничные
таблицы  и для загрузки свободных мест в TLB элементами стар-
ничных таблиц, обращение к которым имеет место в текущей  ко-
манде.
     
     5.2. Внешний интерфейс
     
     На  рис.5-2.  показана  блок-схема типичной системы, ис-
пользующей процессор 80386. Это, фактически рабочее место ин-
женера-проектировщика.
     На рис.5-3 показан внешний интерфейс 80386 более подроб-
но, выводы процессора сгруппированы по функциональному назна-
чению. Ниже описаны сигналы, связанные с этими выводами.
     
     5.2.1. Синхросигнал
     
     Первые версии 80386 работают при  частоте  12,5  или  16
мгц. Сигнал синхронизации (CLK2) имеет частоту вдвое большую,
чем  частота кристалла. Генератор синхросигнала 82384 генери-
рует сигнал CLK2, который делится процессором 80386  на  два,
чтобы получить свою внутреннюю синхрочастоту.
     
     5.2.2. Шины данных и адреса
     
     Процессор  80386 имеет отдельные 32-битные шины адреса и
данных. Для  совместимости  с  существующим  оборудованием  и
драйверами устройств эффективная разрядность шины может дина-
мически  переключаться между 16 и 32 битами. Ниже этот вопрос
обсуждается более подробно.
     Система команд 80386 поддерживает 8-,  16-  и  32-битные
передачи.  Адресная  шина организована так, чтобы непосредст-
венно указывать байты данных, которые  являются  активными  в
данном цикле шины. Старшие 30 бит каждого адреса поступают на
выводы  A2-A31.  Выводы BE0-BE3 (разрешение байта) указывают,
какие байты шины данных относятся к текущей передаче. BE0 Со-
ответствует разрядам D0-D7, BE1 соответствует D8-D15  и  т.Д.
Эти  управляющие байты непосредственно соответствуют способу,
которым большинство 32-битных подсистем памяти  организованы,
и  устраняют  необходимость в аппаратуре декодирования байтов
(см.Рис.5-4). Если,  например,  необходимо  присоединиться  к
системной шине, которая требует наличия младших битов адреса,
A0 и A1 могут быть сгенерированы из BE0-BE3 при помощи 4 кла-
панов.
     Операнды  в  памяти  80386 не должны быть расположены на
каких-нибудь границах, однако производительность  повышается,
когда они попадают на границы адресов, которые кратны их раз-
меру в байтах. Это значит, что слова наилучшим образом распо-
лагаются  на  адресах, делащихся на два, а двойное слово - на
адресах, делящихся на 4. (Элементы длиннее 32 бит, такие  как
числа  с  плавающей запятой с двойной точностью, должны также
располагаться на 4-байтных границах для наилучшего быстродей-
ствия). 80386 Автоматически генерирует необходимое количество
циклов шины для передачи операндов, не располагающихся на оп-
тимальных границах, например, целое, расположенное в  двойном
слове,  запомненное в четном адресе, не делящимся на 4, пере-
дается за два 16-битных цикла шины.
     
     5.2.3. Определение циклов шины
     
     80386 информирует внешнее оборудование о том, что на ши-
не начинается нормальный цикл шины  путем  установки  сигнала
ADS  (статус адреса). В тот же самый момент процессор опреде-
ляет тип цикла шины с помощью сигналов W/R, D/C и  M/IO.  Эти
сигналы  отличают  чтение от записи, данные от кодов команд и
обращение к вводу/выводу от обращения к памяти, соответствен-
но.
     80386 Вырабатывает сигнал LOCK (захват шины)  для  муль-
типроцессорных применений и применений с несколькими ведущими
устройствами. Сигнал говорит другим ведущим устройствам шины,
что  процессор выполняет операцию с несколькими циклами шины,
которая не должна  прерываться.  80386  автоматически  выдает
LOCK, когда он изменяет дескриптор сегмента и страничные таб-
лицы,  во время циклов шины, связанных с процедурой подтверж-
дения,  и  когда  он  выполняет  команду  EXCHANGE.   Команда
EXCHANGE обеспечивает неделимую операцию "проверка и установ-
ка", которая является основным строительным элементом при ре-
ализации  семафоров в разделяемой памяти. Программисты, рабо-
тающие на языке ассемблера, могут захватить шину во время ис-
полнения некоторых других команд, если этим командам предшес-
твует префикс LOCK.
     
     5.2.4. Управление циклом шины
     
     По указанию внешнего оборудования 80386  может  реализо-
вать  два типа циклов шины: неконвейерный и конвейерный. Пер-
вый тип цикла обеспечивает 2-тактный доступ к  высокоскорост-
ным  кэш-памятям и локальным памятям любого объема (эффектив-
ность обращений к Kэш-памятям зависит от их размера по  отно-
шению  к  элементам  информации,  с которыми обращаются к ним
прикладные программы). Второй тип цикла шины  позволяет  низ-
коскоростным  памятям иметь больше времени для ответа на цикл
шин, позволяя процессору 80386 в то же время работать с  мак-
симальной  скоростью.  Внешнее оборудование может динамически
разрешать и запрещать  конвейеризацию  шины  путем  установки
сугнала  NA (следующий адрес), как описано ниже. Предоставляя
возможность динамического управления циклом  шины,  процессор
80386 позволяет инженеру-разработчику использовать комбинации
из различных компонентов (элементов) памяти, которые удовлет-
воряют  критериям  стоимости, необходимого объема и требуемой
производительности, а также приспосабливать  проект  для  ис-
пользования  перспективных  технологий при создании микросхем
памяти.
     Процессор 80386 выводит тип цикла шины, как описаны  вы-
ше, а внешнее оборудование сигнализирует, что оно ответило на
цикл  шины путем установки сигнала READY. Если, как это часто
бывает, другой запрос шины ожидает внутри  процессора  80386,
когда  сигнал READY уже установлен, процессор выводит следую-
щий тип цикла шин. Если конвейеризация отключена, минимальное
время между адресами и данными составляет два такта.  Внешнее
оборудование,  которое  не может ответить за два такта, может
удлинить цикл шины путем удержания сигнала READY в неактивном
состоянии, т.е. путем вставления тактов ожидания в цикл. Если
32-битные циклы шины исполняются друг за  другом,  то  макси-
мальная  пропускная  способность шины 80386 составит 32 мега-
байта в секунду при частоте синхросигнала 16 мгц или 25 мега-
байт в секунду при частоте 12,5 мгц.
     Благодаря  внутренней  конвейеризации  процессор   80386
очень  часто  знает адрес и тип следующего цикла шины, прежде
чем внешнее оборудование ответит  на  текущий  цикл.  Внешнее
оборудование  может использовать свойство внутренней конвейе-
ризации адреса 80386 для получения более  раннего  доступа  к
следующему  типуцикла  шины. Конвейеризация адреса может дать
внешнему оборудованию время, равное трем тактам между адресом
и данными, в то время как для процессора  пропускная  способ-
ность шины останется равной двум тактам.
     Конвейеризация  адреса  наилучшим образом используется в
системах с перемежающейся адресацией, которая может  отвечать
на доступ в различных блоках памяти параллельно. Устанавливая
сигнал  NA,  внешнее оборудование может запрашивать 80386 вы-
дать тип следующего цикла шины, как только он станет известен
внутри процессора, а не ожидать сигнала READY (см.Рис.5-6).
     
     5.2.5. Динамическое управление разрядность шины
     
     В дополнение к управлению типами циклов шины  подсистема
памяти  (и  ввода/вывода)  также  может динамически управлять
разрядностью шины  данных.  Динамическое  управление  разряд-
ностью шины позволяет:
     1)  произвольно комбинировать 16- и 32-битные подсистемы
памяти,  программное  обеспечение  также  может  осуществлять
32-битные передачи независимо от того, имеет оно доступ к 16-
или к 32-разрядной памяти;
     2)  достаточно  просто  подсоединятся к 16-битным шинам,
таким как шина MULTIBUS I;
     3) реализовывать совместимость с 16-битными периферийны-
ми устройствами (и их драйверами),  регистры  которых  обычно
располагаются на 16-разрядных, а не на 32-разрядных границах.
     Устанавливая  сигнал "разрядность шины 16" (BS16), внеш-
нее оборудование может проинструктировать процессор, чтобы он
выполнил текущую передачу только на  16  младших  битах  шины
данных.  Если  сигнал BS16 установлен, а обращение 32-разряд-
ное, процессор 80386 принимает сигнал BS16 позже в цикле  ши-
ны,  позволяя вне[нему оборудованию установить его толцко для
соответствующих типов памяти и ввода/вывода.
     
     5.2.6. Статус процессора и управление
     
     Другое ведущее устройство шины (процессор или интелиген-
тное периферийное устройство, такое как пдп-контроллер),  мо-
жет  запросить  использования локальной шины 80386 путем выс-
тавления сигнала HOLD. Процессор подтверждает  передачу  шины
установкой сигнала HLDA (подтверждение захвата) в конце теку-
щего цикла шины (если он имел место), затем он подавляет свой
следующий  цикл  шины  до  тех пор, пока сигнал HOLD не будет
снят. Когда процессор 80386 освобождает шину для другого уст-
ройства, он поддерживает сигнал HLDA в активном состоянии,  а
остальные свои выводы - в высокоимпедансном состоянии, элект-
рически изолируясь от системы.
     Прерывания  80386  классифицируются как маскируемые и не
маскируемые, маскируемые прерывания поступают на вход процес-
сора INTR (запрос прерывания), а прерывание второго  типа  на
вход NMI (запрос немаскируемого прерывания). Программы опера-
ционной  системы  могут  игнорировать вход INTR путем очистки
флага разрешения прерывания. Процессор всегда принимает  сиг-
нал  на входе NMI, многие системы используют этOт входдля то-
го, чтобы информировать процессор об аварии системы по  пита-
нию или глобальной системной ошибке.
     Запросы  маскируемых прерываний обычно подсоединяются ко
входу INTR через один или несколько программируемых  контрол-
леров прерываний 8259а (пкп). Каждый 8259а может обрабатывать
до  8 источников прерываний, несколько контроллеров 8259а мо-
гут быть каскадированы, чтобы обеспечить  прием  сигналов  от
максимум  64  различных  источников  прерываний. Операционная
система инициализирует каждый 8259а при помощи идентифицируе-
мого номера (вектора), обеспечивая тем самым для каждого вхо-
да прерываний свою программу обработки.  8259А  предоставляет
этот  номер процессору 80386 в ответ на цикл шины процессора,
связанной с подтверждением прерывания. 80386 Использует  этот
нимер  для вызова обработчика, предназначенного для ответа на
прерывание.
     Установка сигнала RESET  ставит  процессор  в  начальное
состояние  (в  реальный  режим с запрещенными прерываниями) и
заставляет  его  выбрать  команду   из   физического   адреса
FFFFFFF04.
     
     5.2.7. Управление сопроцессором
     
     Процессор  80386  посылает команды и операнды в числовой
сопрпцессор 80287 или 80387 путем выполнения циклов ввода/вы-
вода шины к  резервным  адресам  выше  обычного  64-кбайтного
пространства  ввода/вывода  . Числовой сопроцессор может быть
выбран высоким уровнем сигнала на линии A31 при низком сигна-
ле М/I0. 80386 Использует различные протоколы связи для  каж-
дого  сопроцессора,  посылая  16-битные  величины  в  80287 и
32-битные величины в 80387. Процессор 80386  знает  в  момент
сброса, присутствует ли 80387, программное обеспечение иници-
ализации может проверить наличие сопроцессора 80287.
     Сопроцессор  устанавливает сигнал BUSY если он выполняет
команду. 80386 Не посылает следующую команду сопроцессору  до
тех  пор,  пока сигнал BUSY - низкий. Программное обеспечение
может синхронизировать процессор 80386 с сопроцессором, выда-
вая команду WAIT, которая приостанавливает 80386 до тех  пор,
пока  сигнал BUSY остается неактивным. Сопроцессор устанавли-
вает сигнал ERROR, когда он обнаруживает особую ситуацию, ко-
торая должна быть обработана операционной системой,  в  ответ
на  это  80386  вызывает обработчик особых ситуаций числового
сопроцессора, выдавая особую ситуацию 7. Вывод PEREQ  исполь-
зуется  для  реализации  сопроцессорного протокола процессора
80386.
                                   
     6. Сведения о функционировании
     
     6.1 Введение
     Характерной чертой 80386 является наличие простого функ-
ционального интерфейса для взаимосвязи с внешними модулями.
     В  80386 имеются две раздельные шины: шина адреса и шина
данных. Шина данных - 32-разрядная и двунаправленная. В боль-
шинстве применяемых модулей для высококоростной локальной ши-
ны используются 32 разряда адреса, передаваемого по  адресной
шине,  из  них  2  младших  разряда дешифрируются в 4 сигнала
строба данных (каждый из этих сигналов разрешает или запреща-
ет передачу соответствующего байта данных),  а  остальные  30
разрядов представляют собой двоичный код адреса. Для управле-
ния  обменом  по шине адреса и шине данных используются соот-
ветствующие управляющие сигналы.
     Изменяемая ширина (разрядность)  шины  данных  позволяет
процессору взаимодействовать как с 32-х, так и с 16-разрядны-
ми внешними шинами в синхронном режиме (см. 6.3.4).
     Если  передача  информации  состоит из нескольких циклов
обмена, каждый из которых требует  16-разрядной  ширины  шины
данных,  то  все равно 80386 в каждом цикле автоматически вы-
полнит необходимую процедуру  установления  разрдности  шины.
*-разрядные  периферийные  устройства могут быть подключены к
32-х или 16-разрядным шинам, при этом  их  производительность
не снижается. В 80386 применяется новый режим конвейерной ад-
ресации,  который  обеспечивает  в случае 32-х и 16-разрядной
шин наиболее рациональное использование памяти, особенно  это
проявляется в очень напряженном режиме работы с ресурсами па-
мяти  (когда доступ к памяти требуется большому числу абонен-
тов).
     Режим конвейерной адресации по сравнению с другими  спо-
собами  адресации  значительно сокращает время нахождения ин-
терфейса памяти в состоянии ожидания (см. 6.4.2). Конвейерную
адресацию целесообразно применять в системах, имеющих в своем
составе память с расслоением. В системах с  рабочей  частотой
16  МГц,  включающих  в себя память с расслоением со временем
обращения 100 Нс (динамические ОЗУ), можно  совсем  исключить
состояние  ожидания,  применяя  конвейерную  адресацию. Когда
внешние модули потребуют режим конвейерной  адресации,  80386
сформирует  адрес  и  определит  длительность  цикла шины для
предстоящего цикла шины (если позволяют внутренние  ресурсы),
даже  если в настоящий момент процессор ожидает подтверждение
в текущем цикле.
     Однако, неконвейеризированный способ адресации  идеально
подходит  для  устройств, в состав которых входит кэш-память,
так как высокое быстродействие кэш-памяти позволяет  работать
в  неконвейеризированном режиме. Для обеспечения максимальной
гибкости системы на основе совмещения циклов конвейерный спо-
соб адресации применяется в синхронных системах.
     Цикл шины процессора является основным средством переда-
чи информации из системы в процессор или из процессора в сис-
тему.
     Минимальная длительность цикла передачи данных по шине в
80386 состовляет два периода тактовой частоты. Поскольку про-
цессор 80386 имеет 32-разрядную шину данных и рабочую частоту
16 МГц, то следовательно максимальная пропускная  способность
80386  составляет  32  Мбайт/сек. Однако, длительность любого
цикла шины может быть увеличена, если в этом цикле задержива-
ется выдача подтверждения обмена от внешнего модуля. В  соот-
ветствующий  момент времени подтверждение выдается путем фор-
мирования сигнала на входе READY (ГОТОВ) процессора 80386.
     80386 может терять доступ к своим локальным шинам, пере-
давая управление ими другим  устройствам,  например,  каналам
прямого доступа к памяти. При этом, за исключением единствен-
ного  выхода  HLDA,  формируемого 80386, обеспечивается почти
полная изоляция процессора от  системы.  Изолязия  процессора
необходима при передаче управления тестовому оборудованию или
в  отказоустойчивых применениях (в многопроцессорных системах
для изоляции отказавшего процессора и замены его другим).
     В данном разделе  представлены  сведения  об  интерфейсе
процессора.  Во-первых,  описано назначение и функции выводов
процессора (см. 6.2 Описание сигналов). Кроме  того,  описаны
изменения  сигналов  в  течение циклов шины (см. 6.3 Механизм
обмена по шине, 6.4 Описание функционирования шины и 6.5 Дру-
гие сведения по функционированию).
     
     6.2 Описание сигналов
     6.2.1 Введение
     Подраздел начинается с краткого описания входных  и  вы-
ходных  сигналов 80386, объединенных в функциональные группы.
Отметим, что наличие символа # после названия сигнала означа-
ет, что активное состояние сигнала - состояние низкого  уров-
ня.  И  наоборот,  когда  такого символа # нет после названия
сигнала, то сигнал активен при высоком уровне.
     Пример обозначения сигнала: M/IO#
             - Высокий уровень означает обращение к памяти.
             - Низкий уровень означает обращение к  устройст-
               вам ввода/вывода.
     В описаниях сигналов встречаются иногда обозначения вре-
менных  параметров,  таких  как "t25 Reset/Setup Time" (Время
сброса при включении питания) и "t26 Reset Hold Time"  (Время
удержания сигнала сброса). Значения этих параметров приведены
в табл.7-4 и табл.7-6.
     
     6.2.2 Синхросигнал (CLK2)
     CLK2  обеспечивает  основную синхронизацию работы 80386.
Эта тактовая частота делится пополам для того, чтобы  сформи-
ровать внутреннюю процессорную тактовую частоту, используемую
при  выполнении  команд внутри процессора. Внутренний синхро-
сигнал состоит из двух фаз: "фазы один" и " фазы два". Каждый
период частоты. На рис.6-2 показано соотношение двух  синхро-
сигналов. Если необходимо, фаза внутреннего синхросигнала мо-
жет быть синхронизирован от такого отрицательного фронта сиг-
нала  RESET,  который  обеспечит заданные времена установки и
удержания, t25 и t26 (setup and hold times).
     
     6.2.3 Шина данных (D0-D31)
     Двунаправленные с тремя состояниями  линии  шины  данных
обеспечивают  перемещение  данных от 80386 к другим устройст-
вам. Наличие высокого уровня напряжения на входах/выходах ши-
ны данных обозначает наличие кодов логической единицы "1"  на
этих выводах. Шина данных может передавать данные как на 32-,
так  и  на 16-разрядные шины благодаря тому, что есть возмож-
ность изменения размера шины данных; размер шины данных опре-
деляется значением входного сигнала BS16# (см. параграф 6.2.6
Шина управления).
     Для правильного выполнения операций считывания  сигналов
с шины данных требуется обеспечение необходимых значений вре-
мени  установки  t21 и времени удержания t22 считываемых дан-
ных.
     При любой операции записи (включая циклы останова и вык-
лючения) 80386 всегда передает все 32  разряда  данных,  даже
если в текущем цикле размер шины обмена равен 16 разрядам.
     
     6.2.4 Шина адреса (BE0#-BE3#, A2-A31)
     Эти  выходы  с тремя состояниями обеспечивают физическую
адресацию памяти или адресацию устройств  ввода/вывода.  Шина
адреса  обеспечивает  физическое  пространство адресов памяти
объемом 4 гигабайта (от 00000000H до FFFFFFFFH) и пространст-
во адресов ввода/вывода объемом 64 килобайта (от 00000000H до
0000FFFFH) для обращения к устройствам ввода/вывода. Для  пе-
редачи  сигалов  ввода/вывода,  автоматически формируемых для
обеспечения взаимодействия 80386 с сопроцессором, использует-
ся  адресное  пространство  ввода/вывода  от   800000F8H   до
800000FFH,  так  как  для обращения к сопроцессору необходимо
совпадение двух условий: наличие высокого  уровня  напряжения
на линии адреса А31 и наличие низкого уровня на линии M/IO#.
     Значения  сигналов  стробов  данных BE0#-BE3# определяют
соответственно те байты  32-разрядной  шины  данных,  которые
участвуют в текущей передаче. Это особенно удобно для взаимо-
действия с внешней аппаратурой.
     BE0# определяет участие в обмене разрядов D0-D7,
     BE1#                 -"-                  D8-D15,
     BE2#                 -"-                  D16-D23,
     BE3#                 -"-                  D24-D31.
     Количество  стробов  данных BE0#-BE3#, находящихся в ак-
тивном состоянии, определяет размер  операнда  обмена  (1,2,3
или 4 байта) (см. параграф 6.3.6 Выравнивание данных).
     Когда  выполняется цикл записи в память или в устройство
ввода/вывода, и передаваемый операнд занимает только  старшие
16  разрядов  шины данных (D16-D31), копия этого операнда од-
новременно передается по  младшим  16  разрядам  шины  данных
(D0-D15).  Это дублирование выполняется для обеспечения опти-
мального режима записи на 16-разрядные шины. Процедура дубли-
рования записываемых данных зависит от значений стробов  дан-
ных BE0#-BE3#.
           
                                                 Таблица 6-1.
     
        Зависимость дублирования записываемых данных
                    от значений BE0#-BE3#
ЙНННННННННННННННННННЛННННННННННННННННННННННННННННЛННННННННННН»
єСтробы данных 80386єЗаписываемые данные 80386   єЕсть ли ав-є
МННННЛННННЛННННЛННННОНННННННЛНННННННЛННННННЛННННН№томатичес- є
єBE3#єBE2#єBE1#єBE0#єD24-D31єD16-D23єD8-D15єD0-D7єкое дубли- є
є    є    є    є    є       є       є      є     єрование?   є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.євыс.євыс.єниз.єнеопр. єнеопр. єнеопр.є  А  є      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.євыс.єниз.євыс.єнеопр. єнеопр. є  В   єнеопрє      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.єниз.євыс.євыс.єнеопр. є   С   єнеопр.є  С  є      да   є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
єниз.євыс.євыс.євыс.є   D   єнеопр. є  D   єнеопрє      да   є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.євыс.єниз.єниз.єнеопр. єнеопр. є  В   є  А  є      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.єниз.єниз.євыс.єнеопр. є   С   є  В   єнеопрє      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
єниз.єниз.євыс.євыс.є   D   є   С   є  D   є  С  є      да   є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
євыс.єниз.єниз.єниз.єнеопр. є   С   є  В   є  А  є      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
єниз.єниз.єниз.євыс.є   D   є   С   є  В   єнеопрє      нет  є
МННННОННННОННННОННННОНННННННОНННННННОННННННОНННННОННННННННННН№
єниз.єниз.єниз.єниз.є   D   є   С   є  В   є  А  є      нет  є
ИННННКННННКННННКННННКНННННННКНННННННКННННННКНННННКНННННННННННј
                                                              
     Обозначения: D=логические записываемые  данные  в  байте
                    D24-D31;
                  C=              -"-                D16-D23;
                  B=              -"-                D8-D15;
                  A=              -"-                D0-D7.
     
     
     6.2.5 Сигналы определения типа цикла шины
           (W/R#, D/C#, M/IO#, LOCK#)
     
     Эти  выходы  с тремя состояниями определяют тип текущего
цикла шины. В зависимости от значения W/R# все циклы  подраз-
деляются  на  циклы записи и циклы чтения. D/C# разделяет все
циклы на циклы обмена данными  и  циклы  обмена  управляющими
сигналами.  M/IO# отличает циклы обращения к памяти от циклов
обращения к устройствам ввода/вывода. По сигналу LOCK# разли-
чаются циклы с блокированной шиной.
     Основными сигналами определения типа цикла шины являются
W/R#, D/C# и M/IO#, так как эти  сиганлы  принимают  действи-
тельное значение одновременно с установлением активного уров-
ня  сигнала ADS# (выход строба адреса). Действительное значе-
ние сигнала LOCK#  устанавливается  тогда,  когда  начинается
цикл шины (причем, цикл с конвейерной адресацией) и после ус-
тановления   активного  уровня  сигнала  ADS#  (см.  параграф
6.4.3.4 конвейерная адресация).
     Точное соответствие типов циклов шины значениям сигналов
W/R#, D/C# и M/IO# приведено в табл.6-2. Отметим одну  комби-
нацию  сигналов  W/R#, D/C# и M/IO#, которая никогда не может
быть получена при активном уровне сигнала ADS#  (однако,  эта
комбинация,  которая обозначена как "запрещенная" может иметь
место в нерабочих состояниях шины, при неактивном уровне сиг-
нала ADS#). Поскольку действительные значения сигналов M/IO#,
D/C# и W/R# определяются временем действия сигнала ADS#, то в
другое время  для  оптимального  использования  дешифрирующей
схемы можно использовать и запрещенную комбинацию.
           
                                                 Таблица 6-2.
     
                 Определение типа цикла шины
ЙНННННННЛНННННННЛНННННННЛНННННННННННННННННННННННННННННЛНННННН»
є M/IO# є D/C#  є W/R#  є   Тип цикла шины            єБлоки-є
є       є       є       є                             єрованає
є       є       є       є                             єли ши-є
є       є       є       є                             єна?   є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
єнизкий єнизкий єнизкий є Подтверждение прерывания    є да   є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
єнизкий єнизкий євысокийє Запрещенная                 є да   є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
єнизкий євысокийєнизкий є Чтение данных из устройства є нет  є
є       є       є       є ввода/вывода                є      є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
єнизкий євысокийєвысокийє Запись данных в устройство  є нет  є
є       є       є       є ввода/вывода                є      є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
євысокийєнизкий єнизкий є Чтение команды из памяти    є нет  є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
євысокийєнизкий євысокийє Останов:       Выключение:  є нет  є
є       є       є       є Адрес=2        Адрес=0      є      є
є       є       є       є НННННННН       ННННННННННН  є      є
є       є       є       є (BE0#Выс.      (BE0#Низк    є      є
є       є       є       є  BE1#Выс.       BE1#Выс.    є      є
є       є       є       є  BE2#Низк.      BE2#Выс.    є      є
є       є       є       є  BE3#Выс.       BE3#Выс.    є      є
є       є       є       є  A2-A31Низк.)   A2-A31Низк.)є      є
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
євысокийєвысокийєнизкий є Чтение данных из памяти     є Неко-є
є       є       є       є                             є торыеє
є       є       є       є                             є циклыє
МНННННННОНННННННОНННННННОНННННННННННННННННННННННННННННОНННННН№
євысокийєвысокийєвысокийє Запись данных в память      є Неко-є
є       є       є       є                             є торыеє
є       є       є       є                             є циклыє
ИНННННННКНННННННКНННННННКНННННННННННННННННННННННННННННКННННННј
     6.2.6 Сигналы управления шиной
     
     6.2.6.1 Введение
     Нижеперечисленные  сигналы  позволяют процессору опреде-
лять начало цикла шины, а также дают возможность другим  уст-
ройствам  системы  управлять конвейерной адресацией, размером
шины данных и определять конец цикла шины.
     
     6.2.6.2 Строб адреса (ADS#)
     Этот входной сигнал с тремя состояниями на входе  указы-
вает  на  то  что на выводах 80386 установлены действительные
значения сигналов, определяющих тип цикла  шины,  и  сигналов
адреса  (W/R#, D/C#, M/IO#, BE0# - BE3# и A2-A31). Сигнал ADS
устанавливается в течение тактов Т1 и Т2 состояний шины  (до-
полнительную  информацию о состояниях шины см. 6.4.3.2 Некон-
вейеризированная адресация и 6.4.3.4 Конвейерная адресация).
     
     6.2.6.3 Сигнал подтверждения (READY#).
     Этот вход указывает на то, что текущий цикл шины  завер-
шен,  и  те  байты, участие которых в цикле обмена определено
значениями BE0#-BE3# и BE16#, приняты или переданы.  Когда  в
течение  цикла чтения или цикла подтверждения прерывания фор-
мируется активный уровень сигнала READY#, 80386 "защелкивает"
входные данные и завершает цикл. Когда сигнал READY# формиру-
ется в цикле записи, процессор завершает цикл шины.
     Сигнал READY# игнорируется в первом  такте  всех  циклов
шины,  затем  в каждом такте состояние READY# опрашивается до
тех пор, пока не установится активный уровень сигнала READY#.
READY# должен быть сформирован  для  подтверждения  в  каждом
цикле  шины, включая циклы отображения останова и отображения
выключения. Для правильной работы время установки t19 и время
удержания t20 сформированного сигнала READY# должны иметь оп-
ределенные необходимые значения (См.  все  параграфы  раздела
6.4 Описание функционирования шины).
     
     6.2.6.4 Запрос следующего адреса (NA#)
     Этот сигнал используется для запрашивания адреса в режи-
ме  конвейерной  адресации.  Этот  вход сообщает процессору о
том, что система готова принять из 80386 новые значения  сиг-
налов BE0#-BE3#, A2-A31, W/R#, D/C# и M/IO#, даже если завер-
шение текущего цикла не подтверждено сигналом READY#.
     Если  80386  обнаружит на входе NA# активный уровень, он
выдает на шину следующий адрес, обеспечив  внутреннюю  подго-
товку к следующему запросу шины (см. параграф 6.4.2 Конвейер-
ная адресация и 6.4.3 Циклы чтения и записи).
     
     6.2.6.5 Указатель 16-разрядной шины (BS16#)
     
     Благодаря  сигналу BS16# осуществляется непосредственная
связь 80386 с 32-разрядной и 16-разрядной шинами данных.  Ус-
тановка  активного  уровня этого входа приведет к тому, что в
текущем цикле шины обмен будет производиться только по  млад-
шей половине шины данных (D0-D15) в соответствии со значения-
ми  сигналдов  BE0#  и  BE1#.  Дополнительное влияние сигнала
BS16# (установленного в активное состояние) не проявится, ес-
ли в текущем цикле сформированы активные уровни только сигна-
лов BE0# или BE3#, действие сиганала BS16# (активного уровня)
заставит процессор 80386 выполнить  необходимые  переключения
для  правильной  передачи  старшего(их)  байта(ов)  по линиям
D0-D16.
     Если операнд занимает обе половины шины данных и BS16# в
активном состоянии, то 80386  автоматически  выполнит  второй
16-разрядный цикл шины. Для правильной работы время установки
t17  и время удержания t18 сигнала BS16# должны иметь опреде-
ленные необходимые значения.
     Циклы ввода/вывода, автоматически выполняемые 80386  для
взаимосвязи  с  сопроцессором,  не  требуют установки сигнала
BS16#. Сопроцессоры типа 80287 и  80387  анализируют  входной
сигнал  ERROR#  сразу  после  отрицательного  фронта  сигнала
RESET. 80386 обменивается только  16-разрядными  посылками  с
80287,  а в случае взаимодействия 80386 с сопроцессором 80387
обмен производится только 32-разрядными посылками. Таким  об-
разом,  значение  BS16# влияет на циклы с участием 80287, а в
течение циклов с участием 80387 сигнал BS16# должен поддержи-
ваться на неактивном уровне.
                
     6.2.7 Сигналы арбитража шины
     
     6.2.7.1 Введение
          
     В этом разделе описывается механизм, благодаря  которому
процессор передает управление своими локальными шинами другим
активным   абонентам,  запрашивающим  урпавление  шиной  (см.
6.6.1).
     6.2.7.2 Запросы на захват шины (HOLD)
     Этот выход указывает на  то,  что  каким-то  устройствам
кроме 80386 требуется управление шиной.
     Сигнал HOLD должен поддерживаться в активном состоянии в
течение  всего времени, пока любое другое устройство является
владельцем локальной шины. Сигнал HOLD игнорируется во  время
действия  RESET. Если сигнал RESET появится во время действия
сигнала HOLD, то более приоритетный  сигнал  RESET  установит
шину в нерабочее состояние быстрее, чем установится состояние
подтверждения  захвата  шины  (состояние высокого сопротивле-
ния).
     Процессор срабатывает по фронту  сигнала  HOLD  и,  пока
HOLD  поддерживается в активном состоянии, постоянно анализи-
рует уровень этого сигнала. Вход HOLD  -  синхронизированный.
Для  правильной  работы  время  установки t23 и удержания t24
должны всегда иметь определенное необходимое значение.
     
     6.2.7.3 Подтверждение захвата шины (HLDA)
     Формирование активного уровня на выходе  HLDA  указывает
на  то, что 80386 передает управление своей локальной шиной в
ответ на установление сигнала HOLD и  переходит  в  состояние
подтверждения захвата шины.
     Состояние  подтверждения захвата предполагает почти пол-
ную изоляцию процессора. Сигнал HLDA в этом состояние - един-
ственный сигнал, выдаваемый 80386.  Другие  выходные  сигналы
или двунаправленные сигналы (D0-D31, BE0#-BE3#, A2-A31, W/R#,
D/C#,  M/IO#, LOCK# и ADS#) переключаются в третье (высокоим-
педансное) состояние, поэтому запросившее шину устройство мо-
жет захватить их. К некоторым  сигнальным  линиям  желательно
подсоединить  фиксирующие  резисторы для того, чтобы избежить
ложное срабатывание по этим сигналам, когда они не формируют-
ся текущим владельцем шины (см. 7.2.3 Рекомендации по  выбору
и  применению  резисторов).  Кроме  того,  один  используемый
фронт, который может быть сформирован на входе NMI  во  время
состояния подтверждения захвата, запоминается с тем, чтобы он
был  проанализирован  и  обработан после снятия сигнала HOLD.
Кроме обычного использования состояния подтверждения  захвата
при взаимодействии 80386 с контроллерами ПДП (прямого доступа
к памяти) или активными периферийными устройствами, состояние
почти полной изоляции процессора особенно удобно использовать
в  режиме  тестирования  системы, когда тестовое оборудование
управляет системой, а также в отказоустойчивых системах.
                
     6.2.8 Сигналы интерфейса с сопроцессором
     
     6.2.8.1 Введение
     В следующих параграфах этого раздела дано описание  сиг-
налов, предназначенных для интерфейса с арифметическим сопро-
цессором. Эти сигналы, дополняя сигналы шины данных, шины ад-
реса и сигналы определения типа цикла шины, управляют взаимо-
действием 80386 с его сопроцессором 80287 или 80387.
     
     6.2.8.2 Запрос сопроцессора (PEREQ)
     Активный уровень этого сигнала указывает на то, что соп-
роцессор требует, чтобы в ответ на его запрос операнды данных
были переданы в/из памяти.
     Активный  уровень  этого  входного  сигнала указывает на
запрос сопроцессора на передачу  процессором  80386  операнда
данных в/из памяти, в ответ на этот запрос 80386 передает ин-
формацию  между  сопроцессором  и  памятью. Поскольку в 80386
хранится код операции, выполняемой сопроцессором, 80386  осу-
ществляет  запрошенную передачу данных в заданном нарпавлении
и по заданному адресу памяти. 80386 анализирует и срабатывает
по уровню сигнала PEREQ. Сигнал PEREQ может быть  асинхронным
по отношению к CLK2.
     
     6.2.8.3 Сопроцессор занят (BUSY#)
     
     Активный уровень этого сигнала указывает на то, что соп-
роцессор  еще выполняет заданную текущую инструкцию и пока не
может принять другую инструкцию.
     Когда 80386 встречает любую инструкцию сопроцессора, ко-
торая оперирует с арифметическим стеком (стеком сопроцессора)
(т.е. инструкции загрузки, "POP" - инструкции (убрать в стек)
или арифметические операции), или инструкцию  ожидания  WAIT,
он сразу автоматически анализирует состояние входного сигнала
BUSY# и будет просматривать его до тех пор, пока BUSY# не пе-
реключится в неактивное состояние.
     Такой  просмотр  входного  сигнала  BUSY#  предотвращает
преждевременную выдачу следующей инструкции во время выполне-
ния сопроцессором предыдущей инструкции.
     Инструкция сопроцессора FNINIT и FNCLEX могут  быть  вы-
полнены даже при наличии активного уровня на входе BUSY#, так
эти  инструкции  используются  для  инициализации  и прерыва-
ния-сброса сопроцессора.
     80386 анализирует и срабатывает по уровню сигнала BUSY#.
Сигнал BUSY# может быть асинхронным по отношению к CLK2.
     Сигнал BUSY# служит еще одной цели. Если во время  отри-
цательного фронта сигнала RESET на входе BUSY# имеется сигнал
низкого  уровня, то 80386 выполнит процедуру самодиагностиро-
вания (см. 6.6.3 Функционирование шины в течение и после дей-
ствия сигнала RESET). Если же в этот момент сигнал BUSY#  бу-
дет иметь высокий уровень, то самодиагностирование выполнять-
ся не будет.
     
     6.2.8.4 Ошибка сопроцессора (ERROR#)
     
     Этот  входной сигнал указывает на то, что при выполнении
сопроцессором предыдущей инструкции им  был  сформирован  код
ошибки, немаскируемый управляющим регистром сопроцессора. При
выполнении сопроцессором инструкции процессор 80386 автомати-
чески  анализирует  входной сигнал ERROR#, и если установится
активный уровень сигнала ERROR#, то 80386 вырабатывает преры-
вание 7, чтобы обратиться к программам обработки ошибок.
     Некоторые инструкции сопроцессора, в основном те,  кото-
рые сбрасывают флаги арифметических ошибок в сопроцессоре или
сохраняют  состояние  сопроцессора, исполняются без выработки
процессором 80386 прерывания 7, даже если установлено  актив-
ное  состояние  сигнала ERROR#. К таким инструкциям относятся
FNINIT, FNCLEX, FSTSW, FSTSWAX, FSTCW, FSTENV, FSAVE, FESTENV
и FESAVE.
     80386  анализирует  и  срабатывает  по  уровню   сигнала
ERROR#.  Сигнал  ERROR# может быть асинхронным по отношению к
CLK2.
     Сигнал ERROR# выполняет еще одну  функцию.  Если  низкий
уровень сигнала ERROR# установится не позже, чем через 20 пе-
риодов тактовой частоты CLK2 после отрицательного фронта сиг-
нала  RESET,  и  сохранится таким по меньшей мере до тех пор,
пока 80386 не начнет свой первый цикл шины, то это  указывает
на  то,  что  в  системе  используется сопроцессор типа 80387
(разряд ET в регистре CR0 автоматически устанавливается в 1).
В обратном случае в  системе  используется  сопроцессор  типа
80287  или  не используется никакой (разряд ET в регистре CR0
автоматически устанавливается в 0). См. 6.6.3  Функционирова-
ние  шины в течение и после действия сигнала RESET. Изменение
сигнала на выходе ERROR# влияет на установку только бита  ET.
Программно устанавливаются необходимые значения битов EM и MP
в  регистре CR0. Следовательно, для различения случая наличия
в системе сопроцессора типа 80287 от случая, когда в  системе
вообще нет сопроцессора, необходимо программное задание соот-
ветствующего  значения бита EM в регистре CR0 (единичное зна-
чение бита EM устанавливается в случае, когда в  системе  нет
сопроцессора). Если анализ изменения состояния сигнала ERROR#
показал  наличие  в  системе 80387 (сигнал ERROR установлен в
низкое состояние после сброса), но позднее  программно  уста-
новлено  единичное  состояние  бита EM (EM=1), то 80386 ведет
себя так, как если бы в системе не было сопроцессора.
     
     6.2.9 Сигналы прерывания
     
     6.2.9.1 Введение
     В этом разделе описываются входные сигналы, которые  мо-
гут прерывать или приостанавливать выполнение процессором те-
кущего набора инструкций.
     
     6.2.9.2 Маскируемый запрос прерывания (INTR)
     Активный  уровень этого входного сигнала обозначает зап-
рос на обслуживание прерывания, которое может быть замаскиро-
вано битом IF флагового регистра Flag Register 80386. В ответ
на входной сигнал INTR 80386 выполняет два цикла  подтвержде-
ния  прерывания и в конце второго цикла "защелкивает" 8-бито-
вый вектор прерывания, принятый по линиям D0-D7, чтобы  иден-
тифицировать источник прерывания. 80386 анализирует уровень и
срабатывает  по  уровню  сигнала INTR. Сигнал INTR может быть
асинхронным по отношению к CLK2. Для того,  чтобы  гарантиро-
вать  опознание  процессором маскируемого запроса прерывания,
активный уровень сигнала INTR должен поддерживаться до начала
первого цикла подтверждения прерывания.
     
     6.2.9.3 Немаскируемый запрос прерывания (NMI)
     Этот входной сигнал определяет  запрос  на  обслуживание
прерывания,  которое  не может быть программно замаскировано.
Запрос немаскируемого  прерывания  всегда  обрабатывается  по
программе, адрес начала которой указан в элементе (позиции) 2
таблицы  прерываний.  Когда  обрабатывается NMI, то благодаря
фиксированному значению позиции таблицы прерываний, соответс-
твующей NMI, циклы подтверждения прерывания не выполняются.
     80386 анализирует и срабатывает по положительному фронту
сигнала NMI. Сигнал NMI может быть асинхронным по отношению к
сигналу CLK2. Чтобы гарантировать опознание сигнала NMI, пос-
ледний должен иметь неактивный уровень по меньшей мере в  те-
чение  8-и  периодов  CLK2,  и затем должен быть установлен и
поддерживаться активный уровень сигнала NMI по меньшей мере в
течение 8-и периодов CLK2.
     Как только начинается обработка запроса прерывания  NMI,
другие  запросы NMI обрабатываться не будут до появления оче-
редной инструкции IRET, которая означает конец процедуры обс-
луживания прерывания NMI. Однако, если все-таки раньше  этого
времени снова будет сформирован активный уровень сигнала NMI,
то  один  положительный  фронт сигнала NMI будет запомнен для
последующей обработки после выполнения  очередной  инструкции
IRET.
     
     6.2.9.4  Сигнал сброса (установки в исходное состояние)
              (RESET)
     Этот  входной сигнал останавливает выполнение любой опе-
рации и переводит 80386 в состояние, известное как  состояние
сброса.  Сброс 80386 производится установкой активного уровня
сигнала RESET в течение 15-и или более периодов CLK2  (за  78
или  более  периодов  CLK2  до запроса самодиагностирования).
Когда установлен активный уровень сигнала RESET,  сигналы  на
всех  остальных входных выводах игнорируются, а шинные выводы
переводятся в нерабочее состояние как  показано  в  табл.5-3.
Если  одновременно установлены активные уровни сигналов RESET
и HOLD, то более приоритетным будет сигнал  RESET.  Сброс  по
сигналу  RESET  будет произведен, даже если 80386 находился в
состоянии подтверждения захвата до установки RESET.
     80386 анализирует и срабатывает по уровню (активному или
неактивному) сигнала RESET. Сигнал RESET может быть асинхрон-
ным по отношению с CLK2. Если  необходимо,  фаза  внутреннего
синхросигнала процессора, а также целое состояние 80386 могут
быть  полностью  синхронизированы  с  внешними  схемами, если
обеспечить необходимые для этого значения  времени  установки
t25  и  времени  удержания  t26 отрицательного фронта сигнала
RESET.
           
                                                 Таблица 6-3.
     
            Состояние выводов (неработающей шины)
              в течение действия сигнала RESET
ЙНННННННННННННННННННННННННЛННННННННННННННННННННННННННННННННН»
є Обозначение выводов     є  Уровни сигналов во время сбросає
є                         є  RESET                          є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є          ADS#           є            Высокий              є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є         D0-D31          є            Третье состояние     є
є                         є            (высокий импеданс)   є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є       BE0#-BE3#         є            Низкий               є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є         A2-A31          є            Высокий              є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є          W/R#           є            Высокий              є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є          D/C#           є            Высокий              є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є         M/IO#           є            Низкий               є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є         LOCK#           є            Высокий              є
МНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННН№
є          HLDA           є            Низкий               є
ИНННННННННННННННННННННННННКНННННННННННННННННННННННННННННННННј
                                                             
     6.2.10   Список сигналов
    
     В табл.6-4 перечислены сигналы процессора 80386 и приве-
дены некоторые их характеристики.
     
                                                 Таблица 6-4.
      
                     Перечень сигналов 80386
ЙННННННННЛНННННННННННННЛННННННННЛНННННЛНННННННЛННННННННННННН»
єНазваниеє   Функции   єАктивныйєВход/єВход   є Переключает-є
є сигналає   сигнала   є уровеньєвыходєсинхронє ся ли выход є
є        є             є        є     єный    є в третье    є
є        є             є        є     єили    є (высокоимпе-є
є        є             є        є     єасинхроє дансное)    є
є        є             є        є     єнный   є состояние воє
є        є             є        є     єпо от- є время дейст-є
є        є             є        є     єношениює вия HLDA?   є
є        є             є        є     єк CLK2 є             є
є        є             є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є CLK2   єСинхросигнал є   -    єВход є    -  є      -      є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єD0-D31  єШина данных  єВысокий єВход/є    S  є     да      є
є        є             є        євыходє       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єE0#-BE3#єСтробы данныхєНизкий  єВыходє    -  є     да      є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єA2-A31  єШина адреса  єВысокий єВыходє    -  є     да      є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є W/R#   єУказатель ре-єВысокий єВыходє    -  є     да      є
є        єжима записи  є        є     є       є             є
є        єили чтения   є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є D/C#   єУказатель об-єВысокий єВыходє    -  є     да      є
є        ємена данными є        є     є       є             є
є        єили упр. сиг-є        є     є       є             є
є        єналами       є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єM/IO#   єУказатель об-єВысокий єВыходє    -  є     да      є
є        єращения к па-є        є     є       є             є
є        ємяти или В/В є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є LOCK#  єБлокировка   єНизкий  єВыходє    -  є     да      є
є        єшины         є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є  ADS#  єСтроб адреса єНизкий  єВыходє    -  є     да      є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є  NA#   єЗапрос сле-  єНизкий  єВход є    S  є     да      є
є        єдующего адре-є        є     є       є             є
є        єса           є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є BS16#  є16-разрядная єНизкий  єВход є    S  є     да      є
є        єширина шины  є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єREADY#  єПередача     єНизкий  єВход є    S  є     да      є
є        єподтвержденияє        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є HOLD   єЗапрос на за-єВысокий єВход є    S  є     да      є
є        єхват шины    є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є HLDA   єПодтверждениеєВысокий єВыходє    S  є     нет     є
є        єзахвата шины є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є PEREQ  єЗапрос сопро-єВысокий єВход є    A  є     нет     є
є        єцессора      є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є BUSY#  єСопроцессор  єНизкий  єВход є    A  є     нет     є
є        єзанят        є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
єERROR#  єОшибка сопро-єНизкий  єВход є    A  є     нет     є
є        єцессора      є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є  INTR  єМаскируемый  єВысокий єВход є    A  є     нет     є
є        єзапрос пре-  є        є     є       є             є
є        єрывания      є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є  NMI   єНемаскируемыйєВысокий єВход є    A  є     нет     є
є        єзапрос преры-є        є     є       є             є
є        євания        є        є     є       є             є
МННННННННОНННННННННННННОННННННННОНННННОНННННННОННННННННННННН№
є RESET  єСброс        єВысокий єВход єA(при- є     нет     є
є        є             є        є     ємечаниеє             є
ИННННННННКНННННННННННННКННННННННКНННННКНННННННКНННННННННННННј
     
     Примечание: Если фаза внутреннего синхросигнала  процес-
сора  должна быть синхронизирована с внешними схемами, то не-
обходимо обеспечить определенные значения  времени  установки
t25  и  времени  удержания  t26 отрицательного фронта сигнала
RESET.
     6.3  Механизм обмена по шине
     
     6.3.1  Введение
     Все передачи данных занимают один или более циклов шины.
Операнды логических данных длиной в  байт,  слово  и  двойное
слово  могут  быть переданы без выравнивания физических адре-
сов. Любой байт может быть краевым байтом (первым или послед-
ним) передаваемого операнда, но при этом для  передачи  невы-
ровненного  операнда может потребоваться два или даже три фи-
зических цикла шины. (См.6.3.4 Изменяемый размер шины  данных
и 6.3.6 Невыровненные операнды.)
     Сигналы адреса 80386 предусмотрены для упрощения аппара-
туры внешней системы. Старшие биты адреса реализованы линиями
A2-A31. Младшие биты адреса в виде BE0#-BE3# обеспечивают вы-
борку  соответственно  четырех  байтов 32-битной шины данных.
Благодаря этому физический операнд  представляется  в  каждом
цикле в наиболее удобной форме.
     Активные   уровни   выходных   сигналов  стробов  данных
BE0#-BE3# устанавливаются, если соответствующие им байты шины
данных будут принимать участие в предстоящем цикле шины,  как
указано  в табл.6-6. Изменяя комбинацию установленных стробов
данных можно осуществить любой вариант выборки  смежных  бай-
тов, но никакая комбинация BE0#-BE3# не позволит выбрать бай-
ты, разделенные двумя или тремя нефункционирующими байтами.
     Адресные  биты  A0-A1  физического адреса операнда могут
быть образованы, когда необходимо (например, для  интерфейсов
Multibus  I и Multibus II), как функция установленных стробов
данных. Соответствие значений A0 и A1 сигналам BE0#-BE3# при-
ведено в табл.6-6. Логические схемы формирования A0 и A1 при-
ведены на рис.6-3.
           
                                                 Таблица 6-6.
     
          Стробы данных и соответствующие им байты
                     данных и операндов
ЙННННННННННННННННЛНННННННННННННННННННННННННННННННННННННННННН»
єСтробы данных   є     Соответствующие сигналы шины данных  є
МННННННННННННННННОНННННННННННННННННННННННННННННННННННННННННН№
є   BE0#         є   D0-D7 (байт 0 - младший байт)          є
МННННННННННННННННОНННННННННННННННННННННННННННННННННННННННННН№
є   BE1#         є   D8-D15 (байт 1)                        є
МННННННННННННННННОНННННННННННННННННННННННННННННННННННННННННН№
є   BE2#         є   D16-D23 (байт 2)                       є
МННННННННННННННННОНННННННННННННННННННННННННННННННННННННННННН№
є   BE3#         є   D24-D31 (байт 3 - старший байт)        є
ИННННННННННННННННКННННННННННННННННННННННННННННННННННННННННННј
                                                 Таблица 6-6.
     
              Формирование шины A0-A31 из шины
                     BE0#-BE3# и A2-A31
ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
є                  Адресные сигналы 80386                   є
МННННННННННННННННННННННННННЛНННННННЛНННННННЛНННННННЛНННННННН№
є    A31 ......... A2      є BE3#  є BE2#  є BE1#  є  BE0#  є
МННННЛНННННННННННННННННННННОНННННННОНННННННОНННННННОНННННННН№
є    є  Физический адрес   є       є       є       є        є
МННННОННННННЛННННЛННННЛНННН№       є       є       є        є
єA31 є .....є A2 є A1 є A0 є       є       є       є        є
МННННОННННННОННННОННННОННННОНННННННєНННННННОНННННННОНННННННН№
єA31 є .....є A2 є 0  є 0  є  X    є   X   є   X   є Низкий є
МННННОННННННОННННОННННОННННОНННННННОНННННННОНННННННОНННННННН№
єA31 є .....є A2 є 0  є 1  є  X    є   X   єНизкий є Высокийє
МННННОННННННОННННОННННОННННОНННННННОНННННННОНННННННОНННННННН№
єA31 є .....є A2 є 1  є 0  є  X    єНизкий єВысокийє Высокийє
МННННОННННННОННННОННННОННННОНННННННОНННННННОНННННННОНННННННН№
єA31 є .....є A2 є 1  є 1  єНизкий єВысокийєВысокийє Высокийє
ИННННКННННННКННННКННННКННННКНННННННКНННННННКНННННННКННННННННј
     Рис.6-3. Логические схемы формирования A0, A1 как  функ-
                    ций сигналов BE0#-BE3#
     K - MAP for A1 Signal - карта Карно для сигнала A1.
     
     Каждый  цикл  шины  включает  в себя по меньшей мере два
состояния шины. Каждое состояние  шины  занимает  по  времени
один период тактовой частоты процессора. Простейший цикл шины
может быть дополнен состояниями шины, которые называются сос-
тояниями ожидания. См. 6.4 Описание функционирования шины.
     Поскольку  для выполнение цикла шины требуется как мини-
мум два состояния шины (что равняется двум периодам  тактовой
частоты процессора), то максимальная скорость передачи данных
между  внешними устройствами и 80386 равна одному 4-байтовому
двойному слову в каждые два периода тактовой частоты  процес-
сора,  что  соответствует максимальной пропускной способности
шины 32 мегабайт/сек (80386-16 работает на  тактовой  частоте
16 МГц).
           
     6.3.2  Пространства памяти и ввода/вывода
     В  течение циклов шины возможно обращение к пространству
памяти или к пространству ввода/вывода. Периферийные устройс-
тва в системе могут быть отнесены либо к пространству памяти,
либо к пространству ввода/вывода, или и к тому  и  к  другому
пространствам. Как показано на рис.6-4, физические адреса па-
мяти находятся в диапазоне от 00000000H до FFFFFFFFH (4 гига-
байта),  а  адреса ввода/вывода - в диапазоне от 00000000H до
0000FFFFH (64 килобайта), необходимом для адресации устройств
ввода/вывода. Отметим адреса ввода/вывода, используемые в ав-
томатически выполняемых для взаимосвязи с сопроцессором  цик-
лах  ввода/вывода.  Эти  адреса  от 800000F8H до 800000FFH не
входят в диапазон вышеуказанных адресов для программной адре-
сации устройств ввода/вывода и позволяют  легко  сформировать
сигнал выборки сопроцессора, используя сигналы A31 и M/IO#.
     
FFFFFFFFHЙННННННННННН»           Й Н Н Н Н Н »
         є           є           є           є
         є           є
         є           є           є неадресуе-є
         є           є               мое
         є           є           є           є
         є           є
         є           є           є           є
         є           є  800000FFHМННННННННННН№  Сопроцессор
         є Физичес-  є  800000F8Hє           є  (80387 или
         є  кая      є (Примеч.1)МННННННННННН№    80287)
         є  память   є           є           є
         є           є             Неадресуе-
         є 4 гига-   є           є   мое     є
         є   байта   є
         є           є  0000FFFFHМННННННННННН№ Программно-
         є           є           є 64 Кбайта є -адресуемое
         є           є           є           є пространство
00000000HИНННННННННННј  00000000HИНННННННННННј ввода-вывода
                                                                 
                                                                 
                                                                 
                                                           
          Пространство            Пространство
          физической              ввода/вывода
          памяти
     
     Примечание:  Так как в течение автоматически выполняемых
циклов взаимосвязи с  сопроцессором  устанавливается  высокий
уровень сигнала A31, то установка единичного уровня A31 и ну-
левого  уровня строба формирования сигала выборки сопроцессо-
ра.
     Рис.6-4  Пространства физической памяти и ввода/вывода
     
     6.3.3  Организация памяти и ввода/вывода
     Ширина магистрали данных от 80386 к пространствам памяти
и ввода/вывода может составлять 32 бита или 16 бит. В  случае
32-разрядной  ширины  магистрали  пространства  памяти и вво-
да/вывода организованы соответственно как массивы  физических
32-разрядных  двойных  слов.  Каждое двойное слово памяти или
ввода/вывода состоит из 4-х индивидуально адресуемых  (с  по-
мощью  последовательных адресов байтов) байтов. Самый меньший
(из четырех) адрес байта относится к  сигналам  D0-D7;  самый
больший - к сигналам D24-D31.
     80386  имеет  такой  сигнал управления шиной, как BS16#,
который обеспечивает правильную взаимосвязь  с  16-разрядными
пространствами  памяти и ввода/вывода, организованными в виде
последовательности 16-битных слов. Циклы обмена с  16-разряд-
ными и 32-разрядными устройствами памяти или ввода/вывода мо-
гут встречаться в любой последовательности, так как состояние
сигнала BS16# анализируется в течение каждого цикла шины. См.
6.3.4  Изменяемый  размер шины данных. Сигналы стробов данных
BE0#-BE3# позволяют обращаться к отдельным байтам  при  любой
структуре  памяти  или ввода/вывода (32-разрядной или 16-раз-
рядной).
      
     6.3.4  Изменяемый размер шины данных
      
     Изменяемый размер шины данных  -  отличительная  особен-
ность 80386, обеспечиваютщая непосредственную связь процессо-
ра с 32-разрядными или 16-разрядными шинами данных памяти или
ввода/вывода.  Один  процессор  может  быть соединен с шинами
двух размеров. Передачи в/из 32- или 16-разрядные порты  соп-
ровождаются  определением в каждом цикле шины необходимой ши-
рины шины. В течение каждого цикла шины схема дешифрации  ад-
реса  или подчиненное устройство сами могут установить актив-
ный уровень сигнала BS16# для 16-разрядного порта, или  неак-
тивный уровень BS16# для 32-разрядного порта.
     Когда установлен активный уровень сигнала BS16#, процес-
сор  автоматически  вместо одной передачи разрядностью больше
16 бит или одной 16-разрядной невыровненной передачи выполнит
две или три передачи, как потребуется.  При  активном  уровне
BS16#  все передачи операндов осуществляются только по линиям
D0-D16. Поэтому 16-разрядные устройства памяти или  ввода/вы-
вода обмениваются только сигналами данных D0-D16. Специальных
переключателей не требуется. Действие активного уровня сигна-
ла BS16# проявляется только тогда, когда в текущем цикле шины
установлены  активные уровни сигналов BE2# и/или BE3#. Если в
передаче участвуют только линии D0-D15, то установка активно-
го уровня BS16# не будет иметь значение, так как передача бу-
дет производиться все равно по 16-разрядной  шине  независимо
от  состояния  BS16#.  Другими  словами,  установка активного
уровня BS16# необязательна,  когда  только  младшая  половина
разрядов шины участвует в текущем цикле.
     Существуют две ситуации, при которых проявляется влияние
активного уровня BS16# на действия процессора, зависящие таже
от значений стробов данных BE0#-BE3# в текущем цикле шины:
     - в обмене участвует только старшая половина линий шины:
устанавливаются  активные  уровни  только сигналов BE2# и/или
BE3#;
     - в обмене участвуют и старшая, и младшая половины линий
шины: устанавливаются активные уровни по меньшей мере  сигна-
лов BE1# и BE2# (и возможно также сигналов BE0# и/или BE3#).
     Воздействие BS16# на циклы чтения "с учетом только стар-
шей половины линий шины":
           
     Установка активного уровня BS16# в течение циклов чтения
"с участием только старшей половины линий шины" вынудит 80386
считывать  младшие 16 битов шины данных и игнорировать данные
на старших 16 битах шины данных. Т.е. вместо считывания  дан-
ных  с  линий  D16-D31 в соответствии с установленными BE2# и
BE3# будут считываться данные с линий D0-D16.
     Взаимодействие сигнала BS16# на циклы записи "с участием
только старшей половины линий шины":
     Установка активного уровня BS16# в течение циклов записи
"с участием только старшей половины" не отразится на процеду-
ре записи. Когда в цикле записи установлены  активные  уровни
сигналов  BE2# и/или BE3#, 80386 всегда копирует сигналы дан-
ных D16-D31 на линии D0-D15 (см. табл. 6-1). Поэтому не  тре-
буется  дополнительных  действий 80386 для того, чтобы выпол-
нить эти циклы записи по 32- или 16-разрядной шине.
     Воздействие сигнала BS16# на циклы чтения "с участием  и
старшей и младшей половин шины":
     Установка  активного уровня сигнала BS16# в течение цик-
лов чтения "с участием и старшей и младшей половин шины" зас-
тавит процессор выполнить два 16-разрядных цикла  чтения  для
передачи всего физического операнда. Байты 0 и 1 (в соответс-
твии  с  установленными  BE0#  и BE1#) будут считаны в первом
цикле с линий D0-D16. Байты 2 и 3 (в соответствии с  установ-
ленными  BE2# и BE3#) будут считаны во втором цикле и снова с
линий D0-D16. Сигналы на линиях D16-D31 игнорируются в  тече-
ние обоих 16-разрядных циклов. BE0# и BE1# всегда находятся в
неактивном состоянии в течение второго 16-разрядного цикла.
     Активный  уровень сигнала BS16# необязательно устанавли-
вать на время второго 16-разрядного цикла. См. рис.6-14, цик-
лы 2 и 2а.
     Воздействие сигнала BS16# (активного  уровня)  на  циклы
записи "с участием и старшей и младшей половин шины":
     Установка  активного уровня сигнала BS16# в течение цик-
лов записи "с участием и старшей и младшей половин шины" зас-
тавит процесор 80386 выполнять два 16-разрядных цикла  записи
для передачи целого физического операнда. Наличие всех байтов
операнда на линиях D0-D15 в течение первого цикла записи поз-
волит  внешним устройствам получить байты 0 и 1 (в соответст-
вии с  установленными  значениями  BE0#  и  BE1#)  по  линиям
D0-D16.  Во втором цикле 80386 скопирует байты 2 и 3 на линии
D0-D15, и запись этих байтов (в соответствии с установленными
значениями BE2# и BE3#) будет  произведена  также  по  линиям
D0-D16. Сигналы BE0# и BE1# всегда переключаются в неактивное
состояние  в  течение  второго 16-разрядного цикла. Установка
активного уровня сигнала BS16# в течение второго 16-разрядно-
го цикла необязательна. См. рис.6-14, циклы 1 и 1а.
     
     6.3.5  Связь с 32- и 16-разрядным устройствами памяти
     В 32-разрядных устройствах физической памяти, таких  как
на рис.6-5, каждое физическое двойное слово начинается с бай-
та,  адрес которого кратен 4. Сигналы A2-A31 обычно использу-
ются для выборки  определенного  двойного  слова,  а  сигналы
BE0#-BE3#  - для выборки определенного байта в двойном слове.
BS16# поддерживается в неактивном состоянии  во  всех  циклах
шины, оперирующих с 32-разрядным массивом.
     Когда  в  состав  системы входят 16-разрядные физические
массивы,  как  показано  на  рис.6-6,  адрес  начала  каждого
16-битного физического слова кратен 2. Отметим, что схема де-
шифрации  адреса ADDRESS DECODER при дешифрации адреса форми-
рует активный уровень сигнала BS16# только в  течение  циклов
шины,  оперирующих  с  16-разрядными  устройствами памяти, то
схема дешифрации адреса анализирует также  значения  сигналов
BE0#-BE3#  и  W/R#, чтобы определить, когда должен быть уста-
новлен активный уровень сигнала BS16#. См. 6.4.3.7  Оптималь-
ное  использование  метода  конвейерной  адресации  в  случае
16-разрядной ширины шины.
     Сигналы A2-A31 обычно используются для адресации 32-раз-
рядных и 16-разрязных устройств. Для  адресации  16-разрядных
устройств  необходимы  также  сигнал  A1 и два сигнала строба
данных.
     Чтобы сформировать необходимые  значения  сигнала  A1  и
двух сигналов стоба данных для обращения к 16-разрядному уст-
ройству,  сигналы BE0#-BE3# должен быть дешифрированы в соот-
ветствии с табл. 6-7. Отметим некоторые запрещенные  комбина-
ции  BE0#-BE3#,  никогда не вырабатываемые 80386. При наличии
запрещенной комбинации BE0#-BE3# на входе дешифратора  выходы
его не анализируются и состояние их обозначается X. Запрещен-
ные  комбинации BE0#-BE3# могут быть использованы при необхо-
димости для более оптимального использования дешифратора.
           
                                                 Таблица 6-7.
      
            Формирование сигналов A1, BHE# и BLE# для
                адресации 16-разрядных устройств
ЙНННННННННННННННННННЛНННННННННННННННННННННННЛННННННННННННННН»
є    Сигналы 80386  є  Сигналы 16-разрядной є Комментарии   є
є                   є         шины          є               є
МННННЛННННЛННННЛННННОННННЛННННННЛННННННННННН№               є
єBE3#єBE2#єBE1#єBE0#є A1 є BHE# є BLE# (A0) є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H* є H* є H* є H* є X  є  X   є     X     є X - нет ни    є
є    є    є    є    є    є      є           є одного актив- є
є    є    є    є    є    є      є           є ного байта    є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є H  є H  є L  є L  є  H   є     L     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є H  є L  є H  є L  є  L   є     H     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є H  є L  є L  є L  є  L   є     L     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є L  є H  є H  є H  є  H   є     L     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H* є L* є H* є L* є X  є  X   є     X     є X - несмежные є
є    є    є    є    є    є      є           є      байты    є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є L  є L  є H  є L  є  L   є     H     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є H  є L  є L  є L  є L  є  L   є     L     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L  є H  є H  є H  є H  є  L   є     H     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L* є H* є H* є L* є X  є  X   є     X     є X - несмежные є
є    є    є    є    є    є      є           є      байты    є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L* є H* є L* є H* є X  є  X   є     X     є X - несмежные є
є    є    є    є    є    є      є           є      байты    є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L  є L  є H  є H  є H  є  L   є     L     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L* є L* є H* є L* є X  є  X   є     X     є X - несмежные є
є    є    є    є    є    є      є           є      байты    є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L  є L  є L  є H  є L  є  L   є     H     є               є
МННННОННННОННННОННННОННННОННННННОНННННННННННОННННННННННННННН№
є L  є L  є L  є L  є L  є  L   є     L     є               є
ИННННКННННКННННКННННКННННКННННННКНННННННННННКНННННННННННННННј
     BLE# устанавливается (активный уровень) когда  активизи-
          руются разряды D0-D7 16-разрядной шины.
     BHE# устанавливается  (активный уровень) когда активизи-
          руются разряды D8-D15 16-разрядной шины.
     A1 имеет низкий уровень для всех четных слов;  A1  имеет
высокий уровень для всех нечетных слов.
     
     Обозначения:
                   X - допустим и высокий и низкий логический
                       уровень;
                   H - высокий логический уровень;
                   L - низкий логический уровень;
                   * - неиспользуемые комбинации BE0#-BE3#:
     - комбинация, когда  все стробы данных находятся в неак-
       тивном состоянии;
     - комбинации стробов данных, при которых появляются нес-
       межные активные байты.
           
     6.3.6  Выравнивание операндов
     Благодаря гибкой адресации памяти в 80386 возможна пере-
дача логического операнда, разрядность которого больше  слова
или  двойного слова памяти или ввода/вывода, например 32-раз-
рядного операнда (двойное слово), адрес начала которого  нек-
ратен  4,  или  16-разрядного  операнда (слово), разделенного
между двумя физическими двойными словами массива памяти.
     Когда передача операнда  требует  выполнения  нескольких
циклов, то во время этих циклов выполняется выравнивание дан-
ных и определение размера шины. Таблица 6-8 описывает опреде-
ление  типов циклов передачи для всех комбинаций таких харак-
теристик, как длина логического операнда, выравнивание и  ши-
рина  шины данных. Когда для передачи многобайтового логичес-
кого операнда требуется несколько циклов шины, то первыми пе-
редаются старшие байты (но если установлен  активный  уровень
BS16#, то будут выполнены два 16-разрядных цикла, причем пер-
выми будут переданы младшие байты).
     
                                                 Таблица 6-8.
      
           Циклы передачи байтов, слов и двойных слов
ЙНННННННННННННННЛННННННННННННННННННННННННННННННННННННННННННН»
є               є     Длина логического операнда в байтах   є
є               МНННЛНННННННННННННННННННЛННННННННННННННННННН№
є               є 1 є          2        є         4         є
МНННННННННННННННОНННОННННЛННННЛННННЛННННОННННЛННННЛННННЛНННН№
єАдрес байта фи-єXX є 00 є 01 є 10 є 11 є 00 є 01 є 10 є 11 є
єзической памятиє   є    є    є    є    є    є    є    є    є
є(младшие два   є   є    є    є    є    є    є    є    є    є
єбайта)         є   є    є    є    є    є    є    є    є    є
МНННННННННННННННОНННОННННОННННОННННОННННОННННОННННОННННОНННН№
єЦиклы передачи єb  є W  є W  є W  єhb, є d  єhb, єhw, єh3, є
єпо 32-разряднойє   є    є    є    єlb  є    єl3  єlw  єlb  є
єшине данных    є   є    є    є    є    є    є    є    є    є
МНННННННННННННННОНННОННННОННННОННННОННННОННННОННННОННННОНННН№
єЦиклы передачи єb  є W  єlb,*є W  єhb,*єlw,*єhb, єhw, єmw, є
єпо 16-разряднойє   є    єhb* є    єlb* єhw* єlb,*єlw  єhb,*є
єшине данных    є   є    є    є    є    є    єmw* є    єlb  є
ИНННННННННННННННКНННКННННКННННКННННКННННКННННКННННКННННКННННј
                
     Обозначения:  b = передача байта
                   w = передача слова
                   l = младшая часть операнда
                   m = средняя часть операнда
                   х = не используется
                   * = активный уровень BS16# вызывает выпол-
                       нение второго цикла шины
                   3 = передача 3-х байтов
                   d = передача двойного слова
                   h = старшая часть операнда
     
     6.4  Описание функционирования шины
     6.4.1 Введение
     80386 имеет отдельные параллельные шины: шину  адреса  и
шину  данных.  Шина  данных - 32-разрядная и двунаправленная.
Ширина шины адреса - 32 разряда: из них 30 старших разрядов -
адрес операнда и 2 разряда формируются из 4-х сигналов  стро-
бов данных каждый из которых служит для выборки соответствую-
щего  байта  в операнде. Эти шины анализируются и управляются
соответствующими им управляющими сигналами.
     Тип каждого цикла  шины  определяется  тремя  сигналами:
M/IO#, W/R# и D/C#. Одновременно с этими сигналами устанавли-
вается достоверный адрес на линиях BE0#-BE3# и A2-A31. Сигнал
строба  адреса  указывает  на выдачу процессором 80386 нового
типа цикла шины и адреса.
     Объединенные шина адреса, шина данных и все связанные  с
ними управляющие сигналы называются в тексте просто "шиной".
     В  рабочем состоянии шина выполняет один из нижеперечис-
ленных циклов шины:
     1) чтение из памяти;
     2) чтение из памяти с блокировкой шины;
     3) запись в память;
     4) запись в память с блокировкой шины;
     5) чтение из устройства ввода/вывода (или из сопроцессо-
        ра);
     6) запись в устройство ввода/вывода (или в сопроцессор);
     7) подтверждение прерывания;
     8) цикл останова или цикл выключения.
     Табл. 6-2 показывает  соответствие  комбинаций  сигналов
определения  типа  шины каждому типу шины. См. параграф 6.2.5
Сигналы определения типа цикла шины.
     Отличительной чертой шины данных является ее  изменяемая
ширина, которая может быть 32-разрядной и 16-разрядной. Шири-
на  шины данных указывается процессору 80386 его входным сиг-
налом BS16#. Все функции шины могут быть выполнены при  любой
ширине шины.
     Когда шина 80386 не выполняет ни один из вышеперечислен-
ных  циклов,  она  находится  или в нерабочем состоянии или в
состояние подтверждения захвата шины,  последнее  может  быть
вызвано внешней схемой.
     Нерабочее  состояние шины может иметь место, когда 80386
не выдает дальнейших подтверждений на свой выход строба адре-
са (ADS#) после начала текущего цикла, и потому текущий  цикл
будет последним. Состояние подтверждения захвата шины иденти-
фицируется  установкой  процессором 80386 активного уровня на
своем выходе подтверждения захвата (HLDA).
     Самой короткой временной единицей деятельности шины  яв-
ляется состояние шины. Деятельность состояния шины составляет
один период тактовой частоты процессора (два периода CLK2).
     Законченная  передача  данных  осуществляется  в течение
цикла шины, состоящего из двух или более состояний шины.
     Самый короткий цикл шины 80386 состоит из двух состояний
шины. Состояния шины в каждом цикле обозначены как Т1 и Т2. В
течение такого цикла шины (из 2-х состояний) может  быть  вы-
полнено  обращение  по любому адресу памяти или ввода/вывода,
если внешняя аппаратура обладает достаточным быстродействием.
Высокая пропускная способность шины и цикл  шины,  занимающий
два  периода  тактовой частоты, наиболее полно реализуют воз-
можности быстрой основной памяти или кэш-памяти.
     Каждый цикл шины длится до тех пор, пока не придет подт-
верждение от внешних устройств системы, использующих для этой
цели вход 80386 READY#. Если подтверждение цикла  шины  будет
сформировано  в конце первого из состояний Т2, то это опреде-
лит выполнение самого короткого цикла шины, состоящего  всего
из двух состояний Т1 и Т2. Однако, если активный уровень сиг-
нала  READY#  не будет установлен сразу (в конце первого Т2),
то состояния Т2 будут неограничено повторятся до тех пор, по-
ка на входе READY# процессор не обнаружит активный уровень.
           
     6.4.2  Конвейерная адресация
     
     Режим конвейерной  адресации  обеспечивает  определенные
протоколы цикла шины.
     Протокол конвейерной или неконвейерной адресации выбира-
ется  на основе совмещения циклов с использованием входа сле-
дующего адреса (NA#).
     В режиме неконвейерной адресации  текущий  адрес  и  тип
цикла шины остаются постоянными в течение всего цикла шины.
     В режиме конвейерной адресации адрес (BE0#-BE3#, A2-A31)
и  тип  цикла для следующего цикла устанавливаются и выдаются
еще до окончания текущего цикла. Чтобы сигнализировать об  их
готовности, 80386 устанавливает также активный уровень на вы-
ходе строба адреса (ADS#). Рис.6-9 иллюстрирует самые быстрые
циклы  чтения в режиме конвейерной адресации. Из рис.6-9 сле-
дует, что самые короткие циклы шины, использующие метод  кон-
вейерной  адресации,  состоят  всего  из двух состояний шины,
обозначенных Т1Р и Т2Р. Следовательно,  циклы  с  конвейерной
адресацией  обеспечивают такую же пропускную способность дан-
ных, как и циклы с неконвейерной адресацией, но время выборки
адреса увеличивается по сравнению с неконвейерными циклами.
     Из-за увеличения времени выборки адреса режим  конвейер-
ной адресации сокращает требуемое количество состояний ожида-
ния.  Например, если в режиме конвейерной адресации требуется
одно состояние ожидания, то в  режиме  конвейерной  адресации
может не потребоваться ни одного состояния ожидания.
     Режим  конвейерной  адресации  используеется в системах,
имеющих адресные "защелки". В таких системах, сразу "защелки-
вающих" адрес, конвейерная выдача следующего адреса позволяет
декодирующей схеме  заранее  сформировать  сигналы  включения
микросхем (и другие необходимые сигналы выборки), поэтому об-
ращение  к  выбранным  устройствам  осуществляется сразу, как
только начинается следующий цикл. Другими словами, время  де-
кодирования для следующего цикла может частично перекрываться
с окончанием текущего цикла.
     Если в состав системы входит память с расслоением, имею-
щая  2  или более банков, то метод конвейерной адресации воз-
можно обеспечит даже большее перекрытие циклов. Вышесказанное
действительно, когда контроллер памяти с расслоением  устроен
так,  чтобы  позволить  начать следующую операцию с памятью в
одном банке памяти в то время, как текущий цикл шины еще опе-
рирует с другим банком памяти. Рис.6-10  показывает  основную
структуру взаимосвязи 80386 с 2-банковой и 4-банковой памятью
с  расслоением. Отметим, что каждый банк памяти с расслоением
имеет шину данных полной ширины  (обычно  разрядность  данных
составляет  32 бита, если не задается 16-разрядная ширина ши-
ны).
     Дополнительные сведения о режиме  крнвейерной  адресации
даны в параграфах 6.4.3.4 Конвейерная адресация, 6.4.3.5 Ини-
циализация   и   поддержание  режима  конвейерной  адресации,
6.4.3.6 Конвейерный адрес при изменении ширины шины и 6.4.3.7
Оптимальное  использование  конвейерного  адреса   в   случае
16-разрядной ширины шины.
     
     6.4.3  Циклы чтения и записи
     
     6.4.3.1 Введение
     
     Передачи данных  осуществляется  посредством  выполнения
циклов  шины,  которые подразделяются на циклы чтения и циклы
записи. При выполнении циклов  чтения  данные  передаются  от
внешнего устройства в процессор. При выполнении циклов записи
данные  передаются  в  обратном  направлении: от процессора к
внешнему устройству.
     Два варианта адресации попеременно избираются:  неконве-
йерная  адресация или конвейерная. После нерабочего состояния
шины процессор всегда работает в режиме неконвейерной адреса-
ции. Однако, может быть установлен активный уровень  входного
сигнала  NA#  (следующий адрес), избирающий режим конвейерной
адресации для следующего цикла шины. Когда выбран режим  кон-
вейерной  адресации,  и в процессоре имеется ожидающий обслу-
живвания внутренний запрос шины, достоверные адрес и тип цик-
ла для следующего цикла шины будут выданы даже  до  получения
подтверждения  текущего  цикла шины на входе READY#. В каждом
цикле шины 80386 обязательно анализирует состояние сигнала на
входе NA#, чтобы определить способ адресации, необходимый для
следующего цикла.
     Попеременно избираются два варианта  размера  физической
шины  данных: 32 бита или 16 битов. Обязательно ближе к концу
цикла шины состояние входного сигнала BS16# (размер шины  16)
анализируется  с  целью  установления размера физической шины
данных, необходимого в текущем цикле. Высокий уровень сигнала
BS16# указывает  на  32-разрядный  размер,  активный  уровень
(низкий)  BS16# указывает на 16-разрядный размер. Если указан
16-разрядный размер шины, то 80386 автоматически реагирует на
это соответствующим  образом,  чтобы  завершить  передачу  по
16-разрядной шине данных. В зависимости от размера и располо-
жения  операнда  может потребоваться второй 16-разрядный цикл
шины. Подробно об этом см. табл. 6-7. Когда необходимо, 80386
выполняет дополнительный 16-разрядный  цикл  шины,  используя
линии D0-D15 для передачи разрядов D16-D31.
     Для  завершения цикла чтения или цикла записи, также как
и любого другого цикла шины, требуется  подтверждение  цикла,
устанавливаемое  на  входе READY#. До получения подтверждения
процессор вводит в цикл шины состояние ожидания, чтобы  соот-
ветствовать  быстродействию внешнего устройства. Внешнее уст-
ройство, распознавшее свой адрес и декодировавшее  тип  цикла
шины,  формирует  в  соответствующий  момент активный уровень
сигнала READY#.
     Сигнал READY# анализируется во  втором  состоянии  цикла
шины.  Если  в  это  же время внешняя аппаратура подтверждает
цикл шины установкой активного уровня READY#,  то  цикл  шины
завершается, как показано на рис.6-11.
     Если  во  втором состоянии шины сигнал READY# остается в
неактивном состоянии, как показано на рис.6-12, цикл шины до-
полняется еще одним состоянием (состоянием ожидания), и  сиг-
нал READY# будет снова анализироваться в конце каждого такого
состояния  ожидания.  Так будет продолжиться неограниченно до
тех пор, пока цикл не получит подтверждения по линии READY#.
     Когда процессор получает подтверждение  текущего  цикла,
он  завершает  его.  Когда  подтверждается цикл чтения, 80386
"защелкивает" информацию, сформированную к этому  времени  на
выводах шины данных процессора. Когда подтверждается цикл за-
писи,  80386  поддерживает  достоверное значение записываемых
данных в течение первой фазы  следующего  цикла  шины,  чтобы
обеспечить  необходимое значение времени удержания записывае-
мых данных.
     
     6.4.3.2  Неконвейерная адресация
     
     Любой цикл шины может быть выполнен в режиме неконвейер-
ной  адресации.  Для примера, на рис.6-11 показана последова-
тельность циклов чтения и записи в режиме неконвейерной адре-
сации. Из рис.6-11 следует, что самые короткие циклы, возмож-
ные в режиме неконвейерной адресации, состоят каждый из  двух
состояний  шины.  Состояния  обозначены как Т1 и Т2. В первой
фазе состояния Т1 выдаются достоверные значения сигналов  ад-
реса  и  сигналов определения типа цикла шины, и одновременно
устанавливается  активный  уровень  сигнала   строба   адреса
(ADS#), сигнализирующий о готовности вышеперечисленных сигна-
лов.
     В  течение циклов чтения или записи шина данных фкнкцио-
нирует как описано ниже. В  цикле  чтения  80386  переключает
свою  шину данных таким образом, чтобы принять сигналы данных
от адресованного внешнего устройства. В цикле записи  сигналы
данных  передаются  процессором 80386, начиная со второй фазы
состояния Т1 и кончая первой фазой  состояния  шины,  которое
будет установлено сразу после получения подтверждения цикла.
     Рис.6-12  иллюстрирует циклы шины в режиме неконвейерной
адресации, причем циклы 2 и 3 дополнены одним состоянием ожи-
дания. В циклах 2 и 3 сигнал READY# оказался  неустановленным
в  активное состояние Т2. В этих циклах активный уровень сиг-
нала READY# устанавливается в конце второго из состояний Т2.
     Когда не используется конвейерная адресация, достоверные
значения адреса и типа цикла шины сохраняются в течение  всех
состояний ожидания. Когда цикл дополняется состояниями ожида-
ния,  и  необходимо обеспечить режим неконвейерной адресации,
неактивный (высокий) уровень сигнала  NA#  должен  устанавли-
ваться в течение каждого из состояний Т2, исключая самое пос-
леднее  состояние Т2 цикла, как показано на рис.6-12 в циклах
2 и 3. Если активный уровень  NA#  окажется  установленным  в
состояние Т2 (но не в последнем Т2), то следующим состоянием,
вместо состояния Т2 (для неконвейерной адресации), будет сос-
тояние Т2i (для конвейерной адресации) или Т2p (для конвейер-
ной адресации).
     Рис.6-13  наиболее  полно иллюстрирует картину состояний
шины и переходов из состояния в состояние для  случая,  когда
конвейерная  адресация  не  используется. Показанные переходы
шины между 4-мя возможными состояниями: Т1, Т2, Тi и Тh. Цик-
лы шины содержат состояния Т1 и Т2, причем  Т2  может  повто-
ряться  (состояния  ожидания).  Кроме этого, шина может нахо-
диться в нерабочем состоянии, т.е. в состоянии Тi, или в сос-
тоянии подтверждения захвата шины, т.е. в состоянии Тh.
                             "1"
                          ЙННННННН»
                          V       є
                       ЙННННННННННКННН»
           ЙННННННННННН№     Th       є<ННННННННННННН»
           є           ИННННННННННННННј              є
           є            Л      Л                     є
           є ЙННННННННННј      є                     є
           є є                 є                     є
       "2" є є "1"             є"3"              "4" є
 НННН»     є є                 є     "6"             є
     є"5"  є є  ЙННННННННННННННєННННННННННННННН»     є
     є     є є  є              є               є     є
     V     V є  V              V               V     є
  ЙНННННННННННННН»      ЙНННННННННННННН»  "9" ЙНННННННННННН»
Й>є              є "3"  є              МННННН>є            МН»
є є      Ti      МННННН>є     T1       є      є     T2     є є
є є              є      є              є<НННННє            є є
є ИНННННЛННННННННј      ИННННННННННННННј  "7" ИННННННННННННј є
є"2"    є                                             Л  "8" є
ИНННННННј                                             ИННННННј
                                                                 
                                                                 
                                                                 
                                                           
  "1"-HOLD активизирован
  "2"-HOLD неактивизирован * нет внутреннего запроса
  "3"-HOLD неактивизирован * есть внутренний запрос, ожидаю-
      щий обслуживание
  "4"-READY# активизирован * HOLD активизирован
  "5"-RESET активизирован
  "6"-READY# активизирован  *  HOLD  неактивизирован  *  нет
      внутреннего запроса
  "7"-READY#  активизирован  *  HOLD  неактивизирован * есть
      внутренний запрос, ожидающий обслуживание
  "8"-READY# неактивизирован * NA# неактивизирован
  "9"-постоянно
                                                                 
                                                                 
                                                                 
                                                           
Состояния шины :
  T1-первое состояние неконвейерного цикла шины (80386 выда-
     ет новый адрес и устанавливает активный уровень ADS#).
  T2-последующие состояния цикла шины, когда  при  просмотре
     сигнала NA# в текущем цикле шины он оказывается в неак-
     тивном состоянии.
  Ti-нерабочее состояние.
  Th-состояние  подтверждения захвата шины (80386 устанавли-
     вает активный уровень HLDA).
     Самый  короткий цикл шины состоит из двух состояний: T1
и T2. Четыре основные состояния шины описывают  функциониро-
вание шины, когда не используется конвейерная адресация. Эти
состояния распространяются на оба размера шины: 32 бита и 16
бит,  т.е.  справедливы  для любого значения BS16#. Если при
активном уровне сигнала BS16# требуется  выполнение  второго
16-разрядного  цикла, последний выполняется перед формирова-
нием процессором сигнала подтверждения захвата шины.
                                                                 
                                                                 
                                                                 
                                                           
Рис.6-13. Состояния шины 80386 (когда конвейерная  адресация
          не применяется)
     Для случая, когда конвейерная адресация не используется,
диаграмма состояния шины такая, как показана на  рис.6-13.  В
нерабочем  состоянии  шина  находится в Тi. Циклы шины всегда
начинаются с Т1. Т1 всегда предшествует  состоянию  Т2.  Если
цикл  шины не подтвержден в течение Т2 и уровень NA# при этом
неактивный, состояние Т2 повторяется. Когда цикл  подтвержден
в  течение  Т2,  то за этим последует состояние Т1 следующего
цикла шины, если имеется  ожидающий  обслуживания  внутренний
запрос  шины  (запрос  на захват шины самим процессором), или
состояние Тi, если такого запроса нет, или состояние Тh, если
установлен активный уровень входного сигнала HOLD.
     Диаграмма состояния шины на рис.6-13 справедлива при лю-
бом значении сигнала BS16#. Если  80386  выполнит  внутренние
переключения, необходимые для установки 16-разрядного размера
шины,  то  эти  переключения не повлияют на состояния внешней
шины. Если для выполнения передачи по 16-разрядной шине  тре-
буется  дополнительный 16-разрядный цикл шины, он также будет
выполняться в соответствии с переходами состояний, показанны-
ми на рис.6-13.
     В режиме конвейерной адресации в 80386 могут  иметь  еще
три  типа  состояния  шины,  не  показанные  на  рис.6-13. На
рис.6-20 в параграфе 6.4.3.4 "Конвейерная адресация" показана
более подробная диаграмма состояния шины, включающая циклы  в
режиме конвейерной адресации.
     Состояния шины:
     Т1  -  первое состояние неконвейерного цикла шины (80386
     выдает новый  адрес  и  устанавливает  активный  уровень
     ADS#);
     Т2  -  последующие состояния цикла шины, когда при прос-
     мотре сигнала NA# в текущем цикле шины он оказывается  в
     неактивном состоянии;
     Тi  -  нерабочее состояние;
     Тh  -  состояние подтверждения захвата шины (80386 уста-
     навливает активный уровень HLDA).
Самый короткий цикл шины состоит из двух состояний: Т1 и Т2.
     Четыре  основные состояния шины описывают функционирова-
ние шины, когда не используется  конвейерная  адресация.  Эти
состояния  распространяются  на оба размера шины: 32 бит и 16
бит, т.е. справедливы для любого значения BS16#. Если при ак-
тивном уровне  сигнала  BS16#  требуется  выполнение  второго
16-разрядного цикла, последний выполняется перед формировани-
ем процессором сигнала подтверждения захвата шины.
     
     6.4.3.3  Режим неконвейерной адресации при изменении
              размера шины данных
     
     Ширина  физической магистрали данных для любого неконве-
йерного цикла шины может составлять или 32  разряда,  или  16
разрядов.  В  начале цикла шины процессор ведет себя так, как
если бы ширина шины данных составляла 32 бита. Когда цикл ши-
ны подтверждается установкой активного уровня сигнала  READY#
в  конце состояния Т2, то анализируемый в этот момент уровень
сигнала BS16# окажется в неактивном состоянии, то размер  фи-
зической  шины данных принимается равным 32 разрядам. Если же
наблюдается активный уровень BS16#, то размер шины принимает-
ся равным 16 разрядам.
     Когда установлен активный уровень BS16#, и для  выполне-
ния  одной  передачи требуется два 16-разрядных цикла, то ак-
тивный уровень сигнала BS16# должен быть установлен и во вто-
ром цикле. Иначе 16-разрядный размер шины не  будет  сохранен
во  втором цикле. Также, как и любой другой цикл шины, второй
16-разрядный цикл должен быть подтвержден установкой активно-
го уровня READY#.
     Когда требуется второй 16-разрядный цикл для  выполнения
одной  передачи  по 16-разрядной шине, то адреса, формируемые
для двух 16-разрядных циклов шины, тесно  взаимосвязаны.  Эти
адреса идентичны за исключением разрядов BE0# и BE1#, которые
всегда переключаются в неактивное состояние (высокий уровень)
во втором цикле, так как сигналы данных D0-D15 были уже пере-
даны в первом 16-битном цикле.
     На  рис.6-14 и 6-15 показаны передачи, при которых уста-
новка активного уровня BS16# требует второго 16-битного цикла
для выполнения передачи всего операнда. Рис.6-14 иллюстрирует
циклы без состояний ожидания. Рис.6-15 иллюстрирует  циклы  с
одним   состоянием  ожидания.  Отметим,  что  в  цикле  1  на
рис.6-15, в течение которого устанавливается активный уровень
сигнала BS16#, сигнал NA# должен быть обязательно  переключен
в  неактивный  уровень в состоянии(ях) Т2, предшествующем(их)
последнему состоянию Т2. Это необходимо для того, чтобы в фи-
нальном состоянии Т2 процессор воспринял установленный актив-
ный уровень BS16# в режиме неконвейерной адресации.
     
     6.4.3.4  Конвейерная адресация
     
     В  режиме  конвейерной  адресации  адрес и тип цикла для
следующего цикла шины, который будет обслуживать ждущий обра-
ботки,внутреннии запрос процессора, запрашиваются еще до  то-
го,  как будет получено подтверждение текущего цикла по линии
READY#. Когда следующий адрес подготовлен и выдан, 80386  ус-
танавливает  активный  уровень  сигнала ADS#. Протокол режима
конвейерной адресации строится на основе совмещения циклов  и
с помощью входного сигнала NA#.
     Когда выполняется цикл шины и текущий адрес должен иметь
достоверное значение в течение по меньшей мере одного полного
состояния шины, значение входного сигнала NA# анализируется в
конце каждой первой фазы состояния до тех пор, пока цикл шины
не  получит подтверждение. В течение неконвейерных циклов ши-
ны, следовательно, NA# анализируется в конце  первой  фазы  в
каждом  состоянии  Т2.  Примером  может  служить  Цикл  2  на
рис.6-16, в течение которого NA# анализируется в конце первой
фазы каждого Т2 (NA# был установлен в активный  уровень  один
раз в течение первого состояния Т2 и не оказывает дальнейшего
воздействия на выполнение этого цикла шины).
     Если процессор при просмотре NA# обнаружит активный уро-
вень  этого сигнала, то 80386 освобождается, чтобы выдать ад-
рес и тип цикла следующего цикла, и установить активный  уро-
вень сигнала ADS#, как только в процессоре появится ожидающий
обслуживания  внутренний  запрос шины. Процессор может выдать
следующий адрес уже в следующем состоянии шины, независимо от
того получил ли в этот момент подтверждение текущий цикл  или
не получил.
     Что касается режима конвейерной адресации, то в этом ре-
жиме 80386 имеет следующие особенности:
     1)  для того, чтобы процессор воспринял активный уровень
сигнала NA#, сигнал BS16# должен быть переключен в неактивный
уровень на время просмотра сигнала NA# (см. рис.6-16 Циклы  3
и 4; рис.6-17 Циклы 2-4);
     В  том случае, если сигналы NA# и BS16# окажутся оба ак-
тивными в течение последнего периода Т2 цикла шины, приорите-
том будет обладать активный сигнал BS16#. Следовательно, если
оба сигнала активны, то текущий размер шины принимается  рав-
ным  16 разрядам, а следующий адрес будет неконвейерным. Схе-
матично рис.6-18 показывает внутреннюю логику 80386,  обеспе-
чивающую эти особенности.
     2)  следующий  адрес  может  появиться в состоянии шины,
следующем сразу после момента  обнаружения  активного  уровня
NA# (см. рис.6-16 или 6-17);
     В этом случае сразу шина перейдет в состояние Т2p. Одна-
ко,  если  в  этот  момент отсутствует ожидающий обслуживания
внутренний запрос шины, то следующий адрес не будет  установ-
лен  сразу после активизации NA#, и вместо состояния Т2p шина
перейдет в состояние Т2i (см. рис.6-19 Цикл 3). При  условии,
что  текущий  цикл шины еще не получил подтверждение по линии
READY#, шина перейдет в состояние Т2p как только 80386 выдает
следующий адрес. Внешние устройства, поэтому, должны  следить
за  состоянием  выходного сигнала ADS#, подтверждающим выдачу
на шину достоверного следующего адреса.
     3) в том случае, когда 80386 при просмотре обнаружит ак-
тивный уровень NA#, 80386 сам принимает решение на обслужива-
ние самого приоритетного внутреннего запроса шины, ожидающего
обслуживания. Процессор не  сможет  больше  выполнить  другую
16-разрядную  передачу по тому же адресу, даже если BS16# бу-
дет установлен в активный уровень  внешним  устройством,  так
как  после восприятия процессором активного сигнала NA# теку-
щий размер шины принимается равным 32-м разрядам;
     Следовательно,  если  процессор  опознал активный сигнал
NA# в течение цикла шины, то после этого сигнал BS16# игнори-
руется в этом цикле шины (см. рис.6-16,  6-17,  6-19).  Таким
образом,  нельзя активизировать сигнал NA# в тех циклах шины,
в которых 16-разрядный размер шины должен быть задан установ-
кой активного уровня сигнала BS16#.  См.  6.4.3.6  "Изменение
размера шины в режиме конвейерной адресации".
     4)  любой адрес, достоверное значение которого подтверж-
дено выходным импульсным сигналом 80386  ADS#,  будет  сохра-
няться на адресных выводах в течение по меньшей мере двух пе-
риодов  тактовой  частоты процессора. 80386 не может выдавать
новый адрес чаще, чем каждые  два  периода  тактовой  частоты
процессора (см. рис.6-16, 6-17, 6-19);
     5)  из  всех  сигналов, необходимых для следующего цикла
шины, процессор выдает только адрес и тип цикла шины;
     Уровень совмещения в режиме конвейерной адресации не бо-
лее, чем один цикл шины (см. рис.6-19 Цикл 1).
     Полная диаграмма переходов состояний шины, включая функ-
ционирование  в  режиме  конвейерной   адресации,   дана   на
рис.6-20.  Отметим,  что  эта  диаграмма  включает диаграмму,
справедливую только для режима неконвейерной адресации, и до-
полнительные три состояния шины для режима конвейерной  адре-
сации.
                                                                 
                                                                 
                                                                 
                                                           
                            "1"
                          ЙНННН»
                          V    є
                        ЙНННННННН»   "2"
        ЙННННННННННННННН№   Тh   є<НННННННННННННННННННННННННН»
        є    ЙННННННННН>є        є   "2"                     є
        є"4" є"1"       ИННННЛНННј<ННННННННННННН»            є
"5"     є ЙННј      "6"   "3"є                  є            є
НННННН» є єЙНННННННННННННННННєНННННННННННННН»   є            є
      V V єє                 V              є   є            є
    ЙННННН»є            ЙННННННН»           є ЙНКННННН»      є
ЙНН>є  Тi Мј    "3"     є  Т1   є  Всегда   И>є   Т2  МНННН» є
є   є     МНННННННННННН>є       МНННННННННННН>є       є<Н» є є
ИНННИНННННј             ИНННННННј<ННННННННННННИННННННЛј  є є є
"4"    Л                    Л          "8"      є Л  є   є є є
       є              "8"   є      "12"         є ИННј   є є є
       є"6   ЙННННННННННННННј    ЙННННННННННННННј "9"    є є є
       є     є                   V                    "7"є є є
"15"ЙННКННН» є           ЙНННННННН»             ЙНННННН» є є є
ЙНН>є Т2i  МНј  "16"     є  Т2Р   є    "14"     є  Т1Р є є є є
є   є      МНННННННННННН>є        МНННННННННННН>є      МНј є є
ИНННИННННННј             ИННННННЛНј<ННННННННННННИНННЛННј   є є
     є Л   Л                Л   є      "13"         є      є є
     є є   є                ИНННј                   є      є є
     є є   є   "11"          "17"                   є  "10"є є
     є є   ИННННННННННННННННННННННННННННННННННННННННј      є є
     є ИНННННННННННННННННННННННННННННННННННННННННННННННННННј є
     ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННј
                                                                 
                                                                 
                                                                 
                                                           
   "1"-HOLD активизирован
   "2"-READY# активизирован * HOLD активизирован
   "3"-HOLD неактивизирован * есть внутренний запрос, ожидаю-
       щий обслуживание
   "4"-HOLD неактивизирован * нет внутреннего запроса
   "5"-RESET активизирован
   "6"-READY#  активизирован  *  HOLD  неактивизирован  * нет
       внутреннего запроса
   "7"-NA# неактивизирован
   "8"-READY# активизирован *  HOLD  неактивизирован  *  есть
       внутренний запрос, ожидающий обслуживание
   "9"-READY# неактивизирован * NA# неактивизирован
  "10"-(нет  внутреннего  запроса * HOLD активизирован) * NA#
       активизирован * READY# неактивизирован
  "11"-NA# активизирован * (HOLD активизирован * нет внутрен-
       него запроса)
  "12"-READY# неактивизирован * NA# активизирован * HOLD  не-
       активизирован * есть внутренний запрос, ожидающий обс-
       луживание
  "13"-NA#  активизирован * HOLD неактивизирован * есть внут-
       ренний запрос, ожидающий обслуживание
  "14"-READY# активизирован
  "15"-READY# неактивизирован * (нет  внутреннего  запроса  *
       HOLD активизирован)
  "16"-READY# неактивизирован * есть запрос, ожидающий обслу-
       живание * HOLD неактивизирован
  "17"-READY# неактивизирован
   
 Состояния шины :
   Т1-первое состояние неконвейерного цикла шины (80386 выда-
      ет новый адрес и устанавливает активный уровень ADS#).
   Т2-последующие  состояния  цикла шины, когда при просмотре
      сигнала NA# в текущем цикле шины он оказывается в неак-
      тивном состоянии.
  Т2i-последующие состояния цикла шины, имеющие  место  когда
      обнаружен активный уровень NA# в текущем цикле шины, но
      еще  отсутствует внутренний запрос шины, ожидающий обс-
      луживание (80386 не выдаст новый адрес или не установит
      активный уровень ADS#).
  Т2Р-последующие состояния цикла шины, имеющие место когда в
      текущем цикле шины обнаружен активный  уровень  NA#,  и
      имеется внутренний, ожидающий обслуживание, запрос шины
      (80386 выдаст новый адрес и активизирует сигнал ADS#).
  Т1Р-первое состояние конвейерного цикла шины.
   Ti-нерабочее состояние.
   Th-состояние  подтверждения захвата шины (80386 устанавли-
      вает активный уровень HLDA).
      Установка активного уровня NA# для конвейерной  адреса-
ции может повлечь за собой одно из трех типов состояний шины:
Т2i,Т2Р и Т1Р.
      В режиме конвейерной адресации самый короткий цикл шины
состоит из состояний Т1Р и Т2Р.
           
  Рис.6-20. Диаграмма всех возможных состояний шины (включая
            режим конвейерной адресации)
     Самый  короткий цикл шины в режиме конвейерной адресации
состоит только из двух состояний шины, Т1p и  Т2p  (напомним,
что для режима неконвейерной адресации такими состояниями яв-
ляются состояния Т1 и Т2). Т1p является первым состоянием ши-
ны конвейерного цикла.
     
       6.4.3.5 Инициализация и поддержание режима конвейерной
               адресации
     
     Пользуясь  диаграммой  состояний  на рис.6-20, проследим
переходы шины из нерабочего состояния Тi, в начало  конвейер-
ного  цикла шины Т1p. Цикл шины, первый после нерабочего сос-
тояния шины Тi, должен начинаться с  состояния  Т1,  следова-
тельно  этот цикл будет неконвейерным. Однако, если будет ус-
тановлен активный уровень NA#, и первый цикл шины  закончится
в  состоянии  Т2p,  то  следующий цикл шины будет конвейерным
(адрес для следующего цикла шины  выдается  в  состоянии  Т2p
первого  цикла).  Кратчайший  путь  от нерабочего состояния к
циклу шины с конвейерной адресацией показан ниже:
     
         Тi,Тi,Тi       Т1-Т2-Т2p           Т1p-Т2p
         нерабочее     неконвейерный       конвейерный
         состояние        цикл                цикл
     
     Т1-Т2-Т2p - состояние цикла шины, в течение корого уста-
навливается адрес (конвейерный) для  следующего  цикла  шины,
начинающегося  с  состояния Т1p. Переход к конвейерному циклу
из состояния подтверждения захвата шины осуществляется анало-
гично и показан ниже:
     
        Тh,Тh,Тh         Т1-Т2-Т2p        Т1p*Т2p
        состояние        неконвейерный    конвейерный
        подтверждения        цикл            цикл
        захвата
     
     Переход к ковейерной адресации показан на рис.6-17  Цикл
1. Цикл 1 используется для перехода в режим конвейерной адре-
сации для выполнения последовательности конвейерных циклов 2,
3 и 4. В соответствующий момент устанавливается активный уро-
вень NA# для того, чтобы выбрать конвейерный адрес для циклов
2, 3 и 4.
     Когда выполняется цикл шины, и достоверное значение  те-
кущего  адреса  удерживается в течение одного состояния шины,
состояние входа NA# анализируется в конце каждой первой  фазы
до тех пор, пока этот цикл не получит подтверждение. Следова-
тельно, в Цикле 1 на рис.6-17 процессор начинает анализ NA# в
состоянии  Т2. Как только в текущем цикле NA# оказывается ус-
тановленным в активный уровень,  80386  освобождается,  чтобы
выдать  на  шину новый адрес и тип цикла до начала следующего
состояния шины. Например, в Цикле 1  обеспечивает  переход  в
режим  конвейерной адресации, так как он начинается с состоя-
ния Т1, но заканчивается состоянием Т2p. Поскольку адрес  для
Цикла  2 устанавливается еще до начала Цикла 2, последний на-
зывается конвейерным циклом шины  и  начинается  с  состояния
Т1p.  Цикл  2 начнется, как только активный сигнал READY# за-
вершит Цикл 1. Примерами переходных циклов шины являются Цикл
1 на рис.6-17 и Цикл 2 на рис.6-16. На рис.6-17 показан пере-
ход в течение цикла шины, первого после нерабочего  состояния
шины,  это  самый  кратчайший  из возможных переходов в режим
конвейерной адресации. Цикл 2 на рис.6-16 иллюстрирует  пере-
ходной цикл шины, имеющий место внутри последовательности ра-
бочих  циклов шины. В любом случае переходные циклы осуществ-
ляются аналогично независимо от момента их  появления:  пере-
ходной  цикл  состоит  по меньшей мере из состояний Т1, Т2 (в
этот момент вы устанавливаете активный сигнал NA#), Т2p  (при
условии,  что 80386 уже имеет ожидающий обслуживания внутрен-
ний запрос шины, это условие выполняется почти всегда).  Сос-
тояния  Т2p  повторяются,  если  цикл дополняется состояниями
ожидания.
     Отметим три состояния (Т1, Т2 и Т2p), комбинация которых
требуется только в цикле шины, выполняющем переход из  режима
неконвейерной адресации в режим конвейерной адресации, напри-
мер, Цикл 1 на рис.6-17. Циклы 2, 3 и 4 на рис.6-17 показыва-
ют, что в режиме конвейерной адресации могут выполняться цик-
лы шины из двух состояний каждый, включающие только состояния
Т1p и Т2p.
     Когда выполняется конвейерный цикл шины, режим конвейер-
ной адресации поддерживается путем установки активного сигна-
ла NA# и определением того, что 80386 устанавливает состояние
Т2p  шины  в текущем цикле шины. Текущий цикл шины должен за-
канчиваться состоянием Т2p для того, чтобы режим  конвейерной
адресации  был  сохранен  и  в следующем цикле. Состояние Т2p
идентифицируется  установкой  активного  сигнала   ADS#.   На
рис.6-16  и  6-17  режим  конвейерной адресации заканчивается
после Цикла 4, так как последним состоянием Цикла 4  является
состояние  Т2i.  Это  означает, что 80386 не имел внутреннего
запроса шины перед получением  подтверждения  Цикла  4.  Если
цикл  заканчивается  состоянием Т2 или Т2i, то следующий цикл
будет неконвейерным.
     В действительности, конвейерный адрес почти всегда уста-
навливается сразу после обнаружения активного уровня NA#. Это
происходит потому, что при отсутствии любого другого  запроса
внутренний запрос предварительной выборки команды почти всег-
да ожидает обслуживания до тех пор, пока занят дешифратор ко-
манд  и  полностью заполнена очередь предварительно выбранных
команд. Следовательно, конвейерный адрес устанавливается  для
длинных  цепочек  циклов шины, если шина доступна, и в каждом
цикле шины оказывается установленным активный уровень сигнала
NA#.
     
     6.4.3.6  Конвейерная адресация при изменении
              размера шины данных
     Наличие сигнала BS16# обеспечивает простое соединение  с
16-разрядными  шинами  данных. Когда установлен активный уро-
вень BS16#, схема шинного интерфейса 80386 выполняет соответ-
ствующие переключения, чтобы осуществить передачу,  используя
16-разрядную шину данных, соединенную с линиями D0-D16.
     Однако,  при  одновременном использовании сигналов NA# и
BS16# имеет место некоторое взаимное  влияние  этих  сигналов
друг  на друга. Это взаимное влияние проявляется тогда, когда
требуются многократные циклы шины для  передачи  32-разрядных
операндов  по  16-разрядной шине. Если операнду требуются обе
16-разрядные половины 32-разрядной шины, то в соответствии  с
этим  требованием 80386 должен выполнить второй цикл шины для
того, чтобы полностью передать весь операнд. Именно это  тре-
бование  приводит  к  конфликтной  ситуации при использовании
сигнала NA#.
     Когда NA# оказывается установленным в активный  уровень,
80386 дает себе разрешение на обработку следующего внутренне-
го,  ожидающего  обслуживания  запроса  шины и выдает на шину
следующий подготовленный внутри адрес. Следовательно, активи-
зация NA# делает невозможным повторную  выборку  в  следующем
цикле  шины  текущего  адреса по линиям A2-A31, как это может
потребоваться, когда сигнал BS16# активизирован внешним  уст-
ройством.
     Для  разрешения  этого конфликта схема 80386 разработана
таким образом, чтобы удовлетворять следующим двум условиям:
     1). Для разрешения конфликта 80386 разработан таким  об-
разом,  чтобы игнорировать сигнал BS16# в текущем цикле шины,
если NA# уже оказался установленным в текущем цикле. Если NA#
оказался установленным, то текущий размер шины данных  прини-
мается равным 32 разрядам.
     2).  Также для разрешения конфликта в том случае, если и
NA# и BS16# оказались установленными в один и тот  же  момент
времени,  активный BS16# обладает более высокими по сравнению
с активным NA# приоритетом, и 80386 функционируется так,  как
если  бы  в этот момент сигнал NA# оказался неактивным. Внут-
ренняя схема 80386, схематично показанная на рис.6-18 работа-
ет таким образом, чтобы сигнал BS16# воспринимался активным и
сигнал NA# воспринимался неактивным, если оба входных сигнала
активизированы внешними устройствами в один и тот  же  момент
просмотра этих сигналов.
     6.4.4 Циклы подтверждения прерывания(INTA)
        
     В  ответ на запрос прерывания, поступивший на вход INTR,
когда прерывания разрешены, 80386 выполнит два цикла подтвер-
ждения прерывания. Эти циклы шины аналогичны циклам чтения, в
которых имеющий место  вид  деятельности  шины  соответствует
сигналам определения типа цикла шины, и каждый цикл продолжа-
ется  до  тех  пор,  пока процессор не получит подтверждение,
наблюдая за сигналом READY#.
     В зависимости от значения адресного разряда А2  различа-
ются  первый  и  второй циклы подтверждения прерывания. Адрес
байта, выдаваемый в первом  цикле  подтверждения  прерывания,
равен  4 (А31-А3 низкие, А2 высокий, ВЕ3#-ВЕ1# высокие и ВЕ0#
низкий). Адрес, выдаваемый во втором цикле подтверждения пре-
рывания, равен 0 (А31-А2 низкие, ВЕ3#-ВЕ1# высокие, ВЕ0# низ-
кий).
     Активный уровень сигнала LOCK# устанавливается с  начала
первого  цикла  подтверждения  прерывания  и до конца второго
цикла подтверждения прерывания.  Четыре  нерабочих  состояния
шины,  Тi,  вставляются процессором между двумя циклами подт-
верждения прерывания, чтобы обеспечить  время  блокированного
нерабочего  состояния  шины ("мертвое" время) по меньшей мере
длительностью 160 нс, что позволит в будущем ввести модифика-
ции скорости 80386, достигающие 24 МГц (при этом внешняя час-
тота CLK2 должна достигать 48 МГц), что в свою очередь  обес-
печит  совместимость с временным параметром TRHRL контроллера
прерываний 8259А.
     В течение обоих циклов  подтверждения  прерывания  линии
D0-D31 отключены.В конце первого цикла подтверждения прерыва-
ния данных для чтения не имеется. В конце второго цикла подт-
верждения  прерывания 80386 считает внешний вектор прерывания
по линиям D0-D7 шины данных.  Вектор  указывает  определенный
номер прерывания (от 0 до 255), требующего обслуживания.
     
     6.4.5 Цикл индикации останова
     
     80386 останавливается в результате выполнения инструкции
HALT. Для сигнализирования входа процессора в состояние оста-
нова  выполняется цикл индикации останова. Цикл индикации ос-
танова идентифицируется определенной комбинацией сигналов ти-
па цикла шины, указанной в разделе 6.2.5 Сигналы  определения
типа  цикла  шины, и адресом байта, равным 2. ВЕ0# и ВЕ2# при
этом служат только для различения цикла индикации останова от
цикла индикации выключения, в котором выдается адрес,  равный
0.  В  течение цикла останова данные, передаваемые по D0-D31,
неопределены.
     Остановленный 80386 возобновляет функционирование, когда
устанавливается активный уровень сигнала INTR (если  прерыва-
ния разрешены), или сигнала NMI, или сигнала RESET.
     
     6.4.6 Цикл индикации выключения
     
     80386  выключается  в результате появления ошибки защиты
памяти при попытке обработать двойную ошибку. Для  сигнализи-
рования  перехода процессора в выключенное состояние выполня-
ется цикл индикации  выключения.  Цикл  индикации  выключения
идентифицируется  определенной комбинацией сигналов определе-
ния типа цикла шины, указанной в разделе 6.2.5 Сигналы  опре-
деления  типа  цикла шины, и адресом байта, равным 0. Сигналы
ВЕ0# и ВЕ2# при этом служат только для отличения цикла  инди-
кации выключения от цикла индикации останова, в котором выда-
ется  адрес, равный 2. В течение цикла выключения данные, вы-
даваемые на линии D0-D31, неопределены. Цикл индикации выклю-
чения должен быть  подтвержден  установкой  активного  уровня
сигнала READY#.
     Выключенный  80386  возобновляет функционирование, когда
устанавливается активный уровень сигнала NMI или RESET.
     
     6.5 Дополнительные сведения о функционировании
     
     6.6.1 Вход и выход в/из состояния подтверждения
           захвата шины
     
     Состояние подтверждения захвата шины, Тh, вводится в от-
вет  на  установку  активного уровня входного сигнала HOLD. В
состоянии подтверждения захвата шины 80386 выключает все  вы-
ходные или двунаправленные сигналы, исключая сигнал HLDA. Ак-
тивный  уровень  сигнала  HLDA поддерживается все время, пока
80386 находится в состоянии  подтверждения  захвата  шины.  В
состоянии подтверждения захвата шины все входы, за исключени-
ем  HOLD  и  RESET, игнорируются (исключение составляет также
один положительный фронт сигнала  NMI,  который  запоминается
для  последующей  его обработки, когда сигнал HOLD перейдет в
неактивное состояние).
     Состояние Th может быть введено после нерабочего состоя-
ния шины, как на рис.6-25, или после  подтверждения  текущего
физического  цикла  шины, если при этом уровень сигнала LOCK#
неактивный, как на рис.6-26 и 5-27. Если установка  активного
сигнала  ВS16# требует выполнения второго 16-разрядного цикла
шины для завершения передачи физического  операнда,  то  этот
цикл выполняется до подтверждения сигнала HOLD, хотя диаграм-
мы состояний на рис.6-13 и 5-20 не отражают этой особенности.
     Выход  из  состояния Th осуществляется в ответ на снятие
активного уровня входного сигнала HOLD. Следующим  состоянием
будет  состояние Ti, как на рис.6-25, если не имеется ожидаю-
щего обслуживания внутреннего запроса шины. Если  же  имеется
внутренний,  ожидающий решения запрос шины, то следующим сос-
тоянием шины будет состояние Т1, как показано на  рис.6-26  и
6-27.
     Выход  из  состояния  Th осуществляется также в ответ на
установку активного уровня сигнала RESET.
     Если в течение состояния Th появится положительный фронт
на чувствительном к фронту входе NMI, то это событие  запоми-
нается  как  немаскируемое прерывание 2 и обслуживается после
выхода процессора из состояния Th кроме случая, когда до  вы-
хода из Th произойдет сброс 80386.
     
     6.6.2 Сброс в состоянии подтверждения захвата шины
     
     Активный сигнал RESET обладает более высоким приоритетом
по сравнению с активным сигналом HOLD. Следовательно, в ответ
на  установку  активного уровня на входе RESET осуществляется
выход из состояния Th. Если сигнал  RESET  активизируется  во
время действия сигнала HOLD, то 80386 установит свои выводы в
определенные  состояния  в соответствии с табл.6-3 "Состояния
выводов в течение действия сигнала RESET" и выполнит  обычную
процедуру внутреннего сброса.
     Если  активный уровень сигнала HOLD остается установлен-
ным и после снятия активного сигнала RESET, то 80386 перейдет
в состояние подтверждения захвата шины до того, как  выполнит
свой первый цикл шины, но при условии, что HOLD все еще оста-
ется активным в момент, когда 80386 в другом случае приступил
бы к выполнению своего первого цикла шины. Если HOLD остается
активным  после снятия сигнала RESET, то вход BUSY# все равно
анализируется как обычно, чтобы определить требуется ли само-
тестирование, сигнал ERROR# также при этом анализируется  как
обычно, чтобы определить, какой из двух воэможных сопроцессо-
ров  присутствует  в  системе  (или  когда сопроцессора вобще
нет).
     
     6.6.3  Функционирование  шины  в  течение  и  после
            действия сигнала RESET
     
     RESET является самым приоритетным входным сигналом,  при
установке  активного  уровня RESET прерывается любая деятель-
ность процессора. Выполняемый цикл шины может быть прерванным
на любой стадии, а нерабочие состояния или состояния подтвер-
ждения захвата  шины  прекращаются  при  установке  состояния
сброса.
     RESET должен поддерживаться в активном состоянии в тече-
ние  по  меньшей  мере 15 периодов частоты CLK2, чтобы он был
уверенно принят всеми схемами 80386, и по меньшей мере в  те-
чение  78  периодов  CLK2,  если выполняется самотестирование
80386, запрос на которое анализируется во время отрицательно-
го фронта RESET.
     Активные импульсы RESET длительностью меньше 15 периодов
CLK2 могут быть не восприняты.
     Активные импульсы RESET длительностью меньше 78 периодов
CLK2, за которыми следует самотестирование, могут привести  к
тому,  что  тест-структура  выдаст сообщение о неисправности,
когда в действительности неисправности не существует.  Допол-
нительное  расширение импульса RESET необходимо для получения
достоверных результатов самодиагностирования.
     При условии, что отрицательный фронт RESET отвечает тре-
бованиям, предъявляемым к времени  установки  t25  и  времени
удержания  t26, этот фронт определит фазу внутренней тактовой
частоты процессора, как показано на рис.6-28 и рис.7-7.
     Самодиагностирование 80386 можно запустить, если поддер-
живать сигнал BUSY# на низком уровне в момент снятия  сигнала
RESET, как показано на рис.6-28. Для выполнения всей процеду-
ры самодиагностирования требуется [(2^20)+ приблизительно 60]
периодов CLK2. Результаты тестирования не влияют на продолжи-
тельность самодиагностирования.
     Даже если после тестирования тест-структура указывает на
наличие  неисправности, 80386 все равно перейдет к выполнению
процедуры, которая должна была следовать за сбросом 80386.
     После отрицательного фронта RESET (и после  самотестиро-
вания, если в нем была необходимость) 80386 выполнит последо-
вательность внутренней инициализации за время, приблизительно
равное  350-450  периодам CLK2. Во время инициализации, между
двадцатым периодом CLK2 и первым циклом шины (который  после-
дует  за  инициализацией),  80386 анализирует состояние входа
ERROR#, чтобы отличить случай присутсвия в системе  сопроцес-
сора  80387 от случая, когда присутствует 80287 или в системе
вобще нет сопропроцессора. Различие  между  последними  двумя
случаями (в системе присутствует 80287 или в системе нет соп-
роцессора) задается программно.
     
     6.6 Сигнатура самотестирования
     
     По  завершению  самотестирования  (если самотестирование
было запрошено путем поддержания низкого уровня сигнала BUSY#
во время отрицательного фронта сигнала RESET), если  не  было
обнаружено  неисправностей  80386, то значение каждого из ре-
гистров AX и DX будет равно 0000H. Это справедливо  для  всех
модификаций  80386.  Ненулевые  значения  регистров AX или DX
после самотестирования указывает на  то,  что  какой-то  блок
80386 неисправен.
     
     6.7 Идентификаторы типа и модификации
     
     Чтобы  помочь  пользователям  80386,  80386 после сброса
поддерживает идентификатор типа и  идентификатор  модификации
соответственно в регистрах BH и BL. BH содержит 03H для иден-
тификации типа 80386. BL содержит беззнаковое двоичное число,
соответствующее  версии  данного  типа процессора. Хронология
изменения идентификатора модификации (версии) 80386 в BL  та-
кова:  он начинается с нуля и изменяется (обычно увеличивает-
ся) при изменениях данного типа  процессора,  предназначенных
для усовершенствования данного типа процессора по сравнению с
предыдущими версиями.
     Эти  особенности  предназначены  для  того, чтобы помочь
пользователям 80386 в их практической деятельности. Однако не
гарантируется, что значение идентификатора версии будет изме-
няться с каждым изменением версии  или  что  изменения  этого
значения  в  зависимости  от содержания или цели версии или в
зависимости от материалов, требующих изменения, будут  следо-
вать строго по непрерывной числовой последовательности. Фирма
Intel поступает с этими характеристиками данного типа процес-
сора только по своему усмотрению.
     
                                                   Табл.6-10.
      
              История идентификаторов типа и версии
     
ЙНННННННННЛНННННННННЛНННННННННЛНННННННННЛНННННННННЛННННННННН»
єСодержа- єИдентифи-єИдентифи-єСодержа- єИдентифи-єИдентифи-є
єние изме-єкатор ти-єкатор    єние изме-єкатор ти-єкатор    є
єнения    єпа       єверсии   єнения    єпа       єверсии   є
є80386    є         є         є80386    є         є         є
є         є         є         є         є         є         є
МНННННННННОНННННННННОНННННННННОНННННННННОНННННННННОННННННННН№
є         є         є         є         є         є         є


Яндекс цитирования