Гук Михаил Юрьевич
Шрифт:
• бит 3 – VGA Enable, разрешение специальной поддержки VGA;
• бит 4 – резерв;
• бит 5 – Master-Abort Mode, поведение моста в случае, когда, транслируя транзакцию, он не получает ответа от целевого устройства: 0 – игнорировать эту ситуацию, возвращая при чтении FF…FFh и отбрасывая данные записи; 1 – сообщать инициатору транзакции условием Target-Abort, а если это невозможно (в случае отправленной записи), подавать сигнал SERR#;
• бит 6 – Secondary Bus Reset, подача сигнала RST# на вторичный интерфейс (когда бит сброшен, RST# на вторичном интерфейсе вырабатывается по RST# на первичном);
• бит 7 – Fast Back-to-Back Enable, разрешение генерации быстрых смежных транзакций на вторичном интерфейсе;
• бит 8 – Primary Discard Timer, таймер отбрасывания результатов отложенных транзакций, инициированных мастером с первичного интерфейса: 0 – ожидание 215 тактов шины, 1 – 210. Отсчет начинается, когда результат отложенной транзакции подходит к голове очереди. Если результат не будет забран мастером (повтором транзакции) за указанное время, результат отбрасывается;
• бит 9 – Secondary Discard Timer, таймер отбрасывания результатов отложенных транзакций, инициированных мастером с вторичного интерфейса (аналогично предыдущему);
• бит 10 – Discard Timer Status, признак отбрасывания отложенных транзакций на любом интерфейсе;
• бит 11 – Discard Timer SERR# Enable, разрешение генерации SERR# (на первичном интерфейсе) по срабатыванию таймера отбрасывания;
• биты [12:15] – резерв.
Регистр Secondary Latency Timer управляет поведением моста как мастера на вторичной шине, когда у него отбирают управление шиной (правда, отбирает он сам у себя, поскольку арбитр – часть моста).
Для больших систем с шасси расширения мост может иметь возможность нумерации шасси и слотов, для чего он должен иметь свойство с Capabilities ID = 04 (рис. 5.4).
Регистр Expansion Slot характеризует положение и вторичную шину моста:
• биты [4:0] – Expansion Slots Provided, число слотов на вторичной шине моста;
• бит 5 – First in Chassis, признак первого моста в шасси расширения. Указывает и на наличие шасси и, следовательно, использование регистра номера шасси. Если в шасси имеется несколько мостов, то первым является либо мост с минимальным номером первичной шины (остальные будут для него подчиненными), либо с минимальным номером устройства (остальные будут того же ранга, но их вторичные шины будут иметь большие номера);
• биты [7:6] – резерв.
Регистр Chassis Number задает номер шасси, в котором находится данный мост (0 – шасси, на котором находится процессор, выполняющий конфигурирование).
Программная генерация конфигурационных и специальных циклов
Поскольку конфигурационное пространство PCI обособлено, в главный мост приходится вводить специальный механизм доступа к нему командами процессора, инструкции которого «умеют» обращаться только к памяти или вводу-выводу. Этот же механизм используется и для генерации специальных циклов. Для PC-совместимых компьютеров предусмотрено два механизма, из которых в спецификации PCI 2.2 оставлен только первый (Configuration Mechanism #1) как более прозрачный. Номер механизма, которым пользуется конкретная системная плата, можно узнать путем вызова PCI BIOS. Для доступа к расширенному конфигурационному пространству устройств PCI–X эти механизмы непригодны (доступ к нему возможен только через прямое отображение на память, см. ранее).
Конфигурационные циклы адресуются к конкретному устройству (микросхеме PCI), расположенному на шине с известным номером. Декодированием номера шины и устройства, для которого должен быть сформирован сигнал выборки IDSEL (единичное значение), занимаются мосты. Номер функции и адрес регистра декодируется самим устройством.
Для работы механизма № 1 в пространстве ввода-вывода зарезервированы 32-битные порты с адресами 0CF8h и 0CFCh, входящие в главный мост. Для обращения к конфигурационному пространству в порт CONFIGADDRESS (RW, адрес CF8h) заносят 32-разрядный адрес, декодируемый в соответствии с рис. 5.5. После занесения адреса обращением к порту CONFIGDATA (RW, адрес CFCh) можно прочитать или записать содержимое требуемого конфигурационного регистра. В регистре CONFIGADDRESS бит 31 является разрешением формирования конфигурационных и специальных циклов. В зависимости от номера шины, указанного в этом регистре, главный мост генерирует конфигурационные циклы одного из двух типов:
• для обращения к устройству, находящемуся на нулевой шине (подключенной к главному мосту), используется цикл типа 0 (см. рис. 2.2, а-в на с. 51). В этом цикле в фазе адреса на линии AD[31:11] мост помещает позиционный код выбора устройства, на AD[10:8] – номер функции, на AD[7:2] – адрес регистра, а биты 1:0 = 00 являются признаком цикла типа 0. В PCI–X в фазе адреса на линии AD[15:11] помещается номер устройства; расширенное конфигурационное пространство через данный механизм не доступно;
• для обращения к устройству, находящемуся на ненулевой шине, используется цикл типа 1. Здесь главный мост передает всю адресную информацию из CONGIG_ADDRESS (номер шины, устройства, функции и регистра) на нулевую шину PCI, обнуляя старшие биты (31:24) и устанавливая в битах 1:0 признак типа «01» (рис. 2.2, г).
Специальный цикл генерируется при записи в CONFIG_DATA, когда в регистре CONGIG_ADDRESS все биты [15:8], единичные, а биты [7:0] – нулевые; номер шины, на которой формируется цикл, задается битами [23:16]. В специальном цикле ад ресная информация не передается (он широковещательный), но путем задания номера шины можно управлять его распространением. Если хост генерирует специальный цикл, указав нулевой адрес шины, то этот цикл будет выполнен только на главной шине и всеми остальными мостами распространяться не будет. Если указан ненулевой адрес шины, то главный мост сформирует цикл конфигурационной записи типа 1, который в специальный цикл будет преобразован только мостом на шине назначения. Специальный цикл, генерируемый ведущим устройством шины, действует только на шине этого устройства и не распространяется через мосты. Если требуется сгенерировать этот цикл на другой шине, то ведущее устройство может это сделать посредством записей в регистры CONGIG_ADDRESS и CONFIG_DATA.[12]