Одно из решений состоит в том, чтобы завести отдельный процессор и поручить
ему всю работу по опросу. Процессор, занимающийся только организацией
ввода-вывода, называют периферийным или канальным
(channel).
Понятно, впрочем, что это повышает стоимость системы и не решает проблемы
радикально — теперь вместо флагов, непосредственно сигнализирующих о внешних
событиях, центральный процессор вынужден опрашивать флаги, выставляемые
канальным процессором. В зависимости от характера событий и требуемой
обработки это решение может оказаться и совсем неприемлемым, например,
если на каждое событие требуется немедленная реакция именно центрального
процессора.
В противном случае, если немедленно после события требуется лишь простая
обработка, а сложные вычисления можно отложить на потом, канальный процессор
можно упростить и сделать существенно дешевле центрального.
Рис. 6.1. Структура контроллера ПДП
В качестве альтернативы ПДП можно предложить снабжение устройства буфером,
который работает с частотой системной шины. Центральный процессор передает
данные в буфер, и лишь когда заканчивает передачу, инициирует операцию
устройства. Логика работы самого устройства с этим буфером, впрочем, ничем
не отличается от ПДП, с той лишь разницей, что используется не общесистемная,
а встроенная память. На практике, оба подхода часто используются совместно:
ПДП позволяет минимизировать загрузку центрального процессора, а буфер
— избежать потери данных, если системная шина занята другим устройством.
Типичный современный дисковый контроллер имеет и средства ПДП, и внутренний
буфер. У кэширующих (имеющих кэш-память) и RAID-контроллеров объем буфера
может измеряться многими мегабайтами. Кроме того, современные жесткие
диски также имеют собственные буферы.
Периферийные процессоры находят широкое применение в современных вычислительных
системах. Так, типичный современный персональный компьютер, кроме центрального
процессора, обычно имеет и специализированный видеопроцессор, так называемый
графический ускоритель. У кэширующих дисковых контроллеров и аппаратных
реализаций RAID (см. разд. Дисковые
массивы) обычно также есть собственный процессор, в данном случае,
как правило, используются полностью программируемые процессоры. Лазерные
и струйные печатающие устройства имеют процессор, который интерпретирует
команды языка управления принтером (PCL или Postscript), есть процессоры
модемах и во многих других периферийных устройствах. Впрочем, нередко
встречаются и попытки обратить процесс децентрализации вычислений -так
называемые "софтовые" или Win-модемы (называемые так потому,
что программное обеспечение, способное работать с таким модемом, часто
поставляется только под Windows), многие бытовые принтеры и т. д.
В отличие от перечисленных устройств, классический полностью программируемый
канальный процессор подключен непосредственно к системной шине и может
оперировать несколькими устройствами, в зависимости от загруженной в него
канальной программы. Канатьные процессоры долгое время считались отличительной
особенностью больших ЭВМ. В мини-и микрокомпьютерах использование специализированных
канальных процессоров, более сложных, чем контроллер ПДП, считалось неприемлемым
по стоимостным показателям. Удивительно, что даже современное радикальное
удешевление оборудования не изменило положения: предложение консорциума
I2O (Intelligent Input/Output) снабжать компьютеры на основе
процессоров х86 канальным процессором Intel 960, с энтузиазмом поддержанное
практически всеми поставщиками операционных систем, почему-то не было
столь же горячо поддержано потребителями.
Потребители мини- и микросистем, нуждающиеся в высокой производительности,
предпочитают использовать в качестве дополнительных процессоров устройства
с той же архитектурой, что и центральный процессор. Это называется симметричной
многопроцессорностью (SMP), и позволяет перераспределять между
процессорами не только обработку событий, но и собственно вычислительную
деятельность. Понятно, что обрабатывать все события по принципу опроса
в такой архитектуре — бессмысленная, а зачастую и нетерпимая расточительность.
К счастью, еще с 60-х годов, практически все процессоры как центральные,
так и канальные, используют стратегию работы с событиями, во многих отношениях
гораздо более совершенную, чем опрос.