Реализация 2.0
47
наихудший случай задержки, должны обеспечить адекватную буферизацию за 30 мкс. Это подразумевает
буферизацию минимум около 50 байтов для LAN - адаптеров со скоростью 10 Мбит/сек, и около 500 байтов
- для LAN - адаптера со скоростью 100 Мбит/сек (если буферы организованы в виде строк (например, с 16-
или с 32-битным выравниванием) для наилучшего использования PCI и памяти целевого устройства, то
минимальный размер буфера желательно увеличить). Несмотря на некоторую неопределенность в
наихудшем случае, для реализуемых системных разработок 30 микросекунд должны обеспечить достаточно
широкое поле деятельности. Даже при самых жестких требованиях, 30 микросекунд должно хватить в
наихудшем случае. Для снижения стоимости проектирования в наихудшем случае мастер - устройство
может уменьшить задержку для наихудшего случая, если допускаются
случайные нарушения величины
задержки без создания ошибочных условий. Например, LAN - адаптер должен иметь соответствующую
инфраструктуру (аппаратное и программное обеспечение), чтобы можно было определить, когда происходят
ошибки при буферизации, и инициировать повторную передачу блока данных (как в случае, когда блоки
искажаются из-за наводок в линиях или коллизий). Секторы на диске можно
повторно считать или записать.
Передача в реальном времени потока данных (например, аудио- данных) может допускать случайные
типовые потери, используя при этом предыдущую выборку данных. Устройство, достаточно устойчивое к
сбоям и нарушениям задержки, изменяет значение задержки из обычного состояния в более
«благоприятное» для соотношения цена/производительность (то есть, в случае обработки
звука мы получим
шумы). Например, дешевый LAN - адаптер для клиентских станций (с небольшой загрузкой шины PCI)
проектируют с задержкой 10 мкс в наихудшем случае и принимают, что частота повторения пакетов
слишком мала, чтобы повлиять на снижение эффективности. Устройства, разрабатываемые для серверов,
должны иметь большие буферы (при высокой стоимости) для уменьшения повторений в случае больших
нагрузок (если принимать во внимание необходимость разработки очень устойчивых приложений, то
устройства, спроектированные для задержки 30 мкс и более, должны самовосстанавливаться во всех случаях
нарушения задержки). Некоторые приложения (например, встраиваемые контроллеры, мультимедиа и т. д.)
могут принимать на себя более устойчивое управление задержками, чем то, которое обеспечивается обычной
(общего назначения) главной
шиной PCI (такие условия могут быть реализованы на вторичной шине PCI и
подсоединены к host - машине через интерфейс PCI - PCI). Этому типу приложений требуется, чтобы у
целевых устройств было малое и предсказуемое время задержки. Для обеспечения такого проектирования, и,
в общем случае, для поощрения хороших разработок, при разработке интерфейса целевых устройств
рекомендуется пользоваться принципами, перечисленными
ниже. Далее, термином «одноуровневый» (single-
layer) обозначается целевое PCI - устройство, которое обеспечивает немедленный доступ к выбранному
ресурсу. В качестве примера могут служить одно-портовая динамическая память (DRAM) и буфер
изображения видеопамяти (VRAM). «Многоуровневым» называется целевое устройство, осуществляющее
арбитраж ресурса, выбранного другим ресурсом, для которого арбитраж не осуществляется. В качестве
примера можно указать интерфейсы «PCI - шина расширения» (
например, PCI - ISA/EISA/MC; PCI - PCI;
PCI - основная память и т. д.), а также двух-портовую DRAM.
1. Одноуровневое целевое устройство должно отсрочить первую фазу данных на 16 тактов. В противном
случае, если временное внутреннее состояние (например, регенерация DRAM, полная очередь
отложенных запросов на запись и т. д.) увеличивает задержку запроса более, чем на 16 тактов, то
немедленно осуществляется повтор.
2.
Многоуровневое целевое устройство должно повторять запрос, который находится в коллизии с занятым
ресурсом. Например, если осуществляется запрос, подчиненный EISA - шине, которая захвачена другим
мастером, то следует немедленно повторить этот запрос (в любом случае, был бы необходим цикл
ожидания для исключения тупиковой ситуации, поэтому ожидание и происходит). Аналогично, при
запросе регенерируемого буфера изображения
DRAM следует повторить данный запрос.
3.
«Многоуровневые» целевые устройства (особенно, шинные интерфейсы) должны соблюдать большую
осторожность в стратегии записи буфера. Буферы записи затрудняют определение задержки, так как
обычно предъявляемые строгие требования гласят, что перед разрешением какого-то запроса, должна
быть обслужена вся очередь записей. Рекомендуется, в частности, чтобы основной интерфейс ЦП - PCI
мог откладывать записи в резидентный PCI -
буфер, при этом подавляя отложенные записи на
подчиненную шину ISA/EISA/MC.