реклама на сайте
подробности

 
 
> Вопрос по быстродействию SAM7
evgene
сообщение Mar 5 2008, 09:28
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 12-02-07
Пользователь №: 25 262



Некоторое время использую в новых проектах AT91SAM7S. Ранее не требовалось оптимизации по быстродействию, но возникла задача, в которой очень важно обеспечить высокую производительность алгоритма. После экспериментов с быстродействием, столкнулся с необъяснимым эффектом. Суть проблемы такова: написал процедуру, просмотрел в дебагере сколько тактов процессора идет на обработку. Зная частоту проца, вычислил время исполнения кода. После практического измерения, реальное время исполнения оказалось значительно выше (примерно в 1.6 раза).
Для упрощения задачи написал процедуру:
__ramfunc void Benchmark()
{
volatile unsigned int i ;
for ( i = 0 ;(i < 480000 );i++ ) ;

}
При частоте ядра 48 МГц время выполнения должно составлять около 100 мс. На практике 160 мс.
Частота ядра выставлена верно, измерения фактического времени выполнения тоже верны, все перепроверено несколько раз. Компилятор - IAR, оптимизация отключена. Смотрел асм. Там все верно (должно быть 10 тактов в одном цикле).
За счет чего падает производительность. Не понимаю где скрыт подвох.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.0144 секунд с 7
ELECTRONIX ©2004-2016