Справочник - Материнские платы и процессоры

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 на этапе конфигурирования.

Содержание раздела