Меню

Armv7 что такое – ARM — что это? Подробно и с примерами

Содержание

Процессоры ARM, что это?

Подавляющее большинство современных гаджетов используют процессоры на архитектуре ARM, разработкой которой занимается одноимённая компания ARM Limited. Что интересно, компания сама не производит процессоры, а только лицензирует свои технологии для сторонних производителей чипов. Помимо этого, компания также разрабатывает процессорные ядра Cortex и графические ускорители Mali, которых мы обязательно коснёмся в этом материале.

ARM Limited

Компания ARM, фактически, является монополистом в своей области, и подавляющее большинство современных смартфонов и планшетов на различных мобильных операционных системах используют процессоры именно на архитектуре ARM. Производители чипов лицензируют у ARM отдельные ядра, наборы инструкций и сопутствующие технологии, причём стоимость лицензий значительно разнится в зависимости от типа процессорных ядер (это могут быть как маломощные бюджетные решения, так и ультрасовременные четырёхъядерные и даже восьмиядерные чипы) и дополнительных компонентов. Годовой отчёт о прибыли ARM Limited за 2006 год показал выручку в 161 миллион долларов за лицензирование около 2,5 миллиардов процессоров (в 2011 году этот показатель составил уже 7,9 млрд), что означает примерно 0,067 долларов за один чип. Впрочем, по озвученной выше причине, это очень усреднённый показатель из-за разницы в ценах на различные лицензии, и с тех пор прибыль компании должна была вырасти многократно.

 

В настоящее время ARM-процессоры имеют очень широкое распространение. Чипы на этой архитектуре используются повсюду, вплоть до серверов, но чаще всего ARM можно встретить во встраиваемых и мобильных системах, начиная с контроллеров для жёстких дисков и заканчивая современными смартфонами, планшетами и прочими гаджетами.

Ядра Cortex

ARM разрабатывает несколько семейств ядер, которые используются для различных задач. К примеру, процессоры, основанные на Cortex-Mx и Cortex-Rx (где “х” — цифра или число, обозначающее точный номер ядра) используются во встраиваемых системах и даже бытовых устройствах, к примеру, роутерах или принтерах.

Cortex

Подробно на них мы останавливаться не будем, ведь нас, в первую очередь, интересует семейство Cortex-Ax — чипы с такими ядрами используются в наиболее производительных устройствах, в том числе смартфонах, планшетах и игровых консолях. ARM постоянно работает над новыми ядрами из линейки Cortex-Ax, но на момент написания этой статьи в смартфонах используются следующие из них:

  • Cortex-A5;
  • Cortex-A7;
  • Cortex-A8;
  • Cortex-A9;
  • Cortex-A12;
  • Cortex-A15;
  • Cortex-A53;
  • Cortex-A57.

Чем больше цифра — тем выше производительность процессора и, соответственно, дороже класс устройств, в которых он используется. Впрочем, стоит отметить, что это правило соблюдается не всегда: к примеру, чипы на ядрах Cortex-A7 имеют большую производительность, нежели на Cortex-A8. Тем не менее, если процессоры на Cortex-A5 уже считаются чуть ли не устаревшими и почти не используются в современных устройствах, то CPU на Cortex-A15 можно найти во флагманских коммуникаторах и планшетах. Не так давно ARM официально объявила о разработке новых, более мощных и, одновременно, энергоэффективных ядер Cortex-A53 и Cortex-A57, которые будут объединены на одном чипе с применением технологии ARM big.LITTLE и поддерживать набор команд ARMv8 (“версию архитектуры”), но в настоящее время они не применяются в массовых потребительских устройствах. Большинство чипов с ядрами Cortex могут быть многоядерными, и в современных топовых смартфонах повсеместное распространение получили четырёхъядерные процессоры.

Крупные производители смартфонов и планшетов обычно используют процессоры известных чипмейкеров вроде Qualcomm или собственные решения, которые уже успели стать довольно популярными (к примеру, Samsung и её семейство чипсетов Exynos), но среди технических характеристик гаджетов большинства небольших компаний зачастую можно встретить описание вроде “процессор на Cortex-A7 с тактовой частотой 1 ГГц” или “двухъядерный Cortex-A7 с частотой 1 ГГц”, которое обычному пользователю ничего не скажет. Для того, чтобы разобраться, в чём заключаются отличия таких ядер между собой, остановимся на основных.

Cortex-A5

Ядро Cortex-A5 используются в недорогих процессорах для наиболее бюджетных устройств. Такие устройства предназначены только для выполнения ограниченного круга задач и запуска простых приложений, но совершенно не рассчитаны на ресурсоёмкие программы и, тем более, игры. В качестве примера гаджета с процессором на Cortex-A5 можно назвать Highscreen Blast, который получил чип Qualcomm Snapdragon S4 Play MSM8225, содержащий два ядра Cortex-A5 с тактовой частотой 1,2 ГГц.

Cortex-A7

Процессоры на Cortex-A7 являются более мощными, чем чипы Cortex-A5, а кроме того, больше распространены. Такие чипы выполняются по 28-нанометровому техпроцессу и имеют большой кэш второго уровня до 4 мегабайт. Ядра Cortex-A7 встречаются, преимущественно, в бюджетных смартфонах и недорогих устройствах среднего сегмента вроде iconBIT Mercury Quad, а также, в качестве исключения, в Samsung Galaxy S IV GT-i9500 с процессором Exynos 5 Octa — этот чипсет при выполнении нетребовательных задач использует энергосберегающий четырёхъядерный процессор на Cortex-A7.

Cortex-A8

Ядро Cortex-A8 не так распространено, как его “соседи”, Cortex-A7 и Cortex-A9, но всё же используется в различных гаджетах начального уровня. Рабочая тактовая частота чипов на Cortex-A8 может составлять от 600 МГц до 1 ГГц, но иногда производители разгоняют процессоры и до более высоких частот. Особенностью ядра Cortex-A8 является отсутствие поддержки многоядерных конфигураций (то есть, процессоры на этих ядрах могут быть только одноядерными), а выполняются они по 65-нанометровому техпроцессу, который уже считается устаревшим.

Сortex-A9

Ещё пару лет назад ядра Cortex-A9 считались топовым решением и использовались как в традиционных одноядерных, так и более мощных двухъядерных чипах, например Nvidia Tegra 2 и Texas Instruments OMAP4. В настоящее время процессоры на Cortex-A9, выполненные по 40-нанометровому техпроцессу не теряют популярность и используются во многих смартфонах среднего сегмента. Рабочая частота таких процессоров может составлять от 1 до 2 и более гигагерц, но обычно она ограничивается 1,2-1,5 ГГц.

Cortex-A12

В июне 2013 года компания ARM официально представила ядро Cortex-A12, которое выполняется по новому 28-нанометровому техпроцессу и призвано заменить ядра Cortex-A9 в смартфонах среднего сегмента. Разработчик обещает увеличение производительности на 40% по сравнению с Cortex-A9, а кроме того, ядра Cortex-A12 смогут участвовать в архитектуре ARM big.LITTLE в качестве производительных вместе с энергосберегающими Cortex-A7, что позволит производителям создавать недорогие восьмиядерные чипы. Правда,на момент написания статьи всё это только в планах, и массовое производство чипов на Cortex-A12 ещё не налажено, хотя компания RockChip уже объявила о своём намерении выпустить четырёхъядерный процессор на Cortex-A12 с частотой 1,8 ГГц.

Cortex-A15

На 2013 год ядро Cortex-A15 и его производные является топовым решением и используется в чипах флагманских коммуникаторах различных производителей. Среди новых процессоров, выполненных по 28-нм техпроцессу и основанных на Cortex-A15 — Samsung Exynos 5 Octa и Nvidia Tegra 4, а также это ядро нередко выступает платформой для модификаций других производителей. Например, последний процессор компании Apple A6X использует ядра Swift, которые являются модификацией Cortex-A15. Чипы на Cortex-A15 способны работать на частоте 1,5-2,5 ГГц, а поддержка множества стандартов сторонних компаний и возможность адресовать до 1 ТБ физической памяти делает возможным применение таких процессоров в компьютерах (как тут не вспомнить мини-компьютер размером с банковскую карту Raspberry Pi).

Cortex-A50 series

В первой половине 2013 года ARM представила новую линейку чипов, которая получила название Cortex-A50 series. Ядра этой линейки будут выполнены по новой версии архитектуры, ARMv8, и поддерживать новые наборы команд, а также станут 64-битными. Переход на новую разрядность потребует оптимизации мобильных операционных систем и приложений, но, разумеется, сохранится поддержка десятков тысяч 32-битных приложений. Первой на 64-битную архитектуру перешла компания Apple. Последние устройства компании, например, iPhone 5S, работают на именно таком ARM-процессоре Apple A7. Примечательно, что он не использует ядра Cortex – они заменены на собственные ядра производителя под названием Swift. Одна из очевидных причин необходимости перехода к 64-битным процессорам — поддержка более 4 ГБ оперативной памяти, а, кроме того, возможность оперировать при вычислении намного большими числами. Конечно, пока это актуально, в первую очередь, для серверов и ПК, но мы не удивимся, если через несколько лет на рынке появятся смартфоны и планшеты с таким объёмом ОЗУ. На сегодняшний день о планах по выпуску чипов на новой архитектуре и смартфонов с их использованием ничего не известно, но, вероятно, именно такие процессоры и получат флагманы в 2014 году, о чём уже заявила компания Samsung.

Cortex-A53

Открывает серию ядро Cortex-A53, которое будет прямым “наследником” Cortex-A9. Процессоры на Cortex-A53 заметно превосходят чипы на Cortex-A9 в производительности, но, при этом, сохраняется низкое энергопотребление. Такие процессоры могут быть использованы как по одиночке, так и в конфигурации ARM big.LITTLE, будучи объединенными на одном чипсете с процессором на Cortex-A57

Perfomance Cortex-A53, Cortex-A57

 

Cortex-A57

Процессоры на Cortex-A57, которые будут выполнены по 20-нанометровому техпроцессу, должны стать самыми мощными ARM-процессорами в ближайшем будущем. Новое ядро значительно превосходит своего предшественника, Cortex-A15 по различным параметрам производительности (сравнение вы можете видеть выше), и, по словам ARM, которая всерьёз нацелена на рынок ПК, станет выгодным решением для обычных компьютеров (включая лэптопы), а не только мобильных устройств.

 

ARM big.LITTLE

ARM big.LITTLE

В качестве высокотехнологичного решения проблемы энергопотребления современных процессоров ARM предлагает технологию big.LITTLE, суть которой заключается в объединении на одном чипе ядер различных типов, как правило, одинакового количества энергосберегающих и высокопроизводительных.

Существует три схемы работы ядер различного типа на одном чипе: big.LITTLE (миграция между кластерами), big.LITTLE IKS (миграция между ядрами) и big.LITTLE MP (гетерогенный мультипроцессинг).

big.LITTLE (миграция между кластерами)

Первым чипсетом на архитектуре ARM big.LITTLE стал процесссор Samsung Exynos 5 Octa. В нём используется оригинальная схема big.LITTLE “4+4”, что означает объединение в два кластера (отсюда и название схемы) на одном кристалле четырёх высокопроизводительных ядер Cortex-A15 для ресурсоёмких приложений и игр и четырёх энергосберегающих ядер Cortex-A7 для повседневной работы с большинством программ, причём в один момент времени могут работать ядра только одного типа. Переключение между группами ядер происходит практически мгновенно и незаметно для пользователя в полностью автоматическом режиме.

big.LITTLE IKS (миграция между ядрами)

Более сложная реализация архитектуры big.LITTLE — объединение нескольких реальных ядер (как правило двух) в одно виртуальное, управляемое ядром операционной системы, которое решает, какие задействовать ядра — энергоэффективные или производительные. Разумеется, виртуальных ядер также несколько — на иллюстрации приведен пример схемы IKS, где в каждом из четырёх виртуальных ядер находятся по одному ядру Cortex-A7 и Cortex-A15.

big.LITTLE MP (гетерогенный мультипроцессинг)

Схема big.LITTLE MP является наиболее “продвинутой” — в ней каждое ядро является независимым и может включаться ядром ОС по необходимости. Это значит, что если используются четыре ядра Cortex-A7 и столько же ядер Cortex-A15, в чипсете, построенном на архитектуре ARM big.LITTLE MP, смогут работать одновременно все 8 ядер, даже несмотря на то, что они разных типов. Одним из первых процессоров такого типа стал восьмиядерный чип компании Mediatek — MT6592, который может работать на тактовой частоте 2 ГГц, а также записывать и воспроизводить видео в разрешении UltraHD.

Будущее

По имеющейся на данный момент информации, в ближайшее время ARM совместно с другими компаниями планирует наладить выпуск big.LITTLE чипов следующего поколения, которые будут использовать новые ядра Cortex-A53 и Cortex-A57. Кроме того, бюджетные процессоры на ARM big.LITTLE собирается выпускать китайский производитель MediaTek, которые будут работать по схеме “2+2”, то есть, использовать две группы по два ядра.

Графические ускорители Mali

Помимо процессоров, ARM также разрабатывает и графические ускорители семейства Mali. Подобно процессорам, графические ускорители характеризуются множеством параметров, например, уровнем сглаживания, интерфейсом шины, кэшем (сверхбыстрая память, используемая для повышения скорости работы) и количеством “графических ядер” (хотя, как мы писали в прошлой статье, этот показатель, несмотря на похожесть с термином, использующимся при описании CPU, практически не влияет производительность при сравнении двух GPU).

Первым графическим ускорителем ARM стал ныне неиспользуемый Mali 55, который был использован в сенсорном телефоне LG Renoir (да-да, самом обычном сотовом телефоне). GPU не использовался в играх — только для отрисовки интерфейса, и обладал примитивными по нынешним меркам характеристиками, но именно он стал “родоначальником” серии Mali.

С тех пор прогресс шагнул далеко вперёд, и сейчас немалое значение имеют поддерживаемые API и игровые стандарты. К примеру, поддержка OpenGL ES 3.0 сейчас заявлена только в самых мощных процессорах вроде Qualcomm Snapdragon 600 и 800, а, если говорить о продукции ARM, то стандарт поддерживают такие ускорители, как Mali-T604 (именно он стал первым графическим процессором ARM, выполненным на новой микроархитектуре Midgard), Mali-T624, Mali-T628, Mali-T678 и некоторые другие близкие к ним по характеристикам чипы. Тот или иной GPU, как правило, тесно связан с ядром, но, тем не менее, указывается отдельно, а, значит, если вам важно качество графики в играх, то имеет смысл посмотреть на название ускорителя в спецификациях смартфона или планшета.

Есть у ARM в линейке и графические ускорители для смартфонов среднего сегмента, наиболее распространёнными среди которых являются Mali-400 MP и Mali-450 MP, которые отличаются от своих старших братьев сравнительно небольшой производительностью и ограниченным набором API и поддерживаемых стандартов. Несмотря на это, указанные GPU продолжают использоваться в новых смартфонах, к примеру, Zopo ZP998, который получил графический ускоритель Mali-450 MP4 (улучшенную модификацию Mali-450 MP) вдобавок к восьмиядерному процессору MTK6592.

Предположительно, в конце 2014 года должны появиться смартфоны с новейшими графическими ускорителями ARM: Mali-T720, Mali-T760 и Mali-T760 MP, которые были представлены в октябре 2013 года. Mali-T720 должен стать новым GPU для недорогих смартфонов и первым графическим процессором этого сегмента с поддержкой Open GL ES 3.0. Mali-T760, в свою очередь, станет одним из наиболее мощных мобильных графических ускорителей: по заявленным характеристикам, GPU имеет 16 вычислительных ядер и обладает поистине огромной вычислительной мощностью, 326 Гфлопс, но, в то же время, в четыре раза меньшим энергопотреблением, чем упомянутый выше Mali-T604.

Роль CPU и GPU от ARM на рынке

Несмотря на то, что компания ARM является автором и разработчиком одноимённой архитектуры, которая, повторимся, сейчас используется в подавляющем большинстве мобильных процессоров, её решения в виде ядер и графических ускорителей не пользуются популярностью у крупных производителей смартфонов. К примеру, справедливо считается, что флагманские коммуникаторы на Android OS должны иметь процессор Snapdragon с ядрами Krait и графический ускоритель Adreno от Qualcomm, чипсеты этой же компании используются в смартфонах на Windows Phone, а некоторые производители гаджетов, к примеру, Apple, разрабатывают собственные ядра. Почему же в настоящее время сложилась именно такая ситуация?

Возможно, часть причин может лежать глубже, но одна из них — отсутствие чёткого позиционирования CPU и GPU от ARM среди продуктов других компаний, вследствие чего разработки компании воспринимаются как базовые компоненты для использования в устройствах B-брендов, недорогих смартфонах и создания на их основе более зрелых решений. К примеру, компания Qualcomm почти на каждой своей презентации повторяет, что одной из её главных целей при создании новых процессоров является уменьшение энергопотребления, а её ядра Krait, будучи доработанными ядрами Cortex, стабильно показывают более высокие результаты по производительности. Аналогичное утверждение справедливо и для чипсетов Nvidia, которые ориентированы на игры, ну а что касается процессоров Exynos от Samsung и A-серии от Apple, то они имеют свой рынок за счёт установки в смартфоны этих же компаний.

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

Заключение

Микропроцессоры на архитектуре ARM успешно завоевали рынок мобильных устройств благодаря низкому энергопотреблению и сравнительно большой вычислительной мощности. Раньше с ARM конкурировали другие RISC-архитектуры, например, MIPS, но сейчас у неё остался только один серьёзный конкурент — компания Intel с архитектурой x86, которая, к слову, хотя и активно борется за свою долю рынка, пока не воспринимается ни потребителями, ни большинством производителей всерьёз, особенно при фактическом отсутствии флагманов на ней (Lenovo K900 сейчас уже не может конкурировать с последними топовыми смартфонами на ARM-процессорах).

А как вы думаете, сможет ли кто-нибудь потеснить ARM, и как дальше сложится судьба этой компании и её архитектуры?

За предоставленную информацию благодарим 4pda.ru. 

Понравилось? Поделись с друзьями! 🙂

Похожее

4iam.net

Процессоры ARM – что это такое и «с чем их едят»

Процессоры ARM – что это такое и «с чем их едят». Появление на рынке производительных мобильных процессоров во многом стало настоящим революционным прорывом. Можно сказать, впервые у x86-архитектуры появился весомый конкурент, который если на первых этапах и занимал только лишь соседствующую нишу, то уже сегодня начинает всерьез теснить позиции долгожителя компьютерной индустрии.

Но в чем же отличие? Что такое архитектура ARM и чем она отличается от x86? В последней, используемой в процессорах Intel и AMD, применяется набор CISC-команд. Обработка на их основе очень функциональна, открывает просторы для программистов и разработчиков железа, но требует немалого количества энергоресурсов. Суть CISC, грубо говоря, заключается в том, что каждая поступаемая команда декодируется в простейший элемент и только потом обрабатывается.

В ARM все иначе. Она действует на основе RISC-команд, которые уже содержат готовый набор простейших элементов. Это уменьшает процессорную гибкость, но в разы увеличивается скорость обработки данных, и соответственно, уменьшает энергозатраты такого процессора.

Отсюда и получается, что x86 – это универсальная архитектура, пригодная для решения многих задач, в то время как ARM требует более тонкой заточки железа и возможности такой архитектуры несколько более ограничены. Однако возможности ARM становятся все более масштабными. Уже сейчас такие процессоры пригодны для стандартной офисной работы, воспроизведения медиа-контента, работы в интернете.

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

Говоря о том, что такое чипы ARM следует отметить такой момент, как комплексность предлагаемых современных мобильных систем. ARM – это не просто один процессор. Как правило, в него входят: контроллер оперативной памяти, графический ускоритель, видеодекодер, аудиоокодек и опционально модули беспроводной связи. Такая система называется однокристальной. Другими словами, ARM – это чип на чипе.

На сегодняшний день ARM насчитывают несколько процессорных поколений:

ARM9. Чипы ARM9 могут достигать тактовой частоты 400 МГц. Эти чипы морально устарели, но по прежнему пользуются спросом. Например, в беспроводных маршрутизаторах и терминалах оплаты. Набор простых команд такого чипа позволяет с легкостью запускать многие Java-приложения.

ARM11. Процессоры ARM11 могут похвастаться более полным набором простых команд, расширяющих их функционал и высокой тактовой частотой (вплоть до 1 ГГц). Благодаря невысокому энергопотреблению и низкой себестоимости чипы ARM11 до сих пор применяются в смартфонах начального уровня.


ARMv7. Современные чипы архитектуры ARM принадлежат к семейству ARMv7, флагманские представители которого уже достигли отметки в восемь ядер и тактовой частоты свыше 2 ГГц. Разработанные непосредственно ARM Limited процессорные ядра принадлежат к линейке Cortex и большинство производителей однокристальных систем используют их без существенных изменений.

ARM Cortex-A8. Исторически первым процессорным ядром семейства ARMv7 было Cortex-A8, которое легло в основу таких известных SoC своего времени как Apple A4 (iPhone 4 и iPad) и Samsung Hummingbird (Samsung Galaxy S и Galaxy Tab). Оно демонстрирует примерно вдвое более высокую производительность по сравнению с предшествующим ARM11, и увы, более высокое энергопотребление, что делает данный чип ныне крайне непопулярным.

ARM Cortex-A9. Вслед за Cortex-A8 компания ARM Limited представила новое поколение чипов – Cortex-A9, которое сейчас является самым распространенным и занимает среднюю ценовую нишу. Производительность ядер Cortex-A9 выросла примерно втрое по сравнению с Cortex-A8, да еще и появилась возможность объединять их по два или даже четыре на одном чипе.

ARM Cortex-A5 и Cortex-A7. При проектировании процессорных ядер Cortex-A5 и Cortex-A7 компания ARM Limited преследовала одно и ту же цель – добиться компромисса между минимальным энергопотреблением ARM11 и приемлемым быстродействием Cortex-A8. Не забыли и про возможность объединения ядер по два-четыре – многоядерные чипы Cortex-A5 и Cortex-A7 мало-помалу появляются в продаже (Qualcomm MSM8625 и MTK 6589).

ARM Cortex-A15. Процессорные ядра Cortex-A15 стали логическим продолжением Cortex-A9 – как результат, чипам архитектуры ARM впервые в истории удалось примерно сравниться по быстродействию с Intel Atom, а это уже большой успех. Не зря ведь компания Canonical в системных требования к версии ОС Ubuntu Touch с полноценной многозадачностью указала двухъядерный процессор ARM Cortex-A15 или аналогичный Intel Atom.


Чипы ARM ждет великое будущее. Количество команд, частота работы, количество ядер активно растут, а энергопотребление продолжает оставаться на низком уровне. В будущем чипы ARM станут пригодными для полноформатной многозадачности, ныне свойственной лишь x86-системам. Однако, даже с условиями нынешнего вектора развития, говорить о том, что сегмент потребительской электроники полностью перейдет на чипы ARM – пока рано. И дело здесь, прежде всего, в цене. Стоимость мобильных чипов растет с геометрической прогрессией, в то время, как x86 продолжает дешеветь. Именно фактор цены наряду с разницей в функциональности, которая несколько будет преодолена, и складывается вполне понятный прогноз того, что развитые ARM-системы не скоро одержат безоговорочную победу в гонке за своего потребителя…

you2you.ru

Процессоры ARMv8: в чем преимущества 64-битной архитектуры?

В 2011 году компания ARM Limited анонсировала новое семейство процессоров под названием ARMv8. А в 2013 году компания Apple выпустила первый ARMv8-процессор – однокристальную систему А7, которая применяется в iPhone 5S, iPad Air и iPad mini Retina. Архитектура ARMv8 получила 64-битный набор команд, но это далеко не единственное её преимущество над предшественницей ARMv7. Как устроены и какими бывают 64-битные процессоры ARMv8, читайте в статье.

Об истории архитектуры ARM, специфике деятельности компании ARM Limited и поколениях процессоров ARMv5, ARMv6 и ARMv7 вы можете прочитать в статье «Процессоры ARM: особенности архитектуры, отличия и перспективы». А про популярные модели ARMv7-чипов производства Qualcomm, NVIDIA, Samsung, Apple, MediaTek и др. подробно рассказано в статьях «Процессоры ARM: производители и модели» и «Процессоры ARM: обновление модельного ряда».

Нововведения ARMv8

Обновленную архитектуру процессоров семейства ARMv8 окрестили именем AArch64. Она получила 64-битный набор инструкций и возможность работать с большим объемом оперативной памяти (4 Гбайт и больше). Само собой, предусмотрена совместимость с 32-битными приложениями (AArch42). Другими важными нововведениями ARMv8 стали:

— 31 регистр общего назначения, каждый длиной 64 бита, тогда как SP и PC не являются регистрами общего назначения. Чем выше разрядность регистров, тем больше числа можно в них хранить. А чем больше количество регистров, тем больше данних в них помещается одновременно. Как результат, за одну инструкцию можно обработать больший объем данних и весь алгоритм выполнится быстрее;
— трансляция виртуальных адресов из 48-битного формата работает с помощью механизмов LPAE, позаимствованных у ARMv7;
— новый набор инструкций с фиксированной длинной. Инструкции имеют размер 32 бита и многие совпадают с командами AArch42, хотя условных инструкций стало меньше;
— увеличено с 16 до 32 количество 128-битных регистров (совместимы с 64-битными регистрами), доступных сопроцессорам SIMD NEON и VFP, а также добавлены новые криптографические инструкции AES и SHA. Набор инструкций SIMD NEON ускоряет работу приложений, отвечающих за обработку медиаданных и сигналов. В свою очередь VFP отвечает за малоэнергозатратные вычисления над числами с плавающей запятой;
— поддержка вычислений над числами с плавающей запятой двойной точности и стандарта IEEE 754, который является общепринятым форматом представления чисел с плавающей запятой, используемый в программных реализациях арифметических действий.

Референсные ядра ARM Limited

Первыми процессорными ядрами ARMv8, разработанными непосредственно компанией ARM Limited, стали Cortex-A53 и A57. Ядро A53 является среднеуровневым решением с производительностью 2,3 DMIPS/МГц, что находится примерно по середине между нынешними Cortex-A7 (1,9 DMIPS/МГц) и A9 (2,5 DMIPS/МГц). Тогда как A57 занимает верхний сегмент, ведь его быстродействие (4,1 DMIPS/МГц) превосходит показатели обеих 32-битных флагманов: Cortex-A15 (3,5 DMIPS/МГц) и А17 (4 DMIPS/МГц).

Помимо лицензирования референсных процессорных ядер компания ARM Limited продает расширенные лицензии, позволяющие чипмейкерам по своему усмотрению модифицировать архитектуру ARM. Такие лицензии есть, к примеру, у Apple, Qualcomm и NVIDIA. Поэтому ничто не мешает производителям процессоров создавать собственные решения на базе ARMv8, существенно отличающиеся от референсных Cortex-A53 и A57.

Apple A7

Первым и пока единственным 64-битным ARM-процессором, который уже применяется в смартфонах и планшетах, является Apple A7. Построен он на фирменной архитектуре Apple Cyclone, совместимой с ARMv8. Это вторая разработанная внутри компании процессорная архитектура; первой же была Swift (чипы A6 и A6X, семейство ARMv7).

Процессорных ядер у однокристальной системы A7 только два (частота до 1,4 ГГц), но присутствует графический ускоритель PowerVR G6430 с четырьмя кластерами ядер. Быстродействие чипа A7 в процессорозависимых задачах выросло примерно в полтора раза по сравнению с А6, тогда как в различных графических тестах прирост составляет от двух до трех раз.

А вот теоретическую возможность работать с большим объемом оперативной памяти благодаря 64-битной архитектуре процессора A7 устройства под управлением iOS пока не ощущают. У iPhone 5s, iPad Air и iPad mini Retina всего лишь 1 Гбайт оперативки; и вряд ли в новом поколении мобильных устройств Apple объем ОЗУ вырастит больше чем вдвое.

Qualcomm Snapdragon 410, 610, 615, 808 и 810

Вслед за Apple свои 64-битные ARM-процессоры поспешила анонсировать компания Qualcomm, причем сразу пять моделей. Правда, пока ни одна из них в коммерческих смартфонах или планшетах не применяется. Скорее всего, расцвет эпохи 64-битных Android-устройств состоится в начале 2015 года на выставках CES и MWC.

Однокристальная система Snapdragon 410 (MSM8916) – младшая из анонсированной 64-битной линейки Qualcomm. Она включает в себя четыре ядра Cortex-A53 с частотой от 1,2 ГГц, графический ускоритель Adreno 306 и, что интереснее всего, навигационный модуль с поддержкой спутниковых сетей GPS, ГЛОНАСС и даже китайской Beidou. Применять Snapdragon 410 планируют в недорогих смартфонах на базе Android, Windows Phone и Firefox OS.

Те же четыре ядра Cortex-A53, что у 410-того, содержит чип Snapdragon 610 (MSM8936), вот только графика у него улучшенная Adreno 405. Тогда как Snapdragon 615 (MSM8939) схож с 610-тым графикой, но процессорных ядер Cortex-A53 у него вдвое больше – восемь Cortex-A53.

В отличие от 410, 610, 615 моделей, выполненных по 28-нм техпроцессу, чипы Snapdragon 808 (MSM8992) и 810 (MSM8994) будут производиться по передовым 20-нм технологическим нормам. Они оба строятся по схеме big.LITTLE: два (модель 808) или четыре (810) мощных ядра Cortex-A57 и четыре энергоэффективных Cortex-A53. Графика представлена Adreno 418 и Adreno 430 соответственно. Кроме того, старший Snapdragon 810 имеет встроенный контроллер оперативной памяти стандарта LPDDR4.

Но главный вопрос: когда именно компания Qualcomm представит собственную процессорную архитектуру на основе ARMv8, как это было со Scorpion и Krait (модифицированные ARMv7)?

MediaTek MT6732, MT6752, MT6795

Не могла долго оставаться в стороне 64-битной гонки и компания MediaTek, всего за несколько лет превратившаяся из мелкого производителя процессоров для китайских клонов iPhone в одного из крупнейших в мире чипмейкеров, пусть и безфабричного. Впрочем, Apple и Qualcomm собственных производственных линий по «штамповке» полупроводников тоже не имеют.

Однокристальные системы MediaTek MT6732 и MT6752 должны составить конкуренцию чипам Snapdragon 610 и 615. У них четыре и восемь процессорных ядер Cortex-A53 (частота 1,5 и 2 ГГц соответственно) и одинаковая графика Mali-T760 (разработка ARM Limited). Старший же чип MT6795 стал ответом Snapdragon 810: архитектура big.LITTLE, по четыре ядра Cortex-A57 и A53 с частотой 2,2 ГГц, а также графический ускоритель PowerVR G6200.

NVIDIA Tegra K1 (Project Denver)

Компания NVIDIA решила перевести на 64-битную процессорную архитектуру свой уже существующий чип Tegra K1. Графическая составляющая у него и раньше была едва ли не лучшей среди конкурентов – GK20A с 192 ядрами Kepler, производительностью 365 GFLOPS и поддержкой ПК-стандартов графики DirectX 11.2 и OpenGL 4.4 (а не их мобильных аналогов).

Вместо же четырех 32-битных ядер Cortex-A15 (плюс пятое энергоэффективное ядро) обновленная однокристальная система Tegra K1 получит два ARMv8-совместимых ядра фирменной архитектуры NVIDIA Project Denver. Тактовая частота процессора вырастет до 2,5 ГГц, увеличится и объем кеша. Интересный факт: графика Tegra K1 примерно в пятьдесят раз мощнее Tegra 2.

Выводы

За один такт процессоры архитектуры ARMv8 способны обработать значительно больше данных. Это повышает как общую производительность процессора, так и производительность на ватт. Учитывая ограничения технологических норм (максимально допустимую тактовую частоту), переход на ARMv8 – это единственный возможный способ нарастить быстродействие мобильных процессоров, не выходя за разумные рамки энергопотребления и нагрева.

Естественно, пользу от архитектуры ARMv8 получат только те приложения для iOS и Android, которые способны задействовать все ресурсы новых процессоров. Оптимизация программ под новую архитектуру может быть как ручной, так и автоматической, на уровне компилятора.
Первое же Android-устройство с 64-битным ARM-процессором и 4 Гбайт ОЗУ – фаблет Samsung Galaxy Note 4 (чип Exynos 5433: по четыре ядра Cortex-A57 и A53) – представят уже 3 сентября. А вторым, возможно, станет планшетный компьютер HTC серии Google Nexus c процессором Tegra K1 Denver.

itc.ua

Чем архитектура ARM отличается от x86

В наше время существует две самые популярные архитектуры процессоров. Это x86, которая была разработана еще 80х годах и используется в персональных компьютерах и ARM — более современная, которая позволяет сделать процессоры меньше и экономнее. Она используется в большинстве мобильных устройств или планшетов.

Обе архитектуры имеют свои плюсы и минусы, а также сферы применения, но есть и общие черты. Многие специалисты говорят, что за ARM будущее, но у нее остаются некоторые недостатки, которых нет в x86. В нашей сегодняшней статье мы рассмотрим чем архитектура arm отличается от x86. Рассмотрим принципиальные отличия ARM или x86, а также попытаемся определить что лучше.

Содержание статьи:

Что такое архитектура?

Процессор — это основной компонент любого вычислительного устройства, будь то смартфон или компьютер. От его производительности зависит то, насколько быстро будет работать устройство и сколько оно сможет работать от батареи. Если говорить просто, то архитектура процессора — это набор инструкций, которые могут использоваться при составлении программ и реализованы на аппаратном уровне с помощью определенных сочетаний транзисторов процессора. Именно они позволяют программам взаимодействовать с аппаратным обеспечением и определяют каким образом будут передаваться данные в память и считываться оттуда.

На данный момент существуют два типа архитектур: CISC (Complex Instruction Set Computing) и RISC (Reduced Instruction Set Computing). Первая предполагает, что в процессоре будут реализованы инструкции на все случаи жизни, вторая, RISC — ставит перед разработчиками задачу создания процессора с набором минимально необходимых для работы команд. Инструкции RISC имеют меньший размер и более просты.

arm-vs-x86-key-differences-explained-1

Архитектура x86

Архитектура процессора x86 была разработана в 1978 году и впервые появилась в процессорах компании Intel и относится к типу CISC. Ее название взято от модели первого процессора с этой архитектурой — Intel 8086. Со временем, за неимением лучшей альтернативы эту архитектуру начали поддерживать и другие производители процессоров, например, AMD. Сейчас она является стандартом для настольных компьютеров, ноутбуков, нетбуков, серверов и других подобных устройств. Но также иногда процессоры x86 применяются в планшетах, это довольно привычная практика.

Первый процессор Intel 8086 имел разрядность 16 бит, далее в 2000 годах вышел процессор 32 битной архитектуры, и еще позже появилась архитектура 64 бит. Мы подробно рассматривали разрядность процессоров в отдельной статье. За это время архитектура очень сильно развилась были добавлены новые наборы инструкций и расширения, которые позволяют очень сильно увеличить производительность работы процессора.

В x86 есть несколько существенных недостатков. Во-первых — это сложность команд, их запутанность, которая возникла из-за длинной истории развития. Во-вторых, такие процессоры потребляют слишком много энергии и из-за этого выделяют много теплоты. Инженеры x86 изначально пошли по пути получения максимальной производительности, а скорость требует ресурсов. Перед тем, как рассмотреть отличия arm x86, поговорим об архитектуре ARM.

 

Архитектура ARM

Эта архитектура была представлена чуть позже за x86 — в 1985 году. Она была разработана известной в Британии компанией Acorn, тогда эта архитектура называлась Arcon Risk Machine и принадлежала к типу RISC, но затем была выпущена ее улучшенная версия Advanted RISC Machine, которая сейчас и известна как ARM.

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

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

Отличия ARM и x86

А теперь, когда мы рассмотрели историю развития этих архитектур и их принципиальные отличия, давайте сделаем подробное сравнение ARM и x86, по различным их характеристикам, чтобы определить что лучше и более точно понять в чем их разница.

Производство

Производство x86 vs arm отличается. Процессоры x86 производят только две компании Intel и AMD. Изначально эта была одна компания, но это совсем другая история. Право на выпуск таких процессоров есть только у этих компаний, а это значит, что и направлением развития инфраструктуры будут управлять только они.

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

Количество инструкций

Это главные различия архитектуры arm и x86. Процессоры x86 развивались стремительно, как более мощные и производительные. Разработчики добавили большое количество инструкций процессора, причем здесь есть не просто базовый набор, а достаточно много команд, без которых можно было бы обойтись. Изначально это делалось чтобы уменьшить объем памяти занимаемый программами на диске. Также было разработано много вариантов защит и виртуализаций, оптимизаций и многое другое. Все это требует дополнительных транзисторов и энергии.

ARM более прост. Здесь намного меньше инструкций процессора, только те, которые нужны операционной системе и реально используются. Если сравнивать x86, то там используется только 30% от всех возможных инструкций. Их проще выучить, если вы решили писать программы вручную, а также для их реализации нужно меньше транзисторов.

Потребление энергии

Из предыдущего пункта выплывает еще один вывод. Чем больше транзисторов на плате, тем больше ее площадь и потребление энергии, правильно и обратное.

Процессоры x86 потребляют намного больше энергии, чем ARM. Но на потребление энергии также влияет размер самого транзистора. Например, процессор Intel i7 потребляет 47 Ватт, а любой процессор ARM для смартфонов — не более 3 Ватт. Раньше выпускались платы с размером одного элемента 80 нм, затем Intel добилась уменьшения до 22 нм, а в этом году ученые получили возможность создать плату с размером элемента 1 нанометр. Это очень сильно уменьшит энергопотребление без потерь производительности.

28nm-wafer

За последние годы потребление энергии процессорами x86 очень сильно уменьшилось, например, новые процессоры Intel Haswell могут работать дольше от батареи. Сейчас разница arm vs x86 постепенно стирается.

Тепловыделение

Количество транзисторов влияет еще на один параметр — это выделение тепла. Современные устройства не могут преобразовывать всю энергию в эффективное действие, часть ее рассеивается в виде тепла. КПД плат одинаковый, а значит чем меньше транзисторов и чем меньше их размер — тем меньше тепла будет выделять процессор. Тут уже не возникает вопрос ARM или x86 будет выделять меньше теплоты.

Производительность процессоров

ARM изначально не были заточены для максимальной производительности, это область преуспевания x86. Отчасти этому причина меньше количество транзисторов. Но в последнее время производительность ARM процессоров растет, и они уже могут полноценно использоваться в ноутбуках или на серверах.

Выводы

В этой статье мы рассмотрели чем отличается ARM от x86. Отличия довольно серьезные. Но в последнее время грань между обоими архитектурами стирается. ARM процессоры становятся более производительными и быстрыми, а x86 благодаря уменьшению размера структурного элемента платы начинают потреблять меньше энергии и выделять меньше тепла. Уже можно встретить ARM процессор на серверах и в ноутбуках, а x86 на планшетах и в смартфонах.

А как вы относитесь к этим x86 и ARM? За какой технологией будущее по вашему мнению? Напишите в комментариях! Кстати, Линус Торвальдс предпочитает x86.

На завершение видео о развитии арихтектуры ARM:

losst.ru

Что такое архитектура процессоров на Андроид и как её определить

Термин архитектура процессора не имеет устойчивого объяснения. По сути, архитектура включает в себя комбинацию из: микроархитектур, включающих в себя основные части процессора и методы их взаимодействиями между собой; набора команд, начиная от модели исполнения и заканчивая форматами данных и микрокода.

Если рассматривать архитектуру процессоров со стороны аппаратной части ПК, то мы увидим определенный набор характеристик, которому соответствует то или иное семейство процессоров, иными словами, внутренняя их конструкция. Со стороны программистов, архитектура представляет набор определенных команд, их структуру и метод использования.

Одной из самых популярных мобильных архитектур на данный момент является ARM, разработкой которой занимается ARM Limited. Остальные компании попросту лицензируют технологию ARM и на базе данной лицензии выпускают свои процессоры, сюда можно отнести Qualcomm, Nvidia с их чипами Tegra, всем известные Mediatek, чипы от Apple и, конечно же, Samsung с Exynos.

Второй по значимости можно считать архитектуру x86, за разработку которой отвечает не менее известная компания Intel. До недавнего времени, данная архитектура использовалась крайне редко и то на бюджетных устройствах, но со временем она начала набирать популярность и теперь занимает свою нишу на рынке мобильных процессоров.

По сути, обычный пользователь не заметит разницы от использования смартфонов/планшетов на разных архитектурах и это не удивительно, Android адаптируется под любые среды и отлично работает на всех архитектурах. Единственным минусом является несовместимость отдельно взятых приложений/игр, заточенных под те или иные архитектуры.


В современных мобильных устройствах чаще всего встречаются следующие архитектуры:
  • ARM: ARMv7 или armeabi
  • ARM64: AArch64 или arm64
  • x86: x86 или x86abi


Для этих целей можно использовать бесплатные приложения доступные в Google Play. Наиболее простой и известной в использовании программой является Droid Hardware Info.
  1. Скачиваем, устанавливаем и запускаем программу.
  2. Попадем на вкладку «Устройство» с описанием модели нашего девайса.

  3. Переключаемся на вкладку «Система» и смотрим на пункт «Архитектура процессора».

В первую очередь стоит отметить уменьшенный набор команд в ARM, что приводит к значительному сокращению энергопотребления процессоров построенных на данной архитектуре. Это сказывается также на числе транзисторов, коих гораздо меньше в любом ARM чипе, нежели в процессорах с архитектурой X86. Чипы на ARM предназначены для вычисления только целых чисел, а X86 в свою очередь может похвастаться возможностью обработки чисел с плавающей запятой. Иными словами, ARM «знает» гораздо меньше команд, нежели X86, что в свою очередь относится как к плюсам, так и минусам данной архитектуры. Тенденция роста производительности и популярности ARM процессоров за последние годы невероятно высока, в скором времени они смогут перегнать стандартные X86. Немаловажным фактором является поддержка RISC-инструкций на обеих архитектурах, что позволяет использовать абсолютно все операционные системы, начиная от Android и заканчивая Windows Phone.

tvoysmartphone.ru

ARM7TDMI-S (ARMv4T) vs. Cortex-M3 (ARMv7-M) / Habr

Уже добрый десяток лет на рынке представлено множество микроконтроллеров на ядре ARM7TDMI. Это довольно мощное ядро для однокристальных решений. Оно имеет разрядность 32 бита и частоту работы до 100МГц, мало того, ядро однотактовое, т.е. некоторые инструкции исполняются за 1 такт (преимущественно операции с регистрами, без обращений к внешним шинам процессора). Ядро ARM7TDMI на голову превосходит по вычислительным возможностям все 8-ми и 16-ти битные чипы (AVR, MSC-51, PIC12/PIC16/PIC18/PIC24, MSP430, etc).

Однако, относительно недавно, компания ARM представила новое семейство ядер Cortex, нас будет интересовать его разновидность Cortex-M3, которая предназначается как раз для замены ARM7TDMI в нише однокристальных решений.

Работать с чипами NXP LPC1300, а точнее LPC1343, основанных на ядре Cortex-M3, мне посчастливилось сразу после их официального выхода. Сейчас под них уже перенесена пара проектов. И скажу Вам, как «матерый» программист под ARM: они мне очень понравились, хотя и имеют свои приколы в архитектуре.

Итак, Cortex-M3 призван заменить ARM7TDMI. При его разработке ARM Ltd. ставила перед собой целью без существенного усложнения логики схем процессора нарастить функционал, добавить полезные инструкции, увеличив тем самым плотность кода и производительность. Из-за этого пришлось пойти на беспрецедентный шаг: впервые ядро ARM несовместимо по бинарному коду с предыдущими семействами. Собственно это произошло по той причине, что Cortex-M3 не умеет исполнять 32-битный код ARM.

Все предыдущие ядра имели 2 режима работы и в каждом из них был свой набор команд. Эти режимы назывались ARM и Thumb. Первый работал с 32-битным полным набором инструкций, а 2ой с упрощенным набором 16-битных инструкций. На самом деле ядро всегда исполняло ARM-код, однако в Thumb-режиме подключался некий дешифратор, который налету «мапил» 16 битные инструкции в их 32-битные аналоги.

В Cortex-M3 отказались от 32-битного кода как класса. В семействе Cortex присутствуют еще несколько ядер (Cortex-M0,M1,A0-A3). M3 располагается посередине. M0,M1 — еще сильнее упрощены, а вот A-серия наоборот предназначена для тяжелых и высокопроизводительных приложений, и нее возможность исполнения ARM-кода убирать не стали.

Массивность и низкая плотность кода — большая проблема ARM-ядер, 32 бита на любую операцию дают о себе знать, плюс невозможно закодировать в инструкции константу более 1 байта. Именно из-за этого и введен дополнительный набор инструкций Thumb. Он обеспечивает большую плотность кода (в среднем выигрыш 20-30%), хоть и принося в жертву 5-10% производительности.

В Cortex идея Thumb кода была развита. Набор 16-битных инструкций Thumb был расширен, набор инструкций обозвали Thumb-2. При компиляции в него падение производительности (по сравнению с чистым ARM-кодом) составляет лишь единицы процентов, а вот экономия по объему все те же 20-30%.

Отдельного внимания в наборе Thumb-2 заслуживают такие высокоуровневые инструкции как IT (конструкция с ее применением представлена ниже), вообще, система команд просто напичкана «фичами», призванными повысить оптимизацию при компиляции Си-кода. Итак, конструкция на Thumb-2:

CMP r0, r1
ITE EQ ; if (r0 == r1)
MOVEQ r0, r2 ; then r0 = r2;
MOVNE r0, r3 ; else r0 = r3;

Нечто похожее, можно сделать и в наборе инструкций ARM:

CMP r0, r1 ; if (r0 == r1)
MOVEQ r0, r2 ; then r0 = r2;
MOVNE r0, r3 ; else r0 = r3;

А в чистом Thumb придется несколько «извратиться»:

CMP r0, r1 ; if (r0 == r1)
BNE .else
MOV r0, r2 ; then r0 = r2;
B .endif
.else:
MOV r0, r3 ; else r0 = r3;
.endif

Хотя если посчитать объемы, то получим, что в случае Thumb конструкция займет 2*5 = 10 байт, на Thumb-2 объем будет 2*4 = 8 байт, на ARM целых 4*3 = 12 байт (хоть и имеет всего 3 инструкции).

Однако, компилятору Keil RealView MDK именно эта хваленая инструкция IT, видимо, неизвестна, так как при изучении генерируемых листингов найдена не была, да и визуально ассемблерный код на выходе из компилятора все-таки больше похож на обычный Thumb. Толи сами исходники специфичные, то ли компилятор на самом деле пока «не допилили» под новое ядро и систему команд. На счет других компиляторов информацией, к сожалению, не обладаю, хотя не плохо было бы посмотреть что генерирует GCC.

Вообще, рекламируется просто бешеная оптимизация кода, якобы итоговый размер будет на 30-50% меньше чем у того же самого исходника, скомпилированного под 8 и даже 16-битный микроконтроллер (к примеру, в документе представленном по первой ссылке в конце статьи). Скажу сразу: это несколько подтасованные результат, он верен только для 32-битного кода, т.е. кода на Си с обилием операций с переменными int, long, а так же большим количеством вычислений (под данные требования хорошо подходит, к примеру, знаменитый тест Dhrystone). Если же переносить код предварительно писавшийся и оптимизированный под 8 бит, то при переносе на 32-битный процессор будет наоборот увеличение размера бинарного кода, по моему опыту код увеличивается по объему чуть ли не в 1.5-2 раза.

Еще одним существенным нововведением в Cortex-M3 явилось добавление команды деления. ARM-ядра с древних времен имеют в своем составе операции умножения (с 64 битным результатом) и умножения с накоплением (так же 64 битный результат). Теперь же к ним добавилась инструкция деления. Конечно, тактов она скорее всего отжирает немало, однако, все-равно это намного быстрее чем отдельная подпрограмма. Как бы это не казалось парадоксальным высокоуровникам и людям далеким от микроконтроллеров: аппаратное деление до сих пор редкость в однокристальных системах (про различные наборы инструкций плавающей арифметики и прочие сопроцессоры и вовсе говорить не приходится, они доступны только в самых тяжелых монстрах, заточенных под мультимедиа).

В отличие от ARM7TDMI у Cortex Гарвардская архитектура памяти (раздельные шины команд и данных). В том же AVR это доставляет определенные неудобства и при программировании следует пользоваться некоторыми макросами компилятора и специфичными функциями, чтобы const-переменные не попадали в ОЗУ. Здесь же (так собственно было во всех ARM после ARMv4, таких как ARM9, ARM11) при программировании отдельные шины не ощущаются, внутри кристалла они все-равно объединяются в единое адресное пространство. Все чипы ARM имеют 32-битное линейное адресное пространство размером в 4Гб (для программистов x86, это соответствует модели памяти flat), в нем размешаются все адреса периферии, ПЗУ и ОЗУ.

Примечание (1): Несмотря на все преимущества, именно огромное адресное пространство является существенной бедой при оптимизации кода: мы имеет 32-битную адресацию, в инструкциях ARM/Thumb и даже Thumb-2 нельзя непосредственно закодировать полный адрес некоего объекта, поэтому адрес кладется в виде данных внутрь кода, а затем достается отдельной инструкцией. Это так же отрицательно сказывается на объеме кода. К примеру, в MSC-51 для чтения переменной из ОЗУ может хватить 2х байт, в ARM же придется хранить минимум 2 байта самой инструкции и 4 байта непосредственно задействовать под хранение адреса.

Примечание (2): всегда хотел попробовать разместить в периферийном регистре код (к примеру, инструкцию возврата) и передать ему управление, пронаблюдав за реакцией ядра. На ARM7TDMI этот трюк может прокатить из-за Фон-Неймановской организации памяти, а вот Cortex с его Гарвардом почти наверняка пошлет в далекие края, свалившись в один из абортов.

Следующее существенное отличие: один стек. Если в ARM7TDMI для разных режимов ядра (речь не о ARM/Thumb, а о режимах в которые процессор переключается при входе в прерывания и для обработки исключений) выделялись отдельные стеки, то здесь имеется только один стек. Не знаю как к этому относиться, в теории это менее гибко, но на практике чертовски удобно. Экономится ОЗУ так как не надо резервировать кучу стеков, упрощается логика вложенных прерываний и реализации системных вызовов (попробуйте на ARM7TDMI сделать системный вызов через программное прерывание SWI с числом параметров более 4х, такой огород потребуется, тут тоже огород, но проще). К тому же, за счет этого были уменьшены задержки входа и выхода из прерываний, а так же переключения между прерываниями.

Второе изменение, позволившее ускорить обработку прерываний — это отказ от VIC. Да, нет больше монстра под названием VIC (векторный контроллер прерываний). Да, это опять шаг от гибкости к простоте, но в микроконтроллерной системе случай, когда надо налету переназначать обработчики прерываний редкость, проще написать свой велосипед для этого, чем в каждом проекте заниматься настройкой VIC-а. Тем более есть возможность разместить таблицу прерываний в ОЗУ и уже в нем спокойно менять адреса обработчиков.

