Шины PCI, USB и FireWire
Шрифт:
• биты [15:0] – Capability ID, идентификатор свойства;
• биты [19:16] – Capability Version Number, номер версии свойства;
• биты [31:20] – Next Capability Offset, смещение следующего идентификатора (относительно нулевого регистра).
Конфигурационное пространство мостов PCI
Заголовок конфигурационного пространства мостов PCI-PCI приведен на рис. 5.3. Регистры в диапазоне адресов 00-17h полностью совпадают с регистрами обычного устройства PCI и описывают поведение и состояние моста на первичной шине. Заметим, что бит 2 регистра команд (Bus Master Enable) управляет
Маршрутизирующие свойства моста определяются следующими регистрами (подробности см. в главе 4):
• Primary Bus Number – номер первичной шины;
• Secondary Bus Number – номер вторичной шины (это и номер моста);
• Subordinate Bus Number – максимальный номер подчиненной шины;
• i/O Base и I/O Limit – регистры, задающие начальный и конечный адрес пространства ввода-вывода устройств, расположенных за мостом. Эти регистры задают только старшие 4 бита 16-битного адреса ввода-вывода, так что гранулярность выделения адресов составляет 4 Кбайт;
• i/O Limit Upper 16 Bits и i/O Base Upper 16 Bits – регистры старшей части адреса ввода-вывода, если используется 32-битная адресация ввода-вывода (на это указывают установленные биты 0 регистров I/O Base и I/O Limit);
• Memory Base и Memory Limit – регистры, задающие начальный и конечный адрес пространства памяти, на которую отображены регистры ввода-вывода устройств, расположенных за мостом. Эти регистры задают только старшие 12 бит 32-битного адреса памяти, так что гранулярность выделения адресов составляет 1 Мбайт;
• Prefetchable Memory Base иPrefetchable Memory Limit – регистры, задающие начальный и конечный адрес «настоящей» (допускающей предвыборку) памяти устройств, расположенных за мостом. Эти регистры задают только старшие 12 бит 32-битного адреса памяти, так что гранулярность выделения адресов составляет 1 Мбайт;
• Prefetchable Base Upper 32 Bits и Prefetchable Limit Upper 32 Bits – регистры старшей части адреса «настоящей» памяти, если используется 64-битная адресация (на это указывают установленные биты 0 регистров Prefetchable Memory Base и Prefetchable Memory Limit).
Регистр Secondary Status аналогичен обычному регистру состояния (Status), но его признаки относятся ко вторичной шине. Единственное отличие – бит 14 (Received System Error) в Secondary Status несет признак обнаружения сигнала SERR# на вторичном интерфейсе, а не его введения данным устройством.
Регистр Expansion ROM Base Address, как и для обычного устройства, задает положение ПЗУ расширения BIOS (если это ПЗУ присутствует в мосте).
Регистры Interrupt Line и Interrupt Pin относятся к прерываниям, вырабатываемым мостом (если таковые имеются). К линиям прерывания, транслируемым мостом, эти регистры отношения не имеют.
Регистр Bridge Control служит для управления работой моста и индикации невостребованных завершений отложенных транзакций:
• бит 0 – Parity Error Response Enable, разрешение мосту сигнализировать на вторичный интерфейс об обнаружении ошибки четности адреса и данных;
• бит 1 – SERR# Enable, разрешение трансляции сигнала SERR# со вторичного интерфейса на первичный (для трансляции должен быть установлен и одноименный бит в регистре команд);
• бит 2 – ISA Enable, разрешение поддержки адресации ввода-вывода для шины ISA (вычеркивания последних 768 байт из каждого килобайта диапазона адресов, заданного регистрами I/O Base и I/O Limit);
• бит 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, признак первого моста в шасси расширения. Указывает и на наличие шасси и, следовательно, использование регистра номера шасси. Если в шасси имеется несколько мостов, то первым является либо мост с минимальным номером первичной шины (остальные будут для него подчиненными), либо с минимальным номером устройства (остальные будут того же ранга, но их вторичные шины будут иметь большие номера);