В чем разница между контроллером DMA и процессором ввода-вывода

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

Так в чем же разница в функциональности между контроллером IOP и DMA?


person Sach    schedule 24.04.2013    source источник
comment
А также являются ли контроллеры DMA частью IOP?   -  person Sach    schedule 24.04.2013
comment
Контроллеры dma не всегда выполняют передачу, в то время как процессор выполняет другие действия, иногда процессор удерживается, пока происходит dma. Это зависит от системы. Вы не указали систему. Я предполагаю, что ответ на ваш вопрос основан на x86 и связан с разницей между интерфейсами ввода-вывода и памяти.   -  person old_timer    schedule 25.04.2013
comment
Это синонимы. IOP - это то же самое, что и контроллер DMA. Как вам может сказать Википедия.   -  person Benjamin Gruenbaum    schedule 23.03.2015
comment
К тому же он в основном устарел, вот и все.   -  person Benjamin Gruenbaum    schedule 23.03.2015


Ответы (2)


В случае операций ввода-вывода, специфичных для памяти (простые примерные инструкции, такие как lw $ r1, $ r2,16 в случае процессора MIPS), ЦП должен получить данные из памяти, чтобы облегчить операции ввода-вывода. Таким образом, ЦП должен приостановить любую другую операцию и контролировать операцию ЧТЕНИЯ / ЗАПИСИ в памяти, пока она не будет завершена. Другими словами, ЦП полностью занят, пока выполняется операция чтения / записи без DMA. Если в это время процессор был свободен, он мог бы выполнить некоторые другие инструкции.

Прямой доступ к памяти (DMA):

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

Таким образом, операция чтения / записи также выполняется, и ЦП также выполняет некоторые другие инструкции в течение этого времени. Однако инициализация DMA по-прежнему требует вмешательства процессора. Таким образом, общая производительность увеличивается.

Процессор ввода / вывода

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

ЦП может выполнять специальную программу ввода-вывода, инициализируя базовые операции, такие как включение пути к данным и настройка устройств ввода-вывода, участвующих в работе. И затем он передает задачу процессору ввода-вывода, который затем выполняет остальные задачи и по завершении уведомляет процессор. Тем временем процессор выполняет другие важные инструкции.

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

Процессор ввода-вывода решает две проблемы:

  • Задачу ввода и вывода берет на себя ЦП. Хотя DMA не требует ЦП для обмена данными между периферийными устройствами и памятью, он только снижает нагрузку на ЦП. Потому что в DMA инициализация ввода и вывода по-прежнему выполняется CPU.
  • Проблема совместного использования интерфейса прямого доступа к памяти высокоскоростного оборудования в большой компьютерной системе. У большой компьютерной системы столько периферийных устройств, что она должна была совместно использовать интерфейс DMA Limited (для небольших компьютерных систем, таких как ПК, в каждом устройстве назначается высокоскоростной интерфейс DMA).
person axiqia    schedule 06.06.2017

DMA - это аппаратный модуль, способный передавать данные между периферийным устройством и памятью (UART, SPI, DAC, ADC) или двумя разными адресами памяти без использования времени обработки ЦП. Как правило, настройка модулей DMA включает в себя настройку адреса назначения в памяти и адреса источника, также пользователи могут настраивать такие параметры, как размер данных буфера, автоматическое приращение адреса и кольцевой буфер. Более того, такой модуль излучает сигнал IRQ в конце передачи данных.

Ниже приведен пример конфигурации DMA для микроконтроллера STM32F373. Пример показывает конфигурацию DMA между сигма-дельта АЦП и буфером памяти.

DMA_InitTypeDef  DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
DMA_DeInit(DMA2_Channel3);

/* DISABLE the DMA SDADC1 channel */
DMA_Cmd(DMA2_Channel3, DISABLE);
/* DMA channel SDADC1 Configuration */
DMA_InitStructure.DMA_BufferSize = bufferSize;

DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SDADC1->JDATAR;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)memoryAddress;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc;
DMA_InitStructure.DMA_MemoryDataSize =  DMA_MemoryDataSize_HalfWord;

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

DMA_Init(DMA2_Channel3, &DMA_InitStructure);

/* Avoid interrupt on DMA ENABLE */
DMA_ClearITPendingBit(DMA2_FLAG_TC3);

// Enable DMA2 Channel Transfer Complete interrupt
DMA_ITConfig(DMA2_Channel3, DMA_IT_TC, ENABLE);

/* Enable the DMA channel */
DMA_Cmd(DMA2_Channel3, ENABLE);

Что касается процессора ввода-вывода, я не совсем понял, что вы имели в виду. Но я могу сказать, что аппаратные модули GPIO могут сопоставлять общий цифровой ввод / вывод с адресом памяти, то есть: ввод / вывод ввода / вывода имеет адрес памяти, но операции чтения и записи фактически выполняются в периферийном регистре.

person Filipe Calasans    schedule 23.03.2015
comment
хотя это правда, это вообще не отвечает на вопрос, в чем разница между контроллером ios и dma. - person Benjamin Gruenbaum; 23.03.2015
comment
Итак, я провел небольшое исследование в Интернете и прочитал, что это всего лишь вопрос номенклатуры. DMA и процессор ввода-вывода относятся к одному и тому же. - person Filipe Calasans; 24.03.2015
comment
Об этом говорит мой комментарий выше :) - person Benjamin Gruenbaum; 24.03.2015
comment
Итак, я провел небольшое исследование в Интернете и прочитал, что это всего лишь вопрос номенклатуры. DMA и процессор ввода-вывода относятся к одному и тому же. Я обнаружил, что сложность контроллера DMA варьируется от архитектуры к архитектуре. Например: в архитектуре микроконтроллера DMA сможет только копировать данные с периферийного устройства в память без выполнения какой-либо логики, в то время как в конкретных архитектурах, ориентированных на центры обработки данных, DMA могут иметь небольшой и конкретный набор инструкций, способных искать ключи. - person Filipe Calasans; 24.03.2015