Особенности интерфейса PCI Express

Разработчики интерфейса PCI Express не стали мудрствовать лукаво и взяли за основу нового интерфейса наработки в области сетевого оборудования. Получилось что-то очень напоминающее интерфейс Gigabit Ethernet — и на физическом уровне, и на уровне протоколов передачи данных.

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

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

 

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

 

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

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

 

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

Кадр (Frame) — начальный и конечный фрейм пакета - его добавляет физический уровень для определения начала и окончания передачи пакета данных.

Порядковый номер (Рacket #) — номер пакета, добавляется на сетевом уровне чтобы пакеты можно было отличить друг от друга.

Заголовок (Header) — заголовок пакета, описывает тип пакета, получателя, приоритет и другие свойства, это информация транспортного уровня.

Данные (Data) — собственно данные пакета.

CRC — контрольная сумма пакета.

 

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

Избыточное кодирование позволяет:

исправлять многие простые ошибки, неизбежные на столь высоких частотах, без привлечения протоколов вышележащих уровней и без лишних повторных передач пакетов;

уменьшить долю «постоянных» составляющих в сигнале (не более 4 нулей или единиц подряд, рис. 26.3);

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

 

Значение байта 00H

Значение байта в кодировке 8b/10b

 

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

 

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

Рис. 26.4. Схема и электрические соединения интерфейса PCI Express x1

 

При тактовой частоте первой версии интерфейса 2,5 ГГц без учета кодирования достигается скорость передачи в 2,5Г бит/с в каждом направлении. С учетом выбранной схемы кодирования «8/10» получается 250М байт/с, однако многоуровневая сетевая иерархия не может не сказаться на скорости работы и реальная производительность интерфейса оказывается значительно ниже — всего лишь чуть более 200М байт/с в каждую сторону (в пике до 220–230). Впрочем, даже это на 50% больше, чем теоретическая пропускная способность интерфейса PCI.

Но это далеко не предел: пожалуй, одна из интересных особенностей интерфейса PCI Express — возможность объединения в один интерфейс нескольких независимых линий передачи данных. Стандартом предусмотрено использование 1, 2, 4, 8, 16 и 32 линий — передаваемые данные поровну распределяются по ним по схеме «первый байт на первую линию, второй — на вторую, …, n-й байт на n-ю линию, n+1-й снова на первую, n+2 снова на вторую» и так далее (рис. 26.5).

 

 

Рис. 26.5. Асинхронная передача данных по нескольким линиям интерфейса PCI Express

 

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

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

Впрочем, на схеме рис. 26.1 физический уровень не зря «троится» — на самом деле в качестве «физического носителя» в интерфейсе PCI Express может выступать что угодно, хоть тот же Gigabit Ethernet.

Это позволяет по мере развития электроники наращивать частоту интерфейса (в интерфейсе PCI Express 3.0 она равна 8 ГГц, что уже вплотную приближается к теоретическому пределу передачи сигнала по медным проводникам, оцениваемому в 15–20 ГГц) без малейшего ущерба для совместимости с приложениями и драйверами.

 

 








Дата добавления: 2015-09-29; просмотров: 1516;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.