Чтение онлайн

ЖАНРЫ

Аппаратные интерфейсы ПК. Энциклопедия

Гук Михаил Юрьевич

Шрифт:

 • биты 0–3 — резерв;

 • бит 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
(только для устройств с прямым управлением) — устанавливается, когда устройство с установленным битом 6 в регистре команд, являясь инициатором, само ввело (при чтении) или обнаружило (при записи) сигнал
PERR#
;

 • биты 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) — значение таймера задержки (см. п. 6.2.4) в тактах шины. Часть битов может не допускать изменения (обычно младшие три бита неизменны, так что таймер программируется с дискретностью в 8 тактов).

♦ 

BIST
(RW) — регистр управления встроенным самотестированием. Назначение бит регистра:

 • бит 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, 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
(задается производителем) и
Subsystem Vendor ID
(производитель получает в PCI SIG) — идентификаторы, позволяющие точно идентифицировать карты и устройства (в системе могут быть установлены несколько карт с совпадающими идентификаторами устройства и производителя
Deviсе ID
и
Vendor ID
). В поле 2Ch ставится идентификатор производителя карты PCI (может совпадать со значением в поле 0, если фирма выпускает и микросхемы, и карты).

♦ 

Capability Pointer
(
CAP_PTR
) — указатель на список возможностей (свойств), описанных в конфигурационном пространстве (биты 1:0=00). Каждый элемент списка начинается с байта идентификатора типа элемента (
CAP_ID
, определенного PCI SIG), за которым следует указатель на следующий элемент списка (нулевой указатель
является признаком конца списка), после чего расположены байты описаний самих свойств. Все элементы выравниваются по границе двойного слова.

♦ 

Base Address Registers
— базовые адреса областей памяти и портов ввода-вывода. Для областей памяти бит 0=0. Биты 2:1 — тип: 00 — располагаются в 32-битном адресном пространстве, 10 — в 64-битном (в этом случае регистр расширяется следующим за ним 4-байтным словом), 01 и 11 — резерв (01 в прежних версиях предназначались для памяти в пределах первого мегабайта). Бит 3 (
Prefetchable
) устанавливается, если чтение памяти не приводит к побочным эффектам, все байты считываются независимо от сигналов
BE[3:0]#
и отдельные записи мостом могут быть объединены (то есть это память в чистом виде); в иных случаях бит обнулен. Биты 31:4 — базовый адрес памяти. Для портов бит 0=1; бит 1=0 (резерв); биты 31:2 — базовый адрес блока портов. Конфигурирующая программа может определить размеры требуемых областей. Для этого после аппаратного сброса она должна считать и сохранить значения базовых адресов (это будут адреса по умолчанию), записать в каждый регистр FFFFFFFFh и снова считать их значение. В полученных словах нужно обнулить биты декодирования типа (биты 3:0 для памяти и биты 1:0 для ввода-вывода), инвертировать и инкрементировать полученное 32-битное слово — результатом будет длина области (для портов биты 31:16 игнорировать). Метод подразумевает, что длина области выражается числом 2n и область выровнена естественным образом.

♦ 

Expansion ROM Base Address
— базовый адрес ПЗУ программной поддержки карты. Бит 0 — разрешение использования ПЗУ; биты 1-10 — резерв; биты 11–31 — базовый адрес. Размер ПЗУ определяется так же, как и в регистрах базовых адресов (см. выше). Обращение к ПЗУ возможно лишь при разрешенном использовании памяти (бит 1 в регистре команд).

6.2.13. Классы устройств PCI

Важной частью спецификации PCI является классификация устройств и указание кода класса в его конфигурационном пространстве (3 байта Class Code). Старший байт определяет базовый класс, средний — подкласс, младший — программный интерфейс (если он стандартизован). Код класса позволяет идентифицировать наличие определенных устройств в системе, это может быть сделано с помощью PCI BIOS. Для стандартизованных устройств (например, 01:01:80 — контроллер IDE или 07:00:01 — последовательный порт 16450) «заинтересованная» программа может найти требуемое устройство и выбрать подходящий вариант драйвера. Классификатор определяет организация PCI SIG, он регулярно обновляется на сайте www.pcisig.com. Нулевые значения полей, как правило, дают самые неопределенные описания. Значение подкласса 80h относится к «иным устройствам».

6.2.14. PCI BIOS

Для облегчения взаимодействия с устройствами PCI имеются дополнительные функции BIOS, доступные как из реального, так и защищенного режима работы процессора. Эти функции, предназначенные для работы с конфигурационным пространством и генерации специальных циклов PCI, приходится поддерживать потому, что циклы конфигурационных обращений, как и специальный цикл, выполняются специфическим образом (см. выше). Остальные функции взаимодействия с устройствами через их пространства памяти и ввода-вывода, а также обработка прерываний, в поддержке со стороны BIOS не нуждаются, поскольку выполняются непосредственно командами процессора. Функция проверки наличия PCI BIOS позволяет определить доступные механизмы генерации этих особых циклов, и, зная их работу, программа в дальнейшем может и не пользоваться вызовами PCI BIOS.

Программы с помощью функций PCI BIOS могут искать интересующие их устройства по идентификаторам или кодам класса. Если стоит задача «переучета» установленных устройств, то она решается чтением конфигурационной информации по всем функциям всех устройств всех шин — это быстрее, чем перебирать все возможные сочетания идентификаторов или классов кодов. Для найденных устройств программы должны определять реальные настройки чтением регистров конфигурационного пространства, учитывая возможность перемещения ресурсов по всему пространству и даже между пространствами памяти и ввода-вывода.

Поделиться с друзьями: