Шина PCI

 

Интерфейс PCI (Peripheral Component Interconnect) разработан корпорацией Intel в 1991 году для соединения периферийных компонентов, напрямую не связанных с системной шиной. Так удалось обеспечить независимость интерфейса от конкретного типа процессора. В настоящее время действует спецификация PCI 2.2 (утверждена в декабре 1998 г.).

Шина PCI является параллельной и синхронной — регистрация сигналов выполняется по положительному фронту тактовых импульсов. Для обмена данными используется метод мультиплексирования, то есть передача адресов и данных происходит по очереди, по одним и тем же линиям. Сочетание частот шины 33 МГц или 66 МГц с различной разрядностью данных предоставляет широкий диапазон пропускных способностей шины.
Собственно шина PCI представляет собой набор параллельных сигнальных линий, соединяющих различные устройства (слоты расширения, микросхемы на системной плате). Один канал контроллера PCI поддерживает до четырех слотов расширения. В системе обычно имеется несколько шин PCI, соединенных мостами PCI - PCI Bridge. Мосты электрически отделяют интерфейсные сигналы одной шины от другой, объединяя их на логическом уровне. Головной мост (Host Bridge) соединяет шину с ядром системы (процессором и памятью). Каждая шина имеет свой номер, головная шина имеет нулевой номер.

Спецификация PCI требует поддержки режима Multiple Bus Mastering (многостороннее управление шиной). В таком режиме устройства перехватывают управление шиной и самостоятельно распределяют ее ресурсы. Специальный таймер, имеющийся на устройстве, определяет максимальное время, в течение которого возможен монопольный доступ. Кроме того, предусмотрено автоматическое конфигурирование компонентов при включении питания.

Метод передачи данных по шине называют Linear Burst! (метод линейных пакетов). То есть данные при записи-чтении идут единым пакетом, так как адрес для каждого следующего байта автоматически увеличивается на единицу. Таким образом, отпадает необходимость отдельно передавать адресный блок.

В шине PCI принята географическая адресация — номер устройства определяется местом его подключения, то есть той линией шины, к которой подключена линия сигнала идентификации данного слота. Поэтому адреса карт расширения изменяются при перестановке их в разные слоты. В соседних слотах PCI, как правило, задействуют соседние номера устройств.

Шина PCI соединяется с системной шиной процессора через северный мост. Остальные шины расширения, ввода-вывода, а также контроллер шины LPC для устаревших устройств (BIOS, порты PS/2, СОМ и LPT, накопитель гибких магнитных дисков), подключаются к шине PCI через южный мост.

Настраиваем шину PCI


Контроллер шины PCI располагает ограниченным количеством прерываний, в диапазоне INT А ... INT D, хотя архитектурой компьютера для периферийных устройств выделено 10 линий прерываний. Поэтому чипсет должен транслировать прерывания шины PCI в типовые прерывания компьютерной системы.

Дополнительные трудности возникают при подключении устройств, не поддерживающих технологию автоматического конфигурирования Plug and Play. Ресурсы для них иногда требуется распределять вручную.

Кроме того, устройства PCI используют два несовместимых метода активизации прерывания на шине PCI: по уровню сигнала (By level), что позволяет нескольким устройствам использовать одну линию прерывания, и по фронту сигнала (By edge).
При возникновении проблем с инициализацией карт расширения на шине PCI приступаем к конфигурированию шины.

  1. Запускаем средство BIOS Setup, переходим в раздел Advanced, открываем категорию PnP/ PCI Configuration.
  2. В строке Reset Configuration Data (сброс данных конфигурации) устанавливаем значение Enabled. Закрываем средство BIOS Setup, перезагружаем компьютер. Данные ESCD (Extended System Configuration Data) содержат информацию обо всех устройствах, не поддерживающих технологию Plug and Play. Здесь также сохраняется информация о конфигурации системы с момента предыдущей загрузки. Сброс данных позволяет провести конфигурирование заново в автоматическом режиме. Если этот метод не помог решить проблему, переходим к следующему этапу.
  3. Вновь загружаем средство BIOS Setup, в разделе Advanced в категории Resources Controlled By (управление ресурсами) выставляем значение Manual. После этого активируются категории управления прерываниями IRQ Resources.
  4. Если для PCI-устройства необходимо конкретное прерывание, используемое его драйвером, то следует указать именно это прерывание. Необходимо определить, в какие стандартные прерывания (IRQ) будут транслироваться прерывания шины PCI (INT A ... INT D), помня о том, что стандартные линии прерывания не могут разделяться несколькими устройствами. Свободные прерывания назначаются для трансляции PCI-прерываний произвольным образом, если в инструкции на конкретное PCI-устройство не оговорено иное. Для этого в строках IRQ 3 assigned to … IRQ 15 assigned to (1st Avalible IRQ … 4th Avalible IRQ) выставляем значение PCI/ISA PnP INT A … INT D). Для устройств, не поддерживающих стандарт Plug and Play, нужно установить значение Legacy, а для неиспользуемых PCI- и IRQ-прерываний рекомендуется задавать опции N0 (Not Used, N/A) во избежание ложных срабатываний.
  5. Если свободных прерываний IRQ меньше, чем используемых устройств PCI, допускается присвоение одного PCI-прерывания двум устройствам.
  6. Не рекомендуется назначать трансляцию двух PCI-прерываний в одну линию прерывания IRQ. В случае крайней необходимости в строке IRQ Actived By следует одному из устройств задать значение Level вместо значения Edge , принятого по умолчанию. Однако нельзя назначать одно PCI-прерывание устройствам, использующим разные методы активизации прерывания.
  7. Некоторые версии BIOS Setup позволяют задавать устройствам PCI каналы прямого доступа к памяти (DMA). Их рекомендуется конфигурировать согласно методике, изложенной выше. Для устройств, не поддерживающих технологию Plug and Play, следует установить значение Legacy ISA, а для остальных — PCI/ISA PnP.