Перейти к содержанию
    

Ну и что об этом думает уважаемый all?

 

http://www.atmel.com/dyn/corporate/view_de...short_2_14.html

 

http://www.atmel.com/products/AVR32/

 

400 мгц однако. Интересно теперь реальное потребление, корпуса, возможности отладки и цены. Вот вам и АРМ9 блин. :w00t:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего думать? На картинке-то всё красиво. Посмотрим на жылезку. Думаю, на перывх порах будет либо масочная, либо с внешней флэшей. Наверняка 99% пойдёт под цифровое ТВ с маской. У проклятых аналогового-то таво... нет уже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ждем-с…

Судя по описанию, если все заявленные характеристики окажутся правдой, безраздельному господству ARM-ов, прежде всего в сфере мобильных устройств, придет конец.

 

Я себе уже IAR Embedded Workbench V2.10 for Atmel AVR32 поставил. :tongue:

Можно погонять на симуляторе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

IAR тоже не отстает, надо же какие молодцы... А все-таки не понятно, зачем этот AVR нужен, ведь есть ARM'ы недорогие, многофункциональные...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ждем-с…

Судя по описанию, если все заявленные характеристики окажутся правдой, безраздельному господству ARM-ов, прежде всего в сфере мобильных устройств, придет конец.

 

Я себе уже IAR Embedded Workbench V2.10 for Atmel AVR32 поставил. :tongue:

Можно погонять на симуляторе.

 

А посмотри, плиз, как он делает загрузку непосредственного лонга в регистр (unsigned long i=0x56781234), как ARM (т.е. берет константу со смещением) или как PPC (т.е. загружаем младшее слово с расширением нуля и делаем or старшему слову в регистре), т.е.

 

unsigned long i=0x1234;

i|=0x5678<<16;

 

Или как там можно по системе комманд, я не помню. Дело в том, что загрузка иммедитейта в ARM - узкое местечко, в PPC более грамотно, правда, на AVR32 загрузка лонга методом PPC будет занимать 64 бита, а не 48.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скомпилировал один и тот же пример (пресловутый фибоначчи), оптимизация по скорости максимальная

CPPtutor.cpp:

ARM v4.31a (thumb)

 256 bytes in segment CODE
139 bytes in segment DATA_C
168 bytes of CODE  memory (+ 88 bytes shared)
139 bytes of CONST memory

AVR32 v2.10a

 184 bytes in segment CODE21
140 bytes in segment DATA21_C
160 bytes of CODE  memory (+ 24 bytes shared)
140 bytes of CONST memory

После сборки

ARM v4.31a (thumb)

INTVEC                             00000000 - 0000003B          3C   com    2
ICODE                              00008000 - 000080FB          FC   rel    2
DIFUNCT                            000080FC - 00008107           C   rel    2
CODE                               00008108 - 0000B3A3        329C   rel    2
INITTAB                            0000B3A4 - 0000B3BB          18   rel    2
DATA_ID                            0000B3BC - 0000B3C3           8   rel    2
DATA_C                             0000B3C4 - 0000B51F         15C   rel    2
DATA_I                             00100000 - 00100007           8   rel    2
DATA_Z                             00100008 - 00100072          6B   rel    2
DATA_N                             00100074 - 001002F7         284   rel    2
CSTACK                             001002F8 - 001022F7        2000   rel    2
IRQ_STACK                          001022F8 - 001023F7         100   rel    2
HEAP                               001023F8 - 0010A3F7        8000   rel    2

13 280 bytes of CODE  memory
41 975 bytes of DATA  memory
    380 bytes of CONST memory

AVR32 v2.10a

__aseg                                  00000000                     rel    0
RESETCODE                          00000000 - 0000000B           C   rel    2
<CODE21> 1                         0000000C - 00000285         27A   rel    2
<DATA21_C> 1                       00000286 - 00000287           2   rel    0
<CODE21> 2                         00000288 - 000003FD         176   rel    2
EVBYTES1                           00000400 - 00000473          74   com   10
<CODE21,EVBYTES3> 1
                                   00000474 - 000004FF          8C   rel    2
EVBYTES2                           00000500 - 00000503           4   rel    1
<CODE21,EVBYTES3> 2
                                   00000504 - 000023EB        1EE8   rel    2
<DATA21_C> 2                       000023EC - 000025CD         1E2   rel    2
DATA21_I                           00080000 - 0008003F          40   rel    2
DATA21_Z                           00080040 - 000800A3          64   rel    2
DATA21_N                           000800A4 - 00080327         284   rel    2
DATA32_I                                20000000                     dse    0
DATA32_Z                           20000000 - 20000007           8   rel    2
HEAP                               20000008 - 20001007        1000   rel    2
SSTACK                             20FFF000 - 20FFFFFF        1000   rel    2
INITTAB                            400025D0 - 400025F3          24   rel    2
DIFUNCT                            400025F4 - 400025FF           C   rel    2
DATA21_ID                          40002600 - 4000263F          40   rel    2
ACTAB                                   40002640                     dse    0
HTAB                                    40002640                     rel    2
EVTAB                              80000400 - 80000473          74   com   10
<EVSEG> 1                          80000474 - 800004E3          70   rel    2
EV100                              80000500 - 80000503           4   rel    1
<EVSEG> 2                          80000504 - 80000593          90   rel    2
RESET                              A0000000 - A000000B           C   rel    2

9 580 bytes of CODE  memory
9 008 bytes of DATA  memory
   596 bytes of CONST memory

