Уровень транзакций формирует пакеты TLP, в которых содержатся код команды, адресная информация, данные и некоторые другие поля. Для обеспечения надежной доставки пакетов TLP канальный уровень при передаче снабжает их своим заголовком, содержащим 12-битный последовательный номер TLP, и 32-битным полем LCRC (CRC канального уровня). Таким образом, канальный уровень к каждому пакету TLP добавляет 6 байт накладных расходов. На каждый пакет TLP передатчик должен получить положительное подтверждение Ack — пакет канального уровня (DLLP). Если подтверждение не приходит, то механизм тайм-аута заставляет передатчик повторить посылку пакета. Предусмотрен и пакет отрицательного подтверждения Nak, вызывающий повторную передачу без ожидания.
Физический уровень вводит свое обрамление передаваемых пакетов: перед началом пакета передается специальный символ STP (для TLP-пакета) или SDP (для DLLP-пакета); после пакета — символ END. Эти специальные символы отличаются от символов, представляющих данные после кодирования 8В/10В.
Рассмотрев структуры пакетов, можно оценить «скорострельность» базового соединения PCI Express (разрядность — 1 бит, скорость — 2,5 Гбит/с).
Самая короткая транзакция — запись двойного слова в пространство ввода-вывода — в прямом канале транзакций записи в порт занимает 128 не (0,128 мке), в обратном — 80 + 32 = 112 не. Если подсчитать максимальную скорость передачи данных при непрерывных записях в порт, получаем v = 4/0,128 = 31,25 Мбайт/с. При этом будет занят и встречный канал с коэффициентом загрузки 112/128 = = 0,875. Результат по скорости близок к возможностям стандартной шины PCI (32 бит и 33 МГц), в которой такая транзакция требует четырех тактов шины. Чтение портов ввода-вывода на PCI Express даст те же результаты (на PCI результат будет хуже).
Теперь возьмем самый выгодный (в состязаниях по производительности) вариант транзакции: запись в память пакета 1024 двойных слов (с короткой 32-битной адресацией). Здесь скорость передачи данных составляет 4096/16,5 « 248 Мбайт/с — это уже уровень производительности PCI (32 бит и 66 МГц) при длинных пакетных передачах. Загрузка встречного канала подтверждениями канального уровня в этом случае пренебрежимо мала. Скорость чтения из памяти будет немного ниже, поскольку каждая транзакция чтения состоит из двух пакетов TLP — запроса чтения и пакета завершения с данными.
Если встречный канал удается загрузить полезным трафиком, то можно говорить об удвоении пропускной способности PCI Express за счет возможности работы в полнодуплексном режиме. Однако в примере с записью в порт ввода-вывода о таком удвоении речи быть не может, поскольку встречный канал загружен довольно плотно. Если пересчитать полезную скорость на один сигнальный контакт разъема, то в самом выгодном полнодуплексном варианте получаем 248 х 2/4 = 124 Мбайт/с на контакт. Для сравнения можно взять вариант PCI-X533, обеспечивающий пиковую скорость записи, приближающуюся к 533 х 4 = 2132 Мбайт/с. В операциях чтения памяти PCI-X выглядит гораздо скромнее — пиковая скорость всего 533 Мбайт/с. При этом используется около 50 сигнальных контактов (не считая многочисленных земляных), так что на каждый контакт приходится примерно по 10-40 Мбайт/с. В порте AGP при той же пиковой скорости сигналов еще больше, так что заявления о высокой эффективности использования контактов в PCI Express имеют под собой основу. Полнодуплексный режим работы ни в PCI/PCI-X, ни в AGP невозможен.
Напомним, что данные подсчеты производились для базового соединения (xl, 1 линия); применив интерфейс х32 (32 линии), можно получить максимальную скорость записи в память 248 х 32 = 7936 Мбайт/с. А если брать полную загрузку полнодуплексного соединения, то PCI Express может обеспечить суммарную пропускную способность 15 872 Мбайт/с. Таким образом, в самом мощном варианте PCI Express оставляет далеко позади порт AGP с его пиком 2132 Мбайт/с. Правда, говорить о малом числе контактов уже не приходится — канал PCI Express х32 требует 2 х 2 х 32 - 128 сигнальных контактов (в AGP их меньше). В настоящее время на системных платах вместо AGP стали устанавливать PCI Express xl6.