PCI

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Белые разъёмы на материнской плате — 32-разрядные PCI
Разъём 64-разрядной PCI в Power Macintosh G4
Разъёмы PCI-X на материнской плате сервера FSC Primergy TX200 S2. Синий разъём заполнен специально предназначенной платой нуль-канального RAID (zero-channel RAID, ZCR)

PCI (англ. Peripheral component interconnect, дословно — взаимосвязь периферийных компонентов) — шина ввода-вывода для подключения периферийных устройств к материнской плате компьютера.

Стандарт на шину PCI определяет:

  • физические параметры (например, разъёмы и разводку сигнальных линий);
  • электрические параметры (например, напряжения);
  • логическую модель (например, типы циклов шины, адресацию на шине).

Развитием стандарта PCI занимается организация PCI Special Interest Group.

История создания[править | править вики-текст]

Весной 1991 года компания Intel завершает разработку первой макетной версии шины PCI. Перед инженерами была поставлена задача разработать недорогое и производительное решение, которое позволило бы реализовать возможности процессоров 486, Pentium и Pentium Pro. Кроме того, было необходимо учесть ошибки допущенные VESA при проектировании шины VLB (электрическая нагрузка не позволяла подключать более 3 плат расширения), а также реализовать автоконфигурирование устройств по примеру протокола Autoconfig для компьютеров Amiga.

В 1992 году появляется первая версия шины PCI, Intel объявляет, что стандарт шины будет открытым, и создаёт PCI Special Interest Group. Благодаря этому любой заинтересованный разработчик получает возможность создавать устройства для шины PCI без необходимости приобретения лицензии. Первая версия шины имела тактовую частоту 33 МГц, могла быть 32- или 64-битной, а устройства могли работать с сигналами в 5 В или 3,3 В. Теоретически, пропускная способность шины 133 Мбайт/с, однако в реальности пропускная способность составляла около 80 Мбайт/с.

В середине 1993 года компания Intel выходит из ассоциации VESA и начинает предпринимать активные шаги по продвижению шины PCI на рынке. Ответом на критику со стороны специалистов из конференций Usenet и конкурирующих компаний (характеристики шины были во многом аналогичны, например Zorro III, публиковались статьи об ошибочном дизайне шины) стала PCI 2.0.

В 1995 году появляется версия PCI 2.1 (ещё одно название — «параллельная шина PCI»), которая обеспечила передачу данных по шине с частотой 66 МГц и максимальную скорость передачи в 533 Мбайт/с (для 64-битного варианта с частотой 66 МГц). Кроме того, эта шина уже была поддержана на уровне ОС Windows 95 (технология Plug and Play). Версия шины PCI 2.1 оказалась настолько популярной, что вскоре уже она была перенесена на платформы с процессорами Alpha, MIPS, PowerPC, SPARC и др.

В 1997 году, в связи с развитием компьютерной графики и разработкой шины AGP, шина PCI перестала удовлетворять новым, повышенным требованиям к видеокартам и перестала использоваться для установки видеокарт.

В настоящее время интерфейс PCI постепенно вытесняется интерфейсами PCI Express, HyperTransport и USB. На современные материнские платы (по состоянию на 2012 год)[источник не указан 785 дней] устанавливается лишь один, редко два PCI-разъёма, вместо 5-6, устанавливавшихся ранее. На некоторые современные материнские платы (в основном High-End-класса или форм-фактора mATX) PCI-разъём не устанавливается вовсе.

Архитектура[править | править вики-текст]

Первоначально 32 проводника адрес/данные на частоте 33 МГц. Позже появились версии с 64 проводниками (используется дополнительная колодка разъема) и частотой 66 МГц.

Шина децентрализована, нет главного устройства, любое устройство может стать инициатором транзакции. Для выбора инициатора используется арбитраж с отдельно стоящей логикой арбитра. Арбитраж «скрытый», не отбирает времени — выбор нового инициатора происходит во время транзакции, исполняемой предыдущим инициатором.

Транзакция состоит из 1 или 2 циклов адреса (2 цикла адреса используются для передачи 64-битных адресов, поддерживаются не всеми устройствами, дают поддержку DMA на памяти более 4 Гб) и одного или многих циклов данных. Транзакция со многими циклами данных называется «пакетной» (burst), понимается как чтение/запись подряд идущих адресов и даёт более высокую скорость — один цикл адреса на несколько, а не на каждый цикл данных, и отсутствие простоев (на «успокоение» проводников) между транзакциями.

Специальные типы транзакций используются для обращений к конфигурационному пространству устройства.

«Пакетная» транзакция может быть временно приостановлена обоими устройствами из-за отсутствия данных в буфере или его переполнения.

