PCI (PCI)

Перейти к навигации Перейти к поиску
PCI
История
Разработчик Intel
Разработано 1992
Вытеснил ISA и Micro Channel Architecture
Вытеснено PCI Express
Логотип Викисклада Медиафайлы на Викискладе
Белые разъёмы на материнской плате — 32-разрядные PCI, выше виден более быстрый разъём AGP
Разъём 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.

Интерфейс широко применялся в бытовых компьютерах в период 1995—2005 годов[1][2]. Затем он был вытеснен более новым стандартом PCI Express, частично совместимым с PCI по программной модели, и различными вариантами шины USB для других применений.

История создания

[править | править код]

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

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

В середине 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 перестала удовлетворять новым требованиям к пропускной способности видеокарт и не использовалась для их установки.

В конце 2000-х[2] — начале 2010-х интерфейс PCI постепенно вытеснился интерфейсами PCI Express и USB. На бытовых материнских платах уменьшалось количество разъемов PCI[3], их устанавливается не более 1-2, вместо применявшихся в начале 2000-х 3-4 или более[4]. Начиная с чипсетов 6 и 7 серии, корпорация Intel отказалась от встроенной поддержки шины PCI, поэтому для работы устаревших плат расширения производители материнских плат использовали контроллеры моста PCI Express — PCI/PCI-X (например, ASM1083[5] от ASMedia[англ.] и IT8892E[6] от ITE Tech[англ.]). На большинстве современных[когда?] материнских плат (особенно компактных форм-факторов mATX и т. п.) PCI-разъём не устанавливается вовсе[3].

Архитектура

[править | править код]

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

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

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

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

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

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

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

  • 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-слотов

Первая спецификация, утвержденная в июне 1992 года. Единственный выпущенный чипсет с поддержкой этой версии шины PCI — Intel 420TX (Saturn). Материнские платы для процессоров 486 на основе этого чипсета выпускались с конца 1992 года по 1994 год и не получили широкого распространения. Поддерживает работу с периферийными картами PCI версий 1.0 и 2.0 (карты версии PCI 2.1, появившиеся в 1996 году, уже не поддерживаются). Арбитраж централизованный.

Первая версия базового стандарта, получившая широкое распространение, использовались как карты, так и слоты с сигнальным напряжением только 5 В. Пиковая пропускная способность — 133 Мбайт/с. Материнские платы основанные на чипсетах с поддержкой PCI 2.0 поддерживают работу с периферийными картами PCI версий 2.0 и 2.1 (карты версии PCI 2.2, появившиеся в 1998 году, уже не поддерживаются). Первый чипсет, поддерживающий эту спецификацию, — Intel 430LX (Mercury), появившийся в 1993 году и предназначенный для материнских плат с разъемом Socket 4 для установки первых процессоров Pentium с тактовой частотой 60 МГц и 66 МГц. Арбитраж централизованный.

Отличались от версии 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 В, карты с напряжением 5 В больше не поддерживаются.

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

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

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

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

Развитие версии 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 Мбайт/с. Арбитраж децентрализованный.

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

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

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

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

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

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

Шина следующего поколения для телекоммуникационной индустрии на основе интерфейса PCI Express[7][8].

Другие варианты

[править | править код]
Слоты PCI-Express (сверху, желтые) и PCI (снизу, белые) на материнской плате, для сравнения. Данные шины различаются шагом контактов, размером и расположением ключа — выступа внутри разъема, предотвращающего от установки несовместимых устройств

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

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

Примечания

[править | править код]
  1. John Williams (2014). Digital VLSI Design with Verilog: A Textbook from Silicon Valley Technical Institute. Springer. p. 96 «5.1.3 Introduction to SerDes and PCI Express» Архивная копия от 22 июля 2015 на Wayback Machine. ISBN 9783319047898.
  2. 1 2 John Williams. Digital VLSI Design with Verilog: A Textbook from Silicon Valley Technical Institute (англ.). — Springer[англ.], 2008. — P. 67. — ISBN 978-1-4020-8446-1.
  3. 1 2 Scott Mueller, Upgrading and Repairing PCs, page 247 Архивная копия от 22 июля 2015 на Wayback Machine «Local Buses (VESA, PCI, PCI Express, AGP)» — QUE, 2014 ISBN 9780133105360
  4. Definition of:PCI (англ.). PCMag Encyclopedia. The Computer Language Company. — «There are generally three or four slots on the motherboard». Дата обращения: 22 июля 2015. Архивировано 22 июля 2015 года.
  5. ASM1083 (англ.). ASMedia Technology, Inc.. Дата обращения: 25 апреля 2023. Архивировано 25 апреля 2023 года.
  6. IT8892E: PCIe to PCI Bridge (англ.). ITE Tech., Inc.. Дата обращения: 25 апреля 2023. Архивировано 25 апреля 2023 года.
  7. Слюсар В. И. Новые стандарты промышленных компьютерных систем. //Электроника: наука, технология, бизнес. — 2005. — № 6. — С. 52 — 53. [1]Архивная копия от 4 марта 2016 на Wayback Machine
  8. 1 2 Слюсар В. И. PCI Express. Лицо стандарта.// Мир автоматизации. — 2006. — № 1. — C. 38 — 41. [2] Архивная копия от 27 августа 2018 на Wayback Machine

Литература

[править | править код]
  • 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.