В чем разница между DMA и IO с отображением памяти? Они оба похожи на меня.В чем разница между DMA и IO с отображением памяти?
ответ
Входы/выходы с отображением памяти позволяют процессору управлять аппаратным обеспечением путем чтения и записи определенных адресов памяти. Обычно это будет использоваться для операций с низкой пропускной способностью, таких как изменение битов управления.
DMA позволяет аппаратно напрямую считывать и записывать память без с использованием ЦП. Обычно это будет использоваться для операций с высокой пропускной способностью, таких как ввод/вывод на диск или видеовход камеры.
Значит, они в основном то же самое, но в противоположных направлениях? – f126ck
Не совсем. DMA - это когда два устройства, которые не являются центральным процессором, используют шину памяти для обмена данными (при этом одно устройство обычно является основной памятью, а процесс управляется процессором). Отображаемый память IO - это процессор, который разговаривает с устройством на шине памяти, которая не является основной памятью. – jdizzle
Почему требуется отображать буфер dma, даже если движок dma находится на устройстве? – ransh
Память с отображением памяти означает, что регистры устройства отображаются в пространство памяти аппарата - когда эти области памяти считываются или записываются процессором, это чтение или запись на устройство, а не реальная память. Чтобы перенести данные с устройства на реальный буфер памяти, ЦП должен считывать данные из регистров устройств с отображением памяти и записывать их в буфер (и наоборот для передачи данных на устройство).
С передачей DMA устройство может напрямую передавать данные в или из реального буфера памяти. ЦП сообщает устройству местоположение буфера, а затем может выполнять другую работу, пока устройство напрямую обращается к памяти.
Поскольку другие уже ответили на этот вопрос, я просто добавлю немного истории.
В прежние времена на оборудовании x86 (ПК) имелось только пространство ввода/вывода и пространство памяти. Это были два разных адресных пространства, доступ к которым осуществлялся с использованием разных протоколов шины и различных инструкций CPU, но позволяющих разговаривать через один и тот же слот для плагинов.
Большинство устройств используют пространство ввода-вывода как для интерфейса управления, так и для интерфейса массовой передачи данных. Простым способом доступа к данным было выполнение множества инструкций ЦП для передачи данных по одному слову за раз от адреса ввода-вывода до адреса памяти (иногда называемого «бит-биение»).
Для перемещения данные из устройств в память хоста автономно, не было поддержки в протоколе шины ISA для устройств для инициирования передач. Было изобретено компромиссное решение: контроллер DMA. Это был набор аппаратных средств, которые были загружены процессором и инициировали передачи для перемещения данных с адреса ввода-вывода устройства в память или наоборот. Поскольку адрес ввода-вывода одинаков, контроллер DMA выполняет те же операции, что и процессор, но немного более эффективно и дает некоторую свободу работать в фоновом режиме (хотя, возможно, недолго, поскольку он не может разговаривать с памятью).
Быстрая перемотка вперед в дни PCI и протоколы шины стали намного умнее: любое устройство может инициировать передачу. Таким образом, можно, скажем, получить карту контроллера RAID для перемещения любых данных, которые ему нравятся, или от хоста в любое время, когда это нравится. Это называется режимом «мастер шины», но по какой-то причине люди продолжают ссылаться на этот режим как «DMA», хотя старый контроллер DMA давно ушел. В отличие от старых передач DMA, часто нет соответствующего адреса ввода-вывода, и режим мастер-шины часто является единственным интерфейсом, присутствующим на устройстве, без какого-либо режима «бит-стук» центрального процессора.
В ядре Linux «DMA» упоминается в файлах более 5000 C, это может быть причиной, по которой все еще говорят о DMA. – JohnnyFromBF
Прямой доступ к памяти (DMA) - это способ передачи данных с ввода-вывода в память и из памяти в I/O без вмешательства CPU. Для этой цели используется специальный чип, называемый контроллером DMA, для управления всеми действиями и синхронизацией данных. В результате, по сравнению с другими методами передачи данных, DMA намного быстрее.
С другой стороны, виртуальная память действует как кеш между основной памятью и вторичной памятью.Данные извлекаются заранее из вторичной памяти (жесткий диск) в основную память, так что данные уже доступны в основной памяти, когда это необходимо. Это позволяет нам запускать больше приложений в системе, чем у нас достаточно физической памяти для поддержки.
- 1. В чем разница между RDMA и DMA?
- 2. В чем разница между '_io' и 'io'?
- 3. Файлы с отображением памяти заменяют путь IO
- 4. Запись буферов DMA в файл с отображением памяти
- 5. В чем разница между «/» и «/ *»?
- 6. В чем разница между Task и IO в Scalaz?
- 7. В чем разница между непрозрачностью, видимостью и отображением в css?
- 8. В чем разница между группировкой и отображением в коллекторах (Java)?
- 9. В чем разница между зависимостями maven: org.apache.commons: commons-io и commons-io: commons-io?
- 10. В чем преимущества файлов с отображением памяти?
- 11. Разница между отображением сообщений и переопределением windowproc
- 12. В чем разница между async io и do io в non-main thread?
- 13. Python IO Gurus: в чем разница между этими двумя методами?
- 14. В чем разница между отображением CADisplayLinkLinkWithTarget: селектором: и отображением UIScreenLinkWithTarget: селектор :?
- 15. В чем разница между $ _. и $ _
- 16. В чем разница между $ {} и # {}?
- 17. В чем разница между + и%?
- 18. В чем разница между # {} $ {} и% {}?
- 19. Файл с отображением и отображением Java-памяти
- 20. В чем разница между D3DERR_OUTOFVIDEOMEMORY и E_OUTOFMEMORY
- 21. В чем разница между «и»?
- 22. В чем разница между `{}` и `[]`?
- 23. В чем разница между == и ===?
- 24. В чем разница между «+» и «\ +»?
- 25. В чем разница между + = и = +?
- 26. В чем разница между/* ... */и/** ... */
- 27. В чем разница между: и +:
- 28. В чем разница между $ {} и # {}
- 29. В чем разница между = и: =
- 30. В чем разница между && и &?
Связанные с этим: [драйверы устройств Linux, второе издание: глава 13: mmap и DMA] (http://www.xml.com/ldd/chapter/book/ch13.html); Первое чтение ответов здесь мне очень помогло. – sdaau