| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| АРМ7 въпроси http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1245 |
Страница 1 от 3 |
| Автор: | Nikola Kirov [ Пет Ное 11, 2005 1:37 am ] |
| Заглавие: | АРМ7 въпроси |
Някои може ли да разясни малко MEMORY ACCELERATOR MODULE. Кво е това нещо как се пие и кво му е мезето |
|
| Автор: | Zdrav [ Пет Ное 11, 2005 10:55 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
Memory Accelerator Module(MAM) ускорява изпълнението на програмата, когато тя се изпълнява от по-бавния FLASH. Говоря за LPC2000 серията, където го има и PHILIPS навсякъде подчертават, че имат zero wait states при изпълнение на програмата от FLASH. Както и по-голяма определеност в поведението на процесора в сравнение с използването на кеш. В UserManual-a на всеки процесор от серията има обяснени принципите на работа, най-добре да пиеш от извора. На демонстрациите PHILIPS най-често показват как една програмка за мигащ светодиод се забавя когато я прехвърлиш от RAM-а във FLASH-a и после как скоростта се възстановява когато включиш MAM в действие. Когато обаче опре до по-сложни програми тогава истината излиза на бял свят. Та значи този МАМ губи ефективността си ако имаш начесто branch инструкции. За това обаче може да се използват условно изпълнявани команди в критичните на скорост места. Например вместо:
става:
И пак ускорението не е гарантирано. Но пък и без MAM скоростта чувствително пада. МАМ също така може да намали консумацията тъй като съкращава броят обръщaния към FLASH-a. Не знам има ли го при другите MCU с ARM7 ядро, това което говоря е за LPC2000 серията. |
|||||||||||||||||||
| Автор: | Zdrav [ Пет Ное 11, 2005 11:02 am ] | |||||||||||||||||||||||||||
| Заглавие: | ||||||||||||||||||||||||||||
Такива инструкции(от сорта ldreq) има само в ARM режим в Thumb няма условно изпълнявани инструкции. |
||||||||||||||||||||||||||||
| Автор: | Nikola Kirov [ Пет Ное 11, 2005 1:52 pm ] |
| Заглавие: | |
Мерси. Просветна ми. 2 пъти го четох в оригиналната документация но не можа да ми се изясни точно. |
|
| Автор: | Цецо [ Пет Ное 11, 2005 6:01 pm ] |
| Заглавие: | |
Има го само при Филипс за сега. Може би защото флаша им хич не е от бързите. Има ефект от него особенно при линеен код. Когато имаш много подскоци и разклонения - ефекта е нулев. Иначе е нещо като кеш или конвейр или по скоро комбинация от двете. |
|
| Автор: | CM600 [ Пет Ное 11, 2005 8:08 pm ] |
| Заглавие: | |
Според PHILIPS по късите преходи не трябва да са проблем защото MAM модула има Branch Trail Buffer-и от по 128 бита, които пазят последните изпълнени инструкции. Така, че ако се изпълнява някой цикъл, който не подскача много надалеч, би трябвало да има положителен ефект Някои LPC-та (май че 22xx) имаха регистри с които да се следи състоянието на MAM, ама не съм много сигурен. С ADuC съм работил повече, там няма MAM. |
|
| Автор: | the_real_maniac [ Пет Ное 11, 2005 8:24 pm ] |
| Заглавие: | |
offtopic: Край ! Вече твърдо реших колкото се може по-скоро почвам да се занимавам с ARM7 (е естествено и да не забравяме CPLD-тата ) т.е накефЪх са |
|
| Автор: | Dimitar [ Пет Ное 11, 2005 8:50 pm ] |
| Заглавие: | |
И от какво се накефи толкова ако мога да попитам |
|
| Автор: | Nikola Kirov [ Пет Ное 11, 2005 9:03 pm ] |
| Заглавие: | |
Ух. Пак закъсах. Този път с VIC. От 2 часа чета и се пуля пред документацията , оригиналната от ARM и не мога да зацепя кое от къде ми идва. Не мога да схвана къде са ми флаговете на отделните прекъсвания. Не мога да схвана и как се конфигурира кои източник на прекъсване да е FIQ. Векторните ги рабрах уж. А тия дето са Non-vectored IRQ и за тях не ми стана ясно нещо. Някои може ли да хвърли малко светлина по въпроса. Нещо хич не ми спори с тия армове |
|
| Автор: | ДедоБоре [ Пет Ное 11, 2005 9:05 pm ] |
| Заглавие: | |
това нещо като "хипер-кеш" ли е? щото дори нормален кеш тярбва да решава тези проблеми. или кеша не върви на 1 такт или какво? ако беше свързано с thumb режима и има значение за конвейра (след 'unthumb-ване на унструкцията) го разбирам, ама то важало само за 32-битова мода. здрав, айде, бил си на презентацията. с какво точно се биха в гърдите? поправка: сега се зачетох в документацията на 2106. той нямал кеш изобщо! бях свикнал априори ARM7 коровете да имат поне 8К конфугурируем кеш, ама този май е уникат. май отговора на въпроса какво е МАМ е "кеш за инструкции с големина 8 инструкции" 8 защото имаме 2х128 бита / 32 бита за инструкция поправете ме ако съм разбрал криво нещо документацията |
|
| Автор: | the_real_maniac [ Пет Ное 11, 2005 10:32 pm ] | |||||||||
| Заглавие: | ||||||||||
Еми като включим другите неща , които чух за ARM7/9 (стабилност, възможности) + това горе + скоростта , която могат да достигнат (такт => цикъл на инструкция и прочие) как да не им се накефи вече човек Пък и точно ти да питаш такова нещо човек, който търси да мине на друго от PIC след време -- въпроса го обмислям от известно време (да се чете от както прочетох отзивите/споделения опит за PIC на хората от този форум), но спирам до тук, че темата на Nikola е за друго. има си теми за моя въпрос / моето чудене |
||||||||||
| Автор: | ToHu [ Пет Ное 11, 2005 11:04 pm ] |
| Заглавие: | |
Абе в определени отношения си е супер АРМ, но да измести нещо от сорта на pIC не го виждам, ще си играя с него определено, но за момента си поръчах равойна среда на Cygnal тъкмо имам приложение като за него, това ARM-а не може да конкурира, има си приложения където 32 битовите сметки не са много но скоростта е от значение, а това са си 100 MIPS, и тях от давна им се каня, ей ся ще ги видя. Иначе пък се сещам за едно приложение дето арм-а просто е бе конкуренция, и за още едно дето на амд алхимика му е конкуренция ... за сега ..... |
|
| Автор: | Zdrav [ Пет Ное 11, 2005 11:08 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
Спокойно VIC изглежда малко объркващо в началото може би заради многото регистри. Избираш кой да бъде FIQ като използваш VICIntSelect регистъра. В UserManual-а в раздела за VIC има една таблица "Interrupt sources" В тази таблица всички източници на прекъсване имат номер. За да конфигурираш дадено прекъсване като FIQ трябва да сетнеш съответния номер бит във VICIntSelect. Например Timer0 е номер 4. За да имаш FIQ от Timer0 пишеш:
Остава ти само да го активираш с:
Във таблицата на изключителните събития във startup файла на адрес 0x1C трябва да имаш вектор към FIQ процедурата ти и си готов. Щом си разбрал за векторните за невекторните е още по-лесно. Просто сетваш бита му във VICIntEnable. Когато постъпи заявка за такова прекъсване ARM7 ще прочете какъв адрес има записан във VICDefVectAddr и изпълнението ще бъде насочено към този адрес превключвайки ядрото в IRQ режим. Мисля че първият път когато конфигурираш VIC с някакъв реален пример ще ти стане ясно. |
|||||||||||||||||||
| Автор: | Nikola Kirov [ Пет Ное 11, 2005 11:21 pm ] |
| Заглавие: | |
Като че ли ми просветна. А флагове на различните прекъсвания имам ли? |
|
| Автор: | Zdrav [ Пет Ное 11, 2005 11:30 pm ] | |||||||||
| Заглавие: | ||||||||||
ДедоБоре MAM замества кеша при LPC2000. На презентацията не казаха нещо различно от писаното в документацията.
Да не съм те подвел. Примера който дадох беше че при Thumb инструкциите не можеш да имаш условно изпълнение. Тоест ldreq е само за ARM режим, за Thumb имаш само ldr. MAM работи независимо от режима ARM/Thumb. Обсъжданията почват да приличат на моменти на ARM срещу останалия свят |
||||||||||
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|