Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: High Speed USB Cortex M0-M3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3
MrAlex
Для HS резервируется не больше 25% полосы 480 Мб.
Итого 120 Мб = 16 Мбайт в сек. У SAM3U EMB до 16 бит, кино можно смотреть.
aaarrr
Цитата(MrAlex @ Jun 6 2011, 17:32) *
Для HS резервируется не больше 25% полосы 480 Мб.

Для HS резервируется не больше 25% полосы HS? Нет в USB 2.0 подобных ограничений.



Обещанные попугаи (SAM3U4C, 96MHz, Flash, 3WS, RVCT 4.1 -O3 -Otime):

Memcpy SRAM0->SRAM0: 126.3 МБайт/с
Memcpy SRAM1->SRAM0: 126.0 МБайт/с
Memcpy NFC->SRAM0: 116.2 МБайт/с

93.4 Dhrystone VAX MIPS

1.25DMIPS/MHz было при 0WS.
MrAlex
Приврал каюсь, 50 Мб/с теоретический предел.
aaarrr
Цитата(MrAlex @ Jun 6 2011, 20:25) *
Приврал каюсь, 50 Мб/с теоретический предел.

С кем не бывает sm.gif
Интересно, сколько из них способен с пользой перелопатить SAM3. Хотя, если через DMA на внешнюю шину, то вроде и проблем не видно (ну, на первый взгляд).
sonycman
Цитата(aaarrr @ Jun 6 2011, 18:45) *
Обещанные попугаи (SAM3U4C, 96MHz, Flash, 3WS, RVCT 4.1 -O3 -Otime):

Спасибо!

Как я понял, всю оперативку (оба банка) можно использовать в виде одного куска в 48 килобайт (или даже 52)?
То есть не как в LPC17xx, два куска по 32 кб?
aaarrr
Цитата(sonycman @ Jun 6 2011, 23:08) *
Как я понял, всю оперативку (оба банка) можно использовать в виде одного куска в 48 килобайт (или даже 52)?

Можно, но только 48. Вариант 32 + 20 тоже должен работать.

Цитата(sonycman @ Jun 6 2011, 23:08) *
То есть не как в LPC17xx, два куска по 32 кб?

А там они совсем разнесены?
brag
Цитата
Не подскажете доступный кортекс от NXP с USB HS?

LPC18 скоро будут sm.gif)

по поводу USB hs. - реально, что на CY7C68013A+FPGA мастер,синхронно, что с AT32UC3A0512+dma у меня больше 30мб/с в булке выжать не удалось, и то скорость зависить от загрузки системы, особенно от IO активности (скажем записи принятых по усб данных на диск)..и то не стабильно, если кеши чистые,то еще тормознее (порядка 16MB/s). Так что смысл HS USB есть большой, особенно,если реализован MSC или хоть какой-то поточный обмен данными. разница есть, что ждать 5 минут, а что 20 сек...
dinam
Мы на CY7C68013A+FPGA получаем около 40Мбайт/сек. На форуме есть упоминание 45 Мбайт/сек. Если надо побыстрее, то ждем выпуска CYUSB3014
sonycman
Цитата(aaarrr @ Jun 7 2011, 00:48) *
А там они совсем разнесены?

Совсем sad.gif
Нажмите для просмотра прикрепленного файла
Мало того, в режиме с остановленным ядром (по инструкции WFI) функционирует только один 32 килобайтовый блок памяти, второй перестаёт тактироваться и его данные становятся недоступны.
Поэтому при использовании операционной системы и DMA остаётся либо пользоваться только одним 32кб куском, либо не давать процессору спать sad.gif
aaarrr
Цитата(sonycman @ Jun 7 2011, 12:38) *
Мало того, в режиме с остановленным ядром (по инструкции WFI) функционирует только один 32 килобайтовый блок памяти, второй перестаёт тактироваться и его данные становятся недоступны.
Поэтому при использовании операционной системы и DMA остаётся либо пользоваться только одним 32кб куском, либо не давать процессору спать sad.gif