Поддерживаются «расщеплённые» транзакции, когда целевое устройство отвечает состоянием «в процессе» и инициатор должен освободить шину для других устройств, захватить её снова через арбитраж и повторить транзакцию. Это делается, пока целевое устройство не ответит «сделано». Используется для сопряжения шин с разными скоростями (сама PCI и frontside процессора) и для предотвращения тупиковых ситуаций в сценарии с многими межшинными мостами.

Богатая поддержка межшинных мостов. Богатая поддержка режимов кэширования, таких как:

  • posted write — данные записи немедленно принимаются мостом, и мост сразу отвечает «сделано», уже после этого пытаясь провести операцию записи на ведомой шине.
  • write combining — несколько запросов на posted write, идущих подряд по адресам, соединяются в мосте в одну «взрывную» транзакцию на ведомой шине.
  • prefetching — используется при транзакциях чтения, означает выборку сразу большого диапазона адресов одной «взрывной» транзакцией в кеш моста, дальнейшие обращения исполняются самим мостом без операций на ведомой шине.

Прерывания поддерживаются либо как Message Signaled Interrupts (новое), либо классическим способом с использованием проводников INTA-D#. Проводники прерываний работают независимо от всей остальной шины, возможно разделение одного проводника многими устройствами.

Конфигурирование[править | править вики-текст]

PCI-устройства с точки зрения пользователя самонастраиваемы (Plug and Play). После старта компьютера системное программное обеспечение обследует конфигурационное пространство PCI каждого устройства, подключённого к шине, и распределяет ресурсы.

Каждое устройство может затребовать до шести диапазонов в адресном пространстве памяти PCI или в адресном пространстве ввода-вывода PCI.

Кроме того, устройства могут иметь ПЗУ, содержащее исполняемый код для процессоров x86 или PA-RISC, Open Firmware (системное ПО компьютеров на базе SPARC и PowerPC) или драйвер EFI.

Настройка прерываний осуществляется также системным программным обеспечением (в отличие от шины ISA, где настройка прерываний осуществлялась переключателями на карте). Запрос на прерывание на шине PCI передаётся с помощью изменения уровня сигнала на одной из линий IRQ, поэтому имеется возможность работы нескольких устройств с одной линией запроса прерывания; обычно системное ПО пытается выделить каждому устройству отдельное прерывание для увеличения производительности.

Спецификация[править | править вики-текст]

  • частота шины — 33,33 или 66,66 МГц, передача синхронная;
  • разрядность шины — 32 или 64 бита, шина мультиплексированная (адрес и данные передаются по одним и тем же линиям);
  • пиковая пропускная способность для 32-разрядного варианта, работающего на частоте 33,33 МГц — 133 Мбайт/с;
  • адресное пространство памяти — 32 бита (4 байта);
  • адресное пространство портов ввода-вывода — 32 бита (4 байта);
  • конфигурационное адресное пространство (для одной функции) 256 байт;
  • напряжение 3,3 или 5 В.

Стандартные модификации[править | править вики-текст]

Типы PCI-слотов

PCI 2.0[править | править вики-текст]

Первая версия базового стандарта, получившая широкое распространение, использовались как карты, так и слоты с сигнальным напряжением только 5 вольт. Пиковая пропускная способность — 133 Мбайт/с.

PCI 2.1 — 3.0[править | править вики-текст]

Отличались от версии 2.0 возможностью одновременной работы нескольких шинных задатчиков (англ. bus-master, т. н. конкурентный режим), а также появлением универсальных карт расширения, способных работать как в слотах, использующих напряжение 5 вольт, так и в слотах, использующих 3,3 вольта (с частотой 33 и 66 МГц соответственно). Пиковая пропускная способность для 33 МГц — 133 Мбайт/с, а для 66 МГц — 266 Мбайт/с.

  • Версия 2.1 — работа с картами, рассчитанными на напряжение 3,3 вольта, наличие соответствующих линий питания являлась опциональной.
  • Версия 2.2 — сделанные в соответствии с этими стандартами карты расширения имеют универсальный ключ разъёма по питанию и способны работать во многих более поздних разновидностях слотов шины PCI, а также, в некоторых случаях, и в слотах версии 2.1.
  • Версия 2.3 — несовместима с картами PCI, рассчитанными на использование 5 вольт, несмотря на продолжающееся использование 32-битных слотов с 5-вольтовым ключом. Карты расширения имеют универсальный разъём, но не способны работать в 5-вольтовых слотах ранних версий (до 2.1 включительно).
  • Версия 3.0 — завершает переход на карты PCI 3,3 вольт, карты PCI 5 вольт больше не поддерживаются.

PCI 64[править | править вики-текст]

