PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Купить дорожную технику и запчасти в Москве. Купить кирпич Ликолор в Иркутске.

PCI и PCI-X

Конфигурирование и BIOS устройств PCI и PCI-X

Общая информация

В шину PCI изначально заложены возможности автоматического конфигурирования системных ресурсов (пространств памяти и ввода-вывода и линий запроса прерываний). Автоматическое конфигурирование устройств (выбор адресов и прерываний) поддерживается средствами BIOS и ОС; оно ориентировано на технологию PnP. Стандарт PCI определяет для каждой функции конфигурационное пространство размером до 256 регистров (8-битных), не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным командам шины Configuration Read и Configuration Write, вырабатываемым с помощью одного из аппаратно-программных механизмов, описанных далее. В этом пространстве есть области, обязательные для всех устройств, и специфические. Конкретное устройство может иметь регистры не во всех адресах, но должно поддерживать нормальное завершение для адресуемых к ним операций. При этом чтение несуществующих регистров должно возвращать нули, а запись выполняться как холостая операция.

Конфигурационное пространство функции начинается со стандартного заголовка, в котором содержатся идентификаторы производителя, устройства и его класса, а также описание требуемых и занимаемых системных ресурсов. Структура заголовка стандартизована для обычных устройств (тип 0), мостов PCI-PCI (тип 1), мостов PCI-CardBus (тип 2). Тип заголовка определяет расположение общеизвестных регистров и назначение их бит. После заголовка могут располагаться регистры, специфичные для устройства. Для стандартизованных свойств (capability) устройств (например, управления энергопотреблением) в конфигурационном пространстве имеются блоки регистров известного назначения. Эти блоки организуются в цепочки, на первый такой блок есть ссылка в стандартном заголовке (CAP_PTR); в первом же регистре блока есть ссылка на следующий блок (или 0, если данный блок — последний). Таким образом, просмотрев цепочку, конфигурационное ПО получает список всех доступных свойств устройства и их позиций в конфигурационном пространстве функции. В PCI 2.3 определены следующие идентификаторы CAP_ID, часть из которых мы рассмотрим: 

  • 01 — управление энергопотреблением;
  • 02 — порт AGP;
  • 03 — VPD (Vital Product Data), данные, дающие исчерпывающее описание аппаратных (возможно, и программных) свойств устройств;
  • 04 — нумерация слотов и шасси;
  • 05 — прерывания MSI;
  • 06 — Hot Swap, горячее подключение для Compact PCI;
  • 07 — протокольные расширения PCI-X;
  • 08 — зарезервировано для AMD;
  • 09 — на усмотрение производителя (Vendor Specific);
  • 0Ah — отладочный порт (Debug Port);
  • 0Bh — PCI Hot Plug, стандартное обеспечение «горячего подключения».

В PCI-X для устройств Mode 2 конфигурационное пространство расширено до 4096 байт; в расширенном пространстве могут присутствовать расширенные описания свойств.

После аппаратного сброса (или при включении питания) устройства PCI не отвечают на обращения к пространству памяти и ввода-вывода, они доступны только для операций конфигурационного считывания и записи. В этих операциях устройства выбираются по индивидуальным сигналам IDSEL, чтением регистров конфигурационное ПО узнает о потребностях в ресурсах и возможных вариантах конфигурирования устройств. После распределения ресурсов, выполняемого программой конфигурирования (во время теста POST или при загрузке ОС), в конфигурационные регистры устройства записываются параметры конфигурирования (базовые адреса). Только после этого устройствам (точнее, функциям) устанавливаются биты, разрешающие им отвечать на команды обращения к памяти и портам ввода-вывода, а также самим управлять шиной. Для того чтобы всегда можно было найти работоспособную конфигурацию, все ресурсы, занимаемые картами, должны быть перемещаемыми в своих пространствах. Для многофункциональных устройств каждая функция должна иметь собственное конфигурационное пространство. Устройство может одни и те же регистры отображать и на память, и на пространство ввода-вывода. При этом в их конфигурационных регистрах должны присутствовать оба описателя, но драйвер должен использовать только один способ обращения (предпочтительно через память).