Зато на I/D Bus, хотя большого смысла в этом не вижу.
KnightIgor
Цитата(aaarrr @ Jun 6 2011, 22:48) *
Можно, но только 48. Вариант 32 + 20 тоже должен работать.


Просто подкреплю ссылкой на документацию SAM3U: см. стр. 31 документа "6430D–ATARM–25-Mar-11" к контроллерам, где сказано:

The SRAM0 is accessible over System Cortex-M3 bus at address 0x2000 0000 and SRAM1 at
address 0x2008 0000. The user can see the SRAM as contiguous at 0x20078000-0x20083FFF
(SAM3U4), 0x2007C000-0x20083FFFF (SAM3U2) or 0x2007E000-0x20081FFFF (SAM3U1).
sonycman
Цитата(aaarrr @ Jun 6 2011, 18:45) *
93.4 Dhrystone VAX MIPS

Скачал какой-то древний сишный исходник "DHRYSTONE" Benchmark Program v2.1, датированный 1988 годом.
Это оно? sm.gif

Насколько я понял, там набор различных функций по работе со стрингами\массивами.
Потребуется переделать под ARM функции измерения времени и вывода результата, остальное вроде должно скомпилироваться.
Хотя хз, как компилер воспримет некоторые директивы, надо смотреть...
brag
Цитата
Мы на CY7C68013A+FPGA получаем около 40Мбайт/сек.

от системы на хосте зависит, меня 20 устраивало я дальше и не гнался, хотя на freebsd получал около 36
aaarrr
Цитата(sonycman @ Jun 9 2011, 13:26) *
Скачал какой-то древний сишный исходник "DHRYSTONE" Benchmark Program v2.1, датированный 1988 годом.
Это оно? sm.gif

Оно.

Цитата(sonycman @ Jun 9 2011, 13:26) *
Потребуется переделать под ARM функции измерения времени и вывода результата, остальное вроде должно скомпилироваться.
Хотя хз, как компилер воспримет некоторые директивы, надо смотреть...

Да, clock + printf. И ручной ввод количества циклов упразднить, заменив, скажем, на 100000.
Остальное соберется без проблем.
sonycman
Цитата(aaarrr @ Jun 6 2011, 18:45) *
Обещанные попугаи (SAM3U4C, 96MHz, Flash, 3WS, RVCT 4.1 -O3 -Otime):

Memcpy SRAM0->SRAM0: 126.3 МБайт/с
Memcpy SRAM1->SRAM0: 126.0 МБайт/с
Memcpy NFC->SRAM0: 116.2 МБайт/с

93.4 Dhrystone VAX MIPS

1.25DMIPS/MHz было при 0WS.

У меня получилось вот что: LPC1768, 100 МГц, Flash accesses use 5 CPU clocks, IAR 6.20.3, High optimization, Speed

Memcpy SRAM0->SRAM0: 116.8 МБайт/с (цикличное копирование 8 КБ блока)
Memcpy SRAM1->SRAM0: 116.8 МБайт/с

134.5 Dhrystone VAX MIPS

Толку от двух банков при копировании никакого нет, но Атмелу респект за возможность юзать память одним куском.

ЗЫ: интересно было бы прогнать драйстоун на сэме плюс ИАР.
Очень большая разница между оптимизацией Balanced (83 VAX MIPS) и Speed (134).
aaarrr
Что ж, вполне закономерный результат: в деле построения ускорителей флеш NXP явно лидирует. Радует, конечно, что и Atmel взялись за ум наконец. А вот набор и возможности периферии у последних мне всегда нравился больше.

Цитата(sonycman @ Jun 12 2011, 02:21) *
ЗЫ: интересно было бы прогнать драйстоун на сэме плюс ИАР.
Очень большая разница между оптимизацией Balanced (83 VAX MIPS) и Speed (134).

