Шина PCI Express: утопия или общая стандартизация?
Дата: 04/09/2005
Тема: Обзоры продуктов, настройка, установка


Развитие компьютерной индустрии можно изобразить в виде кривой, чем-то напоминающей электрокардиограмму: более-менее стабильные периоды сменяются экстремумами. При этом данное утверждение можно отнести как к уровню продаж, так и к технологическим достижениям. И хотя в последнем случае все не так однозначно, ведь очередному пику предшествует кропотливая исследовательская работа, тем не менее, взаимосвязь рыночных скачков и провалов с технологическими зачастую носит прямо пропорциональный характер.

Аналогична и ситуация с системными шинами для персональных компьютеров, построенных на базе архитектуры x86. Прежде чем приступить к предметному разговору, стоит провести небольшой исторический экскурс, чтобы выделить логическую необходимость новых технологических решений.

Что было раньше?

Во-первых, напомним, что шина PCI, бывшая буквально до последнего времени безусловным стандартом, не так давно отметила десятилетний юбилей - а это, согласитесь, в компьютерном летоисчислении аналогично отрезку времени от египетских пирамид до наших дней. Еще в далеком 1991 году компания Intel представила первую спецификацию системной шины, известной как Peripheral Component Interconnect, которая в сжатые сроки вытеснила устаревшую даже по тем временам шину ISA, верой и правдой прослужившую очень долго, а также ее более дорогую и менее удачную серверную сестру EISA.

Что можно сказать о шине PCI? Во-первых, пропускная способность PCI была гораздо выше пропускной способности ISA. Во-вторых, важнейшее различие этих двух интерфейсов - возможность динамического конфигурирования периферийных устройств, подключенных к PCI, то есть система распределяет ресурсы между периферийными устройствами наиболее приемлемым в данный момент времени образом и без постороннего вмешательства.

Итак, начало положено. Вряд ли кто-то из разработчиков тогда думал о том, какая долгая жизнь уготована интерфейсу PCI (мы говорим не конкретно о версии 1.0, а о Peripheral Component Interconnect вообще). Однако толчком к бурному росту числа продуктов, ориентированных на использование с шиной PCI, стало появление двумя годами позднее второй редакции стандарта PCI, 2.0 - и с этого момента началось медленное, но уверенное «выдавливание» с арены ветеранов ISA и EISA.

До сих пор все прекрасно помнят основные параметры PCI 2.0 - это, конечно, ширина шины, равная 32 битам, максимальное адресуемое адресное пространство 4 Гбайт, тактовая частота шины 33 МГц при синхронном обмене данными и пиковая пропускная способность 133 Мбайт/с. И напоследок: устройства были рассчитаны на напряжение питания 5 В и 3,3 В. По сегодняшним меркам - смехотворные цифры. Но в 1993 году такие величины казались поистине громадными.

Со временем появилось множество вариаций на тему PCI 2.0, наиболее распространенные из которых - стандарт PCI 2.2, стандарт AGP, PCI-X, mini-PCI и Card Bus (32-разрядная версия стандарта PCMCIA, допускающая горячее подключение).

Каковы основные шаги в развитии PCI с точки зрения вышеупомянутых вариаций? Наиболее заметна для конечного пользователя была, естественно, шина AGP, являющаяся, тем не менее, частным случаем PCI 2.0. AGP предназначена для использования с производительными графическими адаптерами, которым недостаточно даже пиковых скоростных значений PCI 2.0. AGP характеризуется отсутствием арбитража интерфейса - допускается подключение к этой шине только одного устройства; хотя, версия AGP 3.0 нивелирует это ограничение, к ней можно подключить уже два устройства (при наличии, разумеется, двух соответствующих разъемов на системной плате). Шина AGP появилась в четырех вариациях, которые различаются между собой пиковой пропускной способностью - AGP 1x, 2x, 4x и 8x. Несмотря на то что скоростей четыре, стандартов AGP три - AGP 1.0, 2.0 и 3.0. Кроме того имеется спецификация на питание шины AGP Pro.

Не менее ярко выступил стандарт PCI 2.2, в котором ширина шины может быть увеличена до 64 бит, а также допускается «разгон» тактовой частоты до 66 МГц - вдвое по сравнению с PCI 2.0. Еще дальше пошла PCI-X - это ни что иное, как ускоренная до 133 МГц шина PCI 2.2 с обязательно 64-битной разрядностью интерфейса. PCI-X выпускалась и в более форсированных вариантах, с 266 МГц и 533 МГц тактовой частотой.