В заголовке конфигурационного пространства описываются потребности в адресах трех типов:

  • регистры в пространстве ввода-вывода (I/O Space));
  • регистры ввода-вывода, отображенные на память (Memory Mapped I/O). Это область памяти, обращения к которой должны производиться в строгом соответствии с тем, что запрашивает инициатор обмена. Обращение к этим регистрам может изменять внутреннее состояние периферийных устройств;
  • память, допускающая предвыборку (Prefetchable Memory). Это область памяти, «лишнее» чтение которой (с неиспользуемыми результатами) не приводит к побочным эффектам, все байты считываются независимо от сигналов BE[3:0]#, и записи отдельных байтов мостом могут быть объединены (то есть это память в чистом виде).

Потребности в адресах указываются в регистрах базовых адресов — BAR (Base Address Register). Конфигурирующая программа может определить и размеры требуемых областей. Для этого после аппаратного сброса она должна считать и сохранить значения базовых адресов (это будут адреса по умолчанию), записать в каждый регистр FFFFFFFFh и снова считать их значение. В полученных словах нужно обнулить биты декодирования типа (биты [3:0] для памяти и биты [1:0] для вводавывода), инвертировать и инкрементировать полученное 32-битное слово — результатом будет длина области (для портов биты [31:16] игнорировать). Метод подразумевает, что длина области выражается числом 2n и область выровнена естественным образом. Стандартный заголовок вмещает до 6 регистров базового адреса, но при использовании 64-битной адресации число описываемых блоков сокращается. Неиспользуемые регистры BAR при чтении всегда должны возвращать нули.

В PCI имеется поддержка старых (legacy) устройств (VGA, IDE), которые сами себя таковыми объявляют по коду класса в заголовке. Их традиционные (фиксированные) адреса портов не заявляются в конфигурационном пространстве, но как только устанавливается бит разрешения обращения к портам, устройствам разрешается ответ и по этим адресам.



Конфигурационное пространство обычных устройств (тип 0)

Формат заголовка конфигурационного пространства приведен на рисунке ниже, серым цветом здесь выделены поля, обязательные для всех устройств; регистры, специфичные для устройства, могут занимать адреса конфигурационного пространства в пределах 40–FFh.

Перечисленные ниже поля идентификации допускают только чтение: 

  • Device ID — идентификатор устройства, назначаемый производителем;
  • Vendor ID — идентификатор производителя микросхемы PCI, назначенный PCI SIG. Идентификатор FFFFh является недопустимым; это значение должно возвращаться при чтении конфигурационного пространства несуществующего устройства;
  • Revision ID — версия продукта, назначенная производителем. Используется как расширение поля Device ID;
  • Header Type — тип заголовка (биты [6:0]), определяющий формат ячеек в диапазоне 10–3Fh и несущий признак многофункционального устройства (если бит 7 установлен). На рисунке приведен формат заголовка типа 0, относящийся именно к устройствам PCI. Тип 01 относится к мостам PCI-PCI; тип 02 относится к мостам для CardBus;
  • Class Code — код класса, определяющий основную функцию устройства, а иногда и его программный интерфейс (см. далее). Старший байт (адрес 0Bh) определяет базовый класс, средний — подкласс, младший — программный интерфейс (если он стандартизован).

Остальные поля заголовка являются регистрами устройств, допускающими как запись, так и чтение.

Регистр команд Command (RW) служит для управления поведением устройства на шине PCI. Регистр допускает как запись, так и чтение. После аппаратного сброса все биты регистра (кроме специально оговоренных исключений) обнулены.

