ИнтерфейсPCI-Express (PCI-XP, PCI-e).Основные характеристики (особенности)
1. С точки зрения функционального назначения интерфейс PCI-XP - системный интерфейс.
2. Интерфейс объединяет следующие типы устройств, рис.:
- ядро или корневой комплекс (Rootcomplex );- переключатели (Switch);- конечные точки (Endpoint), последние подразделяются на традиционные конечные точки (Legancyendpoint) и PCI-XP конечные точки (PCI-XPendpoint );
- шлюзы (мосты) PCI-XP к PCI (PCI-XPBridgetoPCI), на рис. не показаны .
И содержит в общем случае корневой комплекс, несколько переключателей, несколько конечных точек и соединительные кабели.
.
С точки зрения топологии связей интерфейс PCI-XP - древовидный интерфейс.
3. С точки зрения принципа обмена информацией интерфейс PCI-XP - интерфейс с последовательной передачей информации (бит за битом).
4. Скорость передачи информации в линии 2,5 Гбит/С.
5. Битовая скорость передачи информации в канале равна:
- 0,5 Гбайт/с (2,5 Гбит/с х 2 = 5 Гбит/с = 0,5Гбайт/с) при использовании двух витых пар на канал (х1)
- 1 Гбайт/с (2,5 Гбит/с х 4 = 10 Гбит/с = 1Гбайт/с) при использовании 4 витых пар на канал (х2)
- 2 Гбайт/с (2,5 Гбит/с х 8 = 20 Гбит/с = 2Гбайт/с) при использовании 8 витых пар на канал (х4)
- 4 Гбайт/с (2,5 Гбит/с х 16= 40 Гбит/с = 4Гбайт/с) при использовании 16 витых пар на канал (х8)
- 6 Гбайт/с (2,5 Гбит/с х24 = 60Гбит/с = 6Гбайт/с) при использовании 24 витых пар на канал (х12)
- 8 Гбайт/с (2,5 Гбит/с х32 = 80 Гбит/с = 8Гбайт/с) при использовании 32 витых пар на канал (х16)
- 16 Гбайт/с (2,5 Гбит/с х64 = 160 Гбит/с = 16Гбайт/с) при использовании 64 витых пар на канал (х32)
6. В простейшем случае (х1) в канале две дифференциальные линии, каждая из которых предназначена для передачи в симплексном режиме (передаваемые данные Tx и принимаемые данные Rx)
7. Обмен транзакционный. Возможны непочтовые транзакции(с уведомлением, с возвратом данных) и почтовые транзакции (без уведомления, без возврата данных)
8. Типы транзакций:
- запись/чтение памяти
- запись/ чтение устройств ввода-вывода
- запись/чтение пространства конфигурации
- передача сообщений
9. Интерфейс поддерживает 32-х и 64-х разрядную адресацию.
Разрядность передаваемых данных одно двойное слово 1DW(32) и два двойных слова 2DW(64).
10. Реализуются все транзакции обмена данными, свойственные PCI (См. пункт 8), и добавляется передача сообщений.
11. Обеспечивается совместимость программного обеспечения на уровне ядра PCI-XP с PCI .
12. Поддерживаются изохронные передачи информации (передачи информации в реальном масштабе времени).
13. Поддерживаются различные режимы качества обслуживания введением восьми классов трафика (8TC) и обеспечением восьми классов виртуальных каналов (8VC).
14. Защищенность адресных пространств, что обеспечивается отдельными адресными пространствами памяти ввода-вывода и конфигурации.
15. В интерфейсе PCI-XP используется протокол прерывания, сигнализируемый сообщением, что уменьшает задержку на обработку прерываний и устраняет необходимость в специальных линиях для сигналов прерывания.
16. В интерфейсе реализована идея разделения устройств на уровни (транзакционный уровень TL, уровень передачи данных DLL, физический уровень PL)
17. Поддерживается технология PlugandPlay.
18. Автоматический контроль потребляемой мощности с автоматическим переходом из режима высокого потребления в режим низкого потребления и наоборот.
19. Кодирование информации на физическом уровне 8b/10b.
20. Применение скремблированиядля решения проблем электромагнитной совместимости.
21. Обеспечивается гальваническая развязка между отдельными устройствами, связанными интерфейсом .
22. Длина линий связи в пределах канала до 0,75 м.
Конструкция модуля PCI-XP совместима с конструкцией модуля PCI и PCI-X
Вопрос 15
Транзакция в интерфейсе PCI-XP определяется как последовательность нескольких (в частном случае одного) пакетов информации между запросчиком и комплитором.
В качестве запросчика может выступать и корневой комплекс, и конечная точка. В качестве комплитора может выступать и корневой комплекс, и конечная точка, и переключатели, и шлюзы.
Последовательность пакетов состоит из пакета-запроса и в общем случае нескольких пакетов-завершения.
Пакет-запрос содержит командную, маршрутную информацию и, в случае транзакции записи, пересылаемые данные.
Пакет-завершение содержит маршрутную информацию, необходимую для маршрутизации пакета-завершение обратно к запросчику. Пакет-завершение проходит тот же путь и последовательность переключателей в обратном порядке, что и пакет-запрос. Кроме этого он содержит передаваемые данные в случае транзакции чтения.
И пакет-запрос, и пакет-завершение содержат одинаковый тег (метку), чтобы определить их принадлежность к одной транзакции.
Различают непочтовые и почтовые транзакции.
В непочтовых транзакцияхзапросчик передает пакет-запрос комплитору. В ответ комплитор посылает пакет-завершение (в общем случае, пакеты-завершения) запросчику, которые содержат уведомление о получении пакета-запроса. В дополнение пакет-завершение в транзакции чтения содержит запрашиваемые данные. В транзакции записи данные содержатся в пакете-запросе.
В почтовых транзакцияхзапросчик передает лишь пакет-запрос комплитору.
Типы пакетов-запросов, пакетов-завершения и принятые для них обозначения приведены в табл
Все транзакции делятся на 4 категории. В табл. приведены категории и типы почтовых и не почтовых транзакций, а также типы пакетов их образующих.
Категория транзакции | Транзакция | Тип транзакции | Запросчик | Комплитор | Покет-запрос (тип пакета) | Пакет-завершение (типпакета) |
транзакциипамяти | чтениепамяти | непочтовая | корневойкомплекс , конечнаяточка | корневой комплекс, конечная точка, переключатель, мост | MRd (00000) | CplD (01010) илиCpl (01010) |
записьпамяти | почтовая | корневойкомплекс, конечнаяточка | корневойкомплекс , конечнаяточка | MWr (00000) | ||
чтение памяти с блокиров-кой | не почтовая | корневойкомплекс | традиционнаяконечнаяточка | MRdLk (00001) | CplDLk (01011) илиCplLk (01011) | |
транзакцииустройствввода-вывода | чтение IO | непочтовая | корневойкомплекс , конечнаяточка | корневой комплекс , конечная точка, переключатель, мост | IORd (00010) | CplD (01010) илиCpl (01010) |
записьIO | непочтовая | корневойкомплекс , конечнаяточка | корневой комплекс , конечная точка, переключатель, мост | IOWr (00010) | Cpl (01010) | |
транзакцииконфигурирования | конфигурационное чтение (тип 0 и тип 1) | непочтовая | корневойкомплекс | корневой комплекс , конечная точка, переключатель, мост | CfgRd0 (00100), CfgRd1 (00101) | CplD (01010) илиCpl (01010) |
конфигурационная запись (тип 0 и тип 1) | непочтовая | корневойкомплекс | корневой комплекс , конечная точка, переключатель, мост | CfgWr0 (00100), CfgWr1 (00101) | CplD (01010) илиCpl (01010) CplDLk (01011) илиCplLk (01011) | |
транзакциисообщений | сообщение | почтовая | корневойкомплекс , конечнаяточка | корневойкомплекс , конечнаяточка | Msg (10RRR), MsgD (10RRR) |
Вопрос 16
Функционально любое устройство с интерфейсом PCI-XP (корневой комплекс, конечная точка, переключатель, мост) описываются многоуровневой структурой, каждый уровень которой выполняет определенные функции в процессе передачи пакетов информации, образующих транзакции.
Собственно интерфейс PCI-XP устройства описывается тремя уровнями:
- транзакционным уровнем (TransactionLayer),
- уровнем передачи данных (DataLinkLayer),
- физическим уровнем (PhysicalLayer).
Каждый уровень устройства подразделяется на две части. Передающая часть (T), которая обрабатывает исходящий трафик и принимающая часть (R), которая обрабатывает входящий трафик.
Пакет передаваемой информации, перемещаясь по уровням передающей части устройства от транзакционного уровня к физическому уровню через уровень передачи данных, инкапсулируется (обрамляется соответствующим заголовком и хвостовиком) на каждом уровне.
При перемещении пакета по уровням принимающей части устройства от физического уровня к транзакционному уровню через уровень передачи данных пакет декапсулируется (удаляются соответствующий заголовок и хвостовик) на каждом уровне. Помимо информационных пакетов уровни передачи данных и физические уровни устройств, связанные каналом, декапсулируется (овню через уровень передачи даннмхот уровня остовикомобмениваются служебными пакетами.
Вопрос 17
Рассмотрим пакеты информации на каждом уровне и функции этих уровней.
Ядро или программный уровень (DeviceCore/SoftwareLayer) устройства на передающей стороне сообщает транзакционному уровнюинформацию для формирования пакета транзакционного уровня, а именно: тип транзакции, адрес абонента, количество данных, класс трафика, индекс сообщения и сами данные.
В передающей части, например, прибора А на транзакционном уровне из информации для формирования пакета,поступающей из ядра прибора (DeviceCore) формируется пакет транзакционного уровня (к данным добавляется заголовок и хвостовик) и образованный пакет буферизируется для передачи в нижестоящий уровень. Пакет транзакционного уровня обозначается как TLP(TransactionLayerPacket).
На приемной стороне ядра прибора эта же информация возвращается из транзакционного уровня.
Пакет транзакционного уровня TLP, состоит из заголовка, поля данных и формируемого на этом уровне поля контрольной последовательности ECRC(End-to-EndCRC). Некоторые пакеты могут и не содержать поле данных
На уровне передачи данных к пакету TLP присоединяется соответствующий заголовок и хвостовик. В последнем записывается информация, необходимая для контроля ошибок в принимающем приборе, например в приборе Б. Этот пакет называется TLP пакетом уровня передачи данных, обозначается как TLP(DLL), и содержит поле последовательностного номера (SequenceNumber), пакет TLP и поле контрольной последовательности LCRC. Поле LCRC вычисляется на уровне канала данных контролем полей последовательностного номера (SequenceNumber) и пакета TLP.
На физическом уровне к пакету TLP(DLL) присоединяется свой соответствующий заголовок и хвостовик. Этот пакет называется TLP пакетом физического уровня и обозначается TLP(PL).Пакет TLP(PL), состоит из стартового байта (Start), поля пакета TLP(DLL) и оконечного байта (End).
Затем именно этот пакет TLP(PL) передается по физической среде (полосковой линии связи, кабелю) в последовательной форме, начиная со старшего бита стартового байта, в принимающее устройство соседнего прибора Б.
В принимающей части соседнего прибора Б приемник физического уровня дешифрирует входящий последовательный пакет TLP(PL). Пакет проверяется на отсутствие ошибок и, если ошибок нет, то из него исключаются заголовок и хвостовик (ограничивающие флаги) и в форме пакета TLP(DLL) последний передается на уровень передачи данных прибора Б.
На уровне передачи данных полученный пакет TLP(DLL) проверяется на отсутствие ошибок и декапсулируется (отбрасывается заголовок и хвостовик пакета TLP(DLL)) и в форме пакета TLP передается на транзакционный уровень.
Если принимающее устройство – переключатель тогда пакет направляется от одного входного порта переключателя в выходной порт основываясь на адресной информации содержащейся в заголовке пакета TLP.
На транзакционном уровне полученный пакет проверяется на отсутствие ошибок и при отсутствии ошибок поле данных пакета (без заголовка и хвостовика) передается в ядро прибора Б.
Таким образом, данные ядра прибора А передаются в ядро прибора Б, образуя трафик передаваемых данных. Асинхронно с этим процессом может происходить встречный процесс передачи данных из ядра прибора Б в ядро прибора А.
Вопрос 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 маршрутизация),
– тип транзакции (чтение или запись памяти, цикл конфигурации и т.д.),
- полезная информация (если необходима пересылка информации)
– класс виртуального канала (для потока данных)
– атрибуты передачи
2. Транзакционный уровень строит пакет TLP, включающий заголовок TLP, полезную информацию и контрольную последовательность ECRC.
3. Когда пакет TLP получен уровнем передачи данных, последний строит пакет TLP(DLL). Для полученного пакета TLP рассчитывается контрольная последовательность ECRC и ему присваивается последовательностный номер; Затем пакет TLP(DLL) передаётся физическому уровню.
- На физическом уровне к пакету TLP(DLL) присоединяются контрольные символы STR(открывающий флаг) и END (закрывающий флаг), т.е. строится пакет TLP(PL); смотри рис 2.5.2.
- Далее выполняется разделение пакета на байты (bytestriping), скремблирование, кодирование и сериализация (преобразование параллельного кода в последовательный). Пакет бит за битом посылается в линию связи.
- На физическом уровне приёмника устройства Б выполняются десериализация (преобразование последовательного кода в параллельный), поиск обрамляющих символов и соединение байтов (byteun-striping) в пакет. На этом же уровне производится первый поиск ошибок (в управляющих кодах).
- Уровень передачи данных приёмника Б рассчитывает LCRC и сравнивает с принятым значением. Он также проверяет последовательностный номер принятого TLP(DLL) на нарушение очередности поступления пакетов. Если нет ошибок, он пропускает TLP на транзакционный уровень приёмника. Уровень передачи данных приёмника также уведомит передатчик об успешном или неудачном завершении процесса передачи пакета TLP(DLL), послав служебные Ack или Nak пакеты DLLP передатчику. В случае Nak (пакет с ошибкой) передатчик устройства А пошлёт тот же пакет TLP(DLL) ещё раз из своего буфера повторной передачи.
4. На транзакционном уровне информация декодируется и поступает в ядро приемного устройства Б.
Целостность данных при передаче по линии связи поддерживается тремя особенностями пакетного протокола PCI -XP:
- формат пакета полностью определён,
- обрамляющие символы указывают на границы пакета,
- CRC защищает целостность пакета.
Пакеты транзакционного уровня состоят в общем случае из трех полей: заголовка, данных и краткого описания (или ECRC– последовательности) .Заголовок пакета TLP размером 3DW или 4DW (12 или 16 байт). Его формат зависит от типа пакета. Заголовок определяет параметры транзакции: тип транзакции, адрес назначенного приёмника, идентификатор ID передатчика, размер передачи данных (если есть), побайтовый доступ, атрибуты порядка, атрибуты когерентности памяти типа кеш, класс потока данных. Поле данных (необязательное поле) длиной 0-1024 DW. Поле краткого описания - необязательное поле. Если поле представлено, то всегда имеет размер одно DW. Используется для сквозной CRC –последовательности (ECRC).
Вопрос 19
Основная обязанность уровня передачи данных интерфейса PCI-XP состоит в сохранении целостности пакета TLP, когда тот перемещается между устройствами. Этот уровень так же имеет обязанности по инициализации линий связи и управления энергией, включая отслеживание состояния линий связи и прохождение сообщений.
Исполняя свою роль, уровень передачи данных обменивается потоком пакетов TLP(DLL) со своим соседом, используя пакеты уровня передачи данных (DLLP). Пакеты DLLP берут начало и завершаются на уровне передачи данных каждого устройства, без привлечения уровня транзакций. Пакеты DLLP и TLP(DLL) перемежаются в линии связи. Пакеты DLLP имеют простой формат пакета. В отличие от пакетов TLP(DLL), они не несут информации об адресате из-за того, что они используются для общения только с ближайшими соседями.
Пакеты DLLP формируются на стороне передатчика, например, устройства А и уничтожаются на стороне приёмника устройства Б. Эти пакеты берут начало на уровне передачи данных и проходят на физический уровень. Там, перед тем, как пакет DLLP будет послан, к нему добавляются обрамляющие символы.STR и END, т.е. формируется пакет DLLP(PL); смотри рис.2.5.2.
Пакеты уровня передачи данных DLLP могут быть четырех типов:
- типа ACK или NAK,
- типа управления энергией,
- типа контроля прохождения TLP и
- типа, определяемого разработчиком.
Следующие правила применяются, когда пакет DLLP посылается устройством-источником А устройству- приёмнику Б:
1. Все полученные приемным устройством пакеты DLLP(PL) проверяются. Проверка включает поиск управляющих символов на физическом уровне, за ним следует CRC проверка на уровне передачи данных приёмника. 16 бит CRC – последовательность рассчитываются источником и посылаются с пакетом, приёмник рассчитывает свою собственную проверочную сумму пакета DLLP и сравнивает с принятым значением. Любой DLLP, не прошедший проверку CRC считается ошибочным и “отбрасывается”.
2. При отсутствии ошибок определяется тип пакета DLLP и он обрабатывается в соответствии со следующей логикой:
– пакеты DLLP управления энергией обрабатываются аппаратно схемой управления энергией устройства;
– пакеты DLLP контроля прохождения пакетов TLP обрабатываются уровнем транзакций, так что его значение может быть изменено;
– квитанционные пакеты DLLPAck и Nak направляются к передающему интерфейсу уровня передачи данных, вследствие чего пакеты TLP(DLL) в буфере повтора могут быть сброшенными или могут быть посланными ещё раз.
Пакет DLLP состоит из заголовка длиной одно DW и 16- битовой CRC последовательности, используемой для контроля содержимого заголовка DLL; Расчет CRC выполняется по содержимому байтов 0-3 заголовка.
Вопрос 20