Разница между DMA и Cache - PullRequest
       12

Разница между DMA и Cache

0 голосов
/ 03 марта 2012

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

А как же DMA? Это позволяет вам получить доступ к этой основной памяти с меньшей задержкой?

Может ли кто-нибудь объяснить различия, или почему я просто запутался?

Ответы [ 3 ]

3 голосов
/ 03 марта 2012

DMA - это аппаратное устройство, которое может перемещаться в / из памяти без использования инструкций процессора.

Например, аппаратное устройство (скажем, ваше звуковое устройство PCI) хочет, чтобы аудио воспроизводилось. Вы можете либо:

  1. Пишите слово одновременно с помощью инструкций CPU mov.
  2. Настройка устройства DMA. Вы даете ему начальный адрес, место назначения и количество байтов для копирования. Передача теперь происходит, когда процессор что-то еще вместо ложной подачи аудиоустройства.

DMA может быть очень сложным (сбор рассеяния и т. Д.) И зависит от типа шины и системы.

1 голос
/ 26 января 2016

Я знаю, что уже немного поздно, но ответ на этот вопрос поможет кому-то вроде меня. Думаю, согласившись с вышеизложенными ответами, я думаю, что вопрос касался кеша.

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

DMA (прямой доступ к памяти), дадействительно позволяет вам получить доступ к основной памяти.Но я думаю, что лучшее определение в том, что он позволяет вам получить доступ к системному реестру, доступ к которому имеет только процессор.@Ronnie и @Yann Ramin были правы в том, что DMA может быть аппаратным обеспечением устройства, поэтому он может использоваться вашим последовательным периферийным устройством для доступа к системным регистрам, но он также может использоваться для передачи данных из памяти в память между двумя ядрами.

Более подробную информацию о DMA можно получить из википедии о режимах, в которых DMA может обращаться к системной памяти.Я объясню это просто

Пакетный режим: DMA полностью контролирует шину, процессор в это время простаивает.Данные передаются в пакете (в целом) без прерывания.

Режим циклического кражи: в этом случае данные передаются по одному байту за раз, передача идет медленно, но процессор не работает.

0 голосов
/ 03 марта 2012

Я полностью согласен с первым ответом, и есть некоторые общие дополнения ...

На большинстве аппаратных средств DMA вы также можете настроить его для передачи из памяти в память - не всегда задействованы внешние устройства,Также, в зависимости от системы, вам может потребоваться или не потребоваться синхронизация кэш-памяти ЦП в программном обеспечении до (или после передачи), поскольку данные, которые DMA передает в / из памяти, могут выполняться без ведома кеш-памяти ЦП.1003 *

Преимущество любого прямого доступа к памяти состоит в том, что центральный процессор (ы) может / может выполнять другие действия одновременно.Конечно, когда ЦПУ также требуется доступ к памяти, только один может получить доступ, а другой должен ждать.

Память памяти Память DMA часто используется во встроенных системах для повышения производительности или может быть жизненно важной для возможностичтобы получить доступ к некоторым частям памяти вообще.

Чтобы ответить на вопрос, DMA и CPU-кеш - это совершенно разные вещи и не сравнимые.

...