Назначение бит регистра команд:

  • бит 0 — IO Space — разрешение ответа на обращения к пространству вводавывода;
  • бит 1 — Memory Space — разрешение ответа на обращения к пространству памяти;
  • бит 2 — Bus Master — разрешение работы инициатором (в режиме прямого управления шиной); игнорируется в PCI-X при завершениях расщепленных транзакций;
  • бит 3 — Special Cycles — разрешение реакции на специальные циклы;
  • бит 4 — Memory Write& and Invalidate enable — разрешение использовать команды «запись с инвалидацией» при работе инициатором (если бит обнулен, то вместо этих команд должна использоваться обычная запись в память); игнорируется в PCI-X;
  • бит 5 — VGA palette snoop — разрешение слежения за записью в регистр палитр;
  • бит 6 — Parity Error Response — разрешение нормальной реакции (вырабатывать сигнал PERR#) на обнаруженную ошибку четности или ECC. Если бит обнулен, то устройство должно только фиксировать ошибку в регистре состояния и продолжать выполнение транзакции; при ECC-контроле данные об ошибке записываются в регистры ECC;
  • бит 7 — Stepping Control — возможность пошагового переключения (address/data stepping) линий (если устройство никогда этого не делает, бит регистра «запаян» в «0», если делает всегда — в «1», устройство с такой возможностью по сбросу устанавливает этот бит в «1»). В версии 2.3 и PCI-X бит освобожден (в связи с отменой степинга);
  • бит 8 — SERR# Enable — разрешение генерации сигнала ошибки SERR# (ошибка адреса сообщается, когда этот бит и бит 6 установлены);
  • бит 9 — Fast Back-to-Back Enable (необязательный, игнорируется в PCI-X) — разрешение ведущему устройству использовать быстрые смежные обращения к разным устройствам (если бит обнулен, быстрые обращения допустимы лишь для транзакций с одним агентом);
  • бит 10 Interrupt Disable —, запрет генерации сигнала прерываний по линиям INTx (по аппаратному сбросу и включению питания бит обнулен — прерывания разрешены). Бит определен начиная с PCI 2.3. Ранее был резервным;
  • биты [11:15] — резерв.

Регистр Status служит для определения состояния и свойств устройства. Биты, помеченные как RO, допускают только считывание. Другие биты регистра могут быть программно модифицированы операцией записи, с помощью которой можно только обнулять биты, но не устанавливать. При записи в позиции обнуляемых бит устанавливаются единичные значения. Назначение бит регистра состояния:

  • биты [0:2] — резерв;
  • бит 3— Interrupt Status (RO), наличие запроса прерывания. Устанавливается в единицу перед подачей сигнала по линии INTx, независимо от значения бита Interrupt Disable. С прерываниями MSI не связан. Бит определен начиная с PCI 2.3, ранее был резервным. В PCI-X 2.0 бит обязателен;
  • бит 4 — Capability List (RO, необязательный) — признак наличия указателя новых возможностей в регистре со смещением 34h;
  • бит 5 — 66 MHz Capable (RO, необязательный) — признак поддержки частоты 66 МГц;
  • бит 6 — резерв;
  • бит 7 — Fast Back-to-Back Capable (RO, необязательный) — признак поддержки быстрых смежных транзакций (fast back-to-back) с разными устройствами;
  • бит 8 — Master Data Parity Error (только для устройств с прямым управлением) — инициатор (запросчик) транзакции обнаружил неисправимую ошибку данных;
  • биты [10:9] — DEVSEL Timing — скорость выборки: 00 — быстрая, 01 — средняя, 10 — низкая (определяет самую медленную реакцию DEVSEL# на все команды, кроме Configuration Read и Configuration Write);
  • бит 11 — Signaled Target Abort — устанавливается целевым устройством, когда оно отвергает транзакцию;
  • бит 12 — Received Target Abort — устанавливается инициатором, когда он обнаруживает отвергнутую транзакцию;
  • бит 13 — Received Master Abort — устанавливается ведущим устройством, когда оно отвергает транзакцию (кроме специального цикла);
  • бит 14 — Signaled System Error — устанавливается устройством, подавшим сигнал SERR#;
  • бит 15 — Detected Parity Error — устанавливается устройством, обнаружившим ошибку данных.

Регистр Cache Line Size (RW) служит для задания размера строки кэша (0–128, допустимые значения 2n, иные трактуются как 0). По этому параметру инициатор определяет, какой командой чтения воспользоваться (обычное чтение, чтение строки или множественное чтение). Ведомое устройство использует этот параметр для поддержки пересечения границ строк при пакетных обращениях к памяти. По сбросу регистр обнуляется.

Регистр Latency Timer (RW) задает значение таймера, ограничивающего длину транзакции при снятии сигнала GNT# (см. главу 2). Значение указывается в виде числа тактов шины, часть битов может не допускать изменения (обычно младшие три бита неизменны, так что таймер программируется с дискретностью в 8 тактов).

Регистр BIST (RW) служит для управления встроенным самотестированием (BuiltIn Self Test). Назначение бит регистра:

  • бит 7 — возможность BIST;
  • бит 6 — запуск теста: запись единицы инициирует тест, по окончании устройство сбрасывает бит (тест должен быть завершен не более чем за 2 с);
  • биты [5:4] — резерв (0);
  • биты [3:0] — код завершения теста: 0 — тест прошел успешно.

Регистр Card Bus CIS Pointer (необязательный) содержит указатель на структуру описателя Card Bus для комбинированного устройства PCI + Card Bus.

Регистр Interrupt Line (RW) хранит номер входа контроллера прерывания для используемой линии запроса (0–15 — IRQ0–IRQ15, в системах с APIC может иметь и большее значение; 255 — неизвестный вход или не используется).

Регистр Interrupt Pin (RO) задает линию, используемую для запроса прерывания: 0 — не используется, 1 — INTA#, 2 — INTB#, 3 — INTC#, 4 — INTD#, 5–FFh — резерв.

Регистр Min_GNT (RO) задает минимальное время, на которое ведущему устройству должно предоставляться управление шиной из расчета на частоту 33 МГц, в интервалах по 0,25 мкс.

Регистр Max_Lat (RO) задает максимально допустимую задержку предоставления ведущему устройству доступа к шине, в интервалах по 0,25 мкс (0 — нет специальных требований).

Регистры Subsystem ID (RO, задается производителем) и Subsystem Vendor ID (RO, производитель получает в PCI SIG) хранят идентификаторы, позволяющие точно идентифицировать карты и устройства (в системе могут быть установлены несколько карт с совпадающими идентификаторами устройства и производителя Device ID и Vendor ID). В поле 2Ch ставится идентификатор производителя карты PCI (может совпадать со значением в поле 0, если фирма выпускает и микросхемы, и карты).

Регистр Capability Pointer (CAP_PTR) содержит указатель на цепочку блоков регистров свойств функции, представленных в конфигурационных регистрах. Каждый блок представляет собой набор регистров, начинающийся с границы двойного слова (в указателе биты [1:0] сброшены). Каждый блок начинается с байта идентификатора типа свойства (CAP_ID, определенный PCI SIG), за которым следует указатель на следующий блок (нулевой указатель является признаком конца списка блоков), после чего расположены байты описаний самих свойств. Через CAP_PTR, например, отыскиваются регистры управления энергопотреблением (если есть), регистры AGP, некоторые регистры хост-контроллера USB 2.0 и ряд других.

Регистры Base Address Registers (BAR) описывают области памяти и портов ввода-вывода. Программными манипуляциями с регистрами можно определить размеры областей. Для областей памяти и портов описания различаются:

  • область памяти (размером не более 2 Гбайт) описывается следующим образом:
    ---бит 0 = 0 — признак памяти;
    ---биты [2:1] — тип адресации: 00 — 32-битная адресация, 10 — 64-битная (в этом
    случае регистр расширяется следующим за ним 4-байтным словом, 64-битная адресация обязательна для PCI-X), 01 и 11 — резерв (01 в прежних версиях предназначались для памяти в пределах первого мегабайта);
    ---бит 3 (Prefetchable) — признак «настоящей» памяти, то есть допускающей предвыборку;
    ---биты [31:4] — базовый адрес памяти;
  • область портов (размером до 256 байт) описывается следующим образом:
    ---бит 0 = 1 — признак области портов;
    ---бит 1 = 0 (резерв);
    ---биты [31:2] — базовый адрес блока портов.

Регистр Expansion ROM Base Address управляет адресацией ПЗУ программной поддержки устройства. Размер ПЗУ определяется так же, как и в регистрах базовых адресов (см. выше). Обращение к ПЗУ возможно лишь при разрешенном использовании памяти (бит 1 в регистре команд). Назначение бит регистра:

  • бит 0 — разрешение использования ПЗУ;
  • биты [1:10] — резерв;
  • биты [11:31] — базовый адрес.


Специальные регистры устройств PCI-X

Устройства PCI-X имеют дополнительные регистры (см. рисунок ниже), положение которых определяется через список свойств (Capability ID = 07). Регистры для ECC-контроля появились только в версии PCI-X 2.0. 

Регистр PCI-X Command служит для управления новыми свойствами протокола PCI-X:

  • бит 0 (RW) — Uncorrectable Data Error Recovery Enable, разрешение попытки восстановления после обнаружения неисправимой ошибки. Если бит не установлен, по обнаружении ошибки четности будет формироваться сигнал SERR#;
  • бит 1 (RW) — Enable Relaxed Ordering, разрешение установки признака RO в атрибутах транзакции;
  • биты [3:2] (RW) — Maximum Memory Read Byte Count, предел для счетчика байтов в транзакциях чтения памяти: 0 — 512 байт, 1 — 1024, 2 — 2048, 3 — 4096;
  • биты [6:4] (RW) — Maximum Outstanding Split Transactions, предельное число незавершенных расщепленных транзакций: 0…7 — 1, 2, 3, 4, 8, 12, 16, 32 транзакции соответственно;
  • биты [11:7] — резерв;
  • биты [13:12] (RO) — версия возможностей PCI-X (поддержка ECC):
    ---00 — ECC не поддерживается;
    ---01 — ECC только в Mode 2;
    ---10 — ECC в Mode 1 и Mode 2.
  • биты [15:14] — резерв.

Регистр PCI-X Status содержит идентификатор функции — ее адрес в иерархии конфигурационного пространства, который устройство «подсматривает» на шине, при выполнении операции конфигурационной записи. Этот идентификатор требуется устройству для передачи его в фазе атрибутов. Кроме того, в регистре имеются признаки возможностей устройства, а также индикаторы ошибок, связанных с расщепленными транзакциями. Назначение битов регистра PCI-X Status:

  • биты [2:0] (RO) — Function Number, номер функции;
  • биты [7:3] (RO) — Device Number, номер устройства, который оно узнает по значению AD[15:11] в фазе адреса конфигурационной записи, обращенной к данному устройству, выбранному линией IDSEL (после сброса устанавливается 1F);
  • биты [15:8] (RO) — Bus Number, номер шины, который оно узнает по значению AD[7:0] в фазе атрибутов конфигурационной записи, обращенной к данному устройству (после сброса устанавливается FF);
  • бит 16 (RO) — 64-bit Device, признак 64-битной шины AD;
  • бит 17 (RO) — 133 MHz Capable, признак поддержки частоты 133 МГц (иначе 66 МГц);
  • бит 18 (RWC) — Split Completion Discarded, признак отброшенного завершения расщепленной транзакции (запросчик его отверг);
  • бит 19 (RWC) — Unexpected Split Completion, признак неожиданного получения завершения расщепленной транзакции;
  • бит 20 (RO) — Device Complexity, признак сложного устройства (моста);
  • биты [22:21] (RO) — Designed Maximum Memory Read Byte Count, максимальное число байт в последовательности, инициируемой устройством (его возможности): 0 — 512 байт, 1 — 1024, 2 — 2048, 3 — 4096;
  • биты [25:23] (RO) — Designed Maximum Outstanding Split Transactions, предельное число незавершенных расщепленных транзакций: 0…7 — 1, 2, 3, 4, 8, 12, 16, 32 транзакции;
  • биты [28:26] (RO) — Designed Maximum Cumulative Read Size, максимальный суммарный объем данных чтения памяти, ожидаемых устройством (запросы отправлены, ответы еще не получены): 0…7 — 8, 16, 32…1024 квантов ADQ;
  • бит 29 (RWC) — Received Split Completion Error Message, признак получения сообщения об ошибке завершения расщепленной транзакции;
  • бит 30 (RO) — PCI-X 266 Capable, поддержка режима PCI-X 266 (Mode 2);
  • бит 31 (RO) — PCI-X 533 Capable, поддержка режима PCIX 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 приведен на рисунке ниже. Регистры в диапазоне адресов 00–17h полностью совпадают с регистрами обычного устройства PCI и описывают поведение и состояние моста на первичной шине. Заметим, что бит 2 регистра команд (Bus Master Enable) управляет возможностью трансляции транзакций с вторичной шины на первичную. Если этот бит обнулен, то мост не должен на вторичной стороне отзываться как целевое устройство в транзакциях записи/чтения памяти и ввода-вывода, поскольку он не сможет транслировать эти транзакции на первичную шину. Регистры BAR описывают только область специфических (зависящих от реализации) регистров моста, к маршрутизации эти регистры отношения не имеют.

Маршрутизирующие свойства моста определяются следующими регистрами:

  • 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 — сообщать инициатору транзакции условием TargetAbort, а если это невозможно (в случае отправленной записи), подавать сигнал 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 (cм. рисунок ниже).

Регистр Expansion Slot характеризует положение и вторичную шину моста:

  • биты [4:0] — Expansion Slots Provided, число слотов на вторичной шине моста;
  • бит 5 — First in Chassis, признак первого моста в шасси расширения. Указывает и на наличие шасси и, следовательно, использование регистра номера шасси. Если в шасси имеется несколько мостов, то первым является либо мост с минимальным номером первичной шины (остальные будут для него подчиненными), либо с минимальным номером устройства (остальные будут того же ранга, но их вторичные шины будут иметь большие номера);
  • биты [7:6] — резерв. 

Регистр Chassis Number задает номер шасси, в котором находится данный мост (0 — шасси, на котором находится процессор, выполняющий конфигурирование).