Bus Master (хозяин шины, задатчик) возможный режим работы устройства на любой шине, в том числе и на PCI. В этом случае устройство выдает запрос арбитру шины, сообщая о своем требовании на получение управления шиной. Арбитр, в соответствии с приоритетом и/или очередностью арбитража на данной шине, через определенное время после запроса передает запрашивающему устройству управление шиной. Выполнив все необходимые операции, устройство сообщает арбитру об освобождении им шины.
На современных шинах, таких как PCI, для получения доступа к шине все устройства проходят процедуру арбитража, в том числе и центральный процессор. Возможность быть master-устройством реализуется аппаратно при его разработке. Реализация механизма Bus Master позволяет общаться между собой только тем компонентам компьютера, которым это в данный момент необходимо. Этот механизм, например, используется для передачи данных TV-тюнером на видеокарту, если они обе находятся на PCI-шине, причем без участия центрального процессора, системной памяти и т.п.
Обычно система управляет доступом к PCI-шине по фундаментальному принципу First-Come-First-Served (первым пришел, первым обслуживается). Но возможности арбитража значительно шире и сложнее, так как он имеет различные режимы работы. Может быть установлен т.н. режим ротации устройств, при котором периодично меняется очередность устройств, т.е. их приоритет. Приоритет может оказаться фиксированным, т.е. какое-либо системное устройство «навсегда» получает наивысший приоритет или определенное место в иерархии. При перераспределении приоритетов (rotated) устройству, уже получившему контроль над шиной, присваивается самый низкий приоритет, и любое другое устройство перемещается на шаг вверх в «очереди» приоритетов.
Как же все это реализуется? Арбитражем запросов на «захват» шины в составе чипсета занимается специальный узел, в который входит 8-разрядный ARBITRATION CONTROL REGISTER, позволяющий реализовать свойства, связанные с арбитражем на PCI-шине, а также с поддержкой спецификации шины PCI 2.1. (см. ниже). Каждое устройство-инициатор имеет пару сигналов REQ# (Request запрос на управление шиной) и GNT# (Grant подтверждение предоставления управления шиной). Схема приоритетов (мы уже познакомились с фиксированным, циклическим, он же приоритет с ротацией, а есть еще и комбинированный) определяется программированием арбитра. Каждое мастер-устройство имеет собственный программируемый таймер MLT (Master Latency Timer), определяющий максимальное время в тактах шины для одной транзакции.
Финиш ликбеза
В современных системах механизмы арбитража, можно сказать, интеллектуализированы, что в итоге привело к постепенному изъятию из BIOS Setup функций, связанных с пользовательскими установками по арбитражу. Старые же версии BIOS вполне могут содержать некоторые из приведенных ниже опций, способные вызвать душевный трепет у пользователя :-).
Arbiter Priority on HB1
Опция от Phoenix BIOS. Ее значения: CPU и Slot 6 to Slot 9. HB в названии опции означает Host Bridge. Выбор CPU давал процессору максимальный приоритет, второе значение определяло уровень приоритета для выбранного PCI-слота, начиная с 6-го слота, имевшего наивысший приоритет. Таким образом, при установке карт расширения пользователь имел возможность сконфигурировать имеющиеся master-устройства на PCI-шине наиболее оптимальным способом. Правда, для этого необходимо было иметь полное представление о потребностях имеющихся комплектующих. Столь необычные номера слотов это системные номера слотов с точки зрения Phoenix.
Arbitration Priority
Один из вариантов такой опции имеет следующие значения: PCI First, ISA/DMA First. Здесь возможности выбора зависят от применяемых устройств. Master-устройство может находиться на ISA-шине и «желать» захвата шины. Для передачи данных оно может использовать управление через DMA-каналы. Тогда как бы конечным инициатором захвата выступает DMA-контроллер. Но поскольку в обоих случаях передача данных происходит через PCI-шину, то пользователю необходимо выбрать задатчика, который первым получит доступ к PCI-шине и хосту при прочих равных условиях, то есть определить, будет это PCI- или ISA-устройство. Напомним, что некоторые ISA-карты активно использовали режимы DMA-передачи (звуковые карты, например).
Опция с тем же названием представила для выбора также и значения CPU и PCI.
CPU Latency Timer
Данная опция появилась в BIOS Setup некоторых системных плат, построенных на чипсетах i81x и выше. Появилась потому, что в один из конфигурационных регистров посчитали нужным ввести соответствующий бит с возможностью записи. Регистр называется GMCH Configuration Register, а бит 6 Processor Latency Timer. В чипсетах i815-х бит получил название CPU Latency Timer. Вот его значения:
0 допускающий задержку цикл процессора будет отложен немедленно по получении хабом GMCH сигнала ADS# от других инициаторов. Добавим, что ADS# (Address Strobe) сигнал, с помощью которого процессор и системный контроллер общаются между собой. Такого сигнала нет ни на шине PCI, ни на AGP. Суть сигнала в указании действительности адреса, с которым выходит на арбитраж инициатор обмена. Такие сигналы по каждому из интерфейсов могут вырабатывать разве что их контроллеры;
1 допускающий задержку цикл процессора будет отложен, но только лишь после удержания в специальном цикле слежения (Snoop Stall). Передача полномочий произойдет на 31-м такте после появления сигнала ADS# от инициаторов.
В разных системах были встречены два варианта опции. В одном случае предлагались значения 0 Clocks и 30 Clocks, а в другом Enabled и Disabled. Какую реакцию должна вызвать установка опции в Enabled? Ну конечно, диктатор отдаст власть немедленно :-). По умолчанию стоит Disabled.
CPU Priority
После вышеизложенного содержание этой опции, скорее всего, уже и не покажется странным. Пользователь должен установить, по сути, ранг центрального процессора в иерархии всех возможных master-устройств в системе. Если для остальных устройств, допустим, может выдерживаться режим ротации, то место CPU в системе приоритетов всегда окажется фиксированным, и выбирается из ряда: Always Last, CPU 2nd, CPU 3rd, CPU 4th.
Опция с аналогичными названиями могла принимать и такие значения, как Disabled и Enabled. Можно предположить, что Disabled запрещает ротацию приоритета для центрального процессора, а Enabled ее разрешает.
DMA/ISA Master Before PCI
Опция предлагает стандартные значения Enabled и Disabled. В данном случае Disabled равносильно уже известному значению PCI First.