|
|
  |
Эффективность DMA в SAM7, Выделено из "ARM много,..." |
|
|
|
Sep 28 2008, 18:37
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aaarrr @ Sep 28 2008, 20:03)  Пожалуйста. Как скучно оказывается всухую писать  . Просьба для начала заменить nop-овский цикл на такое: Код volatile u_int b = 0x800; volatile u_int c = 0; volatile u_int d = 0; do { c = AT91C_BASE_TCB->TCB_TC0.TC_CV; d += c; } while(--b ); a = AT91C_BASE_TCB->TCB_TC0.TC_CV - a; dprintf("t=%d\r\n", a); d = d; Интересен Flash, 55MHz, ARM mode. Цитата(aaarrr @ Sep 28 2008, 20:31)  Тема сама по себе интересная получается. Естественно!
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 28 2008, 18:52
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Sep 28 2008, 22:37)  Как скучно оказывается всухую писать  . Просьба для начала заменить nop-овский цикл на такое: Интересен Flash, 55MHz, ARM mode. Сделано. Flash 1WS: Код ошибка RAM 0WS: Код ошибка Числа - это количество тактов на выполнение (выход * 8). Время симулятора для случая RAM 0WS PDC Idle: 16382
|
|
|
|
|
Sep 28 2008, 19:30
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Результат еще интереснее. Как я уже писал, очень похоже, что шина Flash отделена. Flash 0WS: Код ошибка Незначительное ускорение не случайное, повторяется стабильно. Расхождение результатов с симулятором связано с обращением к периферийному регистру, но не очень понятно, почему возникает именно такое замедление.
|
|
|
|
|
Sep 28 2008, 19:41
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 28 2008, 23:20)  Очень интересный результат! Похоже сегмент шины с Flash как-то изолируем, что позволяет по хозяйски распоряжаться неизбежным 50% простоем ядра при доступе к Flash для доступа DMA к RAM. А 30MHz и 0WS из Flash еще пожалуйста! То есть 3 раза это уже фантазия ?(ну это про разы...) Цитата(aaarrr @ Sep 28 2008, 23:30)  Результат еще интереснее. Как я уже писал, очень похоже, что шина Flash отделена. Мне вобще кажется что это почти всегда на современных мк. Нет никагого смысла располагать флеш на той же шине...
|
|
|
|
|
Sep 28 2008, 19:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aaarrr @ Sep 28 2008, 21:30)  Результат еще интереснее. Как я уже писал, очень похоже, что шина Flash отделена. Странее! Не покидает мысль, что что-то не то. А разделить буфера приема передачи и организовать в тесте хоть какую-то рекцию(обработку) на окончание цикла работы DMA? И вообще, при исполнении IDLE из RAM на 55MHz получаем скорость РАВНУЮ до такта! скорости исполнения из FLASH на 30MHz. Что это c тестом? Цитата(singlskv @ Sep 28 2008, 21:41)  Нет никагого смысла располагать флеш на той же шине... Это понятно, что слова Нейман/Гарвард почти пустой звук по нынешнмм временам, но предполагал, что это все-же пока не для достаточно простых ARM7 ядер. Цитата(singlskv @ Sep 28 2008, 21:41)  То есть 3 раза это уже фантазия ?(ну это про разы...) 50% это замедление в ДВА раза при ОДНОМ WS.Чего непонятного? Никаких фантазий.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 28 2008, 19:59
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Sep 28 2008, 23:46)  Странее! Не покидает мысль, что что-то не то. А разделить буфера приема передачи и организовать в тесте хоть какую-то рекцию(обработку) на окончание цикла работы DMA? Тогда нужно время теста укорачивать, у меня нет столько свободной памяти. Попробую. Могу еще проконтролировать время окончания цикла DMA. Цитата(zltigo @ Sep 28 2008, 23:48)  И вообще, при исполнении IDLE из RAM на 55MHz получаем скорость РАВНУЮ до такта! скорости исполнения из FLASH на 30MHz. Что это c тестом? Я и считаю такты. А они одинаковые, хоть на 30, хоть на 55MHz. С более скоростым доступом к периферии со стороны DMA все понятно - процессор имеет доступ через медленную APB, в то время как DMA подключен с одной стороны к ASB, а с другой напрямую к периферийным модулям.
|
|
|
|
|
Sep 28 2008, 20:00
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 28 2008, 23:48)  Это понятно, что слова Нейман/Гарвард почти пустой звук по нынешнмм временам, но предполагал, что это все-же пока не для достаточно простых ARM7 ядер. 50% это замедление в ДВА раза при ОДНОМ WS.Чего непонятного? Никаих фантазий. в 2 раза в худшем случае - согласен ! (в реальности, когда еще иногда встречаются регистр-регистр, намного лучше...) Цитата Это понятно, что слова Нейман/Гарвард почти пустой звук по нынешнмм временам, но предполагал, что это все-же пока не для достаточно простых ARM7 ядер. Дык видать основная борьба и проходит в данный момент по этому флангу...(у производителей)
|
|
|
|
|
Sep 28 2008, 20:09
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aaarrr @ Sep 28 2008, 21:59)  Я и считаю такты. Тьфу, привычка по другому организовывать тесты  Цитата ...а с другой напрямую к периферийным модулям. Как-бы да, в действительности каналы DMA у SAM7 не общего назначения разделяемые ресурсы, а исключительно интимные узлы периферии.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 28 2008, 20:33
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(singlskv @ Sep 28 2008, 22:18)  ...конечно они нифига не разделяймые ресурсы, а очень было надо ? На Atmel свет клином не сошелся  . Cуществуют оба варианта Dedicated/General, обычно вместе. Кроме жестких и относительно простых каналов DMA заточенных под переферийное железо, используются и "общего назначения" более сложные DMA с наворотами, например, типа организации обслуживания кольцевых буферов, burst, fifo, big/little endian трансляцией... Они подключаются к периферийным устройствам по необходимости, в том числе и не к у устройствам, а для пересылки память-память. И между устройствами. Надо.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 28 2008, 20:54
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Sep 29 2008, 00:46)  Актуально, у LPC23/24 кроме локальной еще 2 AHB шины со своми банками памяти. Не знаю толком этих семейств, но это("еще 2 AHB шины со своми банками памяти") уже не очень похоже на ARM7, подходы совсем другие, вероятно нечто промежуточное между ARM7 и ARM9.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|