|
Cortex-M0, от миландра |
|
|
|
 |
Ответов
|
Dec 10 2011, 08:48
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Cortex-M0 -- это архитектура ARMv6-M, имеющая только систему команд Thumb, а Cortex-M3 (как и -М4) -- это архитектура ARMv7-M, у которой используется Thumb-2. Последняя по своим функциональным возможностям почти соответствует "родной" АРМовской (которая у Cortex-M отсутствует вообще). В частности, любые операции могут выполняться с почти любыми регистрами, в то время как в Thumb свободно можно использовать лишь R0-R7, а остальные -- лишь в нескольких командах. Результат этого ограничения сильно зависит от компилятора. GCC, например, очень плохо следит за регистрами, из-за чего ему их всегда не хватает, и код прилично раздувается лишними сохранениями-восстановлениями в стеке, что приводит ещё и к тормозам (иногда -- очень приличным; у меня знакомый с этим столкнулся на LPC2478: при компиляции в код Thumb скорость падала в несколько раз по сравнению с кодом ARM, поскольку начинались сплошные обращения к стеку, который находился во внешней памяти вместе с видеобуфером -- ну, процессор и вынужден был стоять, когда к памяти обращался дисплейный контроллер; при коде ARM, в котором свободно использовались все регистры, число сохранений-восстановлений в стеке резко уменьшилось).
Реализация обработки прерываний одинакова, разница лишь количественная (большее число линий и т.п. у Cortex-M3). Правда, насколько помню, в ARMv7-M при возврате из прерывания выполняются дополнительные проверки, в то время как ARMv6-M игнорирует некоторые ошибки, из-за чего некий код, работающий на Cortex-M0, может оказаться неработоспособным на Cortex-M3 (другое дело, что этот код изначально является неправильным).
Сообщение отредактировал SII - Dec 10 2011, 08:52
|
|
|
|
|
Dec 10 2011, 08:53
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(SII @ Dec 10 2011, 13:48)  Cortex-M0 -- это архитектура ARMv6-M, имеющая только систему команд Thumb, а Cortex-M3 (как и -М4) -- это архитектура ARMv7-M, у которой используется Thumb-2. Последняя по своим функциональным возможностям почти соответствует "родной" АРМовской (которая у Cortex-M отсутствует вообще). В частности, любые операции могут выполняться с почти любыми регистрами, в то время как в Thumb свободно можно использовать лишь R0-R7, а остальные -- лишь в нескольких командах. И это всё? А если сравнить детали? Тумба 1 является 16-битной системой команд полностью. Почти все дополнительные команды в Тумбе-2 являются 32-битными. Особенно те, которые обращяются к верхним регистрам. А это очевидно значит, что на Тумбе-1 можно поставить 2 команды и иметь тот же размер кода, что и в Тумбе-2. Если Тумба-2 выполняет даже 32-битную команду за такт, то это конечно бонус в скорости выполнения. Но размер кода у них всё равно почти одинаковый.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
Сообщений в этой теме
wedmeed Cortex-M0 Dec 6 2011, 07:18 Сергей Борщ QUOTE (wedmeed @ Dec 6 2011, 10:18) Расск... Dec 6 2011, 08:19 GetSmart Цитата(Сергей Борщ @ Dec 6 2011, 13:19) M... Dec 9 2011, 11:34 MrYuran Потреблением ещё вроде как должен отличаться. В ме... Dec 6 2011, 11:46 wedmeed А механзм прерываний отличается?
И еще где-то виде... Dec 9 2011, 08:00 Сергей Борщ QUOTE (wedmeed @ Dec 9 2011, 10:00) А мех... Dec 9 2011, 11:18  RA3WUM Цитата(Сергей Борщ @ Dec 9 2011, 15:18) М... Dec 9 2011, 19:16 Сергей Борщ QUOTE (GetSmart @ Dec 9 2011, 13:34) Не м... Dec 9 2011, 23:12 GetSmart Цитата(Сергей Борщ @ Dec 10 2011, 04:12) ... Dec 10 2011, 08:15 SII Да, размер основной массы дополнительных команд у ... Dec 10 2011, 09:16 GetSmart Цитата(SII @ Dec 10 2011, 14:16) Однако н... Dec 10 2011, 09:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|