Архивы: по дате | по разделам | по авторам

Новые шины. Часть 1. PCI Express — общая концепция и возможности

АрхивПлатформа
автор : Сергей Озеров   17.06.2004

Этот цикл статей посвящен современным и будущим технологиям последовательной передачи данных — высокоскоростным последовательным шинам и их модификациям. Сперва — в подробностях о горячей новинке, PCI Express.

Этот цикл статей посвящен современным и будущим технологиям последовательной передачи данных — высокоскоростным последовательным шинам и их модификациям. Переход от синхронных параллельных шин передачи данных к гигагерцовым последовательным в данный момент является одной из наиболее «жарких» областей развития компьютерной техники. И начался он не вдруг — про шины USB, FireWire и SerialATA, являющиеся одними из ранних и наиболее распространенных примеров тенденции такого перехода, мы уже неоднократно писали в течение последних лет. Сейчас же нас будут интересовать еще более быстродействующие шины — грядущая летом «глобальная» PCI Express, специализированная HyperTransport и новейшие интерфейсные технологии от компании Rambus, которая предлагает ряд нетривиальных решений в этой области. Несмотря на явную схожесть этих трех последовательно-параллельных технологий передачи, они не являются прямыми конкурентами — первая нацелена на подключение самой разнообразной периферии (включая графические ускорители), вторая исходно замышлялась как процессорная шина, а технологии Rambus пока ближе всего к новому типу высокоскоростной памяти XDR, хотя, как частный случай, применимы и к двум первым. Во всем этом нам и предстоит разобраться.

Читайте в других статьях этого цикла:
• Новые шины. Часть 2. PCI Express на практике — что нас ожидает?
• Новые шины. Часть 3. Шина HyperTransport — альтернативы нет?
• Новые шины. Часть 4. Новые технологии («четыре кита») Rambus. XDR DRAM.


PCI Express — новое поколение компьютерных шин и замена PCI

О шине PCI Express (в девичестве 3GIO) мы уже писали неоднократно — разговор о ней заходил на всякой более-менее крупной IT-выставке или конференции — например, на ежегодных Intel Developer Форумах (IDF).1 Собственно, именно корпорация Intel является сейчас одним из наиболее активных апологетов продвижения этой шины на рынок, хотя исходно архитектура будущей PCI Express была предложена несколько лет назад рабочей группой Arapahoe, основанной компаниями Compaq, Dell, IBM, Intel и Microsoft при участии организации PCI-SIG. Необходимость детального обзора технологии PCI Express назрела уже давно, поскольку в самом ближайшем времени на рынке ожидается (наконец!) появление не только чипсетов и материнских с поддержкой этой шины, но и всевозможных плат расширения — видеокарт и контроллеров (прежде всего, сетевых и дисковых). И в этой статье мы сделали попытку собрать вместе наиболее важные сведения об устройстве, назначении, достоинствах, недостатках и грядущих перспективах на рынке «третьего поколения шин ввода-вывода»2.


Конец эпохи параллельных шин данных

PCI Express призвана заменить шину PCI, исправно работающую в компьютерной технике уже более десяти лет3. Напомним, что шина Peripheral Components Interconnect (PCI) в свое время пришла на смену «первому поколению» — шине Industrial Standard Architecture (ISA)4. Однако на сей раз изменения при переходе на новый стандарт куда большие, чем при переходе от ISA к PCI — они в PCI Express носят не столько количественный, сколько качественный характер и в целом их можно охарактеризовать как «переход от параллельных шин к последовательным», что является сейчас общеиндустриальной тенденцией развития шин передачи данных (см., например, рис. 1 и www.terralab.ru/system/20465).

Рис. 1. Переход с параллельных на последовательные технологии передачи данных.

В то время, как процессоры уже не первый год и вполне успешно движутся в направлении параллельных архитектур (SIMD-расширения, суперскалярность, конвейеризация, Hyper-Treading и многоядерность), шины передачи данных не менее успешно переходят на последовательные решения. Причины обоих явлений схожи и довольно просты — необходимо сбалансировано наращивать производительность всех компонентов компьютеров, однако не всякие существующие архитектурные решения способны эффективно масшабироваться.

Пожалуй, по процессу перехода на последовательные шины несложно проследить основные вехи развития полупроводниковой промышленности. Первыми на последовательную передачу перешли интерфейсы подключения мыши и клавиатуры — высоких скоростей там все равно не требовалось, а схемотехника заметно упростилась. Следующий виток эволюции можно связать с сетевыми решениями — провести параллельную линию данных высокого качества на большое расстояние невозможно, и все технологии передачи данных на большое расстояние были последовательными с самого начала. По мере совершенствования электроники на одном и том же кабеле удавалось получить 1 Мбит/с, 10 Мбит/с, 100 Мбит, а впоследствии и 1–10 Гбит/с. Традиционные параллельные COM и LPT в 1996 потеснил USB, вначале «низкоскоростной» (6 МГц, 12 Мбит/с), а затем и достаточно быстрый Hi-Speed USB (480 Мбит/с, 1999 год). Следующим покачнулся бастион уже сравнительно высокопроизводительных шин — на смену UltraATA/133 пришел чуть более производительный Serial ATA (www.terralab.ru/system/19510), уже успевший получить к сегодняшнему дню вторую версию. Практически синхронно на последовательную шину переходит один из древнейших интерфейсов — SCSI, наследником которого стал Serial Attached SCSI (SAS), см. www.terralab.ru/system/32360/page2.html. Шина PCI была очевидным кандидатом на звание «очередной жертвы прогресса» и инициативу Intel легко было предугадать.

Кстати, помимо PCI в современной компьютерной системе осталось, по большому счету, лишь две параллельных шины — процессорная и шина памяти. С переводом в первой «последовательный вариант» впереди идет AMD с ее удачным HyperTransport (строго говоря — более быстрая параллельная процессорная шина спрятана в сам кристалл процессора, а наружу выходит последовательная шина HyperTransport для связи процессора с «внешним миром»). Вторую же пробовала перевести на новые рельсы компания Rambus. Конечно, надо понимать что в обоих случаях шины не «чисто последовательные» однобитной ширины, а более широкие — от 8 до 16 и даже 32 бит, что, впрочем, не сильно меняет дело — шина возможна и однобитная, просто скорость будет при этом недостаточно высока. Главное — данные передаются в виде пакетов и логический уровень передачи данных четко отделен от физического уровня.

С параллельными шинами передачи данных микропроцессорам проще работать, они обеспечивают лучшую производительность при меньшей частоте, но, к сожалению, их тяжело масштабировать на высокие частоты — при этом очень сильно повышаются требования к физической разводке шины, заметно возрастает латентность (чтобы согласовать по времени «одновременные» сигналы во всех проводах шины), да и работать с ними неудобно, поскольку они занимают много места — сравните, например, шлейфы IDE (UltraATA) и SerialATA. Поскольку себестоимость производства чипа сегодня все равно выходит примерно одинаковой (если не считать экономию на «ножках микросхемы»), то порой дешевле делать более сложный кристалл контроллера шины, чем плодить золотые контакты и многочисленные проводники на печатной плате. Поэтому стремление разработчиков перейти на параллельные шины довольно естественно даже хотя бы сточки зрения экономии средств (экономия контактов и места на разводку собственно шины, см. врезку).5 С другой — последовательную шину гораздо проще заставить работать на повышенных тактовых частотах6, поэтому удается не только скомпенсировать падение, но даже значительно поднять производительность. Более того, отличная масштабируемость последовательных шин вроде PCI Express и HyperTransport, относительно легко достигается путем как повышения частоты работы, так и добавлением нескольких последовательных линий к шине.

