2015-03-20 4 views
1

Я знаю DMA выступают в качестве канала, в котором процессор получает обойден в то время как данные передаются между памятью/Peripheral, и в среднем время CPU может выполнять полезные операции ..Как точно DMA разгружает процессор/контроллер?

Но мой вопрос ...

Если передача DMA идет, DATA-BUS будет приобретаться контроллером DMA. Поэтому, если ЦП необходимо извлекать/извлекать данные для любой операции, ему нужен доступ к шине данных, где она будет использоваться данными DMA перевод. Итак, как именно мы можем сказать, что DMA выгрузил процессор?

enter image description here

ответ

4

Конечно, они могут совместно использовать автобус, но сравнивать DMA ни к DMA:

DMA:

Периф == шины ==> RAM

Нет DMA:

Periph == Bus ==> CPU == Bus ==> ОЗУ

Без DMA большинство периферийных устройств имеют один или несколько регистров, которые должны быть активно прочитаны ЦП для каждого блока данных (часто 1 или 4 байта). С DMA устройство может напрямую записываться в ОЗУ без использования процессора. На самом деле есть еще спор для автобуса, но не каждая операция, требуемая процессором для шины. Кроме того, некоторые периферийные устройства посылают или получают данные медленнее, чем скорость шины, что означает, что операция DMA не заполняет шину, оставляя место для использования ЦП.

+0

В микроконтроллерах, таких как STM32, у них есть дополнительная RAM, называемая CCRAM, которая связана с ЦП, которому MCU не нужен BUS. Есть ли у микропроцессоров такой вид ОЗУ, как они справляются с такими ситуациями? – Sorcrer

+0

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