Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

вывода используя такие системные ресурсы как прерывания прямой доступ к памяти и непосредственное управл

Работа добавлена на сайт samzan.net: 2015-12-26

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.5.2024

Глава 4. Взаимодействие программ с периферийными устройствами

Средства взаимодействия программ (задач) с ПУ. Открытая архитектура PC предрасполагает к широкому использованию различных адаптеров расширения, подключаемых к стандартным внешним интерфейсам или устанавливаемых в слоты шин PCI, AGP, PC Card, MCA и другие. Чаще всего программы с адаптерами общаются через инструкции обращения к памяти и портам ввода-вывода, используя такие системные ресурсы как прерывания, прямой доступ к памяти и непосредственное управление шиной. Общение через область памяти, к которой приписан адаптер, для нестандартных адаптеров ISA применяется редко, поскольку карта распределения памяти забита (и перегорожена) довольно плотно. Однако для устройств PCI рекомендуется общение через память, и в спецификацию PCI заложены требования по полной перемещаемости ресурсов, занимаемых любым устройством. Эта рекомендация вытекает из архитектурных особенностей процессоров х86, у которых существует множество способов адресации к памяти и только два (непосредственный и косвенный) — к портам ввода-вывода. Поэтому драйверы, ориентированные на перемещаемость ресурсов, получаются более эффективными при отображении всех регистров ввода-вывода на память (memory mapped I/O). Кроме того, пространство памяти гораздо просторнее — 4 Гбайт против 64 Кбайт, «перегороженных» вдоль и поперек традиционными регистрами PC-совместимых компьютеров.

4.1. Методы передачи данных

Для передачи данных между программой и устройством применяют разные методы:

программно-управляемый обмен;

программированный ввод-вывод;

обмен по каналу прямого доступа к памяти (ПДП / DMA);

обмен в режиме прямого управления шиной.

Первые два метода (программно-управляемый обмен и программированный ввод-вывод) позволяют программе непосредственно обмениваться данными с устройством — все данные во время обмена с устройством проходят через процессор.

В двух последних (обмен по каналу DMA и обмен в режиме прямого управления шиной) обмен с устройством происходит асинхронно по отношению к исполняемой программе, которая получает и передает данные только через буферы, расположенные в оперативной памяти компьютера. Выбор метода передачи данных определяется в основном требованиями к пропускной способности, времени отклика на события, происходящим в адаптере, и допустимой загрузкой процессора.

Программно-управляемый обмен подразумевает последовательность следующих шагов.

1.   Операцию чтения регистра состояния устройства для анализа его готовности.

2.   Ожидание готовности (зацикливание предыдущего шага).

3.   Собственно обмен байтом или словом данных.

Такой обмен сильно загружает процессор, особенно если программа формирует и управляющие сигналы обмена. Например, так работает драйвер параллельного порта в стандартном режиме, когда строб данных формируется двумя инструкциями OUT. В результате предел пропускной способности такого порта, в зависимости от производительности процессора, может быть порядка 150 Кбайт/с. Если процессор разгрузить от анализа готовности и формирования строба, как, например, в ЕРР1-режиме параллельного порта, то производительность порта можно повысить на порядок. Однако такой режим обмена программно-управляемым называть уже некорректно — это уже режим программною ввода-вывода с аппаратным контролем потока, где темп обмена определяет подключенное устройство.

Режим программного обмена РIO (Programmed Input/Output), пересылающий блок байтов, слов или двойных слов между памятью и портом ввода-вывода, построен на инструкциях блочной пересылки REP INS/OUTS. Для этих инструкций задается начальный адрес памяти, длина блока, адрес порта и направление изменения адреса памяти (инкремент или декремент). Инструкции блочной пересылки (и обмен РIO) появились с процессорами 80286. Пересылки выполняются быстро, скорость передачи определяется производительностью (частотой) процессора и шины. Обмен в режиме РIO успешно применяется и для обмена с устройствами ATA (IDE), причем в машинах AT он выполняется быстрее, чем по стандартному каналу DMA. Поскольку полную скорость РIO периферийные устройства воспринять обычно не могут, контроллер интерфейса, аппаратно вводя такты ожидания, «притормаживает» обмен до разумных скоростей, определяемых режимом обмена. Для устройств АТА определены 5 режимов, называемых РIO Mode, со скоростями обмена от 3,3 (РIO Mode 0) до 22,2 Мбайт/с (РIO Mode 4). В режимах 0, 1 и 2 синхронизация с устройством не предусматривается — считается, что оно должно успевать. В режимах с большими номерами используется сигнал готовности от устройства, по которому могут быть введены дополнительные такты ожидания. Для устройств АТА режим РIO задается при инициализации контроллера интерфейса АТА и согласуется с возможностями устройств.

