|
Сравнение размера кода ARM (LPC2xxx) и AVR (ATMega) |
|
|
|
Aug 24 2007, 06:24
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 7-11-06
Пользователь №: 22 054

|
Уважаемые, хотелось бы услышать ваше мнение, если кто проводил тест на сравнение размера кода для ARM (LPC2xxx) и AVR (ATMega), используя компилятор IAR-овский (из последних, например). Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx? Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос. Поиск ничего не даёт кроме сообщения об ошибке.
В LPC будет использовать 32-битный набор команд. Сравнивал один и тот же код для ARM и Thumb-режима, получал коэффициент 1,5-1,54. Компилятор IAR 4.41A
Заранее благодарю.
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Aug 24 2007, 06:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MikePic @ Aug 24 2007, 09:24)  Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос. А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю. Вообще отпортировав как-то с AVR на ARM(Thumb) был сильно удивлен тем, что код получился не слишком отличающимся по размеру. Соотношение между размерами ARM/Thumb может быть очень разным, но при достаточно обильном использовании более, чем 8bit констант выигрыш по размеру не более 20% в середнем пожалуй 30%.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 24 2007, 07:03
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 7-11-06
Пользователь №: 22 054

|
Цитата(zltigo @ Aug 24 2007, 10:41)  А какие проблемы взять из уже готововых проектов маниннонезависимые куски кода и компильнуть - будете знать 'число' приближенное к вашему случаю. Да проблем то никаких, просто СВОИХ "машиннонезависимых" нет, а перевести текущий проект (хотя бы один) займёт пару-тройку часов. Наделся, что кто-то из форумчан обладает статистикой. Цитата Вообще отпортировав как-то с AVR на ARM(Thumb) был сильно удивлен тем, что код получился не слишком отличающимся по размеру. Соотношение между размерами ARM/Thumb может быть очень разным, но при достаточно обильном использовании более, чем 8bit констант выигрыш по размеру не более 20% в середнем пожалуй 30%. Сами NXP заявили: For critical code size applications, the alternative 16-bit Thumb mode reduces code by more than 30 % with minimal performance penalty.Но это лишь слова...
|
|
|
|
|
Aug 24 2007, 07:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MikePic @ Aug 24 2007, 10:03)  перевести текущий проект ... Зачем весь проект? Просто отдельные файлы компильнуть. Цитата For critical code size applications, the alternative 16-bit Thumb mode reduces code by more than 30 % with minimal performance penalty. Thumb начинает резко проигрывать по размеру кода, например, при банальной операции с константами более 8bit, которые уже не помещаются в формат команды и начинается бодяга... Хотя на на чисто регистровых операциях явный выигрыш. В моих применениях цифра 15-20% экономии кода более реальна. Причем по прикидкам, большая экономия на размере кода соответствует меньшей потере производительности. Опять - обработчики прерываний не Thumb и соответстенно вызываемые из них функции Interwork, что опять снижает эффект от Thumb. Короче, я не пользуюсь Thumb вообще, ну кроме как в загрузчике.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 24 2007, 19:40
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Тестирвал в свое время все что под руку попадалость. По ссылке http://aly.projektas.lt/Tests/AllCPU/WhetsRes.htm#1 качайте архивы, там почте везде есть MAP файлы и сравнивайте. Цитата(MikePic @ Aug 24 2007, 09:54)  Уважаемые, хотелось бы услышать ваше мнение, если кто проводил тест на сравнение размера кода для ARM (LPC2xxx) и AVR (ATMega), используя компилятор IAR-овский (из последних, например). Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx? Есть несколько проектов, которые требуется перевести на новую платформу, потому и возник такой вопрос. Поиск ничего не даёт кроме сообщения об ошибке.
В LPC будет использовать 32-битный набор команд. Сравнивал один и тот же код для ARM и Thumb-режима, получал коэффициент 1,5-1,54. Компилятор IAR 4.41A
Заранее благодарю.
|
|
|
|
|
Aug 25 2007, 02:41
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(MikePic @ Aug 24 2007, 09:24)  Какой, в среднем, стоит использовать коэффициент при переходе с ATMega на LPC2xxx? По размеру кода у меня в среднем получилось 1:1 (ARM режим : Mega) на меге кода чуть-чуть меньше, но этим "меньше" можно пренебречь. В Thumb режиме код получается более компактный чем на mege. В проекте было много 16-ти битных и 32-х битных операций.
|
|
|
|
|
Aug 28 2007, 08:54
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
Помимо собственно кода, практически в каждой проге есть константные данные (таблицы констант, строки и т.д., я уж не говорю о графике). Как правило чем больше проект тем больше этих данных, а размер ими занимаемый практически не зависит от платформы. Т.е. разницы в размере кода (т.е. используемого пространства флеша) в ряде случаев может и не быть. И ИМХО в общем случае можно говорить только об алгоритмах типа числодробилок и при указании конкретных компиляторов и их опций. ЗЫ, любую (не самую примитивную) прогу можно ужать по памяти ценой потери времени.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|