Как узнать архитектуру процессора на телефоне Android
При покупке смартфона или планшета большинство пользователей редко внимательно рассматривают «внутренности» будущего приобретения. Этим нередко пользуются недобросовестные продавцы, а также некоторые китайские производители, пишущие на коробке одно, но устанавливающие совершенно иное железо. Также некоторые смартфоны могут выпускаться в модификациях с различными процессорами, что также способно внести путаницу. Из-за этого пользователь может столкнуться с ситуацией, когда нужная программа не устанавливается из-за несовместимости, а на выбор предлагается несколько apk-файлов. Чтобы выбрать из них правильный, понадобится знать архитектуру процессора в своем гаджете.
Основные архитектуры процессоров: ARM, ARM64, x86
На текущий момент наиболее распространены три типа ЦП:
Главное отличие от архитектуры ARM от х86 — энергопотребление. Там, где x86 требуется 47 Ватт, ARM будет достаточно всего 3. Однако разница в производительности получается соответствующая.
Из-за этого на рынке изначально действовало четкое распределение, поскольку разработчикам требовалось добиться максимальной автономности устройства. Современные модели процессоров во многом начинают сравниваться друг с другом в плане характеристик.
Каждому типу процессора соответствует отдельный тип apk-файла:
Иногда названия могут отличаться. Однако суть останется прежней — apk для процессоров с архитектурой ARM будут иметь приставку arm, тогда как x86 так и будут обходиться без нее. Остается только узнать конкретную модель ЦП устройства.
Как узнать тип процессора
Для этого не понадобится ничего разбирать — достаточно установить одно из описанных ниже расширений, чтобы получить полную информацию обо всем железе, установленном в девайс. Это особенно полезно при покупке смартфонов из Китая, чтобы подтвердить спецификацию.
С помощью Droid Hardware Info
Droid Hardware Info — это компактное приложение для сбора информации о системе. Пользователь может узнать о текущей температуре внутри гаджета и количестве свободной памяти.
Предоставляется подробная информация об аккумуляторе и самом процессоре, начиная от архитектуры ядра и заканчивая тактовой частотой с количеством текущих процессов.
Приложение доступно бесплатно, однако могут отображаться блоки с рекламой.
Для установки потребуется:
После установки значок приложения отобразится на одном из рабочих экранов. Теперь, чтобы узнать тип процессора, понадобится:
Например, если в «Набор инструкций» написано ARMv7 или armeabi, то и тип процессора в этом случае — ARM. Или если в «Архитектура ядра» стоит AArch64, то и тип процессора в таком случае ARM64.
С помощью Terminal Emulator
Альтернатива DHI — Terminal Emulator. Эта программа позволяет создать терминал, знакомый каждому, кто пользовался Linux. Команды здесь почти такие же. Чтобы установить Terminal Emulator, понадобится:
Теперь необходимо дождаться завершения инсталляции, после чего можно приступать к делу. Понадобится:
Чтобы получить полную информацию о процессоре, необходимо обратить внимание на строку «Hardware». В ней отображается полное наименование установленного процессора. Достаточно скопировать его и вписать в любой поисковик, чтобы получить полную информацию о характеристиках, типе процессора и его особенностях, если таковые имеются. Также рекомендуется посетить сайт производителя — там могут быть дополнительные данные.
QA инженер, руководитель отдела автоматизированного тестирования программного обеспечения. Владение Java, C/C++, JSP, HTML, XML, JavaScript, SQL и Oracle PL/SQL. Журналист и обозреватель сферы IT. Создатель и администратор сайта.
Почему мы используем платформу ARM в промышленном оборудовании
Сегодня почти каждый из нас использует устройства на базе ARM-процессоров — это смартфоны, телевизоры и даже холодильники с кофеварками. Несколько дней назад в прессу просочились слухи, что компания Apple объявит о переходе с платформы X86 на ARM на своих ноутбуках.
Мы в Advantech уже много лет производим устройства на платформе ARM и на это множество причин. В этой статье мы разберем что такое ARM (от англ. Advanced RISC Machine), в чем ее отличие от других архитектур и почему все больше производителей выбирает эту архитектуру.
Наборы инструкций RISC vs CISC
Для начала следует разобраться в чем принципиальное отличие процессоров ARM и X86. Для того, чтобы программисты смогли писать программы, работающие на разных процессорах, производители договорились унифицировать набор машинных инструкций до определенного формата и соблюдать его в разных моделях своих процессоров. Машинные инструкции это низкоуровневые команды, которые отвечают за базовые операции вроде записи/чтения/модификации данных в памяти, арифметику и т.д.
Существует несколько основных концепций, используемых при проектировании процессоров. Наиболее популярные и широко известные всем это RISC и CISC.
CISC (англ. Complex Instruction Set Computing) — этот подход используется для разработки универсальных и мощных процессоров, которые обычно используются в десктопных компьютерах и на серверах. Такие процессоры как Intel CoreiN/Xeon/Pentium, AMD Ryzen/Atlhon/Sempron и прочие хорошие знакомые процессоры имеют набор инструкций типа CISC, оформленную в виде стандарта x86.
Основные особенности концепции CISC:
RISC (англ. reduced instruction set computer) — противоположная концепция проектирования процессоров. В RISC команды максимально упрощены и имеют более строгий формат и фиксированную длину. За счет упрощенных инструкций достигается высокая производительность при малом энергопотреблении. Процессоры RISC требуют от программиста большой контроль над выполнением кода, так как не имеют встроенных микропрограмм, работающих внутри процессора. Архитектура ARM (от англ. Advanced RISC Machine — усовершенствованная RISC-машина) это продолжение идеи архитектуры RISC развиваемое компанией ARM Limited. Сегодня множество компаний производят свои собственные ARM процессоры по лицензии от ARM Limited — например, популярные в смартфонах Qualcomm Snapdragon, Mediatek, Allwiner, Apple An/Hn а также популярные во встраиваемых системах Freescale i.MX, Broadcom, Nvidia Tegra и другие.
Основные особенности концепции RISC:
X86 медленно развивается
Последнее десятилетие существенных инноваций в архитектуре X86 не наблюдается. Да, производители наращивают тактовую частоту и пытаются снижать энергопотребление, но такие процессоры по-прежнему остаются прожорливыми духовками, требующими много энергии и серьезную систему охлаждения. Именно поэтому мы, скорее всего, никогда не увидим смартфонов на X86 процессорах. Производители X86 процессоров пытаются наращивать мощность с помощью масштабирование в ширину: больше ядер, кеша и частот.
Современные X86 процессоры имеют десятки ядер
Попытки Intel создать энергоэффективный X86-процессор Atom были достаточно успешны, но кроме маломощных десктопов, ноутбуков и встраиваемых систем, этот процессор мало для чего подходит.
ARM это экономично и современно
Современные ARM-процессоры развиваются очень быстро. Каждый год выходят чипы существенно лучше своих предшественников. На данный момент средняя производительность ARM чипов все еще остается ниже X86, но в некоторых синтетических тестах они уже почти сравнялись.
Совершенно очевидно, что в будущем наши ноутбуки, и, возможно, десктопные компьютеры, будут работать на ARM-процессорах. Переходов ноутбуков Apple на собственные ARM-процессоры должно дать большой толчок всей индустрии в этом направлении.
Основные достоинства процессоров ARM:
Устройства Advantech на платформе ARM
Advantech давно производит продукты на базе платформы ARM для разных отраслей и задач. От промышленных контроллеров, до сетевого оборудования и компактных компьютеров. Мы уже рассказывали о некоторых наших продуктах на ARM в других статьях.
WISE-710 — IoT-шлюз на базе i.MX6
WISE-710 — универсальное устройство, которое одновременно может быть шлюзом для промышленных интерфейсов, устройством сбора и обработки данных, хабом для IoT устройств и маршрутизатором. Построено на базе SoC i.MX6, процессора на архитектуре ARM Cortex-A7.
ECU-1152 — Шлюз для промышленных интерфейсов на базе ARM Cortex A8
ECU-1152 — шлюз для промышленных интерфейсов а также устройство для связи с объектом и устройства сбора и передачи данных с объекта. Построено на базе процессора ARM процессора с ядром Cortex A8
Миниатюрный ARM-компьютер UNO-1251G
UNO-1251G — крохотных компьютер, умещающийся на DIN-рейку, на базе 32-битного процессора Cortex A8 под управлением Linux или Windows CE. Поддерживает модули расширения Wi-Fi/3G/4G. Имеет встроенную CAN-шину и два интерфейса RS-232. Два порта LAN позволяют подключать его к двум независимым Ethernet сетям или использовать как маршрутизатор.
Компьютеры для машинного обучения на базе Nvidia Jetson
MIC-720AI — построен на базе платформы Jetson TX2, работающей на собственных ядрах Nvidia ARM Cortex-A57 и NVIDIA Denver 2 с полностью пассивным охлаждением. Предназначен для установки в промышленные системы машинного зрения, на производстве и в подвижных объектах. Безвентиляторная конструкция обеспечивает полную бесшумность в работе и позволяет использовать компьютер в пыльных помещениях без необходимости обслуживания. Работает под управлением Linux
Будущее за ARM
Наверняка архитектура X86 с нами еще надолго. Все профессиональные высокопроизводительные вычисления пока делаются на этой платформе. Под X86 написаны основные десктопные операционные системы и прикладные программы. Однако уже сегодня ARM активно вытесняет устаревший X86 даже в сфере больших вычислений. Платформы вроде Nvidia Jetson сравнимы по производительности, а в некоторых задачах и превосходят системы на базе X86. Так что нас обязательно ждет яркое противостояние двух платформ, от которой в конечном счете потребители только выиграют.
Расскажите, как вы используете ARM-процессоры сегодня или как планируете использовать в будущем.
Война за чипы: сменят ли ARM процессоры x86 и почему все зависит от Apple
Содержание
Какими бывают процессоры: x86 и ARM
В мобильных устройствах (планшеты, смартфоны) и классических компьютерах (ноутбуки, настольные ПК, серверы) используются разные процессоры. Они по-разному взаимодействуют с операционными системами и программами — взаимной совместимости нет. Именно поэтому вы не сможете запустить привычные Word или Photoshop на своем iPhone или Android-смартфоне. Вам придется скачивать из AppStore или Google Play специальную версию софта для мобильных устройств. И она будет сильно отличаться от версии для настольного ПК: как визуально, так и по функциональности, не говоря уже о программном коде, который пользователь обычно не видит.
Процессоры для классических компьютеров строятся на архитектуре x86. Своим названием она обязана ранним чипам компании Intel c модельными индексами 8086, 80186 и так далее. Первым таким решением с полноценной реализацией x86 стал Intel 80386, выпущенный в 1985 году. Сегодня подавляющее большинство процессоров в мире с архитектурой x86 делают Intel и AMD. При этом у AMD, в отличие от Intel, нет собственного производства: с 2018 года им по заказу компании занимается тайваньская корпорация TSMC.
Когда Acer, Asus, Dell, HP, Lenovo и любые другие производители классических компьютеров используют процессоры Intel или AMD, то им приходится работать с тем, что есть. Они вынуждены закупать готовые решения без возможности гибко доработать чипы под свой конкретный продукт. А свои собственные процессоры на архитектуре x86 никто из производителей ПК делать не может. Дело не только в том, что это крайне сложно и дорого, но и в том, что лицензия на архитектуру принадлежит Intel, и компания не планирует ее ни с кем делить. AMD же воевала в американских судах за право создавать чипы на архитектуре x86 со своим главным конкурентом более десяти лет в 1980-х и 1990-х годах.
Процессоры для мобильных устройств строятся на базе архитектуры ARM. И это не какая-то быстро и внезапно взлетевшая вверх молодая компания. Корни истории современной британской ARM Limited уходят далеко в 1980-е. Только в отличие от своих доминирующих на рынке «больших» ПК-конкурентов ARM Limited процессоры не делает. Бизнес компании построен на том, что она продает лицензии на производство чипов по своей технологии всем желающим. Причем возможности для доработки у лицензиатов максимально широкие — отсюда популярность и многообразие решений. Именно на основе архитектуры ARM Huawei делает свои мобильные чипы Kirin, у Samsung это Exynos, у Apple — серия Ax. В этот же список входят Qualcomm, MediaTek, NVIDIA и другие компании. А еще свои процессоры на ARM делает Fujitsu. Японцы назвали их A64X, и именно они в количестве 158 976 штук используются в самом мощном на момент выхода этой статьи суперкомпьютере в мире — Fujitsu Fugaku.
Из открытого подхода ARM вытекает и главный недостаток: архитектура очень фрагментирована. Для x86 достаточно написать программу один раз, и она будет одинаково стабильно работать на всех устройствах. Для ARM приходится адаптировать софт под процессоры каждого производителя, что замедляет и удорожает разработку. Ну, а главный недостаток x86 вытекает из отсутствия конкуренции. В последние годы Intel, например, много упрекали за медленный или порой вовсе едва ощутимый прирост производительности от поколения к поколению. Также есть проблемы с высокими уровнями нагрева и энергопотребления.
Архитектура процессоров: CISC, RISC, и в чем разница
Ключевое отличие между x86 и ARM кроется в разной архитектуре набора инструкций. По-английски — ISA, Instruction Set Architecture. В основе x86 изначально лежала технология CISC. Это расшифровывается как Complex Instruction Set Command — вычислительная машина со сложным набором инструкций. «Сложность» здесь в том, что в одну инструкцию для процессора может быть заложено сразу несколько действий.
Полвека назад, когда первые процессоры только появились, программисты писали код вручную (сейчас для этого есть компиляторы). Одну сложную команду на старом низкоуровневом языке программирования Assembler написать было гораздо проще, чем множество простых, досконально разъясняющих весь процесс. А еще сложная команда занимала меньше места, потому что код для нее был короче, чем несколько отдельных простых команд. Это было важно, потому что объем памяти в те времена был крайне ограничен, стоила она дорого и работала медленно. Заказчики от этого тоже выигрывали — под любой их запрос можно было придумать специальную команду.
Но вот архитектура самого процессора страдала. По мере развития микроэлектроники в чипах с CISC копились команды, которые использовались редко, но все еще были нужны для совместимости со старыми программами. При этом под них резервировалось пространство на кристалле (место, где расположены физические блоки процессора). Это привело к появлению альтернативной технологии RISC, что расшифровывается как Reduced Instruction Set Command — вычислительная машина с сокращенным набором инструкций. Именно она легла в основу процессоров ARM и дала им название: Advanced RISC Machines.
Здесь ставку сделали на простые и наиболее востребованные команды. Да, код поначалу писать было сложнее, поскольку он занимал больше места, но с появлением компиляторов это перестало быть значимым недостатком. Результат — экономия места на кристалле и, как следствие, сокращение нагрева и потребления энергии. Плюс множество других преимуществ.
Почему о превосходстве ARM заговорили только недавно и при чем здесь Apple?
Если архитектура ARM так хороша, то почему же Intel и AMD не бросили все и не стали строить свои чипы на ней? На самом деле, они не оставили технологию без внимания, и к сегодняшнему дню CISC в чистом виде фактически уже не существует. Еще в середине 1990-х годов процессоры обеих компаний (начиная с Pentium Pro у Intel и K5 у AMD) обзавелись блоком преобразования инструкций. Сложные команды разбиваются на простые и затем выполняются именно там. Так что современные процессоры на архитектуре x86 в плане набора инструкций гораздо ближе к RISC, чем к CISC.
Кроме того, важно понимать, что противостояние x86 и ARM — это прежде всего противостояние Intel (потому что AMD гораздо меньше во всех отношениях: от капитализации до доли на рынках) и множества разрозненных производителей чипов для мобильных устройств. Долгое время два направления развивались как бы отдельно друг от друга. У Intel не получалось сделать достаточно мощное и энергоэффективное решение на x86 для мобильных устройств, а производители ARM-процессоров не стремились на рынок «больших» ПК. В нише мобильных устройств хватало места всем, и конкурировать там было проще, чем на фактически монополизированном Intel рынке процессоров для традиционных компьютеров.
Однако в последние годы доминирующее положение Intel пошатнулось. Прежде всего из-за того, что бизнес компании перестал соответствовать ее же собственной производственной стратегии. Согласно прогнозу одного из основателей Intel Гордона Мура, количество транзисторов в процессорах должно удваиваться каждые два года за счет перехода на более компактный технологический процесс производства (измеряется в нанометрах — нм). Как раз за счет этого повышается производительность. Впоследствии впервые озвученный в середине 1960-х годов «Закон Мура» корректировался, но сегодня стало ясно, что бесконечным этот рост быть не может. Технологии Intel дошли до «потолка возможностей» и пока уперлись в него. Переход на 14 нм, а потом и на 10 нм сильно затянулся, в то время как AMD в партнерстве с TSMC уже работает по техпроцессу 7 нм, а первым 5-нанометровым процессором в мире стал Apple M1 на архитектуре ARM.
Решая множество технологических проблем с процессорами для «больших» компьютеров, Intel полностью упустила из вида рынок мобильных чипов, и теперь здесь господствуют решения ARM. Проблемы, кстати, при этом никуда не делись — чипы Intel для настольных ПК последних лет активно и справедливо критикуют. Мощные процессоры компании страдают от высокого нагрева и сильного энергопотребления, а энергоэффективные, наоборот, сильно ограничены в плане производительности.
Большинство производителей ноутбуков и компьютеров продолжают с этим мириться, и не уходят на ARM — не позволяет огромный багаж популярного софта и массовость их техники. Как вы помните, одна и та же программа не сможет работать и на x86 и, на ARM — ее нужно обязательно программировать заново. Но в 2020 году после почти 15 лет выпуска компьютеров с процессорами Intel компания Apple объявила о переходе на процессоры ARM собственной разработки. Они, кстати, тоже производятся внешним подрядчиком: на заводах уже упомянутой TSMC.
И это крайне важное заявление, потому что на рынке только у Apple есть все возможности для того, чтобы сделать этот переход успешным. Во-первых, компания сама разрабатывает процессоры на базе ARM много лет. Настольные M1 «выросли»
из мобильных чипов серии Ax. У производителей ПК на других ОС такого опыта нет или он сильно ограничен. Во-вторых, у Apple огромный опыт разработки собственных операционных систем: как мобильной, так и настольной. Конкуренты в основном используют Windows или «надстройки» для Android.
Остается совместить две системы (OS X для компьютеров, iOS для смартфонов), «заточенные» под разную архитектуру вместе, унифицировав софт, и это самый сложный пункт программы. Но и тут у Apple есть целая россыпь козырей. Это и лояльная аудитория, не готовая смотреть на продукцию конкурентов, но готовая подождать пока программы адаптируют под ARM. И собственный язык программирования Swift, который давно унифицировал процесс разработки ПО для iOS и OS X. И пусть небольшая в количестве устройств, но зато очень заметная доля на рынке ПК в деньгах, чтобы процесс адаптации «настольного» софта для x86 под работу с «мобильным» ARM стал интересен крупным разработчикам ПО. За примерами далеко ходить не надо: в Adobe на зов откликнулись одними из первых.
Немаловажно и то, что переход с Intel на ARM для Apple — далеко не первый опыт смены процессоров в своих устройствах. На Intel корпорация из Купертино переходила с PowerPC в 2005 году. А чипы PowerPC пришли на замену Motorola 68K в начале 1990-х.
Процессор Apple M1: чем он так хорош?
Apple M1 интересен не столько тем, что построен на базе технологий ARM, сколько своей архитектурой. Здесь на одной подложке собраны сам процессор, в котором по 4 производительных и энергоэффективных ядра, восьмиядерная графическая подсистема, нейромодуль для машинного обучения, огромные (по меркам процессоров) объемы кэш-памяти плюс тут же распаяна оперативная память. Такое решение занимает совсем мало места в корпусе компьютера, потребляет мало энергии (аккумулятор ноутбука дольше не разрядится) и может работать без активного охлаждения (ноутбук будет тихим или вовсе бесшумным) при хорошем уровне производительности.
И совсем не просто так первым компьютером Apple с процессором M1 стал MacBook Air. С одной стороны, это лэптоп, главными преимуществами которого как раз и должно быть все, что дает новый процессор: компактность, автономность, тишина. С другой стороны, это компьютер для наименее требовательных пользователей, которым практически не нужен никакой специфический софт — достаточно того, что сама Apple предлагает «из коробки»: браузера, проигрывателя, офисного пакета. А для софта, который под ARM адаптировать пока не успели, Apple использует встроенный эмулятор Rosetta 2.
Следующими ПК Apple с M1 после MacBook Air стали 13-дюймовый MacBook Pro и Mac Mini. Также недавно был анонсирован новый iMac. Такие машины уже ориентированы на задачи посерьезнее, но все равно это еще далеко не профессиональный сегмент — на него в Купертино пока лишь намекают. И именно здесь к решению Apple на базе технологий ARM возникает основной вопрос: получится ли «отмасштабировать» M1 до уровня профессиональных решений, где компактность и энергоэффективность не так важны, а на первый план выходит именно производительность? Как реализовать связку М1 с мощными дискретными видеокартами, без которых о монтаже, рендеринге и других сложных вычислениях говорить не приходится? Или может быть Apple вообще готовится к выпуску собственной дискретной графики? Вопросов пока куда больше, чем ответов на них.
Уже готовые компактные устройства Apple с чипами M1 выглядят действительно интересно, правда выигрыш в производительности в них явно ощущается в основном только в уже адаптированных под ARM программах, но зато он очень заметный. Так что если Intel и AMD не смогут дать достойный ответ конкуренту в нише энергоэффективных ПК, то рост популярности решений Apple не заставит себя ждать даже несмотря на то, что еще какое-то время софта будет не хватать. Массовому пользователю ведь много не нужно.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
ARM (Advanced RISC Machine)
Многие лицензиаты разрабатывают собственные версии ядер на базе ARM: DEC StrongARM, Freescale i.MX, Intel XScale, NVIDIA Tegra, ST-Ericsson Nomadik, Krait в Qualcomm Snapdragon, Texas Instruments OMAP, Samsung Hummingbird, LG H13, Apple A6 и HiSilicon K3.
Содержание
Процессоры ARM
В настоящее время значимыми считаются несколько семейств процессоров ARM:
Популярное семейство микропроцессоров xScale фирмы Marvell (до 27 июня 2007 года — Intel) — расширение архитектуры ARM9, дополненной набором инструкций Wireless MMX, специально разработанных компанией Intel для поддержки мультимедийных приложений. Здесь можно ознакомиться с версиями ядра ARM.
Архитектура
Уже давно существует справочное руководство по архитектуре ARM, что разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали реализации каждого типа процессора могут отличаться.
Архитектура развивалась с течением времени, и, начиная с ARMv7, были определены три профиля:
Профили могут поддерживать меньшее количество команд (команды определенного типа).
AArch64
AArch64 это имя для новой 64-разрядной ARM архитектуры, также известной как ARMv8 или ARM64.
AArch64 увеличил вдвое число целочисленных регистров. 32-битный ARM предоставляет 16 целочисленных регистров, из которых один — счетчик команд (англ. program counter ), еще два используются для указателя на стэк и регистра связи (англ. link register ) и 13 регистров общего назначения. В AArch64 32 целочисленных регистра, с выделенным нулевым регистром, регистром связи и регистром указателя кадра (англ. frame pointer register ). Еще один регистр зарезервирован платформой, что оставляет 28 регистров общего назначения.
AArch64 также увеличивает число регистров для чисел с плавающей запятой. Регистры в 32-битных ARM несколько странные, так что сложно сравнивать. У 32-битного ARM 32 32-битных регистров с плавающей запятой, которые могут быть представлены как 16 перекрывающихся 64-битных регистров. Кроме того, есть еще 16 независимых 64-битных регистров. AArch64 упрощает это до 32 неперекрывающихся 128-битных регистров, которые могут быть использован для данных меньшего размера. Преимущества AArch64:
Насколько это влияет на производительность зависит от конкретного кода и эффективности компилятора, который оптимизирует использование регистров. Когда архитектура Intel перешла от 32 к 64 битам, число регистров увеличилось с 8 до 16, и это было значительное изменение производительности.У ARM уже было больше регистров чем у 32-битной архитектуры Intel, так что увеличение регистров хоть и меньше повлияет на производительность, но это изменение все еще будет заметно.
AArch64 также привнес существенные изменения помимо увеличения числа регистров.
Большинство 32-битных инструкций ARM могут выполняться/не выполняться в зависимости от состояние регистра-условия. Это позволяет транслировать условные выражения (if-statements) без использования ветвления. Предполагалось, что это увеличит производительность, однако, судя по тому, что в AArch64 от этой возможности отказались, она порождала больше проблем, чем давала пользы.
В AArch64 набор SIMD (англ. single instruction, multiple data — одна инструкция, много данных) NEON полностью поддерживает стандарт IEEE754 для чисел с плавающей запятой с двойной точностью, в то время как 32-битная версия NEON поддерживала только одинарную точность и не в точности следовала стандарту для некоторых битов. В AArch64 добавили специализированные инструкции для AES шифрования и SHA-1 & SHA-256 хешей. Не слишком полезное в общем, однако существенный бонус если вы занимаетесь именно этими вопросами.
В целом, самым важным отличаем является увеличение числа регистров общего назначения и полная поддержка IEEE754-совметимой арифметики на числах с двойной точностью в NEON. Это может дать ощутимый прирост в производительности в большом числе мест.
ARMhf
ARMhf код может выполняться только на процессорах с аппаратной поддержкой вычислений с плавающей точкой. В настоящее время Debian ARMhf порт требует, по крайней мере, центральный процессор ARMv7 с Thumb-2 и VFP3D16.
Многие приложения для управления в режиме реального времени в промышленных и автомобильных полей выгоду из динамического диапазона и точности с плавающей точкой, предложенной ARM VFP. Автомобильная трансмиссия, антиблокировочная тормозная, контроль тяги, и активные системы подвески все критически важных приложений, где точность и предсказуемость являются необходимыми требованиями.
До ARMv7 архитектуры VFP стоял Вектор с плавающей точкой архитектуры, используется для векторных операций.
Там были три основные версии VFP на сегодняшний день:
Режимы
Процессор может находиться в одном из следующих операционных режимов:
Режим процессора переключается, когда возникает соответствующее исключение, или же при модификации регистра статуса.
Набор команд
Чтобы сохранить устройство чистым, простым и быстрым, оригинальное изготовление ARM было исполнено без микрокода, как и более простой 8-разрядный процессор 6502, используемый в предыдущих микрокомпьютерах от Acorn Computers. Набор команд ARM — режим, в котором исполняется 32-битный набор команд.
Набор команд Thumb
Для улучшения плотности кода процессоры, начиная с ARM7TDMI, снабжены режимом «thumb». В этом режиме процессор выполняет альтернативный набор 16-битных команд. Большинство из этих 16-разрядных команд переводятся в нормальные команды ARM. Уменьшение длины команды достигается за счёт сокрытия некоторых операндов и ограничения возможностей адресации по сравнению с режимом полного набора команд ARM.
В режиме Thumb меньшие коды операций обладают меньшей функциональностью. Например, только ветвления могут быть условными, и многие коды операций имеют ограничение в виде доступа только к половине главных регистров процессора. Более короткие коды операций в целом дают большую плотность кода, хотя некоторые операции требуют дополнительных команд. В ситуациях, когда порт памяти или ширина шины ограничены 16 битами, более короткие коды операций режима Thumb становятся гораздо производительнее по сравнению с обычным 32-битным ARM-кодом, так как меньший программный код придется загружать в процессор при ограниченной пропускной способности памяти.
Аппаратные средства типа Game Boy Advance, как правило, имеют небольшой объём оперативной памяти, доступной с полным 32-битным информационным каналом. Но большинство операций выполняется через 16-битный или более узкий информационный канал. В этом случае имеет смысл использовать Thumb-код и вручную оптимизировать некоторые тяжелые участки кода, используя переключение в режим полных 32-битных инструкций ARM.
Первым процессором с декодером Thumb-команд был ARM7TDMI. Все процессоры семейства ARM9, а также XScale, имели встроенный декодер Thumb-команд.
Набор команд Thumb-2
Thumb-2 — технология, стартовавшая с 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. Это требует осторожности и использования новой команды if-then, которая поддерживает исполнение до 4 последовательных команд испытываемого состояния. Во время компиляции в ARM-код она игнорируется, но во время компиляции в код Thumb-2 генерирует команды. Например:
Все кристаллы ARMv7 поддерживают набор команд Thumb-2, а некоторые кристаллы, вроде Cortex-m3, поддерживают только Thumb-2. Остальные кристаллы Cortex и ARM11 поддерживают наборы команд как Thumb-2, так и ARM.
Набор команд Jazelle
Jazelle — это технология, которая позволяет байткоду Java исполняться прямо в архитектуре ARM в качестве 3-го состояния исполнения (и набора команд) наряду с обычными командами ARM и режимом Thumb. Поддержка технологии Jazelle обозначается буквой «J» в названии процессора — например, ARMv5TEJ. Данная технология поддерживается, начиная с архитектуры ARMv6, хотя новые ядра содержат лишь ограниченные реализации, которые не поддерживают аппаратного ускорения.
ARMv8 и набор команд ARM 64 бит
В конце 2011 года была опубликована новая версия архитектуры, ARMv8. В ней появилось определение архитектуры AArch64, в которой исполняется 64-битный набор команд A64. Поддержка 32-битных команд получила название A32 и исполняется на архитектурах AArch32. Инструкции Thumb поддерживаются в режиме T32, только при использовании 32-битных архитектур. Допускается исполнение 32-битных приложений в 64-битной ОС, и запуск виртуализованной 32-битной ОС при помощи 64-битного гипервизора. [Источник 7] Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM и другие заявили о планах использовать ARMv8. Ядра Cortex-A53 и Cortex-A57, поддерживающие ARMv8, были представлены компанией ARM 30 октября 2012 года. [Источник 8]
Как AArch32, так и AArch64, поддерживают VFPv3, VFPv4 и advanced SIMD (NEON). Также добавлены криптографические инструкции для работы с AES, SHA-1 и SHA-256.
Функции RISC
Архитектура ARM обладает следующими особенностями RISC:
Чтобы компенсировать простой дизайн, в сравнении с современными процессорами вроде Intel 80286 или Motorola 68020 были использованы некоторые особенности дизайна:
Условное исполнение
Одно из существенных отличий архитектуры ARM (изначальная архитектура) от других архитектур ЦПУ — так называемая предикация, то есть возможность условного исполнения команд. Под «условным исполнением» здесь понимается то, что команда будет выполнена или проигнорирована в зависимости от текущего состояния флагов состояния процессора. В Thumb и Arm 64 предикация не используется — в первом режиме для неё нет места в команде (всего 16 бит), а во втором предикация бессмысленна и сложна для реализации на суперскалярных архитектурах.
В то время как для других архитектур таким свойством, как правило, обладают только команды условных переходов, в архитектуру ARM была заложена возможность условного исполнения практически любой команды. Это было достигнуто добавлением в коды их инструкций особого 4-битового поля (предиката). Одно из его значений зарезервировано на то, что инструкция должна быть выполнена безусловно, а остальные кодируют то или иное сочетание условий (флагов). С одной стороны, с учётом ограниченности общей длины инструкции, это сократило число битов, доступных для кодирования смещения в командах обращения к памяти, но с другой — позволило избавляться от инструкций ветвления при генерации кода для небольших if-блоков.
Пример, обычно рассматриваемый для иллюстрации — основанный на вычитании алгоритм Евклида. В языке C он выглядит так:
А на ассемблере ARM — так:
Из кода видно, что использование предикации позволило полностью избежать ветвления в операторах else и then. Заметим, что если Ri и Rj равны, то ни одна из SUB-инструкций не будет выполнена, полностью убирая необходимость в ветке, реализующей проверку while при каждом начале цикла, что могло быть реализовано, например, при помощи инструкции SUBLE (меньше либо равно).
Один из способов, которым уплотнённый (Thumb) код достигает большей экономии объёма — это именно удаление 4-битового предиката из всех инструкций, кроме ветвлений.
Другие особенности
Другая особенность набора команд — это возможность соединять сдвиги и вращения в инструкции «обработки информации» (арифметическую, логическую, движение регистр-регистр) так, что, например, выражение С:
может быть преобразовано в команду из одного слова и одного цикла в ARM:
Это приводит к тому, что типичные программы ARM становятся плотнее, чем обычно, с меньшим доступом к памяти. Таким образом, конвейер используется гораздо более эффективно. Даже несмотря на то, что ARM работает на скоростях, которые многие бы сочли низкими, он довольно-таки легко конкурирует с многими более сложными архитектурами ЦПУ.
ARM-процессор также имеет некоторые особенности, редко встречающиеся в других архитектурах RISC — такие, как адресация относительно счётчика команд (на самом деле счётчик команд ARM — это один из 16 регистров), а также пре- и пост-инкрементные режимы адресации.
Другая особенность, что стоит отметить, — это то, что некоторые ранние ARM-процессоры (до ARM7TDMI), например, не имеют команд для хранения 2-байтных чисел. Таким образом, строго говоря, для них невозможно сгенерировать эффективный код, который бы вел себя так, как ожидается от объектов С, типа «volatile int16_t».
Конвейер и другие аспекты реализации
ARM7 и более ранние версии имеют трехступенчатый конвейер. Это ступени переноса, декодирования и исполнения. Более производительные архитектуры, типа ARM9, имеют более сложные конвейеры. Cortex-a8 имеет 13-ступенчатый конвейер.
Сопроцессоры
Архитектура предоставляет способ расширения набора команд, используя сопроцессоры, которые могут быть адресованы, используя MCR, MRC, MRRC, MCRR и похожие команды. Пространство сопроцессора логически разбито на 16 сопроцессоров с номерами от 0 до 15, причем 15-й зарезервирован для некоторых типичных функций управления, типа управления кэш-памятью и операции блока управления памятью (на процессорах, в которых они есть).
В машинах на основе ARM периферийные устройства обычно подсоединяются к процессору путём сопоставления их физических регистров в памяти ARM или в памяти сопроцессора, или путём присоединения к шинам, которые, в свою очередь, подсоединяются к процессору. Доступ к сопроцессорам имеет большее время ожидания, поэтому некоторые периферийные устройства проектируются для доступа в обоих направлениях. В остальных случаях разработчики чипов лишь пользуются механизмом интеграции сопроцессора. Например, движок обработки изображений должен состоять из малого ядра ARM7TDMI, совмещенного с сопроцессором, который поддерживает примитивные операции по обработке элементарных кодировок HDTV.
Усовершенствованный SIMD (NEON)
Расширение усовершенствованного SIMD, также называемое технологией NEON — это комбинированный 64- и 128-битный набор команд SIMD (single instruction multiple data), который обеспечивает стандартизованное ускорение для медиаприложений и приложений обработки сигнала. NEON может выполнять декодирование аудиоформата mp3 на частоте процессора в 10 МГц, и может работать с речевым кодеком GSM AMR (adaptive multi-rate) на частоте более 13МГц. Он обладает внушительным набором команд, отдельными регистровыми файлами, и независимой системой исполнения на аппаратном уровне. NEON поддерживает 8-, 16-, 32-, 64-битную информацию целого типа, одинарной точности и с плавающей запятой, и работает в операциях SIMD по обработке аудио и видео (графика и игры). В NEON SIMD поддерживает до 16 операций единовременно.
Один из недостатков (или же особенностью) усовершенствованного SIMD — то, что сопроцессор выполняет команды усовершенствованного SIMD с достаточно значительной задержкой относительно кода основного процессора, задержка достигает двух десятков тактов и более (зависит от архитектуры и конкретных условий). По этой причине при попытке основного процессора воспользоваться результатами вычисления сопроцессора исполнение будет заморожено на значительное время.
Технология VFP (Vector Floating Point, вектора чисел с плавающей запятой) — расширение сопроцессора в архитектуре ARM. Она производит низкозатратные вычисления над числами с плавающей запятой одинарной/двойной точности, в полной мере соответствующие стандарту ANSI/IEEE Std 754—1985 Standard for Binary Floating-Point Arithmetic. VFP производит вычисления с плавающей запятой, подходящие для широкого спектра приложений — например, для КПК, смартфонов, сжатие звука, трёхмерной графики и цифрового звука, а также принтеров и телеприставок. Архитектура VFP также поддерживает исполнение коротких векторных команд. Но, поскольку процессор выполняет операции последовательно над каждым элементом вектора, то VFP нельзя назвать истинным SIMD-набором инструкций. Этот режим может быть полезен в графике и приложениях обработки сигнала, так как он позволяет уменьшить размер кода и выработку команд.
Другие сопроцессоры с плавающей запятой и/или SIMD, находящиеся в ARM-процессорах, включают в себя FPA, FPE, iwMMXt. Они обеспечивают ту же функциональность, что и VFP, но не совместимы с ним на уровне опкодов.
Расширения безопасности
Расширения безопасности, позиционируемые как TrustZone Technology, находятся в ARMv6KZ и других, более поздних, профилированных на приложениях архитектурах. Оно обеспечивает низкозатратную альтернативу добавлению специального ядра безопасности, обеспечивая 2 виртуальных процессора, поддерживаемых аппаратным контролем доступа. Это позволяет ядру приложения переключаться между двумя состояниями, называемыми «миры» (чтобы избежать путаницы с названиями возможных доменов), чтобы не допустить утечку информации из более важного мира в менее важный. Этот переключатель миров обычно ортогонален всем другим возможностям процессора. Таким образом, каждый мир может работать независимо от других миров, используя одно и то же ядро. Память и периферия соответственно изготавливаются с учетом особенностей мира ядра, и могут использовать это, чтобы получить контроль доступа к секретам и кодам ядра. Типичные приложения TrustZone Technology должны запускать полноценную операционную систему в менее важном мире, и компактный, специализированный на безопасности, код в более важном мире, позволяя Digital Rights Management’у намного точнее контролировать использование медиа на устройствах на базе ARM, и предотвращая несанкционированный доступ к устройству.
На практике же, так как конкретные детали реализации TrustZone остаются собственностью компании и не разглашаются, остается неясным, какой уровень безопасности гарантируется для этой модели угроз.
Отладка
Все современные процессоры ARM включают аппаратные средства отладки, так как без них отладчики ПО не смогли бы выполнить самые базовые операции типа остановки, отступа, установки контрольных точек после перезагрузки.
Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. К ним относятся точки останова, точки просмотра и выполнение команд в режиме отладки. Такие средства были также доступны с модулем отладки EmbeddedICE. Поддерживаются оба режима — остановки и обзора. Реальный транспортный механизм, который используется для доступа к средствам отладки, не специфицирован архитектурно, но реализация, как правило, включает поддержку JTAG.
Существует отдельная архитектура отладки «с обзором ядра», которая не требуется архитектурно процессорами ARMv7.
Регистры
ARM предоставляет 31 регистр общего назначения разрядностью 32 бит. В зависимости от режима и состояния процессора пользователь имеет доступ только к строго определённому набору регистров. В ARM state разработчику постоянно доступны 17 регистров:
Во всех режимах, кроме User mode и System mode, доступен также Saved Program Status Register (SPSR). После возникновения исключения регистр CPSR сохраняется в SPSR. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием. [Источник 9]
| usr | sys | svc | abt | und | irq | fiq |
|---|---|---|---|---|---|---|
| R0 | ||||||
| R1 | ||||||
| R2 | ||||||
| R3 | ||||||
| R4 | ||||||
| R5 | ||||||
| R6 | ||||||
| R7 | ||||||
| R8 | R8_fiq | |||||
| R9 | R9_fiq | |||||
| R10 | R10_fiq | |||||
| R11 | R11_fiq | |||||
| R12 | R12_fiq | |||||
| R13 | R13_svc | R13_abt | R13_und | R13_irq | R13_fiq | |
| R14 | R14_svc | R14_abt | R14_und | R14_irq | R14_fiq | |
| R15 | ||||||
| CPSR | ||||||
| SPSR_svc | SPSR_abt | SPSR_und | SPSR_irq | SPSR_fiq | ||
Работа с памятью
Поддерживаемые системы ввода-вывода
В большинстве существующих моделей микропроцессоров реализована шина PCI и возможность работы с внешней динамической оперативной памятью (DRAM). В процессорах, предназначенных для потребительских устройств, также обычно встраиваются: контроллеры шин USB, IIC, AC’97-совместимое звуковое устройство, устройство для работы с флэш-носителями стандарта SD и MMC, контроллер последовательного порта.
Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска», сигнальные светодиоды, колесо прокрутки (JogDial), клавиатура.
Процесс запуска ОС на ARM-машинах
После включения системы на базе ARM-процессора, из ROM-памяти загружается начальный загрузчик и адрес его точки входа. Начальный загрузчик проводит предварительную инициализацию системы, исполняя тем самым ту же роль, которую исполняет BIOS на системах x86, после чего может загрузить либо системный загрузчик, либо напрямую ОС.
Единого стандарта на начальный загрузчик не существует: хотя современные версии стандарта UEFI предусматривают возможность реализации этого стандарта для архитектуры ARM, но на практике UEFI используется редко — большинство ОС используют собственные загрузчики, или реализуют совместимость с одним из загрузчиков других систем.
ОС, поддерживающие ARM
Архитектура ARM поддерживается множеством операционных систем. Наиболее широко используемые: Linux (в том числе Android), iOS, Windows Phone.
Работать на системах с ARM-процессором могут различные Unix и Unix-подобные ОС: Linux (многие дистрибутивы), iOS, Android, BSD (FreeBSD, NetBSD, OpenBSD), QNX, Plan 9, Inferno, OpenSolaris (2008—2009), Firefox OS.
Также на платформе запускаются отдельные варианты семейства Windows: Windows CE, Windows Phone, Windows RT, Windows 10 (только на Raspberry Pi)
Кроме того, ARM поддерживают: FreeRTOS, Nucleus, Symbian OS, RISC OS, RISC iX.













