Загрузка ос на arm

Указание поддерживаемых архитектурHow to Specify Supported Architectures

Xamarin.Android поддерживает следующие варианты архитектуры:Xamarin.Android supports the following architectures:


armeabi – процессоры на базе ARM, поддерживающие по меньшей мере набор инструкций ARMv5TE.armeabi – ARM-based CPUs that support at least the ARMv5TE instruction set

Обратите внимание, что armeabi не является потокобезопасным и не следует использовать на многопроцессорных устройствах.Note that armeabi is not thread-safe and should not be used on multi-CPU devices.. Примечание

Примечание

Начиная с , больше не поддерживается.As of , is no longer supported.

ARMEABI-v7a – процессоры на базе ARM с аппаратными операциями с плавающей запятой и устройствами с несколькими ЦП (SMP).armeabi-v7a – ARM-based CPUs with hardware floating-point operations and multiple CPU (SMP) devices

Обратите внимание, что машинный код не будет выполняться на устройствах ARMv5.Note that machine code will not run on ARMv5 devices.

arm64-v8a – процессоры на основе архитектуры 64-bit ARMv8.arm64-v8a – CPUs based on the 64-bit ARMv8 architecture.

Процессоры x86 –, поддерживающие набор инструкций x86 (или IA-32).x86 – CPUs that support the x86 (or IA-32) instruction set. Этот набор инструкций эквивалентен инструкциям Pentium Pro, включая MMX, SSE, SSE2 и SSE3.This instruction set is equivalent to that of the Pentium Pro, including MMX, SSE, SSE2, and SSE3 instructions.

x86_64 Процессоры, поддерживающие 64-разрядный x86 (также называемый x64 и AMD64).x86_64 CPUs that support the 64-bit x86 (also referred as x64 and AMD64) instruction set.

Для Xamarin. Android по умолчанию используется для сборок выпуска .Xamarin.Android defaults to for Release builds. Этот параметр обеспечивает значительно большую производительность, чем .This setting provides significantly better performance than . Если вы нацелены на платформу 64-разрядной ARM (например, в табличное размещение 9), выберите .If you are targeting a 64-bit ARM platform (such as the Nexus 9), select . Если вы развертываете приложение на устройстве x86, выберите .If you are deploying your app to an x86 device, select . Если целевое устройство x86 использует архитектуру с 64-разрядным ПРОЦЕССОРом, выберите .If the target x86 device uses a 64-bit CPU architecture, select .

Империя Olivetti

Хоть Archimedes и выпускался под маркой Acorn, компания к тому времени уже не была частным бизнесом Хаузера и Карри. За успешным 1983 годом последовал ужасный 1984-й, когда рынок домашних компьютеров перенасытился. Это имело трагические последствия для многих игроков: Atari и Commodore сменили хозяев, а в Apple (в первый раз) столкнулись с перспективой банкротства.

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

И тут на горизонте появилась итальянская фирма Olivetti. Ее руководство уже и раньше предпринимало попытки перейти от производства пишущих машинок к компьютерам. С конвейеров Olivetti с 1983 по 1985 год сходили модели на основе Zilog Z8000 и Intel 8088. Но ARM, Archimedes и его операционная система RISC OS казалась для менеджеров Olivetti лакомым кусочком: иметь собственные технологии всегда лучше — по крайней мере в то время так казалось.

Вскоре была заключена сделка, в результате которой к Olivetti перешло 80 процентов акций Acorn, а Герман Хаузер стал руководителем исследовательского подразделения. Второй основатель Acorn Крис Карри, получив дивиденды от продажи, предпочел основать новую компанию — General Information Systems. Она до сих пор функционирует и занимается смарт-картами, электронными денежными переводами и системами безопасности.

Итальянцы, правда, тоже предвидели будущее неверно: в конце восьмидесятых годов началось победное шествие IBM PC и его клонов. Стало понятно, что все несовместимое с PC скоро окажется на свалке истории, и компании вместо того, чтобы взращивать свои технологии, массово переходили на сборку компьютеров из готовых компонентов. Тогдашние действия Olivetti можно сравнить с HP, три года назад купившей Palm, чтобы затем отказаться от него и перейти на вездесущий Android.

Хаузер тоже не был горд тем, что продал свою компанию. В одном из интервью он сетует: можно было бы поступить, как IBM, — дать возможность сторонним фирмам производить компоненты и собирать компьютеры. И тогда, возможно, Acorn и ARM, а не IBM и Intel оказались бы в центре новой индустрии. Но нужное решение вовремя принято не было, и стать британским IBM фирме Acorn было не суждено. Зато у Хаузера имелся запасной план.

