
- •5.2.3 История развития параллельных интерфейсов
- •Шины pci и pci-X.
- •Спецификации pci и pci-X.
- •Взаимодействие устройств на шине pci
- •Сигналы и транзакции шины pci.
- •5.2.4 Шина pci-Express.
- •Pci Express — ключевые отличия от pci
- •Элементы и топология соединений pci Express
- •Архитектурная модель pci Express.
- •Надежность передачи и целостность данных
Архитектурная модель pci Express.
Уровень транзакций (transaction layer) — верхний уровень архитектуры, отвечающий за сборку и разборку пакетов TLP (Transaction Layer Packet — пакет уровня транзакций). Эти пакеты используются для транзакций чтения и записи, а также для сообщений о событиях некоторых типов. Каждый пакет TLP имеет уникальный идентификатор, который позволяет направить ответный пакет его отправителю. Уровень транзакций отвечает и за управление потоком.
Канальный уровень (data link layer), промежуточный в стеке, отвечает за управление связью, обнаружение ошибок и организацию повторных передач вплоть до успеха или признания отказа соединения. К пакетам, полученным от уровня транзакций, канальный уровень добавляет свои заголовки (номера пакетов и контрольные коды). Канальный уровень и сам является генератором и получателем пакетов DLLP (Data Link Layer Packet — пакет канального уровня), используемых для управления соединением.
Физический уровень (physical layer) изолирует канальный от всех подробностей передачи сигналов. Он состоит из двух субблоков.
Логический субблок при передаче выполняет распределение данных по линиям, скремблирование, кодирование по схеме 8В/10В1, кадрирование и преобразование в последовательный код. При приеме выполняются обратные действия. Символы, добавляемые при кодировании 8В/10В, используются для служебной сигнализации. Логический субблок отвечает и за согласование соединения, инициализацию и т. п.
Электрический субблок отвечает за электрическое согласование, синхронизацию, обнаружение приемника. Уровневая модель, принятая в PCI Express, позволяет, не затрагивая остальных уровней, сменить физический уровень или его субблоки, когда появятся более эффективные схемы кодирования и сигнализации. Интерфейс между физическим и канальным уровнями зависит от реализации этих компонентов и выбирается их разработчиком. Интерфейс физического уровня четко специфицирован, что обеспечивает возможность соединения устройств разного происхождения. Для тестирования на соответствие электрическим параметрам достаточно подключить устройство PCI Express к специальному тестеру.
Надежность передачи и целостность данных
Уровень транзакций формирует пакеты TLP, в которых содержатся код команды, адресная информация, данные и некоторые другие поля.
Для обеспечения надежной доставки пакетов TLP канальный уровень при передаче снабжает их своим заголовком, содержащим 12-битный последовательный номер TLP, и 32-битным полем LCRC (CRC канального уровня). Таким образом, канальный уровень к каждому пакету TLP добавляет 6 байт накладных расходов. На каждый пакет TLP передатчик должен получить положительное подтверждение Ack — пакет канального уровня (DLLP). Если подтверждение не приходит, то механизм тайм-аута заставляет передатчик повторить посылку пакета. Предусмотрен и пакет отрицательного подтверждения Nak, вызывающий повторную передачу без ожидания.
Физический уровень вводит свое обрамление передаваемых пакетов: перед началом пакета передается специальный символ STP (для TLP-пакета) или SD(для DLLP-пакета); после пакета — символ END. Эти специальные символы отличаются от символов, представляющих данные после кодирования 8В/10В.
Для обеспечения надежности транзакций и целостности данных применяется CRC-контроль всех транзакций и управляющих пакетов. Запросчик считает транзакцию выполненной по получении подтверждающего сообщения от исполнителя (подтверждение отсутствует только для записей, отправленных в основную память). Обработка ошибок в минимальном варианте аналогична PCI, причем обнаруженные ошибки отображаются в конфигурационных регистрах функций (в регистре состояния). Расширенные возможности сообщений об ошибках дают исходную информацию для развитых процедур изоляции отказов и восстановления, а также мониторинга и регистрации (logging) ошибок.
Ошибки делятся на три группы, что позволяет использовать адекватные процедуры восстановления:
исправимые (correctable) ошибки автоматически вызывают аппаратную процедуру восстановления (повтора) и не требуют программного вмешательства для нормального исполнения транзакции;
неисправимые фатальные (fatal) ошибки для надежного возобновления работы требуют сброса, в результате которого могут пострадать транзакции, не имеющие прямого отношения к ошибке;
неисправимые нефатальные (non-fatal) ошибки не требуют сброса для возобновления работы — в результате этих ошибок могут быть потеряны лишь несколько транзакций, затронутых ошибкой.