Обмен по прямому доступу к памяти (DMA) почти не загружает процессор - выполняемые им инструкции ввода-вывода относятся лишь к анализу состояния и инициализации канала DMA, но не к самой передаче данных. Время отклика на одиночный запрос, когда контроллер «заряжен» на обмен, не превышает сотен наносекунд. Однако скорость стандартного канала DMA ограничена значением 2 или 4 Мбайта в секунду, в зависимости от разрядности канала.

Обмен в режиме прямого управления шиной (bus mastering) выполняется по инициативе и под управлением относительно интеллектуального контроллера, здесь центральный процессор загружается в наименьшей степени (занимается только шина). Производительность в режимах прямого управления шиной обычно выше, чем у стандартных каналов DMA. Контроллер с прямым управлением может для подключаемого периферийного устройства эмулировать обмен в режиме DMA, но более эффективном, чем стандартные каналы, что и делается в современных контроллерах ATA (IDE). Прогрессивные режимы DMA обеспечивают более высокие скорости обмена — широко используется Ultra DMA/66, UltraDMA/100. Эти режимы поддерживают скорость обмена до 66 и даже 100 Мбайт/с.

4.2. Способы инициализации и синхронизации потока данных 

Рассмотрим способы инициализации и синхронизации потока данных.

Способ обменом по опросу готовности. Инициатором обмена может выступать как программа, так и периферийное устройство. Программа ожидает какого-либо события в устройстве (например, установки бита готовности), периодически читая его регистр состояния. Такой способ называется обменом по опросу готовности. Время реакции на события может быть сведено до долей микросекунды, когда программа активно занимается опросом устройства в монопольном режиме. Однако при этом во время ожидания события процессор загружен бесполезной работой.

Способ с использованием аппаратных прерываний. Другой подход — использование аппаратных прерываний, вырабатываемых устройством по событиям, требующим взаимодействия с программой. Программные обработчики аппаратных прерываний обычно инициализируют любой из вышеперечисленных способов блочного обмена или выполняют одиночную операцию пересылки. Время реакции на запрос прерывания зависит от множества факторов, в том числе и от режима работы процессора. В защищенном режиме прерывание приводит к автоматическому сохранению контекста процессора в стеке и переключению задач. Эти действия связаны с интенсивным обменом с памятью, так что время отклика на прерывание может достигать десятков микросекунд. А если в переключении задействована и виртуальная память, то счет пойдет на десятки и сотни миллисекунд. В реальном режиме процессора ответ на прерывание может быть получен за единицы (и даже доли) микросекунд.

Способ опроса готовности ряда устройств по периодическим прерываниям. Возможно и комплексное решение — полинг (polling) — опрос готовности ряда устройств по периодическим прерываниям, например от системного таймера. Устройство, для которого обнаружена готовность, обслуживается, не готовое — пропускается до следующего прерывания. При этом процессор не выполняет многочисленных и возможно бесполезных циклов опроса готовности, а может заниматься другими задачами. Правда, накладные расходы на обслуживание прерываний остаются, а максимальное время реакции на событие не может быть меньшим, чем период прерываний от таймера. Так, например, работает утилита фоновой печати PRINT. Она не использует аппаратное прерывание от LPT-пopта (хотя могла бы), а работает по таймеру.

Активное использование прерываний характерно лишь для многозадачных операционных систем.

4.3. Буферизация данных в устройствах

Каждое устройство имеет свою специфику характера обмена данными, определяемую природой его внешней (по отношению к компьютеру) стороны. По характеру обмена устройства можно разделить на три основных типа.

 Блочные устройства, например, дисковые накопители. Обмен с ними возможен только блоками фиксированного размера — секторами. При обмене с физическим диском (например, через контроллер НГМД) нельзя останавливаться посреди передачи блока.

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

  Регистро-ориентированные устройства, которые, как правило, не являются источниками или приемниками большого объема данных. Программам обычно требуется знать текущее состояние данных устройств или (и) формировать текущие управляющие воздействия. Пример регистро-ориентированного устройства — джойстик: программа в определенные моменты опрашивает текущее состояние кнопок и координатных датчиков. Регистро-ориентированными, как правило, являются различные устройства сопряжения с технологическим оборудованием, компьютеризированные измерительные комплексы и т. п.

