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.


1. Історія створення

Навесні 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 рік) встановлюється лише один, рідко два PCI-роз'єми, замість 5-6, устанавливавшихся раніше. На деякі сучасні материнські плати (в основному High-End-класу або форм-фактора mATX) PCI-роз'єм не встановлюється зовсім.


2. Основні відомості

Спочатку 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 #. Провідники переривань працюють незалежно від решти всієї шини, можливе розділення одного провідника багатьма пристроями.


3. Конфігурування

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

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

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

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


4. Специфікація

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

5. Стандартні модифікації

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

5.1. PCI 2.0

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

5.2. 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 вольт більше не підтримуються.

5.3. PCI 64

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

  • Версія 1 - використовує слот PCI 64-біта і напруга 5 вольт.
  • Версія 2 - використовує слот PCI 64-біта і напруга 3,3 вольта.

5.4. PCI 66

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

5.5. PCI 64/66

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


5.6. 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 Мбайт / с.


5.7. Mini PCI

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

5.8. Cardbus

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

5.9. CompactPCI

Використовуються модулі розміру Eurocard, що включаються в PCI backplane.

5.10. PC/104-Plus

Індустріальна шина, що використовує набір сигналів PCI, але з іншим роз'ємом.

5.11. PMC

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

5.12. AdvancedTCA (ATCA)

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

6. Інші варіанти

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