Менее заметна, но не менее важна шина mini-PCI, применяющаяся в портативных компьютерах для подключения различной «мелкой» периферии.

Из вышесказанного следует, что удачная разработка PCI развивалась отнюдь не линейно - встречались и ветвления для узкоспециализированных применений: AGP - графика, PCI 2.2 - периферийные потребительские устройства, PCI-X - серверная периферия, mini-PCI и Card Bus - нашли место в ноутбуках.

Пиком скоростного развития стандарта PCI можно назвать PCI-X 533 и AGP 8x. А дальше - общеизвестная история: основные компоненты вычислительных систем, процессоры и память выросли из детских штанишек межкомпонентного интерфейса, что, в принципе, не так уж и страшно. Беда в том, что далее наращивать пропускную способность PCI оказалась технологически сложно и дорого. Например, для того чтобы не мудрствуя лукаво наращивать тактовую частоту, требуются дополнительные проверки для исключения сбоев - новая разводка, новые сигналы, что в конечном итоге отражается на стоимости решения. Требуется совершенно новая разработка, гарантирующая «безболезненную» масштабируемость и наращиваемость на ближайшие несколько лет.

PCI Express, в девичестве «Arapahoe»
О грядущем тупике разработчики, конечно же, догадались отнюдь не вчера. Еще в пору ожидания AGP 3.0 в Интернете вовсю ходили слухи о новом межкомпонентном интерфейсе, разрабатываемом в недрах Intel под кодовым названием Arapahoe, сейчас 3GIO (Third Generation In-Out - ввод/вывод третьего поколения). Главным отличием этого решения должен был стать последовательный интерфейс. Это означало, во-первых, однозначное подключение «точка-точка», исключающее арбитраж шины и перетасовку ресурсов (как частный случай: прерываний). Во-вторых, упрощалась схемотехника, разводка и монтаж. В-третьих, экономилось место. Огромный плюс - отпадает необходимость в громоздкой синхронизации сигналов. Ведь при параллельной организации передачи все происходит на «делай раз, делай два», биты приходят от источника к приемнику не вразнобой, а «строем». Кстати, с увеличением таковых частот синхронизация добавляла разработчикам немало головной боли. На самом деле преимуществ последовательных интерфейсов перед параллельными гораздо больше, но они относятся, в основном, уже к «дебрям».

Итак, новая последовательная шина, которой предписывалось решить все проблемы компьютерной отрасли разом, получила название PCI Express - это случилось 22 июля 2002 года. Основной двигатель прогресса здесь, конечно же, корпорация Intel. Более того, существует весьма любопытный факт - несмотря на то что компания AMD делала большие ставки на свою шину Hyper-Transport, даже ее Intel удалось склонить на сторону продвижения PCI Express. Это обстоятельство стало буквально козырной картой интерфейса, и теперь IT-общественность не сомневается: PCI Express - быть. Давайте разберемся, чему собственно быть.

Во-первых, новая шина теоретически должна выступить в качестве основного транспорта между всеми, без исключения, узлами компьютера. В самом деле, ведь предшественница PCI ввиду своего отставания от требований к пропускной способности с течением времени оказалась постепенно вытесненной из основного «круговорота»; и выглядела уже не как первостепенной важности элемент, а, если хотите, как обуза. Процессор с памятью, диски Serial ATA, даже сетевые контроллеры - все компоненты обходились своими собственными соединениями. Что же оставалось PCI? Диски Parallel ATA, модемы, сетевые да звуковые карты. Согласитесь, не совсем достойная участь для некогда революционной разработки.

В общем, при разработке спецификаций нового стандарта Intel не стала изобретать ничего кардинально нового - в ход пошли передовые наработки из сетевой отрасли. Много внимания инженеры уделили и кодированию информации с устойчивостью к ошибкам. Опираясь на два этих факта, можно сказать, что PCI Express - это очень современно. Также стоит вспомнить, что подобный подход уже однажды был применен Intel на этапе внедрения процессора Pentium 4: как необычно звучало словосочетание Intel Hub несколько лет назад…

PCI Express - последовательный интерфейс, имеющий много общего с сетевой организацией обмена данными. Сетевые термины, наподобие Hub, уже прочно вошли в лексикон не только системных администраторов, но и схемотехников: в современных платформах основной связующий компонент системной платы носит название Root Complex Hub, который выглядит как перекресток трех шин - процессорной, шины памяти и PCI Express.

