Меню

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

Содержание

Как узнать тип процессора, который используется в вашем Android устройстве

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

 

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

 

Самым простым способом узнать тип процессора на базе которого выполнен ваш смартфон, планшет или другое Android устройство будет установить на него приложение Droid Hardware Info.

 

Это приложение доступно для скачивания с этой страницы Google Play Маркет совершенно бесплатно и после его запуска вы увидите на экране смартфона следующую информацию (слева — данные о смартфоне Nexus 5, справа — информация о Nexus 6):

В самой первой строке с наименованием «CPU architecture» вы увидите одно из значений: ARMv7, AArch64 или x86, а в строке «Insructions Set»: armeabi, arm64 или x86abi.

Соответствие этих значений типу вашего процессора приведено ниже:

 

ARM: ARMv7 или armeabi

ARM64: AArch64 или arm64

x86: x86 или x86abi

 

Есть еще один достаточно простой способ узнать тип процессора вашего смартфона, планшета или другого устройства, который знаком пользователям Linux

 

Для этого вам нужно установить на свое устройство из Google Play Маркет приложение Terminal Emulator, запустить его и выполнить следующую команду: 

 

cat /proc/cpuinfo

 

На экране при этом отобразится информация о процессоре в следующей форме:

Как вы уже, наверняка поняли, нам нужна информация из самой первой строки «Processor:»

 


Похожие материалы:

Функция Quick Ball из MIUI на любом Android устройстве 

Как скачать Apk файл из Google Play Маркета с помощью APK Downloader

Скачать APK файлы приложений из Google Play Маркет можно с помощью расширения Toolbox for Google Play Store для браузера Chrome 

Raccoon. Приложение для скачивания APK файлов из Google Play Маркет обновилось, получив обновленный интерфейс и новые возможности 

ARMv7 — что это на Андроид?

Приветствую. Неважно какое устройство перед нами — смартфон или ПК, у всех них присутствует общие составляющие: процессор, оперативка, постоянная память (как жесткий диск у компьютера). Как у декстопных процессоров, так и у мобильных присутствует своя архитектура.

РЕКЛАМА

ARMv7 — что это такое?

Архитектура процессоров в портативных устройствах, например смартфоны, плееры, умные часы и даже роутеры.

v7 это просто версия.

Например в телефоне Xperia Ray стоит проц SnapDragon с данной архитектурой, это же относится и к планшету Prestigio PMP558OC.

В данной версии, по сравнению с предыдущей — выше частота, поддержка нескольких физических ядер.

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

ARM используется во многих смартфонах. А в 2007 году около 98% из более чем миллиарда телефонов, которые продавались, были оснащены по крайней мере одним процессором ARM.

ARMv7 была создана компанией ARM Limited. А другие компании, например NVIDIA, LG, Samsung — покупают лицензию у ARM Limited на выпуск процессоров с такой архитектурой.

То есть ARMv7 — это не модель процессора, это именно его архитектура.

Стоит понимать, что приложения, которые выпущены под ARMv7 — не будут работать на устройствах, где стоит ARMv6. А вот наоборот — работать могут, но вот качество работы может быть разное.

Первым процессорным ядром семейства ARMv7 было именно Cortex-A8, которое использовалось в процах Apple A4 (iPhone 4 и iPad) и Samsung Hummingbird (Samsung Galaxy S и Galaxy Tab).

Флагманские чипы ARMv7 могут иметь частоту свыше 2 ГГц и 8 ядер, что очень неплохо для смартфона.

Все процессоры ARMv7 поддерживают набор инструкций Thumb-2, благодаря которым современные приложения могут работать быстрее.

Как узнать архитектуру процессора на Android?

Теперь о том, как узнать — что у вас вообще? ARMv7 или предыдущая версия? Итак, смотрите — это можно узнать например при помощи утилиты CPU-Z, она показывает много инфы, в том числе и архитектуру (Architecture):

РЕКЛАМА

Выше на картинке видим 4x ARM Cortex-A7 @ 1,21 GHz — означает что это проц 4 ядра с частотой 1.21 ГГц, а вот чтобы узнать подробнее про архитектуру, то гуглим инфу по ARM Cortex-A7 и узнаем что это ARMv7:

РЕКЛАМА

Тоже самое можно узнать и при помощи проги AnTuTu Benchmark:

Заключение

  • ARMv7 — архитектура процессоров, которые используются в портативных устройствах.
  • Чтобы узнать архитектуру — советую использовать приложение CPU-Z.

Удачи.

На главную! 21.03.2020

РЕКЛАМА

Конец эпохи ARMv7 или же немного о портировании игр / Хабр

Вступление

Пару недель назад я столкнулся с проблемой отсутствия у игры поддержки архитектуры моего процессора в телефоне. Конечно, я знал, что ARMv7 устареет, но не ожидал, что это случится так быстро. В сети особо информации по downgrade приложения не было, поэтому пришлось немного импровизировать, вспоминая времена, когда пропала поддержка ARMv6. Так что, в данной статье речь пойдёт о переносе приложений с архитектуры ARMv8 на ARMv7, на основе моего опыта.

Тема с портированием андроид игр с одной архитектуры на другую весьма неновая. Изначально я столкнулся с этим ещё в 2015 году, только речь шла о портировании под ARMv6. С тех пор принцип переноса не поменялся, и перенести игру с одной архитектуры на другую может любой, если имеет необходимые библиотеки.



Разбор apk

Итак, что такое

.apk

? APK файл представляет из себя немного модифицированный ZIP архив, который содержит ресурсы игры и игровой движок. Выглядит он примерно так:

Папка lib — ключевая точка при переносе между архитектурами. Она содержит библиотеки движка нашей игры.
* armeabi — armv6 библиотеки (не актуально)
* armeabi-v7a — armv7 библиотеки (при отсутствии папки — отсутствует и поддержка архитектуры)
* arm64-v8a — armv8 x64 библиотеки

Перенос


Шаг #1

Первым делом нам нужно узнать, возможно ли портировать игру. Для этого нужно определить движок игры. К примеру, файл

lib/libunity.so

— принадлежит Unity Engine, а по наличию папки

assets/x-renpy

можно догадаться, что игра разработана на RenPy Engine. Если у игры движок не является собственным, то переходим к шагу два.

Шаг #2

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

Шаг #3

Мы нашли подходящего донора, теперь нам нужно добавить папку

lib/armeabi-v7a

в наш

(name).apk

. Добавляем и видим следующее:

В самом начале, как я уже сказал, APK файл представляет из себя немного модифицированный ZIP архив

, а после изменения его содержимого он становится обычным ZIP’ом.

Шаг #4

Для того, чтобы ваше устройство могло установить ваш (name).apk файл, его нужно «подписать». Для этого есть несколько различных утилит, к примеру

apk-signer

.

Устанавливаем утилиту на свой девайс, открываем, переходим в раздел Signing, нажимаем на карандаш снизу и выбираем наш (name).apk. После чего программа предложит вам выбрать, куда сохранить «подписанный файл». Выбираем и ждём. ??? PROFIT!!!

Шаг #5

Будь добрым человеком, выложи свой порт для общего пользования, к примеру, в топик игры на том же 4PDA. 😉

Некоторые lib’ы


Unity 3.* for ARMv6: yadi.sk/d/XGHn309ORuPgeg

RenPy ARMv7: yadi.sk/d/_U-hnz8D-J7D-Q

Как узнать тип процессора на Android

После выхода ОС Android Lollipop установка приложения Xposed Framework немного усложнилась.

И не столько из-за того, что для каждой ОС нужны отдельные инсталляторы, сколько из-за того, что для скачивания нужных файлов нужно точно знать тип процессора.

По сути, архитектура процессора все больше становится определяющим фактором, в том числе для установки обновлений и, конечно, для пользовательских ROM.

