Шины PCI, USB и FireWire
Шрифт:
• бит 30 (RO) – PCI–X 266 Capable, поддержка режима PCI–X 266 (Mode 2);
• бит 31 (RO) – PCI–X 533 Capable, поддержка режима PCI–X 533 (Mode 2).
Регистры ECC-контроля служат для управления контролем и диагностики. Регистр ECC Control and Status Register служит для управления ECC-контро-лем: разрешает ECC в Mode 1 (в Mode 2 ECC обязателен) и разрешает исправление однократных ошибок. В этом же регистре сообщаются признаки обнаружения ошибки, команды и фазы шины, в которой обнаружена ошибка, а также значения синдрома ошибки и атрибутов транзакции. Регистры ECC First Address, ECC Second Address и ECC Attribute Register содержат адрес, при обращении по которому обнаружена ошибка ECC,
Расширенное конфигурационное пространство PCI–X
В спецификации PCI–X 2.0 введено расширение конфигурационного пространства одной функции до 4096 байт. При этом стандартный 256-байтный набор регистров и формат заголовка сохраняется, а дополнительное пространство используется для нужд устройства, включая и размещение описаний дополнительных возможностей. Для доступа к расширенному конфигурационному пространству может использоваться как расширенный вариант механизма 1 (см. далее) с передачей дополнительных 4 бит номера регистра по линиям AD[27:24], так и отображение конфигурационных регистров на адрес памяти. В случае отображения на адрес памяти иерархический адрес конфигурационных регистров всех устройств PCI отображается на биты A[27:0], базовый адрес (A[63:28]) зависит от реализации системы и сообщается операционной системе. Все конфигурационные регистры всех устройств всех шин PCI требуют для отображения в памяти область размером 256 Мбайт. Схема отображения простая и логичная:
• A[27:20] – Bus[7:0], номер шины;
• A[19:15] – Device[4:0], номер устройства;
• A[14:12] – Function[2:0], номер функции;
• A[11:8] – Extended Register [3:0], расширение номера регистра;
• A[7:0] – Register[7:0], номер регистра.
Устройство должно воспринимать и отрабатывать конфигурационные обращения, выполненные любым способом. При этом разработчик устройства должен помнить, что при попадании устройства в систему с обычной шиной PCI программно доступными окажутся лишь первые 256 байт конфигурационного пространства функции, так что в расширенное пространство следует помещать только те регистры, которые не используются в стандартном режиме работы PCI.
Для расширенного пространства введен и новый формат описания свойств с учетом «длинного» (10-битного) адреса регистра. Расширенный список свойств должен начинаться с адреса 100h (или же там должна быть структура, не позволяющая трактовать этот фрагмент как начало цепочки). Каждое свойство начинается с 32-битного идентификатора, за которым располагаются регистры, описывающие данное свойство. 32-разрядный идентификатор расширенных возможностей – PCI Extended Capability ID имеет следующую структуру:
• биты [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) управляет возможностью трансляции транзакций с вторичной шины на первичную. Если этот бит обнулен, то мост не должен на вторичной стороне отзываться как целевое устройство в транзакциях записи/чтения памяти и ввода-вывода, поскольку он не сможет транслировать эти транзакции на первичную шину. Регистры BAR описывают только область специфических (зависящих от реализации) регистров моста, к маршрутизации эти регистры отношения не имеют.
Маршрутизирующие
свойства моста определяются следующими регистрами (подробности см. в главе 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# на первичном);