На данном этапе Root Complex представляется как некий альтернативный узел, снабженный одним или несколькими портами PCI Express. Для взаимодействия с остальными узлами ПК, которые так или иначе обходятся собственными шинами (это не обязательно процессорная шина и шина памяти, некоторое время неизбежно присутствие и старинных PCI 2.2 или PCI-X) предусмотрена система мостов и свитчей. Логика всей структуры такова, что любые межкомпонентные соединения непременно оказываются построенными по принципу «точка-точка», тем более, ни о какой широковещательности речь не идет, вышеупомянутые свитчи-коммутаторы выполняют однозначную маршрутизацию пакета от отправителя к получателю. Коммутаторы могут выполнять и более интеллектуальные функции, нежели простой роутинг данных.

Имея последовательно-сетевую природу, стек PCI Express разделен на три уровня: аппаратный (Physical - физический), аппаратно-логический (Data link - передача данных) и логический (Transaction - транзакции). Начнем с аппаратного - здесь есть как новинки, так и аксиомы принципов передачи информации.

Уже не раз говорилось, что стандарт PCI Express «исповедует» последовательную передачу данных. На аппаратном уровне реализовано разностное усиление сигнала (сигнальный уровень PCI Express составляет 0,8 В): по одному проводнику передается положительное аналоговое представление сигнала, по второму - отрицательное. Разностный приемник сигнала на другом конце линии инвертирует принятый сигнал и складывает с сигналом, прибывшим по другому проводнику, поэтому, если где-либо сигнал был «разбавлен» помехой (которая подвергла воздействию оба проводника), то она сама себя нивелирует.

PCI Express построен на принципах симплексной технологии, а это означает, что сигналы идут одновременно, в противоположных направлениях и по отдельным парам проводов - итого две пары, называемые линией. Стандарт декларирует пропускную способность симплексной линии на отметке 2,5 Гбит/с в одну сторону или, соответственно, 5 Гбит/с в обе стороны. Однако эти значения масштабируемы.

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

Пришлось сделать «новый байт для PCI Express», состоящий из десяти бит, которые уже можно отделить друг от друга. Восемь бит - хрестоматийные, два бита - служебные. В итоге - 20%-ную избыточность, а значит, 20% от заявленных 2,5 Гбит/с и 5 Гбит/с мы так и не увидим. То есть синхронизация все-таки имеется, но выполнена она таким оригинальным образом. Что же случится, если по шине не проходит никаких данных? Велика возможность рассогласования между отправителем и адресатом, поэтому трафик на шине PCI Express не прекращается никогда: в отсутствие данных посылаются специальные последовательности из нулей, закодированные по все той же десятибитной схеме.

При инициализации линии, связывающей две точки (отправителя и адресата), происходит пересылка специальных начальных последовательностей. В этих последовательностях могут быть закодированы параметры соединения. Во время сеанса связи могут возникнуть и такие неприятности, как несоответствие работы тактовых генераторов передающей и приемной стороны. Для того чтобы поправить положение, периодически в потоке данных передаются специальные корректирующие последовательности. Степень необходимости внедрения корректирующих последовательностей определяется исходя из разницы между показателями тактовых генераторов.

В любом случае дополнительные кодирующие последовательности, как и необходимость внедрения избыточности с целью синхронизации, негативно сказываются на производительности, так как неизбежно влекут за собой временные потери. Для организации связи в реальном времени такой путь не подходит, поэтому разработчикам таких критичных к латентности систем придется изобретать собственные протоколы обмена.

Можно сказать, что на данном этапе последовательная передача, как таковая, заканчивается. Единственное соединение, представляющее собой линию PCI Express, две пары проводов, - этого не достаточно для обеспечения высокой пропускной способности. Поэтому линии привычно выстраивают в ряд - их может быть 32, 16, 12, 8, 4 и 2. В итоге, вся последовательность данных, которую необходимо передать, распределяется на все имеющиеся линии «веером»- передача параллельная, но не синхронная. Если имеется 12 линий, то первый байт блока данных передается по первой линии, второй - по второй, и т. д., а тринадцатый байт - снова по первой. Теоретически шина с 32 линиями способна выдать пропускную способность 20 Гбит/с, от которых отнимаем 20% - 16 Гбит/c, или же по 8 Гбит/с в каждую сторону.

Более высокий уровень стека PCI Express отвечает за корректность передачи данных. Получив от самого верхнего уровня иерархии, Transaction, для передачи пакет данных, алгоритм Data Link присоединяет к последнему номер последовательности и его контрольную сумму. Кроме того, Data Link отвечает и за информирование остальных уровней стека о состоянии канала связи. Третья важная функция Data Link - управление энергопотреблением.

