2017-01-28 3 views
1

Я задавался вопросом, какие операции могут обрабатывать/выполнять ЦП при выполнении операции памяти с помощью DMA-контроллера устройства, чтобы увеличить уровень параллелизма? И если кэш процессора/регистры пусты, как другая команда может быть извлечена без перемежения DMA в процессеО DMA и CPU Concurrency

Thx

+0

Любая конкретная архитектура в виду? Не все процессоры и DMA равны. Возможно, он слишком широк. –

ответ

1

Это вообще, по большому аппаратных средства, процессор может сделать более или менее ничего в то время как DMA выполняется. В общем, он просто продолжается с нормальным выполнением запущенных процессов или задач ядра под управлением ОС.

Относительно: [?]

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

As Я понимаю это, вы спрашиваете, что произойдет, если ЦП необходимо получить доступ к памяти. Обычно ЦПУ обычно часто обращается к памяти не только, когда «регистры или кеши пусты», и это действие может продолжаться более или менее нормально , когда выполняется DMA. Шина памяти уже обычно используется несколькими устройствами, включая несколько устройств с поддержкой DMA, PCI-карты, несколько ядер или несколько процессоров. memory controller несет ответственность за принятие и выполнение всех этих вопросов, включая арбитраж между ними.

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


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

К обычно я имею в виду нормальные механизмы используются, и вы можете ожидать, доступ к памяти для работы, но не то, что производительность не будут затронуты. Доступ к памяти с помощью процессора будет конкурировать с доступом DMA (и, возможно, другим доступом к другим ЦП, устройствам PCI, таким как видеокарты и т. Д.) И, скорее всего, будет медленнее, но на разумных аппаратных средствах, безусловно, не придется ждать DMA заканчивается!

+1

Хотя доступ к памяти DMA и CPU чередуется/управляется, это может вызвать заметные эффекты. Хорошо написанный алгоритм может полностью насытить пропускную способность шины памяти и «привязан к вводу/выводу». Если DMA происходит, ваш алгоритм замедляется, потому что передача DMA должна сжиматься через ту же шину! У меня это случилось, он был очень горд! – bazza

+1

Спасибо за подробную информацию. Я действительно не знал об этом «делящем». Контроллер памяти должен действительно делать какие-то сумасшедшие вещи. И @bazza, также должно быть трудно добраться до той точки, где вы можете проверить этот diff. Congrats! – zgulser

+1

@bazza - определенно! Я не подразумевал иначе. В принципе, путь к DRAM и Dram сам по себе является общим ресурсом, а использование DMA этого ресурса не является бесплатным.Тем не менее, DMA обычно не блокирует шину или что-то еще, поэтому доступ к памяти по-прежнему возможен. * Большинство алгоритмов не слишком чувствительны к пропускной способности памяти, а скорее к задержке, а хороший контроллер обычно удовлетворяет одновременным запросам разумным образом. – BeeOnRope