Команды шины

в начало

Команды шины передаются в фазе адреса по линиям С/ВЕ[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 Запись в память и прекращение операции
Выполняется аналогично записи в память, но указывает, что задатчик намеревается записать все байты в пределах адресуемой строки кэш-памяти посредством одной блочной передачи.