Имеется Evalution Module (EVM) для TMS320DM642 (rev. 3) и JTAG-эмулятор XDS560R. На данной связке в CCS v3.3 прогоняется подпрограммка, которая в режиме отладки выполняется за время порядка 7-8 мин!!! Та же самая подпрограммка (тот же код) на PC с процессором AMD Athlon 64 3200+ (2.00ГГц, 512КБ, HT1000МГц, SocketAM2) и памятью 2 ГБ DDR2 PC6400 (800 МГц) в режиме отладки в Microsoft Visual Studio 2005 выполняется примерно за 2-3 сек!!! Чем обусловлена такая разница? Нормально ли это или что-то не так и необходимо что-то настроить?
После некоторого усовершенствования кода тестируемая подпрограмма в CCS в режиме эмуляции стала выполняться за время порядка 45 сек, а на PC за 0.8 сек!!! Вопрос: как измерить реальное время выполнения подпрограммы процессором TMS320DM642 в CCS? Пытался через пункт меню "Profile\Clock\Enable (View)" измерять кол-во циклов, затраченных на выполенение подпрограммы, но каждый раз выдаётся разный результат, причём значения очень сильно разнятся. Как быть?
попробуйте поставить максимальную оптимизацию кода
если прога или данные находятся во внешней памяти - настройте кеш
обычно это помогает
Цитата(bav @ Sep 20 2007, 10:42)

попробуйте поставить максимальную оптимизацию кода
Уже установлено
Цитата(bav @ Sep 20 2007, 10:42)

если прога или данные находятся во внешней памяти - настройте кеш
обычно это помогает
Во внутренней памяти IRAM?
Цитата(bav @ Sep 20 2007, 10:42)

если прога или данные находятся во внешней памяти - настройте кеш
обычно это помогает
А конкретней не подскажите где и как настраивается кэш
посмотрите CSL функции. там есть настройка кеша L2. по умолчанию он работает как внутренняя SDRAM.
прмер:
CACHE_setL2Mode(CACHE_256KCACHE); //вся внутр память как L2
CACHE_enableCaching(CACHE_EMIFA_CE00); //кешируется область памяти 0x80000000-0x8????? - не помню
Цитата(bav @ Oct 10 2007, 18:40)

посмотрите CSL функции. там есть настройка кеша L2. по умолчанию он работает как внутренняя SDRAM.
прмер:
CACHE_setL2Mode(CACHE_256KCACHE); //вся внутр память как L2
CACHE_enableCaching(CACHE_EMIFA_CE00); //кешируется область памяти 0x80000000-0x8????? - не помню
А в графической оболочке настройки DSP-BIOS это можно как нибудь настроить?
попробуйте в GlobalSetting.
а ввобще, я это делал через CSL. Посмотрите экзамплы, там, вроде конфигурация тоже, через CSL отдельной функцией при инициализации.
Цитата(bav @ Oct 11 2007, 13:55)

попробуйте в GlobalSetting.
а ввобще, я это делал через CSL. Посмотрите экзамплы, там, вроде конфигурация тоже, через CSL отдельной функцией при инициализации.
Спасибо. Нашёл в Global Settings. Реально полезная вещь. До включения кэша подпрограмма выполнялась порядка 13-14 сек. После включения примерно 3 сек. Как говорится, результат на лице.
Кстати, не подскажите какие части DSP-BIOS лучше перенести из IRAM в CACHE_L2 для получения максимальной производительности?
я DSP-BIOS изучал для интереса. реально я его не использовал. Думаю, те части, которые часто используются - обработчики прерываний. Но при этом уменьшится кеш. Что бы особо не париться - включите всю внутреннюю память как кеш, а все располагайте во внешней.
в некоторых случаях получается быстрее, если:
- внутренняя память как SDRAM
- копировать кусок данных во внутр. память, там обрабатывать, затем сохранять результат во внешеней
- обработчик размещать во внутренней памяти
Edmundo
Oct 12 2007, 07:33
Цитата(bav @ Oct 12 2007, 10:42)

...
- внутренняя память как SDRAM
...
А все-таки внутренняя память статическая, SRAM.
опечатка, SRAM.
Проста сейчас сижу с ПЛИС с подключенной к ней SDRAM. не работает. открыто очень много pdf по SDRAM. вот и ошибся. Прошу прощения.
Спасибо за замечание.
А вообще есть какая-то разница между размещением модулей DSP-BIOS в IRAM или CACHE, если все они расположены во внутренней SRAM памяти? Т. е. если расположить все части DSP-BIOS только в IRAM, то результирующая производительность от этого уменьшиться или нет?.
если будете размещать во внутренней памяти, уменьшится объем кеша. я думаю придется поэкспериментировать.
Цитата(bav @ Oct 14 2007, 16:11)

если будете размещать во внутренней памяти, уменьшится объем кеша. я думаю придется поэкспериментировать.
Я провёл следующий эксперимент. Внутреннюю память процессора разделил поровну между IRAM и CACHE_L2. При этом в DSP-BIOS из IRAM в CACHE_L2 ничего не переносил, т. е. всё как было в IRAM так там и осталось без изменений. Но производительность процессора увеличилась. Что же тогда процессор сохраняет в CACHE, что позволяет увеличить его производительность?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.