Во многих устройствах присутствует смесь этих основных типов, так, даже принтер имеет и регистро-ориентированную часть — кроме приема потока он передает сигналы текущего состояния (ошибка, конец бумаги).

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

Для блочных устройств обычно применяют буфер, минимальный размер которого равен размеру блока. Так, первые устройства IDE/ATA имели буфер 512 байт — на один сектор диска. Буфер поначалу был однопортовым: при чтении с диска встроенный контроллер сначала заполнял буфер данными сектора, и только после этого данные из буфера могли быть считаны в память компьютерa. Позже размер буфера увеличили до объема нескольких секторов и стали применять двухпортовый буфер, который допускает практически одновременное обращение с двух сторон (портов) — со стороны устройства (обмен с носителем) и со стороны интерфейса (обмен по шине АТА). При считывании последовательности секторов как только очередной сектор целиком попадает в буфер и схемы контроля сообщают об отсутствии ошибок, контроллер диска может выдавать данные этого сектора на внешний интерфейс, а сам тем временем продолжать считывание последующих секторов в оставшуюся часть буфера. Более «умный» контроллер может использовать кольцевой буфер, продолжая считывание секторов с носителя в освободившееся (считанное по внешнему интерфейсу) начало буфера. Однопортовый буфер большого размера оказывается неэффективным, поскольку при длинных операциях он вносит большую задержку доставки данных. Двухпортовость позволяет уменьшить задержку, а кольцевая организация делает буфер практически безразмерным (при условии своевременного освобождения).

Адаптеры локальных сетей тяготеют к блочным устройствам — они передают данные целыми пакетами, которые должны приниматься и посылаться с определенной скоростью (10, 100 или 1000 Мбит/с для трех поколений Ethernet). Для них объем и организация буфера зависят от скорости среды передачи и производительности интерфейса (шины расширения), к которой они подключены2. Эти буферы могли также быть однопортовыми или двухпортовыми со всеми вышеописанными свойствами. Однопортовые буферы приводят к задержкам передачи на время приема целого кадра, что сказывается на увеличении времени отклика сети3.

Для потоковых устройств часто применяют буфер с дисциплиной обслуживания FIFO (First InFirst Out, первым вошел — первым вышел). Размер такого буфера, как правило, невелик (например. 16 байт). Буфер ставится между программой (выполняемой задачей) и устройством, с одной стороны он наполняется, с противоположной — освобождается. Освобождающая сторона может извлекать данные из буфера, лишь когда наполняющая сторона их туда положит. Попытка извлечения данных из пустого буфера является ошибкой опустошения (underflow), попытка помещения в заполненный — ошибкой переполните (overflow). Схема управления буфера следит за степенью наполненности буфера и сообщает программе о критических ситуациях. Когда программа, исполняемая процессором, выводит данные через FIFO, схема управления следит за снижением наполненности буфера ниже порога опустошения и в случае такового сигнализирует (обычно прерыванием) о необходимости вывода следующей порции данных. Схема управления также препятствует переполнению, отвергая попытки записи лишних данных и немедленно сообщая об ошибке (обычно через соответствующий программно-читаемый бит состояния). При вводе данных через буфер FIFO его схема управления следит за наличием свободного места в буфере и при превышении порот заполнения также сигнализирует прерыванием. Аналогично, она не позволяет считать данные из пустого буфера и сообщает об этом соответствующим битом. Также схема управления буфера должна позволять его очищать по инициативе процессора, сообщать о количестве (или хотя бы о наличии) данных в буфере по запросу процессора. Управляемость порогов позволяет программе в зависимости от внешнего темпа обмена данными, возможностей и текущей загруженности компьютера выбрать оптимальный режим обмена, позволяющий и не «суетиться по мелочам», и не допускать переполнений/опустошений буфера. У двунаправленных устройств, как правило, имеется пара FIFO-буферов (для полного дуплекса), для симплексных устройств достаточно одного. Например, в контроллере НГМД (хотя это и блочное устройство, но медленное) имеется один переключаемый буфер. Буферы FIFO применяются в СОМ-портах, LPT-портах и ряде других потоковых узлов компьютера. Без FIFO-буферов, например, невозможен фоновый обмен данными с модемами на скоростях выше 19,2 Кбит/с. Буферная память принтеров также является буфером FIFO, правда, не очень гибким и «общительным» (о степени своей наполненности по стандартному интерфейсу он не сообщает).

