ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
9 июля
305639 Топик полностью
fk0, легенда (06.02.2012 23:55, просмотров: 129) ответил rezident на Хотелось бы еще заметить, что DMA дает существенный выигрыш, когда а) работает с памятью и через свою отдельную (от ядра) шину и б) на больших потоках. Переслать десять байт "вручную" может оказаться быстрее, чем запрограммировать DMA для
Не согласен. То-есть 10 может и проще. Или даже 100000 при наличии достаточно глубокого FIFO. А когда нет FIFO, но есть DMA -- понятно, что DMA даёт выигрыш, независимо от шины, в том, что он освобождает CPU от тягомотной обработки прерывания на каждом байте. Нет, понятно, если в каких-то задачах CPU имеет один единственный интерфейс занятый в одну единицу времени (DDS имени Л. И.) -- это всё не имеет никакого значения. Но это всё узкие случаи, на самом-то деле. Если рассмотреть бытовой MP3-проигрыватель: там дисплей обновлять нужно, одновременно в I2S звук выдавать, одновременно через SPI флешку читать, одновременно кнопки обслуживать и что-нибудь ещё, например. Конечно DMA лучше, если нет большого FIFO. Да и если поток данных действительно БОЛЬШОЙ, то даже ручное перекладывание из ОЗУ в FIFO становится накладным, лучше DMA.
[ZX]