Шина 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 является открытым стандартом и разработана с расчетом на разнообразные применения — от полной замены шин PCI и PCI-X внутри настольных и серверных компьютеров, до использования в мобильных, встроенных и коммуникационных устройствах. Номинальной рабочей частотой шины PCI Express является (держитесь!) 2,5 ГГц. При этом теоретическая пиковая производительность шины (на один канал передачи данных) примерно вдвое больше, нежели производительность «обычной» 33-мегагерцовой PCI — 250 против 133 Мбайт/с (или 200 против 100 Мбайт/с для реальной эффективной полосы пропускания данных). То есть для перехода на последовательную шину с сопоставимой производительностью понадобилось 75-кратное (!) увеличение тактовой частоты — до значений, о которых два-три года назад можно было только мечтать. Неудивительно, что PCI Express появилась только сегодня — раньше для нее просто не было достаточных технических предпосылок. Читать дальше >>>


1. Cм. обзоры: www.terralab.ru/system/170309, ../system/20465, ../system/23898, ../system/24500, ../system/29301, ../system/29386 и ../system/32360/page2.html. [вернуться]

2. Аббревиатура 3GIO как раз и означает 3rd Generation of Input-Output (buses). [вернуться]

3. Если быть точным, то первая версия стандарта была представлена Intel в 1991 году, но свое победное шествие она начала чуть позже — в 1993, с принятием стандарта PCI 2.0. Разработкой и продвижением стандарта с тех пор занимается специальная организация — консорциум PCI-SIG (Special Interest Group), она же займется продвижением и PCI Express. На сайте этой организации www.pcisig.com можно найти много полезной технической информации и подробные спецификации (www.pcisig.com/specifications/pciexpress), а сама PCI-SIG регулярно проводит конференции для разработчиков. [вернуться]

4. Шины ввода-вывода подобного уровня, похоже, отличаются невероятной живучестью, поскольку ISA умирать по сей день не собирается, оставаясь, как и следует из названия, индустриальным стандартом и присутствуя в ряде вполне современных системных плат для серверов и встроенных (embedded) систем, в том числе, на чипсете Intel 875P — от таких брэндов, как Supermicro и American Predator, например. [вернуться]

5. По уверениям специалистов, «последовательность» и компактность шины PCI Express позволяет уменьшить площадь материнской платы наполовину (по крайней мере — в месте разводки периферии)! [вернуться]

6. Чем выше частота, тем выше требования к линии передачи данных — требуется обеспечить ее максимальную однородность на всем протяжении (проходящий по ней сигнал будет переотражаться от неоднородностей и искажаться), и в том числе — обеспечить как можно меньшее число «поворотов». Линию необходимо тщательно согласовать (иначе сигнал будет отражаться еще и от источника или приемников сигнала), а в случае классической параллельной шины — еще и обеспечить «одинаковость длин» (точнее — волнового сопротивления) входящих в нее линий. Естественно, что выдержать эти требования к двум линиям передачи данных намного проще, нежели к 32, а то и к 64 линиям. [вернуться]

Локальная сеть в пределах компьютера

Итак, что же нам предлагается? Разработчики PCI Express не стали мудрствовать лукаво и взяли за основу новой шины наработки в области сетевого оборудования. Получилось что-то очень напоминающее Gigabit Ethernet — и на физическом уровне, и на уровне протоколов передачи данных. Первое и самое главное отличие новой шины: PCI Express является последовательной, а следовательно, четко разнесены уровни представления данных и уровень их передачи. Если в параллельной шине, например, PCI, передаваемые данные непосредственно появляются на шине (вместе с какой-то дополнительной информацией — CRC, адресом получателя и подобной вспомогательной информацией), что и обуславливает простоту их посылки и получения, то в последовательной шине сказать что-либо о «физическом носителе» заранее невозможно. Информация, которую необходимо передать, просто упаковывается в пакеты, куда заносится и информация о получателе и коды обнаружения и исправления ошибок — и получившийся сплошной поток данных (где идут вперемешку данные, приложения и вспомогательная информация) уже передается — абсолютно неважно каким способом — через физическую среду.

