В каждой команде шины указывается адрес данных, передаваемых в первой фазе данных пакета. Адрес для каждой последующей фазы данных пакета увеличивается на 4 (следующее двойное слово), но в командах обращения к памяти порядок может быть иным (см. ниже). Байты шины AD
С/BE[3:0]#
в фазах данных. Внутри пакета эти сигналы могут менять состояние от фазы к фазе произвольным образом. Разрешенные байты могут быть разрозненными; возможны фазы данных, в которых не разрешено ни одного байта. В отличие от шины ISA, на PCI нет динамического изменения разрядности — все устройства должны подключаться к шине 32-разрядным способом. Если в устройстве PCI применяются функциональные схемы иной разрядности (к примеру, нужно подключить микросхему 8255, имеющую 8-битную шину данных и четыре регистра), то приходится принимать схемотехнические методы преобразования, отображающие все регистры на 32-разрядную шину AD
.♦ В циклах обращения к памяти адрес, выровненный по границе двойного слова, передается по линиям AD[31:2]
AD[1:0]
задают порядок адресов в пакете:• 00 — линейное инкрементирование; адрес последующей фазы отличается от предыдущего на число байтов шины (4 для 32-битной и 8 для 64-битной шины).
• 10 — Cache line Wrap mode, сворачивание адресов с учетом длины строки кэш-памяти. В транзакции адрес для очередной фазы увеличивается до достижения границы строки кэша, после чего переходит на начало этой строки и увеличивается до адреса, предшествующего начальному. Если транзакция длиннее строки кэша, то она продолжится в следующей строке с того же смещения, что и началась. Так, при длине строки 16 байт и 32-битной шине транзакция, начавшаяся с адреса xxxxxx08h, будет иметь последующие фазы данных, относящиеся к адресам xxxxxx0Ch, xxxxxx00h, xxxxxx04h; и далее к xxxxxx18h, xxxxxx1Ch, xxxxxx10h, xxxxxx14h. Длина строки кэша прописывается в конфигурационном пространстве устройства (см. п. 6.2.12). Если устройства не имеет регистра Cache Line Size
• 01 и 11 — зарезервировано, может использоваться как указание на отключение (Disconnect) после первой фазы данных.
♦ В циклах обращения к портам ввода-вывода для адресации любого байта используются все линии AD[31:0]
AD[31:2]
указывают на адрес двойного слова, к которому принадлежат передаваемые данные, а младшие биты адреса AD[1:0]
должны соответствовать байтам, которые могут быть разрешены сигналами С/BE[3:0]#
. При AD[1:0]
=00 допустимо С/BE[3:0]#
=xxx0 или 1111, при AD[1:0]
=01 — С/BE[3:0]#
=xx01 или 1111, при AD[1:0]
=10 — С/BE[3:0]#
=х011 или 1111, при AD[1:0]
=11 — С/BE[3:0]#
=0111 (передается лишь байт 3) или 1111 (ни один байт не разрешен). Эти циклы тоже могут быть пакетными, хотя на практике эта возможность используется редко.♦ В циклах конфигурационной записи/считывания
IDSEL
; AD[10:8]
, а конфигурационные регистры (только двойные слова) адресуются битами AD[7:2]
, при этом AD[1:0]
=00.С/BE#
в фазе адреса (табл. 6.12).♦
AD
полезная информация не передается, но ее инициатор (главный мост) должен обеспечить стабильность сигналов и корректность паритета. В PC 8-битный вектор передается в байте 0 по готовности контроллера прерываний (по сигналу TRDY#
). Подтверждение прерываний выполняется за один цикл (первый холостой цикл, который процессоры х86 делают в дань совместимости со стариной, мостом подавляется).