Вот такая картина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве сравнения ещё один пример

AVR v4.12a (максимальная оптимизация по скорости)

CPPtutor.cpp

 284 bytes in segment CODE
   7 bytes in segment INITTAB
135 bytes in segment NEAR_I
135 bytes in segment NEAR_ID

333 bytes of CODE memory (+ 93 bytes shared)
135 bytes of DATA memory

После сборки

INTVEC               CODE          00000000 - 00000003           4   com    1
?FILL1               CODE          00000004 - 0000008B          88   rel    0
NEAR_F               CODE          0000008C - 000000CF          44   rel    0
DIFUNCT              CODE          000000D0 - 000000D5           6   rel    0
CODE                 CODE          000000D6 - 00003173        309E   rel    1
INITTAB              CODE          00003174 - 00003181           E   rel    0
NEAR_ID              CODE          00003182 - 0000323E          BD   rel    0
ABSOLUTE             DATA               0000001C                     rel    0
                     DATA               0000001D                   
                     DATA               0000001E                   
                     DATA               0000001F                   
CSTACK               DATA          00000100 - 00000209         10A   dse    0
NEAR_HEAP            DATA          0000020A - 00000229          20   dse    0
RSTACK               DATA          0000022A - 0000024D          24   dse    0
NEAR_I               DATA          0000024E - 0000030A          BD   rel    0
NEAR_Z               DATA          0000030B - 000004DF         1D5   rel    0
IOSTREAM_N           DATA          00001082 - 000010FF          7E   rel    0

12 727 bytes of CODE memory (+ 136 range fill )
  1 118 bytes of DATA memory

Есть о чём задуматься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

непосредственный лонг грузануть можно LDDPC Rx,PC[offset], если одним махом.

 

Вот-вот, это способ загрузки лонга в ARM процах. Именно здесь и узкое место. Объясню.

 

Отвлечемся от конвейеров и т.д. Будем рассматривать проц без всяких наворотов в этом смысле(как AVR). Что надо на ARM, чтобы загрузить лонг (точнее, что происходит на шине):

 

...

читаем комманду

читаем комманду

читаем комманду (загрузка по PC+что-то)

вычисляем это PC+чтото

грузим данные

читаем комманду

....

 

 

Для PPC (возможна такая же фича на AVR32)

 

читаем комманду

читаем комманду (в комманде мл. 16 бит)

читаем комманду (в комманде ст. 16 бит)

читаем комманду

 

Вроде особой разницы нет, если вспомнить про конвейер, и что время на вычисление PC+xxx не тратится.

 

Однако, если учесть, что поток комманд вынимается заранее, да еще и не одна комманда за раз (а сколько в шину данных влезло), а если из динамической памяти, так еще и burst-mode, то загрузка одного лонга из выпадающего из основного потока истории ;) адреса все "чи" поломает. Вот в этом месте узкость ARM. PPC этой узкости не имеют. AVR32 - можно так, можно эдак, вообщем, как компилятору приспичит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

адреса все "чи" поломает

Кто его знает. Там что-то про отдельный конвейер Load-store упоминается. А так, конечно, мона по пол-регистра грузить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

адреса все "чи" поломает

Кто его знает. Там что-то про отдельный конвейер Load-store упоминается. А так, конечно, мона по пол-регистра грузить.

 

Это где упоминается (для ARM или для AVR32)? Понятное дело, что нужен такой конвейер, например для сохранения-чтения многих регистров за раз, иначе останавливать проц - это не серьезно. Правда, такое сохранение/восстановление обычно в начале/конце функции, но тоже многое зависит, насколько часто функция вызывается. Далеко не все программируют так, чтобы все было в цикле без вызовов функций, цикл помещался в кеш и т.д. ;)

 

Да и все равно получается в момент сохранения/восстановления неизвестно, кто победит (выборка комманды или запись/чтение данных). Вообщем, шаманство...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это где упоминается (для ARM или для AVR32)?

Для АВР32. Где-то во флаерах, где картинки красивые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну ребята, прям смех разобрал... безраздельному господству армов конец... Неужели вы думаете, что популярен потому что он так крут ? И большинство народа использует Windows - потому что это лучшая система в мире ? Ну вобщем вы меня поняли.. Уверен на 85 % что этот AVR32 до России даже и не дойдет, а в общем мировом секторе займет доли процента. Если, конечно не обанкротит Atmel :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну ребята, прям смех разобрал... безраздельному господству армов конец... Неужели вы думаете, что популярен потому что он так крут ? И большинство народа использует Windows - потому что это лучшая система в мире ? Ну вобщем вы меня поняли.. Уверен на 85 % что этот AVR32 до России даже и не дойдет, а в общем мировом секторе займет доли процента. Если, конечно не обанкротит Atmel :-D

Я понял о чем Вы, однако,

Windows - лучшая система в мире, для своего, отнюдь не скудного, круга задач - это факт.

А ARM обязан своей популярности в том числе и из-за того, что он так крут.

 

Очень надеюсь, что Atmel не обанкротится, а AVR32 будет столь же удачной архитектурой, сколь была в свое время и остается до сих пор архитектура AVR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

архитектура архитектурой, но AVR в мире малопопулярен, цифр не знаю, но массовая доля устройств на его базе, уверен, доли процента. Как говорится, деньги решают все, даже дифференциальные уравнения. А Атмель это не Хитачи и не Моторола. Ну ,впрочем, флейм разводить не хочу. Время покажет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...