В современных андроидах используются три вида архитектуры CPU:

  • ARM – возможно, самая распространенная, оптимизированная под расход батареи;
  • ARM64 – модернизированная ARM, которая поддерживает 64-битную обработку данных и все чаще устанавливается на новые девайсы;
  • x86 – намного мощнее, чем две предыдущие, но и более энергозатратная, поэтому менее распространенная.

Если пока не уверены, что знаете, какой тип процессора у вашего устройства, следуйте нашим подсказкам.

Шаг 1. Установите приложение Droid Hardware Info

Самый простой способ определить тип процессора – установить приложение, которое считает и выдаст информацию о начинке телефона или планшета.

Можно порекомендовать приложение Droid Hardware Info, которое можно бесплатно скачать в Google Play Store.

Шаг 2. Просмотрите данные полей CPU Architecture и Instruction Sets

После установки откройте Droid Hardware Info и зайдите в раздел System.

Здесь обратите внимание на два поля: CPU Architecture и Instruction Sets.

Эти данные пригодятся при выполнении следующего, последнего шага.

Шаг 3. Вычислите тип процессора

Данные из раздела System немного отличаются от технических требований для приложений или Xposed Installer.

Чтобы понять какой у вас тип процессора, сравните данные полей CPU Architecture и Instruction Sets со списком, который приведен ниже.

  • ARM: ARMv7 или armeabi
  • ARM64: AArch64 или arm64
  • x86: x86 или x86abi

Что получилось? Какой тип процессора у вашего девайса – ARM, ARM64 или x86? Нам интересно, пишите в комментах!

Всё про ARMv6 и ARMv7

ARMv6 и ARMv7 — это поколения архитектуры мобильных процессоров компании ARM Limited на основе 32-битных инструкций.

Архитектура ARM довольно распространена на рынке, который прежде принадлежал исключительно настольным процессорам таких популярных архитектур как Intel x86/64 и AMD64. Сегодня, благодаря ARMv6 или ARMv7, процессор современных телевизоров, домашних кинотеатров и прочего привычного оборудования может поместиться у вас в руке.

Главной же нишей для мобильной архитектуры ARM стали смартфоны, планшеты и другие подобные мобильные устройства. В наши дни 95% смартфонов уже работают под управлением процессоров именно ARM архитектуры, а также половина «умных» телевизоров и 90% жестких дисков. А из-за своей «живучести» от одного заряда батареи и приемлемой производительностью, устройства с процессорами архитектуры ARM на борту заменили собой всю линейку «нетбуков», став планшетами с док-станциями, что придало работе девайса почти целый день работы вместо всего нескольких часов как прежде и дало некоторый скачок в производительности из-за низкой себестоимости самих процессоров, наличием многоядерных решений и высоким разгонным потенциалом. 

Ключевые особенности данных архитектур:

  • ARMv6 официально не поддерживает Flash. (В любом случае с середины 2012 года Google отказались от Flash на платформе Android окончательно, поэтому поддержка данной технологии уже и не актуальна).
  • ARMv7, зачастую, встречается в многоядерных мобильных процессорах, тогда как шестое поколение ограничивается лишь одним физическим и логическим ядром.
  • Приложения, созданные под ARMv7, имеют больший общий вес и требует больше выделенной оперативной памяти нежели аналогичные программы, которые работают только с ARMv6.
  • Процессоры на ARMv7 мощнее прежнего поколения.
  • Игры и программы, разработанные под ARMv6 совместимы с ARMv7 по умолчанию, но не наоборот.
  • То, что одно либо другое приложение поддерживает ARMv6 и ARMv7 одновременно не всегда означает улучшение графических характеристик на последней архитектуре. В этом случае рекомендуем смотреть в сторону процессоров от Nvidia, Tegra. Для них отведен отдельный магазин с игрушками с более высокой детализацией и прочими графическими плюшками, которые отсутствуют на любых других устройствах не под управлением Tegra.
  • Стандартная частота ARMv7 подобных процессоров заявлена на 1 гГЦ номинал и выше, чего нельзя сказать об ARMv6.
  • Игр для armv7 значительно больше, чем под armv6.
  • Многие популярные приложения видео проигрывателей (как mx player armv6) требует скачивания и установки дополнительного набора кодеков для armv6 или armv7 архитектур процессоров без которых аппаратной акселерации вы не добьетесь.

Часто задаваемые вопросы — ответы:

Хочу скачать игру, но в описании присутствует предостережение, что данная игра совместима лишь с ARMv7 или имеет две версии отдельно как для ARMv6, так и под ARMv7 соответственно, что мне скачивать?

Узнайте любым известным Вам способом точное название используемого в Вашем устройстве процессора, а затем найдите его на специально отведенной странице в Wikipedia и определите используемую версию архитектуры, наглядным примером на сей раз выступят процессоры Snapdragon от известной компании Qualcomm, страница которых расположена по следующей ссылке:

http://en.wikipedia.org/wiki/Snapdragon_(system_on_chip)

После установки со сторонних ресурсов того или иного приложения под Android оно отказывается запускаться, что делать?

Убедитесь в том, что версия Вашей операционной системы совпадает с совместимыми версиями андроид данного приложения, а так же узнайте к какому поколению ARM архитектуры соответствует Ваш процессор и, если это ARMv7 и выше, то в 99.9% любая относительно новая программа или игра обязана по крайней мере запустится до момента проверки лицензии, некоторых технических характеристик и прочих данных распознавания устройства, и дополнительных кеш данных приложения при необходимости.. Кроме того не повредит преждевременно освободить оперативную память от активных фоновых процессоров, если свободное пространство не соответствует минимальному требованию той или иной игры. Рекомендуем держать 256, а лучше 512 мегабайт свободной ОЗУ.

Сегодня найти armv7 телефоны значительно проще, чем пару лет назад, т.к. данная архитектура микропроцессоров уже добралась и до бюджетной области рынка мобильных смартфонов, но для владельцев «старичков» данная статья действительно может быть полезной.

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

Что такое armv7, armv7s, arm64, i386, x86_64 в iOS

предисловие

Что означают armv7, armv7s, arm64, i386, x86_64 в iOS? Как выбрать в Xcode.

Введение

armv7 | armv7s | arm64 - это набор команд процессора ARM
 i386 86 x86_64 - набор инструкций процессора Mac

Для чего эти наборы команд полезны?



    arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad
    Air| iPad mini2(iPad mini with Retina Display)
    armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
    armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod
    Touch 3G|iPod Touch5

         i386 для микропроцессора общего назначения Intel32Битовый процессор
         x86_64 для архитектуры x8664Битовый процессор

         Эмулятор32Тестирование битового процессора требует архитектуры i386,
         Эмулятор64Тестирование битового процессора требует архитектуры x86_64,
         Реальная машина32Битовый процессор требует armv7,Или архитектура armv7s,
         Реальная машина64Битовый процессор требует архитектуры arm64.


Проблемы выбора в актуальном развитии

Инструкция установила связанные параметры в XCode (в Установке сборки)

Architectures
 Укажите, к каким типам наборов команд может быть скомпилирован проект, и чем больше наборов команд он поддерживает, тем больше будет скомпилировано наборов данных, содержащих несколько кодов наборов команд. Чем больше будет создан соответствующий двоичный пакет, то есть пакет ipa станет больше.

Valid Architectures
 Ограничьте диапазон наборов команд, которые могут поддерживаться, то есть тип двоичных пакетов, скомпилированных XCode, будет в конечном счете генерироваться из этих типов, и то, какие пакеты набора команд скомпилированы, будет пересечением Архитектур и Действительных Архитектур (таким образом, это не может быть пустым) Хорошо

