ПИ-СИАЙ- экспресс
АрхивО шине PCI Express (в девичестве 3GIO) мы уже писали неоднократно. Разговор о ней заходил на любой IT-выставке или конференции — например, на ежегодных Intel Developer Forum (IDF).
О шине PCI Express (в девичестве 3GIO) мы уже писали неоднократно. Разговор о ней заходил на любой IT-выставке или конференции - например, на ежегодных Intel Developer Forum (IDF).1. Собственно, именно корпорация Intel является сейчас одним из апологетов продвижения этой шины на рынок, хотя исходно архитектура будущей PCI Express была предложена несколько лет назад рабочей группой Arapahoe, основанной компаниями Compaq, Dell, IBM, Intel и Microsoft при участии организации PCI-SIG. Необходимость обзора PCI Express назрела уже давно, поскольку скоро ожидается выход материнских плат и карт расширения, поддерживающих эту технологию. Поэтому поговорим об устройстве, назначении, достоинствах, недостатках и грядущих перспективах "третьего поколения шин ввода-вывода"2
Конец эпохи параллельных шин данных
По прогнозам, за следующие десять лет требования к пропускной способности шин ввода-вывода возрастут в 50 раз. Но традиционная архитектура параллельных шин типа PCI и AGP уже почти достигла предела своих возможностей (физический лимит для них - примерно 1 ГГц). PCI Express призвана заменить шину PCI (и ее клон - AGP), исправно работающую в компьютерной технике уже более десяти лет3. Напомним, что PCI в свое время пришла на смену "первому поколению" - шине ISA4. Однако на сей раз изменения при переходе на новый стандарт куда большие, чем при переходе от ISA к PCI, - они в PCI Express носят не столько количественный, сколько качественный характер, и в целом их можно охарактеризовать как "переход от параллельных шин к последовательным", что является сейчас общеиндустриальной тенденцией развития шин передачи данных (см., например, рис. 1 и www.terralab.ru/system/20465). 5
В то время как процессоры уже не первый год успешно движутся в направлении параллельных архитектур (SIMD-расширения, суперскалярность, конвейеризация, Hyper-Treading и многоядерность), шины передачи данных не менее успешно переходят на последовательные решения. Причины обеих тенденций схожи и довольно просты - необходимо сбалансированно наращивать производительность всех компонентов компьютеров, однако не всякие существующие архитектурные решения способны эффективно масштабироваться.
Микропроцессорам проще работать с параллельными шинами передачи данных, они обеспечивают лучшую производительность при меньшей частоте, но, к сожалению, их тяжело масштабировать на высокие частоты - при этом сильно повышаются требования к физической разводке шины, заметно возрастает латентность (чтобы синхронизировать "одновременные" сигналы во всех проводах шины), да и места они занимают много - сравните, например, шлейфы IDE (UltraATA) и SerialATA. Поскольку себестоимость производства чипа сегодня все равно выходит примерно одинаковой (если не считать экономию на "ножках микросхемы"), то порой дешевле делать более сложный кристалл контроллера шины, чем плодить золотые контакты и многочисленные проводники на печатной плате. Поэтому стремление разработчиков перейти на параллельные шины довольно естественно - хотя бы с точки зрения экономии контактов и места на разводку шины (см. врезку вверху).6 С другой - последовательную шину гораздо проще заставить работать на повышенных тактовых частотах7, поэтому удается значительно поднять производительность. Более того, отличная масштабируемость последовательных шин вроде PCI Express и HyperTransport относительно легко достигается путем как повышения частоты работы, так и добавлением нескольких последовательных линий к шине.
PCI Express разработана с расчетом на разнообразные применения - от полной замены шин PCI и PCI-X в настольных компьютерах и серверах до использования в мобильных, встроенных и коммуникационных устройствах. Номинальной рабочей частотой шины PCI Express является (держитесь!) 2,5 ГГц. При этом пиковая производительность (на один канал передачи данных, без учета двунаправленности) всего на 50% больше, нежели производительность "обычной" 33-мегагерцовой PCI - 200 против 133 Мбайт/с. То есть для перехода на последовательную шину с сопоставимой производительностью понадобилось 75-кратное (!) увеличение тактовой частоты - до значений, о которых два-три года назад можно было только мечтать.
еудивительно, что PCI Express появилась только сегодня - раньше для нее просто не было технических предпосылок.
О разводке новой шины Шина PCI Express помимо низкой латентности обладает очень высокой скоростью передачи данных в расчете на один сигнальный контакт - около 100 Мбайт/с. Для сравнения: у обычной шины PCI этот показатель - всего лишь 1,58 Мбайт/с на контакт (32 бит х 33 МГц / 84 сигнальных контакта), у 133-мегагерцовой PCI-X 1.0 - 11,4 Мбайт/с на контакт (64х133/93), у AGP 8X - 19,75 Мбайт/с на контакт (32х533/108), а у Intel Hub Link 2 - 26,6 Мбайт/с на контакт (2x16 бит на 8х66 МГц/40 контактов). Это позволяет, во-первых, экономить за счет контактов (на корпусах микросхем и позолоченных разъемах), а во-вторых - за счет более компактной разводки шин, см. чертежи плат. Электрические улучшения (пониженное затухание в линиях передачи и повышенная чувствительность приемников данных) позволяют снизить требования к импедансу входных цепей и увеличить длину проводников шины на платах: сейчас она ограничивается 30,5 см для системных плат (от чипа до разъема), 9 см для плат контроллеров (и видеокарт) и 38 см для соединений между чипами на одной плате. Причем разводка может быть как четырех-, так и шестислойной - без каких-то особо критичных требований. |
Локальная сеть в пределах компьютера
Итак, что же нам предлагается? Разработчики PCI Express не стали изобретать велосипед и взяли за основу наработки в области сетевого оборудования. Получилось что-то очень напоминающее Gigabit Ethernet - и на физическом уровне, и на уровне протоколов передачи данных. Первое и самое главное отличие новой шины: PCI Express является последовательной, а значит, четко разнесены уровни представления данных и уровень их передачи. Если в параллельной шине, например PCI, данные непосредственно появляются на шине (вместе с какой-то дополнительной информацией - CRC, адресом получателя и пр.), что и обуславливает простоту их посылки и получения, то в последовательной шине сказать что-либо о "физическом носителе" заранее невозможно. Информация, которую необходимо передать, просто упаковывается в пакеты, куда заносятся данные о получателе и коды обнаружения/исправления ошибок - а получившийся сплошной поток (где идут вперемешку данные, приложения и вспомогательная информация) уже передается - абсолютно неважно каким способом - через физическую среду.
Приемник, в свою очередь, распаковывает прибывшие пакеты, исправляет ошибки или запрашивает повторную передачу, определяет получателя и направляет пакет далее. Собственно, "последовательность" шины вовсе не значит, что данные передаются побитно (хотя в случае с PCI Express это так), а понимается в том смысле, что данные и служебная информация передаются последовательно, по одним и тем же каналам (в отличие от параллельной передачи той же информации). Стандарт PCI Express предусматривает схему организации данных, показанную на рис. 2.
Не вдаваясь в технические подробности (их можно найти, например, на www.terralab.ru/system/34069), скажу лишь, что PCI Express использует традиционную многоуровневую модель, аналогичную сетевой ISO/SOI. На самом верхнем уровне располагаются прикладные приложения, использующие PCI-устройство. Для них в новой схеме не меняется ровным счетом ничего - для передачи или приема данных через шину PCI приложения обращаются к операционной системе, причем все старые операционки как работали с PCI, так и будут работать с PCI Express. Хотя для полноценной реализации всех возможностей новой шины (скажем, горячего подключения устройств), не предусмотренных в предыдущем стандарте, потребуется немного модифицировать ОС. В случае продукции Microsoft полноценная поддержка PCI Express обещана, увы, лишь в Longhorn, но возможны соответствующие "заплатки" и к некоторым существующим системам. Те же слова справедливы и для драйверов оконечных устройств. Однако все последующие уровни уже относятся к "железной" реализации, и здесь происходят кардинальные изменения.
Прежде всего, добавлено два новых уровня (Transaction Layer и Link Layer), которые иначе, как TCP и IP не назовешь - выполняемые функции абсолютно те же, что и у "сетевых" аналогов. Transaction Layer заведует первоначальной упаковкой данных, передачей их конкретному получателю и гарантиями корректной доставки сообщения. Link Layer указывает физический адрес назначения пакета, по которому контроллеры шины принимают решение о направлении пакета в конкретную физическую линию, здесь же располагается код обнаружения и исправления ошибок в принятом пакете (CRC), номер пакета, позволяющий отличить один пакет от другого, и др. Однако, в отличие от TCP/IP, маршрутизация пакетов (принятие решений о том, на какую шину перенаправить пакет, какой из нескольких претендующих пакетов передать первым) осуществляется на уровне транзакций. Интересно также, что пакет передается только в том случае, когда поступил сигнал готовности от буфера приема. Как следствие, уменьшается число повторов пакета и шина используется более эффективно. Формат пакетов шины PCI Express показан на рис. 3.
В низу этой пирамиды размещается собственно физическая реализация шины передачи данных - это две дифференциальные пары проводников с импедансом 50 Ом (первая пара работает на прием, вторая - на передачу), данные по которым передаются с использованием избыточного кодирования по схеме "8/10" с исправлением ошибок.8 Это позволяет исправлять многие простые ошибки, неизбежные на столь высоких частотах, без привлечения протоколов вышележащих уровней и без лишних повторных передач. Кроме того, это нужно, чтобы уменьшить долю "постоянных" составляющих в сигнале (не более четырех нулей или единиц подряд, рис. 4) - обеспечить баланс дифференциальной пары по постоянному току и позволить приемнику уверенно синхронизироваться по фронтам поступающего сигнала, поскольку никакого дополнительного ("внешнего") синхронизирующего сигнала от тактового генератора в PCI Express не используется.9 В качестве рабочих напряжений выбраны уровни от 0,2 до 0,4 В для логического нуля и от 0,4 до 0,8 В для логической единицы.10
Как и в любой сети, передаваемые данные дополнительно нарезаются небольшими кусочками - фреймами. При тактовой частоте шины 2,5 ГГц мы получим скорость 2,5 Гбит/с. С учетом выбранной схемы "8/10" выходит 250 Мбайт/с, однако многоуровневая сетевая иерархия не может не сказаться на скорости работы, и реальная производительность шины оказывается значительно ниже - всего лишь около 200 Мбайт/с в каждую сторону. Впрочем, даже это на 50% больше, чем теоретическая пропускная способность шины PCI. Но это далеко не предел: PCI Express позволяет объединять в шину нескольких независимых линий передачи данных. Стандартом предусмотрено использование 1, 2, 4, 8, 16 и 32 линий - передаваемые данные поровну распределяются между ними по схеме "первый байт на первую линию, второй - на вторую, ..., n-й байт на n-ю линию, n+1-й снова на первую, n+2 снова на вторую" и так далее. Это не параллельная передача данных и даже не увеличение разрядности шины (поскольку все передающиеся по линиям данные передаются абсолютно независимо и асинхронно) - это именно объединение нескольких независимых линий. Причем передача по нескольким линиям никак не влияет на работу остальных слоев "пирамиды" и реализуется сугубо на "нижнем", физическом уровне. Именно этим достигается прекрасная масштабируемость PCI Express, позволяющая организовывать шины с максимальной пропускной способностью до 32x200=6,4 Гбайт/с в одном направлении (см. табл. 1), под стать лучшим параллельным шинам сегодняшнего дня.11
PCI Express относится к шинам класса "точка-точка", то есть одна шина может соединять только два устройства (в отличие от PCI, где на общую шину "вешались" все PCI-слоты компьютера), поэтому для организации подключения более чем одного устройства в топологию организуемой PCI Express, как и в Ethernet-решениях на базе витой пары или устройствах USB, придется вставлять хабы и свитчи, распределяющие сигнал по нескольким шинам. Это тоже одно из главных отличий PCI Express от прежних параллельных шин.
Впрочем, на схеме (рис. 2) физический уровень не зря "троится" - на самом деле, в качестве "физического носителя" PCI Express может выступать что угодно, хоть тот же Gigabit Ethernet! Во-первых, это позволит по мере развития электроники легко нарастить тактовую частоту шины (ее обещают поднять вчетверо и довести до 10 ГГц, что уже вплотную приближается к теоретическому пределу передачи сигнала по медным соединениям, оцениваемому в 15–20 ГГц, см. www.terralab.ru/system/20465) без малейшего ущерба для совместимости с приложениями и драйверами. А во-вторых, это позволит реализовывать необычные по меркам сегодняшнего дня решения. Как вам нравится идея разделить системный блок на две части? Северный мост, процессор, память, видеокарта и, возможно, HDD c прочими "системными" компонентами останутся в одной половине, которую можно будет задвинуть куда-нибудь подальше и никогда ее не трогать. А южный мост и всю периферию - оптические приводы, дисководы и картоводы, звуковую карту, USB 2.0, FireWire и все соответствующие выходы - можно поместить в компактный и красивый корпус, который, скажем, может служить подставкой для монитора. Налицо все преимущества баребонов, и никаких проблем с апгрейдом и перегревом компонентов (можно будет, наконец, реализовать заветную мечту оверклокеров: поместить системный блок в холодильник, но так, чтобы работа с ним не затруднялась). Соединяться "половинки" компьютера будут как раз по единственной шине PCI Express, хотя физический носитель в этом случае, конечно, будет совсем другой - например, оптический. Фантастика!
Появились в стандарте PCI Express (по сравнению с PCI) и другие новые возможности, - например, поддержка виртуальных каналов, QoS (Quality of Service) и изохронная передача данных. Подробнее об этом читайте в расширенной версии обзора на www.terralab.ru/system/34069.
Аппаратные конфигурации
В плане практической реализации шина PCI Express представляет собой целый аппаратный комплекс, затрагивающий северный и южный мосты чипсета, коммутатор и оконечные устройства. Новым термином здесь является коммутатор (switch), заменяющий одну шину со многими подключениями коммутируемой технологией (рис. 5).
Коммутатор обеспечивает одноранговую связь между различными оконечными устройствами, то есть снижает нагрузку на мост. Поддерживаются несколько виртуальных каналов на один физический. Примерные схемы внедрения PCI Express в настольный компьютер и сервер представлены на рис. 5.
В "десктопных" системах PCI Express 16x в первую очередь вытеснит AGP 8x в качестве "графической шины", соединяющей видеокарту и северный мост чипсета. Затем на PCI Express пересадят многие интегрированные устройства - гигабитный сетевой и RAID-контроллеры. К обычным PCI-слотам добавят PCI Express x1. В качестве межчипсетной шины (соединяющей мосты чипсета) PCI Express будет выступать вместе со старыми шинами (VIA VLink, SiS MuTIOL) - некоторые производители чипсетов пока не желают отказываться от своих проприетарных шин.
С серверными архитектурами все проще - там не предусматривается традиционной "двухмостовой" чипсетной схемы. На PCI Express переведут интегрированные гигабитные сетевые контроллеры; традиционные периферийные шины (PCI-X, SATA, LPC) сохранятся, но к чипсету будут подключаться через специальные мосты на шину PCI Express. Аналогичная схема предусмотрена для сетевых решений - однако в силу специфики периферии там новая шина вытеснит почти все остальные.
Как видно из рисунков, PCI Express предполагается использовать для связи всех ключевых компонентов системы, кроме "внешних" (USB 2.0) и накопителей на магнитных дисках (SATA как более подходящий для работы именно с HDD). Некоторое время слоты PCI и PCI-X продолжат существование (они будут организованы через специальные мосты), но почти все интегрированные контроллеры будут подключаться уже с использованием PCI Express. В том числе PCI Express свяжет между собой северный и южный мосты чипсета. Поскольку реализация что AGP, что PCI Express x16 требует весьма сложной разводки, то слот AGP из будущих чипсетов исчезнет12 (впрочем, SiS, VIA и ALi на первых порах будут выпускать чипсеты с шиной AGP и PCI Express x1, но без PCI Express x16 - см., например, фото слева).
Краткие итоги
Как бы мы ни относились к новой шине, постепенный переход на PCI Express неизбежен. Технология очень интересная, с огромным потенциалом и отличными возможностями - прекрасный преемник "старичка" Peripheral Component Interconnect на ближайшие 8-10 лет. Возможно, чуть преждевременная для "обычных пользователей", но в будущем необходимая. Если же рассматривать конкурентов - шины PCI-X, HyperTransport (о ней - в следующей статье) или RapidIO, то война не состоится - уж слишком все эти шины разные и нацелены каждая на свой "кусок пирога" (сегмент рынка), хотя у PCI Express этот "кусок", безусловно, самый смачный, а применение остальных шин достаточно специфично. AMD уже поддержала стандарт PCI Express (продолжая развитие своего HT, разумеется). Так и напрашивается аналогия с противостоянием замечательного интерфейса FireWire (IEEE 1394/b) и USB 2.0. Первый всем был хорош, да только так и остался узкоспециализированным решением, задавленным бесплатным "ставленником" Intel. Что касается применения PCI Express в качестве шины памяти или процессора (системной), то это совершенно отпадает, поскольку ее текущие возможности (максимум 6,4 Гбайт/с) явно не способны удовлетворить будущим запросам этих шин. В этом смысле шинам AMD HyperTransport и Rambus Redwood/XDR (о них читайте ниже) нечего бояться.
1 Cм. обзоры www.terralab.ru/system/170309 , .../20465, .../23898, .../24500, .../29301, .../29386 и .../32360/page2.html.
2 Аббревиатура 3GIO как раз и означает 3rd Generation of Input-Output (buses).
3 Первая версия стандарта Peripheral Components Interconnect (PCI) была представлена Intel в 1991 году, но свое победное шествие она начала чуть позже - в 1993-м, с принятием стандарта PCI 2.0. Разработкой и продвижением стандарта с тех пор занимается специальная организация - консорциум PCI-SIG (Special Interest Group), она же займется продвижением и PCI Express. На сайте этой организации (www.pcisig.com) можно найти много полезной технической информации и подробные спецификации (www.pcisig.com/specifications/pciexpress ).
4 Шины ввода-вывода подобного уровня, похоже, отличаются невероятной живучестью. ISA умирать по сей день не собирается, оставаясь, как и следует из названия, индустриальным стандартом и присутствуя в ряде современных системных плат для серверов и встроенных (embedded) систем (в том числе на чипсете Intel 875P) - от таких брэндов, как Supermicro и American Predator, например.
5 По процессу перехода на последовательные шины легко проследить основные вехи развития полупроводниковой промышленности. Первыми на последовательную передачу перешли интерфейсы подключения мыши и клавиатуры. Следующий виток эволюции можно связать с сетевыми решениями. Провести параллельную линию высокого качества на большое расстояние невозможно, и все технологии передачи данных на большое расстояние были последовательными с самого начала. По мере совершенствования электроники на одном и том же кабеле удавалось получить 1 Мбит/с, 10 Мбит/с, 100 Мбит, а впоследствии и 1–10 Гбит/с. Затем пришли USB, Hi-Speed USB, Serial ATA, скоро грядет Serial Attached SCSI (SAS), см. www.terralab.ru/system/32360/page2.html. Шина PCI была очевидным кандидатом на звание "очередной жертвы прогресса", и инициативу Intel было легко предугадать. Кстати, помимо PCI в современной компьютерной системе осталось, по большому счету, лишь две параллельных шины - процессорная и шина памяти. С переводом первой в "последовательный вариант" больше всех преуспела AMD с ее удачным HyperTransport. Вторую же пробовала перевести на новые рельсы компания Rambus.
6 По уверениям специалистов, "последовательность" и компактность шины PCI Express позволяет уменьшить площадь материнской платы наполовину (по крайней мере - в месте разводки периферии)!
7 Чем выше частота, тем выше требования к линии передачи данных. Нужно обеспечить ее максимальную однородность на всем протяжении (иначе сигнал будет переотражаться от неоднородностей и искажаться), в том числе - свести к минимуму число "поворотов". Линию необходимо тщательно согласовать (иначе сигнал будет отражаться еще и от источника или приемников сигнала), а в случае классической параллельной шины - еще и обеспечить "одинаковость длин" (точнее - волнового сопротивления) входящих в нее линий. Естественно, что выдержать эти требования к двум линиям передачи данных гораздо проще, нежели к 32, а то и к 64 линиям.
8 Каждый байт (8 бит) данных по определенной схеме кодируется 10 битами передаваемых данных. 10 бит для передачи этой информации многовато, поэтому его и называют избыточным.
9 PCI Express полностью исключает использование дополнительных физических линий (тактовых, сигналов ошибок, изменения режимов и прерываний) - все это перенесено на логический уровень. Когда несколько сигнальных линий (каналов шины) работают параллельно, они имеют одинаковую тактовую частоту. Допустимо также применение "размывания" спектра сигнала (Spread Spectrum - отклонение частоты тактового генератора от опорного значения).
10 Столь низкие напряжения выбраны ради удобства проектирования устройств для PCI Express на современных 180-, 130- и 90-нм чипах, а также с целью снижения электромагнитных наводок и потребляемой мощности.
11 Напомним, что у AGP 8х она составляет 2,1 Гбайт/с, у PCI-X - лишь 1066 Мбайт/с (если не учитывать реализаций PCI-X 266 и PCI-X 533), а у двухканальной системной памяти DDR400 и системной шины современных Pentium 4 - как раз 6,4 Гбайт/с.
12 А возможно, причина не только в сложности подобного решения - видеокарта PCI Express послужит хорошим "локомотивом" перехода на новую шину.