Расширение базового стандарта PCI, появившееся в версии 2.1, удваивающее число линий данных, и, следовательно, пропускную способность. Слот PCI 64 является удлинённой версией обычного PCI-слота. Формально совместимость 32-битных карт с 64-битным слотами (при условии наличия общего поддерживаемого сигнального напряжения) полная, а совместимость 64-битной карты с 32-битным слотами является ограниченной (в любом случае произойдёт потеря производительности). Работает на тактовой частоте 33 МГц. Пиковая пропускная способность — 266 Мбайт/с.

  • Версия 1 — использует слот PCI 64-бита и напряжение 5 вольт.
  • Версия 2 — использует слот PCI 64-бита и напряжение 3,3 вольта.

PCI 66[править | править вики-текст]

Версия PCI 66 является работающим на тактовой частоте 66 МГц развитием PCI 64; использует напряжение 3,3 вольта в слоте; карты имеют универсальный, либо форм-фактор на 3,3 В. Пиковая пропускная способность — 533 Мбайт/с.

PCI 64/66[править | править вики-текст]

Комбинация PCI 64 и PCI 66, позволяет вчетверо увеличить скорость передачи данных по сравнению с базовым стандартом PCI; использует 64-битные 3,3-вольтовые слоты, совместимые только с универсальными и 3,3-вольтовые 32-битные карты расширения. Карты стандарта PCI64/66 имеют либо универсальный (но имеющий ограниченную совместимость с 32-битными слотами) либо 3,3-вольтовый форм-фактор (последний вариант принципиально не совместим с 32-битными 33-мегагерцовыми слотами популярных стандартов). Пиковая пропускная способность — 533 Мбайт/с.

PCI-X[править | править вики-текст]

Развитие версии PCI 64. Для всех вариантов шины существуют следующие ограничения по количеству подключаемых к каждой шине устройств: 66 МГц — 4, 100 МГц — 2, 133 МГц — 1 (или 2, если одно или оба устройства не находятся на платах расширения, а уже интегрированы на одну плату вместе с контроллером), 266, 533 МГц и выше — 1.

Версия 1.0 — введено две новые рабочие частоты: 100 и 133 МГц, а также механизм раздельных транзакций для улучшения производительности при одновременной работе нескольких устройств. Как правило, обратно совместима со всеми 3,3-вольтовыми и универсальными PCI-картами. Карты обычно выполняются в 64-битном формате на 3,3 В и имеют ограниченную обратную совместимость со слотами PCI64/66, а некоторые — в универсальном формате и способны работать (хотя практической ценности это почти не имеет) в обычном PCI 2.2/2.3. Пиковая пропускная способность — 1024 Мбайт/с.

Версия 2.0 — введено две новые рабочие частоты: 266 и 533 МГц, а также коррекция ошибок чётности при передаче данных (ECC). Расширяет конфигурационное пространство PCI до 4096 байт и допускает расщепление на 4 независимых 16-битных шины, что применяется исключительно во встраиваемых и промышленных системах, сигнальное напряжение снижено до 1,5 В, но сохранена обратная совместимость разъёмов со всеми картами, использующими сигнальное напряжение 3,3 В. Пиковая пропускная способность — 4096 Мбайт/с.

Mini PCI[править | править вики-текст]

Форм-фактор PCI 2.2, предназначен для использования, в основном, в ноутбуках.

Cardbus[править | править вики-текст]

PCMCIA форм-фактор для 32-битных карт, 33 МГц PCI.

CompactPCI[править | править вики-текст]

Используются модули размера Eurocard, включаемые в PCI backplane.

PC/104-Plus[править | править вики-текст]

Индустриальная шина, использующая набор сигналов PCI, но с другим разъёмом.

StackPC[править | править вики-текст]

Индустриальная шина, использующая набор сигналов PCI.

PMC[править | править вики-текст]

PCI Mezzanine Card, мезонинная шина, соответствующая стандарту IEEE P1386.1.

AdvancedTCA (ATCA)[править | править вики-текст]

Шина следующего поколения для телекоммуникационной индустрии.

Другие варианты[править | править вики-текст]

Слоты PCI и PCI-Express на материнской плате, для сравнения
  • PCI Express (ранее известный как 3GI0 и Arapaho) — последовательный интерфейс, использующий программную модель PCI, однако обладающий более производительным физическим уровнем (используется LVDS и новые разъёмы).

Литература[править | править вики-текст]

  • Anderson, D. and Shanley, T. and MindShare, Inc PCI System Architecture. — Addison-Wesley, 1999. — 787 p. — ISBN 9780201309744.
  • Solari, E. and Willse, G. PCI and PCI-X Hardware and Software: Architecture and Design. — Research Tech, 2004. — 1545 p. — ISBN 9780976086505.
  • Abbott, D. PCI Bus Demystified. — Elsevier Science, 2004. — 250 p. — ISBN 9780080473680.
  • Гук М. Ю. 6.2. Шина PCI // Аппаратные интерфейсы ПК. Энциклопедия. — СПб.: Питер, 2002. — 528 с. — ISBN 5-94723-180-8.

Ссылки[править | править вики-текст]