♦ Специальный цикл
отличается от всех других тем, что является широковещательным. Однако ни один агент на него не отвечает, а главный мост или иное устройство, вводящее этот цикл, всегда завершает его способом Master Abort (на него требуется 6 тактов шины). Специальный цикл предназначен для генерации широковещательных сообщений — их могут читать любые «заинтересованные» агенты шины. Тип сообщения декодируется содержимым линий AD[15:0]
, на линиях AD[31:16]
могут помещаться данные, передаваемые в сообщении. Фаза адреса в этом цикле для обычных устройств отсутствует, но мосты используют ее информацию для управления распространением сообщения. Сообщения с кодами 0000h, 0001h и 0002h требуются для указания на отключение (Shutdown
), остановку (Halt
) процессора или специфические функции процессора x86, связанные с кэшем и трассировкой. Коды 0003-FFFFh зарезервированы. Специальный цикл может генерироваться тем же аппаратно-программным механизмом, что и конфигурационные циклы (см. п. 6.2.11), но со специфическим значением адреса.♦ Команды чтения и записи ввода-вывода
служат для обращения к пространству портов. Линии AD
содержат адрес байта, причем декодированию подлежат и биты AD0
и AD1
(несмотря на то, что имеются сигналы ВЕх#
). Порты PCI могут быть 16- или 32-битными. Для адресации портов на шине PCI доступны все 32 бита адреса, но процессоры х86 могут использовать только младшие 16 бит.♦ Команды обращения к памяти
, кроме обычного чтения и записи, включают чтение строк кэш-памяти, множественное чтение (нескольких строк), запись с инвалидацией.♦ Команды конфигурационного чтения и записи
адресуются к конфигурационному пространству устройств (см. п. 6.2.12). Обращение производится только двойными словами. Структура содержит идентификатор устройства и производите для, состояние и команду, информацию о занимаемых ресурсах и ограничения на использование шины. Для генерации данных команд требуется специальный аппаратно-программный механизм (см. п. 6.2.11).♦ Чтение строк памяти
применяется, когда в транзакции планируется более двух 32-битных передач (обычно это чтение до конца строки кэша).♦ Множественное чтение памяти
используется для транзакций, пересекающих границы строк кэш-памяти.♦ Запись с инвалидацией
применяется к целым строкам кэша и позволяет оптимизировать циклы обратной записи «грязных» строк кэша.♦ Двухадресный цикл
позволяет по 32-битной шине обращаться к устройствам с 64-битной адресацией. В этом случае младшие 32 бита адреса передаются в цикле данного типа, а за ним следует обычный цикл, определяющий тип обмена и несущий старшие 32 бита адреса. Шина PCI допускает 64-битную адресацию портов ввода-вывода (для х86 это бесполезно, но PCI существует и на других платформах).
Таблица 6.12
. Декодирование команд шины PCIС/BE[3:0] | Тип команды |
---|
0000 | Interrupt Acknowledge — подтверждение прерывания |
0001 | Special Cycle — специальный цикл |
0010 | I/O Read — чтение порта ввода-вывода |
0011 | I/O Write — запись в порт ввода-вывода |
0100 | Зарезервировано |
0101 | Зарезервировано |
0110 | Memory Read — чтение памяти |
0111 | Memory Write — запись в память |
1000 | Зарезервировано |
1001 | Зарезервировано |
1010 | Configuration Read — конфигурационное считывание |
1011 | Configuration Write — конфигурационная запись |
1100 | Multiple Memory Read — множественное чтение памяти |
1101 | Dual Address Cycle (DAC) — двухадресный цикл |
1110 | Memory-Read Line — чтение строки памяти |
1111 | Memory Write and Invalidate — запись с инвалидацией |
6.2.5. Пропускная способность шины