Приемник в свою очередь распаковывает прибывшие данные, исправляет ошибки или запрашивает повторную передачу, определяет получателя и перенаправляет пакет далее. Собственно «последовательность» шины вовсе не означает что данные в ней передаются побитно (хотя в случае с PCI Express это действительно так) — последовательность понимается в смысле того, что данные и служебная информация передаются последовательно, по одним и тем же каналам данных (в отличие от параллельной передачи той же информации). Стандарт PCI Express предусматривает следующую схему организации данных (см. рис. 2).

Рис. 2. Схема организации данных в архитектуре шины PCI Express.

Не вдаваясь глубоко в технические подробности — PCI Express использует традиционную многоуровневую модель, аналогичную сетевой ISO/SOI. На самом верхнем уровне располагаются прикладные приложения, использующие данное PCI-устройство. Для них в новой схеме не изменяется ровным счетом ничего. Для передачи или приема данных через шину PCI приложения обращаются к операционной системе. Она обслуживает инфраструктуру всех PCI-устройств, обрабатывает события — подключение устройств, присвоение им уникального адреса, нахождение подходящего драйвера для работы с конкретным устройством и так далее. На этом уровне по-прежнему сохраняется стопроцентная совместимость с уже существующей моделью PCI Plug`n`Play (PnP) — все старые операционные системы как работали с PCI, так и будут работать с PCI Express. Впрочем, некоторые отличия здесь уже есть, и для полноценной реализации всех возможностей новой шины (скажем, горячего подключения устройств), не предусмотренных в предыдущем стандарте, потребуется немного доработать ОС. В случае продукции Microsoft полноценная поддержка PCI Express обещана, увы, лишь в Longhorn, но можно не сомневаться, что за остающееся до ее выхода время MS выпустит и соответствующие «заплатки» и к некоторым уже существующим системам.

Спуск еще на уровень по схеме — и мы попадаем в мир драйверов, обслуживающих конкретные устройства PCI Express. Здесь все также без изменений — разработчикам не придется изучать новую шину, совместимость с PCI стопроцентная. То есть получается, что на программном уровне отличия PCI Express от PCI очень малы — обеспечена полноценная совместимость старой и новой шин. Однако все последующие уровни уже относятся к «железной» реализации и здесь происходят кардинальные изменения.

Прежде всего, добавлено два новых уровня (Transaction Layer и Link Layer), которых иначе как TCP и IP не назовешь — выполняемые функции абсолютно те же, что и у «сетевых» аналогов. Transaction Layer получает запросы на чтение и запись от программного уровня и заведует первоначальной упаковкой данных, передачей их конкретному получателю и гарантиями корректной доставки сообщения. Проще говоря если какой-то пакет не дойдет до получателя либо получатель обнаружит в принятом пакете ошибку, то протокол транспортного уровня будет повторять его передачу до тех пор, пока пакет не будет получен — тем самым гарантируется, что передаваемый через PCI Express поток данных достигнет получателя в целостности и сохранности. Каждый пакет снабжен уникальным идентификатором. На этом уровне поддерживается 32-битная и расширенная 64-битная адресация памяти, а также четыре адресных пространства — новое «пространство сообщений» (Message Space) и три уже известных по шине PCI — память, пространство ввода/вывода и конфигурационное пространство. Пространство сообщений предназначено для упрощения формата передачи данных — замены сигналов боковой полосы (side-band) в спецификации PCI 2.2 и исключения «специальных циклов» старого формата (прерывания, запросы управления энергосбережением, сброс).