Попробую на досуге.
VslavX
Цитата(aaarrr @ Jun 12 2011, 01:37) *
Что ж, вполне закономерный результат: в деле построения ускорителей флеш NXP явно лидирует.

Вы Кинетиксы новые посмотрите от Фрискейла - например в К60 они 4-ассоциативный кеш наворотили, аж на 256 байт sm.gif.
Кстати - вроде бы в них USB HS трансивер встроенный, ядро M4, правда - не соотвествтует условиям данной темы.
sonycman
Цитата(VslavX @ Jun 12 2011, 02:55) *
Вы Кинетиксы новые посмотрите от Фрискейла - например в К60 они 4-ассоциативный кеш наворотили, аж на 256 байт sm.gif.
Кстати - вроде бы в них USB HS трансивер встроенный, ядро M4, правда - не соотвествтует условиям данной темы.

Ещё было бы интересно посмотреть на скорость новых STM32F2. Обещают нулевые задержки флеша.
brag
Цитата(sonycman @ Jun 12 2011, 12:00) *
Ещё было бы интересно посмотреть на скорость новых STM32F2. Обещают нулевые задержки флеша.

там явно написано, что флеш как всегда работает с 3wait-states. другое дело он 128битный и есть кеш, так у lpc17 он тоже 128битный и тоже есть кеш.
но у stm32f2 флешка пахает с 3ws 2.7...3.6в 120мгц, а у lpc17 4ws 2.4...3.6в 100-120мгц. но тк у нас много инструкций 16битных, то и этого в полне достаточно, чтобы проц не курил
aaarrr
Вот потому и интересно сравнить с законодателями моды в данном направлении.

Будь это именно кэш, не преминули бы именно так и написать. Внутреннюю структуру ускорителей почему-то никто не афиширует.
brag
Цитата
Внутреннюю структуру ускорителей почему-то никто не афиширует.

ну да, вся проблемма в переходах и ld/st, сложно предсказать, с какого адресса тянуть следующие 128 бит инструкций..
u nxp 8 128битных буфферов, в принципе, можно и самому додуплить как сделать так, чтобы проц не курил, но мы камни не строим,потому об этом не задумываемся sm.gif

пс. что в nxp,что у ст так и написано "акселератор/кеш"
Цитата
To release the processor full 150 DMIPS performance at this frequency, the accelerator
implements an instruction prefetch queue and branch cache which increases program
execution speed from the 128-bit Flash memory.


aaarrr
Цитата(brag @ Jun 12 2011, 17:50) *
u nxp 8 128битных буфферов, в принципе, можно и самому додуплить как сделать так, чтобы проц не курил, но мы камни не строим,потому об этом не задумываемся sm.gif

У Атмела два и, судя по всему, без каких-либо "интеллектуальных" наворотов.

Цитата(brag @ Jun 12 2011, 17:50) *
пс. что в nxp,что у ст так и написано "акселератор/кеш"

Ну, это же не кэш в обычном представлении, а нечто сугубо специфическое.
sonycman
Цитата(brag @ Jun 12 2011, 17:26) *
там явно написано, что флеш как всегда работает с 3wait-states. другое дело он 128битный и есть кеш, так у lpc17 он тоже 128битный и тоже есть кеш.
но у stm32f2 флешка пахает с 3ws 2.7...3.6в 120мгц, а у lpc17 4ws 2.4...3.6в 100-120мгц. но тк у нас много инструкций 16битных, то и этого в полне достаточно, чтобы проц не курил

Ну и, смысл всего вышесказанного? rolleyes.gif
Вы можете сказать, как быстро будет работать STM32F2 по сравнению с LPC, хотя бы на одной и той же частоте??
brag
Цитата
Ну и, смысл всего вышесказанного?
Вы можете сказать, как быстро будет работать STM32F2 по сравнению с LPC, хотя бы на одной и той же частоте??

с этого
Цитата
у stm32f2 флешка пахает с 3ws 2.7...3.6в 120мгц, а у lpc17 4ws 2.4...3.6в 100-120мгц

я могу сказать, что если код из одних 32битных инструкций под ряд то на СТ будет работать быстрее,по идее(по документу)
А еще могу сказать, что в целом результат будет примерно одинаков.
А если смысла нету, то пост можно удалить wink.gif
sonycman
Цитата(brag @ Jun 13 2011, 14:50) *
с этого
я могу сказать, что если код из одних 32битных инструкций под ряд то на СТ будет работать быстрее,по идее(по документу)
А еще могу сказать, что в целом результат будет примерно одинаков.
А если смысла нету, то пост можно удалить wink.gif

Ну, хотелось бы надеяться, что ST хорошенько поработали над ошибками и выпустили действительно быстрый чип.
В остальном от STM32F1 остались только хорошие впечатления.

А от F2 пришлось пока отказаться из-за внешнего USB PHY.
Куча высокоскоростных цепей, информации по стыковке никакой нет, как будет работать - бог его знает, и спросить не у кого.
Доступные отладочные платы с F2 на борту тоже все сплошь без PHY. sad.gif
AHTOXA
Цитата(sonycman @ Jun 13 2011, 18:49) *
В остальном от STM32F1 остались только хорошие впечатления.

А что, со скоростью у STM32F1x -- совсем швах? Может, прогоните на них тот тест, и выложите результаты? Интересно будет сравнить... sm.gif
brag
щас прогоню попробую, stm32f105rc 72mhz
sonycman
Цитата(AHTOXA @ Jun 13 2011, 17:13) *
А что, со скоростью у STM32F1x -- совсем швах? Может, прогоните на них тот тест, и выложите результаты? Интересно будет сравнить... sm.gif

Ну, если сравнить по загрузке при декодировании MP3 320 kbps:
LPC17xx - 30%
SAM3U - 50%
STM32F1 - 100% и даже тормозит sad.gif

Если откопаю у себя отладку с F1, может, займусь.

Цитата(brag @ Jun 13 2011, 17:32) *
щас прогоню попробую, stm32f105rc 72mhz

Ждём sm.gif
brag
прогнал.
все компилилось так:
arm-none-eabi-gcc -Werror -Wall -Wextra -pipe -mcpu=cortex-m3 -mthumb -O2 -fomit-frame-pointer -ffreestanding -fno-common -fwide-exec-charset=UTF-16LE -fshort-wchar

Код
Dhrystone Benchmark, Version 2.1 (Language: C)

Execution starts, 1000000 runs through Dhrystone
Execution ends

Final values of the variables used in the benchmark:

Int_Glob:            5
        should be:   5
Bool_Glob:           1
        should be:   1
Ch_1_Glob:           A
        should be:   A
Ch_2_Glob:           B
        should be:   B
Arr_1_Glob[8]:       7
        should be:   7
Arr_2_Glob[8][7]:    1000010
        should be:   Number_Of_Runs + 10
Ptr_Glob->
  Ptr_Comp:          536871440
        should be:   (implementation-dependent)
  Discr:             0
        should be:   0
  Enum_Comp:         2
        should be:   2
  Int_Comp:          17
        should be:   17
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
  Ptr_Comp:          536871440
        should be:   (implementation-dependent), same as above
  Discr:             0
        should be:   0
  Enum_Comp:         1
        should be:   1
  Int_Comp:          18
        should be:   18
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc:           5
        should be:   5
Int_2_Loc:           13
        should be:   13
Int_3_Loc:           7
        should be:   7
Enum_Loc:            1
        should be:   1
Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING
        should be:   DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING
        should be:   DHRYSTONE PROGRAM, 2'ND STRING

