А.5. Обмен данными
А.5. Обмен данными
Открытая архитектура PC предрасполагает использование различных адаптеров расширения. Чаще всего ПО общается с адаптерами через порты ввода/вывода, используя преры- вания, прямой доступ к памяти и непосредственное управ- ление шиной. Связь через область памяти, к которой при- писан адаптер, для "нештатных" адаптеров применяется редко. Выбор способа связи определяется пропускной спо- собностью, временем отклика на события, происходящие в адаптере, и допустимой загрузкой процессора.
Программно-управляемый обмен подразумевает следующие действия:
операцию чтения регистра состояния устройства для ана- лиза его готовности;
ожидание готовности (зацикливание предыдущего шага);
обмен байтом или словом данных.
Такой обмен сильно загружает процессор, особенно если про- грамма формирует управляющие сигналы обмена. Так, напри- мер, работает драйвер параллельного порта в стандартном ре- жиме, когда строб данных формируется двумя инструкциями OUT. В результате пропускная способность такого порта в за- висимости от процессора может быть порядка 150 Кбайт/с. Если разгрузить процессор от анализа готовности и форми- рования строба, как, например, в ЕРР-режиме параллельного порта, то производительность порта можно повысить на по- рядок. Такой режим обмена программно-управляемым назы- вать некорректно - это режим программного ввода/вывода с аппаратным контролем потока, где темп обмена определяет подключенное устройство. Высокоскоростные режимы PIO применяются в интерфейсе IDE. Они используют инструк- ции блочной пересылки REP INS/OUTS, при которых процес- сор пересылает данные между портом и областью памяти за минимальное количество тактов системной шины. Посколь- ку такую скорость ПУ обычно не воспринимают, контроллер интерфейса "притормаживает" обмен до разумных скоростей, определяемых режимом обмена. Параметры этих режимов, называемых PIO Mode, приведены в табл. 6.10.
Обмен по прямому доступу к памяти (как и режим прямого управления шиной) в наименьшей степени загружает процес- сор - он занимается лишь анализом состояния и инициали- зацией канала DMA, но не передачей данных.
Время откли- ка на запрос, когда контроллер "заряжен" на обмен, не превышает сотен наносекунд. Однако скорость стандартно- го канала DMA ограничена значением 2/4 Мбайт/с в зави- симости от разрядности канала. Производительность в ре- жимах прямого управления шиной обычно выше, чем у стандартных каналов DMA. Прогрессивные режимы DMA обеспечивают более высокие скорости обмена: Ultra DMA - до 33 Мбайт/с.
Обсудим теперь инициализацию и синхронизацию. Инициа- тором обмена выступает или ПО, или ПУ. Программа ожи- дает какого-либо события в ПУ, периодически читая его ре- гистр состояния. Такой способ называется обменом по опросу готовности. Время реакции может составлять доли мик- росекунды, когда программа опрашивает устройство моно- польно. Однако при этом процессор загружен бесполезной работой. Другой подход - использование аппаратных пре- рываний, вырабатываемых устройством по событиям, тре- бующим внимания программы. Программные обработчики аппаратных прерываний инициализируют блочный обмен или выполняют одиночную операцию пересылки. Время ре- акции зависит от множества факторов, включая режим ра- боты процессора. В защищенном режиме прерывание при- водит к автоматическому сохранению контекста задачи в стеке и переключению задач. Эти действия связаны с ин- тенсивным обменом с памятью, так что отклик может до- стигать десятков микросекунд или гораздо больше, если за- действована виртуальная память. В реальном режиме процессора ответ на прерывание приходит за единицы мик- росекунд.
Возможно комплексное решение - опрос готовности уст- ройств по периодическим прерываниям, например, от сис- темного таймера - polling. Готовое устройство обслуживает- ся, неготовое - пропускается до следующего прерывания. Процессор не выполняет бесполезных циклов опроса, а за- нимается другими задачами. Правда, расходы на обслужи-
вание прерываний остаются, а максимальное время реакции на событие не может быть меньшим, чем период таймера. Так работает утилита фоновой печати PRINT.
Активное использование прерываний характерно для мно- гозадачных ОС.