C51 vs. ARM (точнее ARM7TDMI-S без сопорцессора) - компилятор vs. другой компилятор
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
Отправлено
Дмитрий Сергеев 15 апреля 2004 г. 10:03
|
|
|
|
Я как дотошный девелоптер, вчерась решил сделать, своего рода, banchmark. Хотел проверить преимущества 32-разрядной архитектуры над старым добрым С51. Взял софтину IAR ARM v4.10eval, накалякал на С махонькую програмульку - просто вычисление банального синуса:
....
#include
....
float a, b;
b = 32.4568721; // число от балды
a = sin(b);
....
в свойствах проекта поставил сначала ARM-instructions, потом Thumb-instructions(результат примерно один и тотже), оптимизация по Speed. Вот. Смотрел в симуляторе: за сколько тиков (тактов sysclock) это все исполняется. К моему удивлению увидел - около 2000 тиков. Я-то ожидал, 200-500, а так, это сравнимо с тем что делает старый-добрый Keil на C8051F020, C8051F120. Вопросы:
1. Я что, настолько некомпетентен,
2. или в IAR ARM v4.10eval "плохой" С-компилятор,
3. или это какая-то хитрая закономерность,
4. или что-то другое ???Заранее благодарен.
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Ребяты! Для того, чтобы загрузить константу не нужно 2000 тактов! :-))) — sim (15.04.2004 20:08, 231 байт)
- Вот сравнил ARM и MSP430 на вашем примере — as_ (15.04.2004 16:36, 245 байт)
- Ответ: Когда-то сравнивал прог для шифрования по ГОСТ (+) — NickB (15.04.2004 11:15, 150 байт)
- не думаю, что на этом примере у АРМ что-то сильно выиграет. Попробуйте что нибудь связанное с интенсивными пересылками в большой куске памяти на стеке :-) Например bubble sort внутри ф-ции на локальном буфере в 20 кил — DASM (15.04.2004 10:47, пустое)
- Должен выйграть... — POV (15.04.2004 11:17, 349 байт)
- не скажи ;О) ... — =mse= (15.04.2004 11:27, 335 байт)
- Гы:) Но вобщем верно. Тогда автор вопроса прав в своем недоумении - компилятор не вылизан. — POV (15.04.2004 11:39, пустое)
- Тут как-то был какой-то бенчмарк на всех процах/компиляторах проверялся. Так среди АРМов IAR уступил ADS в 2 раза где-то (если память не изменяет) — ShiphT (15.04.2004 12:31, пустое)
- Несколько непонятно, кто кому уступил. Особенности языка, мать его :-) — Крок (15.04.2004 13:51, пустое)
- код скомпиленный с помощью иара выполнялся намного дольше чем код скомпиленный адс для того-же проца — ShiphT (15.04.2004 14:31, пустое)
- Во, нашел! (Правда не то, но к головному вопросу). Итого имеем что 51 на этом тесте проиграл АРМ около 20 раз по тактам.(а там ведь тоже все на плывучке) — ShiphT (15.04.2004 14:35, пустое, ссылка)
- Спасибо за линк, да кол-во тактов отличается в 20 раз, но не забывайте, что АТ89S8252 выполняет одну ассемблерную команду за 12 (6 в X2-mode) тактов sysclock-а, если я не ошибаюсь, а ARM за один такт (Advansed RISC Machines). Я-же в своем вопросе сравнивал с С8051F020 (25МГц) или с С8051F120 (100МГц), у них команды выполняются за 1, 2(чаще всего), 3- тактов sysclock. В этом то и соль. — Дмитрий Сергеев (15.04.2004 15:09, пустое)
- Тогда Cygnal F120 должен выиграть у АРМа раза в 3 - тактовая 100 против 22 и 1 цикл на команду вместо 12 — 51 (15.04.2004 14:55, пустое)
- А float у этих компиляторов одинаковой длины? — POV (15.04.2004 10:26, пустое)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru