Арбитражем запросов на
использование шины PCI
занимается специальный функциональный
узел, входящий в состав чипсета системной
платы. Каждое устройство-инициатор имеет
пару сигналов - REQ# для запроса на управление
шиной и GNT# - подтверждение предоставления
управления шиной. Схема приоритетов (фиксированный,
циклический, комбинированный) определяется
программированием арбитра.
Каждое устройство - потенциальный
инициатор обмена (PCI Master) имеет собственный
программируемый таймер MLT (Master Latency Timer),
определяющий максимальное количество
тактов шины, допустимое для одной
транзакции. Программированием его значения
при конфигурировании устройств
осуществляется распределение полосы
пропускания шины между абонентами шины.
Каждое целевое устройство имеет
инкрементный механизм слежения за
длительностью циклов (Incremental Latency Mechanism),
который не позволяет интервалу между
соседними фазами данных в пакете превышать
8 тактов шины. Если целевое устройство не
успевает работать в таком темпе, оно
обязано останавливать транзакцию.
Шина
PCI все транзакции трактует как пакетные:
каждая транзакция начинается фазой (циклом)
адреса, за которой может следовать одна или
несколько фаз данных. Для адреса и данных
используются общие мультиплексированные
линии AD. Четыре мультиплексированные линии
С/ВЕ|3:0| используются для кодирования команд
в фазе адреса и разрешения байт в фазе
данных. В начале транзакции инициатор
активизирует сигнал FRAME#, по шине AD передает
целевой адрес, а по линиям C/BE# информацию о
типе транзакции (команде). Адресованное
целевое устройство отзывается сигналом DEVSEL#,
после чего инициатор может указать на свою
готовность к обмену данными сигналом IRDY#.
Когда к обмену данными будет готово и
целевое устройство, оно установит сигнал TRDY#.
Данные по шине AD могут передаваться только
при одновременном наличии сигналов IRDY# и TRDY#.
С помощью этих сигналов инициатор и целевое
устройство согласуют свои скорости, вводя
такты ожидания. На рис. 1 приведена
временная диаграмма обмена, в которой и
инициатор, и целевое устройство вводят
такты ожидания. Если бы они оба ввели
сигналы готовности в конце фазы адреса и не
снимали их до конца обмена, то в каждом
такте после фазы адреса передавались бы по
32 бита данных, что и обеспечило бы выход на
предельную производительность обмена.

Рис.
1. Цикл обмена на шине PCI
Количество
фаз (циклов) данных в пакете заранее не
определено, но перед последним циклом
инициатор обмена при введенном сигнале IRDY#
снимает сигнал FRAME#. После последней фазы
данных инициатор снимает сигнал IRDY# и шина
переходит в состояние покоя (PCI Idle)-оба
сигнала FRAME# и IRDY# находятся в пассивном
состоянии. Максимальное количество циклов
данных в пакете может быть неявно
ограничено таймером, определяющим
максимальное время, в течение которого
инициатор может пользоваться шиной.
Инициатор
завершает транзакцию по одной из трех
причин:
Протокол
квитирования обеспечивает надежность
обмена - инициатор всегда получает
информацию об отработке транзакции целевым
устройством. Средством повышения
надежности (достоверности) является
применение контроля паритета: линии АD|31:0| и
С/ВЕ#|3:0| и в фазе адреса, и в фазе данных
защищены битом паритета PAR (количество
единичных бит этих линий, включая PAR, должно
быть четным). Действительное значение PAR
появляется на шине с задержкой в один такт
относительно линий AD и С/ВЕ#. При
обнаружении ошибки целевым устройством со
сдвигом еще на один такт вырабатывается
сигнал PERR#. В подсчете паритета при передаче
данных учитываются все байты, включая и
недействительные (отмеченные высоким
уровнем сигнала C/BE#i).
Одной
из особенностей компьютеров с шиной PCI
является возможность выполнения обмена
данными между процессором и памятью
одновременно с обменами между другими
абонентами шины PCI - Concurrent РСI
Transferring. Однако эта возможность реализуется
не всеми чипсетами (в описаниях она всегда
специально подчеркивается), а обычными
абонентами шины (графические карты,
контроллеры дисков и т. п.) используется
редко.