Шина PCI Express(3GIO)

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

Шина PCI хорошо служила нам последние 10 лет и будет играть важную роль в течение еще нескольких. Но, нынешние и «завтрашние» процессоры и устройства ввода-вывода требуют гораздо большей пропускной способности, чем может обеспечить PCI 2.2 или PCI-X, так что пришло время для разработки следующего поколения PCI, которое будет служить в качестве стандартной шины ввода-вывода для новых систем. Уже было предпринято несколько попыток увеличения пропускной способности шины, которые привели к появлению в PC платформах специализированных шин, которые сосуществуют вместе с шиной расширения ввода-вывода PCI, как показано на рисунке.

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

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

Но это только половина проблемы, вторая заключается в том, что существует множество разновидностей PCI несовместимых между собой (например, PCI устройства для использования в мобильных компьютерах).

Современные приложения более зависимы от аппаратных средств, и в частности, от подсистемы ввода-вывода. Обработка потоков данных от различных аудио и видео источников являются теперь обычным делом для мобильных или настольных систем, но в стандарте PCI 2.2 или PCI-X нет встроенных механизмов для поддержки время-связанных данных. Многие приложения связи и системы контроля, так же должны передавать и обрабатывать данные в режиме «реального времени». Современные системы, как показано на рисунке 2, должны одновременно обрабатывать несколько конкурирующих потоков данных от разных источников. Более неприемлемо трактовать все данные, как одинаковые – более важно, например, обработать потоковые данные, поскольку устаревшие данные «реального времени» абсолютно бесполезны. Данные должны быть «помечены» таким образом, чтобы система ввода-вывода могла назначить им правильные приоритеты обработки.

Следующий список суммирует основные требования к третьему поколению системы ввода-вывода.

Универсальность:

Унификация архитектуры ввода-вывода для настольных, мобильных, серверных, встроенных и коммуникационных систем.

Низкая стоимость:

Цена не должна быть выше, чем у существующей сейчас PCI шины.

Программная модель, совместимая с существующим PCI:

Загрузка существующих ОС без изменений.

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

Производительность:

Масштабируемая производительность посредством увеличения частоты и кол-ва каналов передачи данных.

Последние достижения в высоко-скоростных, мало-контактных (low-pin-count), «точка-точка» технологиях предлагают возможности для увеличения пропускной способности шины ввода-вывода. Множественные соединения «точка-точка» влекут за собой появление в топологии ввода-вывода нового элемента – коммутатора (switch), см. рисунок 3.

Коммутатор может обеспечивать обмен данными между конечными потребителями-источниками, и если их трафик не затрагивает оперативную память, то и нет необходимости передавать его через Host Bridge.

Рисунки с 4-го по 6-ой, показывают типичное использование архитектуры PCI Express.

Архитектура PCI Express определяется слоями (layers), как показано на рис. 7.

 

Для обеспечения совместимости с существующими приложениями и драйверами сохранена модель адресации PCI. Конфигурация PCI Express использует стандартный механизм PCI Plug-and-Play. Программный уровень генерирует запросы на чтение и запись, которые передаются уровнем транзакций устройствам ввода-вывода с использованием пакетно-ориентированного, с разделяемыми транзакциями (split-transaction) протокола. Уровень «Link” добавляет последовательный номер и CRC код (код контроля ошибок ), что обеспечивает высоконадежный механизм передачи. Физический уровень состоит из двух каналов, которые реализованы, как передающая пара и принимающая пара. Начальная скорость в 2.5 Giga transfers/second/direction обеспечивает канал связи с пропускной способностью в 200MB/s, что почти в 2 раза больше, чем у PCI.

Основной канал PCI Express сотсоит из двух низковольтных, дифференциальных пар сигналов: передающая пара и принимающая пара (см. рис. 8). Начальная частота в 2.5 Giga transfers/second/direction может быть увеличена до 10 Giga transfers/second/direction (это теоретический предел частоты для медного проводника).

Пропускная способность PCI Express канала может быть линейно увеличена за счет добавления сигнальных пар. «Физический» слой поддерживает x1, x2, x4, x8, x12, x16 и x32 сигнальных пар в одном канале и распределяет байты данных внутри канала, как показано на рис. 9.

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

Основное назначение слоя «Link” заключается в обеспечение правильной передачи пакета данных через канал PCI Express. Этот слой отвечает за целостность данных и добавляет к пакету данных порядковый номер и CRC код (код контроля ошибок ), см. рисунок 10.

Большинство пакетов инициируются слоем транзакций ("Transaction Layer"), описанным в следующем разделе. Протокол передачи передает пакеты только в том случае, когда приемный буфер свободен, это позволяет избежать повторных передач данных и разгружает шину. Повторная передача поврежденных пакетов, так же обеспечивается Link слоем.

Слой транзакций принимает запросы на чтение/запись от программного слоя и создает пакеты для передачи слою связи. Все запросы реализуются в виде раздельных транзакций. Некоторые из этих пакетов, требуют ответных пакетов, которые принимаются от слоя связи и проверяются на соответствие начальному запросу программного слоя. Каждый пакет имеет уникальный идентификатор, который позволяет отправить ответный пакет правильному адресату. Формат пакетов поддерживает 32bit и 64bit адресацию. Пакеты так же имеют такие атрибуты, как «no-snoop”, “relaxed-ordering” и “priority”, которые могут использоваться для оптимизации передачи через подсистему ввода/вывода.

Слой транзакций поддерживает четыре адресных пространства: три PCI (память, I/O и конфигурация) и пространство сообщений («Message Space”). В стандарте PCI 2.2 был предложен альтернативный способ распределения системных прерываний, называемый Message Signaled Interrupt (MSI). Спецификация PCI Express использует концепцию MSI в качестве основного метода распределения прерываний.

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

Архитектура PCI Express отвечает всем требованиям, предъявляемым к третьему поколению систем ввода/вывода. Ее расширенные функции и масштабируемая производительность позволяет ей стать унифицированным решением для множества платформ – настольных, мобильных, серверных, устройств связи и встраиваемых устройств. Канал PCI Express образуется из нескольких точка-точка соединений, называемых “lanes”, а несколько “lanes” могут быть объединены в одном канале, пропускная способность которого имеет линейную масштабируемость. PCI Express программно совместим с существующим ПО и обеспечивает расширенные возможности для нового ПО.

 

.