Build Active Architecture Only
 Указывает, компилировать ли только набор инструкций, поддерживаемый текущим подключенным устройством
 Когда его значение установлено в YES, это свойство установлено в yes, оно должно компилироваться быстрее при отладке, оно компилирует только текущую версию архитектуры, а если установлено в no, оно компилирует все версии. Поэтому вы можете выбрать для него значение yes при отладке и изменить на no при выпуске для адаптации к различным устройствам.

Примеры

Например, версия набора инструкций arm, поддерживаемых Valid Architectures: armv7 / armv7s / arm64, версия поддерживаемого набора инструкций arm, установленного соответствующими архитектурами: armv7s, тогда Xcode будет генерировать только двоичный пакет из набора armv7s.

Другой пример: установите для набора команд arm, поддерживаемого Architectures, значение: armv7, armv7s, для соответствующего набора команд, поддерживаемого Valid Architectures, установлено значение: armv7s, arm64, тогда в настоящее время единственным набором команд, поддерживаемым XCode для генерации двоичных пакетов, является armv7s.

В настройке «Допустимые архитектуры» по умолчанию используется стандартная архитектура (armv7, arm64), если вы хотите изменить его, измените его на другие

Используйте параметры стандартной архитектуры (включая 64-битные) (armv7, arm64), тогда пакет содержит 32-битный и 64-битный код, под iPhone5s (процессор iPhone5s 64-битный), 64-битный код будет предпочтительным Пакет, остальная часть iPhone (остальные айфоны 32-битные, iPhone5c также 32-битные), могут запускать только 32-битные пакеты, но содержат пакеты кода двух архитектур, которые работают только на системах ios6 и выше.

Используя параметр стандартной архитектуры (armv7, armv7s), пакет содержит только 32-разрядный код, процессор iPhone5s — 64-разрядный, но он совместим с 32-разрядным кодом, то есть может выполнять 32-разрядный код. Но это снизит производительность iPhone5s. У остальных айфонов нет проблем с пакетами 32-битного кода, а пакеты 32-битного кода практически не имеют ограничений в системе.

Итак, подытожим так: для воспроизведения 64-битной производительности iPhone5s необходимо включить 64-битный пакет, тогда минимальное требование к системе - ios6. Если вы хотите быть совместимым с ios5 и более низкими системами, вы можете воспроизводить только 32-битные пакеты, система может быть универсальной, но потеряет производительность iPhone5s.

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

Вперед
Из
Ссылка :https://www.jianshu.com/p/3fce0bd6f045

Что такое armv7s? — CodeRoad



Похоже, это новый вариант в более новых XCode — вместо «armv6 armv7» в рамках допустимых архитектур я теперь вижу «armv7 armv7s». Что такое armv7s и нужно ли мне строить для него так же, как и для armv7?

ios xcode
Поделиться Источник Mr. Boy     24 сентября 2012 в 16:42

3 ответа


  • Есть ли флаг компилятора, указывающий на отсутствие архитектуры armv7s

    С появлением iPhone 5 и других устройств armv7s возникают проблемы совместимости с существующими (закрытыми исходными кодами) сторонними фреймворками, такими как Flurry, которые построены без этой новой архитектуры. Один из вариантов-подождать, пока они выпустят новую сборку, но я надеялся, что в…

  • AdMob ARMv7s поддержка

    Обратите внимание, что хотя этот вопрос помечен как armv7 , он относится к armv7s . Новый тег не может быть создан. Я использую самый современный AdMob SDK (6.1.5), но, похоже, AdMob еще не построен для armv7s Неопределенные символы для архитектуры armv7s: _OBJC_CLASS_$_GADBannerView, ссылка из:…



42

Вам не нужно создавать armv7s, чтобы добавить поддержку iPhone 5. iPhone 5 также может запускать скомпилированный код armv7. Мое приложение только что было отправлено в магазин, и оно построено только на armv7 и работает идеально!

Поделиться Ben Groot     25 сентября 2012 в 19:13



40

iPhone 5 будет поставляться с iOS 6.0 и будет работать только с _40 _28. Чтобы совпасть с запуском iOS 6.0, Apple предоставила разработчикам более новую версию своих инструментов разработки. Xcode 4.5 вносит два основных изменения: он прекращает поддержку ARMv6 ISA (используется ядром ARM11 в iPhone 2G и iPhone 3G), сохраняет поддержку ARMv7 (используется современными ядрами ARM) и добавляет поддержку новой целевой архитектуры, предназначенной для поддержки нового A6 SoC: armv7s.

Поделиться venkatKA     24 сентября 2012 в 16:51



2

armv7s — это архитектура процессора A6 в iPhone 5. И да, вам также нужно включить это. С последней версией Xcode поддержка armv6 прекращена.

Поделиться marcelnijman     24 сентября 2012 в 16:48


  • armv7s исполняемый увеличить размер

    С XCode4.5 и ARMv7+armv7s arch размер исполняемого файла увеличился с 3 МБ до 7 МБ. Перестройте только с armv7, двоичный размер вернется к 3 МБ. Кто-нибудь видит такое же увеличение? Является ли это ожидаемым результатом?

  • Разве atos не поддерживает armv7s?

    Я попытался символизировать отчет о сбое iOS, отправленный из Apple. atos -arch armv7s -o APP_BINARY_PATH 0x0006a23c 0x35000 + 217660 И я получил ниже ошибку. > atos: Unknown architecture: armv7s Я удостоверяюсь, что двоичный файл включает в себя сборку armv7s с помощью otool. Разве atos не…


Похожие вопросы:


Realm не поддерживает armv7s

Я получил эту ошибку при попытке сборки через командную строку: ld: file is universal (4 slices) but does not contain a(n) armv7s slice: /Users/../Framework/Realm.framework/Realm file…


OpenCV.Framework не компилируется для архитектуры armv7s

Я работаю над приложением iphone, использующим фреймворк openCV. Все работало отлично. однако в последнее время с выпуском iOS 6 и XCode 4.5 я перенес свой проект на XCode 4.5 При построении я…


Фреймворк (RestKit) не совместим с armv7s

Когда я пытаюсь архивировать свой проект для iPhone 5 (armv7s), он приходит с ошибкой, которая гласит, что RestKit не совместим с архитектурой armv7s. В этом проекте я использую старую версию от…


Есть ли флаг компилятора, указывающий на отсутствие архитектуры armv7s

С появлением iPhone 5 и других устройств armv7s возникают проблемы совместимости с существующими (закрытыми исходными кодами) сторонними фреймворками, такими как Flurry, которые построены без этой…


AdMob ARMv7s поддержка

Обратите внимание, что хотя этот вопрос помечен как armv7 , он относится к armv7s . Новый тег не может быть создан. Я использую самый современный AdMob SDK (6.1.5), но, похоже, AdMob еще не построен…


armv7s исполняемый увеличить размер

С XCode4.5 и ARMv7+armv7s arch размер исполняемого файла увеличился с 3 МБ до 7 МБ. Перестройте только с armv7, двоичный размер вернется к 3 МБ. Кто-нибудь видит такое же увеличение? Является ли это…


Разве atos не поддерживает armv7s?

Я попытался символизировать отчет о сбое iOS, отправленный из Apple. atos -arch armv7s -o APP_BINARY_PATH 0x0006a23c 0x35000 + 217660 И я получил ниже ошибку. > atos: Unknown architecture: armv7s…


Xcode ошибка armv7s

Вот сообщение об ошибке, которое я получаю, когда пытаюсь запустить свое приложение; Undefined symbols for architecture armv7s: _CLLocationCoordinate2DMake, referenced from:…


Ссылка ARMv7 библиотека на ARMv7s приложение

Согласно литературе, процессор A6 будет выполнять код ARMv7. Мой проект терпит неудачу в ссылке, потому что библиотека была построена для ARMv7, но приложение построено для ARMv7s. Типичное…


