Загрузка...

Шина PCI


Работа шины контролируется несколькими таймерами, не позволяющими впустую расходовать такты шины и планировать распределение полосы пропускания. Каждое устройство должно достаточно быстро отвечать на адресованную ему транзакцию. Задержка первой фазы данных, то есть задержка появления сигнала TRDY# относительно FRAME#, не должна превышать 16 тактов шины. Если устройство иногда не успевает уложиться в этот интервал, оно должно формировать сигнал STOP#, прекращая транзакцию. Это заставит ведущее устройство повторить транзакцию. Если устройство медленное и не укладывается в 16 тактов, оно должно откладывать транзакцию. Кроме того, устройство имеет дискретный механизм слежения за длительностью циклов, который не позволяет интервалу между соседними фазами данных в пакете превышать 8 тактов шины.

Инициатор также не должен задерживать поток – допустимая задержка между сигналами FRAME# и IRDY# и между фазами данных не должна превышать 8 тактов. Таймер максимального времени исполнения имеет порог 10 мкс – 334 такта при 33МГц и 668 тактов при 66МГц, за которое инициатор должен иметь возможность переслать хотя бы одну фазу данных. Таймер начинает отсчет с момента запроса повтора операции записи в память отличном от запроса повтора.

Задержка арбитража определяется как число тактов от подачи инициатором запроса REQ# до получения права управлять шиной GNT#. Эта задержка зависит от активности других инициаторов, быстродействия устройств и скорости самого арбитра. В зависимости от исполняемой команды и состояния сигналов ведущее устройство должно либо сократить транзакцию, либо продолжать ее до завершения.

При конфигурировании ведущие устройства сообщают свои потребности, указывая максимально допустимую задержку предоставления доступа к шине и минимальное время, на которое им должно предоставляться управление шиной. Для максимального использования возможностей шины устройства должны иметь буферы, чтобы накапливать данные для пакетных транзакций. Рекомендуется для средних скоростей передачи данных иметь буфер в 32 двойных слова. Для обмена с системной памятью наиболее эффективны транзакции, работающие с целыми строками кэша, что также учитывается при определении размера буфера. Однако увеличение размера буфера может вызвать трудности при обработке ошибок, а также привести к увеличению задержек доставки данных.

В РС-совместимых компьютерах прерывания от устройств шины PCI обслуживаются парой контроллеров 8259А, расположенных на системной плате. К ним обращается команда на подтверждение прерывания. Устройство PCI вводит сигнал прерывания низким уровнем на выбранную линию INTA#, INTB#, INTC# или INTD#. Этот сигнал должен удерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Если после этого контроллер прерываний снова обнаружит низкий уровень на линии запроса, это означает, что запрос на ту же линию ввело другое устройство, разделяющее данную линию с первым. Конфигурационное ПО может определить и указать занятые линии запросов и номер входа контроллера прерываний обращением к конфигурационному пространству устройства. Программный драйвер, прочитав конфигурационные регистры определяет те же параметры для того, чтобы установить обработчик прерываний на нужный вектор и при обслуживании сбрасывать запрос с требуемой линии.

Каждая функция устройства PCI может задействовать свою линию запроса прерывания, но должно быть готово разделить ее с другими устройствами. Назначение прерываний устройствам или функциям выполняет процедура POST. Параметрами CMOS BIOS пользователь определяет номера запросов прерываний, доступных шине PCI. Драйвер, работающий с устройством PCI, определяет вектор прерывания, доставшийся устройству, чтением конфигурационного регистра Interrrupt Line. В этом регистре указывается номер входа контроллера прерывания и по нему определяется вектор. Номер вода каждому устройству заносит тест POST.

Загрузка...