Что такое прямой доступ к памяти (DMA) и как он работает? [MiniTool Wiki]
What Is Direct Memory Access
Быстрая навигация:
Вы можете принять RDMA технология, позволяющая компьютерам в сети обмениваться данными в основной памяти без использования процессора, кеша или операционной системы любого компьютера. Но вы также можете использовать функцию DMA для прямой отправки данных с подключенного устройства в память материнской платы компьютера. Это сообщение от MiniTool в основном говорит о DMA.
Определение прямого доступа к памяти
Прежде всего, что такое прямой доступ к памяти? Прямой доступ к памяти может быть сокращен до DMA, что является особенностью компьютерных систем. Он позволяет устройствам ввода / вывода (I / O) получать доступ к основной системной памяти ( оперативная память ), независимо от центрального процессора (ЦП), что ускоряет операции с памятью.
Наконечник: Вам может быть интересен этот пост - 8 полезных решений для 100% исправления вашего процессора в Windows 10 .
Без прямого доступа к памяти, когда ЦП использует запрограммированные входы / выходы, он обычно полностью занят в течение всей операции чтения или записи, поэтому он не может выполнять другие задачи. При использовании DMA ЦП сначала инициирует передачу, затем выполняет другие операции во время передачи и, наконец, получает прерывание от контроллера DMA (DMAC), когда операция завершается.
Прямой доступ к памяти полезен, когда ЦП не может поддерживать скорость передачи данных или когда ЦП должен выполнять работу в ожидании относительно медленной передачи данных ввода-вывода.
Несколько аппаратных систем используют прямой доступ к памяти, например контроллеры дисководов, графические карты, сетевые карты и звуковые карты. DMA также используется для внутрикристальной передачи данных в многоядерных процессорах. По сравнению с компьютерами без каналов прямого доступа к памяти, компьютеры с каналами DMA могут передавать данные между устройствами с гораздо меньшей нагрузкой на ЦП.
Прямой доступ к памяти также может использоваться для «памяти в память» для копирования или перемещения данных в памяти. Он может передавать дорогостоящие операции с памятью (такие как большие копии или операции сбора данных) от ЦП к выделенному модулю DMA. DMA играет важную роль в вычислительных архитектурах сети на кристалле и памяти.
Как работает прямой доступ к памяти?
Тогда как работает прямой доступ к памяти? Стандартный прямой доступ к памяти (также называемый сторонним DMA) использует контроллер DMA. Контроллер DMA может создавать адреса памяти и запускать циклы чтения или записи памяти. Он охватывает несколько аппаратных регистров, которые могут быть прочитаны и записаны ЦП.
Эти регистры состоят из регистра адреса памяти, регистра счетчика байтов и одного или нескольких регистров управления. В зависимости от функций, предоставляемых контроллером прямого доступа к памяти, эти регистры управления могут назначать некоторую комбинацию источника, назначения, направления передачи (чтение или запись на устройство ввода-вывода), размер блока передачи и / или количество байты для передачи одним пакетом.
Для выполнения операций ввода, вывода или преобразования памяти в память главный процессор инициализирует контроллер DMA, указав количество слов для передачи и адрес памяти, который необходимо использовать. Затем ЦП дает команду периферийному устройству начать передачу данных.
Затем контроллер прямого доступа к памяти предлагает адреса и линии управления чтением / записью в системную память. Каждый раз, когда байт данных готовится к передаче между периферийным устройством и памятью, контроллер DMA увеличивает свой внутренний адресный регистр до тех пор, пока не будет передан полный блок данных.
Режимы работы
Прямой доступ к памяти работает по-разному в разных режимах работы.
В режиме серийной съемки
В пакетном режиме полный блок данных передается в непрерывной последовательности. Как только ЦП разрешает контроллеру DMA доступ к системной шине, контроллер DMA передаст все байты данных в блоке данных перед тем, как освободить управление системными шинами обратно на ЦП, но это приведет к тому, что ЦП будет неактивен на некоторое время. довольно долгое время. Этот режим также называется «режимом блочной передачи».
Циклический режим кражи
Режим перехвата цикла используется в системе, где ЦП не может быть отключен на время, необходимое для режима пакетной передачи. В режиме перехвата цикла контроллер DMA получает доступ к системной шине с помощью сигналов BR (запрос шины) и BG (предоставление шины), которые аналогичны пакетному режиму. Эти два сигнала управляют интерфейсом между ЦП и контроллером прямого доступа к памяти.
С одной стороны, в режиме перехвата цикла скорость передачи блока данных не такая высокая, как в пакетном режиме, но, с другой стороны, время простоя ЦП не такое большое, как в пакетном режиме.
Прозрачный режим
Прозрачный режим требует больше всего времени для передачи блоков данных, но он также является наиболее эффективным с точки зрения общей производительности системы. В прозрачном режиме контроллер прямого доступа к памяти передает данные только тогда, когда ЦП выполняет операции, не использующие системные шины.
Основное преимущество прозрачного режима заключается в том, что ЦП никогда не прекращает выполнение своих программ, а передача прямого доступа к памяти бесплатна с точки зрения времени, а недостатком является то, что аппаратное обеспечение должно определять, когда ЦП не использует системные шины, что может быть сложным. Это также называется «скрытым режимом передачи данных DMA».