Наиболее интеллектуальный уровень PCI Express - Transaction Layer, который задействует четыре различных адресных пространства. Это память (адрес может быть как 32-, так 64-разрядным), сообщения, конфигурация и ввод/вывод.

Интересно организовано управление функциями питания PCI Express. Конечно, новый стандарт базируется на основных принципах управления питанием своего предшественника PCI и отвечает требованиям ACPI 2.0 и PCI Bus Power Management Interface Specification 1.1. Для каждого соединения управление питанием выполняется индивидуально, а регламент предусматривает привычные четыре состояния - L3, L2, L1 и L0s. Состояние L3 соответствует режиму «выключено», L2 - отключение основного питания и частотного генератора, L1 - формальный режим совместимости с PCI, при котором уровни питания и частоты находятся в номинальном режиме, но степень готовности ниже, чем в полностью «заряженном» режиме L0s. В последнем для восстановления состояния канала связи не требуется выполнять повторную инициализацию соединения, достаточно лишь «взбодрить» линию быстрой последовательностью тренировки канала.

Кроме соответствия традиционным требованиям энергосбережения, стандарт PCI Express обладает и эксклюзивными механизмами управления питания - это ASPM, Active State Power Management. ASPM обладает завидной автономностью и способен переводить устройство в оптимальный режим работы без инструкций свыше (со стороны ПО). Это не означает, что устройство, давно не подававшее признаков активности, будет полностью отключено, но переведено в режим пониженного потребления L0s - наверняка. Стандарт PCI Express считает устройство неактивным, если за время, равное 7 мкс, с ним не было никакого обмена данными. Как только возникает потребность в обмене, устройство возвращается в рабочее состояние. Напомню, у различных устройств может быть абсолютно разное время «засыпания» и «пробуждения», поэтому эти параметры сообщаются Active State Power Management на этапе конфигурирования.

Воплощение
Аппаратная реализация слотов PCI Express чем-то напоминает матрешку. Имеются четыре разновидности контактных наборов на 1, 4, 8 и 16 линий соответственно. Периферийные карты с меньшим количеством контактов можно устанавливать в слоты с большим количеством контактов, при этом будет задействовано именно столько линий, сколько разведено на карте.

Если в 16-канальный слот установить 16-канальную PCI Express-видеокарту, это будет оправданное решение, пропускной способности в данном случае не бывает много. Но если в такой же слот установить, скажем, модем 56K, не заполняющий и один канал шины, - это уже вопиющая расточительность.

Периферийные карты опционально могут поддерживать горячую замену, что может быть полезно, например, в случае серверного применения. Для питания устройств имеется три группы контактов: +12 В, +3,3 В (основное питание), +3,3 В (вспомогательное питание).

Что впереди?
На сегодняшний день четко очерчены границы применения шины PCI Express. В привычных настольных компьютерах этот стандарт должен упразднить лишь шины PCI и AGP, грубо говоря, «PCI и компанию». Нет оснований полагать, что PCI Express станет связующим звеном для дисковой подсистемы, подсистем памяти и процессора, его удел - периферия. Более широкий круг задач - на рынке портативных систем; помимо подключения внутренних периферийных устройств PCI Express будет применяться для связи с док-станциями ноутбуков и внешними периферийными картами, которые придут на смену сегодняшним PC Card.

Производительные рабочие станции и серверы смогут задействовать PCI Express и для подключения дисковых массивов. В целом, судя по спецификациям, будущее этого интерфейса достаточно безоблачно: особую надежду вселяют значения пропускной способности 2,5 Гбит/с на канал, определенные в качестве стартовых - значит, есть куда расти. Небольшая ложка дегтя, выраженная в необходимости отдать 20% трафика по шине на служебные нужды, не может служить весомым поводом для беспокойства. Ведь по большому счету, если переживать из-за всех уступок человека железу, можно впасть в состояние перманентной депрессии. А если вспомнить о восторгах со стороны многочисленных производителей периферийного оборудования по поводу PCI Express, тем более, можно жить и радоваться. Но вернемся к названию статьи: утопия ли PCI Express? Нет, это вполне сбалансированное и своевременное решение. PCI Express - попытка общей стандартизации? Тоже нет, ведь всех под одну гребенку все равно не причесать. Чем же тогда все-таки является PCI Express? Пожалуй, требованием времени.

Автор: Евгений Патий
Источник: www.electronica.finestreet.ru







Это статья Информационный проект Ynks.Net
http://www.ynks.net

URL этой статьи:
http://www.ynks.net/modules.php?name=News&file=article&sid=124