VALID_ARCHES = arm64 armv7 armv7s не генерирует никаких armv7s

У меня есть вопрос о компиляции на iOS. Я создаю фреймворк, и он используется для генерации arm64, armv7 и armv7s (+ симуляторы с lipo и fun). Дело в том, что armv7s больше не присутствует в…

, цель c — Каковы преимущества armv7 перед armv6 при компиляции приложений для iPhone?

Старые устройства iOS (iPhone, iPhone 3G, iPod touch первого и второго поколения) имели процессоры, поддерживающие только набор инструкций armv6. IPhone 3G S (а также iPad и iPod touch третьего поколения) оснащен более новым процессором, который также поддерживает набор инструкций armv7. В целом, armv7 работает быстрее на этих новых процессорах, и рекомендуется, по крайней мере, включить сборку armv7 в свои приложения в будущем (в приложении только для iPad вы, вероятно, можете просто собрать сборку для armv7).

Как указывает Ясариен, наибольшая разница между наборами инструкций связана с операциями с плавающей запятой. На armv6 приложения, как правило, создавались с использованием сокращенного набора инструкций Thumb для создания бинарных файлов меньшего размера, но производительность с плавающей запятой Thumb была ужасной. Следовательно, вам нужно было отключить Thumb, если вы хотите более быстрые вычисления с плавающей запятой. В armv7 набор инструкций Thumb-2 больше не имеет этого ограничения, поэтому Apple рекомендует вам компилировать, используя его почти все время.

Вы можете сделать настройку сборки Thumb условной, чтобы она была отключена для старых устройств и включена для новых. Для этого перейдите в настройки сборки Xcode и выберите параметр «Скомпилировать для большого пальца». Перейдите в меню в нижнем левом углу экрана и выберите параметр «Добавить условие настройки сборки». В новом условии настройки сборки выберите ARMv6 для архитектуры, отключите для него Thumb, добавьте еще одно условие, выберите ARMv7 для его архитектуры и включите для него Thumb.

Согласно ответу Стивена Кэнона здесь, в armv6 аппаратно поддерживаются операции с плавающей запятой как одинарной, так и двойной точности.Я обнаружил, что арифметика с одинарной точностью работает немного лучше на этой платформе, возможно, из-за большего количества операций, помещаемых в кеш. В armv7 функция NEON SIMD с плавающей запятой unit работает только с операциями с одинарной точностью, поэтому может быть огромная разница в производительности между операциями с одинарной и двойной точностью.

Другие вопросы, которые могут быть интересны по этой теме, включают:

В чем разница между кодировками инструкций ARM, Thumb и Thumb 2?

О, ARM и их глупые названия…

Это распространенное заблуждение, но официально не существует такой вещи, как «набор инструкций Thumb-2».

Игнорируя ARMv8 (где все переименовано и AArch64 усложняет ситуацию), от ARMv4T до ARMv7-A есть два набора инструкций : ARM и Thumb. Оба они являются «32-битными» в том смысле, что они работают с данными шириной до 32 бит в 32-битных регистрах с 32-битными адресами. Фактически, там, где они перекрываются, они представляют собой одни и те же инструкции — отличается только инструкция , кодирующая , а центральный процессор фактически имеет только два разных интерфейса декодирования для своего конвейера, между которыми он может переключаться.Для ясности я намеренно избегаю терминов «32-битный» и «16-битный» …

Инструкции

ARM имеют 4-байтовую кодировку фиксированной ширины, которая требует 4-байтового выравнивания. Команды Thumb имеют кодировку переменной длины (2 или 4 байта, теперь известную как «узкая» и «широкая»), требующие 2-байтового выравнивания — большинство инструкций имеют 2-байтовые кодировки, но bl и blx всегда имели 4-байтовые кодировки * . По-настоящему запутанный момент появился в ARMv6T2, который представил технологию Thumb-2.Thumb-2 включал в себя не просто добавление дополнительных инструкций к Thumb (в основном с 4-байтовыми кодировками), чтобы привести его почти к паритету с ARM, но также расширение состояния выполнения, позволяющее условное выполнение большинства инструкций Thumb, и, наконец, введение полностью новый синтаксис ассемблера (UAL, «Унифицированный язык ассемблера»), который заменил предыдущие отдельные синтаксисы ARM и Thumb и позволил написать код один раз и собрать его в любой набор инструкций без изменений.

Архитектуры Cortex-M реализуют только набор инструкций Thumb — ARMv7-M (Cortex-M3 / M4 / M7) поддерживает большую часть технологии Thumb-2, включая условное выполнение и кодирование для инструкций VFP, тогда как ARMv6-M (Cortex -M0 / M0 +) использует только Thumb-2 в форме нескольких 4-байтовых системных инструкций.

Таким образом, новые 4-байтовые кодировки (и те, которые добавлены позже в версиях ARMv7) по-прежнему являются инструкциями Thumb — их аспект «Thumb-2» состоит в том, что они могут иметь 4-байтовых кодирования, и что они могут (в основном) условно выполняются через и (и, я полагаю, их менмоники определены только в UAL).

* До ARMv6T2 на самом деле это была сложная деталь реализации, касающаяся того, выполнялось ли bl (или blx ) как 4-байтовая инструкция или как пара 2-байтовых инструкций.Архитектурное определение было последним, но, поскольку они могли выполняться только как пара в последовательности, мало что можно было потерять (кроме возможности принять прерывание на полпути), объединяя их в одну инструкцию по соображениям производительности. ARMv6T2 просто переопределил ситуацию с точки зрения слитного выполнения одной инструкции

Запись сборки ARM (Часть 1)

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

Пошагово будут рассмотрены следующие темы:

Учебное пособие по основам сборки ARM:
Часть 1: Введение в сборку ARM
Часть 2: Регистры типов данных
Часть 3: Набор инструкций ARM
Часть 4: Инструкции по памяти: Загрузка и сохранение данных
Часть 5: Загрузка и сохранение нескольких частей
6: Условное выполнение и ветвление
Часть 7: Стек и функции

Чтобы следовать примерам, вам понадобится лабораторная среда на базе ARM.Если у вас нет устройства ARM (например, Raspberry Pi), вы можете настроить свою собственную лабораторную среду на виртуальной машине с помощью QEMU и дистрибутива Raspberry Pi, следуя этому руководству. Если вы не знакомы с базовой отладкой с помощью GDB, вы можете получить основы в этом руководстве. В этом руководстве основное внимание будет уделено 32-разрядной версии ARM, а примеры скомпилированы на ARMv6.

Почему ARM?

Это руководство обычно предназначено для людей, которые хотят изучить основы сборки ARM. Специально для тех из вас, кто интересуется написанием эксплойтов на платформе ARM.Возможно, вы уже заметили, что процессоры ARM повсюду вокруг вас. Когда я оглядываюсь вокруг, я могу насчитать в моем доме гораздо больше устройств с процессором ARM, чем процессоры Intel. Сюда входят телефоны, маршрутизаторы и, не говоря уже об устройствах Интернета вещей, продажи которых в наши дни, похоже, стремительно растут. Тем не менее, процессор ARM стал одним из самых распространенных ядер ЦП в мире. Это подводит нас к тому факту, что, как и ПК, устройства IoT подвержены неправильным злоупотреблениям при проверке ввода, таким как переполнение буфера.Учитывая широкое использование устройств на базе ARM и возможность неправильного использования, атаки на эти устройства стали гораздо более распространенными.

