В такой реализации DMA не существует контроллера DMA, а также номера входа контроллера DMA. Некоторые старые устройства с интерфейсом PCI, а именно, реализации звуковых карт семейства Sound Blaster, использовали DMA- контроллер 8. Задачи По Налогообложению С Решениями Скачать. IBM PC. Такое использование, безусловно, является устаревшим для PCI, но поддерживалось с целью обеспечения полной совместимости по ПО и драйверам со звуковыми картами. Sound Blaster для шины ISA. Данная поддержка называется «Distributed DMA» (D- DMA) и реализована аппаратно как в устройстве, так и в логике моста PCI- ISA, в которой на PCI- системах размещена и логика DMA- контроллера 8.
IBM PC). В реализации используется два запроса: первый запрос от устройства к мосту PCI- ISA, второй — от моста к оперативной памяти ПК. Кроме упомянутых реализаций Sound Blaster, практически никакие устройства PCI не используют понятие «номер входа DMA- контроллера», как и 8. В операционных системах со страничной виртуальной памятью, таких, как Windows и семейство UNIX, непрерывный регион виртуальных адресов может быть реализован разрывно расположенными физическими страницами. Исполнение DMA по такому региону представляет собой довольно сложную задачу. Также сложной задачей является исполнение DMA по отгружаемой памяти.
Решение этой задачи требует выявления физических страниц, реализующих регион, и их блокировку от отгрузки обращением к подсистеме виртуальной памяти. Далее становится возможным нахождение физических адресов страниц региона, которые в общем случае не являются непрерывными и формируют так называемый «список рассеяния/сборки» (англ.
Для активации поддержки в ОСWindows требуется вызов Io. Get. Dma. Adapter с параметром DEVICE. Данная архитектура называется «цепной DMA» (англ. Хороший пример реализации данной архитектуры в очень сложном и развитом виде дан в спецификации оборудования 1. OHCI. По некоторым сведениям, данная архитектура под названием «канальные программы» использовалась ещё в IBM 3. СССР как ЕС ЭВМ. Недостатки: высокая сложность устройства, хотя и меньшее количество транзисторов, чем в предыдущем варианте. Например, контроллер USB UHCI (согласно спецификации на сайте Intel) требует около 5.
Поддержка SGL в межшинном оборудовании, при которой представление физически разрывного буфера для стороны устройства выглядит физически непрерывным. Таковое оборудование называется IOMMU (англ. Реализовывалось как на компьютерах фирмы Sun Microsystems для шины SBus, так и на компьютерах DEC Alpha для шины PCI. До недавних времен практически никогда не реализовывалось в обыкновенных x. PCI системах, хотя в настоящее время есть тенденция к изменению этой ситуации, главным образом с целью повышения производительности гипервизороввиртуальных машин. Всегда реализовывалось для шины AGP под названием AGP GART с целью облегчить произвольный доступ видеопроцессора к текстурам, находящимся в основной памяти.
Со стороны устройства данное оборудование было стандартизировано спецификацией AGP, со стороны программного обеспечения стандартизации не существовало, и реализация зависела от производителя микросхемы северного моста между AGP и памятью (отсюда необходимость в «драйвере. AGP», таком, как agp.
Intel). Набор вызововядер развитых операционных систем, таких, как Windows, всегда содержал архитектурную абстракцию IOMMU (Map. Transfer и Get. Scatter. Gather. List, эти же вызовы поддерживают и bounce buffer, понимаемый как разновидность IOMMU), позволяющую одному и тому же драйверу устройства поддерживать его при присоединении через различные IOMMU.
Недостатки: требование сложной логики уже не в устройстве, а в платформе. Первоначальный контроллер жёсткого диска компьютера IBM PC/AT не поддерживал DMA, и требовал передачи всех данных дискового ввода- вывода инструкциями REP INSW/REP OUTSW через порт 0x. В начале 1. 99. 0- х годов диски MFM/RLL вышли из употребления («вымерли»), сменившись дисками IDE, но регистровый интерфейс ПО к контроллеру не изменился. Низкая производительность такого контроллера стала серьёзной проблемой, особенно на системах PCI. Помимо требования нескольких циклов PCI на передачу каждых двух байт данных, это приводило к загрузке процессора дисковым вводом- выводом. Для решения проблемы ряд компаний, в том числе Intel, разработали контроллеры IDE с поддержкой DMA. Контроллеры были и остаются несовместимыми по ПО между различными производителями, хотя совместимость всех Intel IDE/ATA/SATA снизу вверх более или менее поддерживается.
Также особенностью этой поддержки является использование новых команд протокола IDE/ATA, а значит, и требование поддержки DMA не только контроллером, но и самим жёстким диском. Около 2. 00. 0 года поддержка DMA по шине IDE/ATA развилась в сторону увеличения тактовой частоты шины, что потребовало нового типа кабеля от контроллера к диску с удвоенным числом проводников меньшего размера. Эта технология называлась «Ultra DMA» (UDMA). Многие операционные системы требовали действий администратора для использования IDE DMA. Картинка Скрипичный Ключ. Так, например, стандартные ядра Linux до примерно 2. В семействе ОСWindows поддержка IDE DMA появилась сначала только для Intel в пакетах обновлений к ОСWindows NT 4 и требовала на большинстве систем ручного редактирования реестра для задействования. В ОСWindows 2. 00.
НОУ ИНТУИТ . Работой каждого устройства управляет специальный контроллер. При необходимости выполнения ввода- вывода центральный процессор генерирует прерывание, в результате которого вызывается операционная система, в свою очередь, в качестве реакции на прерывание запускающая драйвер устройства, соответственно, активизирующий его контроллер. Каждый контроллер устройства имеет локальный буфер – специализированную память для обмена информацией между компьютером и устройством. Для того, чтобы контроллер мог начать вывод на устройство, предварительно центральный процессор (точнее, драйвер устройства, запущенный на нем) должен переслать информацию из заданной области оперативной памяти в буфер устройства. Далее контроллер устройства уже выполняет вывод информации из буфера на само устройство (например, записывает ее в заданную область жесткого диска). По окончании обмена информацией, контроллер генерирует сигнал о прерывании (interrupt) по системной шине, этим информируя процессор об окончании операции.
Для того, чтобы избежать повторных пересылок больших объемов информации, в современных компьютерах применяют DMA (Direct Memory Access) – контроллеры – контроллеры с прямым доступом к оперативной памяти. Такие контроллеры используют при обмене с устройством не свою специализированную память, а напрямую область оперативной памяти, в которой и размещается буфер обмена. Обработка прерываний. Операционную систему можно рассматривать как программу, управляемую прерываниями (interrupt- driven program). Прерываниецентрального процессора передает управление подпрограмме обработки данного вида прерываний, являющейся частью ОС.
В большинстве компьютеров этот механизм реализован через вектор прерываний (interrupt vector) – резидентный массив в оперативной памяти, в котором хранятся доступные по номерам прерываний адреса подпрограмм- обработчиков прерываний (модулей ОС). При обработке прерывания аппаратура и ОС сохраняют адрес прерванной команды. При возобновлении вычислений будет вновь повторено выполнение прерванной команды. Очевидно, что при обработке прерывания, в свою очередь, может возникнуть другое прерывание. В этом случае новое входящее прерываниезадерживается (disabled),и информация о нем запоминается в очереди прерываний – системной структуре ОС, обеспечивающей поочередную обработку всех возникших прерываний. Кроме прерываний, генерируемых аппаратурой неявно при вычислениях (например, отсутствие страницы в оперативной памяти), возможно также программируемое прерывание (trap ; дословно – ловушка ) с помощью специальной команды процессора, - например, при обнаруженной ошибке в программе.
В случае такого прерывания также работает общий механизм запуска обработчика прерывания – части ОС. Таким образом, с упрощенной точки зрения, ОС можно рассматривать как набор обработчиков прерываний. При прерывании ОС сохраняет состояние процессора – значения регистров и значениесчетчика команд (program counter – PC) – адреса прерванной команды . Обработчик прерывания в ОС определяет по содержимому сегмента объектного кода, какого вида прерывание возникло и какие действия по его обработке следует предпринять. Среди возможных видов прерываний, кроме фиксации различных ошибок, имеются также прерывания по таймеру – периодические прерывания через определенный квант времени, предназначенные для опроса устройств (polling) – действий операционной системы по периодической проверке состояния всех портов и внешних устройств, которое может меняться с течением времени: например, к USB- порту была подключена флэшка; принтер закончил печать и освободился, и т. ОС выполняет реконфигурацию системы и корректирует системные таблицы, хранящие информацию об устройствах. Архитектура ввода- вывода.
На. рис. На аппаратном уровне – команда ввода- вывода переводит процессор в состояние ожидания (idle) до следующего прерывания. При данном режиме в каждый момент выполняется не более одного запроса на ввод- вывод; одновременный ввод- вывод отсутствует. Синхронныйвывод выполняют всем программистам привычные операторы вида println(x). При их использовании в программах мы не задумываемся над тем, что используем достаточно неэффективный вариант синхронного ввода- вывода. Однако до сих пор мышление большинства программистов – последовательное, в том смысле, что о своей программе они мыслят как о чисто последовательно выполняемой, и вообще не думают о возможности какого- либо распараллеливания. При отладке программы, либо если размер выводимой информации невелик, это обычно вполне допустимо. Асинхронный ввод- вывод – ввод- вывод, выполняемый параллельно с выполнением основной программы.
Таким образом, операция асинхронного обмена как бы разбивается на две: начать ввод- вывод и закончить ввод- вывод. Последняя выполняется для того, чтобы в этом месте программа все же ожидала завершения обмена, когда его результат необходим для дальнейших вычислений. Такой подход к реализации обмена более труден для понимания программистами и может привести к ошибкам (например, использована только операция начала ввода- вывода, а вызов операции его окончания забыт). Таблица состояния устройств. На системном уровне, при обмене происходит следующее. Выполняется системный вызов (system call) – запрос к ОС путем вызова системной подпрограммы, в данном случае – чтобы позволить пользователю ожидать завершения ввода- вывода. Операционная система хранит таблицу состояния устройств, в которой каждому устройству соответствует элемент, содержащий тип устройства, его адрес и состояние.
ОС индексирует таблицу устройств, с целью определения состояния устройства и модификации элемента таблицы для включения в нее информации о прерывании. Архитектура синхронного (a) и асинхронного (b) ввода- вывода иллюстрируется на.
Для каждого устройства хранится информация о его имени, состоянии, а для занятых устройств – адрес начала и длина порции информации, подлежащей обмену. Если для некоторого устройства (в примере – диск. Прямой доступ к памяти (Direct Memory Access – DMA) – более эффективный метод работы контроллеров устройств ввода- вывода, используемый для работы высокоскоростных устройств, способных передавать информацию со скоростью, близкой к скорости работы памяти.
DMA- контроллер передает блок данных из буферной памяти непосредственно в основную память, без участия процессора. Преимущество подобного широко применяемого подхода – не только в том, чтобы избежать лишней пересылки данных из одной области памяти в другую, но также в том, что прерывание в этом случае генерируется на каждый блок пересылаемых данных (хранящийся в буфере), но не на каждый пересылаемый байт, как при более традиционном способе обмена.