Шины PCI, USB и FireWire
Шрифт:
Регистры Base Address Registers (BAR) описывают области памяти и портов ввода-вывода. Программными манипуляциями с регистрами можно определить размеры областей. Для областей памяти и портов описания различаются: область памяти (размером не более 2 Гбайт) описывается следующим образом: • бит 0 = 0 – признак памяти; • биты [2:1] – тип адресации: 00 – 32-битная адресация, 10 – 64-битная (в этом случае регистр расширяется следующим за ним 4-байтным словом, 64-битная адресация обязательна для PCI–X), 01 и 11 – резерв (01 в прежних версиях предназначались для памяти в пределах первого мегабайта); • бит 3 (Prefetchable) –
Регистр Expansion ROM Base Address управляет адресацией ПЗУ программной поддержки устройства. Размер ПЗУ определяется так же, как и в регистрах базовых адресов (см. выше). Обращение к ПЗУ возможно лишь при разрешенном использовании памяти (бит 1 в регистре команд). Назначение бит регистра:
• бит 0 – разрешение использования ПЗУ;
• биты [1:10] – резерв;
• биты [11:31] – базовый адрес. •
Специальные регистры устройств
PCI–X Устройства PCI–X имеют дополнительные регистры (рис. 5.2), положение которых определяется через список свойств (Capability ID = 07). Регистры для ECC-контроля появились только в версии PCI–X 2.0.
Регистр 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, поддержка режима 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 имеет следующую структуру: