Cortex-a9

Выбор файла для загрузки

Имея в виду описанное выше, вернемся к нашему примеру с YouTube. Мы рассмотрим и определим, какая именно загрузка относится к моему Honor 8 lite. Мы знаем, что она работает с 64-битным процессором ARM, имеет DPI 320 и работает под управлением Android 7.1.

Легко сопоставить тип процессора и версию Android-arm64 и Android 5.0+.

Если в Вашем случае нет подходящего DPI, то нужно следовать следующему принципу: самый высокий доступный DPI или «nodpi».

Мы рекомендуем перейти к варианту «nodpi», поскольку он содержит все доступные ресурсы для охвата гаммы DPI. Так почему бы не выбрать этот? Из-за размера файла, поскольку он содержит ресурсы для работы любого DPI, это большой файл. Если Вы можете найти файл, который соответствует DPI Вашего устройства, всегда используйте его. В противном случае Вы также можете выбрать тот, который наиболее близок в DPI Вашего устройства.

Первая настоящая сделка

В конце 1991 года ARM впервые получила возможность показать себя в телевизионной рекламе, когда продала лицензию на свою продукцию британской компании GEC-Plessey Semiconductor.

Между тем, Sharp лицензировала компьютер Newton фирмы Apple, что повысило интерес к процессорам ARM. ARM начала переговоры с представителями Sharp в Соединенном Королевстве, Японии и Америке, но окончательный договор был подписан в отеле неподалеку от британского городка Мэйденхэд. Стороны не могли прийти к соглашению на протяжении целого вечера. В конце концов, вошел служащий отеля, чтобы сказать, что конференц-зал забронирован для свадебной церемонии, и все должны покинуть помещение. Тогда Робин позвонил жене и сообщил, что они отправляются домой. Чтобы не давить на его семью, вся делегация Sharp и команда ARM, вместе с семьей Робина, пошли на обед, заключили соглашение, и затем принялись обсуждать американский футбол.

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

Вслед за TI, за лицензией к ARM обратилась компания Samsung, и всего лишь после четырех встреч соглашение было достигнуто. Деловые связи внутри отрасли оказали существенное влияние на повышение уровня восторженной поддержки продукции ARM и принесли компании новые соглашения о лицензировании. Эти сделки также открыли дополнительные возможности для развития RISC-архитектуры. Относительно небольшая, но динамичная культура ARM дала этому направлению преимущество в сроках разработки продукции, что является существенным фактором в такой быстро развивающейся сфере производства. Подтверждением этому явилась лицензия Digital Equipment Corporation (DEC), ставшая той движущей силой, которая привела ARM к созданию версии ARM10 названной StrongARM.

Процессор StrongARM

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

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

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

Режимы процессора

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

Собственно, все наверное слышали про кольца защиты в x86. В ARM-ах есть точно такая же штука, только тут они называются Exception Levels (сокращенно EL). Их может быть от двух до четырех (или шести, смотря как считать). Это режимы работы процессора. Чем выше Exception Level, тем большими привилегиями обладает код исполняющийся в нем.

Все ядра ARMv7 или ARMv8 поддерживают минимум два из них: EL0 и EL1.

На EL0 работают пользовательские программы (например ваш браузер). У кода исполняющегося в EL0 нет никаких привилегий: он (обычно) не может работать с периферией, перенастраивать MMU, запрещать (и разрешать тоже) прерывания, обрабатывать исключительные ситуации. Но браузеру этого всего и не нужно. А если всё-таки нужно, то об этом надо попросить ядро OS.

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

Ещё два EL могут появится если процессорное ядро включает дополнительные расширения: virtualization extensions и security extensions. При чем оба эти расширения опциональны (хотя и присутствуют во всех современных чипах) и процессор может иметь или любое из них, либо оба сразу. Немалая часть ARM Technical Reference Manual посвящена взаимодействию этих расширений.

Так, если если в ядре есть virtualization extensions, то появляется EL2. На этом уровне работает гипервизор. Так же MMU становится двухстадийным и появляется виртуальный контроллер прерываний. Но это совсем другая история которую нужно рассказывать отдельно.

Если в процессоре присутствуют security extensions, то появляется режим EL3 и режимы S-EL0 и S-EL1. Кроме того появляется понятие secure mode (и соответственно non-secure mode) — это режимы процессора ортогональные exception levels. EL3 обладает теми же привилегиями что и EL2, плюс ещё одной особенностью. Только в режиме EL3 код может переключить процессор между secure и non-secure mode. В чем же между ними разница? А разница только в значении одного бита — NS.