Link Layer заведует более приземленными делами - здесь указывается уникальный номер пакета (его маршрутизация осуществляется по заголовку, относящемуся к транспортному уровню), по которому контроллеры шины принимают решение о направлении пакета в конкретную физическую линию передачи данных, здесь же располагается код обнаружения и исправления ошибок в принятом пакете (CRC), номер пакета, позволяющий отличить один пакет от другого, и разная вспомогательная информация (например, удостоверяющая, что пакет не был искажен в ходе его передачи). Однако в отличие от TCP/IP, маршрутизация пакетов (принятие решений о том, на которую шину перенаправить пакет, какой из нескольких претендующих пакетов передать первым) осуществляется на транспортном уровне. Интересно также, что пакет передается только в том случае, когда поступил сигнал готовности от буфера приема. Как следствие, уменьшается число повторов пакета и шина используется более эффективно. Формат пакетов шины PCI Express показан на рис. 3 и детализирован во врезке.

Рис. 3. Формат пакетов шины PCI Express.

Формат пакетов шины PCI-Express

Frame — начальный и конечный фрейм пакета - его добавляет физический уровень для определения начала и окончания передачи пакета данных;
Packet # — номер пакета, добавляется на сетевом уровне чтобы пакеты можно было отличить друг от друга;
Header — заголовок пакета, описывает тип пакета, получателя, приоритет и другие свойства, это информация транспортного уровня;
Data — собственно данные пакеты;
CRC — контрольная сумма пакета.

Fmt — указание типа заголовка (12 или 16 байт) и признак наличия в пакете данных;
Type — тип пакета (один из четырех основных типов - Memory, I/O, Config, Message и бит, определяющий запрос это или ответ на запрос);
RequestorID — получатель пакета (шина, устройство, функция устройства);
Reserved — зарезервированное поле;
Traffic Class — используется для маршрутизации;
Address/Routing — адрес в памяти, куда предназначается пакет (32- или 64-разрядный) или иная информация о маршрутизации пакета;
Length — объем передаваемых в пакете данных;
Attr — вспомогательные атрибуты пакета (Snoop, Ordering);
Tag — идентификатор транзакции (Transaction Tag);
Reserved — зарезервированное поле;
Byte Enables — вспомогательная информация.

В самом низу этой пирамиды (рис. 2) размещается собственно физическая реализация шины передачи данных  — это две независимые дифференциальные пары проводников с импедансом 50 Ом (первая пара работает на прием данных, вторая - на передачу), данные по которым передаются с использованием избыточного кодирования по схеме «8/10» с исправлением ошибок. Если говорить более простым языком, то каждый байт (8 бит) данных, по определенной схеме кодируется 10 битами передаваемых данных (10 бит для передачи этой информации многовато, поэтому его и называют избыточным). Избыточное кодирование позволяет исправлять многие простые ошибки, неизбежные на столь высоких частотах, без привлечения протоколов вышележащих уровней и без лишних повторных передач пакетов. Кроме того, это нужно для того, чтобы уменьшить долю «постоянных» составляющих в сигнале (не более 4 нулей или единиц подряд, см. рис. 4) — обеспечить баланс дифференциальной пары по постоянному току и позволить приемнику уверенно синхронизироваться по фронтам поступающего сигнала, поскольку никакого дополнительного («внешнего») синхронизирующего сигнала от тактового генератора в PCI Express не используется.7

Рис. 4. Иллюстрация принципа кодирования 8b/10b.

В качестве рабочих напряжений выбраны уровни от 0,2 до 0,4 вольт для логического нуля и от 0,4 до 0,8 вольт для логической единицы (рис. 5). Столь низкие напряжения выбраны из расчета удобства проектирования устройств для шины PCI-Express на современных 180-, 130- и 90-нм чипах, а также с целью снижения электромагнитных наводок и потребляемой мощности.

Рис. 5. Схема и электрика шины PCI Express x1.