Кембриджский желудь

История Acorn связана с другой известной британской компанией — Sinclair Research, где был создан небезызвестный компьютер ZX Spectrum. Будущий сооснователь Acorn Крис Карри сделал свою карьеру именно в Sinclair Radionics (позднее — Research). В те времена Карри и Синклер были друзьями и вместе работали над карманным калькулятором и другими проектами, но в 1978 году во время подготовки прототипа ZX80 (одного из предшественников ZX Spectrum) они так сильно разошлись во мнениях относительно будущего компьютера, что Карри покинул Синклера и его компанию. А вскоре основал собственную — совместно с предпринимателем, изобретателем и инвестором Германом Хаузером. Фирма называлась Cambridge Processor Unit, или просто CPU.

Хаузер к тому времени уже успел завербовать одного гениального студента Кембриджского университета — Роджера Уилсона. Тот был буквально влюблен в электронику, на память цитировал справочники компонентов и писал программы в машинных кодах без единой ошибки — по крайней мере такова легенда. Опыт настоящей работы у Уилсона был небольшой — за ним числилось разве что создание автоматизированной кормушки для коров на основе чипа MOS Technology 6502. Но когда Хаузер предложил Уилсону поучаствовать в создании электронной записной книжки (которая так потом и не появилась на свет), тот немедленно согласился.

Герман Хаузер и Крис Карри на заре Acorn Другие статьи в выпуске:

Хакер #176. Анонимность в интернете

  • Содержание выпуска
  • Подписка на «Хакер»

Карри привел с собой в новую фирму еще одного студента Кембриджа — второкурсника Стива Фербера. Фербер, как и Карри, ранее работал на Синклера и занимался разработкой набора MK14, из которого любой желающий мог собрать простенький домашний компьютер. Первое время Ферберу приходилось совмещать работу в CPU с учебой, но зато у него не было никаких сомнений в том, что после получения диплома он сможет продолжать заниматься любимым делом — придумывать компьютеры.

В 1979 году CPU был переименован в Acorn (что переводится как «желудь»), якобы чтобы числиться в телефонном справочнике до Apple. Но самое главное — фирма в тот год выпустила свой первый продукт, Acorn System 1. Это был очень скромный компьютер для научных расчетов, имевший однострочный ЖК-дисплей и продававшийся за 80 фунтов стерлингов. Для сравнения, ZX80, тоже считавшийся экстремально дешевым, в сборе стоил сотню.

Acorn System 1 выглядел очень скромно — не сразу скажешь, что это компьютер

Настоящий успех ждал Acorn двумя годами позже, когда совместно с BBC (да-да, той самой Британской широковещательной корпорацией, что по сей день снабжает весь мир своими новостями и сериалом «Доктор Кто») Карри и Хаузеру удалось выиграть тендер на поставки компьютеров в британские школы, — так родился BBC Micro. Клайв Синклер тоже участвовал в тендере и был настолько взбешен поражением, что напал на своего бывшего друга и коллегу Криса Карри в одном из кембриджских пабов и отхлестал его свернутой в трубочку газетой.

Регистры чисел с плавающей запятой и SIMDFloating-point/SIMD registers


Архитектура AArch64 также поддерживает 32 регистра чисел с плавающей запятой и SIMD (см. описание ниже):The AArch64 architecture also supports 32 floating-point/SIMD registers, summarized below:

РегистровоеRegister Переменный?Volatile? РольRole
v0v0 ПеременныйVolatile Параметр, оперативный регистр 1, регистр результатаParameter/scratch register 1, result register
v1–v7v1-v7 ПеременныйVolatile Параметр, оперативные регистры 2–8Parameter/scratch registers 2-8
v8–v15v8-v15 НеизменяемыйNon-volatile Оперативные регистры (неизменяемыми являются только младшие 64 разряда)Scratch registers (only the low 64 bits are non-volatile)
v16–v31v16-v31 ПеременныйVolatile Оперативные регистрыScratch registers

Каждый регистр может быть доступен как полное 128-разрядное значение (посредством v0–v31 или q0–q31).Each register may be accessed as a full 128-bit value (via v0-v31 or q0-q31). Кроме того, каждый регистр может быть доступен как 64-разрядное (посредством d0–d31), 32-разрядное (посредством s0–s31), 16-разрядное (посредством h0–h31) или 8-разрядное (посредством b0–b31) значение.It may be accessed as a 64-bit value (via d0-d31), as a 32-bit value (via s0-s31), as a 16-bit value (via h0-h31), or as an 8-bit value (via b0-b31). Операции доступа размером менее 128 разрядов обращаются только к младшим разрядам полного 128-разрядного регистра.Accesses smaller than 128 bits only access the lower bits of the full 128-bit register. Остальные разряды не затрагиваются, если не указано иное.They leave the remaining bits untouched unless otherwise specified. Отличие архитектуры AArch64 от AArch32 заключается в том, что в последней регистры меньшего размера упаковывались поверх регистров большего размера.(AArch64 is different from AArch32, where the smaller registers were packed on top of the larger registers.)

К битовым полям регистра управления операциями с плавающей запятой (FPCR) предъявляются определенные требования:The floating-point control register (FPCR) has certain requirements on the various bitfields within it:

BitsBits ЗначениеMeaning Переменный?Volatile? РольRole
2626 AHPAHP НеизменяемыйNon-Volatile Альтернативное управление с половинной точностьюAlternative half-precision control.
2525 DNDN НеизменяемыйNon-Volatile Управление режимом по умолчанию NaNDefault NaN mode control.
2424 FZFZ НеизменяемыйNon-volatile Управление режимом обнуленияFlush-to-zero mode control.
23—2223-22 RModeRMode НеизменяемыйNon-volatile Управление режимом округленияRounding mode control.
15, 12–815,12-8 IDE, IXE и т. п.IDE/IXE/etc НеизменяемыйNon-Volatile Биты отслеживания исключения, должны всегда быть равны 0Exception trap enable bits, must always be 0.

Новое – хорошо забытое старое

Журналисты вслед за пиарщиками ARM нередко преподносят эту архитектуру как нечто совершенно новое, что должно похоронить убеленную сединами х86.

На самом деле ARM и х86, на базе которой построены процессоры Intel, AMD и VIA, устанавливаемые в ноутбуки и настольные ПК, практически ровесники. Первый чип х86 увидел свет в 1978 году. Проект ARM официально стартовал в 1983, но при этом базировался на разработках, которые велись практически одновременно с созданием х86.

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

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

RISC — благородное дело

Современные процессорные архитектуры принято делить на два класса: CISC (Complex Instruction Set Computing — вычислители с комплексным набором команд) и RISC (Reduced Instruction Set Computing — вычислители с сокращенным набором команд). Между этими подходами есть принципиальная разница, но появилась она не сразу.

Ранние восьмибитные процессоры вроде Intel 8080 или Motorola 6800 умели исполнять всего несколько простых инструкций. Например, не было специальной инструкции для перемножения чисел, это действие требовало нескольких процессорных команд — смещений и сложений. Такой подход кажется неудобным, и потому решение добавить более емкие инструкции было интуитивным.

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

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

В рамках все того же проекта VSLI профессор Калифорнийского университета в Беркли Дэвид Паттерсон провел исследование, в ходе которого нащупал иной подход к процессоростроению, который он назвал RISC. Выяснилось, что если ограничить набор инструкций лишь теми, которые могут быть исполнены за один такт, то можно увеличить скорость их исполнения и таким образом повысить общую производительность. Житейская логика подсказывает, что такого быть не должно: программы ведь получаются длиннее! Но когда речь идет о системах из сотен тысяч компонентов, житейская логика может отдохнуть, а верный ответ дадут моделирование и симуляция.

Заодно Паттерсону удалось значительно снизить влияние «бутылочного горлышка» фон-неймановской архитектуры — медленного канала между процессором и оперативной памятью. RISC отличается большим числом регистров, чем CISC, и это позволяет реже обращаться к оперативной памяти — в особенности если программа пропущена через оптимизирующий компилятор и выгодно использует ресурсы. Еще лучше такой подход работает в многоядерных или многопроцессорных системах, где к одной и той же памяти обращаются несколько вычислителей. Чем реже они это делают, тем реже каждому из них приходится ждать своей очереди и, соответственно, тем больше прирост производительности.

Особенности процессоров NVIDIA, TI, Qualcomm, Marvell

Лицензируя ARM направо и налево, разработчики усиливали позиции своей архитектуры за счет компетенций партнеров. Классическим примером в данном случае можно считать NVIDIA Tegra. Эта линейка систем-на-чипе имеет в основе архитектуру ARM, но у NVIDIA уже были свои весьма серьезные наработки в области трехмерной графики и системной логики.


NVIDIA Tegra

ARM дает своим лицензиарам широкие полномочия по переработке архитектуры. Соответственно инженеры NVIDIA получили возможность совместить в Tegra сильные стороны ARM (вычисления CPU) и собственной продукции – работа с трехмерной графикой и т.д. В результате Tegra обладают высочайшей для своего класса процессоров производительностью в 3D. Они на 25-30% быстрее PowerVR, используемых Samsung и Texas Instruments, а также почти в два раза превосходят Adreno, разработку Qualcomm.

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

Qualcomm Snapdragon

Например, Qualcomm не использует референсный дизайн ARM. Инженеры компании серьезно переработали его и назвали Scorpio – именно он лежит в основе чипов Snapdragon. Отчасти дизайн был переработан с целью освоения более тонких техпроцессов, чем предусмотрено стандартным IP ARM. В результате первые Snapdragon выпускались по нормам 45 нм, что обеспечило им более высокие частоты. А новое поколение этих процессоров с заявленными 2.5 ГГц и вовсе может стать самым быстрым среди аналогов на базе ARM Cortex-A9. Также Qualcomm применяет собственное графическое ядро Adreno, созданное на базе разработок, приобретенных у AMD. Так что в некотором роде Snapdragon и Tegra – враги на генетическом уровне.

Samsung Hummingbird

Samsung при создании Hummingbird также пошла по пути оптимизации архитектуры. Корейцы совместно с компанией Intrinsity изменили логику, благодаря чему сократилось количество инструкций необходимых для выполнения некоторых операций. Таким образом удалось выиграть 5-10% производительности. Кроме того, был добавлен динамический кэш второго уровня и мультимедийное расширение ARM NEON. В качестве графического модуля корейцы использовали PowerVR SGX540.

Процессор OMAP 4 производства Texas Instruments

Texas Instruments в новых сериях OMAP на базе архитектуры ARM Cortex-A добавила специальный модуль IVA, ответственный за ускорение обработки изображений. Он позволяет быстрее обрабатывать данные, поступающие с сенсора встроенной камере. Кроме того, он подключен к ISP и содействует ускорению видео. В OMAP также применяется графика PowerVR.


Apple A4

Apple A4 обладает большим кэшем в 512 Кбайт, в нем используется графика PowerVR, а само ARM-ядро построено на базе варианта архитектуры, переработанного Samsung.

Apple A5

Двухъядерный Apple A5, дебютировавший в iPad 2 в начале 2011 года, базируется на архитектуре ARM Cortex-A9, также, как и в предыдущий раз оптимизированной Samsung. По сравнению с А4 новый чип обладает удвоенным объемом кэш-памяти второго уровня — его увеличили до 1 Мбайт. Процессор содержит двухканальный контроллер оперативной памяти, обладает улучшенным видеоблоком. В результате его производительность в некоторых задачах вдвое выше, чем у Apple A4.

Marvell предлагает чипы на базе собственной архитектуры Sheeva, которая при ближайшем рассмотрении оказывается гибридом XScale, некогда купленной у Intel, и ARM. Данные чипы обладают большим по сравнению с аналогами объемом кэш-памяти, снабжены специальным мультимедийным модулем.

Сейчас лицензиаты ARM производят только чипы на базе архитектуры ARM Cortex-A9. При этом, хотя она и позволяет создавать четырехъядерные варианты, NVIDIA, Apple, Texas Instruments и другие пока ограничиваются моделями с одним или двумя ядрами. Кроме того, чипы работают на частоте до 1.5 ГГц. Cortex-A9 позволяет делать двухгигагерцовые процессоры, но опять же производители не стремятся быстро наращивать частоты — ведь пока рынку хватит и двухъядерников на 1.5 ГГц.

По-настоящему многоядерными должны стать процессоры на базе Cortex-A15, но они если и анонсированы, то на бумаге. Их появления в кремнии стоит ожидать в следующем году.

Современные процессоры лицензиатов ARM на базе Cortex-A9:

MMU

Armv8-A поддерживает MMU ARMv8.2 LPA, подробнее про это можно почитать в главе D5 ARM Architecture Reference Manual для Armv8, Armv8-A.

Если говорить коротко, то этот MMU поддерживает страницы по 4KiB (4 уровня таблиц виртуальной памяти), 16KiB (4 уровня) и 64KiB (3 уровня). На любом из промежуточных уровней можно задать блок памяти, таким образом указывая не на следующий уровень таблицы, а на целый кусок памяти такого размера, какой должна «покрывать» таблица следующего уровня. У меня есть давнишняя статья про виртуальную память, там можно почитать про таблицы, уровни трансляции и вот это всё.

Из небольших изменений — от доменов (domain) отказались, зато добавили флажки вроде dirty bit.

В целом, кроме «блоков» вместо промежуточных таблиц трансляции, особых концептуальных изменений не замечено, MMU как MMU.

Главные особенности

Несмотря на то, что аббревиатура ARM расшифровывается как «Advanced RISC Machine» («передовая RISC-машина»), с самого начала это была не совсем типичная RISC-архитектура. С одной стороны, для RISC’а она имела не очень много регистров общего назначения (сейчас с формальной точки зрения у большинства разновидностей архитектуры их 31 штука, однако программисту доступны лишь 16 из них, причём три регистра имеют специальные функции; таким образом, «настоящих» регистров общего назначения с точки зрения программиста всего 13, в то время как целый ряд «настоящих» RISC-процессоров имеют их больше сотни). С другой стороны, уникальной особенностью этой архитектуры являлась возможнось исполнения любой команды при соблюдении заданного условия, отсутствующая не только у других RISC’ов, но и у CISC’ов (первые безусловно выполняемые команды в наборе ARM появились лишь в версии ARMv5). Кроме того, в командах обработки данных в ряде случаев возможно совмещение выполнения основной операции (например, сложения) со сдвигом. Наконец, команды чтения и записи памяти у ARM располагают развитым набором видов адресации, который превосходит по своим возможностям не только RISC’и, но и основную массу CISC-процессоров (среди последних единственными конкурентами в этом плане могли бы служить лишь появившиеся в 1970-х годах миниЭВМ PDP-11 и VAX-11 фирмы DEC, а из достаточно современных архитектур — довольно близкие по основным чертам к PDP-11 16-разрядные микроконтроллеры MSP430 фирмы Texas Instruments).

Однако время показало ошибочность идеи, на которой базировались «настоящие» RISC-архитектуры: достижение высокой производительности через быстрое выполнение простых команд в противовес медленному выполнению сложных команд у CISC-процессоров (предполагалось, что, пока CISC выполнит одну свою сложную команду, RISC успеет выполнить несколько простых и в итоге обгонит CISC по производительности, хотя каждая команда индивидуально выполнит меньший объём действий, чем одна команда CISC’а). На практике оказалось, что даже очень неудачные с архитектурной точки зрения системы команд, например, Intel IA-32, можно выбирать из памяти, декодировать и исполнять чрезвычайно быстро (это наглядно демонстрирует пример самой Intel: несмотря на всю громоздкость и неэффективность её системы команд, именно её процессоры на сегодняшний день по производительности обгоняют почти любые другие кристаллы — правда, ценой чрезвычайно сложной внутренней организации, ставшей возможной лишь благодаря использованию очень совершенной технологии производства). Неудивительно, что в своём развитии архитектура ARM постепенно эволюционировала в сторону CISC-процессоров.

На сегодняшний день у ARMа от RISCа у неё остались только две вещи: невозможность прямой работы с операндами в памяти и название. Некоторые имеющиеся у современных процессоров ARM команды (в частности, деление) недопустимы в «настоящих» RISC’ах в связи с их сложностью и переменным временем выполнения. Внедрение же системы команд Thumb-2 похоронило и другую важнейшую черту RISC-процессоров: одинаковую длину кода команды, призванную упростить её выборку из памяти и декодирование.

Современные 32-разрядные процессоры архитектуры ARM способны обрабатывать 8-, 16- и 32-разрядные целые числа, а процессоры архитектуры ARMv8-A — и 64-разрядные. Возможность обработки вещественных чисел является необязательной и достигается с помощью сопроцессоров (которые, если присутствуют, выполняются на одном кристалле с собственно центральным процессором и с точки зрения прикладного программиста неотличимы от него). Старшие модели способны работать с виртуальной памятью, поскольку имеют необходимое для этого устройство управления памятью (MMU). Более простые изделия не располагают MMU, но в некоторых случаях имеют устройство защиты памяти (MPU), не позволяющее реализовать виртуальную память, но обеспечивающее необходимую поддержку аппаратной защиты одних выполняющихся процессором задач от других.


С этим читают