Страница:
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# влияет на установку
b.+l*. бита 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 до запроса само диагностирования). Когда установлен активный
c`."%-l сигнала RESET, сигналы на всех остальных входных выводах
игнорируются, а шинные выводы
переводятся в нерабочее состояние как показано в табл.5-3. Если
одновременно установлены активные уровни сигналов RESET и HOLD, то
более приоритетным будет сигнал RESET. Сброс по сигналу RESET
будет произведен, даже если 80386 находился в состоянии
подтверждения захвата до установки RESET.
80386 анализирует и срабатывает по уровню (активному или
неактивному) сигнала RESET. Сигнал RESET может быть асинхронным по
отношению с CLK2. Если необходимо, фаза внутреннего синхросигнала
процессора, а также целое состояние 80386 могут быть полностью
синхронизированы с внешними схемами, если обеспечить необходимые
для этого значения времени установки t25 и времени удержания t26
отрицательного фронта сигнала
RESET.
Таблица 6-3
СОСТОЯНИЕ ВЫВОДОВ (НЕРАБОТАЮЩЕЙ ШИНЫ)
В ТЕЧЕНИЕ ДЕЙСТВИЯ СИГНАЛА RESET
+-----------------------------------------------------------------+
| ОБОЗНАЧЕНИЕ ВЫВОДОВ | УРОВНИ СИГНАЛОВ ВО ВРЕМЯ СБРОСА RESET |
+-------------------------+---------------------------------------|
| ADS# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| D0-D31 | ТРЕТЬЕ СОСТОЯНИЕ (ВЫСОКИЙ ИМПЕДАНС) |
+-------------------------+---------------------------------------|
| BE0#-BE3# | НИЗКИЙ |
+-------------------------+---------------------------------------|
| A2-A31 | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| W/R# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| D/C# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| M/IO# | НИЗКИЙ |
+-------------------------+---------------------------------------|
| LOCK# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| HLDA | НИЗКИЙ |
+-----------------------------------------------------------------+
6.2.10 Список сигналов
В табл.6-4 перечислены сигналы процессора 80386 и приведены
некоторые их характеристики.
Таблица 6-4
ПЕРЕЧЕНЬ СИГНАЛОВ 80386
+------------------------------------------------------------------------------+
| НАЗВАНИЕ | ФУНКЦИИ | АКТИВНЫЙ | ВХОД/ | ВХОД | ПЕРЕКЛЮЧАЕТСЯ |
| СИГНАЛА | СИГНАЛА | УРОВЕНЬ | ВЫХОД | СИНХРОННЫЙ | ЛИ ВЫХОД |
| | | | | ИЛИ | В ТРЕТЬЕ |
| | | | | АСИНХРОННЫЙ | ВЫСОКОИМПЕДАНСНОЕ|
| | | | | ПО | СОСТОЯНИЕ ВО |
| | | | | ОТНОШЕНИЮ | ВРЕМЯ ДЕЙСТВИЯ |
| | | | | К CLK2 | HLDA? |
+----------+---------------+----------+-------+-------------+------------------|
| CLK2 | СИНХРОСИГНАЛ | - | ВХОД | - | - |
+----------+---------------+----------+-------+-------------+------------------|
| D0-D31 | ШИНА ДАННЫХ | ВЫСОКИЙ | ВХОД/ | S | ДА |
| | | | ВЫХОД | | |
+----------+---------------+----------+-------+-------------+------------------|
| E0#-BE3# | СТРОБЫ ДАННЫХ | НИЗКИЙ | ВЫХОД | - | ДА |
+----------+---------------+----------+-------+-------------+------------------|
| A2-A31 | ШИНА АДРЕСА | ВЫСОКИЙ | ВЫХОД | - | ДА |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
| W/R# | УКАЗАТЕЛЬ | ВЫСОКИЙ |ВЫХОД | - | ДА |
| | РЕЖИМА ЗАПИСИ | | | | |
| | ИЛИ ЧТЕНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| D/C# | УКАЗАТЕЛЬ | ВЫСОКИЙ |ВЫХОД | - | ДА |
| | ОБМЕНА ДАННЫМИ| | | | |
| | ИЛИ | | | | |
| | УПРАВЛЯЮЩИМИ | | | | 3
3 | СИГНАЛАМИ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| M/IO# | УКАЗАТЕЛЬ | ВЫСОКИЙ | ВЫХОД | - | ДА |
| | ОБРАЩЕНИЯ | | | | |
| | ПАМЯТИ ИЛИ В/В| | | | |
+----------+---------------+----------+-------+-------------+------------------|
| LOCK# | БЛОКИРОВКА | НИЗКИЙ | ВЫХОД | - | ДА |
| | ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| ADS# | СТРОБ АДРЕСА | НИЗКИЙ | ВЫХОД | - | ДА |
+----------+---------------+----------+-------+-------------+------------------|
| NA# | ЗАПРОС | НИЗКИЙ | ВХОД | S | ДА |
| | СЛЕДУЮЩЕГО | | | | |
| | АДРЕСА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| BS16# | 16-РАЗРЯДНАЯ | НИЗКИЙ | ВХОД | S | ДА |
| | ШИРИНА ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| READY# | ПЕРЕДАЧА | НИЗКИЙ | ВХОД | S | ДА |
| | ПОДТВЕРЖДЕНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| HOLD | ЗАПРОС НА | ВЫСОКИЙ | ВХОД | S | ДА |
| | ЗАХВАТ ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| HLDA | ПОДТВЕРЖДЕНИЕ | ВЫСОКИЙ | ВЫХОД | S | НЕТ |
| | ЗАХВАТА ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| PEREQ | ЗАПРОС | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | СОПРОЦЕССОРА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| BUSY# | СОПРОЦЕССОР | НИЗКИЙ | ВХОД | A | НЕТ |
| | ЗАНЯТ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| ERROR# | ОШИБКА | НИЗКИЙ | ВХОД | A | НЕТ |
| | СОПРОЦЕССОРА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| INTR | МАСКИРУЕМЫЙ | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | ЗАПРОС | | | | |
| | ПРЕРЫВАНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| NMI | НЕМАСКИРУЕМЫЙ | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | ЗАПРОС | | | | |
| | ПРЕРЫВАНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| RESET | СБРОС | ВЫСОКИЙ | ВХОД |A{ПРИМЕЧАНИЕ}| НЕТ |
+------------------------------------------------------------------------------+
Примечание: Если фаза внутреннего синхросигнала процессора должна
быть синхронизирована с внешними схемами, то необходимо обеспечить
определенные значения времени установки t25 и времени удержания
t26 отрицательного фронта сигнала RESET.
6.3Механизм обмена по шине
6.3.1 Введение
Все передачи данных занимают один или более циклов шины.
Операнды логических данных длиной в байт, слово и двойное слово
могут быть переданы без выравнивания физических адресов. Любой
байт может быть краевым байтом (первым или последним)
передаваемого операнда, но при этом для передачи не выровненного
операнда может потребоваться два или даже три физических цикла
шины. (См.6.3.4 Изменяемый размер шины данных и 6.3.6 Не
выровненные операнды.)
Сигналы адреса 80386 предусмотрены для упрощения аппаратуры
внешней системы. Старшие биты адреса реализованы линиями A2-A31.
Младшие биты адреса в виде BE0#-BE3# обеспечивают выборку
соответственно четырех байтов 32-битной шины данных. Благодаря
этому физический операнд представляется в каждом цикле в наиболее
удобной форме.
Активные уровни выходных сигналов стробов данных BE0#-BE3#
устанавливаются, если соответствующие им байты шины данных будут
принимать участие в предстоящем цикле шины, как указано в табл.6-
6. Изменяя комбинацию установленных стробов данных можно
.aci%ab"(bl любой вариант выборки смежных байтов, но никакая
комбинация BE0#-BE3# не позволит выбрать байты, разделенные двумя
или тремя нефункционирующими байтами.
Адресные биты A0-A1 физического адреса операнда могут быть
образованы, когда необходимо (например, для интерфейсов Multibus I
и Multibus II), как функция установленных стробов данных.
Соответствие значений A0 и A1 сигналам BE0#-BE3# приведено в
табл.6-6. Логические схемы формирования A0 и A1 приведены на рис.6-
3.
Таблица 6-6
СТРОБЫ ДАННЫХ И СООТВЕТСТВУЮЩИЕ ИМ БАЙТЫ ДАННЫХ И ОПЕРАНДОВ
+-----------------------------------------------------------+
| СТРОБЫ ДАННЫХ | СООТВЕТСТВУЮЩИЕ СИГНАЛЫ ШИНЫ ДАННЫХ |
+----------------+------------------------------------------|
| BE0# | D0-D7 (БАЙТ 0 - МЛАДШИЙ БАЙТ) |
+----------------+------------------------------------------|
| BE1# | D8-D15 (БАЙТ 1) |
+----------------+------------------------------------------|
| BE2# | D16-D23 (БАЙТ 2) |
+----------------+------------------------------------------|
| BE3# | D24-D31 (БАЙТ 3 - СТАРШИЙ БАЙТ) |
+-----------------------------------------------------------+
Таблица 6-6
ФОРМИРОВАНИЕ ШИНЫ A0-A31 ИЗ ШИНЫ BE0#-BE3# И A2-A31
+-----------------------------------------------------------+
| АДРЕСНЫЕ СИГНАЛЫ 80386 |
+-----------------------------------------------------------|
| A31 ......... A2 | BE3# | BE2# | BE1# | BE0# |
+--------------------------+-------+-------+-------+--------|
| | ФИЗИЧЕСКИЙ АДРЕС | | | | |
+----+---------------------| | | | |
|A31 | .... | A2 | A1 | A0 | | | | |
+----+------+----+----+----+-------|-------+-------+--------|
|A31 | .... | A2 | 0 | 0 | X | X | X | НИЗКИЙ |
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 0 | 1 | X | X |НИЗКИЙ | ВЫСОКИЙ|
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 1 | 0 | X |НИЗКИЙ |ВЫСОКИЙ| ВЫСОКИЙ|
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 1 | 1 |НИЗКИЙ |ВЫСОКИЙ|ВЫСОКИЙ| ВЫСОКИЙ|
+-----------------------------------------------------------+
Рис.6-3. Логические схемы формирования A0, A1 как функций сигналов
BE0#-BE3#
K - MAP for A1 Signal - карта Карно для сигнала A1.
Каждый цикл шины включает в себя по меньшей мере два состояния
шины. Каждое состояние шины занимает по времени один период
тактовой частоты процессора. Простейший цикл шины может быть
дополнен состояниями шины, которые называются состояниями
ожидания. См. 6.4 Описание функционирования шины.
Поскольку для выполнение цикла шины требуется как минимум два
состояния шины (что равняется двум периодам тактовой частоты
процессора), то максимальная скорость передачи данных между
внешними устройствами и 80386 равна одному 4-байтовому двойному
слову в каждые два периода тактовой частоты процессора, что
соответствует максимальной пропускной способности шины 32
мегабайт/сек (80386-16 работает на тактовой частоте 16 МГц).
6.3.2 Пространства памяти и ввода/вывода
В течение циклов шины возможно обращение к пространству памяти
или к пространству ввода/вывода. Периферийные устройства в системе
могут быть отнесены либо к пространству памяти, либо к
пространству ввода/вывода, или и к тому и к другому пространствам.
Как показано на рис.6-4, физические адреса памяти находятся в
диапазоне от 00000000H до FFFFFFFFH (4 гигабайта), а адреса
ввода/вывода - в диапазоне от 00000000H до 0000FFFFH (64
килобайта), необходимом для адресации устройств ввода/вывода.
Отметим адреса ввода/вывода, используемые в автоматически
выполняемых для взаимосвязи с сопроцессором циклах ввода/вывода.
Эти адреса от 800000F8H до 800000FFH не входят в диапазон
вышеуказанных адресов для программной адресации устройств
ввода/вывода и позволяют легко сформировать сигнал выборки
сопроцессора, используя сигналы A31 и M/IO#.
FFFFFFFFh+------------+ + - - - - - - - +
| | | |
| |
| | | НЕАДРЕСУЕМОЕ |
| |
| | | |
| |
| | | |
| | 800000FFh+---------------+ СОПРОЦЕССОР
| ФИЗИЧЕСКАЯ | 800000F8h| | (80387 ИЛИ 80287)
| ПАМЯТЬ | (ПРИМЕЧ.1)+---------------+
| | | |
| | НЕАДРЕСУЕМОЕ
| 4 ГБАЙТА | | |
| |
| | 0000FFFFh+---------------|
| | | 64 КБАЙТА | ПРОГРАММНО АДРЕСУЕМОЕ
| | | | ПРОСТРАНСТВО ВВОДА/ВЫВОДА
00000000h+------------+ 00000000h+---------------+
ПРОСТРАНСТВО ФИЗИЧЕСКОЙ ПАМЯТИ ПРОСТРАНСТВО ВВОДА/ВЫВОДА
Примечание: Так как в течение автоматически выполняемых циклов
взаимосвязи с сопроцессором устанавливается высокий уровень
сигнала A31, то установка единичного уровня A31 и нулевого уровня
строба формирования сигала выборки сопроцессора.
Рис.6-4 Пространства физической памяти и ввода/вывода
6.3.3 Организация памяти и ввода/вывода
Ширина магистрали данных от 80386 к пространствам памяти и
ввода/вывода может составлять 32 бита или 16 бит. В случае 32-
разрядной ширины магистрали пространства памяти и ввода/вывода
организованы соответственно как массивы физических 32-разрядных
двойных слов. Каждое двойное слово памяти или ввода/вывода состоит
из 4-х индивидуально адресуемых (с помощью последовательных
адресов байтов) байтов. Самый меньший (из четырех) адрес байта
относится к сигналам D0-D7; самый больший - к сигналам D24-D31.
80386 имеет такой сигнал управления шиной, как BS16#, который
обеспечивает правильную взаимосвязь с 16-разрядными пространствами
памяти и ввода/вывода, организованными в виде последовательности
16-битных слов. Циклы обмена с 16-разрядными и 32-разрядными
устройствами памяти или ввода/вывода могут встречаться в любой
последовательности, так как состояние сигнала BS16# анализируется
в течение каждого цикла шины. См. 6.3.4 Изменяемый размер шины
данных. Сигналы стробов данных BE0#-BE3# позволяют обращаться к
отдельным байтам при любой структуре памяти или ввода/вывода (32-
разрядной или 16-разрядной).
6.3.4 Изменяемый размер шины данных
Изменяемый размер шины данных отличительная особенность 80386,
обеспечивающая непосредственную связь процессора с 32-разрядными
или 16-разрядными шинами данных памяти или ввода/вывода. Один
процессор может быть соединен с шинами двух размеров. Передачи
в/из 32- или 16-разрядные порты сопровождаются определением в
каждом цикле шины необходимой ширины шины. В течение каждого цикла
шины схема дешифрации адреса или подчиненное устройство сами могут
установить активный уровень сигнала BS16# для 16-разрядного порта,
или неактивный уровень BS16# для 32-разрядного порта.
Когда установлен активный уровень сигнала BS16#, процессор
автоматически вместо одной передачи разрядностью больше 16 бит или
одной 16-разрядной не выровненной передачи выполнит две или три
передачи, как потребуется. При активном уровне BS16# все передачи
операндов осуществляются только по линиям D0-D16. Поэтому 16-
разрядные устройства памяти или ввода/вывода обмениваются только
сигналами данных D0-D16. Специальных переключателей не требуется.
Действие активного уровня сигнала BS16# проявляется только тогда,
когда в текущем цикле шины установлены активные уровни сигналов
BE2# и/или BE3#. Если в передаче участвуют только линии D0-D15, то
установка активного уровня BS16# не будет иметь значение, так как
передача будет производиться все равно по 16-разрядной шине
независимо от состояния BS16#. Другими словами, установка
активного уровня BS16# необязательна, когда только младшая
половина
разрядов шины участвует в текущем цикле.
Существуют две ситуации, при которых проявляется влияние
активного уровня BS16# на действия процессора, зависящие также от
значений стробов данных BE0#-BE3# в текущем цикле шины:
- в обмене участвует только старшая половина линий шины:
устанавливаются активные уровни только сигналов BE2# и/или BE3#;
- в обмене участвуют и старшая, и младшая половины линий шины:
устанавливаются активные уровни по меньшей мере сигналов BE1# и
BE2# (и возможно также сигналов BE0# и/или BE3#).
Воздействие BS16# на циклы чтения "с учетом только старшей
половины линий шины":
Установка активного уровня BS16# в течение циклов чтения "с
участием только старшей половины линий шины" вынудит 80386
считывать младшие 16 битов шины данных и игнорировать данные на
старших 16 битах шины данных. Т.е. вместо считывания данных с
линий D16-D31 в соответствии с установленными BE2# и BE3# будут
считываться данные с линий D0-D16.
Взаимодействие сигнала BS16# на циклы записи "с участием
только старшей половины линий шины":
Установка активного уровня BS16# в течение циклов записи "с
участием только старшей половины" не отразится на процедуре
записи. Когда в цикле записи установлены активные уровни сигналов
BE2# и/или BE3#, 80386 всегда копирует сигналы данных D16-D31 на
линии D0-D15 (см. табл. 6-1). Поэтому не требуется дополнительных
действий 80386 для того, чтобы выполнить эти циклы записи по 32-
или 16-разрядной шине.
Воздействие сигнала BS16# на циклы чтения "с участием и
ab `h%) и младшей половин шины":
Установка активного уровня сигнала BS16# в течение циклов
чтения "с участием и старшей и младшей половин шины" заставит
процессор выполнить два 16-разрядных цикла чтения для передачи
всего физического операнда. Байты 0 и 1 (в соответствии с
установленными BE0# и BE1#) будут считаны в первом цикле с линий
D0-D16. Байты 2 и 3 (в соответствии с установленными BE2# и BE3#)
будут считаны во втором цикле и снова с линий D0-D16. Сигналы на
линиях D16-D31 игнорируются в течение обоих 16-разрядных циклов.
BE0# и BE1# всегда находятся в неактивном состоянии в течение
второго 16-разрядного цикла.
Активный уровень сигнала BS16# необязательно устанавливать на
время второго 16-разрядного цикла. См. рис.6-14, циклы 2 и 2а.
Воздействие сигнала BS16# (активного уровня) на циклы записи
"с участием и старшей и младшей половин шины":
Установка активного уровня сигнала BS16# в течение циклов
записи "с участием и старшей и младшей половин шины" заставит
процессор 80386 выполнять два 16-разрядных цикла записи для
передачи целого физического операнда. Наличие всех байтов операнда
на линиях D0-D15 в течение первого цикла записи позволит внешним
устройствам получить байты 0 и 1 (в соответствии с установленными
значениями BE0# и BE1#) по линиям D0-D16. Во втором цикле 80386
скопирует байты 2 и 3 на линии D0-D15, и запись этих байтов (в
соответствии с установленными значениями BE2# и BE3#) будет
произведена также по линиям D0-D16. Сигналы BE0# и BE1# всегда
переключаются в неактивное состояние в течение второго 16-
разрядного цикла. Установка активного уровня сигнала BS16# в
течение второго 16-разрядного цикла необязательна. См. рис.6-14,
циклы 1 и 1а.
6.3.5 Связь с 32 и 16 разрядным устройствами памяти
В 32-разрядных устройствах физической памяти, таких как на
рис.6-5, каждое физическое двойное слово начинается с байта, адрес
которого кратен 4. Сигналы A2-A31 обычно используются для выборки
определенного двойного слова, а сигналы BE0#-BE3# - для выборки
определенного байта в двойном слове BS16# поддерживается в
неактивном состоянии во всех циклах шины, оперирующих с 32-
разрядным массивом.
Когда в состав системы входят 16-разрядные физические массивы,
как показано на рис.6-6, адрес начала каждого 16-битного
физического слова кратен 2. Отметим, что схема дешифрации адреса
ADDRESS DECODER при дешифрации адреса формирует активный уровень
сигнала BS16# только в течение циклов шины, оперирующих с 16-
разрядными устройствами памяти, то схема дешифрации адреса
анализирует также значения сигналов BE0#-BE3# и W/R#, чтобы
определить, когда должен быть установлен активный уровень сигнала
BS16#. См. 6.4.3.7 Оптимальное использование метода конвейерной
адресации в случае 16-разрядной ширины шины.
Сигналы A2-A31 обычно используются для адресации 32-разрядных
и 16-разрязных устройств. Для адресации 16-разрядных устройств
необходимы также сигнал A1 и два сигнала строба данных.
Чтобы сформировать необходимые значения сигнала A1 и двух
сигналов строба данных для обращения к 16-разрядному устройству,
сигналы BE0#-BE3# должен быть дешифрированы в соответствии с табл.
6-7. Отметим некоторые запрещенные комбинации BE0#-BE3#, никогда
не вырабатываемые 80386. При наличии запрещенной комбинации BE0#-
BE3# на входе дешифратора выходы его не анализируются и состояние
их обозначается X. Запрещенные комбинации BE0#-BE3# могут быть
использованы при необходимости для более оптимального
использования дешифратора.
Таблица 6-7
ФОРМИРОВАНИЕ СИГНАЛОВ A1, BHE# И BLE# ДЛЯ
АДРЕСАЦИИ 16-РАЗРЯДНЫХ УСТРОЙСТВ
+-----------------------------------------------------------+
| СИГНАЛЫ 80386 | СИГНАЛЫ 16-РАЗРЯДНОЙ | КОММЕНТАРИИ |
| | ШИНЫ | |
+-------------------+-----------------------| |
|BE3#|BE2#|BE1#|BE0#| A1 | BHE# | BLE# (A0) | |
+----+----+----+----+----+------+-----------+---------------|
| H* | H* | H* | H* | X | X | X | X - НЕТ НИ |
| | | | | | | | ОДНОГО АКТИВ- |
| | | | | | | | НОГО БАЙТА |
+----+----+----+----+----+------+-----------+---------------|
| H | H | H | L | L | H | L | |
+----+----+----+----+----+------+-----------+---------------|
| H | H | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| H | H | L | L | L | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| H | L | H | H | H | H | L | |
+----+----+----+----+----+------+-----------+---------------|
| H* | L* | H* | L* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| H | L | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| H | L | L | L | L | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| L | H | H | H | H | L | H | |
+----+----+----+----+----+------+-----------+---------------|
сигнала 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# влияет на установку
b.+l*. бита 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 до запроса само диагностирования). Когда установлен активный
c`."%-l сигнала RESET, сигналы на всех остальных входных выводах
игнорируются, а шинные выводы
переводятся в нерабочее состояние как показано в табл.5-3. Если
одновременно установлены активные уровни сигналов RESET и HOLD, то
более приоритетным будет сигнал RESET. Сброс по сигналу RESET
будет произведен, даже если 80386 находился в состоянии
подтверждения захвата до установки RESET.
80386 анализирует и срабатывает по уровню (активному или
неактивному) сигнала RESET. Сигнал RESET может быть асинхронным по
отношению с CLK2. Если необходимо, фаза внутреннего синхросигнала
процессора, а также целое состояние 80386 могут быть полностью
синхронизированы с внешними схемами, если обеспечить необходимые
для этого значения времени установки t25 и времени удержания t26
отрицательного фронта сигнала
RESET.
Таблица 6-3
СОСТОЯНИЕ ВЫВОДОВ (НЕРАБОТАЮЩЕЙ ШИНЫ)
В ТЕЧЕНИЕ ДЕЙСТВИЯ СИГНАЛА RESET
+-----------------------------------------------------------------+
| ОБОЗНАЧЕНИЕ ВЫВОДОВ | УРОВНИ СИГНАЛОВ ВО ВРЕМЯ СБРОСА RESET |
+-------------------------+---------------------------------------|
| ADS# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| D0-D31 | ТРЕТЬЕ СОСТОЯНИЕ (ВЫСОКИЙ ИМПЕДАНС) |
+-------------------------+---------------------------------------|
| BE0#-BE3# | НИЗКИЙ |
+-------------------------+---------------------------------------|
| A2-A31 | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| W/R# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| D/C# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| M/IO# | НИЗКИЙ |
+-------------------------+---------------------------------------|
| LOCK# | ВЫСОКИЙ |
+-------------------------+---------------------------------------|
| HLDA | НИЗКИЙ |
+-----------------------------------------------------------------+
6.2.10 Список сигналов
В табл.6-4 перечислены сигналы процессора 80386 и приведены
некоторые их характеристики.
Таблица 6-4
ПЕРЕЧЕНЬ СИГНАЛОВ 80386
+------------------------------------------------------------------------------+
| НАЗВАНИЕ | ФУНКЦИИ | АКТИВНЫЙ | ВХОД/ | ВХОД | ПЕРЕКЛЮЧАЕТСЯ |
| СИГНАЛА | СИГНАЛА | УРОВЕНЬ | ВЫХОД | СИНХРОННЫЙ | ЛИ ВЫХОД |
| | | | | ИЛИ | В ТРЕТЬЕ |
| | | | | АСИНХРОННЫЙ | ВЫСОКОИМПЕДАНСНОЕ|
| | | | | ПО | СОСТОЯНИЕ ВО |
| | | | | ОТНОШЕНИЮ | ВРЕМЯ ДЕЙСТВИЯ |
| | | | | К CLK2 | HLDA? |
+----------+---------------+----------+-------+-------------+------------------|
| CLK2 | СИНХРОСИГНАЛ | - | ВХОД | - | - |
+----------+---------------+----------+-------+-------------+------------------|
| D0-D31 | ШИНА ДАННЫХ | ВЫСОКИЙ | ВХОД/ | S | ДА |
| | | | ВЫХОД | | |
+----------+---------------+----------+-------+-------------+------------------|
| E0#-BE3# | СТРОБЫ ДАННЫХ | НИЗКИЙ | ВЫХОД | - | ДА |
+----------+---------------+----------+-------+-------------+------------------|
| A2-A31 | ШИНА АДРЕСА | ВЫСОКИЙ | ВЫХОД | - | ДА |
+------------------------------------------------------------------------------+
+------------------------------------------------------------------------------+
| W/R# | УКАЗАТЕЛЬ | ВЫСОКИЙ |ВЫХОД | - | ДА |
| | РЕЖИМА ЗАПИСИ | | | | |
| | ИЛИ ЧТЕНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| D/C# | УКАЗАТЕЛЬ | ВЫСОКИЙ |ВЫХОД | - | ДА |
| | ОБМЕНА ДАННЫМИ| | | | |
| | ИЛИ | | | | |
| | УПРАВЛЯЮЩИМИ | | | | 3
3 | СИГНАЛАМИ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| M/IO# | УКАЗАТЕЛЬ | ВЫСОКИЙ | ВЫХОД | - | ДА |
| | ОБРАЩЕНИЯ | | | | |
| | ПАМЯТИ ИЛИ В/В| | | | |
+----------+---------------+----------+-------+-------------+------------------|
| LOCK# | БЛОКИРОВКА | НИЗКИЙ | ВЫХОД | - | ДА |
| | ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| ADS# | СТРОБ АДРЕСА | НИЗКИЙ | ВЫХОД | - | ДА |
+----------+---------------+----------+-------+-------------+------------------|
| NA# | ЗАПРОС | НИЗКИЙ | ВХОД | S | ДА |
| | СЛЕДУЮЩЕГО | | | | |
| | АДРЕСА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| BS16# | 16-РАЗРЯДНАЯ | НИЗКИЙ | ВХОД | S | ДА |
| | ШИРИНА ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| READY# | ПЕРЕДАЧА | НИЗКИЙ | ВХОД | S | ДА |
| | ПОДТВЕРЖДЕНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| HOLD | ЗАПРОС НА | ВЫСОКИЙ | ВХОД | S | ДА |
| | ЗАХВАТ ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| HLDA | ПОДТВЕРЖДЕНИЕ | ВЫСОКИЙ | ВЫХОД | S | НЕТ |
| | ЗАХВАТА ШИНЫ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| PEREQ | ЗАПРОС | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | СОПРОЦЕССОРА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| BUSY# | СОПРОЦЕССОР | НИЗКИЙ | ВХОД | A | НЕТ |
| | ЗАНЯТ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| ERROR# | ОШИБКА | НИЗКИЙ | ВХОД | A | НЕТ |
| | СОПРОЦЕССОРА | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| INTR | МАСКИРУЕМЫЙ | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | ЗАПРОС | | | | |
| | ПРЕРЫВАНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| NMI | НЕМАСКИРУЕМЫЙ | ВЫСОКИЙ | ВХОД | A | НЕТ |
| | ЗАПРОС | | | | |
| | ПРЕРЫВАНИЯ | | | | |
+----------+---------------+----------+-------+-------------+------------------|
| RESET | СБРОС | ВЫСОКИЙ | ВХОД |A{ПРИМЕЧАНИЕ}| НЕТ |
+------------------------------------------------------------------------------+
Примечание: Если фаза внутреннего синхросигнала процессора должна
быть синхронизирована с внешними схемами, то необходимо обеспечить
определенные значения времени установки t25 и времени удержания
t26 отрицательного фронта сигнала RESET.
6.3Механизм обмена по шине
6.3.1 Введение
Все передачи данных занимают один или более циклов шины.
Операнды логических данных длиной в байт, слово и двойное слово
могут быть переданы без выравнивания физических адресов. Любой
байт может быть краевым байтом (первым или последним)
передаваемого операнда, но при этом для передачи не выровненного
операнда может потребоваться два или даже три физических цикла
шины. (См.6.3.4 Изменяемый размер шины данных и 6.3.6 Не
выровненные операнды.)
Сигналы адреса 80386 предусмотрены для упрощения аппаратуры
внешней системы. Старшие биты адреса реализованы линиями A2-A31.
Младшие биты адреса в виде BE0#-BE3# обеспечивают выборку
соответственно четырех байтов 32-битной шины данных. Благодаря
этому физический операнд представляется в каждом цикле в наиболее
удобной форме.
Активные уровни выходных сигналов стробов данных BE0#-BE3#
устанавливаются, если соответствующие им байты шины данных будут
принимать участие в предстоящем цикле шины, как указано в табл.6-
6. Изменяя комбинацию установленных стробов данных можно
.aci%ab"(bl любой вариант выборки смежных байтов, но никакая
комбинация BE0#-BE3# не позволит выбрать байты, разделенные двумя
или тремя нефункционирующими байтами.
Адресные биты A0-A1 физического адреса операнда могут быть
образованы, когда необходимо (например, для интерфейсов Multibus I
и Multibus II), как функция установленных стробов данных.
Соответствие значений A0 и A1 сигналам BE0#-BE3# приведено в
табл.6-6. Логические схемы формирования A0 и A1 приведены на рис.6-
3.
Таблица 6-6
СТРОБЫ ДАННЫХ И СООТВЕТСТВУЮЩИЕ ИМ БАЙТЫ ДАННЫХ И ОПЕРАНДОВ
+-----------------------------------------------------------+
| СТРОБЫ ДАННЫХ | СООТВЕТСТВУЮЩИЕ СИГНАЛЫ ШИНЫ ДАННЫХ |
+----------------+------------------------------------------|
| BE0# | D0-D7 (БАЙТ 0 - МЛАДШИЙ БАЙТ) |
+----------------+------------------------------------------|
| BE1# | D8-D15 (БАЙТ 1) |
+----------------+------------------------------------------|
| BE2# | D16-D23 (БАЙТ 2) |
+----------------+------------------------------------------|
| BE3# | D24-D31 (БАЙТ 3 - СТАРШИЙ БАЙТ) |
+-----------------------------------------------------------+
Таблица 6-6
ФОРМИРОВАНИЕ ШИНЫ A0-A31 ИЗ ШИНЫ BE0#-BE3# И A2-A31
+-----------------------------------------------------------+
| АДРЕСНЫЕ СИГНАЛЫ 80386 |
+-----------------------------------------------------------|
| A31 ......... A2 | BE3# | BE2# | BE1# | BE0# |
+--------------------------+-------+-------+-------+--------|
| | ФИЗИЧЕСКИЙ АДРЕС | | | | |
+----+---------------------| | | | |
|A31 | .... | A2 | A1 | A0 | | | | |
+----+------+----+----+----+-------|-------+-------+--------|
|A31 | .... | A2 | 0 | 0 | X | X | X | НИЗКИЙ |
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 0 | 1 | X | X |НИЗКИЙ | ВЫСОКИЙ|
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 1 | 0 | X |НИЗКИЙ |ВЫСОКИЙ| ВЫСОКИЙ|
+----+------+----+----+----+-------+-------+-------+--------|
|A31 | .... | A2 | 1 | 1 |НИЗКИЙ |ВЫСОКИЙ|ВЫСОКИЙ| ВЫСОКИЙ|
+-----------------------------------------------------------+
Рис.6-3. Логические схемы формирования A0, A1 как функций сигналов
BE0#-BE3#
K - MAP for A1 Signal - карта Карно для сигнала A1.
Каждый цикл шины включает в себя по меньшей мере два состояния
шины. Каждое состояние шины занимает по времени один период
тактовой частоты процессора. Простейший цикл шины может быть
дополнен состояниями шины, которые называются состояниями
ожидания. См. 6.4 Описание функционирования шины.
Поскольку для выполнение цикла шины требуется как минимум два
состояния шины (что равняется двум периодам тактовой частоты
процессора), то максимальная скорость передачи данных между
внешними устройствами и 80386 равна одному 4-байтовому двойному
слову в каждые два периода тактовой частоты процессора, что
соответствует максимальной пропускной способности шины 32
мегабайт/сек (80386-16 работает на тактовой частоте 16 МГц).
6.3.2 Пространства памяти и ввода/вывода
В течение циклов шины возможно обращение к пространству памяти
или к пространству ввода/вывода. Периферийные устройства в системе
могут быть отнесены либо к пространству памяти, либо к
пространству ввода/вывода, или и к тому и к другому пространствам.
Как показано на рис.6-4, физические адреса памяти находятся в
диапазоне от 00000000H до FFFFFFFFH (4 гигабайта), а адреса
ввода/вывода - в диапазоне от 00000000H до 0000FFFFH (64
килобайта), необходимом для адресации устройств ввода/вывода.
Отметим адреса ввода/вывода, используемые в автоматически
выполняемых для взаимосвязи с сопроцессором циклах ввода/вывода.
Эти адреса от 800000F8H до 800000FFH не входят в диапазон
вышеуказанных адресов для программной адресации устройств
ввода/вывода и позволяют легко сформировать сигнал выборки
сопроцессора, используя сигналы A31 и M/IO#.
FFFFFFFFh+------------+ + - - - - - - - +
| | | |
| |
| | | НЕАДРЕСУЕМОЕ |
| |
| | | |
| |
| | | |
| | 800000FFh+---------------+ СОПРОЦЕССОР
| ФИЗИЧЕСКАЯ | 800000F8h| | (80387 ИЛИ 80287)
| ПАМЯТЬ | (ПРИМЕЧ.1)+---------------+
| | | |
| | НЕАДРЕСУЕМОЕ
| 4 ГБАЙТА | | |
| |
| | 0000FFFFh+---------------|
| | | 64 КБАЙТА | ПРОГРАММНО АДРЕСУЕМОЕ
| | | | ПРОСТРАНСТВО ВВОДА/ВЫВОДА
00000000h+------------+ 00000000h+---------------+
ПРОСТРАНСТВО ФИЗИЧЕСКОЙ ПАМЯТИ ПРОСТРАНСТВО ВВОДА/ВЫВОДА
Примечание: Так как в течение автоматически выполняемых циклов
взаимосвязи с сопроцессором устанавливается высокий уровень
сигнала A31, то установка единичного уровня A31 и нулевого уровня
строба формирования сигала выборки сопроцессора.
Рис.6-4 Пространства физической памяти и ввода/вывода
6.3.3 Организация памяти и ввода/вывода
Ширина магистрали данных от 80386 к пространствам памяти и
ввода/вывода может составлять 32 бита или 16 бит. В случае 32-
разрядной ширины магистрали пространства памяти и ввода/вывода
организованы соответственно как массивы физических 32-разрядных
двойных слов. Каждое двойное слово памяти или ввода/вывода состоит
из 4-х индивидуально адресуемых (с помощью последовательных
адресов байтов) байтов. Самый меньший (из четырех) адрес байта
относится к сигналам D0-D7; самый больший - к сигналам D24-D31.
80386 имеет такой сигнал управления шиной, как BS16#, который
обеспечивает правильную взаимосвязь с 16-разрядными пространствами
памяти и ввода/вывода, организованными в виде последовательности
16-битных слов. Циклы обмена с 16-разрядными и 32-разрядными
устройствами памяти или ввода/вывода могут встречаться в любой
последовательности, так как состояние сигнала BS16# анализируется
в течение каждого цикла шины. См. 6.3.4 Изменяемый размер шины
данных. Сигналы стробов данных BE0#-BE3# позволяют обращаться к
отдельным байтам при любой структуре памяти или ввода/вывода (32-
разрядной или 16-разрядной).
6.3.4 Изменяемый размер шины данных
Изменяемый размер шины данных отличительная особенность 80386,
обеспечивающая непосредственную связь процессора с 32-разрядными
или 16-разрядными шинами данных памяти или ввода/вывода. Один
процессор может быть соединен с шинами двух размеров. Передачи
в/из 32- или 16-разрядные порты сопровождаются определением в
каждом цикле шины необходимой ширины шины. В течение каждого цикла
шины схема дешифрации адреса или подчиненное устройство сами могут
установить активный уровень сигнала BS16# для 16-разрядного порта,
или неактивный уровень BS16# для 32-разрядного порта.
Когда установлен активный уровень сигнала BS16#, процессор
автоматически вместо одной передачи разрядностью больше 16 бит или
одной 16-разрядной не выровненной передачи выполнит две или три
передачи, как потребуется. При активном уровне BS16# все передачи
операндов осуществляются только по линиям D0-D16. Поэтому 16-
разрядные устройства памяти или ввода/вывода обмениваются только
сигналами данных D0-D16. Специальных переключателей не требуется.
Действие активного уровня сигнала BS16# проявляется только тогда,
когда в текущем цикле шины установлены активные уровни сигналов
BE2# и/или BE3#. Если в передаче участвуют только линии D0-D15, то
установка активного уровня BS16# не будет иметь значение, так как
передача будет производиться все равно по 16-разрядной шине
независимо от состояния BS16#. Другими словами, установка
активного уровня BS16# необязательна, когда только младшая
половина
разрядов шины участвует в текущем цикле.
Существуют две ситуации, при которых проявляется влияние
активного уровня BS16# на действия процессора, зависящие также от
значений стробов данных BE0#-BE3# в текущем цикле шины:
- в обмене участвует только старшая половина линий шины:
устанавливаются активные уровни только сигналов BE2# и/или BE3#;
- в обмене участвуют и старшая, и младшая половины линий шины:
устанавливаются активные уровни по меньшей мере сигналов BE1# и
BE2# (и возможно также сигналов BE0# и/или BE3#).
Воздействие BS16# на циклы чтения "с учетом только старшей
половины линий шины":
Установка активного уровня BS16# в течение циклов чтения "с
участием только старшей половины линий шины" вынудит 80386
считывать младшие 16 битов шины данных и игнорировать данные на
старших 16 битах шины данных. Т.е. вместо считывания данных с
линий D16-D31 в соответствии с установленными BE2# и BE3# будут
считываться данные с линий D0-D16.
Взаимодействие сигнала BS16# на циклы записи "с участием
только старшей половины линий шины":
Установка активного уровня BS16# в течение циклов записи "с
участием только старшей половины" не отразится на процедуре
записи. Когда в цикле записи установлены активные уровни сигналов
BE2# и/или BE3#, 80386 всегда копирует сигналы данных D16-D31 на
линии D0-D15 (см. табл. 6-1). Поэтому не требуется дополнительных
действий 80386 для того, чтобы выполнить эти циклы записи по 32-
или 16-разрядной шине.
Воздействие сигнала BS16# на циклы чтения "с участием и
ab `h%) и младшей половин шины":
Установка активного уровня сигнала BS16# в течение циклов
чтения "с участием и старшей и младшей половин шины" заставит
процессор выполнить два 16-разрядных цикла чтения для передачи
всего физического операнда. Байты 0 и 1 (в соответствии с
установленными BE0# и BE1#) будут считаны в первом цикле с линий
D0-D16. Байты 2 и 3 (в соответствии с установленными BE2# и BE3#)
будут считаны во втором цикле и снова с линий D0-D16. Сигналы на
линиях D16-D31 игнорируются в течение обоих 16-разрядных циклов.
BE0# и BE1# всегда находятся в неактивном состоянии в течение
второго 16-разрядного цикла.
Активный уровень сигнала BS16# необязательно устанавливать на
время второго 16-разрядного цикла. См. рис.6-14, циклы 2 и 2а.
Воздействие сигнала BS16# (активного уровня) на циклы записи
"с участием и старшей и младшей половин шины":
Установка активного уровня сигнала BS16# в течение циклов
записи "с участием и старшей и младшей половин шины" заставит
процессор 80386 выполнять два 16-разрядных цикла записи для
передачи целого физического операнда. Наличие всех байтов операнда
на линиях D0-D15 в течение первого цикла записи позволит внешним
устройствам получить байты 0 и 1 (в соответствии с установленными
значениями BE0# и BE1#) по линиям D0-D16. Во втором цикле 80386
скопирует байты 2 и 3 на линии D0-D15, и запись этих байтов (в
соответствии с установленными значениями BE2# и BE3#) будет
произведена также по линиям D0-D16. Сигналы BE0# и BE1# всегда
переключаются в неактивное состояние в течение второго 16-
разрядного цикла. Установка активного уровня сигнала BS16# в
течение второго 16-разрядного цикла необязательна. См. рис.6-14,
циклы 1 и 1а.
6.3.5 Связь с 32 и 16 разрядным устройствами памяти
В 32-разрядных устройствах физической памяти, таких как на
рис.6-5, каждое физическое двойное слово начинается с байта, адрес
которого кратен 4. Сигналы A2-A31 обычно используются для выборки
определенного двойного слова, а сигналы BE0#-BE3# - для выборки
определенного байта в двойном слове BS16# поддерживается в
неактивном состоянии во всех циклах шины, оперирующих с 32-
разрядным массивом.
Когда в состав системы входят 16-разрядные физические массивы,
как показано на рис.6-6, адрес начала каждого 16-битного
физического слова кратен 2. Отметим, что схема дешифрации адреса
ADDRESS DECODER при дешифрации адреса формирует активный уровень
сигнала BS16# только в течение циклов шины, оперирующих с 16-
разрядными устройствами памяти, то схема дешифрации адреса
анализирует также значения сигналов BE0#-BE3# и W/R#, чтобы
определить, когда должен быть установлен активный уровень сигнала
BS16#. См. 6.4.3.7 Оптимальное использование метода конвейерной
адресации в случае 16-разрядной ширины шины.
Сигналы A2-A31 обычно используются для адресации 32-разрядных
и 16-разрязных устройств. Для адресации 16-разрядных устройств
необходимы также сигнал A1 и два сигнала строба данных.
Чтобы сформировать необходимые значения сигнала A1 и двух
сигналов строба данных для обращения к 16-разрядному устройству,
сигналы BE0#-BE3# должен быть дешифрированы в соответствии с табл.
6-7. Отметим некоторые запрещенные комбинации BE0#-BE3#, никогда
не вырабатываемые 80386. При наличии запрещенной комбинации BE0#-
BE3# на входе дешифратора выходы его не анализируются и состояние
их обозначается X. Запрещенные комбинации BE0#-BE3# могут быть
использованы при необходимости для более оптимального
использования дешифратора.
Таблица 6-7
ФОРМИРОВАНИЕ СИГНАЛОВ A1, BHE# И BLE# ДЛЯ
АДРЕСАЦИИ 16-РАЗРЯДНЫХ УСТРОЙСТВ
+-----------------------------------------------------------+
| СИГНАЛЫ 80386 | СИГНАЛЫ 16-РАЗРЯДНОЙ | КОММЕНТАРИИ |
| | ШИНЫ | |
+-------------------+-----------------------| |
|BE3#|BE2#|BE1#|BE0#| A1 | BHE# | BLE# (A0) | |
+----+----+----+----+----+------+-----------+---------------|
| H* | H* | H* | H* | X | X | X | X - НЕТ НИ |
| | | | | | | | ОДНОГО АКТИВ- |
| | | | | | | | НОГО БАЙТА |
+----+----+----+----+----+------+-----------+---------------|
| H | H | H | L | L | H | L | |
+----+----+----+----+----+------+-----------+---------------|
| H | H | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| H | H | L | L | L | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| H | L | H | H | H | H | L | |
+----+----+----+----+----+------+-----------+---------------|
| H* | L* | H* | L* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| H | L | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| H | L | L | L | L | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| L | H | H | H | H | L | H | |
+----+----+----+----+----+------+-----------+---------------|