Главная      Учебники - Разные     Лекции (разные) - часть 21

 

Поиск            

 

«PC` компьютерных шин и замена pci»

 

             

«PC` компьютерных шин и замена pci»

Министерство образования и науки Украины

Запорожский Национальный Технический Университет

Кафедра КСС

на тему «PC`

компьютерных шин и замена PCI»

по дисциплине «Периферийные устройства»

Выполнил: ст. гр. ИВТ-533

Карпычев В.В.

Проверил: Рыбин В.О.

г. Запорожье

2005 г.

Содержание

Вступление………………………………………………………………………...3

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

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

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

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

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

Разъемы PCI Express……………………………………………………………..17

Мобильные графические модули MXM………………………………………..20

PCI Express на практике. Что нас ожидает?.…………………………………...22

Краткие итоги……………………………………………………………………25

Список используемых источников……………………………………………..26

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

Вступление

В качестве темы данного а я выбрал шину PCI Express. На мой взгляд, необходимость детального обзора технологии PCI Express назрела уже давно, поскольку в самом ближайшем времени на рынке ожидается появление не только чипсетов и материнских плат с поддержкой этой шины, но и всевозможных плат расширения — видеокарт и контроллеров (прежде всего, сетевых и дисковых). На данный момент, одним из наиболее активных апологетов продвижения на рынок шины PCI Express является корпорация Intel, хотя исходно архитектура будущей PCI Express была предложена несколько лет назад рабочей группой Arapahoe, основанной компаниями Compaq, Dell, IBM, Intel и Microsoft при участии организации PCI-SIG. В этом е я сделал попытку собрать вместе наиболее важные сведения об устройстве, назначении, достоинствах, недостатках и грядущих перспективах на рынке «третьего поколения шин ввода-вывода».

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

PCI Express призвана заменить шину PCI, исправно работающую в компьютерной технике уже более десяти лет. Напомню, что шина Peripheral Components Interconnect (PCI) в свое время пришла на смену «первому поколению» — шине Industrial Standard Architecture (ISA). Однако на сей раз изменения при переходе на новый стандарт куда большие, чем при переходе от 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. Поскольку себестоимость производства чипа сегодня все равно выходит примерно одинаковой (если не считать экономию на «ножках микросхемы»), то порой дешевле делать более сложный кристалл контроллера шины, чем плодить золотые контакты и многочисленные проводники на печатной плате. Поэтому стремление разработчиков перейти на параллельные шины довольно естественно даже хотя бы сточки зрения экономии средств (экономия контактов и места на разводку собственно шины, см. врезку). С другой — последовательную шину гораздо проще заставить работать на повышенных тактовых частотах, поэтому удается не только скомпенсировать падение, но даже значительно поднять производительность. Более того, отличная масштабируемость последовательных шин вроде 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 появилась только сегодня — раньше для нее просто не было достаточных технических предпосылок.

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

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

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

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

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

Спуск еще на уровень по схеме — и мы попадаем в мир драйверов, обслуживающих конкретные устройства 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 не используется.

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

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

Как и в любой сети, передаваемые данные дополнительно нарезаются небольшими кусочками - фреймами. При тактовая частоте шины 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).

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

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

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

Таблица 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 энергосберегающие режимы являются необязательными (то есть могут быть реализованы, а могут и нет), но в мобильных описанные возможности являются обязательными.

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

В плане практической реализации шина 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) — производители чипсетов пока не желают отказываться от своих проприетарных шин.

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

Рис. 9. Использование PCI Express в серверных системах.
Шины 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.

Разъемы PCI Express

Разъемы PCI Express по ширине и форме не сильно отличаются от PCI и располагаются в тех же местах на системной плате (фото 1).

Условно разъем делится на две части — через первую (она ближе к задней стенке корпуса) поступает питание, а вторая (близкая к чипсету и отделенная ключом) — собственно интерфейсная (рис. 2).

Аббревиатуры: GND (Ground) — «земля», SMCLK и SMDAT — (System Management Bus) Clock и Data — опорный сигнал и сигнал данных, JTAG1-JTAG5 — контакты интерфейса JTAG, WAKE# — линия сигнала пробуждения устройства, PRSNTn# — (Present) — n-я линия обнаружения установленной платы PCI Express (по одной на каждый уровень — x1, x4, x8, x16), PWRGD — Power Good, REFCLK — Reference Clock, опорный тактовый сигнал шины, HSIp(k)-HSIn(k) — k-я линия приема данных, HSOp(k)-HSOn(k) — k-я линия передачи данных.

Рис. 1. Разъемы PCI Express x1 и x16 рядом с обычным PCI.

Рис. 2. Цоколевка слотов PCI Express x1 и x4.
Желтым цветом обозначены контакты,

по которым передаются данные.

Важным отличием является то, что длина интерфейсной части разъемов PCI Express варьируется в зависимости от числа линий — x1 совсем крошечная, x16 сопоставима по размерам с обычным слотом PCI или AGP, ну а слот x32 по размерам получится даже больше разъемов PCI-X (см. таблицу 1 и фото 3). Впрочем, в реальных устройствах x32 мы увидим еще не скоро. Установить более быструю плату в более медленный разъем (x4 в x1, например) не получится — она просто туда не влезет; а вот установка «медленной» платы (например, x1) в «быстрый» слот (x4, x8 или x16) не должна вызывать проблем (при этом она, естественно, будет работать на низшей скорости).

Рис. 4. Разъемы PCI Express. Слева направо и снизу вверх: x1, x4, x8, x16 и x32.
Вверху — ExpressCard двух размеров.

На каждую пару сигнальных проводников в разъемах PCI Express приходится по две «земли», экранирующих данную линию. За счет этого количество контактов разъема возрастает, хотя если сопоставить число контактов у шин PCI Express и соответствующих им по быстродействию параллельных шин, выигрыш будет очевидным (см. таблицу 1). Помимо них, естественно, разводится питание +12 и +3,3 вольт (уровень +5 В теперь отсутствует), линия «дежурного» питания (тоже 3,3 В) и некоторые специальные линии — SMBus, JTag (рис. 2). Точно так же, как линии приема и передачи разводятся дифференциальные линии передачи тактового сигнала REFCLK (два проводника и две земли, хотя этот сигнал не используется при передаче данных). Для реализации «горячего подключения» и определения типа установленной карты разводятся линии обнаружения карты PRSNT; для реализации «спящего режима» — линия «пробуждения» WAKE. Конечно, для внутрисистемных межсоединений эти линии можно не разводить; впрочем, они и занимают не так уж много места. И уж во всяком случае, разводить несколько независимых линий по два проводника + «земля» проще, нежели одну широкую шину.

В число «приятных особенностей» новых слотов без сомнения можно отнести изначально присутствующую возможность «горячего подключения» устройств — это нужно, в основном, для серверных и мобильных систем. В будущем обещают появление специальных боксов для удобной установки новых устройств «на лету» и для обычной персоналки. Еще из приятного — сильно возросшие возможности схем питания: на слот x1 подается до 10 ватт, на слот x4 — до 25 ватт, а на x16 — аж до 75 ватт, причем стандартом предусмотрена возможность установки на материнскую плату второго коннектора питания, аналогичного тому, который уже присутствует в разъеме. Суммарно эти два коннектора прокормят настоящую печку — до 140 ватт почти любой из современных видеокарт еще достаточно далеко. Соответственно изменятся требования и к системе питания компьютеров: стандартный 20-контактный разъем питания ATX 2.01 увеличивается на четыре контакта (усиление шин +12, 5,0 и +3,3 вольт), а необходимая мощность блоков питания устанавливается на уровне 300 Вт.

Стандартизованы и размеры для карт PCI Express — их высота составит 106,7 мм; длина — произвольная, но не более 312 мм (и, кстати, судя по фотографиям серверных RAID-контроллеров, это, похоже, не предел). Как и с PCI, предусмотрен «узкий» low-profile-вариант (64,4мм). Кроме того, разъемы PCI Express смогут иметь специальные защелки для надежного крепления карт.

Ну а мобильные пользователи получат превосходную замену старой доброй PCMCIA (CardBus) в виде вдвое более компактной ExpressCard, где достоинства PCI Express проявятся в полной мере — скорость работы намного вырастет (до уровня шины PCI Express x1), карты можно будет безбоязненно вставлять и вынимать не выключая ноутбук, уже есть вариант платы двойной ширины — с двумя разъемами, она имеет ширину прежней PCMCIA (см. фото 3 и 4).

Рис. 4. Карты ExpressCard двойной и одинарной ширины.

Мобильные графические модули MXM

Недавно компания NVIDIA представила новый (открытый, предусмотрена совместимость с чипами ATI) стандарт на графические модули для ноутбуков. Он получил название MXM (Mobile PCI-Express Module). В его основе заложена шина PCI Express x16, что по идее Nvidia, должно облегчить процесс создания и модернизации видеосистем у ноутбуков. То есть это новый стандарт для ноутбучных графических плат стандарта PCI Express. На модулях MXM помимо собственно графического контроллера будут устанавливаться микросхемы памяти. Разъем MXM содержит 230 контактов, среди которых линии как для самой шины PCI Express x16, так и для других интерфейсов — LVDS, VGA, SDTV, HDTV и два DVI.

Модуль MXM.

Если стандарт MXM будет принят рынком, то, используя модули MXM, ноутбуки могут быть легко модернизированы и переконфигурированы (расширение линейки продукции). Сейчас стандарт существует в виде трех разновидностей: MXM-I (70x68 мм) для легких ноутбуков, MXM-II (73x78 мм) для ноутбуков среднего класса и MXM-III (82x100 мм) для наиболее производительных систем (desktop replacement). Эти спецификации отличаются друг от друга не только размерами (форм-фактором), но и требованиями к энергопотреблению (до 18, 25 и 35 Вт, соответственно) и охлаждению графических модулей.

PCI Express на практике. Что нас ожидает?

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

Фото 1.

Индустрия дружно рапортует о полной готовности к использованию шины PCI Express. Например, только во время трехдневного февральского Intel Developer Форума было более сорока пресс-релизов и демонстраций самых различных продуктов для PCI Express: от аппаратных средств отладки и системных плат на чипсетах Intel (см. фото 1) до самых разнообразных контроллеров (графических, сетевых, SCSI, InfiniBand и RapidIO). Наиболее интересными из них являются система редактирования HDTV-видео на ПК с PCI Express от ATI/Pinnacle, мультиканальная PCI Express-видеосистема HDTV от Philips, а также самый компактный в мире гигабитный Ethernet-микроконтроллер Yukon-EC от Marvell (фото 2), который уже взяли на вооружение для своих материнских плат компании ASUSTeK, ECS, Gigabyte и MSI (Intel тоже предлагает аналогичный микроконтроллер). У Nvidia и ATI уже есть свои видеокарты для PCI Express, причем у Nvida — полная линейка GeForce PCX от самых дешевых (PCX 4300) и средних (PCX 5300) до дорогих PCX 5950/5750. Неплохо обстоят дела и с серверными компонентами — там присутствуют всевозможные 1- и 10-гигабитные сетевые решения, контроллеры InfiniBand и RapidIO и SCSI-RAID контроллеры жестких дисков от Adaptec и LSI для шины PCI Express x8 (см. фото 3 и обзоры на www.terralab.ru/system/29386 и www.terralab.ru/system/32360/page2.html).

Фото 2.

Фото 3.

Еще больше продуктов для PCI Express было показано во время недавней выставки CeBIT 2004. Прежде всего, это многочисленные материнские платы на чипсетах Intel Alterwood и Grandsdale от всех ведущих производителей. Их официальный выход состоится, по всей видимости, в начале лета этого года. На первых десктопных материнских платах с PCI Express будут установлены один-два (изредка четыре) разъема x1 и обязательный разъем x16 для видеокарты (поскольку шина AGP этими чипсетами уже не будет поддерживаться). Кроме того, шина PCI Express будет использоваться для соединения между собой северного и южного мостов. По-прежнему на плате будет от одного до четырех-пяти слотов PCI для прежней периферии.

Чипсеты для серверов и рабочих станций на базе Intel Xeon с поддержкой PCI Express (Lindenhurst и Tumwater) тоже подготовлены, продемонстрированы Intel и партнерами в работе и вот-вот должны быть выпущены на рынок. Как и в настольных системах, шина между северным и южным мостом заменена на PCI Express, чипсет для рабочих станций имеет шину x16 вместо AGP, пара разъемов x4 соседствует с традиционными слотами PCI-X, интегрированные контроллеры частично переведены на прогрессивный стандарт.

Более того, на 2005 год намечен выпуск PCI Express-систем на Intel Itanium.

Впрочем, пропускной способности обычной шины PCI (до 133 Мбайт/с) пока еще хватает для многих применений. Среди приоритетных направлений применения PCI Express можно выделить шесть основных:

1. Трехмерные графические контроллеры (видеокарты).
2. Гигабитные и более быстрые полнодуплексные сетевые контроллеры (от 100 Мбайт/с в каждом направлении).
3. Контроллеры RAID-массивов жестких дисков (ATA, SATA и SCSI). Здесь 100–130 Мбайт/с достигаются шутя, нетрудно получить и намного большие скорости. Одно название Ultra320 SCSI говорит само за себя.
4. Сверхвысокоскоростные специализированные устройства ввода-вывода, критичные к прерываниям потока данных: индустриальные ЦАП и АЦП, контроллеры видеозахвата и видеовывода (например, HDTV).
5. Контроллеры быстрых внешних серверных соединений (FibreChannel, InfiniBand, RapidIO).
6. Внутренние соединения высокоскоростных компонентов компьютера — южного моста с северным, мостов для других шин, свитчей.

Очевидно, что большинство из этих применений пока критичны лишь для серверных и профессиональных систем, и куда менее важны для персональных - для локальной сети Fast Ethernet11 пока вполне достаточно, RAID является в наших краях довольно редким гостем (и в своем домашнем варианте неплохо уживается и с шиной PCI), а профессиональным видеомонтажом занимаются немногие. Маркетологи, правда, ухватились за четвертый пункт, но скажите, вы часто занимаетесь обработкой несжатого видеопотока, тем более — рекламируемого HDTV, требующего помимо профессиональной платы видеозахвата специальной высокопроизводительной дисковой подсистемы (диска так на четыре SCSI по 10-15K RPM), соответствующего объема памяти и процессора? Правда, PCI Express в отношении к видео и новому поколению ТВ-тюнеров имеет одно важное преимущество — она может обеспечить непрерывный одновременный двунаправленный поток данных, что важно именно для таких применений.

А отказ от использования AGP и вовсе можно назвать форменным безобразием — переход с AGP 8X на PCI Express x16, безусловно, повысит пропускную способность шины (см. таблицу 1), но ведь предыдущее удвоение скорости шины AGP (с 4x до 8x) не принесло пока сколько-нибудь видимой прибавки скорости (в большинстве тестов разница между «быстрым» и «медленным» решением с легкостью укладывается в 0,5%), так что если видеокарты на PCI Express и заработают быстрее, то по совершенно иным причинам, нежели большая «скорострельность» новой шины. Между тем форменный отказ от шины AGP (которую собираются быстро и бесшумно «похоронить») приведет к тому, что провести дешевый апгрейд на «топовую» конфигурацию скоро станет затруднительно. Поскольку выпускать графические чипы для обеих шин — себе в убыток, то все видеокарты будущего, скорее всего, будут исключительно в исполнении PCI Express. Производители видеокарт, правда, выкручиваются из положения, создавая специальные переходники, позволяющие «легким движением руки» сделать из AGP-видеокарты PCI-Express-вариант (подход, хорошо отработанный на SATA-винчестерах) и наоборот — «переносить» новые варианты на старую шину. Первый подход пока больше свойственен NVIDIA с HSI Bridge, горячий сторонник второго — канадская ATI. В любом случае подход явно искусственный и, скорее всего, ничего хорошего пользователям не сулящий (возросшие цены, возможные проблемы совместимости, отсутствие всех преимуществ «полноценного» PCI Express). Единственное реальное преимущество — видеокарте больше не потребуется дополнительный коннектор питания.

Краткие итоги

Как бы мы не относились к новой шине, постепенный переход на PCI Express практически неизбежен. Технология очень интересная, с огромным потенциалом и отличными возможностями — прекрасный преемник «старичка» Peripheral Component Interconnect на ближайшие 8–10 лет. Возможно, чуть преждевременная для «обычных пользователей», но совершенно неизбежная. Если же рассматривать возможных конкурентов — шины PCI-X, HyperTransport или RapidIO, то война не состоится — уж слишком все эти шины различны и нацелены каждая на свой «кусок пирога» (сегмент рынка), хотя у PCI Express этот «кусок», безусловно, самый смачный, а применение остальных шин достаточно специфично. AMD уже поддержала стандарт PCI Express (продолжая развитие своего HT, разумеется). Так и напрашивается аналогия с противостоянием замечательного интерфейса FireWire (IEEE1394/b) и USB 2.0. Первый всем был хорош, да только так и остался узкоспециализированным решением, задавленным бесплатным «ставленником» Intel. Что касается возможности применения PCI Express в качестве шины памяти или процессора (системной), то это совершенно отпадает, поскольку ее текущие возможности (максимум 6,4 Гбайт/с) явно не способны удовлетворить будущим запросам эти шин. В этом смысле, шинам AMD HyperTransport и Rambus Redwood/XDR явно нечего бояться.

Список используемых источников

1. http://www.terralab.ru

2. http://www.thg.ru

3. http://citforum.ru