Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Время выполнения программы на TMS320DM642 в CCS
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Degun
Имеется 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 сек!!! Чем обусловлена такая разница? Нормально ли это или что-то не так и необходимо что-то настроить?
Degun
После некоторого усовершенствования кода тестируемая подпрограмма в CCS в режиме эмуляции стала выполняться за время порядка 45 сек, а на PC за 0.8 сек!!! Вопрос: как измерить реальное время выполнения подпрограммы процессором TMS320DM642 в CCS? Пытался через пункт меню "Profile\Clock\Enable (View)" измерять кол-во циклов, затраченных на выполенение подпрограммы, но каждый раз выдаётся разный результат, причём значения очень сильно разнятся. Как быть?
bav
попробуйте поставить максимальную оптимизацию кода

если прога или данные находятся во внешней памяти - настройте кеш

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

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

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

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

А в графической оболочке настройки DSP-BIOS это можно как нибудь настроить?
bav
попробуйте в GlobalSetting.
а ввобще, я это делал через CSL. Посмотрите экзамплы, там, вроде конфигурация тоже, через CSL отдельной функцией при инициализации.
Degun
Цитата(bav @ Oct 11 2007, 13:55) *
попробуйте в GlobalSetting.
а ввобще, я это делал через CSL. Посмотрите экзамплы, там, вроде конфигурация тоже, через CSL отдельной функцией при инициализации.

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

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

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