Отговори на тема  [ 43 мнения ]  Отиди на страница 1, 2, 3  Следваща
АРМ7 въпроси 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение АРМ7 въпроси
Някои може ли да разясни малко MEMORY ACCELERATOR MODULE. Кво е това нещо как се пие и кво му е мезето :)


Пет Ное 11, 2005 1:37 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Memory Accelerator Module(MAM) ускорява изпълнението на програмата, когато тя се изпълнява от по-бавния FLASH. Говоря за LPC2000 серията, където го има и PHILIPS навсякъде подчертават, че имат zero wait states при изпълнение на програмата от FLASH. Както и по-голяма определеност в поведението на процесора в сравнение с използването на кеш. В UserManual-a на всеки процесор от серията има обяснени принципите на работа, най-добре да пиеш от извора.
На демонстрациите PHILIPS най-често показват как една програмка за мигащ светодиод се забавя когато я прехвърлиш от RAM-а във FLASH-a и после как скоростта се възстановява когато включиш MAM в действие. Когато обаче опре до по-сложни програми тогава истината излиза на бял свят. Та значи този МАМ губи ефективността си ако имаш начесто branch инструкции. За това обаче може да се използват условно изпълнявани команди в критичните на скорост места.
Например вместо:

Код:
cmp r0, r1
bne Jump1
ldr r2, [r3]
Jump1:
...


става:

Код:
cmp r0, r1
ldreq r2, [r3]


И пак ускорението не е гарантирано. Но пък и без MAM скоростта чувствително пада.
МАМ също така може да намали консумацията тъй като съкращава броят обръщaния към FLASH-a.

Не знам има ли го при другите MCU с ARM7 ядро, това което говоря е за LPC2000 серията.


Пет Ное 11, 2005 10:55 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Zdrav написа:
Например вместо:

Код:
cmp r0, r1
bne Jump1
ldr r2, [r3]
Jump1:
...


става:

Код:
cmp r0, r1
ldreq r2, [r3]



Такива инструкции(от сорта ldreq) има само в ARM режим в Thumb няма условно изпълнявани инструкции.


Пет Ное 11, 2005 11:02 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Мерси. Просветна ми. 2 пъти го четох в оригиналната документация но не можа да ми се изясни точно.


Пет Ное 11, 2005 1:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Има го само при Филипс за сега. Може би защото флаша им хич не е от бързите.

Има ефект от него особенно при линеен код. Когато имаш много подскоци и разклонения - ефекта е нулев.

Иначе е нещо като кеш или конвейр или по скоро комбинация от двете.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пет Ное 11, 2005 6:01 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пет Окт 21, 2005 9:35 pm
Мнения: 152
Местоположение: Варна
Мнение 
Според PHILIPS по късите преходи не трябва да са проблем защото MAM модула има Branch Trail Buffer-и от по 128 бита, които пазят последните изпълнени инструкции. Така, че ако се изпълнява някой цикъл, който не подскача много надалеч, би трябвало да има положителен ефект :P
Някои LPC-та (май че 22xx) имаха регистри с които да се следи състоянието на MAM, ама не съм много сигурен. С ADuC съм работил повече, там няма MAM.


Пет Ное 11, 2005 8:08 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
offtopic:

Край ! Вече твърдо реших колкото се може по-скоро почвам да се занимавам с ARM7 (е естествено и да не забравяме CPLD-тата ) 8)

т.е накефЪх са :)

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Пет Ное 11, 2005 8:24 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
И от какво се накефи толкова ако мога да попитам :) .


Пет Ное 11, 2005 8:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ух. Пак закъсах. Този път с VIC.
От 2 часа чета и се пуля пред документацията , оригиналната от ARM и не мога да зацепя кое от къде ми идва.
Не мога да схвана къде са ми флаговете на отделните прекъсвания. Не мога да схвана и как се конфигурира кои източник на прекъсване да е FIQ.
Векторните ги рабрах уж. А тия дето са Non-vectored IRQ и за тях не ми стана ясно нещо. Някои може ли да хвърли малко светлина по въпроса. Нещо хич не ми спори с тия армове :(


Пет Ное 11, 2005 9:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
това нещо като "хипер-кеш" ли е?
щото дори нормален кеш тярбва да решава тези проблеми.
или кеша не върви на 1 такт или какво? ако беше свързано с thumb режима и има значение за конвейра (след 'unthumb-ване на унструкцията) го разбирам, ама то важало само за 32-битова мода.

здрав, айде, бил си на презентацията. с какво точно се биха в гърдите?

поправка:
сега се зачетох в документацията на 2106. той нямал кеш изобщо! 8O
бях свикнал априори ARM7 коровете да имат поне 8К конфугурируем кеш, ама този май е уникат.

май отговора на въпроса какво е МАМ е "кеш за инструкции с големина 8 инструкции"
8 защото имаме 2х128 бита / 32 бита за инструкция

поправете ме ако съм разбрал криво нещо документацията


Пет Ное 11, 2005 9:05 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
Dimitar написа:
И от какво се накефи толкова ако мога да попитам :) .


Еми като включим другите неща , които чух за ARM7/9 (стабилност, възможности) + това горе + скоростта , която могат да достигнат (такт => цикъл на инструкция и прочие) как да не им се накефи вече човек :)

Пък и точно ти да питаш такова нещо човек, който търси да мине на друго от PIC след време :P :P :P
--
въпроса го обмислям от известно време (да се чете от както прочетох отзивите/споделения опит за PIC на хората от този форум), но спирам до тук, че темата на Nikola е за друго.
има си теми за моя въпрос / моето чудене ;)

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Пет Ное 11, 2005 10:32 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Абе в определени отношения си е супер АРМ, но да измести нещо от сорта на pIC не го виждам, ще си играя с него определено, но за момента си поръчах равойна среда на Cygnal тъкмо имам приложение като за него, това ARM-а не може да конкурира, има си приложения където 32 битовите сметки не са много но скоростта е от значение, а това са си 100 MIPS, и тях от давна им се каня, ей ся ще ги видя. Иначе пък се сещам за едно приложение дето арм-а просто е бе конкуренция, и за още едно дето на амд алхимика му е конкуренция ... за сега .....


Пет Ное 11, 2005 11:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Спокойно VIC изглежда малко объркващо в началото може би заради многото регистри. Избираш кой да бъде FIQ като използваш VICIntSelect регистъра. В UserManual-а в раздела за VIC има една таблица "Interrupt sources" В тази таблица всички източници на прекъсване имат номер. За да конфигурираш дадено прекъсване като FIQ трябва да сетнеш съответния номер бит във VICIntSelect. Например Timer0 е номер 4. За да имаш FIQ от Timer0 пишеш:

Код:
VICIntSelect |= 0x10;


Остава ти само да го активираш с:
Код:
VICIntEnable = 0x10;


Във таблицата на изключителните събития във startup файла на адрес 0x1C трябва да имаш вектор към FIQ процедурата ти и си готов.
Щом си разбрал за векторните за невекторните е още по-лесно. Просто сетваш бита му във VICIntEnable. Когато постъпи заявка за такова прекъсване ARM7 ще прочете какъв адрес има записан във VICDefVectAddr и изпълнението ще бъде насочено към този адрес превключвайки ядрото в IRQ режим.
Мисля че първият път когато конфигурираш VIC с някакъв реален пример ще ти стане ясно.


Пет Ное 11, 2005 11:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Като че ли ми просветна. А флагове на различните прекъсвания имам ли?


Пет Ное 11, 2005 11:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
ДедоБоре MAM замества кеша при LPC2000. На презентацията не казаха нещо различно от писаното в документацията.
Цитат:
ама то важало само за 32-битова мода.

Да не съм те подвел. Примера който дадох беше че при Thumb инструкциите не можеш да имаш условно изпълнение. Тоест ldreq е само за ARM режим, за Thumb имаш само ldr.
MAM работи независимо от режима ARM/Thumb.
Обсъжданията почват да приличат на моменти на ARM срещу останалия свят :lol:


Пет Ное 11, 2005 11:30 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 43 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни