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




Статья :: Внутренняя структура
    
     5.1. Внутренняя структура
     
     На рис.5.1. приведена обобщенная функциональная структу-
ра процессора 80386. Показанные 6  устройств  организованы  в
конвейерную  структуру,  которая  позволяя им рабитать парал-
лельно над различными комнадами или  над  различными  частями
одной  и то же команды. Устройство управления шиной управляет
передачами на шине для других устройств. Если ни одно из дру-
гих устройств не требуется шиной, устройство  предварительной
выборки  читает  следующее двойное слово комнадного потока из
памяти в  очередь  предварительной  выборки.  Таким  образом,
большинство  чтений байтов команды производится параллельно с
исполнением других команд во время свободных циклов шины. Ус-
тройство декодирования расшифровывает каждый  код  операции.,
Преобразовывает его в указатель на микрокод, которые реализу-
ет данную команду. Исполнительное устройство выполняет микро-
инструкции.  Исполнительное  устройство  может складывать два
32-битные регистра за 2 такта.  Аппаратура  умножения/деления
выполняет  32-битное  умножение  за время от 9 до 41 такта, в
зависимости от каличества значащих цифр, а 32-битное  деление
за  время от 38 до 42 тактов, в зависимости от того, являются
операнды знаковыми или беззнаковыми. Сдвиг, циклический сдвиг
и операции над полями битов выполняются при  помощи  быстрого
сдвигателя,  который может сдвигать до 64 бит за один такт. В
типичной смеси команд, которая включает  переходы  и  вызовы,
80386 исполняет команды со средней скоростью в 4,4 такта каж-
дая.
     
Исполнительное         Страничное           Устройство
устройство        устройство сегментации
г==================¬  г============¬  г====================¬
¦                  ¦  ¦            ¦  ¦ перекодировочный   ¦
¦  регистры        ¦  ¦ регистры   ¦  ¦ буфер просмотра    ¦
¦                  ¦  ¦ сегментов  ¦  ¦ исключений         ¦
¦==================¦  ¦            ¦  ¦                    ¦
¦ быстрый          ¦  ¦            ¦  ¦                    ¦
¦ сдвигатель       ¦  ¦            ¦  ¦                    ¦
¦==================¦  ¦============¦  ¦====================¦
¦ умножение/деление¦  ¦ транслятор ¦  ¦    транслятор      ¦
¦==================¦  ¦ сегментов  ¦  ¦    страниц         ¦
¦ариф.лог.устр-во  ¦=>¦            ¦=>¦                    ¦
L====T===T=========-  L=====T======-  L=========T==========-
     ¦   ¦                  ¦           г=======-
г====-   ¦                  ¦           ¦   устройство
¦        ¦                  ¦           ¦   управления шиной
¦        ¦                  ¦           ¦   г==============¬
¦        ¦                  V           V   ¦   интерфейс  ¦
¦        L==========T=======================¦   шины       ¦¬
¦                   V                       L==============-¦
¦             г===============¬     г=================¬     ¦
¦             ¦  дешифратор   ¦<====¦очередь предвари-¦<====-
¦             ¦               ¦     ¦ тельной выборки ¦
¦             ¦===============¦     ¦=================¦
¦             ¦   очередь     ¦     ¦ узел предварите-¦
L=============¦   команд      ¦     ¦  ной выборки    ¦
              L===============-     L=================-
              устройство
              декодирования
     
     Конвейерная  организация выборки команды, ее декодирова-