Как и в любой сети, передаваемые данные дополнительно нарезаются небольшими кусочками - фреймами. При тактовая частоте шины 2,5 ГГц без учета кодирования мы получим скорость передачи в 2,5 Гбит/с в каждом направлении. С учетом выбранной схемы «8/10» получается 250 Мбайт/с, однако многоуровневая сетевая иерархия не может не сказаться на скорости работы и реальная производительность шины оказывается значительно ниже — всего лишь чуть более 200 Мбайт/с в каждую сторону (в пике до 220–230 согласно документации Intel). Впрочем, даже это на 50% больше, чем теоретическая пропускная способность шины PCI. Но это далеко не предел: пожалуй, единственная интересная особенность PCI Express — возможность объединения в одну шину нескольких независимых линий передачи данных. Стандартом предусмотрено использование 1, 2, 4, 8, 16 и 32 линий — передаваемые данные поровну распределяются по ним по схеме «первый байт на первую линию, второй — на вторую, …, n-й байт на n-ю линию, n+1-й снова на первую, n+2 снова на вторую» и так далее (см. рис. 6).

Рис. 6. Асинхронная передача данных по нескольким линиям шины PCI Express.

Это не параллельная передача данных и даже не увеличение разрядности шины (поскольку все передающиеся по линиям данные передаются абсолютно независимо и асинхронно) — это именно объединение нескольких независимых линий. Причем, передача по нескольким линиям никак не влияет на работу остальных слоев «пирамиды» и реализуется сугубо на «нижнем», физическом уровне (рис. 2). Именно этим достигается великолепная масштабируемость шины PCI Express — она позволяет организовывать шины с максимальной пропускной способностью до 32x200=6,4 Гбайт/с — как раз под стать пропускной способности лучших параллельных шин сегодняшнего дня (см. также таблицу 1).8

Таблица 1. Число контактов в разъемах и полоса пропускания шин PCI, PCI-X, AGP и PCI Express

Тип слота

Число контактов в разъеме

Полоса пропускания, Мбайт/с

Теоретическая

Эффективная

PCI (32 бит 33 МГц)

120

133

~110

PCI-X (64 бит 133 МГц)

184

1064

~900

PCI Express x1

36

250*

~220*

PCI Express x4

64

1000*

~800*

PCI Express x8

98

2000*

~1600*

PCI Express x16

164

4000*

~3200*

PCI Express x32

294

8000*

~6400*

AGP 8x

124

2133

~2000

* — в каждом направлении независимо.

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 и изохронная передача данных. Подробнее об этом читайте во врезке.

Дополнительные возможности PCI Express

Стоит упомянуть и о других новых возможностях, появившихся в стандарте PCI Express (по сравнению с PCI) — поддержке виртуальных каналов, QoS (Quality of Service) и изохронной передаче данных. Начнём с рассмотрения механизма, обеспечивающего совместимость PCI Express с обычным PCI. Как мы уже заметили, сегодняшний физический уровень PCI Express обеспечивает лишь соединения «точка-точка», что вынуждает использовать для подключения множества устройств специальные свитчи, объединяя устройства в «звездную» сеть. Но «классическая» PCI — параллельная шина, к тому же использующая механизм прерываний, не поддерживаемый в PCI Express! Сравните: если в случае PCI у нас в ПК было, скажем, две шины — одна для графического адаптера (AGP), и другая — для всех остальных устройств, обращения к которым так и производились по адресу — «шина такая-то, устройство такое-то», то при переходе на PCI Express от былой топологии не остается и следа. В нашем примере (см. рисунок) появляется семь шин PCI Express (не считая шины, соединяющей северный и южный мосты чипсета), причем шесть из них относятся к единственной бывшей PCI (bus 1). К счастью, механизмы маршрутизации, заложенные в стандарт, позволяют особенно не задумываться над этим вопросом — при пересылке пакетов «свитчи» сами определят, на какую шину его необходимо передать. Отправителю достаточно указать устройство-получатель и пакет каким-то образом до него дойдет. То есть ПО теперь работает не непосредственно с аппаратурой, а с непонятно каким образом функционирующими виртуальными каналами данных (старая схема адресации «шина-устройство-функция устройства» при этом сохраняется, хотя такое разделение теперь достаточно условно). Для полной имитации «обычной» PCI-шины контроллер PCI Express даже имитирует прерывания этой шины при поступлении от устройства соответствующего сообщения (служебная информация вроде вызова прерывания также передается в виде пакетов). Впрочем, как уже говорилось, к механизму сообщений есть и прямой доступ, без использования этого режима совместимости.

Итак, с устройствами можно продолжать работать, как с обычными PCI, но «виртуальность» этой шины позволяет обеспечить большую гибкость полученной системы. Каждый виртуальный канал до устройства (напомним, что их может быть по нескольку на каждое устройство — для этого и нужна последняя компонента PCI-адреса) никак не привязан к «физическому» носителю, а значит, его можно настроить произвольным образом. Например, стандарт позволяет указывать для виртуального канала его пропускную способность и максимально допустимую задержку передачи данных по нему. Физическая среда передачи данных, конечно, накладывает некоторые ограничения на допустимые здесь значения — больше 200 Мбайт/с через PCI Express 1x при всем желании пропустить невозможно. Виртуальные каналы создаются и изменяются «на лету» — например, плата видеозахвата может большую часть времени обходиться единственным каналом доставки сообщений и запрашивать дополнительный виртуальный канал для передачи данных лишь в момент подключения к ней внешнего устройства. Если у контроллера PCI Express для создания канала не хватит физических ресурсов, то он честно об этом сообщит, но если канал будет создан, то он будет в точности отвечать запрошенным параметрам и никакие «внешние» события — активизация других PCI-устройств, действия пользователя и т.п. на него не повлияют (QoS — запрошенный сервис обладает гарантированным качеством).

Помимо каналов с гарантированной пропускной способностью PCI Express поддерживает также создание изохронных каналов — информация по ним передается с гарантированной максимальной задержкой (это нужно для устройств, работающих в режиме реального времени - например, для устройств, передающих по сети человеческую речь). Впрочем, QoS устройство может отключить (собственно при работе в режиме совместимости с PCI так и происходит), тогда «виртуальным каналам» устройства будут отводиться все остающиеся после QoS-каналов ресурсы шины. «Физическая» реализация QoS и изохронности зависит от конкретной реализации контроллеров PCI Express и использующихся «свитчей», но в конечном итоге все это сводится лишь к тому, какие из пакетов, претендующих на одновременную передачу по одной и той же шине, контроллер пошлет в первую очередь, а какие — лишь по мере возможности. Возможный вариант: изохронные пакеты идут «вне очереди», остальное время пропорционально делится между устройствами, требующими некоторую заданную полосу пропускания и лишь все, что остается распределяется между «обычными», не приоритетными пакетами данных, которые передаются в порядке их поступления в контроллер.