Вместо VIC теперь имеем NVIC и кучу векторов прерываний в начале FLASH. Если в ARM7TDMI вектора прерываний занимали 32 байта в начале, то здесь несколько сотен байт отведено на прерывания от различных устройств. Мало того, теперь это не инструкции прыжков, а реальные вектора с адресами. Т.е. ядро не передает управление по адресу в таблицу прерываний, а делает выборку адреса по нужному смещению и передает по нему управление, с позиции программиста это удобнее, красивее и прозрачнее.

Но основной сюрприз — это первые 2 вектора прерываний. Думаете Reset и еще что-то? НЕТ! По 0-му адресу лежит… значение стека, оно аппаратно заносится ядром в регистр стека при сбросе. А по смещению 4 — адрес точки входа. Что же это дает? А вот что: мы можем сразу начать исполнение программы с Си-кода без предварительных инициализаций. Конечно, в этом случае придется вручную скопировать в ОЗУ секцию RW и обнулить ZI (если совсем отказаться от помощи компилятора).

Такая явная Си-ориентированность заметна и по примерам проектов для Cortex. Все инициализации перенесены из ассемблера в Си. Из-за отказа от множества стеков стало ненужным инициализировать их в самом начале. Заодно и прочие инициализации перекочевали в Си-код.

Еще интересны отличия в системе команд: добавлены высокоуровневые инструкции WFI (wait for interrupt), WFE (wait for event) и прочие, упрощающие создание многопоточных приложений и операционных систем. В наборе представлены инструкции, предназначенные для многопроцессорных систем, это наводит на мысль, что скоро может произойти выход в свет многоядерных однокристальных решений.

Примечание: Хоть многоядерные микроконтроллеры и существуют в виде того же Parallax Propeller (он имеет аж 8 32-битных ядер), но полноценным и годным в коммерческом применении (а не для любительских поделок), его назвать нельзя.

Так же в описании ядра Cortex-M3 добавлен 1 таймер. Таймер простой, умеет генерировать прерывание с определенной периодичностью, однако, к примеру, для ядра операционной системы большего и не требуется.

Примечание: таймер в описании ядра — очень полезная и важная вещь. Так как он описан в документации на ядро и фактически является частью лицензируемого ядра, все производители будут вносить его в свои чипы, а главное у всех он будет иметь одинаковую реализацию. Это очень полезно для совместимости кода: не требуется писать модули поддержки для кучи реализаций таймеров у различных производителей (как это обстоит с ARM7TDMI). Однако, дополнительные таймеры, каждый производитель все-равно будет реализовывать на свой лад, но уже бы один стандартный — яляется хорошим шагом в сторону универсальности.

В заключение стоит сказать, что в документации на ядро так же описан модуль MPU (Memory Protection Unit). Очень полезная вещь в сложных устройствах, когда работает несколько потоков и очень не хочется нарушения работы всей микропрограммы из-за сбоя в каком-либо отдельном потоке. Однако, данный модуль является опциональным и производители чипов встраивать его не спешат. Даже в старшем семействе NXP LPC1700 он отсутствует. У прочих производителей так же замечен не был. Все-таки защита памяти, не говоря о виртуальной памяти, пока остается уделом дорогих и больших монстров.

Ссылки по теме:

habr.com

Немного о архитектуре процессоров ARM7TDMI / Habr

В последнее время я часто встречаю о самых разных устройствах, работающих на процессорах с архитектурой ARM. В этой статье я хочу начать рассказ о архитектуре процессоров ARM7TDMI (не путать с ARMv7). ARM7TMI — это довольно таки устаревшее семейство, но оно довольно таки широко используется в разных embedded устройствах. Так как моя работа очень плотно связанна с разработкой таких устройств — то я довольно неплохо ориентируюсь именно в этом семействе. Но если кому-то будет интересно — могу рассказать и о более новых семействах ARM.
Общее описание

Надо сказать, что ARM — это просто архитектура, на основании которой построено множество разных процессоров. У них может быть совершенно разная периферия, разные методы взаимодействия с периферией, разная частота и энергопотребление, но объединяет их одно — процессорное ядро ARM.

ARM7 с одной стороны довольно таки прост (особенно по сравнению с x86), с другой стороны — имеет большую производительность и меньшее энергопотребление. Но меньший набор команд и тот факт, что длинна команды фиксирована приводит к увеличению объема программ.

Отличия от x86

Надеюсь, многие из читающих эту статью хотя бы в общих чертах знают архитектуру x86 🙂
Чем же ARM7 отличается от x86?
Регистры

ARM имеет 32 регистра длинной 32 бита. На самом деле одновременно доступно только 16 из них. Остальные регистры переключается вместе с режимами процессора. Все регистры совершенно одноправны (сравните с x86, где даже регистры общего назначения имеют разные свойства). Правда один из регистров, r15, используется как счетчик инструкций (program counter), у него даже есть псевдоним — pc. Так что очевидно, что его не стоит использовать в качестве регистра общего назначения 🙂
Другой регистр, r14 используется как указатель стека (stack pointer) и имеет псевдоним sp. Но его никто не мешает использовать как обычный рабочий регистр, если вам вдруг совершено не нужен стек. Хотя и это и не рекомендуется.
Третий регистр, r13 по соглашению хранит адрес возврата из текущей функции. Точно и как и предыдущий регистр его можно использовать как рабочий.
Остальные 13 регистров программист (правда, чаще — компилятор) может использовать как хочет.
Плюс, есть ещё 2 выделенных регистра состояния процессора. На самом деле один и тот же регистр, просто одна его ипостать содержит сохраненные данные после переключения режима.
Режимы работы

Процессор может работать в 7 разных режимах: User, FIQ, IRQ, Supervisor, Abort, System, Undefined. 4 из этих режимов (FIQ, IRQ, Undefined, Abort) слушат для обработки исключительных операций — обработка быстрого прерывания, обработка обычного прерывания, попытка выполнить неизвестную инструкцию, попытка обратиться к несуществующей области памяти (или по невыровненому адресу). Режимы Abort и Undefined позволяют сделать эмуляцию инструкций сопроцессора и добавить поддержку виртуальной памяти соответственно.
Остальные три режим служат для защиты операционной системы от прикладных программ.
Любопытно что все режимы (кроме System) имеют свои регистры r13 и r14. Таким образом при переключении режимов нет надобности сохранять значения вершины стека и адрес возврата.
Набор команд

Процессор поддерживает два набора команд — ARM и Thumb (а модификация ARM7EJ-S ещё и команды для аппаратного ускорения java). Основная разница между ARM и Thumb — это длинна команда. В первом случае она составляет 32 бита, в другом — 16. Программы на Thumb в среднем занимают меньше места, но и дольше выполняются.
Основные отличия команд ARM от x86 таковы:
  • все операции над данными происходят только в регистрах. Нельзя модифицировать данные в памяти
  • с памятью работают только команды пересылки данных. Возможна передача данных регистр-память, память-регистр и регистр-регистр
  • каждая команда имеет модификаторы условного исполнения. Т.е. можно делать не только условный переход, но и например условную пересылку или сложение.
Прочее

Есть ещё много отличий, например таких как отсутствие команд для работы с числами с плавающей точкой, команд для работы с десятично -двоичными числами, запрет на обращения к невыравненым адресам в памяти, расширения DSP и Jazelle, отсутствие портов ввода-вывода (вся периферия мапится в память), только линейная адресация (хотя при наличии MMU можно переключать страницы), хитрые модификаторы команд пересылки для использования битовых сдвигов.

В общем, если кому-то будет интересно — могу рассказать подробнее об АРМах, конкретно о процессоре AT91SAM7x, о embedded разработке вообще и в частности.

habr.com

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *