Подтвердить что ты не робот

Прямой доступ к памяти DMA - как это работает?

Я читал, что если DMA доступен, то процессор может направлять длинные запросы чтения или записи блоков диска в DMA и концентрироваться на другой работе. Но DMA в память/канал управления занят во время этой передачи. Что еще может сделать процессор за это время?

4b9b3361

Ответ 1

Прежде всего, DMA (per se) почти полностью устарел. Как первоначально было определено, контроллеры DMA зависели от того, что шина имела отдельные строки для утверждения для чтения/записи памяти и чтения/записи ввода/вывода. Контроллер DMA воспользовался этим, утверждая одновременно чтение и чтение ввода-вывода (или наоборот). Затем контроллер DMA генерировал последовательные адреса на шине, и данные считывались из памяти и записывались на выходной порт (или наоборот) каждый цикл шины.

Шина PCI, однако, не имеет отдельных строк для чтения/записи памяти и чтения/записи ввода/вывода. Вместо этого он кодирует одну (и только одну) команду для любой данной транзакции. Вместо того, чтобы использовать DMA, PCI обычно выполняет передачу по шине. Это означает, что вместо контроллера DMA, который передает память между устройством ввода/вывода и памятью, устройство ввода-вывода само передает данные непосредственно в память или из памяти.

Что же еще может сделать CPU в то время, все зависит. Назад, когда DMA был обычным явлением, ответ, как правило, был "немного" - например, в ранних версиях Windows, чтение или запись гибкого диска (который использовал контроллер DMA) в значительной степени заблокировал систему на время.

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

Ответ 2

Хорошо, что следует отметить, что процессорная шина всегда частично используется DMA, а остальная часть канала может использоваться для любых других заданий/процессов для запуска. Это ключевое преимущество DMA по сравнению с I/O. Надеюсь, это ответили на ваш вопрос: -)

Ответ 3

Но DMA для данных памяти/канала управления занят во время этой передачи.

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

Ответ 4

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