Дело в том, что security extensions — это не только расширения для вычислительного ядра. Эти расширения так же затрагивают MMU, контроллер прерываний и контроллер шины. Например, контролер шины проверяет значение этого самого бита NS при доступе к памяти и периферии. Если участок памяти помечен как secure, то доступ к нему можно получить только из secure mode. Это значит, что ни ядро обычной OS, ни гипервизор не смогут прочитать/изменить «безопасную» память. То же самое и с периферией. Если приходит прерывание которое помечено как secure, то это прерывание будет обрабатывать не обычная OS, а trusted OS из режима secure mode.

Получается, будто в одном процессоре живут два мира: normal world и secure world (это термины из официальной документации, если что). При чем secure world может вмешиваться в дела normal world, но не наоборот. В режиме EL3 работает secure monitor, который служит эдаким Хароном — позволяет попасть из одного мира в другой.

Как вы уже наверное догадались, режимы S-EL0 и S-EL1 — это аналоги EL0 и EL1 из normal world. В S-EL1 бегает ядро «безопасной» OS, а в S-EL0 — приложения (например та же виртуальная SIM-карта). На картинке выше используется терминология из ARMv7, но понять что к чему довольно легко (я надеюсь).

Сверхбольшие интегральные схемы

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

Общеизвестно, что интернет был придуман в Агентстве по перспективным оборонным научно-исследовательским разработкам США (DARPA), однако это не единственный проект DARPA, оказавший мощное влияние на всю индустрию

VLSI Project как раз из таких разработок: его относительно малая известность просто несоизмерима с его важностью. VLSI расшифровывается как Very-large-scale integration — сверхбольшая интегральная схема, или СБИС

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

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

Профессор Калифорнийского технологического института Карвер Мид и программист из лаборатории Xerox PARC Лин Конвей предложили создать систему автоматизированного проектирования (САПР), которая бы помогала делать процессоры фактически любой сложности. На тот момент для работы с такой программой понадобился бы суперкомпьютер, так что DARPA пришлось профинансировать не только создание САПР, но и все вокруг: разработку рабочих станций и даже операционной системы. Позднее из этих проектов вырастут фирмы Sun Microsystems и Silicon Graphics, а в качестве ОС будет создана новая ветвь UNIX — Berkley Distribution Software (BSD).

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

А память-то, память?

  • контроллер статической памяти, SRAM, часто это внутренняя память SoC;
  • контроллер динамической памяти, например, DDR3;
  • универсальный контроллер доступа к параллельной памяти, может использоваться для SRAM, NOR Flash.
  • Есть зоны с разными правами доступа, числом от 3.
  • Одну зону можно настроить как Non-Secure, там будет работать Linux или другая гостевая ОС. Это самая большая часть памяти.
  • Другую зону можно настроить как Secure, там будут данные Secure OS. Эта зона значительно меньше по размеру.
  • Третью зону настраиваем с доступом как Secure, так и Non-Secure. Она используется для обмена большими объемами данных между Linux и Secure OS, это всего несколько Мб.
  • Более гибкие настройки позволят сделать области Secure Write/Non-Secure Read и, наоборот, для однонаправленного обмена данными.

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

Несмотря на то, что аббревиатура 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), не позволяющее реализовать виртуальную память, но обеспечивающее необходимую поддержку аппаратной защиты одних выполняющихся процессором задач от других.

ОпределенияDefinitions

С внедрением поддержки 64-разрядной архитектуры компания ARM определила ряд терминов:With the introduction of 64-bit support, ARM has defined several terms:

  • AArch32 — устаревшая 32-разрядная архитектура набора инструкций (ISA), определяемая компанией ARM, включая выполнение в режиме Thumb.AArch32 – the legacy 32-bit instruction set architecture (ISA) defined by ARM, including Thumb mode execution.
  • AArch64 — новая 64-разрядная архитектура набора инструкций (ISA), определяемая компанией ARM.AArch64 – the new 64-bit instruction set architecture (ISA) defined by ARM.
  • ARMv7 — спецификация 7-го поколения оборудования ARM, которое поддерживает только архитектуру AArch32.ARMv7 – the specification of the «7th generation» ARM hardware, which only includes support for AArch32. Это первая версия оборудования ARM, поддерживаемая Windows для ARM.This version of the ARM hardware is the first version Windows for ARM supported.
  • ARMv8 — спецификация 8-го поколения оборудования ARM, которое поддерживает архитектуры AArch32 и AArch64.ARMv8 – the specification of the «8th generation» ARM hardware, which includes support for both AArch32 and AArch64.

В Windows также используются следующие термины:Windows also uses these terms:

  • ARM — это 32-разрядная архитектура ARM (AArch32), которая иногда называется WoA (Windows на ARM).ARM – refers to the 32-bit ARM architecture (AArch32), sometimes referred to as WoA (Windows on ARM).
  • ARM32 — та же архитектура, что и описываемая выше ARM. Используется в этом документе для большей наглядности.ARM32 – same as ARM, above; used in this document for clarity.
  • ARM64 — 64-разрядная архитектура ARM (AArch64).ARM64 – refers to the 64-bit ARM architecture (AArch64). WoA64 не существует.There’s no such thing as WoA64.

Наконец, в отношении типов данных компания ARM использует следующие определения:Finally, when referring to data types, the following definitions from ARM are referenced:

  • Короткий вектор — тип данных, напрямую представляемый в архитектуре с одним потоком команд и многими потоками данных (SIMD). Вектор элементов размером 8 или 16 байтов.Short-Vector – A data type directly representable in SIMD, a vector of 8 bytes or 16 bytes worth of elements. Размер выравнивается с размером вектора (8 или 16 байтов), а каждый элемент может иметь размер 1, 2, 4 или 8 байтов.It’s aligned to its size, either 8 bytes or 16 bytes, where each element can be 1, 2, 4, or 8 bytes.
  • HFA (однородный агрегат с плавающей запятой)  — тип данных, содержащий от 2 до 4 идентичных элементов с плавающей запятой типа float или double.HFA (Homogeneous Floating-point Aggregate) – A data type with 2 to 4 identical floating-point members, either floats or doubles.
  • HVA (однородный агрегат коротких векторов)  — тип данных, содержащий от 2 до 4 идентичных элементов типа «короткий вектор».HVA (Homogeneous Short-Vector Aggregate) – A data type with 2 to 4 identical Short-Vector members.

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

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

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

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

Братство «проца»

То, что в Olivetti отказались от идеи развивать собственную компьютерную платформу, вовсе не означало погибель для ARM. Хаузер изыскал способ выделить процессорный бизнес в отдельную компанию и нашел двух заинтересованных в этом партнеров. Объединенное предприятие назвали так же, как и архитектуру процессора, — ARM, но расшифровку сменили с Acorn RISC Machines на Advanced RISC Machines.

Кому в тот момент могло понадобиться партнерство с разработчиком процессоров RISC? Очевидно, фирме, выпускающей устройства на их основе. Ей стала Apple: там в 1990 году как раз проектировали будущий наладонник Newton, и процессор ARM отлично годился для него благодаря своей экономичности по отношению к заряду батареи.

Штаб-квартира ARM в Кембридже

В качестве третьего партнера была выбрана фирма VLSI Technologies. Это прямая наследница VLSI Project, которая занималась проектированием и производством интегральных микросхем

Для будущего совместного предприятия было важно то, что VLSI могла предоставить собственную систему автоматизированного проектирования

Самой же VLSI был нужен новый заказчик процессоров. Это в чистом виде воплощение идеи Конвея и Мида, когда разработчик и производитель СБИС работают раздельно (а в данном случае даже находятся по разные стороны Атлантического океана). Наученный неудачей Acorn, Хаузер внес еще одну коррективу: вместо того, чтобы выпускать сам продукт, он предложил заниматься исключительно проектированием процессоров и продавать интеллектуальную собственность — то есть дизайны микросхем и лицензии на их производство.

Если Intel знаменита тем, что имеет десятки заводов по всему миру, то у ARM нет ни одного. Это не помешало сегодняшней ARM не только встать в один ряд с Intel и AMD, но и потихоньку превратиться в серьезную угрозу для них.

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

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

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

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

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

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

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

Двенадцать инженеров и паб

В свое время Герман Хаузер также создал компанию Cambridge Processor Unit (CPU). Робин Сэксби (Robin Saxby) из Motorola поставлял чипы Герману для CPU, и у них уже тогда наладились хорошие отношения. После собеседования Робин был приглашен на должность генерального директора, но прежде чем согласиться, он попросил организовать ему встречу с «командой двенадцати». Робин вспоминает: «Следовало принять ключевое решение: смогу ли я расширить команду, или же не создавать дополнительных затрат, нанимая кого-нибудь со стороны. После этой встречи я выбрал последнее». Члены команды вспоминают, что Робин хотел встретиться с ними на нейтральной территории, поэтому они выбрали паб неподалеку. Все пришли вовремя, но Робин пришел за 10 минут до назначенного времени. Робин был известен команде как «наемный убийца», который привел в порядок бизнес ES2, поэтому его приветствие «Вы опоздали на четыре минуты, еще одна минута – и я бы ушел» оставило незабываемое впечатление.

Сэр Робин Сэксби
Оцените статью:
Оставить комментарий