Передача данных между устройством и памятью

Мы рассмотрели два разных способа, позволяющих устройству связываться с процессором. Эти две технологии – опрос и прерывания ввода-вывода – создают основу для двух способов реализации передачи данных между устройством ввода-вывода и памятью. Обе эти технологии лучше всего работают с устройствами, имеющими низкую пропускную способность, где мы наиболее заинтересованы в снижении стоимости контроллера устройства и интерфейса, чем в предоставлении более высокой пропускной способности передачи данных. И опрос, и передача данных, основанная на использовании прерываний, возлагают весь груз ответственности за перемещение данных и за управление этим перемещением на процессор. После рассмотрения этих двух схем мы рассмотрим схему, которая более подходит для высокопроизводительных устройств или наборов устройств.

Процессор может использоваться для передачи данных между устройством и памятью, основанной на опросе. В приложениях реального времени процессор загружает данные из регистров устройства ввода-вывода и сохраняет их в памяти.

В качестве альтернативы используется механизм, делающий передачу данных управляемой с помощью прерываний. В этом случае операционная система по- прежнему будет передавать данные из устройства и в него небольшими порциями байтов. Но, поскольку операции ввода-вывода управляются прерываниями, операционная система, пока данные считываются с устройства или записываются в него, просто работает над решением других задач. Когда операционная система заметит прерывание от устройства, она считывает состояние на наличие ошибок. Если ошибки отсутствуют, операционная система может предоставить новую порцию данных, например, за счет последовательности записей с отображением на память. После передачи последнего байта согласно запросу ввода-вывода и завершения операции ввода-вывода операционная система может проинформировать об этом программу. Вся работа в данном процессе – обращение к устройству и к памяти для передачи каждой порции данных – проделывается процессором и операционной системой.

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

DMA реализуется с помощью специализированного контроллера, который передает данные между устройством ввода-вывода и памятью независимо от процессора. DMA-контроллер становится ведущим и напрямую управляет операциями чтения или записи между ним самим и памятью. При DMA-передаче выполняются три шага:

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

2) Блок DMA запускает операцию на устройстве и принимает решение на связь.

3) Когда данные доступны (с устройства или из памяти), он передает эти данные.

DMA-устройство предоставляет адрес памяти для чтения или записи. Если запрос требует более одной передачи данных, блок DMA генерирует следующий адрес памяти и инициирует следующую передачу. Используя этот механизм, блок DMA может завершить всю передачу, которая может иметь длину в тысячи байт, не надоедая при этом процессору. Многие DMA-контроллеры имеют небольшой объем памяти, позволяющий им более гибко работать либо при задержках в передаче, либо при ожидании получения ведущей роли.

Как только DMA-передача завершится, контроллер прерывает работу процессора, который затем может установить путем опроса DMA-устройства или изучения памяти факт успешного завершения операции.

В компьютерной системе может быть несколько устройств DMA. Например, в компьютере с единой шиной «процессор-память» и несколькими шинами ввода-вывода каждый контроллер шины ввода-вывода зачастую содержит DMA- процессор, управляющий всеми передачами между устройством на шине ввода- вывода и памятью.

Уточнение. Для дальнейшего сокращения необходимости прерывания процессора и задействования его в обработке запросов на ввод-вывод, которые могут потребовать сразу несколько текущих операций, контроллер ввода-вывода может быть сделан более разумным. Такие контроллеры часто называют процессорами ввода-вывода (а также контроллерами ввода-вывода или контроллерами канала). Эти специализированные процессоры в основном исполняют серии операций ввода-вывода, называемые программами ввода-вывода. Программа может храниться в процессоре ввода-вывода или же она может храниться в памяти и извлекаться из нее процессором ввода-вывода. При использовании процессора ввода-вывода операционная система обычно настраивает программу ввода-вывода, в которой прописываются исполняемые операции ввода-вывода, а также размер и адрес передачи для любых операций чтения или записи. Затем процессор ввода-вывода извлекает операции из программ ввода-вывода и прерывает работу основного процессора только по завершении всех программ. DMA-процессоры по сути представляют собой процессоры специального назначения (обычно непрограммируемые и исполняемые на одном кристалле, а процессоры ввода-вывода часто реализуются с помощью микропроцессора общего назначения, выполняющего специализированную программу ввода-вывода.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: