[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Пытались сравнить в ru.embedded
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Сергей Борщ 02 ноября 2001 г. 21:26
В ответ на: Быстродействие сильно зависит от задачи отправлено user 02 ноября 2001 г. 20:56

Была задача с обсчетом неких термометров.
вот что получилось:
Alexander Golov:
>Для PIC18 я получил следующие цифры: общий размер 1506 байтов, время
>работы 32 580 циклов, для тактовой частоты 4 МГц (цикл 1 мкс)
>получается быстродействие обсчёта около 307 терм./с (30,7 * 10
>термометров в цикле), при питании от 5 В и потреблении порядка 1 мА
>получим энергоэффективность 307 терм./с/мА. Для частоты 40 МГц (цикл
>0,1 мкс), быстродействии 3070 терм./с и потреблении 17 мА получается
>энергоэффективность 180 терм./с/мА.

Вот что получилось у меня на 430:

Попробовал с умножителем (430F149, наиболее навороченный по периферии)=>
1160 bytes of CODE memory
80 bytes of DATA memory
Цифры стабильны при оптимизации от SPEED,Medium до SPEED,Full.
При оптимизации SIZE,Full размер кода увеличился, чего и следовало ожидать. Проверял на проекте под 28К, результат тот же. Чем быстрее, тем компактнее.
23221 цикла от ресета до конца, ( 23241 SIZE,Full)

для получения 307 терм/с тактовая должна быть 712885КГц.
По максимуму 560мка/МГц на всем скаку при Vcc=3v (из даташита), для 3.3в I(AM)=I(AM)[3v]+175мка/v*(Vcc-3v)= 612мка/МГц.
Потребление I(AM)=I(AM)[1MHz]*Fsystem[MHZ]=612*0.713=436мка.
Итого 307/0.436 = 704 терм./с/мА.
При минимальном питании 1.8в потребление 250мка, эффективность 1228
терм./с/мА.

Для получения 3070 терм/с тактовая 7.13МГц, c ростом частоты потребление растет линейно (по даташиту), следовательно, эффективность остается 704 терм./с/мА.

При максимальном питании (макс. тактовая 8МГц, потребление 5.32ма/3.6в
) максимальная производительность 3445 терм/с,эффективность 647
терм/с/ма

При минимальном питании (макс. тактовая 4.15МГц, потребление
1.45ма/1.8в ) максимальная производительность 1787 терм/с, эффективность 1232 терм/с/ма

То же для кристалла без умножителя:
1120 bytes of CODE memory
80 bytes of DATA memory
22888 cycles total (!, а вы говорите - умножитель! :)
Fтакт (307терм/с) =702723Гц

Итого эффективность при 3.3в(430мка) 713терм./с/ма, при 1.8в(246мка) =
1248терм./с./ма

При максимальном питании макс. тактовая 8МГц, максимальная производительность 3495 терм/с, эффективность 656терм/с/ма.
При минимальном питании макс. тактовая 4.15МГц, максимальная производительность 1813 терм/с, эффетивность 1250терм/с/ма.

Задача была чисто рассчетная.
[pre]

#define R0 100.0
#define A 3.850e-3
#define B -5.802e-07
#define C -4.2735e-12

void CalcRTD ( real * R, real * T )
{
real x ;
real t = * T ;
x = A + B * ( t - 100 ) ;
if ( t < 0 )
{
x += C * t * t * ( t - 100 ) ;
}
* T = ( * R / R0 - 1 ) / x ;
}
[nopre]
На задаче с дерганьем ножек, рассчетами и работой с указателями размер кода получается раза в полтора-два больше чем у ПИКа.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru