Прямой доступ к памяти


Прямой доступ к памяти ( DMA ) — это функция компьютерных систем, которая позволяет определенным аппаратным подсистемам получать доступ к основной системной памяти ( памяти с произвольным доступом ) независимо от центрального процессора (ЦП).

Без прямого доступа к памяти, когда ЦП использует запрограммированный ввод/вывод , он обычно полностью занят на протяжении всей операции чтения или записи и, таким образом, недоступен для выполнения другой работы. При DMA ЦП сначала инициирует передачу, затем выполняет другие операции во время передачи и, наконец, получает прерывание от контроллера DMA (DMAC), когда операция выполнена. Эта функция полезна в любое время, когда ЦП не может поддерживать скорость передачи данных, или когда ЦП необходимо выполнять работу, ожидая относительно медленной передачи данных ввода-вывода. Многие аппаратные системы используют DMA, включая контроллеры жестких дисков , видеокарты , сетевые карты и звуковые карты.. DMA также используется для внутричиповой передачи данных в многоядерных процессорах . Компьютеры с каналами DMA могут передавать данные на устройства и с устройств с гораздо меньшей нагрузкой на ЦП, чем компьютеры без каналов DMA. Точно так же обрабатывающий элемент внутри многоядерного процессора может передавать данные в свою локальную память и из нее, не занимая процессорное время, что позволяет выполнять вычисления и передачу данных параллельно.

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

Стандартный DMA, также называемый сторонним DMA, использует контроллер DMA. Контроллер прямого доступа к памяти может генерировать адреса памяти и инициировать циклы чтения или записи памяти. Он содержит несколько аппаратных регистров , которые могут быть записаны и прочитаны ЦП. К ним относятся регистр адреса памяти, регистр счетчика байтов и один или несколько регистров управления. В зависимости от того, какие функции предоставляет контроллер прямого доступа к памяти, эти управляющие регистры могут указывать некоторую комбинацию источника, адресата, направления передачи (чтение с устройства ввода-вывода или запись на устройство ввода-вывода), размер единица передачи и/или количество байтов для передачи в одном пакете. [1]

Чтобы выполнить ввод, вывод или операцию памяти в память, хост-процессор инициализирует контроллер DMA, подсчитывая количество слов для передачи и используемый адрес памяти. Затем ЦП дает команду периферийному устройству инициировать передачу данных. Затем контроллер прямого доступа к памяти предоставляет адреса и линии управления чтением/записью в системную память. Каждый раз, когда байт данных готов к передаче между периферийным устройством и памятью, контроллер прямого доступа к памяти увеличивает свой внутренний адресный регистр до тех пор, пока не будет передан полный блок данных.

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


Материнская плата компьютера NeXTcube (1990 г.). Две большие интегральные схемы ниже середины изображения — это контроллер прямого доступа к памяти (слева) и — что необычно — дополнительный выделенный контроллер прямого доступа к памяти (справа) для магнитооптического диска, использовавшегося вместо жесткого диска в первой серии. эта модель компьютера.
Несогласованность кэша из-за DMA