Реклама:

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

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

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

Сейчас предлагается несколько вариантов решения указанных проблем, но, скорее всего, победителем в конкурентной борьбе окажется технология PCI Express, которую активно продвигает Intel. Несмотря на название, она не имеет почти ничего общего с шиной PCI; более того - это вообще не шина. Тем не менее маркетологи решили не избавляться от названия "РС1" - благо, оно у всех на слуху. Некоторые ПК уже сейчас поддерживают эту технологию. Посмотрим, что она собой представляет.

Архитектура PCI Express

Суть технологии PCI Express заключается в замене параллельной шины с ее многообразием задающих и подчиненных устройств высокоскоростными двухточечными последовательными соединениями. Это решение знаменует собой окончательный отход от шинной топологии, реализованной в шинах ISA/EISA/PCI, и переход на топологию локальных сетей (особенно коммутируемых сетей Ethernet). Основная идея такова: по сути, ПК - это набор микросхем процессора, памяти и устройств ввода-вывода, которые необходимо соединить между собой. С учетом этого обстоятельства PCI Express выполняет роль универсального коммутатора, соединяющего микросхемы по последовательным каналам. Стандартная конфигурация PCI Express изображена на рис. 3.53.

PCI Express

Рис. 3.53. Стандартная компоновка системы PCI Express

Как видно из рисунка, процессор, память и кэш подключены к мосту традиционным способом. Новым элементом здесь является подключенный к мосту коммутатор (иногда он встраивается непосредственно в микросхему моста). Между каждой микросхемой устройства ввода-вывода, с одной стороны, и коммутатором, с другой, устанавливается двухточечное соединение. Любое такое соединение состоит из двух однонаправленных каналов - по одному в каждом из направлений между устройством и коммутатором. Каналы состоят из двух проводов (сигнального и заземляющего), что обеспечивает высокую помехозащищенность в ходе высокоскоростной передачи сигналов. Такая архитектура отличается от предыдущей большей унификацией и равноправием всех устройств.

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

Помимо вышеперечисленных наиболее важных изменений, есть и менее заметные. В частности, в пакетах использован более надежный по сравнению с PCI код обнаружения ошибок. Далее, до 50 см увеличилась физическая длина соединения между микросхемой и коммутатором, за счет чего стало удобнее менять положение компонентов системы. Поскольку к базовому коммутатору можно подключить другой коммутатор, сформировав, таким образом, древовидную структуру, повышается степень расширяемости системы. Кроме того, устройства в рамках PCI Express поддерживают "горячее" подключение, а значит, их можно снимать и монтировать непосредственно в процессе работы. Наконец, так как последовательные коннекторы значительно меньше старых PCI-коннекторов, ничто не мешает производителям разрабатывать компактные устройства и компьютеры. Таким образом, налицо решительный отказ от принципов работы шины PCL

Стек протоколов PCI Express

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

Стек протоколов PCI Express изображен на рис. 3.54, а.

PCI Express

Рис. 3.54. Стек протоколов PCI Express (а); формат пакета (б)

Рассмотрим уровни по восходящей. Самым нижним является физический уровень. Он отвечает за передачу битов от отправителя к получателю по двухточечному соединению. Каждое такое соединение состоит из одной или нескольких пар симплексных (однонаправленных) каналов. В простейшем случае на каждое направление выделяется по одной паре, но также допустимо наличие 2, 4, 8, 16 или 32 пар. Каналы, входящие в пары, называются полосами (lanes). На каждое направление должно быть выделено одинаковое количество полос. В первом поколении предусматривается скорость передачи данных от 2,5 Гбайт/с для каждого направления, но через некоторое время эта цифра, вероятно, дойдет до 10 Гбайт/с.

В отличие от шин ISA, EISA и PCI, в технологии PCI Express не предусмотрен тактовый генератор. Устройства вправе начинать передачу в любой момент, как только им будет, что передавать. Такая свобода, с одной стороны, повышает быстродействие, с другой, порождает проблему. Предположим, что 1 кодируется напряжением +3 В, а 0 - напряжением 0 В. Если первые несколько байтов равны нулю, как получатель узнает о том, что ему передаются данные? Действительно - последовательность нулевых битов трудно отличить от простоя канала. Эта проблема решается при помощи так называемой 8/10-разрядной кодировки. Согласно этой схеме, 1 байт фактических данных кодируется при помощи 10-разрядного символа. Из 1024 возможных 10-разрядных символов выбираются такие, которые за счет достаточного количества фронтов без задающего генератора обеспечивают синхронизацию отправителя и получателя по границам битов. В силу применения 8/10-разрядной кодировки суммарная пропускная способность канала, равная 2,5 Гбайт/с, сужается до фактической пропускной способности 2 Гбайт/с.

Канальный уровень отвечает за передачу пакетов. На этом уровне к заголовку и полезной нагрузке, переданным с уровня транзакций, добавляется порядковый номер и код исправления ошибок - так называемый CRC (Cyclic Redundancy Check - циклический контроль избыточности). CRC-код генерируется путем выполнения определенного алгоритма в отношении заголовка и полезной нагрузки. По получении пакета устройство проводит аналогичные вычисления с заголовком и данными и сравнивает результат с величиной, указанной в пакете. Если два результата совпадают, первоначальному отправителю отсылается пакет подтверждения правильности полученных данных. В противном случае получатель делает запрос на повторную передачу. Таким образом, значительно повышаются показатели целостности данных по сравнению с шиной PCI, в которой не реализованы средства контроля и повторной передачи данных.

Во избежание перегрузки медленного получателя пакетами, исходящими от быстрого отправителя, реализуется механизм управления потоками. Этот механизм основывается на выдаче получателем отправителю определенного количества разрешений на передачу пакетов - в зависимости от объема свободного пространства, необходимого для их хранения. Исчерпав ранее выданные разрешения, отправитель должен приостановить передачу и дождаться новых разрешений. Такая схема, распространенная во всех сетях, предотвращает потерю данных вследствие несовпадения скоростей отправителя и получателя.

На уровне транзакций выполняются все операции шины. К примеру, для считывания слова из памяти нужно выполнить две транзакции, из которых одну инициирует процессор или канал DMA, запрашивающий данные, другую - целевой объект (поставщик данных). Впрочем, чтение и запись - не единственные операции, которые выполняются на уровне транзакций. Этот уровень, в частности, расширяет возможности передачи пакетов, предоставляемые канальным уровнем. Каждая полоса на уровне каналов подразделяется на несколько (до восьми) виртуальных каналов, по каждому из которых передаются данные того или иного типа. На уровне транзакций пакеты маркируются согласно классу трафика, определяющему ряд свойств, таких как "высокий приоритет", "низкий приоритет", "запрет слежения", "допускается доставка вне последовательности" и т. д. Выстраивая порядок обработки пакетов, коммутатор, помимо прочего, основывается на информации из маркеров.

Любая транзакция проходит в одном из четырех адресных пространств:

+ пространство памяти (при выполнении стандартных операций чтения и записи);

+ пространство ввода-вывода (для адресации регистров устройств);

+ конфигурационное пространство (для инициализации системы и т. д.);

+ пространство сообщений (для отправки сигналов, прерываний и т. д.).

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

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

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

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

Структура PCI Express довольно сложна. Ее подробное описание имеется в работах [138, 192].

Шина PCI || Оглавление || Шина USB