Прямой доступ к памяти (DMA)
Для передачи данных между контроллером ввода-вывода и оперативной памятью процессор тратит много времени, а в это время он мог бы заниматься обработкой какой–либо программы.
Чтобы освободить процессор от передачи данных из устройств ввода-вывода в память и обратно, используется метод прямого доступа к памяти без участия центрального процессора – DMA. Функции DMA может выполнять контроллер DMA системной шины на материнской плате или встроенный контроллер DMA в устройство ввода-вывода. Процессор, при получении команды ввода вывода передает все данные контроллеру DMA и дальше выводом занимается контроллер DMA, а процессор продолжает свою работу.
Модуль DMA способен дублировать функции процессора для передачи данных по системной шине. CPU передает ему информацию о:
· типе операции ( чтение или запись)
· адресе устройства ввода-вывода
· начальный адрес области ОП
· количество слов для передачи в ОП
После передачи этой информации CPU продолжает свою работу с другой задачей, а DMA занимается передачей данный в ОП, после которой посылает CPU сигнал прерывания о завершении передачи. Однако, т.к. и CPU и DMA для работы с ОП используют одну системную шину, то DMA приходится все время приостанавливать работу процессора для выполнения передачи. Однако, приостановка не подразумевает сохранение состояния регистров процессора, и, следовательно, не занимает дополнительное время. Просто CPU приостанавливает работу на 1 цикл системной шины.
Связь с системной шиной можно изобразить на схеме: ....
Для ускорения работы DMA были разработаны новые принципы:
1. Встраивание модуля DMA в контроллер ввода-вывода: в этом случае для передачи данных к устройству не используется системная шина
2. Создание отдельной шины ввода-вывода: устройство DMA передает данные устройствам через отдельную шину, не используя системную: