в начало
Команды шины передаются в фазе адреса по линиям С/ВЕ[3::0]#. Они дешифрируются исполнителем и выполняются в соответствии с таблицей.
Все устройства должны (в качестве исполнителя) отвечать на команды конфигурации. Другие команды являются для них дополнительными и применяются по мере необходимости. Если используются команды работы с памятью, должны поддерживаться все их типы.
Все передачи данных осуществляются с использованием трех сигналов: FRAME#, TRDY#, IRDY#. Фаза адреса инициируется по фронту синхросигнала при возбуждении сигнала FRAME#, затем по следующим фронтам синхросигнала выполняются одна, две или несколько фаз передачи данных. Данные передаются при одновременном действии сигналов IRDY# и TRDY#, Если хотя бы один из них находится в пассивном состоянии, вставляются такты ожидания.
Шина поддерживает два способа декодирования адресов: позитивный (каждое устройство имеет свой дешифратор адреса) и вычитающий (может применяться только одним устройством). В последнем случае устройство участвует во всех операциях обмена, "не опознанных" остальными устройствами. Это более медленный способ декодирования, но в некоторых случаях он может быть полезен. Он используется при построении стандартных шин расширения (например, ISA), которые должны "откликаться" на обращения к сильно фрагментированному адресному пространству.
В спецификации РСI определено три адресных пространства: памяти, устройств ввода-вывода и регистров конфигурации (последнее применяется для настройки устройств РСI).
Основным режимом передачи данных по шине РСI является монопольный, поддерживаемый для памяти и устройств ввода-вывода. При необходимости главный мост, расположенный между процессором и шиной, может объединять циклы записи в память в одну блочную последовательность.
Инициируемые процессором циклы обращения к устройствам ввода-вывода, как правило, выполняются в виде одиночных фаз передачи данных. Все сигналы запоминаются по срезу синхроимпульса.
C/BE[3::0]# | Команда |
0000 | Подтверждение прерывания |
Обеспечивает чтение вектора прерывания из неявно адресуемого контроллера прерываний | |
0001 | Специальный цикл |
Обеспечивает простой механизм передачи сообщений всем устройствам шины. | |
0010 | Чтение из порта ввода-вывода |
Чтение из пространства адресов ввода/вывода шины PCI. | |
0011 | Запись в порт ввода-вывода |
Запись в пространство адресов ввода/вывода шины PCI. | |
0100 | Резервная |
Исполнитель не должен отвечать на коды резервных команд. При выдаче резервных команд текущая операция аварийно завершается задатчиком. | |
0101 | Резервная |
Исполнитель не должен отвечать на коды резервных команд. При выдаче резервных команд текущая операция аварийно завершается задатчиком. | |
0110 | Чтение из памяти |
Чтение из пространства адресов памяти шины PCI. | |
0111 | Запись в память |
Запись в пространство адресов памяти шины PCI. | |
1000 | Резервная |
Исполнитель не должен отвечать на коды резервных команд. При выдаче резервных команд текущая операция аварийно завершается задатчиком. | |
1001 | Резервная |
Исполнитель не должен отвечать на коды резервных команд. При выдаче резервных команд текущая операция аварийно завершается задатчиком. | |
1010 | Чтение конфигурации (каждого агента) |
Чтение из конфигурационного пространства адресов шины PCI для каждого объекта. | |
1011 | Запись конфигурации (в область конфигурации каждого агента) |
Запись в конфигурационное пространство адресов шины PCI в область конфигурации каждого объекта. | |
1100 | Множественное чтение из памяти |
Выполняется аналогично чтению из памяти, но указывает, что задатчик может считывать более одной строки данных из кэш-памяти, прежде чем завершит блочную передачу данных. | |
1101 | Двойной адресный цикл |
Используется для передачи 64-разрядного адреса в устройство, поддерживающие 64-разрядную адресацию. | |
1110 | Линейное чтение из памяти |
Выполняется аналогично чтению из памяти, но указывает, что задатчик намеревается выполнить более двух фаз 32-разрядной передачи данных по шине. | |
1111 | Запись в память и прекращение операции |
Выполняется аналогично записи в память, но указывает, что задатчик намеревается записать все байты в пределах адресуемой строки кэш-памяти посредством одной блочной передачи. |