– А чего еще ждать от этих бездельников иностранцев?»
Агата Кристи, «Восточный Экспресс».
Итак, господа, пришло время сменить шину, в течение 10 лет бывшую общепринятым индустриальным стандартом. PCI, первая версия стандарта которой была разработана еще в 1991 году, прожила долгую и счастливую жизнь, в различных своих ипостасях являясь основой для малых и крупных серверов, промышленных компьютеров, ноутбуков и графических решений (напомним, что AGP также ведет свою родословную от PCI и является специализированным и расширенным вариантом последней). Но, прежде чем рассказывать о новинке, подобьем исторических бабок, вспомнив как происходило развитие PCI. Ибо, не однократно было замечено, что, говоря о будущих перспективах, всегда полезно найти исторические аналогии: История PCI
В 1991 году Intel предлагает базовую версию (1.0) проекта стандарта шины PCI (Peripheral Component Interconnect — Соединение Периферийных Компонент). PCI призвана заменить ISA (а позже и ее не очень удачную и дорогую серверную расширенную модификацию EISA). Кроме значительно возросшей пропускной способности, новую шину характеризует возможность динамической конфигурации выделяемых присоединенным устройствам ресурсов (прерываний).
В 1993 году PCI Special Interest Group (PCISIG, Специальная Группа Интересов PCI, http://www.pcisig.com/ — организация, взявшая на себя заботу о разработке и принятии различных стандартов имеющих отношение к PCI) публикует обновленную 2.0 ревизию стандарта ставшую основой для широкой экспансии PCI (и различных ее модификаций) в индустрии информационных технологий. В деятельности PCISIG принимают участие многие известные компании, включая родоначальника PCI — корпорацию Intel, подарившую индустрии множество долгоиграющих, исторически успешных стандартов. Итак, базовая версия PCI (IEEE P1386.1):
- Тактовая частота шины 33 МГц, используется синхронная передача данных;
- Пиковая пропускная способность 133 МБ в секунду;
- Параллельная шина данных шириною 32-бита;
- Адресное пространство 32-бита (4 ГБ);
- Сигнальный уровень 3,3 или 5 вольт.
Позже появляются следующие ключевые модификации шины:
- PCI 2.2 — допускается 64-бит ширина шины и/или тактовая частота 66 МГц, т.е. пиковая пропускная способность до 533 МБ/сек.;
- PCI-X, 64-бит версия PCI 2.2 с увеличенной до 133 МГц частотой (пиковая пропускная полоса 1066 МБ/сек.);
- PCI-X 266 (PCI-X DDR), DDR версия PCI-X (эффективная частота 266 МГц, реальная 133 МГц с передачей по обоим фронтам тактового сигнала, пиковая пропускная полоса 2.1 ГБ/сек);
- PCI-X 533 (PCI-X QDR), QDR версия PCI-X (эффективная частота 533 МГц, пиковая пропускная полоса 4,3 ГБ/сек.);
- Mini PCI — PCI с разъемом в стиле SO-DIMM, применяется преимущественно для миниатюрных сетевых, модемных и прочих карточек в ноутбуках;
- Compact PCI — стандарт на форм фактор (модули вставляются с торца в шкаф с общей шиной на задней плоскости) и разъем, предназначенные в первую очередь для промышленных компьютеров и других критических применений;
- Accelerated Graphics Port (AGP) — высокоскоростная версия PCI оптимизированная для графических ускорителей. Отсутствует арбитраж шины (т.е. допустимо только одно устройство, за исключением последней, 3.0 версии стандарта AGP, где устройств и слотов может быть два). Передачи в сторону ускорителя оптимизированы, есть набор специальных дополнительных возможностей специфических для графики. Впервые данная шина появилась вместе с первыми системными наборами для процессора Pentium II. Существует три базовых версии протокола AGP, дополнительная спецификация на питание (AGP Pro) и 4 скорости передачи данных — от 1х (266 МБ/сек) до 8х (2ГБ/сек), в том числе допустим сигнальные уровни 1,5, 1,0 и 0,8 вольт.
Упомянем также CARDBUS — 32 разрядную версию шины для PCMCIA карт, с горячим подключением и некоторыми дополнительными возможностями, тем не менее, имеющую много общего с базовой версией PCI.
Как мы видим, основное развитие шины идет по следующим направлениям:
- Создание специализированных модификаций (AGP);
- Создание специализированных форм факторов (Mini PCI, Compact PCI, CARDBUS);
- Увеличение разрядности;
- Увеличение тактовой частоты и применение DDR/QDR схем передачи данных.
Все это вполне логично, учитывая огромный срок жизни подобного всеобщего стандарта. Причем, пункты 1 и 2 не ставят своей целью сохранение совместимости с базовыми PCI картами, а вот пункты 3 и 4 выполняются за счет увеличения оригинального PCI разъема, и допускают установку обычных 32х разрядных PCI карт. Справедливости ради, отметим, что в ходе эволюции шины случались и сознательные потери совместимости со старыми картами, даже для базового варианта разъема PCI — например, в спецификации 2.3 исчезло упоминание о поддержке 5 вольт сигнального уровня и питающего напряжения. В результате, серверные платы снабженные этой модификацией шины могут пострадать при установке в них старых, пятивольтовых карт, хотя, с точки зрения геометрии разъема, эти карты к ним подходят.
Однако, как и любая другая технология (например, архитектуры процессорных ядер), шинная технология имеет свои разумные границы масштабирования, при приближении к которым увеличение пропускной полосы дается все большей и большей ценою. Возросшая тактовая частота требует более дорогостоящей разводки и накладывает существенные ограничения на длину сигнальных линий, увеличение разрядности или использование DDR решений также влечет за собою множество проблем, которые в итоге банально выливаются в рост стоимости. И если в серверном сегменте, решения подобные PCI-X 266/533 еще будут некоторое время экономически оправданными, то в потребительских PC мы их не увидели, и не увидим. Почему? Очевидно, что в идеале пропускная способность шин должна расти синхронно с ростом производительности процессора, при этом цена реализации должна не только сохраняться прежней, но и в идеале снижаться. На данный момент это возможно только при использовании новой шинной технологии. О них мы сегодня и поговорим: Эпоха последовательных шин
Итак, ни для кого не секрет что в наше время, идеальный внешний интерфейс, так или иначе, является последовательным. Прошли времена многожильных центрониксов, и толстенных (обухом не перешибешь) SCSI шлангов — фактически, наследия еще до PC-шных времен. Переход происходил медленно, но верно: сначала клавиатура и мышь, затем модем, затем, через годы и годы — сканеры и принтеры, видеокамеры, цифровые фотоаппараты. USB, IEE1394, USB 2. На данный момент, вся потребительская внешняя периферия перебралась на последовательные соединения. Не за горами и беспроводные решения. Механизм очевиден — в наше время выгоднее заложить максимум функциональности в чип (горячее подключение, последовательное кодирование, передача и прием, декодирование данных, протоколы маршрутизации и защиты от ошибок и пр. необходимые для выжимания необходимой топологической гибкости и существенной полосы пропускания из пары проводов вещи), нежели иметь дело с избыточными объемами контактов, шлангами с сотней проводов внутри, недешевыми пайкой, экранированием, разводкой и медью. В наше время последовательные шины становятся более удобны не только с точки зрения конечного потребителя, но и с точки зрения банальной выгоды — пропускная полоса умножить на расстояние делить на баксы. Разумеется, со временем эта тенденция не могла не распространиться на внутренности компьютера — мы уже во всю наблюдаем первый плод подобного подхода — Serial ATA. Более того, можно экстраполировать эту тенденцию не только на системные шины (основная тема данной статьи) но и на шину памяти (справедливо отметить, что подобный пример уже был — Rambus, но индустрия справедливо сочла его преждевременным) и даже на процессорную шину (потенциально более удачный пример — HT). Кто знает, сколько контактов будет у Pentium Х — возможно менее сотни, при условии, что половина из них — земля и питание. Время притормозить и четко сформулировать преимущества последовательных шин и интерфейсов:
- Выгодный перенос все большей части практической реализации шины на кремний, что облегчает отладку, повышает гибкость и сокращает время разработки;
- Перспектива органично использовать в будущем иные носители сигнала, например оптические;
- Экономия пространства (не бьющая по карману миниатюризация) и снижение сложности монтажа;
- Проще реализовывать горячие подключения и динамическую конфигурацию в любом смысле;
- Возможность выделять гарантированные и изохронные каналы;
- Переход от разделяемых шин с арбитражем и непредсказуемыми прерываниями, неудобными для надежных/критических систем к более предсказуемым соединениям точка-точка;
- Лучшая с точки зрения затрат и более гибкая с точки зрения топологии масштабируемость;
- Этого еще не достаточно??? ;-).
В будущем же следует ожидать перехода на беспроводные шины, технологии подобные UWB (Ultra Wide Band) однако, это дело не ближайшего года и даже не пяти лет.
А теперь, самое время обсудить все преимущества на конкретном примере — новой стандартной системной шине PCI Express, массовое распространение которой на сегмент PC и средних/малых серверов ожидается уже в середине следующего года. PCI Express — только факты
- Последовательная системная шина общего назначения;
- Имя — PCI Express, на стадии проектирования была также известна как 3GIO (Ввод-вывод третьего поколения) или по кодовому имени рабочей группы и проекта «Arapahoe», причем оба названия (3GIO и PCI Express) являются зарегистрированными торговыми марками PCISIG;
- Дата рождения — 22 июля 2002 года — опубликована базовая спецификация протокола и сигнального уровня, а также базовая спецификация на форм-фактор и энергопотребление карт и разъемы;
- Фактически — совокупность независимых самостоятельных последовательных каналов передачи данных;
- Сигнальный уровень 0.8 вольт. Каждый канал состоит из двух дифференциальных сигнальных пар (необходимо только 4 контакта):
- Используется избыточное защищенное от помех кодирование — каждый байт при передаче представляется десятью битами;
- Пропускная способность 2.5 Гигабита (250 МБ) в секунду для одного канала в каждом направлении одновременно (полный дуплекс), однако, следует учесть, что эффективная скорость передачи данных за вычетом избыточного кодирования составляет 2 Гигабита (200 МБ) ровно;
- Стандартизированы 1, 2, 4, 8, 16 и 32 канальные варианты (до 6.4 эффективных Гигабайт в секунду соответственно, при передаче в одну сторону и вдвое больше при передаче в обоих направлениях). При передаче данных они передаются параллельно (но не синхронно) по всем доступным каналам:
- Вся контрольная информация передается по тем же линиям что и данные, используется стек протоколов, из нескольких уровней, включая маршрутизацию данных:
- Стандарт предусматривает и альтернативные носители сигнала, такие как оптические волноводы;
- Возможность динамического подключения и конфигурации устройств;
- Возможность распознавания и использования альтернативных (улучшенных) протоколов обмена.
Подробнее остановимся на ключевых отличиях PCI Express от PCI:
- Как уже неоднократно упоминалось — новая шина последовательна, а не параллельна. Основные преимущества — снижение стоимости, миниатюризация, лучшее масштабирование, более выгодные электрические и частотные параметры (нет необходимости синхронизировать все сигнальные линии);
- Спецификация разделена на целый стек протоколов, каждый уровень которого может быть усовершенствован, упрощен или заменен не сказываясь на остальных. Например — может быть использован иной носитель сигнала или может быть упразднена маршрутизация в случае выделенного канала только для одного устройства. Могут быть добавлены дополнительные контрольные возможности. Развитие такой шины будет происходить гораздо менее болезненно — увеличение пропускной способности не потребует изменять контрольный протокол и наоборот. Быстро и удобно разрабатывать адаптированные варианты специального назначения;
- В изначальной спецификации заложены возможности горячей замены карт;
- В изначальной спецификации заложены возможности создания виртуальных каналов, гарантирования пропускной полосы и времени отклика, сбора статистики QoS (Quality of Service — Качество Обслуживания);
- В изначальной спецификации заложены возможности контроля целостности передаваемых данных (CRC);
- В изначальной спецификации заложены возможности управления питанием.
Итак, более широкие диапазоны применимости, более удобное масштабирование и адаптация, богатый набор изначально заложенных возможностей. Все так хорошо, что просто не верится. Впрочем, в отношении этой шины, даже заядлые пессимисты высказываются скорее положительно, чем отрицательно. И это не удивительно — кандидат на десятилетний трон общего стандарта для большого числа различных применений (начиная с мобильных и встраиваемых и заканчивая серверами «Энтерпрайз» класса или критическими применениями) просто обязан выглядеть безупречным со всех сторон, хотя бы на бумаге :-). Как оно будет в деле — мы скоро увидим сами. PCI Express — как это будет выглядеть
Самый простой вариант перехода на PCI-Express для стандартных по архитектуре настольных систем выглядит так:

