<<
>>

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

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

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

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

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

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

[1] Гбайт/с.

В отличие от шин 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].

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Стек протоколов PCI Express:

  1. Глава 4. Киотский протокол в Украине
  2. § 6. Протокол судебного заседания
  3. Судебные протоколы вообще
  4. Пример обработки протокола.
  5. Базовый протокол устранения проблемы с BSFF
  6. В. Г. Олифер, Н. А. Олифер. 54 Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд, 2006
  7. Определение пятое
  8. Основания
  9. Определение семнадцатое
  10. 3.1. Общие положения
  11. Основания
  12. Основания
  13. §60. ЗАКЛЮЧЕНИЕ ДОГОВОРА