Реализация 2.0
80
Для каждого сигнала FRAME#, который установлен на шине, кэш установит SDONE при появлении адреса.
Если два установления сигнала FRAME# происходят без установки SDONE, то вторая кэшируемая
транзакция не может завершиться. Если второй запрос кэшируется, то контроллер памяти должен вставить
состояния ожидания, пока предыдущий опрос не завершается (активный сигнал SDONE). Если второй
запрос некэшируемый, запрос завершается, и
кэш не будет обращаться по адресу. В этом смысле, обработки
ожидает только один адрес.
3.8.5. Замечания по арбитражу
Арбитр требуется, чтобы осуществить некоторый вид алгоритма «равнодоступности», когда сигнал HITM
проходит на шине, в противном случае может происходить длительная блокировка. Длительная блокировка
происходит, когда кэш, который имеет изменяемую строку, неспособен выполнить обратную запись,
потому что два высокоприоритетных агента обращаются к памяти кэшируемого. Когда HTTM появляется на
шине, все транзакции кэшируемого завершаются с
повтором.
Рекомендуется, чтобы арбитр, когда кэш присутствует в системе, мог выбирать, чтобы соединить REQ# с
фиксированным входом, так что приоритетный уровень может быть поднят, когда HITM появляется на
шине. Это обеспечивает, что в то время, как была отложена обратная запись, число транзакций
кэшируемого, которые завершены с повтором, сохранилось минимальным, а время ожидания также было
небольшим.
Когда в системе используется кэш (в частности, кэш обратной записи), время ожидания целевого устройства
должен увеличиться, чтобы подсчитать время, которое требуется для обратной записи измененной строки.
Эта величина зависит от алгоритма арбитража и того, когда на шине может появиться запрос на обратную
запись.
3.9. Расширение шины до 64 разрядов
PCI поддерживает 64-разрядные линии данных, чтобы обеспечить дополнительную ширину пропускания для
агентов, которым это необходимо. 64-разрядные устройства нуждаются в дополнительных 39 выводах:
REQ64#, ACK64#[63::32], C/BE[7::4], и PAR64. Эти сигналы определены в разделе 2.2.8. В конце сброса,
REQ64# сообщает 64 -разрядному устройству, что оно либо соединено с 64 - разрядными линиями данных,
либо нет. Когда REQ64# - неактивный, в конце сброса, то устройство
соединено с 64-разрядными линиями
данных. Когда REQ64# активен, в конце сброса, то устройство соединено с 64-разрядными линиями данных.
Обращайтесь к разделу 4.3.2 за информацией относительно того, как устройство ведет себя после сброса. 64
- битные транзакции динамически «заключаются» (один раз в фазе адреса) между мастером и целевым
устройством. Это происходит, когда мастер устанавливает REQ64#, а
целевое устройство отвечает на это
установкой сигнала ACK64#. REQ64# и ACK64# устанавливаются извне, гарантируя соответствующее
поведение, когда имеются смешанные 32- и 64-битные агенты. Как только встречается 64-разрядная
транзакция, то она держится до завершения транзакции. Работа 32-разрядных агентов не нарушается 64-
разрядными агентами. В 32-разрядном режиме 64-разрядные агенты должны переключиться в состояние по
умолчанию, пока они не
будут затребованы. Следовательно, 64-разрядные транзакции полностью прозрачны
для 32-разрядных устройств.
В течение 64-разрядной транзакции, весь протокол PCI и синхронизация остаются прежними. К 64-
разрядным пересылкам данных чувствительными являются только команды по работе с памятью. Команды
Interrupt Acknowledge и Special Cycle
16
- это обычные 32-разрядные команды и не должны использоваться с
REQ64#. Требования команд конфигурации к ширине диапазона ввода - вывода не могут сгладить
излишнюю сложность, а, следовательно, 64-разрядные пересылки данных поддерживают только команды
работы с памятью.
16
Так как никакой агент не запрашивает доступ путем установки DEVSEL#, то, следовательно, он не может
отвечать установкой ACK64#.