В новой шине также поддерживаются режимы пониженного энергопотребления — в полном соответствии с «четырехуровневыми» стандартами ACPI. Линия PCI Express может «отключаться», если она не используется в данный момент для передачи данных — отключаются линии передачи тактового сигнала, линии приема и передачи данных (и вместе с ними могут отключаться и приемник и передатчик в PCI-Express контроллере), с устройства может быть снято питание — целиком (устройство «логически выключено») или частично (остается маломощное дежурное напряжение питания, функционирует «линия пробуждения» WAKE#, по которой передается сигнал на перевод устройства в нормальный рабочий режим). Если шина состоит из нескольких линий, то при небольшой загрузке шины можно отключать ненужные в данный момент линии (например, использовать PCI Express x4 как x1, а три линии выключить). Переключение в «энергосберегающий» режим при этом может потребовать как само устройство PCI Express, так и «система» в целом — скажем, при переходе в «спящий режим» (hibernate). В «десктопных» вариантах шины PCI Express энергосберегающие режимы являются необязательными (то есть могут быть реализованы, а могут и нет), но в мобильных описанные возможности являются обязательными.

Читать дальше >>>


7. Шина PCI Express полностью исключает использование дополнительных физических линий (тактовых, сигналов ошибок, изменения режимов и прерываний) — все это перенесено на логический уровень. В случае, когда несколько сигнальных линий (каналов шины) работают параллельно, они имеют одинаковую тактовую частоту. Допустимо также применение «размывания» спектра сигнала (Spread Spectrum — отклонение частоты тактового генератора вблизи опорного значения). [вернуться]

8. Напомним, что у AGP 8X она составляет 2,1 Гбайт/с, у PCI-X — лишь 1066 Мбайт/с (если не учитывать реализаций PCI-X 266 и PCI-X 533), а у двухканальной системной памяти DDR400 и системной шины современных Pentium 4 — как раз 6,4 Гбайт/с. [вернуться]

Аппаратные конфигурации

В плане практической реализации шина PCI Express представляет собой целый аппаратный комплекс, затрагивающий северный и южный мосты чипсета, коммутатор и конечные устройства. Новым термином здесь является коммутатор (switch). Он заменяет одну шину с множественными подключениями коммутируемой технологией (рис. 7).

Рис. 7. Обобщенная схема использования шин
и устройств PCI Express в компьютере или сервере.
Шины PCI Express показаны оранжевым цветом.

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

Примерные схемы включения PCI Express в различные типовые вычислительные системы выглядят следующим образом (на рисунках шины PCI Express показаны оранжевыми линиями).

Рис. 8. Использование PCI Express
в настольных компьютерах.
Шины PCI Express показаны оранжевым цветом.

В «десктопных» системах шина PCI-Express 16x в первую очередь вытеснит AGP 8x в качестве «графиеской шины», соединяющей видеокарту и северный мост чипсета. Во вторую очередь на PCI-Express пересадят многие интегрированные устройства — гигабитный сетевой контроллер, RAID-контроллер и прочие. К обычным PCI-слотам добавят пару PCI-Express x1. В качестве межчипсетной шины (соединяющей мосты чипсета) PCI Express будет выступать вместе со старыми шинами (Intel HubLink, VIA VLink, SiS MuTIOL) — производители чипсетов пока не желают отказываться от своих проприетарных шин.

Рис. 9. Использование PCI Express в серверных системах.
Шины PCI Express показаны оранжевым цветом.

С серверными архитектурами все проще — там не предусматривается традиционной «двухмостовой» чипсетной схемы. На PCI-Express переведут интегрированные гигабитные сетевые контроллеры; традиционные периферийные шины (PCI-X, SATA, LPC) сохранятся, но к чипсету будут подключаться через специальные мосты на шину PCI Express. Аналогичная схема предусмотрена для сетевых решений — но в силу специфики периферии там новая шина вытеснит практически все остальные.

Рис. 10. Использование PCI для сетевых коммуникаторов.
Шины PCI Express показаны пурпурным цветом.

Как видно из этих рисунков, PCI Express предполагается использовать для связи всех ключевых компонентов системы, кроме «внешних» (USB 2.0) и накопителей на магнитных дисках (SATA как более подходящий для работы именно с HDD). Некоторое время слоты PCI и PCI-X продолжат свое существование (они будут подключаться через специальные мосты PCI-to-PCI Express), но почти все интегрированные контроллеры будут подключаться уже с использованием PCI Express. В том числе, PCI Express свяжет между собой северный и южный мосты чипсета. Поскольку реализация что шины AGP, что предназначающейся ей на смену PCI Express x16 требует весьма сложной разводки9, то слот AGP из будущих чипсетов исчезнет полностью. Впрочем, SiS, VIA и ALi/ULi на первых порах будут выпускать чипсеты с шиной AGP и PCI Express x1, но без PCI Express x16. Например, на фото показан сэмпл платы на одном из таких новых чипсетов от ALi.

Рис. 11. Чипсет ALi M1683 с южным мостом ALi M1566
для Pentium 4 с шинами AGP и PCI Express x1.

См. далее «Часть 2. PCI Express на практике — что нас ожидает?»


9. А, возможно, причина и не только в сложности подобного решения — PCI Express видеокарта послужит хорошим «локомотивом» перехода на новую шину). [вернуться]

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.