PCI
PCI (англ. Peripheral component interconnect, дословно — взаимосвязь периферийных компонентов) — шина ввода-вывода для подключения периферийных устройств к материнской плате компьютера.
Стандарт на шину PCI определяет:
- физические параметры (например, разъёмы и разводку сигнальных линий);
- электрические параметры (например, напряжения);
- логическую модель (например, типы циклов шины, адресацию на шине).
Развитием стандарта PCI занимается организация PCI Special Interest Group.
Интерфейс широко применялся в бытовых компьютерах в период 1995-2005 год[1][2].
История создания
Весной 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 перестала удовлетворять новым, повышенным требованиям к видеокартам и перестала использоваться для установки видеокарт.
В конце 2000-х[2] - начале 2010-х интерфейс PCI постепенно вытеснился интерфейсами PCI Express и USB. На бытовых материнских платах уменьшалось количество разъемов PCI[3], их устанавливается не более 1-2, вместо 3-4 или более, применявшихся в начале 2000-х[4]. На некоторых материнских платах (особенно, компактных форм-факторов mATX и т.п.) PCI-разъём не устанавливается вовсе[3][4].
Архитектура
Первоначально 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 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 Мбайт/с.
Форм-фактор PCI 2.2, предназначен для использования, в основном, в ноутбуках.
Cardbus
PCMCIA — форм-фактор для 32-битных карт, 33 МГц PCI.
Используются модули размера Eurocard, включаемые в PCI backplane.
PC/104-Plus
Индустриальная шина, использующая набор сигналов PCI, но с другим разъёмом.
Индустриальная шина, использующая набор сигналов PCI.
PCI Mezzanine Card, мезонинная шина, соответствующая стандарту IEEE P1386.1.
AdvancedTCA (ATCA)
Шина следующего поколения для телекоммуникационной индустрии.
Другие варианты
- 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.
Примечания
- ↑ 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". ISBN 9783319047898.
- ↑ 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.
- ↑ 1 2 Scott Mueller, Upgrading and Repairing PCs, page 247 "Local Buses (VESA, PCI, PCI Express, AGP)" - QUE, 2014 ISBN 9780133105360
- ↑ 1 2 Definition of:PCI (англ.). PCMag Encyclopedia. The Computer Language Company. — «There are generally three or four slots on the motherboard». Дата обращения: 22 июля 2015.
Ссылки
- PCI Special Interest Group (англ.)
- Шина PCI (Peripheral Component Interconnect bus) // IXBT
- Современные внутренние шины – смена приоритетов! // CitForum, 2007
- Распайка шины PCI
- Распайка // Pinouts
- Версии шины PCI // NIX.ru
В статье есть список источников, но не хватает сносок. |