нельзя активизировать сигнал NA# в тех циклах шины, в которых 16-
разрядный размер шины должен быть задан установкой активного
уровня сигнала BS16#. См. 6.4.3.6 "Изменение размера шины в режиме
конвейерной адресации".
4. Любой адрес, достоверное значение которого подтверждено
выходным импульсным сигналом 80386 ADS#, будет сохраняться на
адресных выводах в течение по меньшей мере двух периодов тактовой
частоты процессора. 80386 не может выдавать новый адрес чаще, чем
* &$k% два периода тактовой частоты процессора (см. рис.6-16, 6-
17, 6-19);
5. Из всех сигналов, необходимых для следующего цикла шины,
процессор выдает только адрес и тип цикла шины; Уровень совмещения
в режиме конвейерной адресации не более, чем один цикл шины (см.
рис.6-19 Цикл 1). Полная диаграмма переходов состояний шины,
включая функционирование в режиме конвейерной адресации, дана на
рис.6-20. Отметим, что эта диаграмма включает диаграмму,
справедливую только для режима неконвейерной адресации, и
дополнительные три состояния шины для режима конвейерной
адресации.
"1"
+----+
? |
+--------+ "2"
----------------+ Тh |<--------------------------+
| +---------?| | "2" |
|"4" |"1" +--------+?-------------+ |
"5" | +--+ "6" "3"| | |
------+ | |+-----------------|--------------+ | |
? ? || ? | | |
+-----+| +-------+ | +-------+ |
--->| Тi +- "3" | Т1 | ВСЕГДА L>| Т2 +----+ |
| | +------------?| +------------?| |?-+ | |
+---+-----+ +-------+?------------+-------+ | | |
"4" - - "8" | - | | | |
| "8" | "12" | +--+ | | |
|"6 +--------------+ +--------------+ "9" | | |
| | ? "7"| | |
"15"+------+ | +--------+ +------+ | | |
--->| Т2i +-- "16" | Т2Р | "14" | Т1Р | | | |
| | +------------?| +------------?| +-+ | |
+---+------+ +--------+?------------+------+ | |
| - - - | "13" | | |
| | | +---+ | | |
| | | "11" "17" | "10"| |
| | +----------------------------------------+ | |
| +---------------------------------------------------+ |
+-------------------------------------------------------+
"01"тHOLD активизирован
"02"тREADY# активизирован * HOLD активизирован
"03"тHOLD неактивизирован * есть внутренний запрос, ожидающий
обслуживание
"04"тHOLD неактивизирован * нет внутреннего запроса
"05"тRESET активизирован
"06"тREADY# активизирован * HOLD неактивизирован * нет
внутреннего запроса
"07"тNA# неактивизирован
"08"тREADY# активизирован * HOLD неактивизирован * есть
внутренний запрос, ожидающий обслуживание
"09"тREADY# неактивизирован * NA# неактивизирован
"10"т (нет внутреннего запроса * HOLD активизирован) * NA#
активизирован * READY# неактивизирован
"11"тNA# активизирован * (HOLD активизирован * нет внутреннего
запроса)
"12"тREADY# неактивизирован * NA# активизирован * HOLD
неактивизирован * есть внутренний запрос, ожидающий обслуживание
"13"тNA# активизирован * HOLD неактивизирован * есть внутренний
' /`.a, ожидающий обслуживание
"14"тREADY# активизирован
"15"тREADY# неактивизирован * (нет внутреннего запроса * HOLD
активизирован)
"16"тREADY# неактивизирован * есть запрос, ожидающий
обслуживание * HOLD неактивизирован
"17"тREADY# неактивизирован
СОСТОЯНИЯ ШИНЫ :
Т1?первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#).
Т2?последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии.
Т2iтпоследующие состояния цикла шины, имеющие место когда
обнаружен активный уровень NA# в текущем цикле шины, но еще
отсутствует внутренний запрос шины, ожидающий обслуживание (80386
не выдаст новый адрес или не установит активный уровень ADS#).
Т2Р?последующие состояния цикла шины, имеющие место когда в
текущем цикле шины обнаружен активный уровень NA#, и имеется
внутренний, ожидающий обслуживание, запрос шины (80386 выдаст
новый адрес и активизирует сигнал ADS#). Т1Р-первое состояние
конвейерного цикла шины.
Tiтнерабочее состояние.
Thтсостояние подтверждения захвата шины (80386 устанавливает
активный уровень HLDA). Установка активного уровня NA# для
конвейерной адресации может повлечь за собой одно из трех типов
состояний шины: Т2i,Т2Р и Т1Р. В режиме конвейерной адресации
самый короткий цикл шины
состоит из состояний Т1Р и Т2Р.
Рис.6-20. Диаграмма всех возможных состояний шины (включая режим
конвейерной адресации)
Самый короткий цикл шины в режиме конвейерной адресации
состоит только из двух состояний шины, Т1p и Т2p (напомним, что
для режима неконвейерной адресации такими состояниями являются
состояния Т1 и Т2). Т1p является первым состоянием шины
конвейерного цикла.
6.4.3.5Инициализация и поддержание режима конвейерной
адресации
Пользуясь диаграммой состояний на рис.6-20, проследим переходы
шины из нерабочего состояния Тi, в начало конвейерного цикла шины
Т1p. Цикл шины, первый после нерабочего состояния шины Тi, должен
начинаться с состояния Т1, следовательно этот цикл будет
неконвейерным. Однако, если будет установлен активный уровень NA#,
и первый цикл шины закончится в состоянии Т2p, то следующий цикл
шины будет конвейерным (адрес для следующего цикла шины выдается в
состоянии Т2p первого цикла). Кратчайший путь от нерабочего
состояния к циклу шины с конвейерной адресацией показан ниже:
НЕРАБОЧЕЕ СОСТОЯНИЕ НЕКОНВЕЙЕРНЫЙ ЦИКЛ КОНВЕЙЕРНЫЙ ЦИКЛ
Тi,Тi,Тi Т1-Т2-Т2p Т1p-Т2p
Т1-Т2-Т2p - состояние цикла шины, в течение которого
устанавливается адрес (конвейерный) для следующего цикла шины,
начинающегося с состояния Т1p. Переход к конвейерному циклу из
состояния подтверждения захвата шины осуществляется аналогично и
показан ниже:
СОСТОЯНИЕ ПОДТВЕРЖДЕНИЯ НЕКОНВЕЙЕРНЫЙ КОНВЕЙЕРНЫЙ ЦИКЛ
ЗАХВАТА ЦИКЛ
Тh, Тh, Тh Т1-Т2-Т2p Т1p*Т2p
Переход к конвейерной адресации показан на рис.6-17 Цикл
1. Цикл 1 используется для перехода в режим конвейерной
адресации для выполнения последовательности конвейерных циклов 2,
3 и 4. В соответствующий момент устанавливается активный уровень
NA# для того, чтобы выбрать конвейерный адрес для циклов 2, 3 и 4.
Когда выполняется цикл шины, и достоверное значение текущего
адреса удерживается в течение одного состояния шины, состояние
входа NA# анализируется в конце каждой первой фазы до тех пор,
пока этот цикл не получит подтверждение. Следовательно, в Цикле 1
на рис.6-17 процессор начинает анализ NA# в состоянии Т2. Как
только в текущем цикле NA# оказывается установленным в активный
уровень, 80386 освобождается, чтобы выдать на шину новый адрес и
тип цикла до начала следующего состояния шины. Например, в Цикле 1
обеспечивает переход в режим конвейерной адресации, так как он
начинается с состояния Т1, но заканчивается состоянием Т2p.
Поскольку адрес для Цикла 2 устанавливается еще до начала Цикла 2,
последний называется конвейерным циклом шины и начинается с
состояния Т1p. Цикл 2 начнется, как только активный сигнал READY#
завершит Цикл 1. Примерами переходных циклов шины являются Цикл 1
на рис.6-17 и Цикл 2 на рис.6-16. На рис.6-17 показан переход в
течение цикла шины, первого после нерабочего состояния шины, это
самый кратчайший из возможных переходов в режим конвейерной
адресации. Цикл 2 на рис.6-16 иллюстрирует переходной цикл шины,
имеющий место внутри последовательности рабочих циклов шины. В
любом случае переходные циклы осуществляются аналогично независимо
от момента их появления: переходной цикл состоит по меньшей мере
из состояний Т1, Т2 (в этот момент вы устанавливаете активный
сигнал NA#), Т2p (при условии, что 80386 уже имеет ожидающий
обслуживания внутренний запрос шины, это условие выполняется почти
всегда). Состояния Т2p повторяются, если цикл дополняется
состояниями ожидания.
Отметим три состояния (Т1, Т2 и Т2p), комбинация которых
требуется только в цикле шины, выполняющем переход из режима
неконвейерной адресации в режим конвейерной адресации, например,
Цикл 1 на рис.6-17. Циклы 2, 3 и 4 на рис.6-17 показывают, что в
режиме конвейерной адресации могут выполняться циклы шины из двух
состояний каждый, включающие только состояния Т1p и Т2p.
Когда выполняется конвейерный цикл шины, режим конвейерной
адресации поддерживается путем установки активного сигнала NA# и
определением того, что 80386 устанавливает состояние Т2p шины в
текущем цикле шины. Текущий цикл шины должен заканчиваться
состоянием Т2p для того, чтобы режим конвейерной адресации был
сохранен и в следующем цикле. Состояние Т2p идентифицируется
установкой активного сигнала ADS#. На рис.6-16 и 6-17 режим
конвейерной адресации заканчивается после Цикла 4, так как
последним состоянием Цикла 4 является состояние Т2i. Это означает,
что 80386 не имел внутреннего запроса шины перед получением
подтверждения Цикла 4. Если цикл заканчивается состоянием Т2 или
Т2i, то следующий цикл будет неконвейерным. В действительности,
конвейерный адрес почти всегда устанавливается сразу после
обнаружения активного уровня NA#. Это происходит потому, что при
отсутствии любого другого запроса внутренний запрос
предварительной выборки команды почти всегда ожидает обслуживания
до тех пор, пока занят дешифратор команд и полностью заполнена
очередь предварительно выбранных команд. Следовательно,
конвейерный адрес устанавливается для длинных цепочек циклов шины,
если шина доступна, и в каждом цикле шины оказывается
cab -."+%--k, активный уровень сигнала
NA#.
6.4.3.6Конвейерная адресация при изменении размера шины данных
Наличие сигнала BS16# обеспечивает простое соединение с 16-
разрядными шинами данных. Когда установлен активный уровень BS16#,
схема шинного интерфейса 80386 выполняет соответствующие
переключения, чтобы осуществить передачу, используя 16-разрядную
шину данных, соединенную с линиями D0-D16. Однако, при
одновременном использовании сигналов NA# и BS16# имеет место
некоторое взаимное влияние этих сигналов друг на друга. Это
взаимное влияние проявляется тогда, когда требуются многократные
циклы шины для передачи 32-разрядных операндов по 16-разрядной
шине. Если операнду требуются обе 16-разрядные половины 32-
разрядной шины, то в соответствии с этим требованием 80386 должен
выполнить второй цикл шины для того, чтобы полностью передать весь
операнд. Именно это требование приводит к конфликтной ситуации при
использовании сигнала NA#.
Когда NA# оказывается установленным в активный уровень, 80386
дает себе разрешение на обработку следующего внутреннего,
ожидающего обслуживания запроса шины и выдает на шину следующий
подготовленный внутри адрес. Следовательно, активизация NA# делает
невозможным повторную выборку в следующем цикле шины текущего
адреса по линиям A2-A31, как это может потребоваться, когда сигнал
BS16# активизирован внешним устройством.
Для разрешения этого конфликта схема 80386 разработана таким
образом, чтобы удовлетворять следующим двум условиям:
1. Для разрешения конфликта 80386 разработан таким образом,
чтобы игнорировать сигнал BS16# в текущем цикле шины, если NA# уже
оказался установленным в текущем цикле. Если NA# оказался
установленным, то текущий размер шины данных принимается равным 32
разрядам.
2. Также для разрешения конфликта в том случае, если и NA# и
BS16# оказались установленными в один и тот же момент времени,
активный BS16# обладает более высокими по сравнению с активным NA#
приоритетом, и 80386 функционируется так, как если бы в этот
момент сигнал NA# оказался неактивным. Внутренняя схема 80386,
схематично показанная на рис.6-18 работает таким образом, чтобы
сигнал BS16# воспринимался активным и сигнал NA# воспринимался
неактивным, если оба входных сигнала активизированы внешними
устройствами в один и тот же момент просмотра этих сигналов.
6.4.4 Циклы подтверждения прерывания(INTA)
В ответ на запрос прерывания, поступивший на вход INTR, когда
прерывания разрешены, 80386 выполнит два цикла подтверждения
прерывания. Эти циклы шины аналогичны циклам чтения, в которых
имеющий место вид деятельности шины соответствует сигналам
определения типа цикла шины, и каждый цикл продолжается до тех
пор, пока процессор не получит подтверждение, наблюдая за сигналом
READY#.
В зависимости от значения адресного разряда А2 различаются
первый и второй циклы подтверждения прерывания. Адрес байта,
выдаваемый в первом цикле подтверждения прерывания, равен 4 (А31-
А3 низкие, А2 высокий, ВЕ3#-ВЕ1# высокие и ВЕ0# низкий). Адрес,
выдаваемый во втором цикле подтверждения прерывания, равен 0 (А31-
А2 низкие, ВЕ3#-ВЕ1# высокие, ВЕ0# низкий).
Активный уровень сигнала LOCK# устанавливается с начала
первого цикла подтверждения прерывания и до конца второго цикла
подтверждения прерывания. Четыре нерабочих состояния шины, Тi,
вставляются процессором между двумя циклами подтверждения
/`%`k" -(o, чтобы обеспечить время блокированного нерабочего
состояния шины ("мертвое" время) по меньшей мере длительностью 160
нс., что позволит в будущем ввести модификации скорости 80386,
достигающие 24 МГц (при этом внешняя частота CLK2 должна достигать
48 МГц), что в свою очередь обеспечит совместимость с временным
параметром TRHRL контроллера прерываний 8259А.
В течение обоих циклов подтверждения прерывания линии D0-D31
отключены. В конце первого цикла подтверждения прерывания данных
для чтения не имеется. В конце второго цикла подтверждения
прерывания 80386 считает внешний вектор прерывания по линиям D0-D7
шины данных. Вектор указывает определенный номер прерывания (от 0
до 255), требующего обслуживания.
6.4.5 Цикл индикации останова
80386 останавливается в результате выполнения инструкции HALT.
Для сигнализирования входа процессора в состояние останова
выполняется цикл индикации останова. Цикл индикации останова
идентифицируется определенной комбинацией сигналов типа цикла
шины, указанной в разделе 6.2.5 Сигналы определения типа цикла
шины, и адресом байта, равным 2. ВЕ0# и ВЕ2# при этом служат
только для различения цикла индикации останова от цикла индикации
выключения, в котором выдается адрес, равный 0. В течение цикла
останова данные, передаваемые по D0-D31, неопределенны.
Остановленный 80386 возобновляет функционирование, когда
устанавливается активный уровень сигнала INTR (если прерывания
разрешены), или сигнала NMI, или сигнала RESET.
6.4.6 Цикл индикации выключения
80386 выключается в результате появления ошибки защиты памяти
при попытке обработать двойную ошибку. Для сигнализирования
перехода процессора в выключенное состояние выполняется цикл
индикации выключения. Цикл индикации выключения идентифицируется
определенной комбинацией сигналов определения типа цикла шины,
указанной в разделе 6.2.5 Сигналы определения типа цикла шины, и
адресом байта, равным 0. Сигналы ВЕ0# и ВЕ2# при этом служат
только для отличия цикла индикации выключения от цикла индикации
останова, в котором выдается адрес, равный 2. В течение цикла
выключения данные, выдаваемые на линии D0-D31, неопределенны. Цикл
индикации выключения должен быть подтвержден установкой активного
уровня сигнала READY#.
Выключенный 80386 возобновляет функционирование, когда
устанавливается активный уровень сигнала NMI или RESET.
6.5Дополнительные сведения о функционировании
6.6.1 Вход и выход в/из состояния подтверждения захвата шины
Состояние подтверждения захвата шины, Тh, вводится в ответ на
установку активного уровня входного сигнала HOLD. В состоянии
подтверждения захвата шины 80386 выключает все выходные или
двунаправленные сигналы, исключая сигнал HLDA. Активный уровень
сигнала HLDA поддерживается все время, пока 80386 находится в
состоянии подтверждения захвата шины. В состоянии подтверждения
захвата шины все входы, за исключением HOLD и RESET, игнорируются
(исключение составляет также один положительный фронт сигнала NMI,
который запоминается для последующей его обработки, когда сигнал
HOLD перейдет в неактивное состояние).
Состояние Th может быть введено после нерабочего состояния
шины, как на рис.6-25, или после подтверждения текущего
физического цикла шины, если при этом уровень сигнала LOCK#
неактивный, как на рис.6-26 и 5-27. Если установка активного
a(#- + ВS16# требует выполнения второго 16-разрядного цикла шины
для завершения передачи физического операнда, то этот цикл
выполняется до подтверждения сигнала HOLD, хотя диаграммы
состояний на рис.6-13 и 5-20 не отражают этой особенности. Выход
из состояния Th осуществляется в ответ на снятие активного уровня
входного сигнала HOLD. Следующим состоянием будет состояние Ti,
как на рис.6-25, если не имеется ожидающего обслуживания
внутреннего запроса шины. Если же имеется внутренний, ожидающий
решения запрос шины, то следующим состоянием шины будет состояние
Т1, как показано на рис.6-26 и
6-27.
Выход из состояния Th осуществляется также в ответ на
установку активного уровня сигнала RESET. Если в течение состояния
Th появится положительный фронт на чувствительном к фронту входе
NMI, то это событие запоминается как немаскируемое прерывание 2 и
обслуживается после выхода процессора из состояния Th кроме
случая, когда до выхода из Th произойдет сброс 80386.
6.6.2 Сброс в состоянии подтверждения захвата шины
Активный сигнал RESET обладает более высоким приоритетом по
сравнению с активным сигналом HOLD. Следовательно, в ответ на
установку активного уровня на входе RESET осуществляется выход из
состояния Th. Если сигнал RESET активизируется во время действия
сигнала HOLD, то 80386 установит свои выводы в определенные
состояния в соответствии с табл.6-3 "Состояния выводов в течение
действия сигнала RESET" и выполнит обычную процедуру внутреннего
сброса.
Если активный уровень сигнала HOLD остается установленным и
после снятия активного сигнала RESET, то 80386 перейдет в
состояние подтверждения захвата шины до того, как выполнит свой
первый цикл шины, но при условии, что HOLD все еще остается
активным в момент, когда 80386 в другом случае приступил бы к
выполнению своего первого цикла шины. Если HOLD остается активным
после снятия сигнала RESET, то вход BUSY# все равно анализируется
как обычно, чтобы определить требуется ли самотестирование, сигнал
ERROR# также при этом анализируется как обычно, чтобы определить,
какой из двух возможных сопроцессоров присутствует в системе (или
когда сопроцессора вообще нет).
6.6.3 Функционирование шины в течение и после действия
сигнала RESET
RESET является самым приоритетным входным сигналом, при
установке активного уровня RESET прерывается любая деятельность
процессора. Выполняемый цикл шины может быть прерванным на любой
стадии, а нерабочие состояния или состояния подтверждения захвата
шины прекращаются при установке состояния сброса.
RESET должен поддерживаться в активном состоянии в течение по
меньшей мере 15 периодов частоты CLK2, чтобы он был уверенно
принят всеми схемами 80386, и по меньшей мере в течение 78
периодов CLK2, если выполняется самотестирование 80386, запрос на
которое анализируется во время отрицательного фронта RESET.
Активные импульсы RESET длительностью меньше 15 периодов CLK2
могут быть не восприняты.
Активные импульсы RESET длительностью меньше 78 периодов CLK2,
за которыми следует самотестирование, могут привести к тому, что
тест-структура выдаст сообщение о неисправности, когда в
действительности неисправности не существует. Дополнительное
расширение импульса RESET необходимо для получения достоверных
результатов самодиагностирования.
При условии, что отрицательный фронт RESET отвечает
b`%!." -(o,, предъявляемым к времени установки t25 и времени
удержания t26, этот фронт определит фазу внутренней тактовой
частоты процессора, как показано на рис.6-28 и рис.7-7.
Самодиагностирование 80386 можно запустить, если поддерживать
сигнал BUSY# на низком уровне в момент снятия сигнала RESET, как
показано на рис.6-28. Для выполнения всей процедуры
самодиагностирования требуется [(2^20)+ приблизительно 60]
периодов CLK2. Результаты тестирования не влияют на
продолжительность самодиагностирования.
Даже если после тестирования тест-структура указывает на
наличие неисправности, 80386 все равно перейдет к выполнению
процедуры, которая должна была следовать за сбросом 80386.
После отрицательного фронта RESET (и после самотестирования,
если в нем была необходимость) 80386 выполнит последовательность
внутренней инициализации за время, приблизительно равное 350-450
периодам CLK2. Во время инициализации, между двадцатым периодом
CLK2 и первым циклом шины (который последует за инициализацией),
80386 анализирует состояние входа ERROR#, чтобы отличить случай
присутствия в системе сопроцессора 80387 от случая, когда
присутствует 80287 или в системе вообще нет сопропроцессора.
Различие между последними двумя случаями (в системе присутствует
80287 или в системе нет сопроцессора) задается программно. 6.6
Сигнатура самотестирования
По завершению самотестирования (если самотестирование было
запрошено путем поддержания низкого уровня сигнала BUSY# во время
отрицательного фронта сигнала RESET), если не было обнаружено
неисправностей 80386, то значение каждого из регистров AX и DX
будет равно 0000H. Это справедливо для всех модификаций 80386.
Ненулевые значения регистров AX или DX после самотестирования
указывает на то, что какой-то блок 80386 неисправен.
6.7Идентификаторы типа и модификации
Чтобы помочь пользователям 80386, 80386 после сброса
поддерживает идентификатор типа и идентификатор модификации
соответственно в регистрах BH и BL. BH содержит 03H для
идентификации типа 80386. BL содержит беззнаковое двоичное число,
соответствующее версии данного типа процессора. Хронология
изменения идентификатора модификации (версии) 80386 в BL такова:
он начинается с нуля и изменяется (обычно увеличивается) при
изменениях данного типа процессора, предназначенных для
усовершенствования данного типа процессора по сравнению с
предыдущими версиями. Эти особенности предназначены для того,
чтобы помочь пользователям 80386 в их практической деятельности.
Однако не гарантируется, что значение идентификатора версии будет
изменяться с каждым изменением версии или что изменения этого
значения в зависимости от содержания или цели версии или в
зависимости от материалов, требующих изменения, будут следовать
строго по непрерывной числовой последовательности. Фирма Intel
поступает с этими характеристиками данного типа процессора только
по своему усмотрению.
Табл.6-10
ИСТОРИЯ ИДЕНТИФИКАТОРОВ ТИПА И ВЕРСИИ
СОДЕРЖАН ИДЕНТИФИКА ИДЕНТИФИКА СОДЕРЖАН ИДЕНТИФИКА ИДЕНТИФИКА
ИЕ ТОР ТИПА ТОР ВЕРСИИ ИЕ ТОР ТОР ВЕРСИИ
ИЗМЕНЕНИ ИЗМЕНЕНИ ТИПА
Я 80386 Я
80386
_______________________________
1 8 остальные поля дескрипторов описываются в главе 3.
2 Самый короткий цикл шины состоит из двух состояний: Т1 и Т2.
разрядный размер шины должен быть задан установкой активного
уровня сигнала BS16#. См. 6.4.3.6 "Изменение размера шины в режиме
конвейерной адресации".
4. Любой адрес, достоверное значение которого подтверждено
выходным импульсным сигналом 80386 ADS#, будет сохраняться на
адресных выводах в течение по меньшей мере двух периодов тактовой
частоты процессора. 80386 не может выдавать новый адрес чаще, чем
* &$k% два периода тактовой частоты процессора (см. рис.6-16, 6-
17, 6-19);
5. Из всех сигналов, необходимых для следующего цикла шины,
процессор выдает только адрес и тип цикла шины; Уровень совмещения
в режиме конвейерной адресации не более, чем один цикл шины (см.
рис.6-19 Цикл 1). Полная диаграмма переходов состояний шины,
включая функционирование в режиме конвейерной адресации, дана на
рис.6-20. Отметим, что эта диаграмма включает диаграмму,
справедливую только для режима неконвейерной адресации, и
дополнительные три состояния шины для режима конвейерной
адресации.
"1"
+----+
? |
+--------+ "2"
----------------+ Тh |<--------------------------+
| +---------?| | "2" |
|"4" |"1" +--------+?-------------+ |
"5" | +--+ "6" "3"| | |
------+ | |+-----------------|--------------+ | |
? ? || ? | | |
+-----+| +-------+ | +-------+ |
--->| Тi +- "3" | Т1 | ВСЕГДА L>| Т2 +----+ |
| | +------------?| +------------?| |?-+ | |
+---+-----+ +-------+?------------+-------+ | | |
"4" - - "8" | - | | | |
| "8" | "12" | +--+ | | |
|"6 +--------------+ +--------------+ "9" | | |
| | ? "7"| | |
"15"+------+ | +--------+ +------+ | | |
--->| Т2i +-- "16" | Т2Р | "14" | Т1Р | | | |
| | +------------?| +------------?| +-+ | |
+---+------+ +--------+?------------+------+ | |
| - - - | "13" | | |
| | | +---+ | | |
| | | "11" "17" | "10"| |
| | +----------------------------------------+ | |
| +---------------------------------------------------+ |
+-------------------------------------------------------+
"01"тHOLD активизирован
"02"тREADY# активизирован * HOLD активизирован
"03"тHOLD неактивизирован * есть внутренний запрос, ожидающий
обслуживание
"04"тHOLD неактивизирован * нет внутреннего запроса
"05"тRESET активизирован
"06"тREADY# активизирован * HOLD неактивизирован * нет
внутреннего запроса
"07"тNA# неактивизирован
"08"тREADY# активизирован * HOLD неактивизирован * есть
внутренний запрос, ожидающий обслуживание
"09"тREADY# неактивизирован * NA# неактивизирован
"10"т (нет внутреннего запроса * HOLD активизирован) * NA#
активизирован * READY# неактивизирован
"11"тNA# активизирован * (HOLD активизирован * нет внутреннего
запроса)
"12"тREADY# неактивизирован * NA# активизирован * HOLD
неактивизирован * есть внутренний запрос, ожидающий обслуживание
"13"тNA# активизирован * HOLD неактивизирован * есть внутренний
' /`.a, ожидающий обслуживание
"14"тREADY# активизирован
"15"тREADY# неактивизирован * (нет внутреннего запроса * HOLD
активизирован)
"16"тREADY# неактивизирован * есть запрос, ожидающий
обслуживание * HOLD неактивизирован
"17"тREADY# неактивизирован
СОСТОЯНИЯ ШИНЫ :
Т1?первое состояние неконвейерного цикла шины (80386 выдает
новый адрес и устанавливает активный уровень ADS#).
Т2?последующие состояния цикла шины, когда при просмотре
сигнала NA# в текущем цикле шины он оказывается в неактивном
состоянии.
Т2iтпоследующие состояния цикла шины, имеющие место когда
обнаружен активный уровень NA# в текущем цикле шины, но еще
отсутствует внутренний запрос шины, ожидающий обслуживание (80386
не выдаст новый адрес или не установит активный уровень ADS#).
Т2Р?последующие состояния цикла шины, имеющие место когда в
текущем цикле шины обнаружен активный уровень NA#, и имеется
внутренний, ожидающий обслуживание, запрос шины (80386 выдаст
новый адрес и активизирует сигнал ADS#). Т1Р-первое состояние
конвейерного цикла шины.
Tiтнерабочее состояние.
Thтсостояние подтверждения захвата шины (80386 устанавливает
активный уровень HLDA). Установка активного уровня NA# для
конвейерной адресации может повлечь за собой одно из трех типов
состояний шины: Т2i,Т2Р и Т1Р. В режиме конвейерной адресации
самый короткий цикл шины
состоит из состояний Т1Р и Т2Р.
Рис.6-20. Диаграмма всех возможных состояний шины (включая режим
конвейерной адресации)
Самый короткий цикл шины в режиме конвейерной адресации
состоит только из двух состояний шины, Т1p и Т2p (напомним, что
для режима неконвейерной адресации такими состояниями являются
состояния Т1 и Т2). Т1p является первым состоянием шины
конвейерного цикла.
6.4.3.5Инициализация и поддержание режима конвейерной
адресации
Пользуясь диаграммой состояний на рис.6-20, проследим переходы
шины из нерабочего состояния Тi, в начало конвейерного цикла шины
Т1p. Цикл шины, первый после нерабочего состояния шины Тi, должен
начинаться с состояния Т1, следовательно этот цикл будет
неконвейерным. Однако, если будет установлен активный уровень NA#,
и первый цикл шины закончится в состоянии Т2p, то следующий цикл
шины будет конвейерным (адрес для следующего цикла шины выдается в
состоянии Т2p первого цикла). Кратчайший путь от нерабочего
состояния к циклу шины с конвейерной адресацией показан ниже:
НЕРАБОЧЕЕ СОСТОЯНИЕ НЕКОНВЕЙЕРНЫЙ ЦИКЛ КОНВЕЙЕРНЫЙ ЦИКЛ
Тi,Тi,Тi Т1-Т2-Т2p Т1p-Т2p
Т1-Т2-Т2p - состояние цикла шины, в течение которого
устанавливается адрес (конвейерный) для следующего цикла шины,
начинающегося с состояния Т1p. Переход к конвейерному циклу из
состояния подтверждения захвата шины осуществляется аналогично и
показан ниже:
СОСТОЯНИЕ ПОДТВЕРЖДЕНИЯ НЕКОНВЕЙЕРНЫЙ КОНВЕЙЕРНЫЙ ЦИКЛ
ЗАХВАТА ЦИКЛ
Тh, Тh, Тh Т1-Т2-Т2p Т1p*Т2p
Переход к конвейерной адресации показан на рис.6-17 Цикл
1. Цикл 1 используется для перехода в режим конвейерной
адресации для выполнения последовательности конвейерных циклов 2,
3 и 4. В соответствующий момент устанавливается активный уровень
NA# для того, чтобы выбрать конвейерный адрес для циклов 2, 3 и 4.
Когда выполняется цикл шины, и достоверное значение текущего
адреса удерживается в течение одного состояния шины, состояние
входа NA# анализируется в конце каждой первой фазы до тех пор,
пока этот цикл не получит подтверждение. Следовательно, в Цикле 1
на рис.6-17 процессор начинает анализ NA# в состоянии Т2. Как
только в текущем цикле NA# оказывается установленным в активный
уровень, 80386 освобождается, чтобы выдать на шину новый адрес и
тип цикла до начала следующего состояния шины. Например, в Цикле 1
обеспечивает переход в режим конвейерной адресации, так как он
начинается с состояния Т1, но заканчивается состоянием Т2p.
Поскольку адрес для Цикла 2 устанавливается еще до начала Цикла 2,
последний называется конвейерным циклом шины и начинается с
состояния Т1p. Цикл 2 начнется, как только активный сигнал READY#
завершит Цикл 1. Примерами переходных циклов шины являются Цикл 1
на рис.6-17 и Цикл 2 на рис.6-16. На рис.6-17 показан переход в
течение цикла шины, первого после нерабочего состояния шины, это
самый кратчайший из возможных переходов в режим конвейерной
адресации. Цикл 2 на рис.6-16 иллюстрирует переходной цикл шины,
имеющий место внутри последовательности рабочих циклов шины. В
любом случае переходные циклы осуществляются аналогично независимо
от момента их появления: переходной цикл состоит по меньшей мере
из состояний Т1, Т2 (в этот момент вы устанавливаете активный
сигнал NA#), Т2p (при условии, что 80386 уже имеет ожидающий
обслуживания внутренний запрос шины, это условие выполняется почти
всегда). Состояния Т2p повторяются, если цикл дополняется
состояниями ожидания.
Отметим три состояния (Т1, Т2 и Т2p), комбинация которых
требуется только в цикле шины, выполняющем переход из режима
неконвейерной адресации в режим конвейерной адресации, например,
Цикл 1 на рис.6-17. Циклы 2, 3 и 4 на рис.6-17 показывают, что в
режиме конвейерной адресации могут выполняться циклы шины из двух
состояний каждый, включающие только состояния Т1p и Т2p.
Когда выполняется конвейерный цикл шины, режим конвейерной
адресации поддерживается путем установки активного сигнала NA# и
определением того, что 80386 устанавливает состояние Т2p шины в
текущем цикле шины. Текущий цикл шины должен заканчиваться
состоянием Т2p для того, чтобы режим конвейерной адресации был
сохранен и в следующем цикле. Состояние Т2p идентифицируется
установкой активного сигнала ADS#. На рис.6-16 и 6-17 режим
конвейерной адресации заканчивается после Цикла 4, так как
последним состоянием Цикла 4 является состояние Т2i. Это означает,
что 80386 не имел внутреннего запроса шины перед получением
подтверждения Цикла 4. Если цикл заканчивается состоянием Т2 или
Т2i, то следующий цикл будет неконвейерным. В действительности,
конвейерный адрес почти всегда устанавливается сразу после
обнаружения активного уровня NA#. Это происходит потому, что при
отсутствии любого другого запроса внутренний запрос
предварительной выборки команды почти всегда ожидает обслуживания
до тех пор, пока занят дешифратор команд и полностью заполнена
очередь предварительно выбранных команд. Следовательно,
конвейерный адрес устанавливается для длинных цепочек циклов шины,
если шина доступна, и в каждом цикле шины оказывается
cab -."+%--k, активный уровень сигнала
NA#.
6.4.3.6Конвейерная адресация при изменении размера шины данных
Наличие сигнала BS16# обеспечивает простое соединение с 16-
разрядными шинами данных. Когда установлен активный уровень BS16#,
схема шинного интерфейса 80386 выполняет соответствующие
переключения, чтобы осуществить передачу, используя 16-разрядную
шину данных, соединенную с линиями D0-D16. Однако, при
одновременном использовании сигналов NA# и BS16# имеет место
некоторое взаимное влияние этих сигналов друг на друга. Это
взаимное влияние проявляется тогда, когда требуются многократные
циклы шины для передачи 32-разрядных операндов по 16-разрядной
шине. Если операнду требуются обе 16-разрядные половины 32-
разрядной шины, то в соответствии с этим требованием 80386 должен
выполнить второй цикл шины для того, чтобы полностью передать весь
операнд. Именно это требование приводит к конфликтной ситуации при
использовании сигнала NA#.
Когда NA# оказывается установленным в активный уровень, 80386
дает себе разрешение на обработку следующего внутреннего,
ожидающего обслуживания запроса шины и выдает на шину следующий
подготовленный внутри адрес. Следовательно, активизация NA# делает
невозможным повторную выборку в следующем цикле шины текущего
адреса по линиям A2-A31, как это может потребоваться, когда сигнал
BS16# активизирован внешним устройством.
Для разрешения этого конфликта схема 80386 разработана таким
образом, чтобы удовлетворять следующим двум условиям:
1. Для разрешения конфликта 80386 разработан таким образом,
чтобы игнорировать сигнал BS16# в текущем цикле шины, если NA# уже
оказался установленным в текущем цикле. Если NA# оказался
установленным, то текущий размер шины данных принимается равным 32
разрядам.
2. Также для разрешения конфликта в том случае, если и NA# и
BS16# оказались установленными в один и тот же момент времени,
активный BS16# обладает более высокими по сравнению с активным NA#
приоритетом, и 80386 функционируется так, как если бы в этот
момент сигнал NA# оказался неактивным. Внутренняя схема 80386,
схематично показанная на рис.6-18 работает таким образом, чтобы
сигнал BS16# воспринимался активным и сигнал NA# воспринимался
неактивным, если оба входных сигнала активизированы внешними
устройствами в один и тот же момент просмотра этих сигналов.
6.4.4 Циклы подтверждения прерывания(INTA)
В ответ на запрос прерывания, поступивший на вход INTR, когда
прерывания разрешены, 80386 выполнит два цикла подтверждения
прерывания. Эти циклы шины аналогичны циклам чтения, в которых
имеющий место вид деятельности шины соответствует сигналам
определения типа цикла шины, и каждый цикл продолжается до тех
пор, пока процессор не получит подтверждение, наблюдая за сигналом
READY#.
В зависимости от значения адресного разряда А2 различаются
первый и второй циклы подтверждения прерывания. Адрес байта,
выдаваемый в первом цикле подтверждения прерывания, равен 4 (А31-
А3 низкие, А2 высокий, ВЕ3#-ВЕ1# высокие и ВЕ0# низкий). Адрес,
выдаваемый во втором цикле подтверждения прерывания, равен 0 (А31-
А2 низкие, ВЕ3#-ВЕ1# высокие, ВЕ0# низкий).
Активный уровень сигнала LOCK# устанавливается с начала
первого цикла подтверждения прерывания и до конца второго цикла
подтверждения прерывания. Четыре нерабочих состояния шины, Тi,
вставляются процессором между двумя циклами подтверждения
/`%`k" -(o, чтобы обеспечить время блокированного нерабочего
состояния шины ("мертвое" время) по меньшей мере длительностью 160
нс., что позволит в будущем ввести модификации скорости 80386,
достигающие 24 МГц (при этом внешняя частота CLK2 должна достигать
48 МГц), что в свою очередь обеспечит совместимость с временным
параметром TRHRL контроллера прерываний 8259А.
В течение обоих циклов подтверждения прерывания линии D0-D31
отключены. В конце первого цикла подтверждения прерывания данных
для чтения не имеется. В конце второго цикла подтверждения
прерывания 80386 считает внешний вектор прерывания по линиям D0-D7
шины данных. Вектор указывает определенный номер прерывания (от 0
до 255), требующего обслуживания.
6.4.5 Цикл индикации останова
80386 останавливается в результате выполнения инструкции HALT.
Для сигнализирования входа процессора в состояние останова
выполняется цикл индикации останова. Цикл индикации останова
идентифицируется определенной комбинацией сигналов типа цикла
шины, указанной в разделе 6.2.5 Сигналы определения типа цикла
шины, и адресом байта, равным 2. ВЕ0# и ВЕ2# при этом служат
только для различения цикла индикации останова от цикла индикации
выключения, в котором выдается адрес, равный 0. В течение цикла
останова данные, передаваемые по D0-D31, неопределенны.
Остановленный 80386 возобновляет функционирование, когда
устанавливается активный уровень сигнала INTR (если прерывания
разрешены), или сигнала NMI, или сигнала RESET.
6.4.6 Цикл индикации выключения
80386 выключается в результате появления ошибки защиты памяти
при попытке обработать двойную ошибку. Для сигнализирования
перехода процессора в выключенное состояние выполняется цикл
индикации выключения. Цикл индикации выключения идентифицируется
определенной комбинацией сигналов определения типа цикла шины,
указанной в разделе 6.2.5 Сигналы определения типа цикла шины, и
адресом байта, равным 0. Сигналы ВЕ0# и ВЕ2# при этом служат
только для отличия цикла индикации выключения от цикла индикации
останова, в котором выдается адрес, равный 2. В течение цикла
выключения данные, выдаваемые на линии D0-D31, неопределенны. Цикл
индикации выключения должен быть подтвержден установкой активного
уровня сигнала READY#.
Выключенный 80386 возобновляет функционирование, когда
устанавливается активный уровень сигнала NMI или RESET.
6.5Дополнительные сведения о функционировании
6.6.1 Вход и выход в/из состояния подтверждения захвата шины
Состояние подтверждения захвата шины, Тh, вводится в ответ на
установку активного уровня входного сигнала HOLD. В состоянии
подтверждения захвата шины 80386 выключает все выходные или
двунаправленные сигналы, исключая сигнал HLDA. Активный уровень
сигнала HLDA поддерживается все время, пока 80386 находится в
состоянии подтверждения захвата шины. В состоянии подтверждения
захвата шины все входы, за исключением HOLD и RESET, игнорируются
(исключение составляет также один положительный фронт сигнала NMI,
который запоминается для последующей его обработки, когда сигнал
HOLD перейдет в неактивное состояние).
Состояние Th может быть введено после нерабочего состояния
шины, как на рис.6-25, или после подтверждения текущего
физического цикла шины, если при этом уровень сигнала LOCK#
неактивный, как на рис.6-26 и 5-27. Если установка активного
a(#- + ВS16# требует выполнения второго 16-разрядного цикла шины
для завершения передачи физического операнда, то этот цикл
выполняется до подтверждения сигнала HOLD, хотя диаграммы
состояний на рис.6-13 и 5-20 не отражают этой особенности. Выход
из состояния Th осуществляется в ответ на снятие активного уровня
входного сигнала HOLD. Следующим состоянием будет состояние Ti,
как на рис.6-25, если не имеется ожидающего обслуживания
внутреннего запроса шины. Если же имеется внутренний, ожидающий
решения запрос шины, то следующим состоянием шины будет состояние
Т1, как показано на рис.6-26 и
6-27.
Выход из состояния Th осуществляется также в ответ на
установку активного уровня сигнала RESET. Если в течение состояния
Th появится положительный фронт на чувствительном к фронту входе
NMI, то это событие запоминается как немаскируемое прерывание 2 и
обслуживается после выхода процессора из состояния Th кроме
случая, когда до выхода из Th произойдет сброс 80386.
6.6.2 Сброс в состоянии подтверждения захвата шины
Активный сигнал RESET обладает более высоким приоритетом по
сравнению с активным сигналом HOLD. Следовательно, в ответ на
установку активного уровня на входе RESET осуществляется выход из
состояния Th. Если сигнал RESET активизируется во время действия
сигнала HOLD, то 80386 установит свои выводы в определенные
состояния в соответствии с табл.6-3 "Состояния выводов в течение
действия сигнала RESET" и выполнит обычную процедуру внутреннего
сброса.
Если активный уровень сигнала HOLD остается установленным и
после снятия активного сигнала RESET, то 80386 перейдет в
состояние подтверждения захвата шины до того, как выполнит свой
первый цикл шины, но при условии, что HOLD все еще остается
активным в момент, когда 80386 в другом случае приступил бы к
выполнению своего первого цикла шины. Если HOLD остается активным
после снятия сигнала RESET, то вход BUSY# все равно анализируется
как обычно, чтобы определить требуется ли самотестирование, сигнал
ERROR# также при этом анализируется как обычно, чтобы определить,
какой из двух возможных сопроцессоров присутствует в системе (или
когда сопроцессора вообще нет).
6.6.3 Функционирование шины в течение и после действия
сигнала RESET
RESET является самым приоритетным входным сигналом, при
установке активного уровня RESET прерывается любая деятельность
процессора. Выполняемый цикл шины может быть прерванным на любой
стадии, а нерабочие состояния или состояния подтверждения захвата
шины прекращаются при установке состояния сброса.
RESET должен поддерживаться в активном состоянии в течение по
меньшей мере 15 периодов частоты CLK2, чтобы он был уверенно
принят всеми схемами 80386, и по меньшей мере в течение 78
периодов CLK2, если выполняется самотестирование 80386, запрос на
которое анализируется во время отрицательного фронта RESET.
Активные импульсы RESET длительностью меньше 15 периодов CLK2
могут быть не восприняты.
Активные импульсы RESET длительностью меньше 78 периодов CLK2,
за которыми следует самотестирование, могут привести к тому, что
тест-структура выдаст сообщение о неисправности, когда в
действительности неисправности не существует. Дополнительное
расширение импульса RESET необходимо для получения достоверных
результатов самодиагностирования.
При условии, что отрицательный фронт RESET отвечает
b`%!." -(o,, предъявляемым к времени установки t25 и времени
удержания t26, этот фронт определит фазу внутренней тактовой
частоты процессора, как показано на рис.6-28 и рис.7-7.
Самодиагностирование 80386 можно запустить, если поддерживать
сигнал BUSY# на низком уровне в момент снятия сигнала RESET, как
показано на рис.6-28. Для выполнения всей процедуры
самодиагностирования требуется [(2^20)+ приблизительно 60]
периодов CLK2. Результаты тестирования не влияют на
продолжительность самодиагностирования.
Даже если после тестирования тест-структура указывает на
наличие неисправности, 80386 все равно перейдет к выполнению
процедуры, которая должна была следовать за сбросом 80386.
После отрицательного фронта RESET (и после самотестирования,
если в нем была необходимость) 80386 выполнит последовательность
внутренней инициализации за время, приблизительно равное 350-450
периодам CLK2. Во время инициализации, между двадцатым периодом
CLK2 и первым циклом шины (который последует за инициализацией),
80386 анализирует состояние входа ERROR#, чтобы отличить случай
присутствия в системе сопроцессора 80387 от случая, когда
присутствует 80287 или в системе вообще нет сопропроцессора.
Различие между последними двумя случаями (в системе присутствует
80287 или в системе нет сопроцессора) задается программно. 6.6
Сигнатура самотестирования
По завершению самотестирования (если самотестирование было
запрошено путем поддержания низкого уровня сигнала BUSY# во время
отрицательного фронта сигнала RESET), если не было обнаружено
неисправностей 80386, то значение каждого из регистров AX и DX
будет равно 0000H. Это справедливо для всех модификаций 80386.
Ненулевые значения регистров AX или DX после самотестирования
указывает на то, что какой-то блок 80386 неисправен.
6.7Идентификаторы типа и модификации
Чтобы помочь пользователям 80386, 80386 после сброса
поддерживает идентификатор типа и идентификатор модификации
соответственно в регистрах BH и BL. BH содержит 03H для
идентификации типа 80386. BL содержит беззнаковое двоичное число,
соответствующее версии данного типа процессора. Хронология
изменения идентификатора модификации (версии) 80386 в BL такова:
он начинается с нуля и изменяется (обычно увеличивается) при
изменениях данного типа процессора, предназначенных для
усовершенствования данного типа процессора по сравнению с
предыдущими версиями. Эти особенности предназначены для того,
чтобы помочь пользователям 80386 в их практической деятельности.
Однако не гарантируется, что значение идентификатора версии будет
изменяться с каждым изменением версии или что изменения этого
значения в зависимости от содержания или цели версии или в
зависимости от материалов, требующих изменения, будут следовать
строго по непрерывной числовой последовательности. Фирма Intel
поступает с этими характеристиками данного типа процессора только
по своему усмотрению.
Табл.6-10
ИСТОРИЯ ИДЕНТИФИКАТОРОВ ТИПА И ВЕРСИИ
СОДЕРЖАН ИДЕНТИФИКА ИДЕНТИФИКА СОДЕРЖАН ИДЕНТИФИКА ИДЕНТИФИКА
ИЕ ТОР ТИПА ТОР ВЕРСИИ ИЕ ТОР ТОР ВЕРСИИ
ИЗМЕНЕНИ ИЗМЕНЕНИ ТИПА
Я 80386 Я
80386
_______________________________
1 8 остальные поля дескрипторов описываются в главе 3.
2 Самый короткий цикл шины состоит из двух состояний: Т1 и Т2.