Тем не менее, у нас больше экспертов, специализирующихся на исследованиях безопасности x86, чем в ARM, хотя язык ассемблера ARM, пожалуй, самый простой из широко распространенных языков. Итак, почему все больше людей не уделяют внимания ARM? Возможно, потому, что существует больше учебных ресурсов, посвященных эксплуатации на Intel, чем на ARM. Подумайте о великолепных руководствах по Intel x86 Exploit, написанных Fuzzy Security или Corelan Team — подобные руководства помогают людям, интересующимся этой конкретной областью, получить практические знания и вдохновение для изучения, выходящего за рамки того, что описано в этих руководствах.Если вы заинтересованы в написании эксплойтов для x86, учебники Corelan и Fuzzysec станут вашей идеальной отправной точкой. В этой серии руководств мы сосредоточимся на основах сборки и написании эксплойтов на ARM.

Процессор

ARM против процессора Intel

Между Intel и ARM много различий, но главное отличие — это набор команд. Intel — это процессор CISC (Compstruction Set Computing), который имеет более крупный и многофункциональный набор инструкций и позволяет многим сложным инструкциям обращаться к памяти.Следовательно, он имеет больше операций, режимов адресации, но меньше регистров, чем ARM. Процессоры CISC в основном используются на обычных ПК, рабочих станциях и серверах.

ARM является процессором RISC (вычисление с сокращенным набором инструкций) и поэтому имеет упрощенный набор инструкций (100 инструкций или меньше) и регистры более общего назначения, чем CISC. В отличие от Intel, ARM использует инструкции, которые работают только с регистрами, и использует модель памяти Load / Store для доступа к памяти, что означает, что только инструкции Load / Store могут обращаться к памяти.Это означает, что для увеличения 32-битного значения по определенному адресу памяти на ARM потребуется три типа инструкций (загрузка, увеличение и сохранение), чтобы сначала загрузить значение по определенному адресу в регистр, увеличить его в регистре и сохранить это обратно в память из реестра.

Уменьшенный набор команд имеет свои достоинства и недостатки. Одним из преимуществ является то, что инструкции могут выполняться быстрее, потенциально обеспечивая большую скорость (системы RISC сокращают время выполнения за счет сокращения тактовых циклов на инструкцию).Обратной стороной является то, что меньшее количество инструкций означает больший акцент на эффективном написании программного обеспечения с ограниченными доступными инструкциями. Также важно отметить, что ARM имеет два режима: режим ARM и режим Thumb. Инструкции Thumb могут быть 2 или 4 байтами (подробнее об этом в Части 3: Набор инструкций ARM).

Еще больше различий между ARM и x86:

  • В ARM большинство инструкций можно использовать для условного выполнения.
  • Процессоры Intel серии x86 и x86-64 используют формат с прямым порядком байтов
  • До версии 3 архитектура ARM была прямым порядком байтов.С тех пор процессоры ARM превратились в BI-endian и имеют настройку, которая позволяет переключать endianness .

Есть различия не только между Intel и ARM, но и между разными версиями ARM. Эта серия руководств призвана сделать ее как можно более общей, чтобы вы получили общее представление о том, как работает ARM. Как только вы поймете основы, легко узнать нюансы для выбранной вами целевой версии ARM. Примеры в этом руководстве были созданы на 32-битной ARMv6 (Raspberry Pi 1), поэтому пояснения относятся именно к этой версии.

Названия различных версий ARM также могут сбивать с толку:

Семейство ARM Архитектура ARM
ARM7 ARM v4
АРМ9 ARM v5
ARM11 ARM v6
Cortex-A АРМ v7-A
Cortex-R ARM v7-R
Cortex-M АРМ В7-М

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

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

Так что же такое ассемблер? Язык ассемблера — это всего лишь тонкий слой синтаксиса поверх машинного кода, который состоит из инструкций, закодированных в двоичных представлениях (машинном коде), что и понимает наш компьютер. Так почему бы вместо этого просто не написать машинный код? Что ж, это было бы занозой в заднице. По этой причине мы напишем сборку ARM, которая намного проще для понимания людьми.Наш компьютер не может запускать ассемблерный код сам, потому что ему нужен машинный код. Инструмент, который мы будем использовать для сборки ассемблерного кода в машинный код, — это GNU Assembler из проекта GNU Binutils с именем as , который работает с исходными файлами, имеющими расширение * .s.

После того, как вы написали файл сборки с расширением * .s, вам нужно собрать его с помощью as и связать с ld:

 $ как program.s -o program.o
$ ld program.o -o программа 

Давайте начнем с самого низа и перейдем к языку ассемблера.На самом низком уровне у нас есть электрические сигналы в нашей цепи. Сигналы формируются переключением электрического напряжения на один из двух уровней, например, 0 вольт («выключено») или 5 вольт («включено»). Поскольку просто посмотрев, мы не можем легко определить, какое напряжение находится в цепи, мы предпочитаем записывать шаблоны включенных / выключенных напряжений, используя визуальные представления, цифры 0 и 1, чтобы не только представить идею отсутствия или присутствия сигнал, но также потому, что 0 и 1 — цифры двоичной системы. Затем мы группируем последовательность 0 и 1, чтобы сформировать инструкцию машинного кода, которая является наименьшей рабочей единицей процессора компьютера.Вот пример инструкции на машинном языке:

1110 0001 1010 0000 0010 0000 0000 0001

Пока все хорошо, но мы не можем вспомнить, что означает каждый из этих шаблонов (0 и 1). По этой причине мы используем так называемую мнемонику, аббревиатуры, чтобы помочь нам запомнить эти двоичные шаблоны, где каждой инструкции машинного кода дается имя. Эти мнемоники часто состоят из трех букв, но это не обязательно. Мы можем написать программу, используя эту мнемонику в качестве инструкций.Эта программа называется программой на языке ассемблера, а набор мнемоник, который используется для представления машинного кода компьютера, называется языком ассемблера этого компьютера. Следовательно, язык ассемблера — это самый низкий уровень, используемый людьми для программирования компьютера. Операнды инструкции идут после мнемоники. Вот пример:

MOV R2, R1

Теперь, когда мы знаем, что программа сборки состоит из текстовой информации, называемой мнемоникой, нам нужно преобразовать ее в машинный код.Как упоминалось выше, в случае сборки ARM проект GNU Binutils предоставляет нам инструмент под названием как . Процесс использования ассемблера, такого как как , для преобразования из языка ассемблера (ARM) в машинный код (ARM) называется сборкой.

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

Что такое процессор ARM? — Определение с сайта WhatIs.com

Процессор ARM — это один из семейства процессоров, основанных на архитектуре RISC (компьютер с сокращенным набором команд), разработанной Advanced RISC Machines (ARM).

ARM производит 32-битные и 64-битные многоядерные процессоры RISC. Процессоры RISC предназначены для выполнения меньшего количества типов компьютерных инструкций, чтобы они могли работать с более высокой скоростью, выполняя больше миллионов инструкций в секунду (MIPS). Удаляя ненужные инструкции и оптимизируя пути, процессоры RISC обеспечивают выдающуюся производительность при небольшой потребляемой мощности устройств CISC (сложных вычислений с набором команд).

Процессоры

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

Характеристики процессора

ARM включают:

  • Загрузить / сохранить архитектуру.
  • Ортогональный набор команд.
  • В основном одноцикловое исполнение.
  • Улучшенный энергосберегающий дизайн.
  • 64- и 32-разрядные состояния выполнения для масштабируемой высокой производительности.
  • Поддержка аппаратной виртуализации.

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

Личная конкуренция между производителями усиливается, поскольку ARM находит свое применение в полноразмерных ноутбуках.Microsoft, например, предлагает версии компьютеров Surface на базе ARM. Более чистая кодовая база версий Windows RT по сравнению с версиями x86 также может быть частично ответственной — Windows RT более оптимизирована, поскольку ей не нужно поддерживать некоторое количество устаревшего оборудования.

