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

 
 
> Вопрос по быстродействию 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
 
Start new topic
Ответов
aaarrr
сообщение Mar 6 2008, 11:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Можно. RVDS 2.2, оптимизация отключена:

Код
    Benchmark
    $a
    .text
        0x00000000:    e3a00000    MOV      r0,#0
        0x00000004:    ea000000    B        {pc} + 0x8 ; 0xc
        0x00000008:    e2800001    ADD      r0,r0,#1
        0x0000000c:    e250c807    SUBS     r12,r0,#0x70000
        0x00000010:    225ccc53    SUBSCS   r12,r12,#0x5300
        0x00000014:    3afffffb    BCC      {pc} - 0xc ; 0x8
        0x00000018:    e12fff1e    BX       r14
Go to the top of the page
 
+Quote Post

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


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

 


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


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