Транзакции на интерфейсе

Глава 26. Интерфейс PCI Express

Транзакции на интерфейсе

Транзакция (операция обмена какими либо данными) на интерфейсе включает в себя две части: посылку запроса и прием (или посылку) данных. Транзакции обычно определяются характером взаимодействия. Например, транзакция с оперативной памятью типа "Чтение" передает данные из оперативной памяти (либо в процессор, либо в устройство ввода-вывода), транзакция типа "Запись" записывает данные в оперативную память.

Количество главных устройств интерфейса (bus master). Главное устройство интерфейса - это устройство, которое может инициировать транзакции чтения или записи. Процессор, например, всегда является главным устройством всех интерфейсов. Интерфейс имеет несколько главных устройств, если имеется несколько процессоров или когда устройства ввода-вывода могут инициировать транзакции на интерфейсе. Если имеется несколько таких устройств, то требуется схема арбитража, чтобы решить, кто следующий захватит интерфейс.

Различают два типа транзакций, а именно: транзакции с расщеплением и транзакции без расщепления.

Например, операция «Чтение» в транзакциях с расщеплением (split transaction) разбивается на транзакцию запроса чтения, которая содержит адрес, и транзакцию ответа оперативной памяти, которая содержит данные. Каждая транзакция теперь должна быть помечена (тегирована) соответствующим образом, чтобы источник транзакции и оперативная память могли сообщить - что есть что.

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

Расщепленные транзакции делают интерфейс доступным для других главных устройств, пока оперативная память читает слово по запрошенному адресу. Это, правда, также означает, что процессор должен бороться за интерфейс для посылки данных, а оперативная память должна бороться за интерфейс, чтобы вернуть данные. Таким образом, интерфейс с расщеплением транзакций имеет более высокую пропускную способность, но обычно он имеет и большую задержку, чем интерфейс без расщепления транзакций. Транзакция называется расщепленной, поскольку произвольное количество других пакетов или транзакций могут использовать интерфейс между запросом и ответом.