ARM также продвигается на рынок серверов, шаг, который представляет собой большое изменение направления и хеджирование ставок на производительность на ватт по сравнению с необработанной вычислительной мощностью. AMD предлагает 8-ядерные версии процессоров ARM для своей серии процессоров Opteron.Серверы ARM представляют собой важный сдвиг в серверных вычислениях. Традиционный сервер класса x86 с 12, 16, 24 или более ядрами увеличивает производительность за счет увеличения скорости и сложности каждого процессора, используя грубую силу и мощность для обработки требовательных вычислительных рабочих нагрузок.

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

Архитектура ARM была первоначально разработана Acorn Computers в 1980-х годах.

ARMv8 — ARM — WikiChip

ARMv8 (кодовое имя Oban ) является преемником ARMv7, архитектуры набора команд ARM, анонсированной в 2011 году, которая внесла большое количество фундаментальных изменений в набор команд, включая введение 64 -битные операционные возможности.

Обзор [править]

Работа над ARMv8 началась в группе исследований и разработок ARM в 2007 году. ARMv8, впервые раскрытая в конце 2011 года, является преемником и расширением ARMv7 ISA. Эта архитектура представила новые 64-битные операционные возможности, названные AArch64 , и определила связь с предыдущим 32-битным рабочим состоянием, именуемым AArch42 (охватывающим A32 и T32 ISA). По сути, ARMv8 расширяет старую архитектуру, сохраняя при этом совместимость со старыми версиями и расширениями (например,g., Thumb, NEON, VFP) в AArch42. Кроме того, ARMv8 внес ряд улучшений в AArch42, который по-прежнему поддерживает полную совместимость с ARMv7. Вообще говоря, ARMv8 был разработан таким образом, что хорошо спроектированное ядро ​​AArch64 должно также хорошо работать как ядро ​​AArch42.

AArch42 [редактировать]

Основная статья: AArch42

ARMv8 представила концепцию состояния выполнения AArch42 для включения того, что ранее было ARMv7. Он охватывает наборы инструкций A32 и T32, а также ряд новых инструкций.AArch42 сохраняет классическую модель исключений ARM и ограничивает виртуальный адрес 32 битами.

Улучшения ARMv8 [править]

ARMv8 представил набор улучшений классического набора команд A32. Расширения криптографии, улучшенные типы барьеров и выпуск загрузки и сохранения, которые были представлены с A64, также были добавлены в набор инструкций A32.

AArch64 [редактировать]

Основная статья: AArch64

ARMv8 представила новое состояние выполнения AArch64, которое работает с новым набором команд под названием A64.Этот режим переработал модель обработки исключений в ARM, упростив ее за счет меньшего количества режимов и регистров с хранением в банках. При поддержке 64-битной архитектуры было введено до 48 бит виртуального адреса (обратите внимание, что на самом деле это расширение Large Physical Address Extension, которое было введено в ARMv7, но было разработано одновременно с ARMv8). Кроме того, и безопасность (TrustZone), и виртуализация переносятся на AArch64.

Отношения AArch42 / AArch64 [править]

Изменения между двумя состояниями могут происходить только при входе исключения и выходе исключения.Это означает, что невозможно выполнять ветвление и связывание между двумя режимами выполнения, и невозможно уменьшить ширину регистра, переходя от одного исключения к более высокому уровню исключения. Эти ограничения позволяют приложению AAarch42 работать вместе с другим приложением AArch64 в операционной системе AArch64. Кроме того, они также позволяют гостевой ОС AAarch42 работать вместе с гостевой ОС AArch42 под гипервизором AAarch64 и другими аналогичными комбинациями.

Профили [править]

ARMv8 представил ряд профилей или разновидностей архитектуры, ориентированных на определенные классы рабочих нагрузок.

Профиль Имя Описание
Приложение ARMv8-A Оптимизирован для большого класса общих приложений для мобильных устройств, планшетов и серверов.
В реальном времени ARMv8-R Оптимизирован для работы в критических с точки зрения безопасности средах.
Микроконтроллер АРМв8-М Оптимизирован для встраиваемых систем с высокодетерминированной работой.

Расширения ARMv8 и особенности процессора [править]

ARMv8 имеет множество версий (ARMv8.1 и т. Д.), Которые определяют обязательные и дополнительные функции. Ядро Linux раскрывает наличие некоторых из этих функций через hwcaps. Эти значения отображаются в / proc / cpuinfo.

Имя Версии Функция поддерживается
fp С плавающей запятой одинарной и двойной точности.
asimd Расширенный SIMD.
evtstrm НЕТ Общий таймер сконфигурирован для генерации «событий» с частотой около 100 кГц.
aes инструкции AES (AESE и т. Д.)
pmull Полиномиальное умножение длинных инструкций (PMULL / PMULL2)
sha1 инструкции SHA-1 (SHA1C и т. Д.)
sha2 инструкции SHA-2 (SHA256H и т. Д.)
crc32 [ARMv8.0], ARMv8.1 … CRC32 / CRC32C инструкции
атомикс ARMv8.1 … Large System Extensions (LSE) — (CAS / SWP / LD [op])
fphp ARMv8.2-FP16 Плавающая точка половинной точности.
ЦП НЕТ Некоторые регистры идентификатора процессора доступны для чтения на уровне пользователя.
asimdrdm ARMv8.1 Округление двойного умножения, накопления / вычитания (SQRDMLAH / SQRDMLSH)
ао ARMv8.3 Javascript-style double-> int convert (FJCVTZS)
lrcpc ARMv8.3 Более слабая согласованность выпуска (LDAPR и т. Д.)
DCPOP ARMv8.2 Очистка кэша данных до точки сохранения (DC CVAP)
sha3 ARMv8.2-SHA инструкции SHA-3 (EOR3, RAX1, XAR, BCAX)
см3 ARMv8.2-SM SM3 инструкции
см4 ARMv8.2-SM SM4 инструкции
asimddp ARMv8.2-DotProd Точечный продукт SIMD
sha512 ARMv8.2-SHA инструкции SHA512
св ARMv8.2-SVE Масштабируемое векторное расширение (SVE)

Crypto Extension [править]

ARMv8 представила аппаратное ускорение для криптографии. Эти операции были добавлены для дополнения, но не замены традиционных ускорителей криптографии.Предназначенные для поддержки криптографии на уровне небольших инструкций, поддерживались два основных алгоритма: AES и SHA (SHA-1 и SHA-256).

Библиография [править]

  • Ричард Гризентуэйт. (26 октября 2011 г.). «Технологический обзор: архитектура ARM — взгляд в будущее» .
  • Архитектурная группа ARM. «Обзор набора команд Armv8». т. PRD03-GENC-010197 (2011).
  • elf_hwcaps.txt

arm — В чем разница между различными реализациями arm64 / aarch64 для Linux или другого программного обеспечения для работы?

Ваш вопрос можно интерпретировать как довольно широкий, но я думаю, что то, о чем вы на самом деле спрашиваете, очень конкретное.Принципиальная разница между различными реализациями arm64 и aarch64.

В основе вашего вопроса лежит то, что разные процессоры предоставляют разные наборы инструкций. Я обычно ссылаюсь на эту страницу Википедии под названием: Список наборов инструкций, поскольку это самый полный список, который я когда-либо видел в Интернете.

Наборы инструкций

В основе каждого микропроцессора лежит набор инструкций, которые он может выполнять. Интерфейс для наборов инструкций — это то, что компиляторы преобразуют языки программирования более высокого уровня, такие как C / C ++, в машинный код.Этот машинный код — это инструкции из набора команд ЦП. Между прочим, инструкции в наборе команд обычно выглядят так:

x86 nasm — https://rosettacode.org/wiki/Bitwise_operations#x86_Assembly
  внешний printf
    глобальная главная

    раздел .text
главный
    mov eax, dword [_a]
    mov ecx, dword [_b]
    толкнуть ecx
    толкнуть eax

    и eax, ecx
    mov ebx, _opand
    call out_ops
  