Register option selected?  YES
Microseconds for one run through Dhrystone: 19
Dhrystones per Second:                      52631
VAX MIPS rating = 29.95
AHTOXA
Цитата(brag @ Jun 13 2011, 21:56) *
VAX MIPS rating = 29.95

Цитата(sonycman @ Jun 12 2011, 04:21) *
134.5 Dhrystone VAX MIPS


Это один и тот же параметр? Что-то как-то совсем ужасно... Где обещанные "0,95 DMIPS/МГц"? sm.gif Видимо ещё gcc добавил тормозов... Я потому и хотел чтоб sonycman провёл тест в тех же условиях, что и LPC. Так хоть уберётся влияние компилятора и ключей оптимизации.
brag
прогнал второй код, скачал с сайта арма http://infocenter.arm.com/help/index.jsp?t...qs/ka13553.html
частота 72мгц.
Код
Dhrystone Benchmark, Version 2.1 (Language: C)

Program compiled without 'register' attribute

Execution starts, 1000000 runs through Dhrystone
Execution ends

Final values of the variables used in the benchmark:

Int_Glob:            5
        should be:   5
Bool_Glob:           1
        should be:   1
Ch_1_Glob:           A
        should be:   A
Ch_2_Glob:           B
        should be:   B
Arr_1_Glob[8]:       7
        should be:   7
Arr_2_Glob[8][7]:    1000010
        should be:   Number_Of_Runs + 10
Ptr_Glob->
  Ptr_Comp:          536871440
        should be:   (implementation-dependent)
  Discr:             0
        should be:   0
  Enum_Comp:         2
        should be:   2
  Int_Comp:          17
        should be:   17
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
  Ptr_Comp:          536871440
        should be:   (implementation-dependent), same as above
  Discr:             0
        should be:   0
  Enum_Comp:         1
        should be:   1
  Int_Comp:          18
        should be:   18
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc:           5
        should be:   5
Int_2_Loc:           13
        should be:   13
Int_3_Loc:           7
        should be:   7
Enum_Loc:            1
        should be:   1
Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING
        should be:   DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING
        should be:   DHRYSTONE PROGRAM, 2'ND STRING

Microseconds for one run through Dhrystone: 18
Dhrystones per Second:                      55555


он же, только с ключем -O0
Код
Microseconds for one run through Dhrystone: 42
Dhrystones per Second:                      23809

brag
а этот код он выполняет 100е6 раз за 18 сек. и того эффективная тактовая частота выходит 100e6/18*(6+1+3)=55.6мгц, чего и следовало ожидать от обычного кеширования...
Код
800487e:    bf00          nop
8004880:    bf00          nop
8004882:    bf00          nop
8004884:    bf00          nop
8004886:    bf00          nop
8004888:    bf00          nop
800488a:    3b01          subs    r3, #1
800488c:    d1f7          bne.n    800487e


а так, уже 16сек, тобышь 62.5мгц. из за того, что прыгаем какраз на тот адресс,с которого начитается чтение с 128битной флешки...
Код
8004880:    bf00          nop
8004882:    bf00          nop
8004884:    bf00          nop
8004886:    bf00          nop
8004888:    bf00          nop
800488a:    bf00          nop
800488c:    3b01          subs    r3, #1
800488e:    d1f7          bne.n    8004880


ну и 22 nop'а, 1 subs и bne(3 такта) - 66.7мгц, максимум,что можно выдавить,если все лежит в правильных адрессах.

апд. из SRAM 8 "mov r0,r0;" 1 subs и 1 bne.n выполняется четко за 25сек (100e6/25*(8+6+1+3)=72e6), не зависимо от адресса,где это все лежит. Вобщем флешка-тормоз, проц нормал.

