Страница:
(и ввода/вывода) также может динамически управлять разрядностью
шины данных. Динамическое управление разрядностью шины позволяет:
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, многие
системы используют этот вход для того, чтобы информировать
процессор об аварии системы по питанию или глобальной системной
ошибке.
Запросы маскируемых прерываний обычно подсоединяются ко входу
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.1Введение
Характерной чертой 80386 является наличие простого
функционального интерфейса для взаимосвязи с внешними модулями. В
80386 имеются две раздельные шины: шина адреса и шина данных. Шина
данных - 32-разрядная и двунаправленная. В большинстве применяемых
модулей для высокоскоростной локальной шины используются 32
разряда адреса, передаваемого по адресной шине, из них 2 младших
разряда дешифрируются в 4 сигнала строба данных (каждый из этих
сигналов разрешает или запрещает передачу соответствующего байта
данных), а остальные 30 разрядов представляют собой двоичный код
адреса. Для управления обменом по шине адреса и шине данных
используются соответствующие управляющие сигналы.
Изменяемая ширина (разрядность) шины данных позволяет
процессору взаимодействовать как с 32-х, так и с 16-разрядными
внешними шинами в синхронном режиме (см. 6.3.4).
Если передача информации состоит из нескольких циклов обмена,
каждый из которых требует 16-разрядной ширины шины данных, то все
равно 80386 в каждом цикле автоматически выполнит необходимую
процедуру установления разрядности шины.
N-разрядные периферийные устройства могут быть подключены к 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 | ЕСТЬ ЛИ |
+----T----T----T----+-------T-------T------T-----+ АВТОМАТИЧЕСКОЕ |
|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 состояний шины (дополнительную информацию о
a.ab.o-(oe шины см. 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 передает информацию между
a./`.f%aa.`., и памятью. Поскольку в 80386
хранится код операции, выполняемой сопроцессором, 80386
осуществляет запрошенную передачу данных в заданном направлении и
по заданному адресу памяти. 80386 анализирует и срабатывает по
уровню сигнала PEREQ. Сигнал PEREQ может быть асинхронным по
отношению к CLK2.
6.2.8.3Сопроцессор занят (BUSY#)
Активный уровень этого сигнала указывает на то, что
сопроцессор еще выполняет заданную текущую инструкцию и пока не
может принять другую инструкцию.
Когда 80386 встречает любую инструкцию сопроцессора, которая
оперирует с арифметическим стеком (стеком сопроцессора) (т.е.
инструкции загрузки, "POP" - инструкции (убрать в стек) или
арифметические операции), или инструкцию ожидания WAIT, он сразу
автоматически анализирует состояние входного сигнала BUSY# и будет
просматривать его до тех пор, пока BUSY# не переключится в
неактивное состояние.
Такой просмотр входного сигнала BUSY# предотвращает
преждевременную выдачу следующей инструкции во время выполнения
сопроцессором предыдущей инструкции. Инструкция сопроцессора
FNINIT и FNCLEX могут быть выполнены даже при наличии активного
уровня на входе BUSY#, так эти инструкции используются для
инициализации и прерывания-сброса сопроцессора.
80386 анализирует и срабатывает по уровню сигнала BUSY#.
Сигнал BUSY# может быть асинхронным по отношению к CLK2. Сигнал
шины данных. Динамическое управление разрядностью шины позволяет:
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, многие
системы используют этот вход для того, чтобы информировать
процессор об аварии системы по питанию или глобальной системной
ошибке.
Запросы маскируемых прерываний обычно подсоединяются ко входу
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.1Введение
Характерной чертой 80386 является наличие простого
функционального интерфейса для взаимосвязи с внешними модулями. В
80386 имеются две раздельные шины: шина адреса и шина данных. Шина
данных - 32-разрядная и двунаправленная. В большинстве применяемых
модулей для высокоскоростной локальной шины используются 32
разряда адреса, передаваемого по адресной шине, из них 2 младших
разряда дешифрируются в 4 сигнала строба данных (каждый из этих
сигналов разрешает или запрещает передачу соответствующего байта
данных), а остальные 30 разрядов представляют собой двоичный код
адреса. Для управления обменом по шине адреса и шине данных
используются соответствующие управляющие сигналы.
Изменяемая ширина (разрядность) шины данных позволяет
процессору взаимодействовать как с 32-х, так и с 16-разрядными
внешними шинами в синхронном режиме (см. 6.3.4).
Если передача информации состоит из нескольких циклов обмена,
каждый из которых требует 16-разрядной ширины шины данных, то все
равно 80386 в каждом цикле автоматически выполнит необходимую
процедуру установления разрядности шины.
N-разрядные периферийные устройства могут быть подключены к 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 | ЕСТЬ ЛИ |
+----T----T----T----+-------T-------T------T-----+ АВТОМАТИЧЕСКОЕ |
|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 состояний шины (дополнительную информацию о
a.ab.o-(oe шины см. 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 передает информацию между
a./`.f%aa.`., и памятью. Поскольку в 80386
хранится код операции, выполняемой сопроцессором, 80386
осуществляет запрошенную передачу данных в заданном направлении и
по заданному адресу памяти. 80386 анализирует и срабатывает по
уровню сигнала PEREQ. Сигнал PEREQ может быть асинхронным по
отношению к CLK2.
6.2.8.3Сопроцессор занят (BUSY#)
Активный уровень этого сигнала указывает на то, что
сопроцессор еще выполняет заданную текущую инструкцию и пока не
может принять другую инструкцию.
Когда 80386 встречает любую инструкцию сопроцессора, которая
оперирует с арифметическим стеком (стеком сопроцессора) (т.е.
инструкции загрузки, "POP" - инструкции (убрать в стек) или
арифметические операции), или инструкцию ожидания WAIT, он сразу
автоматически анализирует состояние входного сигнала BUSY# и будет
просматривать его до тех пор, пока BUSY# не переключится в
неактивное состояние.
Такой просмотр входного сигнала BUSY# предотвращает
преждевременную выдачу следующей инструкции во время выполнения
сопроцессором предыдущей инструкции. Инструкция сопроцессора
FNINIT и FNCLEX могут быть выполнены даже при наличии активного
уровня на входе BUSY#, так эти инструкции используются для
инициализации и прерывания-сброса сопроцессора.
80386 анализирует и срабатывает по уровню сигнала BUSY#.
Сигнал BUSY# может быть асинхронным по отношению к CLK2. Сигнал