ние и исполнение на одном кристалле не является типичным  для
современных  микропроцесоров. С другой стороны помещение уст-
ройства управления памятью (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#
г===================T============================T===========¬
¦Стробы данных 80386¦Записываемые данные 80386   ¦Есть ли ав-¦
¦====T====T====T====+=======T=======T======T=====¦томатичес- ¦
¦BE3#¦BE2#¦BE1#¦BE0#¦D24-D31¦D16-D23¦D8-D15¦D0-D7¦кое дубли- ¦
¦    ¦    ¦    ¦    ¦       ¦       ¦      ¦     ¦рование?   ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦выс.¦выс.¦низ.¦неопр. ¦неопр. ¦неопр.¦  А  ¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦выс.¦низ.¦выс.¦неопр. ¦неопр. ¦  В   ¦неопр¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦низ.¦выс.¦выс.¦неопр. ¦   С   ¦неопр.¦  С  ¦      да   ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦низ.¦выс.¦выс.¦выс.¦   D   ¦неопр. ¦  D   ¦неопр¦      да   ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦выс.¦низ.¦низ.¦неопр. ¦неопр. ¦  В   ¦  А  ¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦низ.¦низ.¦выс.¦неопр. ¦   С   ¦  В   ¦неопр¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦низ.¦низ.¦выс.¦выс.¦   D   ¦   С   ¦  D   ¦  С  ¦      да   ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦выс.¦низ.¦низ.¦низ.¦неопр. ¦   С   ¦  В   ¦  А  ¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦низ.¦низ.¦низ.¦выс.¦   D   ¦   С   ¦  В   ¦неопр¦      нет  ¦
¦====+====+====+====+=======+=======+======+=====+===========¦
¦низ.¦низ.¦низ.¦низ.¦   D   ¦   С   ¦  В   ¦  А  ¦      нет  ¦
L====¦====¦====¦====¦=======¦=======¦======¦=====¦===========-
                                                              
     Обозначения: 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.
     
                 Определение типа цикла шины
г=======T=======T=======T=============================T======¬
¦ M/IO# ¦ D/C#  ¦ W/R#  ¦   Тип цикла шины            ¦Блоки-¦
¦       ¦       ¦       ¦                             ¦рована¦
¦       ¦       ¦       ¦                             ¦ли ши-¦
¦       ¦       ¦       ¦                             ¦на?   ¦
¦=======+=======+=======+=============================+======¦
¦низкий ¦низкий ¦низкий ¦ Подтверждение прерывания    ¦ да   ¦
¦=======+=======+=======+=============================+======¦
¦низкий ¦низкий ¦высокий¦ Запрещенная                 ¦ да   ¦
¦=======+=======+=======+=============================+======¦
¦низкий ¦высокий¦низкий ¦ Чтение данных из устройства ¦ нет  ¦
¦       ¦       ¦       ¦ ввода/вывода                ¦      ¦
¦=======+=======+=======+=============================+======¦
¦низкий ¦высокий¦высокий¦ Запись данных в устройство  ¦ нет  ¦
¦       ¦       ¦       ¦ ввода/вывода                ¦      ¦
¦=======+=======+=======+=============================+======¦
¦высокий¦низкий ¦низкий ¦ Чтение команды из памяти    ¦ нет  ¦
¦=======+=======+=======+=============================+======¦
¦высокий¦низкий ¦высокий¦ Останов:       Выключение:  ¦ нет  ¦
¦       ¦       ¦       ¦ Адрес=2        Адрес=0      ¦      ¦
¦       ¦       ¦       ¦ ========       ===========  ¦      ¦
¦       ¦       ¦       ¦ (BE0#Выс.      (BE0#Низк    ¦      ¦
¦       ¦       ¦       ¦  BE1#Выс.       BE1#Выс.    ¦      ¦
¦       ¦       ¦       ¦  BE2#Низк.      BE2#Выс.    ¦      ¦
¦       ¦       ¦       ¦  BE3#Выс.       BE3#Выс.    ¦      ¦
¦       ¦       ¦       ¦  A2-A31Низк.)   A2-A31Низк.)¦      ¦
¦=======+=======+=======+=============================+======¦
¦высокий¦высокий¦низкий ¦ Чтение данных из памяти     ¦ Неко-¦
¦       ¦       ¦       ¦                             ¦ торые¦
¦       ¦       ¦       ¦                             ¦ циклы¦
¦=======+=======+=======+=============================+======¦
¦высокий¦высокий¦высокий¦ Запись данных в память      ¦ Неко-¦
¦       ¦       ¦       ¦                             ¦ торые¦
¦       ¦       ¦       ¦                             ¦ циклы¦
L=======¦=======¦=======¦=============================¦======-
 
 
     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
г=========================T=================================¬
¦ Обозначение выводов     ¦  Уровни сигналов во время сброса¦
¦                         ¦  RESET                          ¦
¦=========================+=================================¦
¦          ADS#           ¦            Высокий              ¦
¦=========================+=================================¦
¦         D0-D31          ¦            Третье состояние     ¦
¦                         ¦            (высокий импеданс)   ¦
¦=========================+=================================¦
¦       BE0#-BE3#         ¦            Низкий               ¦
¦=========================+=================================¦
¦         A2-A31          ¦            Высокий              ¦
¦=========================+=================================¦
¦          W/R#           ¦            Высокий              ¦
¦=========================+=================================¦
¦          D/C#           ¦            Высокий              ¦
¦=========================+=================================¦
¦         M/IO#           ¦            Низкий               ¦
¦=========================+=================================¦
¦         LOCK#           ¦            Высокий              ¦
¦=========================+=================================¦
¦          HLDA           ¦            Низкий               ¦
L=========================¦=================================-
                                                             
     6.2.10   Список сигналов
    
     В табл.6-4 перечислены сигналы процессора 80386 и приве-