Однако в будущем логично ожидать появление некоего разветвителя PCI Express. Тогда вполне оправданным станет и объединение северного южного мостов. Приведем примеры возможных системных топологий. Классический PC с двумя мостами:

Более обобщенная (серверная) архитектура с одним мостом:

Мощный сервер:

Производительный сетевой раутер:

Гибкость решения позволяет создавать различные топологические схемы, оптимально балансируя пропускную способность. А теперь ответим на вопрос «как это будет выглядеть» дословно. Карта:

(мысленно отломайте верхнюю и заднюю части, и вы увидите так называемый низкопрофильный вариант). А вот типичная для PC сектора системная плата с тремя х1 и одним х8 (в том числе, для графических карт) разъемами:

Те же разъемы вблизи:

Как уже упоминалось, предусмотрен и стандартизирован Mini PCI Express слот:

И новый слот для внешних заменяемых карт, на подобии CARDBUS, на который вынесена не только PCI Express но и USB 2.0:

Интересно, что предусмотрено два форм фактора карт, но отличаются они не толщиной как ранее, а шириной:

Решение очень удобное — во-первых делать двухэтажный монтаж внутри карты гораздо дороже и неудобнее нежели сделать карту с платой большей площади внутри, во-вторых, карта полной ширины получит в итоге вдвое большую пропускную полосу, т.е. второй разъем не будет простаивать без дела. С электрической или протокольной точки зрения шина NewCard не несет ничего нового, все необходимые для горячей замены или энергосбережения функции уже заложены в базовой спецификации PCI Express.PCI Express — переход
Для облегчения перехода предусмотрен механизм совместимости с программным обеспечением, написанным для PCI (драйверы устройств, OS). Кроме того, разъемы PCI Express в отличие от PCI расположены на другой стороне отведенной для карты расширения секции, т.е. могут сосуществовать на одном месте с PCI разъемами. Пользователю останется только выбирать какую карту он хочет вставить. В первую очередь появление PCI Express ожидается в начальных серверных (двупроцессорных) платформах Intel в первой половине 2004 года, затем в настольных платформах класса «Энтузиаст» и рабочих станциях (в том же году). Насколько быстро PCI Express будет поддержана другими производителями чипсетов не ясно, однако и NVIDIA и SIS отвечают на вопрос утвердительно, хотя и не называют конкретные сроки. Уже давно запланированы и готовятся к выходу в первой половине 2004 года графические решения (ускорители) от NVIDIA и ATI, снабженные встроенной поддержкой PCI Express х16. Множество других производителей являются активными участниками разработки и тестирования PCI Express и также намерены представить свои продукты до конца 2004 года.
Посмотрим! Есть подозрение, что ребеночек вышел удачный.
В добрый путь, PCI Express: отправление 2004, прибытие 2014.