Страница:
| L* | H* | H* | L* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L* | H* | L* | H* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L | L | H | H | H | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| L* | L* | H* | L* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L | L | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| L | L | L | L | L | L | L | |
+-----------------------------------------------------------+
BLE# устанавливается (активный уровень) когда активизируются
разряды D0-D7 16-разрядной шины.
BHE# устанавливается (активный уровень) когда активизируются
разряды D8-D15 16-разрядной шины.
A1 имеет низкий уровень для всех четных слов; A1 имеет высокий
уровень для всех нечетных слов.
ОБОЗНАЧЕНИЯ:
X - допустим и высокий и низкий логический уровень;
H - высокий логический уровень;
L - низкий логический уровень;
* - неиспользуемые комбинации BE0#-BE3#:
- комбинация, когда все стробы данных находятся в неактивном
состоянии;
- комбинации стробов данных, при которых появляются несмежные
активные байты.
6.3.6 Выравнивание операндов
Благодаря гибкой адресации памяти в 80386 возможна передача
логического операнда, разрядность которого больше слова или
двойного слова памяти или ввода/вывода, например 32-разрядного
операнда (двойное слово), адрес начала которого не кратен 4, или
16-разрядного операнда (слово), разделенного между двумя
физическими двойными словами массива памяти.
Когда передача операнда требует выполнения нескольких циклов,
то во время этих циклов выполняется выравнивание данных и
определение размера шины. Таблица 6-8 описывает определение типов
циклов передачи для всех комбинаций таких характеристик, как длина
логического операнда, выравнивание и ширина шины данных. Когда для
передачи многобайтового логического операнда требуется несколько
циклов шины, то первыми передаются старшие байты (но если
установлен активный уровень BS16#, то будут выполнены два 16-
разрядных цикла, причем первыми будут переданы младшие байты).
Таблица 6-8
ЦИКЛЫ ПЕРЕДАЧИ БАЙТОВ, СЛОВ И ДВОЙНЫХ СЛОВ
+-----------------------------------------------------------+
| | ДЛИНА ЛОГИЧЕСКОГО ОПЕРАНДА В БАЙТАХ |
| +-------------------------------------------|
| | 1 | 2 | 4 |
+---------------+---+-------------------+-------------------|
| АДРЕС БАЙТА |XX | 00 | 01 | 10 | 11 | 00 | 01 | 10 | 11 |
| ФИЗИЧЕСКОЙ | | | | | | | | | |
| ПАМЯТИ | | | | | | | | | |
| *МЛАДШИЕ ДВА | | | | | | | | | |
| БАЙТА | | | | | | | | | |
+---------------+---+----+----+----+----+----+----+----+----|
|ЦИКЛЫ ПЕРЕДАЧИ |b | W | W | W |hb, | d |hb, |hw, |h3, |
|ПО 32-РАЗРЯДНОЙ| | | | |lb | |l3 |lw |lb |
|ШИНЕ ДАННЫХ | | | | | | | | | |
+---------------+---+----+----+----+----+----+----+----+----|
|ЦИКЛЫ ПЕРЕДАЧИ |b | W |lb,*| W |hb,*|lw,*|hb, |hw, |mw, |
|ПО 16-РАЗРЯДНОЙ| | |hb* | |lb* |hw* |lb,*|lw |hb,*|
|ШИНЕ ДАННЫХ | | | | | | |mw* | |lb |
+-----------------------------------------------------------+
ОБОЗНАЧЕНИЯ:
b = передача байта
w = передача слова
l = младшая часть операнда
m = средняя часть операнда
х = не используется
* = активный уровень BS16# вызывает выполнение второго цикла
шины
3 = передача 3-х байтов
d = передача двойного слова
h = старшая часть операнда
6.4 Описание функционирования шины
6.4.1 Введение
80386 имеет отдельные параллельные шины: шину адреса и шину
данных. Шина данных - 32-разрядная и двунаправленная. Ширина шины
адреса - 32 разряда: из них 30 старших разрядов - адрес операнда и
2 разряда формируются из 4-х сигналов стробов данных каждый из
которых служит для выборки соответствующего байта в операнде. Эти
шины анализируются и управляются соответствующими им управляющими
сигналами. Тип каждого цикла шины определяется тремя сигналами:
M/IO#, W/R# и D/C#. Одновременно с этими сигналами устанавливается
достоверный адрес на линиях BE0#-BE3# и A2-A31. Сигнал строба
адреса указывает на выдачу процессором 80386 нового типа цикла
шины и адреса.
Объединенные шина адреса, шина данных и все связанные с ними
управляющие сигналы называются в тексте просто "шиной". В рабочем
состоянии шина выполняет один из ниже перечисленных циклов шины:
1) чтение из памяти;
2) чтение из памяти с блокировкой шины;
3) запись в память;
4) запись в память с блокировкой шины;
5) чтение из устройства ввода/вывода (или из сопроцессора);
6) запись в устройство ввода/вывода (или в сопроцессор);
7) подтверждение прерывания;
8) цикл останова или цикл выключения.
Табл. 6-2 показывает соответствие комбинаций сигналов
определения типа шины каждому типу шины. См. параграф 6.2.5
Сигналы определения типа цикла шины.
Отличительной чертой шины данных является ее изменяемая
ширина, которая может быть 32-разрядной и 16-разрядной. Ширина
шины данных указывается процессору 80386 его входным сигналом
BS16#. Все функции шины могут быть выполнены при любой
ширине шины.
Когда шина 80386 не выполняет ни один из вышеперечисленных
циклов, она находится или в нерабочем состоянии или в состояние
подтверждения захвата шины, последнее может быть вызвано внешней
схемой.
Нерабочее состояние шины может иметь место, когда 80386 не
выдает дальнейших подтверждений на свой выход строба адреса (ADS#)
после начала текущего цикла, и потому текущий цикл будет
последним. Состояние подтверждения захвата шины идентифицируется
установкой процессором 80386 активного уровня на своем выходе
подтверждения захвата (HLDA).
Самой короткой временной единицей деятельности шины является
состояние шины. Деятельность состояния шины составляет один период
тактовой частоты процессора (два периода CLK2). Законченная
передача данных осуществляется в течение цикла шины, состоящего из
двух или более состояний шины.
Самый короткий цикл шины 80386 состоит из двух состояний шины.
Состояния шины в каждом цикле обозначены как Т1 и Т2. В течение
такого цикла шины (из 2-х состояний) может быть выполнено
обращение по любому адресу памяти или ввода/вывода, если внешняя
аппаратура обладает достаточным быстродействием. Высокая
пропускная способность шины и цикл шины, занимающий два периода
тактовой частоты, наиболее полно реализуют возможности быстрой
основной памяти или кэш-памяти.
Каждый цикл шины длится до тех пор, пока не придет
подтверждение от внешних устройств системы, использующих для этой
цели вход 80386 READY#. Если подтверждение цикла шины будет
сформировано в конце первого из состояний Т2, то это определит
выполнение самого короткого цикла шины, состоящего всего из двух
a.ab.o-() Т1 и Т2. Однако, если активный уровень сигнала READY# не
будет установлен сразу (в конце первого Т2), то состояния Т2 будут
неограниченно повторятся до тех пор, пока на входе READY#
процессор не обнаружит активный уровень.
6.4.2 Конвейерная адресация
Режим конвейерной адресации обеспечивает определенные
протоколы цикла шины. Протокол конвейерной или не конвейерной
адресации выбирается на основе совмещения циклов с использованием
входа следующего адреса (NA#).
В режиме не конвейерной адресации текущий адрес и тип цикла
шины остаются постоянными в течение всего цикла шины.
В режиме конвейерной адресации адрес (BE0#-BE3#, A2-A31) и тип
цикла для следующего цикла устанавливаются и выдаются еще до
окончания текущего цикла. Чтобы сигнализировать об их готовности,
80386 устанавливает также активный уровень на выходе строба адреса
(ADS#). Рис.6-9 иллюстрирует самые быстрые циклы чтения в режиме
конвейерной адресации. Из рис.6-9 следует, что самые короткие
циклы шины, использующие метод конвейерной адресации, состоят
всего из двух состояний шины, обозначенных Т1Р и Т2Р.
Следовательно, циклы с конвейерной адресацией обеспечивают такую
же пропускную способность данных, как и циклы с не конвейерной
адресацией, но время выборки адреса увеличивается по сравнению с
не конвейерными циклами.
Из-за увеличения времени выборки адреса режим конвейерной
адресации сокращает требуемое количество состояний ожидания.
Например, если в режиме конвейерной адресации требуется одно
состояние ожидания, то в режиме конвейерной адресации может не
потребоваться ни одного состояния ожидания.
Режим конвейерной адресации используется в системах, имеющих
адресные "защелки". В таких системах, сразу "защелкивающих" адрес,
конвейерная выдача следующего адреса позволяет декодирующей схеме
заранее сформировать сигналы включения микросхем (и другие
необходимые сигналы выборки), поэтому обращение к выбранным
устройствам осуществляется сразу, как только начинается следующий
цикл. Другими словами, время декодирования для следующего цикла
может частично перекрываться с окончанием текущего цикла.
Если в состав системы входит память с расслоением, имеющая 2
или более банков, то метод конвейерной адресации возможно
обеспечит даже большее перекрытие циклов. Вышесказанное
действительно, когда контроллер памяти с расслоением устроен так,
чтобы позволить начать следующую операцию с памятью в одном банке
памяти в то время, как текущий цикл шины еще оперирует с другим
банком памяти. Рис.6-10 показывает основную структуру взаимосвязи
80386 с 2-банковой и 4-банковой памятью с расслоением. Отметим,
что каждый банк памяти с расслоением имеет шину данных полной
ширины (обычно разрядность данных составляет 32 бита, если не
задается 16-разрядная ширина шины).
Дополнительные сведения о режиме конвейерной адресации даны в
параграфах 6.4.3.4 Конвейерная адресация, 6.4.3.5 Инициализация и
поддержание режима конвейерной адресации, 6.4.3.6 Конвейерный
адрес при изменении ширины шины и 6.4.3.7 Оптимальное
использование конвейерного адреса в случае 16-разрядной ширины
шины.
6.4.3 Циклы чтения и записи
6.4.3.1Введение
Передачи данных осуществляется посредством выполнения циклов
шины, которые подразделяются на циклы чтения и циклы записи. При
выполнении циклов чтения данные передаются от внешнего устройства
" процессор. При выполнении циклов записи данные передаются в
обратном направлении: от процессора к внешнему устройству.
Два варианта адресации попеременно избираются: не конвейерная
адресация или конвейерная. После нерабочего состояния шины
процессор всегда работает в режиме не конвейерной адресации.
Однако, может быть установлен активный уровень входного сигнала
NA# (следующий адрес), избирающий режим конвейерной адресации для
следующего цикла шины. Когда выбран режим конвейерной адресации, и
в процессоре имеется ожидающий обслуживания внутренний запрос
шины, достоверные адрес и тип цикла для следующего цикла шины
будут выданы даже до получения подтверждения текущего цикла шины
на входе READY#. В каждом цикле шины 80386 обязательно анализирует
состояние сигнала на входе NA#, чтобы определить способ адресации,
необходимый для следующего цикла.
Попеременно избираются два варианта размера физической шины
данных: 32 бита или 16 битов. Обязательно ближе к концу цикла шины
состояние входного сигнала BS16# (размер шины 16) анализируется с
целью установления размера физической шины данных, необходимого в
текущем цикле. Высокий уровень сигнала BS16# указывает на 32-
разрядный размер, активный уровень (низкий) BS16# указывает на 16-
разрядный размер. Если указан 16-разрядный размер шины, то 80386
автоматически реагирует на это соответствующим образом, чтобы
завершить передачу по 16-разрядной шине данных. В зависимости от
размера и расположения операнда может потребоваться второй 16-
разрядный цикл шины. Подробно об этом см. табл. 6-7. Когда
необходимо, 80386 выполняет дополнительный 16-разрядный цикл шины,
используя линии D0-D15 для передачи разрядов D16-D31.
Для завершения цикла чтения или цикла записи, также как и
любого другого цикла шины, требуется подтверждение цикла,
устанавливаемое на входе READY#. До получения подтверждения
процессор вводит в цикл шины состояние ожидания, чтобы
соответствовать быстродействию внешнего устройства. Внешнее
устройство, распознавшее свой адрес и декодировавшее тип цикла
шины, формирует в соответствующий момент активный уровень
сигнала READY#.
Сигнал READY# анализируется во втором состоянии цикла шины.
Если в это же время внешняя аппаратура подтверждает цикл шины
установкой активного уровня READY#, то цикл шины завершается, как
показано на рис.6-11.
Если во втором состоянии шины сигнал READY# остается в
неактивном состоянии, как показано на рис.6-12, цикл шины
дополняется еще одним состоянием (состоянием ожидания), и сигнал
READY# будет снова анализироваться в конце каждого такого
состояния ожидания. Так будет продолжиться неограниченно до тех
пор, пока цикл не получит подтверждения по линии READY#.
Когда процессор получает подтверждение текущего цикла, он
завершает его. Когда подтверждается цикл чтения, 80386
"защелкивает" информацию, сформированную к этому времени на
выводах шины данных процессора. Когда подтверждается цикл записи,
80386 поддерживает достоверное значение записываемых данных в
течение первой фазы следующего цикла шины, чтобы обеспечить
необходимое значение времени удержания записываемых данных.
6.4.3.2Неконвейерная адресация
Любой цикл шины может быть выполнен в режиме неконвейерной
адресации. Для примера, на рис.6-11 показана последовательность
циклов чтения и записи в режиме неконвейерной адресации. Из рис.6-
11 следует, что самые короткие циклы, возможные в режиме
неконвейерной адресации, состоят каждый из двух состояний шины.
Состояния обозначены как Т1 и Т2. В первой фазе состояния Т1
"k$ nbao достоверные значения сигналов адреса и сигналов
определения типа цикла шины, и одновременно устанавливается
активный уровень сигнала строба адреса (ADS#), сигнализирующий о
готовности вышеперечисленных сигналов.
В течение циклов чтения или записи шина данных функционирует
как описано ниже. В цикле чтения 80386 переключает свою шину
данных таким образом, чтобы принять сигналы данных от
адресованного внешнего устройства. В цикле записи сигналы данных
передаются процессором 80386, начиная со второй фазы состояния Т1
и кончая первой фазой состояния шины, которое будет установлено
сразу после получения подтверждения цикла.
Рис.6-12 иллюстрирует циклы шины в режиме неконвейерной
адресации, причем циклы 2 и 3 дополнены одним состоянием ожидания.
В циклах 2 и 3 сигнал READY# оказался не установленным в активное
состояние Т2. В этих циклах активный уровень сигнала READY#
устанавливается в конце второго из состояний Т2.
Когда не используется конвейерная адресация, достоверные
значения адреса и типа цикла шины сохраняются в течение всех
состояний ожидания. Когда цикл дополняется состояниями ожидания, и
необходимо обеспечить режим неконвейерной адресации, неактивный
(высокий) уровень сигнала NA# должен устанавливаться в течение
каждого из состояний Т2, исключая самое последнее состояние Т2
цикла, как показано на рис.6-12 в циклах 2 и 3. Если активный
уровень NA# окажется установленным в состояние Т2 (но не в
последнем Т2), то следующим состоянием, вместо состояния Т2 (для
неконвейерной адресации), будет состояние Т2i (для конвейерной
адресации) или Т2p (для конвейерной адресации).
Рис.6-13 наиболее полно иллюстрирует картину состояний шины и
переходов из состояния в состояние для случая, когда конвейерная
адресация не используется. Показанные переходы шины между 4-мя
возможными состояниями: Т1, Т2, Тi и Тh. Циклы шины содержат
состояния Т1 и Т2, причем Т2 может повторяться (состояния
ожидания). Кроме этого, шина может находиться в нерабочем
состоянии, т.е. в состоянии Тi, или в состоянии подтверждения
захвата шины, т.е. в состоянии Тh.
"1"
+-------+
? |
+--------------+
+-----------| Th |?-------------+
| +--------------+ |
| - - |
| +----------+ | |
| | | |
"2" | | "1" |"3" "4" |
----+ | | | "6" |
|"5" | | +--------------|---------------+ |
| | | | | | |
? ? | ? ? ? |
+--------------+ +--------------+ "9" +------------+
+?| | "3" | +-----?| +-+
| | Ti +-----?| T1 | | T2 | |
| | | | |?-----| | |
| +--------------+ +--------------+ "7" +------------+ |
|"2" | - "8" |
+-------+ +------+
"1"-HOLD активизирован
"2"-HOLD неактивизирован * нет внутреннего запроса
"3"-HOLD неактивизирован * есть внутренний запрос, ожидающий
обслуживание
"4"-READY# активизирован * HOLD активизирован
"5"-RESET активизирован
"6"-READY# активизирован * HOLD неактивизирован * нет внутреннего
запроса
"7"-READY# активизирован * HOLD неактивизирован * есть внутренний
запрос, ожидающий обслуживание
"8"-READY# неактивизирован * NA# неактивизирован
"9"-постоянно
СОСТОЯНИЯ ШИНЫ
T1 т первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#).
T2 т последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии.
Ti т нерабочее состояние.
Th т состояние подтверждения захвата шины (80386 устанавливает
активный уровень HLDA).
Самый короткий цикл шины состоит из двух состояний: T1 и T2.
Четыре основные состояния шины описывают функционирование шины,
когда не используется конвейерная адресация. Эти состояния
распространяются на оба размера шины: 32 бита и 16 бит, т.е.
справедливы для любого значения BS16#. Если при активном уровне
сигнала BS16# требуется выполнение второго 16-разрядного цикла,
последний выполняется перед формированием процессором сигнала
подтверждения захвата шины.
Рис.6-13. Состояния шины 80386 (когда конвейерная адресация не
применяется)
Для случая, когда конвейерная адресация не используется,
диаграмма состояния шины такая, как показана на рис.6-13. В
нерабочем состоянии шина находится в Тi. Циклы шины всегда
начинаются с Т1. Т1 всегда предшествует состоянию Т2. Если цикл
шины не подтвержден в течение Т2 и уровень NA# при этом
неактивный, состояние Т2 повторяется. Когда цикл подтвержден в
течение Т2, то за этим последует состояние Т1 следующего цикла
шины, если имеется ожидающий обслуживания внутренний запрос шины
(запрос на захват шины самим процессором), или состояние Тi, если
такого запроса нет, или состояние Тh, если установлен активный
уровень входного сигнала HOLD.
Диаграмма состояния шины на рис.6-13 справедлива при любом
значении сигнала BS16#. Если 80386 выполнит внутренние
переключения, необходимые для установки 16-разрядного размера
шины, то эти переключения не повлияют на состояния внешней шины.
Если для выполнения передачи по 16-разрядной шине требуется
дополнительный 16-разрядный цикл шины, он также будет выполняться
в соответствии с переходами состояний, показанными на рис.6-13.
В режиме конвейерной адресации в 80386 могут иметь еще три
типа состояния шины, не показанные на рис.6-13. На рис.6-20 в
параграфе 6.4.3.4 "Конвейерная адресация" показана более подробная
диаграмма состояния шины, включающая циклы в режиме конвейерной
адресации.
СОСТОЯНИЯ ШИНЫ2:
Тт первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#);
Т2 т последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии;
Тi ? нерабочее состояние;
Тh т состояние подтверждения захвата шины (80386
устанавливает активный уровень HLDA).
Четыре основные состояния шины описывают функционирование
шины, когда не используется конвейерная адресация. Эти состояния
распространяются на оба размера шины: 32 бит и 16 бит, т.е.
справедливы для любого значения BS16#. Если при активном уровне
сигнала BS16# требуется выполнение второго 16-разрядного цикла,
последний выполняется перед формированием процессором сигнала
подтверждения захвата шины.
6.4.3.3Режим неконвейерной адресации при изменении размера
шины данных
Ширина физической магистрали данных для любого неконвейерного
цикла шины может составлять или 32 разряда, или 16 разрядов. В
начале цикла шины процессор ведет себя так, как если бы ширина
шины данных составляла 32 бита. Когда цикл шины подтверждается
установкой активного уровня сигнала READY# в конце состояния Т2,
то анализируемый в этот момент уровень сигнала BS16# окажется в
неактивном состоянии, то размер физической шины данных принимается
равным 32 разрядам. Если же наблюдается активный уровень BS16#, то
размер шины принимается равным 16 разрядам.
Когда установлен активный уровень BS16#, и для выполнения
одной передачи требуется два 16-разрядных цикла, то активный
уровень сигнала BS16# должен быть установлен и во втором цикле.
Иначе 16-разрядный размер шины не будет сохранен во втором цикле.
Также, как и любой другой цикл шины, второй 16-разрядный цикл
должен быть подтвержден установкой активного уровня READY#.
Когда требуется второй 16-разрядный цикл для выполнения одной
передачи по 16-разрядной шине, то адреса, формируемые для двух 16-
разрядных циклов шины, тесно взаимосвязаны. Эти адреса идентичны
за исключением разрядов BE0# и BE1#, которые всегда переключаются
в неактивное состояние (высокий уровень) во втором цикле, так как
сигналы данных D0-D15 были уже переданы в первом 16-битном цикле.
На рис.6-14 и 6-15 показаны передачи, при которых установка
активного уровня BS16# требует второго 16-битного цикла для
выполнения передачи всего операнда. Рис.6-14 иллюстрирует циклы
без состояний ожидания. Рис.6-15 иллюстрирует циклы с одним
состоянием ожидания. Отметим, что в цикле 1 на рис.6-15, в течение
которого устанавливается активный уровень сигнала BS16#, сигнал
NA# должен быть обязательно переключен в неактивный уровень в
состоянии(ях) Т2, предшествующем(их) последнему состоянию Т2. Это
необходимо для того, чтобы в финальном состоянии Т2 процессор
воспринял установленный активный уровень BS16# в режиме
неконвейерной адресации.
6.4.3.4Конвейерная адресация
В режиме конвейерной адресации адрес и тип цикла для
следующего цикла шины, который будет обслуживать ждущий обработки,
внутренний запрос процессора, запрашиваются еще до того, как будет
получено подтверждение текущего цикла по линии READY#. Когда
следующий адрес подготовлен и выдан, 80386 устанавливает активный
уровень сигнала ADS#. Протокол режима конвейерной адресации
строится на основе совмещения циклов и с помощью входного сигнала
NA#. Когда выполняется цикл шины и текущий адрес должен иметь
достоверное значение в течение по меньшей мере одного полного
состояния шины, значение входного сигнала NA# анализируется в
конце каждой первой фазы состояния до тех пор, пока цикл шины не
получит подтверждение. В течение неконвейерных циклов шины,
следовательно, NA# анализируется в конце первой фазы в каждом
состоянии Т2. Примером может служить Цикл 2 на рис.6-16, в течение
которого NA# анализируется в конце первой фазы каждого Т2 (NA# был
установлен в активный уровень один раз в течение первого состояния
Т2 и не оказывает дальнейшего воздействия на выполнение этого
цикла шины).
Если процессор при просмотре NA# обнаружит активный уровень
этого сигнала, то 80386 освобождается, чтобы выдать адрес и тип
цикла следующего цикла, и установить активный уровень сигнала
ADS#, как только в процессоре появится ожидающий обслуживания
внутренний запрос шины. Процессор может выдать следующий адрес уже
в следующем состоянии шины, независимо от того получил ли в этот
момент подтверждение текущий цикл или не получил.
Что касается режима конвейерной адресации, то в этом режиме
80386 имеет следующие особенности:
1. Для того, чтобы процессор воспринял активный уровень
сигнала NA#, сигнал BS16# должен быть переключен в неактивный
уровень на время просмотра сигнала NA# (см. рис.6-16 Циклы 3 и 4;
рис.6-17 Циклы 2-4); В том случае, если сигналы NA# и BS16#
окажутся оба активными в течение последнего периода Т2 цикла шины,
приоритетом будет обладать активный сигнал BS16#. Следовательно,
если оба сигнала активны, то текущий размер шины принимается
равным 16 разрядам, а следующий адрес будет неконвейерным.
Схематично рис.6-18 показывает внутреннюю логику 80386,
обеспечивающую эти особенности.
2. Следующий адрес может появиться в состоянии шины, следующем
сразу после момента обнаружения активного уровня NA# (см. рис.6-16
или 6-17); В этом случае сразу шина перейдет в состояние Т2p.
Однако, если в этот момент отсутствует ожидающий обслуживания
внутренний запрос шины, то следующий адрес не будет установлен
сразу после активизации NA#, и вместо состояния Т2p шина перейдет
в состояние Т2i (см. рис.6-19 Цикл 3). При условии, что текущий
цикл шины еще не получил подтверждение по линии READY#, шина
перейдет в состояние Т2p как только 80386 выдает следующий адрес.
Внешние устройства, поэтому, должны следить за состоянием
выходного сигнала ADS#, подтверждающим выдачу на шину достоверного
следующего адреса.
3. В том случае, когда 80386 при просмотре обнаружит активный
уровень NA#, 80386 сам принимает решение на обслуживание самого
приоритетного внутреннего запроса шины, ожидающего обслуживания.
Процессор не сможет больше выполнить другую 16-разрядную передачу
по тому же адресу, даже если BS16# будет установлен в активный
уровень внешним устройством, так как после восприятия процессором
активного сигнала NA# текущий размер шины принимается равным 32-м
разрядам; Следовательно, если процессор опознал активный сигнал
NA# в течение цикла шины, то после этого сигнал BS16# игнорируется
в этом цикле шины (см. рис.6-16, 6-17, 6-19). Таким образом,
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L* | H* | L* | H* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L | L | H | H | H | L | L | |
+----+----+----+----+----+------+-----------+---------------|
| L* | L* | H* | L* | X | X | X | X - НЕСМЕЖНЫЕ |
| | | | | | | | БАЙТЫ |
+----+----+----+----+----+------+-----------+---------------|
| L | L | L | H | L | L | H | |
+----+----+----+----+----+------+-----------+---------------|
| L | L | L | L | L | L | L | |
+-----------------------------------------------------------+
BLE# устанавливается (активный уровень) когда активизируются
разряды D0-D7 16-разрядной шины.
BHE# устанавливается (активный уровень) когда активизируются
разряды D8-D15 16-разрядной шины.
A1 имеет низкий уровень для всех четных слов; A1 имеет высокий
уровень для всех нечетных слов.
ОБОЗНАЧЕНИЯ:
X - допустим и высокий и низкий логический уровень;
H - высокий логический уровень;
L - низкий логический уровень;
* - неиспользуемые комбинации BE0#-BE3#:
- комбинация, когда все стробы данных находятся в неактивном
состоянии;
- комбинации стробов данных, при которых появляются несмежные
активные байты.
6.3.6 Выравнивание операндов
Благодаря гибкой адресации памяти в 80386 возможна передача
логического операнда, разрядность которого больше слова или
двойного слова памяти или ввода/вывода, например 32-разрядного
операнда (двойное слово), адрес начала которого не кратен 4, или
16-разрядного операнда (слово), разделенного между двумя
физическими двойными словами массива памяти.
Когда передача операнда требует выполнения нескольких циклов,
то во время этих циклов выполняется выравнивание данных и
определение размера шины. Таблица 6-8 описывает определение типов
циклов передачи для всех комбинаций таких характеристик, как длина
логического операнда, выравнивание и ширина шины данных. Когда для
передачи многобайтового логического операнда требуется несколько
циклов шины, то первыми передаются старшие байты (но если
установлен активный уровень BS16#, то будут выполнены два 16-
разрядных цикла, причем первыми будут переданы младшие байты).
Таблица 6-8
ЦИКЛЫ ПЕРЕДАЧИ БАЙТОВ, СЛОВ И ДВОЙНЫХ СЛОВ
+-----------------------------------------------------------+
| | ДЛИНА ЛОГИЧЕСКОГО ОПЕРАНДА В БАЙТАХ |
| +-------------------------------------------|
| | 1 | 2 | 4 |
+---------------+---+-------------------+-------------------|
| АДРЕС БАЙТА |XX | 00 | 01 | 10 | 11 | 00 | 01 | 10 | 11 |
| ФИЗИЧЕСКОЙ | | | | | | | | | |
| ПАМЯТИ | | | | | | | | | |
| *МЛАДШИЕ ДВА | | | | | | | | | |
| БАЙТА | | | | | | | | | |
+---------------+---+----+----+----+----+----+----+----+----|
|ЦИКЛЫ ПЕРЕДАЧИ |b | W | W | W |hb, | d |hb, |hw, |h3, |
|ПО 32-РАЗРЯДНОЙ| | | | |lb | |l3 |lw |lb |
|ШИНЕ ДАННЫХ | | | | | | | | | |
+---------------+---+----+----+----+----+----+----+----+----|
|ЦИКЛЫ ПЕРЕДАЧИ |b | W |lb,*| W |hb,*|lw,*|hb, |hw, |mw, |
|ПО 16-РАЗРЯДНОЙ| | |hb* | |lb* |hw* |lb,*|lw |hb,*|
|ШИНЕ ДАННЫХ | | | | | | |mw* | |lb |
+-----------------------------------------------------------+
ОБОЗНАЧЕНИЯ:
b = передача байта
w = передача слова
l = младшая часть операнда
m = средняя часть операнда
х = не используется
* = активный уровень BS16# вызывает выполнение второго цикла
шины
3 = передача 3-х байтов
d = передача двойного слова
h = старшая часть операнда
6.4 Описание функционирования шины
6.4.1 Введение
80386 имеет отдельные параллельные шины: шину адреса и шину
данных. Шина данных - 32-разрядная и двунаправленная. Ширина шины
адреса - 32 разряда: из них 30 старших разрядов - адрес операнда и
2 разряда формируются из 4-х сигналов стробов данных каждый из
которых служит для выборки соответствующего байта в операнде. Эти
шины анализируются и управляются соответствующими им управляющими
сигналами. Тип каждого цикла шины определяется тремя сигналами:
M/IO#, W/R# и D/C#. Одновременно с этими сигналами устанавливается
достоверный адрес на линиях BE0#-BE3# и A2-A31. Сигнал строба
адреса указывает на выдачу процессором 80386 нового типа цикла
шины и адреса.
Объединенные шина адреса, шина данных и все связанные с ними
управляющие сигналы называются в тексте просто "шиной". В рабочем
состоянии шина выполняет один из ниже перечисленных циклов шины:
1) чтение из памяти;
2) чтение из памяти с блокировкой шины;
3) запись в память;
4) запись в память с блокировкой шины;
5) чтение из устройства ввода/вывода (или из сопроцессора);
6) запись в устройство ввода/вывода (или в сопроцессор);
7) подтверждение прерывания;
8) цикл останова или цикл выключения.
Табл. 6-2 показывает соответствие комбинаций сигналов
определения типа шины каждому типу шины. См. параграф 6.2.5
Сигналы определения типа цикла шины.
Отличительной чертой шины данных является ее изменяемая
ширина, которая может быть 32-разрядной и 16-разрядной. Ширина
шины данных указывается процессору 80386 его входным сигналом
BS16#. Все функции шины могут быть выполнены при любой
ширине шины.
Когда шина 80386 не выполняет ни один из вышеперечисленных
циклов, она находится или в нерабочем состоянии или в состояние
подтверждения захвата шины, последнее может быть вызвано внешней
схемой.
Нерабочее состояние шины может иметь место, когда 80386 не
выдает дальнейших подтверждений на свой выход строба адреса (ADS#)
после начала текущего цикла, и потому текущий цикл будет
последним. Состояние подтверждения захвата шины идентифицируется
установкой процессором 80386 активного уровня на своем выходе
подтверждения захвата (HLDA).
Самой короткой временной единицей деятельности шины является
состояние шины. Деятельность состояния шины составляет один период
тактовой частоты процессора (два периода CLK2). Законченная
передача данных осуществляется в течение цикла шины, состоящего из
двух или более состояний шины.
Самый короткий цикл шины 80386 состоит из двух состояний шины.
Состояния шины в каждом цикле обозначены как Т1 и Т2. В течение
такого цикла шины (из 2-х состояний) может быть выполнено
обращение по любому адресу памяти или ввода/вывода, если внешняя
аппаратура обладает достаточным быстродействием. Высокая
пропускная способность шины и цикл шины, занимающий два периода
тактовой частоты, наиболее полно реализуют возможности быстрой
основной памяти или кэш-памяти.
Каждый цикл шины длится до тех пор, пока не придет
подтверждение от внешних устройств системы, использующих для этой
цели вход 80386 READY#. Если подтверждение цикла шины будет
сформировано в конце первого из состояний Т2, то это определит
выполнение самого короткого цикла шины, состоящего всего из двух
a.ab.o-() Т1 и Т2. Однако, если активный уровень сигнала READY# не
будет установлен сразу (в конце первого Т2), то состояния Т2 будут
неограниченно повторятся до тех пор, пока на входе READY#
процессор не обнаружит активный уровень.
6.4.2 Конвейерная адресация
Режим конвейерной адресации обеспечивает определенные
протоколы цикла шины. Протокол конвейерной или не конвейерной
адресации выбирается на основе совмещения циклов с использованием
входа следующего адреса (NA#).
В режиме не конвейерной адресации текущий адрес и тип цикла
шины остаются постоянными в течение всего цикла шины.
В режиме конвейерной адресации адрес (BE0#-BE3#, A2-A31) и тип
цикла для следующего цикла устанавливаются и выдаются еще до
окончания текущего цикла. Чтобы сигнализировать об их готовности,
80386 устанавливает также активный уровень на выходе строба адреса
(ADS#). Рис.6-9 иллюстрирует самые быстрые циклы чтения в режиме
конвейерной адресации. Из рис.6-9 следует, что самые короткие
циклы шины, использующие метод конвейерной адресации, состоят
всего из двух состояний шины, обозначенных Т1Р и Т2Р.
Следовательно, циклы с конвейерной адресацией обеспечивают такую
же пропускную способность данных, как и циклы с не конвейерной
адресацией, но время выборки адреса увеличивается по сравнению с
не конвейерными циклами.
Из-за увеличения времени выборки адреса режим конвейерной
адресации сокращает требуемое количество состояний ожидания.
Например, если в режиме конвейерной адресации требуется одно
состояние ожидания, то в режиме конвейерной адресации может не
потребоваться ни одного состояния ожидания.
Режим конвейерной адресации используется в системах, имеющих
адресные "защелки". В таких системах, сразу "защелкивающих" адрес,
конвейерная выдача следующего адреса позволяет декодирующей схеме
заранее сформировать сигналы включения микросхем (и другие
необходимые сигналы выборки), поэтому обращение к выбранным
устройствам осуществляется сразу, как только начинается следующий
цикл. Другими словами, время декодирования для следующего цикла
может частично перекрываться с окончанием текущего цикла.
Если в состав системы входит память с расслоением, имеющая 2
или более банков, то метод конвейерной адресации возможно
обеспечит даже большее перекрытие циклов. Вышесказанное
действительно, когда контроллер памяти с расслоением устроен так,
чтобы позволить начать следующую операцию с памятью в одном банке
памяти в то время, как текущий цикл шины еще оперирует с другим
банком памяти. Рис.6-10 показывает основную структуру взаимосвязи
80386 с 2-банковой и 4-банковой памятью с расслоением. Отметим,
что каждый банк памяти с расслоением имеет шину данных полной
ширины (обычно разрядность данных составляет 32 бита, если не
задается 16-разрядная ширина шины).
Дополнительные сведения о режиме конвейерной адресации даны в
параграфах 6.4.3.4 Конвейерная адресация, 6.4.3.5 Инициализация и
поддержание режима конвейерной адресации, 6.4.3.6 Конвейерный
адрес при изменении ширины шины и 6.4.3.7 Оптимальное
использование конвейерного адреса в случае 16-разрядной ширины
шины.
6.4.3 Циклы чтения и записи
6.4.3.1Введение
Передачи данных осуществляется посредством выполнения циклов
шины, которые подразделяются на циклы чтения и циклы записи. При
выполнении циклов чтения данные передаются от внешнего устройства
" процессор. При выполнении циклов записи данные передаются в
обратном направлении: от процессора к внешнему устройству.
Два варианта адресации попеременно избираются: не конвейерная
адресация или конвейерная. После нерабочего состояния шины
процессор всегда работает в режиме не конвейерной адресации.
Однако, может быть установлен активный уровень входного сигнала
NA# (следующий адрес), избирающий режим конвейерной адресации для
следующего цикла шины. Когда выбран режим конвейерной адресации, и
в процессоре имеется ожидающий обслуживания внутренний запрос
шины, достоверные адрес и тип цикла для следующего цикла шины
будут выданы даже до получения подтверждения текущего цикла шины
на входе READY#. В каждом цикле шины 80386 обязательно анализирует
состояние сигнала на входе NA#, чтобы определить способ адресации,
необходимый для следующего цикла.
Попеременно избираются два варианта размера физической шины
данных: 32 бита или 16 битов. Обязательно ближе к концу цикла шины
состояние входного сигнала BS16# (размер шины 16) анализируется с
целью установления размера физической шины данных, необходимого в
текущем цикле. Высокий уровень сигнала BS16# указывает на 32-
разрядный размер, активный уровень (низкий) BS16# указывает на 16-
разрядный размер. Если указан 16-разрядный размер шины, то 80386
автоматически реагирует на это соответствующим образом, чтобы
завершить передачу по 16-разрядной шине данных. В зависимости от
размера и расположения операнда может потребоваться второй 16-
разрядный цикл шины. Подробно об этом см. табл. 6-7. Когда
необходимо, 80386 выполняет дополнительный 16-разрядный цикл шины,
используя линии D0-D15 для передачи разрядов D16-D31.
Для завершения цикла чтения или цикла записи, также как и
любого другого цикла шины, требуется подтверждение цикла,
устанавливаемое на входе READY#. До получения подтверждения
процессор вводит в цикл шины состояние ожидания, чтобы
соответствовать быстродействию внешнего устройства. Внешнее
устройство, распознавшее свой адрес и декодировавшее тип цикла
шины, формирует в соответствующий момент активный уровень
сигнала READY#.
Сигнал READY# анализируется во втором состоянии цикла шины.
Если в это же время внешняя аппаратура подтверждает цикл шины
установкой активного уровня READY#, то цикл шины завершается, как
показано на рис.6-11.
Если во втором состоянии шины сигнал READY# остается в
неактивном состоянии, как показано на рис.6-12, цикл шины
дополняется еще одним состоянием (состоянием ожидания), и сигнал
READY# будет снова анализироваться в конце каждого такого
состояния ожидания. Так будет продолжиться неограниченно до тех
пор, пока цикл не получит подтверждения по линии READY#.
Когда процессор получает подтверждение текущего цикла, он
завершает его. Когда подтверждается цикл чтения, 80386
"защелкивает" информацию, сформированную к этому времени на
выводах шины данных процессора. Когда подтверждается цикл записи,
80386 поддерживает достоверное значение записываемых данных в
течение первой фазы следующего цикла шины, чтобы обеспечить
необходимое значение времени удержания записываемых данных.
6.4.3.2Неконвейерная адресация
Любой цикл шины может быть выполнен в режиме неконвейерной
адресации. Для примера, на рис.6-11 показана последовательность
циклов чтения и записи в режиме неконвейерной адресации. Из рис.6-
11 следует, что самые короткие циклы, возможные в режиме
неконвейерной адресации, состоят каждый из двух состояний шины.
Состояния обозначены как Т1 и Т2. В первой фазе состояния Т1
"k$ nbao достоверные значения сигналов адреса и сигналов
определения типа цикла шины, и одновременно устанавливается
активный уровень сигнала строба адреса (ADS#), сигнализирующий о
готовности вышеперечисленных сигналов.
В течение циклов чтения или записи шина данных функционирует
как описано ниже. В цикле чтения 80386 переключает свою шину
данных таким образом, чтобы принять сигналы данных от
адресованного внешнего устройства. В цикле записи сигналы данных
передаются процессором 80386, начиная со второй фазы состояния Т1
и кончая первой фазой состояния шины, которое будет установлено
сразу после получения подтверждения цикла.
Рис.6-12 иллюстрирует циклы шины в режиме неконвейерной
адресации, причем циклы 2 и 3 дополнены одним состоянием ожидания.
В циклах 2 и 3 сигнал READY# оказался не установленным в активное
состояние Т2. В этих циклах активный уровень сигнала READY#
устанавливается в конце второго из состояний Т2.
Когда не используется конвейерная адресация, достоверные
значения адреса и типа цикла шины сохраняются в течение всех
состояний ожидания. Когда цикл дополняется состояниями ожидания, и
необходимо обеспечить режим неконвейерной адресации, неактивный
(высокий) уровень сигнала NA# должен устанавливаться в течение
каждого из состояний Т2, исключая самое последнее состояние Т2
цикла, как показано на рис.6-12 в циклах 2 и 3. Если активный
уровень NA# окажется установленным в состояние Т2 (но не в
последнем Т2), то следующим состоянием, вместо состояния Т2 (для
неконвейерной адресации), будет состояние Т2i (для конвейерной
адресации) или Т2p (для конвейерной адресации).
Рис.6-13 наиболее полно иллюстрирует картину состояний шины и
переходов из состояния в состояние для случая, когда конвейерная
адресация не используется. Показанные переходы шины между 4-мя
возможными состояниями: Т1, Т2, Тi и Тh. Циклы шины содержат
состояния Т1 и Т2, причем Т2 может повторяться (состояния
ожидания). Кроме этого, шина может находиться в нерабочем
состоянии, т.е. в состоянии Тi, или в состоянии подтверждения
захвата шины, т.е. в состоянии Тh.
"1"
+-------+
? |
+--------------+
+-----------| Th |?-------------+
| +--------------+ |
| - - |
| +----------+ | |
| | | |
"2" | | "1" |"3" "4" |
----+ | | | "6" |
|"5" | | +--------------|---------------+ |
| | | | | | |
? ? | ? ? ? |
+--------------+ +--------------+ "9" +------------+
+?| | "3" | +-----?| +-+
| | Ti +-----?| T1 | | T2 | |
| | | | |?-----| | |
| +--------------+ +--------------+ "7" +------------+ |
|"2" | - "8" |
+-------+ +------+
"1"-HOLD активизирован
"2"-HOLD неактивизирован * нет внутреннего запроса
"3"-HOLD неактивизирован * есть внутренний запрос, ожидающий
обслуживание
"4"-READY# активизирован * HOLD активизирован
"5"-RESET активизирован
"6"-READY# активизирован * HOLD неактивизирован * нет внутреннего
запроса
"7"-READY# активизирован * HOLD неактивизирован * есть внутренний
запрос, ожидающий обслуживание
"8"-READY# неактивизирован * NA# неактивизирован
"9"-постоянно
СОСТОЯНИЯ ШИНЫ
T1 т первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#).
T2 т последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии.
Ti т нерабочее состояние.
Th т состояние подтверждения захвата шины (80386 устанавливает
активный уровень HLDA).
Самый короткий цикл шины состоит из двух состояний: T1 и T2.
Четыре основные состояния шины описывают функционирование шины,
когда не используется конвейерная адресация. Эти состояния
распространяются на оба размера шины: 32 бита и 16 бит, т.е.
справедливы для любого значения BS16#. Если при активном уровне
сигнала BS16# требуется выполнение второго 16-разрядного цикла,
последний выполняется перед формированием процессором сигнала
подтверждения захвата шины.
Рис.6-13. Состояния шины 80386 (когда конвейерная адресация не
применяется)
Для случая, когда конвейерная адресация не используется,
диаграмма состояния шины такая, как показана на рис.6-13. В
нерабочем состоянии шина находится в Тi. Циклы шины всегда
начинаются с Т1. Т1 всегда предшествует состоянию Т2. Если цикл
шины не подтвержден в течение Т2 и уровень NA# при этом
неактивный, состояние Т2 повторяется. Когда цикл подтвержден в
течение Т2, то за этим последует состояние Т1 следующего цикла
шины, если имеется ожидающий обслуживания внутренний запрос шины
(запрос на захват шины самим процессором), или состояние Тi, если
такого запроса нет, или состояние Тh, если установлен активный
уровень входного сигнала HOLD.
Диаграмма состояния шины на рис.6-13 справедлива при любом
значении сигнала BS16#. Если 80386 выполнит внутренние
переключения, необходимые для установки 16-разрядного размера
шины, то эти переключения не повлияют на состояния внешней шины.
Если для выполнения передачи по 16-разрядной шине требуется
дополнительный 16-разрядный цикл шины, он также будет выполняться
в соответствии с переходами состояний, показанными на рис.6-13.
В режиме конвейерной адресации в 80386 могут иметь еще три
типа состояния шины, не показанные на рис.6-13. На рис.6-20 в
параграфе 6.4.3.4 "Конвейерная адресация" показана более подробная
диаграмма состояния шины, включающая циклы в режиме конвейерной
адресации.
СОСТОЯНИЯ ШИНЫ2:
Тт первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#);
Т2 т последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии;
Тi ? нерабочее состояние;
Тh т состояние подтверждения захвата шины (80386
устанавливает активный уровень HLDA).
Четыре основные состояния шины описывают функционирование
шины, когда не используется конвейерная адресация. Эти состояния
распространяются на оба размера шины: 32 бит и 16 бит, т.е.
справедливы для любого значения BS16#. Если при активном уровне
сигнала BS16# требуется выполнение второго 16-разрядного цикла,
последний выполняется перед формированием процессором сигнала
подтверждения захвата шины.
6.4.3.3Режим неконвейерной адресации при изменении размера
шины данных
Ширина физической магистрали данных для любого неконвейерного
цикла шины может составлять или 32 разряда, или 16 разрядов. В
начале цикла шины процессор ведет себя так, как если бы ширина
шины данных составляла 32 бита. Когда цикл шины подтверждается
установкой активного уровня сигнала READY# в конце состояния Т2,
то анализируемый в этот момент уровень сигнала BS16# окажется в
неактивном состоянии, то размер физической шины данных принимается
равным 32 разрядам. Если же наблюдается активный уровень BS16#, то
размер шины принимается равным 16 разрядам.
Когда установлен активный уровень BS16#, и для выполнения
одной передачи требуется два 16-разрядных цикла, то активный
уровень сигнала BS16# должен быть установлен и во втором цикле.
Иначе 16-разрядный размер шины не будет сохранен во втором цикле.
Также, как и любой другой цикл шины, второй 16-разрядный цикл
должен быть подтвержден установкой активного уровня READY#.
Когда требуется второй 16-разрядный цикл для выполнения одной
передачи по 16-разрядной шине, то адреса, формируемые для двух 16-
разрядных циклов шины, тесно взаимосвязаны. Эти адреса идентичны
за исключением разрядов BE0# и BE1#, которые всегда переключаются
в неактивное состояние (высокий уровень) во втором цикле, так как
сигналы данных D0-D15 были уже переданы в первом 16-битном цикле.
На рис.6-14 и 6-15 показаны передачи, при которых установка
активного уровня BS16# требует второго 16-битного цикла для
выполнения передачи всего операнда. Рис.6-14 иллюстрирует циклы
без состояний ожидания. Рис.6-15 иллюстрирует циклы с одним
состоянием ожидания. Отметим, что в цикле 1 на рис.6-15, в течение
которого устанавливается активный уровень сигнала BS16#, сигнал
NA# должен быть обязательно переключен в неактивный уровень в
состоянии(ях) Т2, предшествующем(их) последнему состоянию Т2. Это
необходимо для того, чтобы в финальном состоянии Т2 процессор
воспринял установленный активный уровень BS16# в режиме
неконвейерной адресации.
6.4.3.4Конвейерная адресация
В режиме конвейерной адресации адрес и тип цикла для
следующего цикла шины, который будет обслуживать ждущий обработки,
внутренний запрос процессора, запрашиваются еще до того, как будет
получено подтверждение текущего цикла по линии READY#. Когда
следующий адрес подготовлен и выдан, 80386 устанавливает активный
уровень сигнала ADS#. Протокол режима конвейерной адресации
строится на основе совмещения циклов и с помощью входного сигнала
NA#. Когда выполняется цикл шины и текущий адрес должен иметь
достоверное значение в течение по меньшей мере одного полного
состояния шины, значение входного сигнала NA# анализируется в
конце каждой первой фазы состояния до тех пор, пока цикл шины не
получит подтверждение. В течение неконвейерных циклов шины,
следовательно, NA# анализируется в конце первой фазы в каждом
состоянии Т2. Примером может служить Цикл 2 на рис.6-16, в течение
которого NA# анализируется в конце первой фазы каждого Т2 (NA# был
установлен в активный уровень один раз в течение первого состояния
Т2 и не оказывает дальнейшего воздействия на выполнение этого
цикла шины).
Если процессор при просмотре NA# обнаружит активный уровень
этого сигнала, то 80386 освобождается, чтобы выдать адрес и тип
цикла следующего цикла, и установить активный уровень сигнала
ADS#, как только в процессоре появится ожидающий обслуживания
внутренний запрос шины. Процессор может выдать следующий адрес уже
в следующем состоянии шины, независимо от того получил ли в этот
момент подтверждение текущий цикл или не получил.
Что касается режима конвейерной адресации, то в этом режиме
80386 имеет следующие особенности:
1. Для того, чтобы процессор воспринял активный уровень
сигнала NA#, сигнал BS16# должен быть переключен в неактивный
уровень на время просмотра сигнала NA# (см. рис.6-16 Циклы 3 и 4;
рис.6-17 Циклы 2-4); В том случае, если сигналы NA# и BS16#
окажутся оба активными в течение последнего периода Т2 цикла шины,
приоритетом будет обладать активный сигнал BS16#. Следовательно,
если оба сигнала активны, то текущий размер шины принимается
равным 16 разрядам, а следующий адрес будет неконвейерным.
Схематично рис.6-18 показывает внутреннюю логику 80386,
обеспечивающую эти особенности.
2. Следующий адрес может появиться в состоянии шины, следующем
сразу после момента обнаружения активного уровня NA# (см. рис.6-16
или 6-17); В этом случае сразу шина перейдет в состояние Т2p.
Однако, если в этот момент отсутствует ожидающий обслуживания
внутренний запрос шины, то следующий адрес не будет установлен
сразу после активизации NA#, и вместо состояния Т2p шина перейдет
в состояние Т2i (см. рис.6-19 Цикл 3). При условии, что текущий
цикл шины еще не получил подтверждение по линии READY#, шина
перейдет в состояние Т2p как только 80386 выдает следующий адрес.
Внешние устройства, поэтому, должны следить за состоянием
выходного сигнала ADS#, подтверждающим выдачу на шину достоверного
следующего адреса.
3. В том случае, когда 80386 при просмотре обнаружит активный
уровень NA#, 80386 сам принимает решение на обслуживание самого
приоритетного внутреннего запроса шины, ожидающего обслуживания.
Процессор не сможет больше выполнить другую 16-разрядную передачу
по тому же адресу, даже если BS16# будет установлен в активный
уровень внешним устройством, так как после восприятия процессором
активного сигнала NA# текущий размер шины принимается равным 32-м
разрядам; Следовательно, если процессор опознал активный сигнал
NA# в течение цикла шины, то после этого сигнал BS16# игнорируется
в этом цикле шины (см. рис.6-16, 6-17, 6-19). Таким образом,