дены некоторые их характеристики.
     
                                                 Таблица 6-4.
      
                     Перечень сигналов 80386
г========T=============T========T=====T=======T=============¬
¦Название¦   Функции   ¦Активный¦Вход/¦Вход   ¦ Переключает-¦
¦ сигнала¦   сигнала   ¦ уровень¦выход¦синхрон¦ ся ли выход ¦
¦        ¦             ¦        ¦     ¦ный    ¦ в третье    ¦
¦        ¦             ¦        ¦     ¦или    ¦ (высокоимпе-¦
¦        ¦             ¦        ¦     ¦асинхро¦ дансное)    ¦
¦        ¦             ¦        ¦     ¦нный   ¦ состояние во¦
¦        ¦             ¦        ¦     ¦по от- ¦ время дейст-¦
¦        ¦             ¦        ¦     ¦ношению¦ вия 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(при- ¦     нет     ¦
¦        ¦             ¦        ¦     ¦мечание¦             ¦
L========¦=============¦========¦=====¦=======¦=============-
     
     Примечание: Если фаза внутреннего синхросигнала  процес-
сора  должна быть синхронизирована с внешними схемами, то не-
обходимо обеспечить определенные значения  времени  установки
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.
     
          Стробы данных и соответствующие им байты
                     данных и операндов
г================T==========================================¬
¦Стробы данных   ¦     Соответствующие сигналы шины данных  ¦
¦================+==========================================¦
¦   BE0#         ¦   D0-D7 (байт 0 - младший байт)          ¦
¦================+==========================================¦
¦   BE1#         ¦   D8-D15 (байт 1)                        ¦
¦================+==========================================¦
¦   BE2#         ¦   D16-D23 (байт 2)                       ¦
¦================+==========================================¦
¦   BE3#         ¦   D24-D31 (байт 3 - старший байт)        ¦
L================¦==========================================-
 
                                                 Таблица 6-6.
     
              Формирование шины A0-A31 из шины
                     BE0#-BE3# и A2-A31
г===========================================================¬
¦                  Адресные сигналы 80386                   ¦
¦==========================T=======T=======T=======T========¦
¦    A31 ......... A2      ¦ BE3#  ¦ BE2#  ¦ BE1#  ¦  BE0#  ¦
¦====T=====================+=======+=======+=======+========¦
¦    ¦  Физический адрес   ¦       ¦       ¦       ¦        ¦
¦====+======T====T====T====¦       ¦       ¦       ¦        ¦
¦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  ¦Низкий ¦Высокий¦Высокий¦ Высокий¦
L====¦======¦====¦====¦====¦=======¦=======¦=======¦========-

     Рис.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 Кбайта ¦ -адресуемое
         ¦           ¦           ¦           ¦ пространство
00000000HL===========-  00000000HL===========- ввода-вывода

          Пространство            Пространство
          физической              ввода/вывода
          памяти
     
     Примечание:  Так как в течение автоматически выполняемых
циклов взаимосвязи с  сопроцессором  устанавливается  высокий
уровень сигнала 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-разрядных устройств
г===================T=======================T===============¬
¦    Сигналы 80386  ¦  Сигналы 16-разрядной ¦ Комментарии   ¦
¦                   ¦         шины          ¦               ¦
¦====T====T====T====+====T======T===========¦               ¦
¦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     ¦               ¦
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.
      
           Циклы передачи байтов, слов и двойных слов
г===============T===========================================¬
¦               ¦     Длина логического операнда в байтах   ¦
¦               ¦===T===================T===================¦
¦               ¦ 1 ¦          2        ¦         4         ¦
¦===============+===+====T====T====T====+====T====T====T====¦
¦Адрес байта фи-¦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  ¦
L===============¦===¦====¦====¦====¦====¦====¦====¦====¦====-
                
     Обозначения:  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  поддерживает  достоверное значение записываемых
данных в течение первой фазы  следующего  цикла  шины,  чтобы
обеспечить  необходимое значение времени удержания записывае-
мых данных.

Внутренняя структура

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


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

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

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

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

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

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





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