Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интерфейсы.docx
Скачиваний:
2
Добавлен:
30.08.2019
Размер:
1.73 Mб
Скачать

Вопрос 18

Пакет транзакционного уровня Два устройства PCI-XP могут обмениваться тремя классами пакетов. Это пакеты транзакционного уровня (TLP(PL)), пакеты уровня передачи данных (DLLP(PL)) и пакеты физического уровня (PLP); смотри рис.

В совокупности, различные пакеты (TLP(PL), DLLP(PL) и PLP) позволяют двум устройствам надёжно проводить транзакции памяти, устройств ввода-вывода, конфигурации, а так же использовать сообщения для инициации событий управления возможностями генерации прерываний, сообщения об ошибках и так далее.

Транзакции берут начало в ядре передающего устройства и завершаются в ядре приёмного устройства. Транзакционный уровень это начальная точка сборки (assembly) пересылаемых пакетов TLP и конечная точка разборки (disassembly) принимаемых пакетов TLP . Основные стадии протокола формирования пакетов транзакционного уровня перечислены ниже.

  1. Ядро, например, устройства А передаёт запрос на обслуживание к аппаратно-программному интерфейсу PCI-XP. Как именно это делается не оговорено в cпецификации интерфейса PCI-XP и определяется особенностями конкретного устройства А. Основная информация, содержащаяся в запросе, следующая:

  • команда PCI-XP, которая должны быть выполнена,

  • начальный адрес или идентификатор ID адресата (если используются адресная или ID маршрутизация),

  • тип транзакции (чтение или запись памяти, цикл конфигурации и т.д.),

- полезная информация (если необходима пересылка информации)

  • класс виртуального канала (для потока данных)

  • атрибуты передачи

  1. Транзакционный уровень строит пакет TLP, включающий заголовок TLP, полезную информацию и контрольную последовательность ECRC.

  2. Когда пакет TLP получен уровнем передачи данных, последний строит пакет TLP(DLL). Для полученного пакета TLP рассчитывается контрольная последовательность ECRC и ему присваивается последовательностный номер; Затем пакет TLP(DLL) передаётся физическому уровню.

  1. На физическом уровне к пакету TLP(DLL) присоединяются контрольные символы STR(открывающий флаг) и END (закрывающий флаг), т.е. строится пакет TLP(PL); смотри рис 2.5.2.

  2. Далее выполняется разделение пакета на байты (bytestriping), скремблирование, кодирование и сериализация (преобразование параллельного кода в последовательный). Пакет бит за битом посылается в линию связи.

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

  4. Уровень передачи данных приёмника Б рассчитывает LCRC и сравнивает с принятым значением. Он также проверяет последовательностный номер принятого TLP(DLL) на нарушение очередности поступления пакетов. Если нет ошибок, он пропускает TLP на транзакционный уровень приёмника. Уровень передачи данных приёмника также уведомит передатчик об успешном или неудачном завершении процесса передачи пакета TLP(DLL), послав служебные Ack или Nak пакеты DLLP передатчику. В случае Nak (пакет с ошибкой) передатчик устройства А пошлёт тот же пакет TLP(DLL) ещё раз из своего буфера повторной передачи.

  1. На транзакционном уровне информация декодируется и поступает в ядро приемного устройства Б.

Целостность данных при передаче по линии связи поддерживается тремя особенностями пакетного протокола PCI -XP:

- формат пакета полностью определён,

- обрамляющие символы указывают на границы пакета,

- CRC защищает целостность пакета.

Пакеты транзакционного уровня состоят в общем случае из трех полей: заголовка, данных и краткого описания (или ECRC– последовательности) .Заголовок пакета TLP размером 3DW или 4DW (12 или 16 байт). Его формат зависит от типа пакета. Заголовок определяет параметры транзакции: тип транзакции, адрес назначенного приёмника, идентификатор ID передатчика, размер передачи данных (если есть), побайтовый доступ, атрибуты порядка, атрибуты когерентности памяти типа кеш, класс потока данных. Поле данных (необязательное поле) длиной 0-1024 DW. Поле краткого описания - необязательное поле. Если поле представлено, то всегда имеет размер одно DW. Используется для сквозной CRC –последовательности (ECRC).