ПРИМЕЧАНИЕ: Вы также услышите машинный код, называемый языком ассемблера.

arm64 против aarch64

С этими двумя архитектурами я смог найти ответ от SO: title: Различия между arm64 и aarch64, в котором разница была указана следующим образом:

AArch64 — это 64-битное состояние, представленное в архитектуре Armv8-A. 32-битное состояние, которое обратно совместимо с Armv7-A и предыдущими 32-битными архитектурами Arm, называется AArch42. Следовательно, триплет GNU для 64-битной ISA — это aarch64. Сообщество ядра Linux решило назвать свой порт ядра для этой архитектуры arm64, а не aarch64, так что именно отсюда и происходит некоторая часть использования arm64.

Насколько мне известно, бэкэнд Apple для aarch64 назывался arm64, тогда как бэкэнд, разработанный сообществом LLVM, назывался aarch64 (так как это каноническое имя для 64-битного ISA), а позже они были объединены, и теперь бэкэнд называется aarch64.

Итак, aarch64 и arm64 относятся к одному и тому же.

Некоторые из ваших вопросов

Вы задаете слишком много вопросов, чтобы ответить на них одним вопросом. Но я постараюсь ответить на самое главное.

Q4. Что меня смущает, так это причина, по которой сообщество archlinuxarm не предоставляет tarball-файл stage rootfs только для arm64 armel и т. Д. Вместо различных продуктов разных поставщиков? Означает ли это, что, например, набор инструкций в DragonBoard 410c отличается от Raspberry Pi 3? Или, другими словами, что произойдет, если я установлю Archlinuxarm для DragonBoard 410c на Raspberry Pi 3? Может ли он правильно загружаться?

Чтобы узнать подробности об этом, вам нужно спросить сообщество Arch, почему они предпочитают делать что-то в рамках этого проекта.Что касается вашего вопроса о запуске Archlinuxarm, созданного специально для 410c на Raspberry Pi 3, я предлагаю попробовать его.

Оба этих процессора являются процессорами ARM, как показано здесь:

Итак, я ожидал, что вы сможете использовать одни и те же двоичные файлы на обоих. Наконец, я, вероятно, задам следующий вопрос на сайте Raspberry Pi Stackexchange. Есть множество вопросов в том же духе, что и вы, например:

Список литературы

Объяснение наборов инструкций, архитектуры и других различий

Android может работать на процессорах трех различных типов: Arm, Intel и MIPS.Первая является сегодня повсеместной архитектурой после того, как Intel отказалась от процессоров для мобильных устройств, в то время как процессоры MIPS для телефонов не появлялись уже много лет. Arm — это архитектура ЦП, используемая всеми современными смартфонами в экосистемах Android и Apple. Процессоры Arm также выходят на рынок ПК через Windows на Arm и специальный процессор Apple M1 для Mac. В связи с тем, что война Arm против Intel CPU вот-вот разгорится, вот все, что вам нужно знать о Arm против x86.

Объяснение архитектуры ЦП

Центральный процессор (ЦП) — это «мозг» вашего устройства, но он не совсем умный.ЦП работает только тогда, когда ему даны очень конкретные инструкции — соответственно называемые набором инструкций — которые говорят процессору перемещать данные между регистрами и памятью или выполнять вычисления с использованием определенной исполнительной единицы (например, умножения или вычитания). Уникальные аппаратные блоки ЦП требуют разных инструкций. Они, как правило, масштабируются с помощью более сложных и мощных процессоров. Желаемые инструкции также могут повлиять на конструкцию оборудования, как мы вскоре увидим.

Что такое SoC? Все, что вам нужно знать о наборах микросхем для смартфонов

Приложения, которые запускаются на вашем телефоне, не записываются в инструкции ЦП; это было бы безумием с сегодняшними крупными кроссплатформенными приложениями, чем работающими на различных чипах.Вместо этого приложения, написанные на различных языках программирования более высокого уровня (например, Java или C ++), соответствуют определенным наборам инструкций, так что они корректно работают на Arm, x86 или других процессорах. Эти инструкции далее декодируются в операции микрокода в ЦП, что требует места на кремнии и питания. Если вам нужен ЦП с наименьшим энергопотреблением, простота набора команд имеет первостепенное значение. Однако более высокая производительность может быть получена от более сложного оборудования и инструкций за счет энергопотребления. Это фундаментальное различие между историческими подходами Arm и Intel к проектированию процессоров.

x86 традиционно нацелен на максимальную производительность, энергоэффективность Arm

Arm основан на RISC (вычислениях с сокращенным набором команд), а Intel (x86) — на CISC (вычислениях со сложными наборами инструкций). Инструкции процессора Arm в разумной степени атомарны, с очень тесной корреляцией между количеством инструкций и микрооперациями. Для сравнения, CISC предлагает гораздо больше инструкций, многие из которых выполняют несколько операций (например, оптимизированные математические вычисления и перемещение данных). Это приводит к лучшей производительности, но большему энергопотреблению при декодировании этих сложных инструкций.

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

Современные 64-битные архитектуры ЦП

Сегодня 64-битные архитектуры широко используются в смартфонах и ПК, но так было не всегда.Телефоны переходили на этот рынок только в 2012 году, примерно через десять лет после компьютеров. В двух словах, 64-битные вычисления используют регистры и адреса памяти, достаточно большие для использования 64-битных (1 и 0) длинных типов данных. Помимо совместимого оборудования и инструкций, вам также понадобится 64-разрядная операционная система, например Android.

Ветераны индустрии, возможно, помнят шумиху, когда Apple представила свой первый 64-битный процессор, опередив своих конкурентов Android. Переход на 64-битную архитектуру не изменил повседневные вычисления. Однако важно эффективно выполнять математические вычисления при использовании чисел с плавающей запятой высокой точности.64-битные регистры также улучшают точность 3D-рендеринга, скорость шифрования и упрощают адресацию более 4 ГБ ОЗУ.

Сегодня обе архитектуры поддерживают 64-битную архитектуру, но недавно появилась мобильная версия

ПК перешли на 64-разрядную архитектуру задолго до появления смартфонов, но не Intel изобрела современную архитектуру x86-64 (также известную как x64). Эта награда принадлежит объявлению AMD от 1999 года о модернизации существующей архитектуры Intel x86. Альтернативная архитектура Intel IA64 Itanium отошла на второй план.

Arm представила свою 64-битную архитектуру ARMv8 в 2011 году. Вместо расширения 32-битного набора команд Arm предлагает чистую 64-битную реализацию. Для этого архитектура ARMv8 использует два состояния выполнения: AArch42 и AArch64. Как следует из названий, один предназначен для запуска 32-разрядного кода, а другой — для 64-разрядного. Прелесть дизайна ARM заключается в том, что процессор может легко переключаться из одного режима в другой во время его нормального выполнения. Это означает, что декодер для 64-битных инструкций представляет собой новую конструкцию, которая не требует поддержки совместимости с 32-битной эрой, но процессор в целом остается обратно совместимым.Однако Arm указала, что будущие процессоры ARMv9 Cortex-A будут 64-разрядными только к 2023 году, что отключит поддержку старых 32-разрядных приложений и операционных систем на этих процессорах следующего поколения. Фактически, небольшие процессоры Cortex-A510 2021 года и мощные процессоры Cortex-X2 уже являются только 64-разрядными.

Подробнее: Arm Cortex-X2, A710 и A510: подробное описание: объяснение конструкции процессоров Armv9

Гетерогенные вычисления Arm превзошли мобильные

