а своем выходе подтверждения захвата (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). Таким образом, нельзя активизировать сигнал 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 остается акти