Протестю на lpc17 на днях
brag
и на последок весь код в SRAM. 0.52 DMIPS/MHz sm.gif
Код
Microseconds for one run through Dhrystone: 15
Dhrystones per Second:                      66666
VAX MIPS rating = 37.943
sonycman
Вот, откопал свою старенькую покуроченную отладку на базе STM32F103RBT6 ещё старой ревизии Z:
72 МГц, 2WS такта, IAR 5.11, High optimization, Speed:

Microseconds for one run through Dhrystone: 11.1
Dhrystones per Second: 89702.8
VAX MIPS rating = 51.055

Слабенько, что уж и говорить. 1.25 DMIPS/MHz тут и не пахнет.

ЗЫ: но это фигня, скомпилировал проект в последнем ИАРе 6.20.3 с такими же настройками, и вот тут-то уже запахло:

Код
Dhrystone Benchmark, Version 2.1 (Language: C)

Execution starts, 500000 runs through Dhrystone
Execution ends

Final values of the variables used in the benchmark:

Int_Glob:            5
        should be:   5
Bool_Glob:           1
        should be:   1
Ch_1_Glob:           A
        should be:   A
Ch_2_Glob:           B
        should be:   B
Arr_1_Glob[8]:       7
        should be:   7
Arr_2_Glob[8][7]:    500010
        should be:   Number_Of_Runs + 10
Ptr_Glob->
  Ptr_Comp:          2000283C
        should be:   (implementation-dependent)
  Discr:             0
        should be:   0
  Enum_Comp:         2
        should be:   2
  Int_Comp:          17
        should be:   17
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
  Ptr_Comp:          2000283C
        should be:   (implementation-dependent), same as above
  Discr:             0
        should be:   0
  Enum_Comp:         1
        should be:   1
  Int_Comp:          18
        should be:   18
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc:           5
        should be:   5
Int_2_Loc:           13
        should be:   13
Int_3_Loc:           7
        should be:   7
Enum_Loc:            1
        should be:   1
Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING
        should be:   DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING
        should be:   DHRYSTONE PROGRAM, 2'ND STRING

Register option selected?  YES
Microseconds for one run through Dhrystone:     6.0
Dhrystones per Second:                        166997.3
VAX MIPS rating =     95.047


95.047!
Аж быстрее Сэма под RVCT вышло! sm.gif
Что-то уж очень эффективная оптимизация под драйстоун у ИАР...
aaarrr
Добавим энтропии в тему?

STM32F103VET6 Z, 72MHz, Flash, 2WS, RVCT 4.1 -O3 -Otime: 73.0 Dhrystone VAX MIPS
Memcpy 94.7 МБайт/с

То есть чуть быстрее SAM3, но при 2WS.


Ерунда, конечно, выходит из всех этих тестов: нужно смотреть на одном и том же коде и тулчейне. Да и тест сделать позаковыристее - картинку, например, в JPEG утоптать или что-нибудь еще в этом роде.
AHTOXA
Цитата(sonycman @ Jun 14 2011, 02:29) *
95.047!
Аж быстрее Сэма под RVCT вышло! sm.gif

Ну вот, а то "тормоз", "тормоз" sm.gif

Вот что вышло у меня (arm-kgp-eabi-gcc, -O3):

Код
Microseconds for one run through Dhrystone:     8.0
Dhrystones per Second:                        125000.0
VAX MIPS rating =     71.144


---
Вот так точнее (было округление до секунд, сейчас до сотых):
Код
Microseconds for one run through Dhrystone:     8.8
Dhrystones per Second:                        114025.1
VAX MIPS rating =     64.898


Нормуль, я доволенsm.gif
brag
Скомпилил все ARM C/C++ Compiler, 4.1 [Build 713] [Standard]
armcc --thumb -O3 --cpu=Cortex-M3 --bss_threshold=0 --c99 --gnu --wchar16 --diag_error=Warning -g
результ еще хуже:
Код
Microseconds for one run through Dhrystone: 30
Dhrystones per Second:                      33333
VAX MIPS rating = 18.971