Буферы современных устройств внешней памяти имеют более сложную организацию, обеспечивающую кэширование данных: однако и они используют вышеописанные принципы организации. Однопортовые буферы большого объема, как уже говорилось, могут вносить заметную задержку. Для потоковых применений (например, для воспроизведения мультимедийных файлов) эта задержка обычно не очень существенна и на производительность не влияет. Однако для приложений «петлеобразного» характера, когда буфер оказывается в цепочке запрос-ответ, его задержка может приводить к снижению производительности. Так, например, передача данных по сети обычно представляет собой последовательность кадров данных, на каждый из которых передающая сторона ожидает кадр подтверждения. Если каждый кадр будет «просиживать» в буфере, естественно, производительность снизится. От этой беды спасает метод «скользящего окна», при котором передающая сторона допускает некоторое отставание приема подтверждений. Примерно та же идея используется и в синхронном режиме передачи на шине SCSI.

1 EPP - быстродействующий параллельный порт

2 Максимальный размер пакета (кадра) для Ethernet — около 1,5 Кбайт (для технологий TokenRing и FDDI гораздо больше). Сетевые карты Ethernet на 10 Мбит для шин ISA/EISA имели буфер по крайней мере на один кадр, а полнодуплексные — на два. Значительно более эффективными были карты с большим объемом буфера (так, карты ЗС509В были гораздо «шустрее», чем ЗС509).

3 Для 100-мегабитных (Fast Ethernet) карт PCI с прямым управлением шиной оказалось возможным использование всего пары 64-байтных буферов (по одному на прием и передачу, для полного дуплекса). Каждый буфер поделен пополам, и половинки чередуются (ping-pong buffer): при приеме пакета из сети сначала заполняется первая половина, затем вторая. Как только первая половина заполнится, карта запрашивает управление шиной и, как только его получает, выгружает (сама) данные из этой половинки в память. Как только заполнится вторая половина, карта переключится на заполнение первой (уже свободной) и даст следующий запрос на управление для выгрузки второй половины. По мере приема кадра эта «игра в пинг-понг» продолжается; передача кадра выглядит аналогично. Такое упрощение организации (это технически проще обеспечения двух-портотвого доступа к локальной памяти) стало возможным благодаря высокой пропускной способности шины и гарантированному времени предоставления доступа к шине (см. п. 12.5.3). Однако для карт Gigabit Ethernet этот вариант уже не проходит, и на них устанавливают буферы на полный кадр.




1. звездочек. Он основан на введении в больную вену специального лекарственного препарата склерозанта котор.html
2. Имидж организации как способ воздействия на социальное поведение
3. тема. Аналізатор нервовий апарат який здійснює функцію аналізу і синтезу подразників котрі прийшли з зовні
4. Денежное обращение и денежная система 1
5. тематичного і обґрунтованого вивчення філософських проблем; дозволяє напрацювати прийоми розумової діял
6. Учёт движения материалов
7. простенькі обробки регіональних тобто поширених у певних областях пісень здобули славу в усьому світі
8. Все что совершает человек проходит через его сознание
9. тематическое уничтожение по заранее разработанному плану Германией и её союзниками в ходе Второй Мировой во
10. Що таке клітинна стінка Які її функції 2.html
11. на тему- Искусство каллиграфии Студентки I курса 14 группы направления подготовки- 6
12. Хрустальный район Владимирская область
13. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ПРИНЦИПОВ ФОРМИРОВАНИЯ И ОЦЕНКИ ФИНАНСОВОГО ПОТЕНЦИАЛА ПРЕДПРИЯТИЯ [3
14. Основы технологии пива Пиво 60-х годов
15. на тему- Анализ финансовых результатов деятельности предприятия на примере открытого акционерного обществ
16. Ярослава Мудрого А
17. тематике которая может вас заинтересовать
18. Контрольная работа Федеральная корпорация страховых депозитов США и ее роль в защите частных вкладч
19. По старой Смоленской дороге
20. 47w X 11.08h cm Floss Used for Full Stitches- Symbol Strnds