Архитектурные различия, описанные выше, частично объясняют текущие успехи и проблемы, с которыми сталкиваются два гиганта чипов.Подход Arm с низким энергопотреблением идеально соответствует требованиям к расчетной тепловой мощности (TDP) 3,5 Вт для мобильных устройств, но при этом производительность увеличивается до уровня чипов Intel для ноутбуков. Между тем, типичные Intel Core i7 и i9 с TDP 100 Вт вместе с конкурирующими наборами микросхем от AMD выигрывают в серверах и высокопроизводительных настольных компьютерах, но исторически с трудом сокращаются до уровня ниже 5 Вт. Посмотрите на сомнительный состав Atom.

Конечно, мы не должны забывать и о той роли, которую процессы производства кремния сыграли в значительном повышении энергоэффективности за последнее десятилетие.Вообще говоря, транзисторы ЦП меньшего размера потребляют меньше энергии. Intel застряла в попытках выйти за рамки своего внутреннего 14-нм техпроцесса 2014 года, и 10-нм чипы начнут появляться в 2021 году. За это время наборы микросхем для смартфонов перешли с 20-нм на 14, 10 и 7-нанометровую конструкцию, а 5-нанометровая технология на рынке как 2021 года. Это было достигнуто просто за счет конкуренции между литейными предприятиями Samsung и TSMC. Это также частично помогло AMD сократить отставание от своего конкурента x86-64, выпустив новейшие 7-нм процессоры Ryzen.

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

Способность Arm распределять рабочие нагрузки между высокопроизводительными и низкопроизводительными ядрами ЦП является благом для энергоэффективности

Первый удар компании

Arm по этой идее был МАЛЕНЬКИЙ еще в 2011 году с большим ядром Cortex-A15 и маленьким ядром Cortex-A7. Идея использования больших вышедших из строя ядер ЦП для требовательных приложений и энергоэффективных упорядоченных ЦП для фоновых задач — это то, что сегодня пользователи смартфонов воспринимают как должное, но потребовалось несколько попыток, чтобы сгладить эту формулу.Компания Arm основывалась на этой идее с DynamIQ и архитектурой ARMAv8.2 в 2017 году, позволяя различным процессорам находиться в одном кластере, совместно используя ресурсы памяти для гораздо более эффективной обработки. DynamIQ также поддерживает конструкцию ЦП 2 + 6, которая все чаще встречается в микросхемах среднего уровня.

Связано: Одноядерные или многоядерные процессоры: что лучше для смартфонов?

Конкурирующие Intel процессоры Atom без гетерогенных вычислений не могут сравниться с балансом производительности и эффективности Arm.Потребовалось до 2020 года для проектов Intel Foveros, Embedded Multi-die Interconnect Bridge (EMIB) и Hybrid Technology, чтобы создать конкурирующий чип — 10-нм Lakefield. Lakefield сочетает в себе одно высокопроизводительное ядро ​​Sunny Cove с четырьмя энергоэффективными ядрами Tremont, а также графические возможности и возможности подключения. Однако даже этот пакет нацелен на подключенные ноутбуки с TDP 7 Вт, который все еще слишком высок для смартфонов.

Intel Lakefield с гибридной технологией использует те же принципы проектирования, что и Arm’s big.LITTLE

Сегодня все чаще идет борьба между Arm и x86 в сегменте ноутбуков с TDP мощностью менее 10 Вт, где Intel масштабируется вниз, а Arm масштабируется все более успешно. Переход Apple на собственные чипы Arm для Mac является ярким примером растущего охвата производительности архитектуры Arm, отчасти благодаря гетерогенным вычислениям и индивидуальной оптимизации, сделанной Apple.

Ядра Custom Arm и наборы инструкций

Еще одно важное различие между Arm и Intel заключается в том, что последняя контролирует весь процесс от начала до конца и напрямую продает свои чипы.Arm просто продает лицензии. Intel сохраняет свою архитектуру, дизайн процессоров и даже производство полностью собственными силами. Для сравнения, Arm предлагает множество продуктов таким партнерам, как Apple, Samsung и Qualcomm. Они варьируются от готовых дизайнов ядер ЦП, таких как Cortex-A78 и A710, проектов, созданных в партнерстве в рамках программы Arm CXC, и лицензий на пользовательскую архитектуру, которые позволяют таким компаниям, как Apple и Samsung, создавать собственные ядра ЦП и даже вносить изменения в них. набор инструкций.

Подробнее: Первые компьютеры Apple на базе Arm включают в себя новые MacBook и Mac Mini

Создание собственных процессоров — дорогостоящий и сложный процесс, но правильное выполнение может привести к впечатляющим результатам.Процессоры Apple демонстрируют, как изготовленное на заказ оборудование и инструкции значительно приближают производительность Arm к стандартным x86-64 и даже выше. Хотя ядра Mongoose от Samsung были менее успешными и в конечном итоге прекратили свое существование.

Apple намерена постепенно заменить процессоры Intel в своих продуктах Mac на собственные микросхемы на базе Arm. Apple M1 — первая микросхема в этом направлении, на которой установлены новейшие MacBook Air, Pro и Mac Mini. M1 может похвастаться некоторыми впечатляющими улучшениями производительности, что говорит о том, что высокопроизводительные ядра Arm способны справиться с x86-64 в более требовательных вычислительных сценариях.Однако помните, что Apple сравнивает процессоры класса портативных компьютеров, а не настольные компьютеры.

На момент написания самый мощный суперкомпьютер в мире, Fugaku, работал на Arm

Архитектура x84-64, используемая Intel и AMD, остается впереди с точки зрения чистой производительности в области потребительского оборудования. Но в настоящее время Arm является очень конкурентоспособным в сегментах продуктов, где высокая производительность и энергоэффективность остаются ключевыми, включая рынок серверов. На момент написания самый мощный в мире суперкомпьютер впервые работал на ядрах ЦП Arm.Его SoC A64FX разработан Fujitsu и первым использует архитектуру Armv8-A SVE.

Совместимость программного обеспечения

Как мы упоминали ранее, приложения и программное обеспечение должны быть скомпилированы для архитектуры ЦП, на которой они работают. Исторический союз между процессорами и экосистемами (такими как Android на Arm и Windows на x86) означал, что совместимость никогда не вызывала особой озабоченности, поскольку приложениям не нужно было работать на нескольких платформах и архитектурах. Однако рост кроссплатформенных приложений и операционных систем, работающих на нескольких архитектурах ЦП, меняет эту картину.

Mac от Apple на базе Arm, Google Chrome OS и Microsoft Windows on Arm — все это современные примеры, когда программное обеспечение должно работать как на Arm, так и на x86-64 архитектурах. Компиляция нативного программного обеспечения для обоих является вариантом для новых приложений и разработчиков, желающих вложить средства в перекомпиляцию. Чтобы заполнить пробелы, эти платформы также полагаются на эмуляцию кода. Другими словами, перевод кода, скомпилированного для одной архитектуры ЦП, для работы на другой. Это менее эффективно и снижает производительность по сравнению с собственными приложениями, но в настоящее время возможна хорошая эмуляция для обеспечения работы приложений.

После многих лет разработки эмуляция Windows on Arm находится в довольно хорошем состоянии для большинства приложений. Приложения Android работают на Intel Chromebook по большей части прилично. У Apple есть собственный инструмент перевода, получивший название Rosetta 2, который также поддерживает устаревшие приложения Mac. Но все три страдают от потери производительности по сравнению с приложениями, скомпилированными в собственном коде.

Arm против x86: последнее слово

За последнее десятилетие соперничества Arm и x86, Arm стал лучшим выбором для устройств с низким энергопотреблением, таких как смартфоны.Эта архитектура теперь также широко используется в ноутбуках и других устройствах, где требуется повышенная энергоэффективность. Несмотря на проигрыш в области телефонов, усилия Intel по снижению энергопотребления с годами также улучшились: гибридные идеи, такие как Lakefield и Alder Lake, теперь имеют гораздо больше общего с традиционными процессорами Arm, используемыми в телефонах.

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

.

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

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