arm-kgp-eabi-gcc -Werror -Wall -Wextra -pipe -mcpu=cortex-m3 -mthumb -O2 -fomit-frame-pointer -ffreestanding -fno-common -fwide-exec-charset=UTF-16LE -fshort-wchar -g
Код
Microseconds for one run through Dhrystone: 19
Dhrystones per Second:                      52631
VAX MIPS rating = 29.955


где вы столько понабирали, или это connectivity line такая тормозная?

AHTOXA, можете выложить откомпиленные бинарки dhry21a.о,dhry21b.о или как там у вас? уж больно интересно стало...
aaarrr
-Otime поставьте для RVCT.
brag
спасибо,поставил.
Код
Microseconds for one run through Dhrystone: 20
Dhrystones per Second:                      50000
VAX MIPS rating = 28.457

чуть не дотянуло до gcc. хоть и код у rvct вроде красивее местами выглядит (gcc в упор не юзает ldm, загружает значения через ld, вместо movw/movt часто), но на gcc всеравно запахало чуть быстрее.
sonycman
Цитата(AHTOXA @ Jun 14 2011, 14:35) *
Ну вот, а то "тормоз", "тормоз" sm.gif

Ну, думаю под ИАРом SAM3U покажет больше 100 мипсов, там в частоте только разница почти 50%.
Последний результат в 95 мипсов сильно удивил, честное слово sm.gif
Может, какая халтура там в коде?

Цитата
Вот так точнее (было округление до секунд, сейчас до сотых):

Хех, секунды, сотые - вот тут мои микросекундные таймеры рулят в полную laughing.gif

Цитата(brag @ Jun 14 2011, 17:21) *
VAX MIPS rating = 28.457[/code]

Честно говоря, странные результаты. Даже древний ИАР 5 версии выдаёт 50 мипсов...
aaarrr
Цитата(brag @ Jun 14 2011, 17:21) *
спасибо,поставил.

Все равно слишком мало. Поставили "-O3 -Otime"?
brag
Цитата
Честно говоря, странные результаты. Даже древний ИАР 5 версии выдаёт 50 мипсов...

