|
IMX6S, Скорость SDMA |
|
|
|
Apr 7 2018, 17:27
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Приветствую.
Вопрос к тому, кто копал данный сабж поглубже, а именно на предмет работы контроллера SDMA. Решил посмотреть, с какой скоростью он перекачивает данные из памяти в память, копировал блоками по 64Кб (16384х32 бита) (больше за одну транзакцию он не может). Создал 21 транзакцию (buffer descriptor) (1376235 байт) И засек время, итого получилось 30 копирований в сек. Что составляет примерно 42 мегабайта в сек. Это очень мало, если сравнить, например, скорость выдачи данных на дисплей - при разрешении 1024х768, 32х битном цвете и 2хслойной графике - это будет 158 мегабайт в сек. Что в несколько раз быстрее. Конечно, здесь разные получатели, в первом случае память, во втором дисплейный порт, но это не должно давать такой разницы.
Может у кого есть варианты, почему так и можно-ли ускорить копирование?
|
|
|
|
|
 |
Ответов
|
Apr 14 2018, 19:03
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(mantech @ Apr 7 2018, 20:27)  копировал блоками по 64Кб (16384х32 бита) (больше за одну транзакцию он не может). Создал 21 транзакцию (buffer descriptor) (1376235 байт) И засек время, итого получилось 30 копирований в сек. Что составляет примерно 42 мегабайта в сек. Если я правильно понял, то это будет 64К * 21 * 30 = 39МБ/сек чтений и столько же записей. Цитата Это очень мало, если сравнить, например, скорость выдачи данных на дисплей - при разрешении 1024х768, 32х битном цвете и 2хслойной графике - это будет 158 мегабайт в сек. 26кадров/сек? Цитата Что в несколько раз быстрее. А вот тут начинается самое интересное - SDRAM память нетороплива при случайных обращениях, но шустро отдает/принимает данные блоками. Выдача данных на дисплей скорее всего идет через буфер, по последовательным адресам и издержки получаются минимальные. Стоит посмотреть имеется ли буфер (и какой) у SDMA, поскольку если для каждого 32битного слова дергать память на чтение/запись, да еще и по разным адресам производительность сильно просядет (тем более у Вас и так подсистема памяти нагружена выводом на дисплей). Кстати для ускорения можно положить видеобуфер, буфер откуда данные копируются и буфер куда данные копируются в разные банки памяти  . P.S. А память то какая (DDR3?) и на какой частоте работает? P.P.S. Заглянул в доки, я надеюсь Вы используете burst DMA unit?
Сообщение отредактировал Шаманъ - Apr 14 2018, 19:11
|
|
|
|
|
Apr 17 2018, 16:54
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Шаманъ @ Apr 14 2018, 22:03)  Если я правильно понял, то это будет 64К * 21 * 30 = 39МБ/сек чтений и столько же записей. 26кадров/сек? А вот тут начинается самое интересное - SDRAM память нетороплива при случайных обращениях, но шустро отдает/принимает данные блоками. Выдача данных на дисплей скорее всего идет через буфер, по последовательным адресам и издержки получаются минимальные. Стоит посмотреть имеется ли буфер (и какой) у SDMA, поскольку если для каждого 32битного слова дергать память на чтение/запись, да еще и по разным адресам производительность сильно просядет (тем более у Вас и так подсистема памяти нагружена выводом на дисплей). Кстати для ускорения можно положить видеобуфер, буфер откуда данные копируются и буфер куда данные копируются в разные банки памяти  . P.S. А память то какая (DDR3?) и на какой частоте работает? P.P.S. Заглянул в доки, я надеюсь Вы используете burst DMA unit? 39МБ/сек чтений и столько же записей. - конечно, нужно прочитать по одному адресу и записать в другой. ДМА работает в режиме линейного адреса, поэтому режиму burst DMA никто не мешает, в даташите написано, что копирует по 16 байт в блоке. А память то какая (DDR3?) и на какой частоте работает? DDR3 шириной 32 бита на частоте 400МГц. Судя по этому должна быть очень шустрой
Сообщение отредактировал mantech - Apr 17 2018, 16:57
|
|
|
|
|
Apr 18 2018, 05:33
|
Знающий
   
Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839

|
Цитата(mantech @ Apr 17 2018, 19:54)  в даташите написано, что копирует по 16 байт в блоке. Т.е. по 4ре слова, ИМХО, это мало для того, чтобы эффективно использовать полосу SDRAM по полной. Проведите простой эксперимент - просто вычитайте через SDMA какой-нить достаточно большой кусок SDRAMа (страницу, например), и второй эксперимент - просто запишите такой же кусок SDRAMa, а потом сравните время просто чтения, просто записи и копирования по 4ре слова, можете еще поиграться с выводом на дисплей (тест с отключенным и с включенным). Думаю кое-что может проясниться. Цитата DDR3 шириной 32 бита на частоте 400МГц. Судя по этому должна быть очень шустрой  Это при работе достаточно большими блоками, а случайным доступом или очень маленькими блоками можно производительность SDRAM легко убить.
|
|
|
|
Сообщений в этой теме
mantech IMX6S Apr 7 2018, 17:27 jcxz Цитата(mantech @ Apr 7 2018, 20:27) Может... Apr 7 2018, 19:29 mantech Цитата(jcxz @ Apr 7 2018, 22:29) А что де... Apr 7 2018, 19:38  jcxz А на какой частоте работает DMA? И сколько тактов ... Apr 7 2018, 19:43   mantech Цитата(jcxz @ Apr 7 2018, 22:43) А на как... Apr 7 2018, 19:49  aaarrr Цитата(mantech @ Apr 17 2018, 19:54) DDR3... Apr 17 2018, 21:24  jcxz Цитата(mantech @ Apr 17 2018, 19:54) ДМА ... Apr 18 2018, 08:52   mantech Цитата(jcxz @ Apr 18 2018, 11:52) А почем... Apr 18 2018, 10:36    mantech Цитата(mantech @ Apr 18 2018, 13:36) ЗЫ. ... Apr 26 2018, 17:38     mantech Цитата(mantech @ Apr 26 2018, 20:38) Вооб... Apr 27 2018, 12:18 aaarrr Больше 19МБайт/с!!!!1111
Или даже ... Apr 18 2018, 09:15 jcxz Цитата(aaarrr @ Apr 18 2018, 12:15) В люб... Apr 18 2018, 09:45  aaarrr Цитата(jcxz @ Apr 18 2018, 12:45) Раз ест... Apr 18 2018, 09:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|