PCI Express

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Логотип PCI Express
Слоти PCI Express x4, x16, x1, знов x16, внизу стандартний 32-розрядний слот PCI, на материнській платі DFI LanParty nForce4 SLI-DR

PCI Express або PCIe або PCI-E, (також відома як 3GIO for 3rd Generation I/O; не плутати з PCI-X або PXI) — комп'ютерна шина, що використовує програмну модель шини PCI і високопродуктивний фізичний протокол, заснований на послідовній передачі даних.

Історія розробки[ред.ред. код]

Розвитком стандарту PCI Express займається організація PCI Special Interest Group (PCI-SIG).

На відміну від шини PCI, що використала для передачі даних загальну шину, PCI Express, в загальному випадку, є пакетною мережею з топологією типу зірка, пристрої PCI Express взаємодіють між собою через середовище, утворене комутаторами, при цьому кожен пристрій безпосередньо зв'язаний з'єднанням типу точка-точка з комутатором.

Крім того, шиною PCI Express підтримується:

  • гаряча заміна карт;
  • гарантована смуга пропускання (QoS);
  • управління енергоспоживанням;
  • контроль цілісності передаваних даних.

Розробка стандарту PCI Express була почата фірмою Intel після відмови від шини InfiniBand. Офіційно перша базова специфікація PCI Express з'явилася в липні 2002 року.

Шина PCI Express націлена на використання тільки як локальна шина. Оскільки програмна модель PCI Express багато в чому успадкована від PCI, то існуючі системи і контроллери можуть бути допрацьовані для використання шини PCI Express заміною тільки фізичного рівня, без доопрацювання програмного забезпечення. Висока пікова продуктивність шини PCI Express дозволяє використовувати її замість шин AGP і тим більше PCI і PCI-X, очікується, що PCI Express замінить ці шини в персональних комп'ютерах.

Опис протоколу[ред.ред. код]

Відеокарта для PCI Express

Для підключення пристрою PCI Express використовується двонаправлене послідовне з'єднання типу точка-точка, зване lane; це різко відрізняється від PCI, в якій всі пристрої підключаються до загальної 32-розрядної паралельної однонаправленої шини.

З'єднання між двома пристроями PCI Express називається link, і складається з одного (званого 1x) або декількох (2x, 4x, 8x, 12x, 16x і 32x) двонаправлених послідовних з'єднань lane. Кожен пристрій повинен підтримувати з'єднання 1x.

На електричному рівні кожне з'єднання використовує низьковольтну диференціальну передачу сигналу (LVDS), прийом і передача інформації проводиться кожним пристроєм PCI Express по окремих двох провідниках, таким чином, в простому випадку, пристрій підключається до комутатора PCI Express всього лише чотирма провідниками.

Використання подібного підходу має наступні переваги:

  • карта PCI Express поміщається і коректно працює в будь-якому слоті тої або ж більшої пропускній спроможності (наприклад, карта x1 працюватиме в слотах x4 і x16);
  • слот більшого фізичного розміру може використовувати не всі lane (наприклад, до слота 16x можна підвести лінії передачі інформації, відповідні 1x або 8x, і все це нормально функціонуватиме; проте, при цьому необхідно підключити всі лінії «живлення» і «земля», необхідні для слота 16x).

В обох випадках, на шині PCI Express використовуватиме максимальну кількість lane'ів доступних як для карти, так і для слота. Проте це не дозволяє пристрою працювати в слоті, призначеному для карт з меншою пропускною спроможністю шини PCI Express (наприклад, карта x4 фізично не поміститься в слот x1, не зважаючи на те, що вона могла б працювати в слоті x1 з використанням тільки одного lane).

PCI Express пересилає всю управляючу інформацію, включаючи переривання, через ті ж лінії, що використовуються для передачі даних. Послідовний протокол ніколи не може бути заблокований, таким чином затримки шини PCI Express цілком порівнянні з такими для шини PCI (відмітимо, що шина PCI для передачі сигналу про запит на переривання використовує окремі фізичні лінії IRQ#A, IRQ#B, IRQ#C, IRQ#D).

У всіх високошвидкісних послідовних протоколах (наприклад, Gigabit Ethernet), інформація про синхронізацію повинна бути вбудована в передаваний сигнал. На фізичному рівні, PCI Express використовує загально прийнятий метод кодування 8B/10B (8 бітів даних замінюються на 10 бітів, передаваних по каналу, таким чином 20 % передаваного по каналу трафіку є надмірними), що дозволяє підняти перешкодозахист.

Деякі протоколи (наприклад, SONET/SDH) використовують інший метод перешкодозахисного кодування, який називається скремблінг (англ. scrambling) для вбудовування інформації про синхронізацію в потік даних. Специфікація PCI Express також передбачає алгоритм скремблінгу, але скремблінг PCI Express відрізняється від такого у SONET.

Пропускна здатність[ред.ред. код]

Пропускна здатність з'єднання lane становить 2,5 Гбіт/с. Для розрахунку пропускної спроможності з'єднання шини (link) необхідно врахувати те, що в кожному з'єднанні передача дуплексна, а також врахувати застосування кодування 8B/10B (8 бітів в 10). Наприклад, дуплексна пропускна спроможність з'єднання 1x (P1x) складає:

P_{1x} = {2,5 \cdot 2 \cdot 0,8 \over 8} = 0,5 ГБ/сек

де

  • 2,5 — пропускна спроможність одного lane, Гбіт/с;
  • 2 — врахування того, що з'єднання 1x складається з двох lane;
  • 0,8 — коефіцієнт, що враховує використання коду 8B/10B;
  • 8 — коефіцієнт перерахунку Гбіт/с в ГБ/с.

Пропускна спроможність, з урахуванням двонаправленої передачі, для шин PCI Express з різною кількістю зв'язків вказана в таблиці:

Використано зв'язків 1x 2x 4x 8x 12x 16x 32x
Пропускна здатність PCI Express 1.0, ГБ/c 0,5 1 2 4 6 8 16
Пропускна здатність PCI Express 2.0, ГБ/c 1 2 4 8 12 16 32
Пропускна здатність PCI Express 3.0, ГБ/c 2 4 8 16 32 64 128
PCIe 4.0 (предварительно) [1] 4 8 16 32 64 128 256

PCI Express 2.0[ред.ред. код]

Група PCI-SIG випустила специфікацію PCI Express 2.0 15 січня 2007 року.

Основні нововведення в PCI Express 2.0:

  • Збільшена пропускна здатність — специфікація PCI Express 2.0 визначає максимальну пропускну здатність одного з'єднання lane як 5 Гбіт/с, при цьому збережена сумісність з PCI Express 1.1 таким чином, що плата розширення, що підтримує стандарт PCIE 1.1 може працювати, будучи встановленою в слот PCIe 2.0. Внесені вдосконалення в протокол передачі між пристроями і програмну модель.
  • Динамічне управління швидкістю — для управління швидкістю роботи зв'язку.
  • Сповіщення про пропускну здатність — для сповіщення ПЗ (операційної системи, драйверів пристроїв тощо) про зміни швидкості і ширину шини.
  • Розширення структури можливостей — розширення управляючих регістрів для кращого управління пристроями, слотами і інтерконектом.
  • Служби управління доступом — опціональні можливості управління транзакціями точка-точка.
  • Управління таймаутом виконання
  • Скидання на рівні функцій — опціональний механізм для скидання функцій (маються на увазі PCI funcs) усередині пристрою (PCI device).
  • Перевизначення межі по потужності — для перевизначення ліміту потужності слота при приєднанні пристроїв, споживаючих більшу потужність.

Зовнішня кабельна специфікація PCIe[ред.ред. код]

7 лютого 2007 року PCI-SIG випустила специфікацію зовнішньої кабельної системи PCIe. Нова специфікація дозволяє використовувати кабелі завдовжки до 10 метрів, що працюють з пропускною спроможністю 2,5 Гбіт/с.

PCI Express 3.0[ред.ред. код]

Йде робота над PCI-Express 3.0. Він матиме пропускну здатність в 8 Гбіт/с.

Плани на PCI-Express 3.0: затвердження в 2009 році, перші продукти на основі нового інтерфейсу — в 2010 році.

Форм-фактори[ред.ред. код]

  • Низькопрофільні карти
  • Mini Card — заміна форм-фактора Mini PCI. На роз'єм Mini Card виведені шини: x1 PCIe, USB 2.0 і SMBus.
  • ExpressCard — подібний до форм-фактора PCMCIA. На роз'єм Mini Card виведені шини x1 PCIe і USB 2.0, карти ExpressCard підтримують гаряче підключення.
  • AdvancedTCA — форм-фактор для телекомунікаційного устаткування.
  • Кабельні специфікації PCI Express дозволяють доводити довжину одного з'єднання до десятків, а то і сотень метрів, що робить можливим створення «розібраних» ЕОМ.
  • Mobile PCI Express Module — промисловий форм-фактор, створений для ноутбуків фірмою NVIDIA.

Конкуруючі протоколи[ред.ред. код]

Окрім PCI Express існує ще ряд високошвидкісних стандартизованих послідовних інтерфейсів, ось тільки деякі з них: HyperTransport, InfiniBand, RapidIO, StarFabric. Кожен інтерфейс має своїх прихильників серед промислових компаній, оскільки на розробку специфікацій протоколів вже пішли значні суми, і кожен консорціум прагне підкреслити переваги саме свого інтерфейсу над іншими.

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

Наприклад, додаткова службова маршрутна інформація в пакеті дозволяє організувати складну і гнучку маршрутизацію пакету, але збільшує накладні витрати на обробку пакету, також знижується пропускна спроможність інтерфейсу, ускладнюється програмне забезпечення, яке ініціалізує і настроює пристрої, підключені до інтерфейсу. При необхідності забезпечення гарячого підключення пристроїв необхідне спеціальне програмне забезпечення, яке б відстежувало зміну в топології мережі. Прикладами інтерфейсів, які пристосовані для цього є RapidIO, InfiniBand і StarFabric.

Водночас, укоротивши пакети можна зменшити затримку при передачі даних, що є важливою вимогою до інтерфейсу пам'яті. Але невеликий розмір пакетів приводить до того, що частка службових полів пакету збільшується, що знижує ефективну пропускну спроможність інтерфейсу. Прикладом інтерфейсу такого типу є HyperTransport.

Положення PCI Express — між описаними підходами, оскільки шина PCI Express призначена для роботи як локальна шина, ніж шини процесор-пам'ять або у складній маршрутизованій мережі. Крім того, PCI Express відпочатку замислювалася як шина, логічно сумісна з шиною PCI, що також внесло свої обмеження.

Посилання[ред.ред. код]

  1. Maximum PC | PCIe 4.0 to Double the Speed of PCIe 3.0