вообще-то все дело в функциях типа strcpy sm.gif
у меня простые inline на C написаны, без особых хитростей, воткнул библиотечную strcpy, strcmp че-то не хочет, я ему __builtin_strcmp , а он мне undefined reference to `strcmp'
Цитата
Microseconds for one run through Dhrystone: 9
Dhrystones per Second: 111111
VAX MIPS rating = 63.239

кароче тут мы тестим у кого лучше strcpy/strcmp реализованы sm.gif)
AHTOXA
Цитата(brag @ Jun 14 2011, 18:53) *
AHTOXA, можете выложить откомпиленные бинарки dhry21a.о,dhry21b.о или как там у вас? уж больно интересно стало...

Вот держите, весь проект (с *.o): Нажмите для просмотра прикрепленного файла
Цитата(sonycman @ Jun 14 2011, 19:28) *
Хех, секунды, сотые - вот тут мои микросекундные таймеры рулят в полную laughing.gif

Это потому у вас такое ровное число:
Цитата
Microseconds for one run through Dhrystone: 6.0

? Или случайно совпало? sm.gif
sonycman
Цитата(AHTOXA @ Jun 14 2011, 19:05) *
Это потому у вас такое ровное число:
? Или случайно совпало? sm.gif

Хм, конечно случайно, там ведь время одного прохода вычисляется в плавучке.
Просто у меня точность измерения общего отрезка времени выполнения функции идёт до микросекунды sm.gif
AHTOXA
Тогда подправьте в тесте формат выдачи результата, чтоб было типа
Код
Microseconds for one run through Dhrystone: 6.002

, так будет видно микросекундное разрешениеsm.gif

Цитата(AHTOXA @ Jun 14 2011, 21:05) *
Вот держите, весь проект (с *.o): Нажмите для просмотра прикрепленного файла

Упс, накладочка вышла. Так не заработает. Чтоб заработало, надо в makefile исправить
USE_LTO = YES
на
USE_LTO = NO
. Это я пытался улучшить результат, но не заработало.
sonycman
Цитата(AHTOXA @ Jun 14 2011, 21:40) *
Тогда подправьте в тесте формат выдачи результата, чтоб было типа
Код
Microseconds for one run through Dhrystone: 6.002

, так будет видно микросекундное разрешениеsm.gif

Это уже будет нано- и пико- секундное разрешение sm.gif
А если серьёзно, то ничего так не будет видно, после вычисления на основе double переменных дробные значения получатся хоть из целых секунд.
Чтобы увидеть разрешение таймера нужно распечатать полученное общее время теста, или разницу между Begin_time и End_time.
В моём случае Begin_Time всегда равно нулю, поэтому достаточно только End_Time, в микросекундах:
Код
EndTime: 3035526
Microseconds for one run through Dhrystone: 6.0710520000
Dhrystones per Second:                        164716.1
VAX MIPS rating =     93.748
AHTOXA
Цитата(sonycman @ Jun 15 2011, 07:48) *
А если серьёзно, то ничего так не будет видно, после вычисления на основе double переменных дробные значения получатся хоть из целых секунд.

Я не о томsm.gif Просто после того, как у меня получилось усечение секунд до целых (с изрядным улучшением результата теста), я с подозрением отнёсся к
Microseconds for one run through Dhrystone: 6.0.
Вот так - совсем другое дело:
Microseconds for one run through Dhrystone: 6.0710520000
sm.gif
brag
проверил еще на IAR V6.20.3.22642
iccarm --thumb --cpu Cortex-M3 --aapcs std --aeabi -Ohs -r -e
Код
Microseconds for one run through Dhrystone: 21
Dhrystones per Second:                      47619
VAX MIPS rating = 27.102

все функции мои, библиотечные не использовал.
для сравнения тот же код на gcc
arm-none-eabi-gcc -Werror -Wall -Wextra -pipe -mcpu=cortex-m3 -mthumb -O2 -fomit-frame-pointer -ffreestanding -fno-common -fwide-exec-charset=UTF-16LE -fshort-wchar -g
Код
Microseconds for one run through Dhrystone: 19
Dhrystones per Second:                      52631
VAX MIPS rating = 29.955

sonycman
Цитата(brag @ Jun 16 2011, 17:16) *
все функции мои, библиотечные не использовал.

Все - это которые? Strcpy и Strcmp?
Ну а смысл? Ведь судя по результату - реализация очень слабая... rolleyes.gif

ЗЫ: а printf тоже ваша собственная? sm.gif
brag
Цитата
Все - это которые? Strcpy и Strcmp?
Ну а смысл? Ведь судя по результату - реализация очень слабая...

смысл - gcc че-то в free-standing глючит с библиотечными.
а реализация нормальная, просто компиллер, когда копирует строковые константы иногда может хитрый код генерить. в данном случаи
Код
strcpy (Ptr_Glob->variant.var_1.Str_Comp,"DHRYSTONE PROGRAM, SOME STRING");

он взрулил. в других случаях,где идет у меня работа с usb-дескрипторами он вообще хочет вызывать обычную strcpy, реализация которой ничем не лучше(и не хуже) моей.

Цитата
ЗЫ: а printf тоже ваша собственная?

да, простой. не хотел запариватся обучать gcc-шный, как правильно работать под моей системой, с моими драйверами, куда собственно выводить итп, а если он еще кучи использует, так вообще пахать не будет, у меня нету куч,статика чисто.
проще свой написать, всего каких-то там 120 строчек кода
и инлайны memxxx и strxxx все вместе 70 строчек кода

попробую еще какой-нибудь ogg или jpeg запихнуть, посмотрим как оно
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.