Подписаться на получение новых статей на почту:

Архитектура ARM. Введение. Шаг №77

Всем привет. В сегодняшней статье мы с Вами познакомимся с архитектурой ARMИ в последующих записях будем работать с данными микроконтроллерами, повышая производительность и функциональность проектов. Микроконтроллеры AVR, с которыми мы работали в предыдущих статьях, где в последний записи использовали ATmega8A как USB-устройство сопрягая с ОС Android (используя V-USB, OTG и приложение на java), в дальнейших проектах будут использоваться как промежуточные звенья.

Что же такое ARM? Начнем с истории. Расшифровуется аббревиатура как Advanced RISC Machine — усовершенствованная RISC-машина, либо — AcornRISC Machine. Где Acorn — название объединенного предприятия, а  Advanced — отдельный процессорный бизнес. Acorn – переименованная фирма CPU, которая выпустила в 1979 году свой первый компьютер Acorn System 1, в этом же году и переименована. Формально фирма ARM Holdings была создана в 1990 году, а Acorn (ARM)конкретнее — в тот момент, когда было подписано соглашение между тремя компаниями: Apple Computer, Acorn Computers и VLSI Technology. Более подробно об истории можно почитать в статье по следующей ссылке: https://xakep.ru/2014/10/04/arm-history/.

ARM  — семейство 32-битных и 64-битных микропроцессорных ядер, которые широко используются в потребительской электронике. Появилась при изучении документации проекта RISC. Официальный проект Acorn RISC Machine был начат в arm kontroler октябре 1983 года. И первый процессор ARM1 был произведен  26 апреля 1985 года. Через год появились серийные процессоры arm2. Далее было семейство ARM3. ARM6 в 1992 году. И так далее. Сама компания не производит микросхемы и на данный момент не производит процессоры. Основной бизнес это продажа лицензий. Например обладатели «архитектурную лицензию» имеют право разрабатывать собственные микропроцессорные ядра, реализующие инструкции ARM и использующие патенты ARM. А в 2016 году японская компания Softbank (третий по величине оператор Страны восходящего солнца) приобрела британскую компанию ARM за $32 млрд.

AMD Если сравнивать ARM c х86 , то последняя позиционируется как обработчик ресурсоемких задач, а ткакже CISC (Complex Instruction Set Computing), т.е. реализованы инструкции на все случаи жизни, в отличии от, RISC — набором минимально необходимых для работы команд. Минусом х86 можна назвать энергоемкость, соответственно выделения большого количества теплоты ну и сложность команд. ARM — минимальное энергопотребление, низкая цена, и низкая производительность работы по сравнению с x86.  В последнее время грань между обоими архитектурами стирается. ARM процессоры становятся более производительными и быстрыми. В общем стоит отметить что эти две архитектуры представляют основной процент продаж на рынке.

Архитектура развивалась с течением времени, и начиная с ARMv7 были определены 3 профиля:
— ‘A’(application) — для устройств, требующих высокой производительности (смартфоны, планшеты)
 — ‘R’(real time) — для приложений, работающих в реальном времени,
 — ’M’(microcontroller) — для микроконтроллеров и недорогих встраиваемых устройств.
CortexM4M-профиль (версии ARMv6-M и ARMv7-M, ядра Cortex-M), строго говоря, не относится к «настоящим» ARM-процессорам. Во-первых, он кардинальным образом отличается по системной архитектуре от всех прочих разработок фирмы ARM, а соответственно, на системном уровне несовместим ни с более ранними процессорами, ни с другими профилями 7-й версии архитектуры. Во-вторых, в этих кристаллах реализована только система команд Thumb (ARMv6-M, ядра Cortex-M0 и -M1) или Thumb-2 (ARMv7-M, все прочие ядра Cortex-M), а команды набора ARM не поддерживаются. Предназначена эта серия для использования в качестве микроконтроллеров малой и средней производительности. Благодаря низкой стоимости и энергопотреблению они могут успешно конкурировать с намного более слабыми по вычислительными возможностям 8- и 16-разрядными микроконтроллерами. Заметим, что принадлежность ядер Cortex-M0 и -M1 к 6-й версии архитектуры является чисто формальной. Всю интересующую документацию можна скачать на официальном сайте https://developer.arm.com/
Забегая на перед, мы с Вами будем работать с архитектурой ARMv7Е-M, ядро Cortex-M. В процессе работы с ним изучим все тонкости.
Ниже таблица семейства Cortex-M.Безымянный

И последнее рассмотрим набор инструкций Thumb. Это режим процессоров ARM (начиная с ARM7TDMI), где используется сокращенная система команд. Состоит из 36 команд, взятых из стандартного набора 32-разрядных команд архитектуры ARM и преобразованных до 16-разрядных кодов, т.е. выполняет альтернативный набор 16-битных команд. Длина команд Thumb составляет половину длины стандартных 32-разрядных команд, что позволяет существенно сократить необходимые объёмы памяти программ (порядка 30 %), а также использовать более дешёвую 16-разрядную память. При выполнении эти команды дешифруются процессором в эквивалентные операции ARM, выполняемые за то же количество тактов. Более короткие коды операций в целом дают большую плотность кода, хотя некоторые операции требуют дополнительных команд. В ситуациях, когда порт памяти или ширина шины ограничены 16 битами, более короткие коды операций режима Thumb становятся гораздо производительнее по сравнению с обычным 32-битным ARM-кодом, так как меньший программный код придется загружать в процессор при ограниченной пропускной способности памяти. Thumb-2 (являющийся смесью ARM и Thumb) — технология, стартовавшая с ARM1156 core, анонсированного в 2003 году. Он расширяет ограниченный 16-битный набор команд Thumb дополнительными 32-битными командами, чтобы задать набору команд дополнительную ширину. Цель Thumb-2 — достичь плотности кода, как у Thumb, и производительности, как у набора команд ARM на 32 битах. Можно сказать, что в ARMv7 эта цель была достигнута. Thumb-2 расширяет как команды ARM, так и команды Thumb ещё большим количеством команд. Язык «Unified Assembly Language» (UAL) поддерживает создание команд, как для ARM, так и для Thumb из одного и того же исходного кода. Версии Thumb на ARMv7 выглядят, как код ARM. Все кристаллы ARMv7 поддерживают набор команд Thumb-2, а некоторые кристаллы, вроде Cortex-m3, поддерживают только Thumb-2. Остальные кристаллы Cortex и ARM11 поддерживают наборы команд как Thumb-2, так и ARM.

Архитектура ARM имеет много версий, на сегодняшний день (2017) последняя это ARMv8-A семейства Cortex-A50, кстати весной 2017 года компания ARM представила два процессорных ядра Cortex-A75 и Cortex-A55. Мы с Вами не рассматриваем разработки сторонними компаниями, владеющими архитектурной лицензией от ARM, которая разрешала реализацию запатентованных инструкций. Мы с Вами познакомимся с архитектурой ARMv7E-M на ядре Cortex-M4, работая с микроконтроллером STM32F303VCT6 на отладочной плате STM32F3 Discovery. Выше я писал, о переходе на arm ради производительности и функциональности, но также мы расширим немного кругозор, изучим новую технологию и научимся ее интегрировать в проекты, совмещая с другими технологиями. В следующей записи познакомимся с  микроконтроллером STM32F303VCT6, рассмотрим его архитектуру, и научимся с ним работать. На этом сегодня и остановимся. Всем пока.

Просмотрено 162 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting