ARM архитектура - ARM architecture

РУКА
Arm логотип 2017.svg
ДизайнерArm Holdings
Биты32-битный, 64-битный
Введено1985; 35 лет назад (1985)
дизайнRISC
Типрегистр -Регистр
РазветвлениеКод состояния, сравните и разделите
ОткрытоПроприетарный
ARM 64/32-бит
Введено2011; 9 лет назад (2011)
ВерсияARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A
КодированиеAArch64 / A64 и AArch32 / A32 использует 32-битные инструкции, T32 (Thumb-2) использует смешанные 16- и 32-битные инструкции; ARMv7 пользовательское пространство совместимость.[1]
Порядок байтовБи (по умолчанию мало)
РасширенияSVE; СВЭ2; ТМЕ; Все обязательно: Большой палец-2, Неон, VFPv4-D16, VFPv4 Устарело: Джазель
Регистры
Общее назначение31 × 64-битный целочисленный регистр[1]
Плавающая точка32 × 128 бит регистры[1] для скалярных 32- и 64-битных FP или SIMD FP или целое число; или криптография
ARM 32-бит (Cortex)
ВерсияARMv8-R, ARMv8-M, ARMv8.1-M, ​​ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M
Кодирование32-битные, кроме расширений Thumb-2, используют смешанные 16- и 32-битные инструкции.
Порядок байтовБи (по умолчанию немного); Cortex-M фиксирован и не может меняться на лету.
РасширенияБольшой палец-2, Неон, Джазель, DSP, насыщенный, FPv4-SP, FPv5, гелий
Регистры
Общее назначение15 × 32-битных целочисленных регистров, включая R14 (регистр связи), но не R15 (ПК)
Плавающая точкаДо 32 × 64-битных регистров,[2] SIMD / с плавающей точкой (необязательно)
ARM 32-разрядная (устаревшая)
ВерсияARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
Кодирование32-битный, кроме расширения Thumb, использует смешанные 16- и 32-битные инструкции.
Порядок байтовБи (по умолчанию немного) в ARMv3 и выше
РасширенияБольшой палец, Джазель
Регистры
Общее назначение15 × 32-битных целочисленных регистров, включая R14 (регистр связи), но не R15 (ПК, 26-битная адресация в старых версиях)

РУКА (стилизовано в нижнем регистре как рука, ранее сокращение от Усовершенствованная машина RISC и изначально Желудь RISC машина) - это семья вычисление с сокращенным набором команд (RISC) архитектуры для компьютерные процессоры, настроенный для различных сред. Arm Holdings разрабатывает архитектуру и передает ее по лицензии другим компаниям, которые разрабатывают свои собственные продукты, реализующие одну из этих архитектур ‍, включая системы на кристаллах (SoC) и системы на модулях (SoM), которые включают в себя память, интерфейсы, радио и т.д. ядра которые реализуют это Набор инструкций и предоставляет лицензии на эти проекты ряду компаний, которые включают эти основные проекты в свои собственные продукты.

Процессоры с архитектурой RISC обычно требуют меньше транзисторы чем те, у кого сложные вычисления с набором команд (CISC) архитектура (например, x86 процессоры найдены в большинстве персональные компьютеры ), что улучшает стоимость, энергопотребление и рассеивание тепла. Эти характеристики желательны для легких портативных устройств с батарейным питанием‍ — включая смартфоны, ноутбуки и планшетные компьютеры, и другие встроенные системы[3][4][5]‍ - хотя и в некоторой степени полезен для серверы, и для настольные компьютеры, где впервые были использованы чипы ARM. Теперь, поскольку ARM является энергоэффективным решением, оно используется во всех типах устройств, вплоть до самых быстрых. суперкомпьютер.[6] Несколько других суперкомпьютеров[7] однако более энергоэффективны, и ни один не обходится без ускорителей (гетерогенные вычисления ), чаще всего графические процессоры Nvidia.

Arm Holdings периодически выпускает обновления архитектуры. Версии архитектуры ARMv3 - поддержка ARMv7 32-битный адресное пространство (чипы до ARMv3, сделанные до создания Arm Holdings, используемые в Желудь Архимеда, имел 26-битное адресное пространство) и 32-битную арифметику; большинство архитектур имеют 32-битные инструкции фиксированной длины. Версия Thumb поддерживает набор инструкций переменной длины, который предоставляет как 32-, так и 16-битные инструкции для улучшения плотность кода. Некоторые старые ядра также могут обеспечивать аппаратное выполнение Байт-коды Java; и более новые имеют одну инструкцию для JavaScript. Выпущенная в 2011 году архитектура ARMv8-A добавила поддержку 64-битный адресное пространство и 64-битная арифметика с новым 32-битным набором инструкций фиксированной длины.[8] Некоторые недавние процессоры ARM имеют одновременная многопоточность (SMT), например, ARM Neoverse E1 может выполнять два потока одновременно для повышения совокупной производительности. ARM Cortex-A65AE для автомобильных приложений также является многопоточным процессором и имеет Dual Core Lock-Step для отказоустойчивой конструкции (поддерживающие Уровень целостности автомобильной безопасности D, высший уровень). Neoverse N1 разработан для «всего 8 ядер» или «конструкций, которые масштабируются от 64 до 128 ядер N1 в одной когерентной системе».[9]

Произведено более 130 миллиардов процессоров ARM,[10][11][12] по состоянию на 2019 год, ARM является наиболее широко используемым архитектура набора команд (ISA) и ISA произведены в наибольшем количестве.[13][4][14][15][16] В настоящее время широко используемый Cortex ядра, старые "классические" ядра и специализированные SecurCore Для каждого из них доступны варианты ядер, которые включают или исключают дополнительные возможности.

История

Микропроцессорная система на микросхеме
ARM1 2-й процессор для BBC Micro

Британский производитель компьютеров Желудь Компьютеры впервые разработал архитектуру Acorn RISC Machine (ARM)[17][18] в 1980-х годах для использования в своих персональных компьютерах. Его первыми продуктами на базе ARM были сопроцессорные модули для процессора 6502B. BBC Micro серия компьютеров. После успешной разработки компьютера BBC Micro компания Acorn Computers решила, как отказаться от относительно простых Технология MOS 6502 процессор для работы на деловых рынках, подобных тому, на котором вскоре доминировали IBM PC, запущен в 1981 году. Компьютер для бизнеса Acorn (ABC) план требовал, чтобы ряд вторые процессоры работать с платформой BBC Micro, но такие процессоры, как Motorola 68000 и National Semiconductor 32016 считались неподходящими, а 6502 не был достаточно мощным для графический пользовательский интерфейс.[19]

Согласно с Софи Уилсон, все процессоры, протестированные в то время, работали примерно одинаково с пропускной способностью около 4 Мбит / с.[20]

После тестирования всех доступных процессоров и обнаружения их недостатков Acorn решил, что ему нужна новая архитектура. Вдохновленный статьями из Berkeley RISC В Acorn задумывались о разработке собственного процессора.[21] Посещение Центр западного дизайна в Феникс, где 6502 обновлялась, фактически, компанией из одного человека, показали инженеры Acorn. Стив Фербер и Софи Уилсон им не потребовались огромные ресурсы и современные исследования и разработки объекты.[22]

Уилсон разработал набор инструкций, написав симуляцию процессора на BBC BASIC который транслировался на BBC Micro с 6502 второй процессор.[23][24] Это убедило инженеров Acorn, что они на правильном пути. Уилсон обратился к генеральному директору Acorn, Герман Хаузер и запросил дополнительные ресурсы. Хаузер дал свое согласие и собрал небольшую команду для аппаратной реализации модели Уилсона.[нужна цитата ]

Acorn RISC-машина: ARM2

Официальный Желудь RISC машина проект стартовал в октябре 1983 года. Они выбрали Технология СБИС как кремниевый партнер, поскольку они были источником ПЗУ и пользовательских чипов для Acorn. Уилсон и Фурбер руководили разработкой. Они реализовали его с принципами эффективности, аналогичными 6502.[25] Ключевой целью дизайна было достижение обработки ввода-вывода (прерывания) с малой задержкой, как у 6502. Архитектура доступа к памяти 6502 позволила разработчикам производить быстрые машины без больших затрат. прямой доступ к памяти (DMA) оборудование. Первые образцы кремния ARM работали нормально, когда они были впервые получены и испытаны 26 апреля 1985 года.[3]

Первое приложение ARM было вторым процессором для BBC Micro, где оно помогло в разработке программного обеспечения для моделирования, завершить разработку поддерживающих микросхем (VIDC, IOC, MEMC) и ускорило Программное обеспечение САПР используется в разработке ARM2. Впоследствии Уилсон переписал BBC BASIC на ассемблере ARM. Глубокие знания, полученные при разработке набора инструкций, позволили сделать код очень плотным, что сделало ARM BBC BASIC чрезвычайно хорошим тестом для любого эмулятора ARM. Первоначальная цель создания компьютера на базе ARM была достигнута в 1987 году с выпуском Желудь Архимеда.[26] В 1992 году Желудь еще раз выиграл Премия Королевы в области технологий для ARM.

ARM2 отличался 32-битный шина данных, 26 бит адресное пространство и 27 32-битных регистры. Восемь бит из счетчик команд регистр был доступен для других целей; шесть верхних битов (доступных из-за 26-битного адресного пространства) служили флагами состояния, а два нижних бита (доступны, потому что счетчик программ всегда выровненный по словам ) использовались для настройки режимов. Адресная шина в ARM6 была расширена до 32 бит, но программный код по-прежнему должен был находиться в пределах первых 64 разрядов.МБ памяти в 26-битном режиме совместимости из-за зарезервированных битов для флагов состояния.[27] ARM2 имел количество транзисторов всего 30 000, по сравнению с моделью Motorola 68000, выпущенной на шесть лет раньше, с примерно 40 000.[28] Большая часть этой простоты возникла из-за отсутствия микрокод (что составляет от четверти до одной трети от 68000) и (как и большинство процессоров дня), не включая тайник. Эта простота обеспечивает низкое энергопотребление, но более высокую производительность, чем у Intel 80286. Преемник, ARM3, был произведен с 4КБ кеш, что еще больше повысило производительность.[29]

Advanced RISC Machines Ltd. - ARM6

Умри микропроцессора ARM610

В конце 1980-х гг. Компьютер Apple и Технология СБИС начал работать с Acorn над новыми версиями ядра ARM. В 1990 году Acorn выделил команду дизайнеров в новую компанию под названием Advanced RISC Machines Ltd.[30][31][32] которая стала ARM Ltd, когда ее материнская компания, Arm Holdings plc, плавал на Лондонская фондовая биржа и NASDAQ в 1998 г.[33] Новая разработка Apple-ARM в конечном итоге превратилась в ARM6, впервые выпущенную в начале 1992 года. Apple использовала ARM610 на базе ARM6 в качестве основы для своих Яблочный Ньютон КПК.

Ранние лицензиаты

В 1994 году Acorn использовала ARM610 в качестве основного центральное процессорное устройство (CPU) в их RiscPC компьютеры. DEC лицензировал архитектуру ARMv4 и произвел Сильная рука.[34] В 233МГц, этот процессор потреблял всего один ватт (более новые версии потребляют гораздо меньше). Позже эта работа была передана Intel в рамках урегулирования судебного иска, и Intel воспользовалась возможностью, чтобы дополнить свои i960 линия с StrongARM. Позже Intel разработала собственную высокопроизводительную реализацию под названием XScale, которую с тех пор продала компании Марвелл. Количество транзисторов в ядре ARM оставалось практически неизменным на протяжении всех этих изменений; ARM2 имел 30 000 транзисторов,[35] в то время как ARM6 выросла только до 35 000.[36]

Рыночная доля

В 2005 году около 98% всех проданных мобильных телефонов использовали хотя бы один процессор ARM.[37] В 2010 году производители чипов на базе архитектур ARM сообщили о поставках 6,1 млрд. ARM-процессоры, что составляет 95% смартфоны, 35% цифровые телевизоры и телеприставки и 10% мобильные компьютеры. В 2011 году 32-разрядная архитектура ARM была наиболее широко используемой архитектурой в мобильных устройствах и самой популярной 32-разрядной архитектурой во встроенных системах.[38] В 2013 году было произведено 10 млрд.[39] и «чипы на базе ARM используются почти в 60 процентах мобильных устройств в мире».[40]

Лицензирование

Умри из STM32F103VGT6 ARM Cortex-M3 микроконтроллер с 1МБ флэш-память от STMicroelectronics

Основная лицензия

Основной бизнес Arm Holdings - продажа IP ядра, которые лицензиаты используют для создания микроконтроллеры (MCU), Процессоры, и системы на кристаллах на основе этих ядер. В производитель оригинального дизайна объединяет ядро ​​ARM с другими частями для создания полного устройства, обычно такого, которое может быть встроено в существующий заводы по производству полупроводников (фабрики) по низкой цене и при этом обеспечивают высокую производительность. Наиболее успешной была реализация ARM7TDMI с сотнями миллионов проданных. Атмель был центром проектирования встраиваемых систем на базе ARM7TDMI.

Архитектуры ARM, используемые в смартфонах, КПК и др. мобильные устройства Диапазон от ARMv5 до ARMv7-A, используемых в устройствах низкого и среднего уровня, до ARMv8-A, используемых в современных устройствах высокого класса.

В 2009 году некоторые производители представили нетбуки на базе процессоров с архитектурой ARM, что составляет прямую конкуренцию нетбукам на базе процессоров. Intel Atom.[41]

Arm Holdings предлагает различные условия лицензирования, различающиеся по стоимости и результатам. Arm Holdings предоставляет всем лицензиатам интегрируемое описание оборудования ядра ARM, а также полный набор инструментов для разработки программного обеспечения (компилятор, отладчик, комплект для разработки программного обеспечения ) и право продавать произведенные кремний содержащий процессор ARM.

Пакеты SoC, объединяющие основные конструкции ARM, включают первые три поколения Nvidia Tegra, семейство Quatro от CSR plc, Nova и NovaThor от ST-Ericsson, MCU Precision32 от Silicon Labs, продукты OMAP от Texas Instruments, Hummingbird от Samsung и Exynos продукты, Apple A4, A5, и A5X, и NXP с i.MX.

Fabless лицензиаты, желающие интегрировать ядро ​​ARM в свою собственную микросхему, обычно заинтересованы только в приобретении готовой к производству проверенной ядро интеллектуальной собственности полупроводников. Для этих клиентов Arm Holdings предлагает список соединений ворот описание выбранного ядра ARM, а также абстрактная имитационная модель и тестовые программы для облегчения интеграции и проверки проекта. Более амбициозные клиенты, включая производителей интегрированных устройств (IDM) и операторов литейных производств, предпочитают приобретать IP-адрес процессора в синтезируемый RTL (Verilog ) форма. С помощью синтезируемого RTL заказчик имеет возможность выполнять оптимизацию и расширения на архитектурном уровне. Это позволяет разработчику достигать экзотических целей дизайна, которые иначе были бы невозможны с неизмененным списком соединений (высокая тактовая частота, очень низкое энергопотребление, расширения набора команд и т. д.). Хотя Arm Holdings не предоставляет лицензиату права перепродавать саму архитектуру ARM, лицензиаты могут свободно продавать произведенные продукты, такие как микросхемы, оценочные платы и полные системы. Литейные предприятия может быть частным случаем; Им не только разрешено продавать готовые кремниевые кристаллы, содержащие ядра ARM, они, как правило, имеют право повторно производить ядра ARM для других клиентов.

Arm Holdings оценивает свою IP на основе предполагаемой ценности. Ядра ARM с меньшей производительностью обычно имеют меньшую стоимость лицензии, чем ядра с более высокой производительностью. С точки зрения реализации, синтезируемое ядро ​​стоит больше, чем ядро ​​жесткого макроса (черного ящика). Что еще более усложняет вопрос цены, то литейное предприятие, имеющее лицензию ARM, например Samsung или Fujitsu, может предложить потрясающим клиентам снижение затрат на лицензирование. В обмен на приобретение ядра ARM через собственные проектные услуги литейного завода, заказчик может уменьшить или отменить уплату авансового лицензионного сбора ARM.

По сравнению со специализированными заводами по производству полупроводников (такими как TSMC и UMC ) без собственных дизайнерских услуг Fujitsu / Samsung взимает в два-три раза больше за каждую произведенную вафля.[нужна цитата ] Для малых и средних объемов приложений литейное предприятие по проектированию предлагает более низкие общие цены (за счет субсидирования лицензионных сборов). Для деталей, производимых массово и массово, долгосрочное снижение затрат, достижимое за счет более низких цен на пластины, снижает влияние затрат ARM на NRE (непериодическое проектирование), что делает специализированное литейное производство лучшим выбором.

Компании, разработавшие микросхемы с ядрами, разработанными Arm Holdings, включают: Amazon.com с Аннапурна лаборатории филиал,[42] Аналоговые устройства, яблоко, AppliedMicro (сейчас же: Технологические решения MACOM[43]), Атмель, Broadcom, Cavium, Cypress Semiconductor, Freescale Semiconductor (сейчас же Полупроводники NXP ), Huawei, Intel,[сомнительный ] Максим Интегрированный, Nvidia, NXP, Qualcomm, Renesas, Samsung Electronics, СТ Микроэлектроника, Инструменты Техаса и Xilinx.

Создан на основе лицензии ARM Cortex Technology

В феврале 2016 года ARM объявила о лицензии Built on ARM Cortex Technology, которую часто сокращают до лицензии Built on Cortex (BoC). Эта лицензия позволяет компаниям сотрудничать с ARM и вносить изменения в конструкции ARM Cortex. Эти изменения дизайна не будут переданы другим компаниям. Эти полу-нестандартные основные конструкции также имеют свободу бренда, например Kryo 280.

Компании, которые в настоящее время имеют лицензию на технологию Built on ARM Cortex, включают: Qualcomm.[44]

Архитектурная лицензия

Компании также могут получить ARM архитектурная лицензия для разработки собственных ядер ЦП с использованием наборов инструкций ARM. Эти ядра должны полностью соответствовать архитектуре ARM. Компании, разработавшие ядра, реализующие архитектуру ARM, включают Apple, AppliedMicro (сейчас: Ampere Computing ), Broadcom, Cavium (сейчас: Marvell), Корпорация цифрового оборудования, Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsu и NUVIA Inc.

ARM Гибкий доступ

16 июля 2019 года ARM объявила о гибком доступе к ARM. ARM Flexible Access обеспечивает неограниченный доступ к включенной ARM интеллектуальная собственность (IP) для развития. Плата за лицензию на продукт взимается после того, как заказчик получает распечатку или создание прототипа.[45][46]

75% последних IP-адресов ARM за последние два года включены в ARM Flexible Access. По состоянию на октябрь 2019 г .:

  • Процессоры: Cortex-A5, Cortex-A7, Cortex-A32, Cortex-A34, Cortex-A35, Cortex-A53, Cortex-R5, Cortex-R8, Cortex-R52, Cortex-M0, Кортекс-М0 +, Cortex-M3, Кортекс-М4, Cortex-M7, Кортекс-М23, Cortex-M33
  • Графические процессоры: Mali-G52, Mali-G31. Включает комплекты для разработки драйверов Mali (DDK).
  • Межсоединение: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
  • Системные контроллеры: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone Memory Wrapper, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, интерфейс памяти BP140
  • Безопасность IP: CryptoCell-312, CryptoCell-712, TrustZone True Random Number Generator
  • Периферийные контроллеры: PL011 UART, PL022 SPI, PL031 RTC
  • Отладка и трассировка: CoreSight SoC-400, CoreSight SDC-600, CoreSight STM-500, макроячейка CoreSight System Trace, контроллер памяти CoreSight Trace
  • Дизайнерские комплекты: Corstone-101, Corstone-201
  • Физический IP: Artisan PIK для Cortex-M33 TSMC 22ULL, включая компиляторы памяти, логические библиотеки, GPIO и документацию
  • Инструменты и материалы: Socrates IP ToolingARM Design Studio, модели виртуальных систем
  • Поддержка: стандартная техническая поддержка ARM, онлайн-обучение ARM, обновления по техническому обслуживанию, кредиты на обучение на месте и проверки конструкции

Ядра

АрхитектураЯдро
разрядность
ЯдраПрофильRefe-
Rences
Arm HoldingsСторонний
ARMv1
ARM1
Классический
[а 1]
ARMv2
32
ARM2, ARM250, ARM3Янтарь, STORM Open Soft Core[47]
Классический
[а 1]
ARMv3
32
ARM6, ARM7
Классический
[а 2]
ARMv4
32
ARM8Сильная рука, FA526, Ядро процессора с открытым исходным кодом ZAP
Классический
[а 2]

[48]

ARMv4T
32
ARM7TDMI, ARM9TDMI, SecurCore SC100
Классический
[а 2]
ARMv5TE
32
ARM7EJ, ARM9E, ARM10EXScale, FA626TE, Feroceon, PJ1 / Mohawk
Классический
ARMv6
32
ARM11
Классический
ARMv6-M
32
ARM Cortex-M0, ARM Cortex-M0 +, ARM Cortex-M1, SecurCore SC000
АРМв7-М
32
ARM Cortex-M3, SecurCore SC300Яблоко M7
Микроконтроллер
ARMv7E-M
32
ARM Cortex-M4, ARM Cortex-M7
Микроконтроллер
ARMv8-M
32
ARM Cortex-M23,[49] ARM Cortex-M33[50]
Микроконтроллер
ARMv7-R
32
ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7, ARM Cortex-R8
ARMv8-R
32
ARM Cortex-R52
В реальном времени
64
ARM Cortex-R82
В реальном времени
ARMv7-A
32
ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17Qualcomm Скорпион /Крайт, PJ4 / Sheeva, Яблоко Swift
ARMv8-A
32
ARM Cortex-A32[55]
заявка
64 /32
ARM Cortex-A35,[56] ARM Cortex-A53, ARM Cortex-A57,[57] ARM Cortex-A72,[58] ARM Cortex-A73[59]X-Gene, Nvidia Denver 1/2, Cavium ThunderX, AMD K12, Яблоко Циклон /Тайфун /Твистер /Ураган / Зефир, Qualcomm Крио, Samsung M1 / ​​M2 («Мангуст») / M3 («Сурикат»)
заявка
ARM Cortex-A34[66]
заявка
ARMv8.1-A
64/32
TBACavium ThunderX2
заявка
[67]
ARMv8.2-А
64/32
ARM Cortex-A55,[68] ARM Cortex-A75,[69] ARM Cortex-A76,[70] ARM Cortex-A77, ARM Cortex-A78, ARM Cortex-X1, ARM Neoverse N1Nvidia Carmel, Samsung M4 («Гепард»), Fujitsu A64FX (ARMv8 SVE 512 бит)
заявка
64
ARM Cortex-A65, ARM Neoverse E1 с участием одновременная многопоточность (SMT), ARM Cortex-A65AE[74] (также имеет, например, точечный продукт ARMv8.4; предназначен для критически важных задач безопасности, таких как продвинутые системы помощи водителю (ADAS))яблоко Муссон / Мистраль / A11 (Сентябрь 2017 г.)
заявка
ARMv8.3-А
64/32
TBA
заявка
64
TBAяблоко Vortex / Tempest / A12

Marvell ThunderX3 (v8.3 +)[75]

заявка
ARMv8.4-А
64/32
TBA
заявка
64
TBAяблоко Молния / Гром / A13
заявка

ARMv8.5-А
64/32
TBA
заявка

ARMv8.6-A
64/32
TBAЯблоко A14 2xПожарная буря + 4xЛедяная буря

Яблоко M1 4xПожарная буря + 4xЛедяная буря

заявка
  1. ^ а б Хотя большинство пути к данным и Регистры процессора в ранних ARM процессоры были 32-битными, адресуемая память была ограничена 26 битами; а старшие биты используются для флагов состояния в регистре счетчика программ.
  2. ^ а б c ARMv3 включает режим совместимости для поддержки 26-битные адреса более ранних версий архитектуры. Этот режим совместимости необязательный в ARMv4 и полностью удален в ARMv5.

Arm Holdings предоставляет список поставщиков, которые реализуют ядра ARM в своей конструкции (стандартные продукты для конкретных приложений (ASSP), микропроцессоры и микроконтроллеры).[76]

Примеры применения ядер ARM

Tronsmart MK908, а Rockchip - четырехъядерный Android «мини-ПК» с картой microSD рядом с ним для сравнения размеров

Ядра ARM используются в ряде продуктов, в частности КПК и смартфоны. Немного вычисление примеры Microsoft с Surface первого поколения, Поверхность 2 и Карманные ПК устройства (следующие 2002 ), яблоко с iPad и Asus с Eee Pad трансформер планшетные компьютеры, и несколько Chromebook ноутбуки. Другие включают Apple iPhone смартфоны и iPod портативные медиаплееры, Canon PowerShot цифровые фотоаппараты, Nintendo Switch гибрид и 3DS портативные игровые консоли, и TomTom по очереди системы навигации.

В 2005 году Arm Holdings участвовала в разработке Манчестерский университет компьютер Спинакер, который использовал ядра ARM для моделирования человеческий мозг.[77]

Чипы ARM также используются в Raspberry Pi, БигльДоска, BeagleBone, PandaBoard и другие одноплатные компьютеры, потому что они очень маленькие, недорогие и потребляют очень мало энергии.

32-битная архитектура

ARMv7 использовался для питания более старых версий популярных Raspberry Pi одноплатные компьютеры, похожие на Raspberry Pi 2 2015 года выпуска.
ARMv7 также используется для питания CuBox семейство одноплатных компьютеров.

32-битная архитектура ARM, например ARMv7-A (реализация AArch32; см. раздел о ARMv8 подробнее), была наиболее широко используемой архитектурой в мобильных устройствах по состоянию на 2011 год..[38]

С 1995 г. Справочное руководство по архитектуре ARM[78] был основным источником документации по архитектуре процессора ARM и набору инструкций, в котором отделялись интерфейсы, которые должны поддерживать все процессоры ARM (например, семантика инструкций), от деталей реализации, которые могут отличаться. Архитектура со временем развивалась, и седьмая версия архитектуры ARMv7 определяет три архитектурных «профиля»:

  • A-профиль, профиль «Приложение», реализованный 32-битными ядрами в Cortex-A серии и некоторыми не-ARM ядрами
  • R-профиль, профиль «реального времени», реализованный ядрами в Cortex-R серии
  • M-профиль, профиль "Микроконтроллер", реализованный большинством ядер в Кортекс-М серии

Хотя профили архитектуры были сначала определены для ARMv7, ARM впоследствии определила архитектуру ARMv6-M (используемую Cortex M0 /M0 + /M1 ) как подмножество профиля ARMv7-M с меньшим количеством инструкций.

Режимы ЦП

За исключением M-профиля, 32-разрядная архитектура ARM определяет несколько режимов ЦП в зависимости от реализованных функций архитектуры. В любой момент времени ЦП может находиться только в одном режиме, но он может переключать режимы из-за внешних событий (прерываний) или программно.[79]

  • Пользовательский режим: Единственный непривилегированный режим.
  • Режим FIQ: Привилегированный режим, который вводится всякий раз, когда процессор принимает быстрый запрос прерывания.
  • Режим IRQ: Привилегированный режим, который включается всякий раз, когда процессор принимает прерывание.
  • Режим супервизора (svc): Привилегированный режим, входящий каждый раз при перезагрузке ЦП или при выполнении инструкции SVC.
  • Режим прерывания: Привилегированный режим, который вводится всякий раз, когда возникает исключение прерывания предварительной выборки или прерывания данных.
  • Неопределенный режим: Привилегированный режим, который вводится всякий раз, когда возникает неопределенное исключение инструкции.
  • Системный режим (ARMv4 и выше): Единственный привилегированный режим, в который не входит исключение. В него можно войти только путем выполнения инструкции, которая явно записывает в биты режима регистра текущего состояния программы (CPSR) из другого привилегированного режима (не из пользовательского режима).
  • Режим мониторинга (ARMv6 и ARMv7 Security Extensions, ARMv8 EL3): Представлен режим монитора для поддержки расширения TrustZone в ядрах ARM.
  • Hyp-режим (расширения виртуализации ARMv7, ARMv8 EL2): Режим гипервизора, поддерживающий Требования к виртуализации Попека и Голдберга для небезопасной работы ЦП.[80][81]
  • Режим потока (ARMv6-M, ARMv7-M, ARMv8-M): Режим, который может быть либо привилегированным, либо непривилегированным. Использование указателя основного стека (MSP) или указателя стека процесса (PSP) также можно указать в регистре CONTROL с привилегированным доступом. Этот режим разработан для пользовательских задач в среде ОСРВ, но обычно он используется для создания суперцикла на «голом железе».
  • Режим обработчика (ARMv6-M, ARMv7-M, ARMv8-M): Режим, предназначенный для обработки исключений (за исключением сброса, который обрабатывается в режиме потока). Режим обработчика всегда использует MSP и работает на привилегированном уровне.

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

Первоначальная (и последующая) реализация ARM была встроена без микрокод, как и более простой 8 бит 6502 процессор, используемый в предыдущих микрокомпьютерах Acorn.

32-разрядная архитектура ARM (и по большей части 64-разрядная архитектура) включает следующие функции RISC:

Чтобы компенсировать более простую конструкцию по сравнению с такими процессорами, как Intel 80286 и Motorola 68020, использованы дополнительные конструктивные особенности:

  • Условное выполнение большинства инструкций снижает накладные расходы на ветвление и компенсирует отсутствие предсказатель ветвления в ранних фишках.
  • Арифметические инструкции изменить коды состояния только при желании.
  • 32-битный баррель шифтер может использоваться без потери производительности с большинством арифметических инструкций и вычислений адресов.
  • Имеет мощный индексированный режимы адресации.
  • А ссылка зарегистрироваться поддерживает вызовы быстрых листовых функций.
  • Простой, но быстрый, с 2 уровнями приоритета прервать подсистема переключила банки регистров.

Арифметические инструкции

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

ARM поддерживает 32-битное × 32-битное умножение с 32-битным или 64-битным результатом, хотя ядра Cortex-M0 / M0 + / M1 не поддерживают 64-битные результаты.[84] Некоторые ядра ARM также поддерживают умножение 16 × 16 и 32 × 16 бит.

Инструкции разделения включены только в следующие архитектуры ARM:

  • Архитектуры ARMv7-M и ARMv7E-M всегда включают инструкции разделения.[85]
  • Архитектура ARMv7-R всегда включает инструкции разделения в наборе инструкций Thumb, но необязательно в 32-битном наборе инструкций.[86]
  • Архитектура ARMv7-A дополнительно включает инструкции разделения. Инструкции могут быть не реализованы или реализованы только в наборе команд Thumb, или реализованы как в наборах команд Thumb, так и ARM, или реализованы, если включены расширения виртуализации.[86]

Регистры

Регистры в режимах ЦП
usrsyssvcоколоундirqфик
R0
R1
R2
R3
R4
R5
R6
R7
R8R8_fiq
R9R9_fiq
R10R10_fiq
R11R11_fiq
R12R12_fiq
R13R13_svcR13_abtR13_undR13_irqR13_fiq
R14R14_svcR14_abtR14_undR14_irqR14_fiq
R15
CPSR
SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq

Регистры с R0 по R7 одинаковы для всех режимов ЦП; они никогда не попадают в банк.

Регистры с R8 по R12 одинаковы во всех режимах ЦП, кроме режима FIQ. Режим FIQ имеет свои собственные регистры от R8 до R12.

R13 и R14 объединены во все привилегированные режимы ЦП, кроме системного. То есть каждый режим, в который можно войти из-за исключения, имеет свои собственные R13 и R14. Эти регистры обычно содержат указатель стека и адрес возврата из вызовов функций соответственно.

Псевдонимы:

Регистр текущего состояния программы (CPSR) имеет следующие 32 бита.[87]

  • M (биты 0–4) - биты режима процессора.
  • T (бит 5) - это бит состояния большого пальца.
  • F (бит 6) - это бит отключения FIQ.
  • I (бит 7) - бит отключения IRQ.
  • A (бит 8) - бит отключения прерывания неточных данных.
  • E (бит 9) - это бит порядка следования данных.
  • IT (биты 10–15 и 25–26) - это биты состояния «если-то».
  • GE (биты 16–19) - это биты "больше или равно".
  • DNM (биты 20–23) - это биты не изменять.
  • J (бит 24) - это бит состояния Java.
  • Q (бит 27) - бит липкого переполнения.
  • V (бит 28) - бит переполнения.
  • C (бит 29) - бит переноса / заимствования / расширения.
  • Z (бит 30) - нулевой бит.
  • N (бит 31) - отрицательный / меньший бит.

Условное исполнение

Почти каждая инструкция ARM имеет функцию условного выполнения, называемую предикация, который реализован с помощью 4-битного селектора кода условия (предиката). Чтобы обеспечить безусловное выполнение, один из четырехбитных кодов заставляет команду всегда выполняться. Большинство других архитектур ЦП имеют коды условий только для инструкций перехода.[88]

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

Хорошим примером условного выполнения является алгоритм, основанный на вычитании. Евклидов алгоритм для вычисления наибольший общий делитель. в Язык программирования C, алгоритм можно записать как:

int gcd(int а, int б) {  в то время как (а != б)  // Входим в цикл, когда a  b, но не когда a == b    если (а > б)   // Когда a> b делаем это      а -= б;    еще         // Когда a       б -= а;  вернуть а;}

Этот же алгоритм можно переписать так, чтобы он был ближе к целевой ARM. инструкции так как:

петля:    // Сравните a и b    GT = а > б;    LT = а < б;    NE = а != б;    // Выполняем операции по результатам флага    если(GT) а -= б;    // Вычесть * только * если больше чем    если(LT) б -= а;    // Вычитаем * только * если меньше чем    если(NE) перейти к петля; // Цикл * только *, если сравниваемые значения не были равны    вернуть а;

и закодирован в язык ассемблера так как:

; назначьте a регистру r0, b к r1цикл:   CMP    r0, r1       ; установить условие "NE" if (a! = b),                            ; "GT", если (a> b),                            ; или "LT", если (a         SUBGT  r0, r0, r1   ; если "GT" (больше), a = a-b;        SUBLT  r1, r1, r0   ; если «LT» (меньше), b = b-a;        BNE  петля           ; если "NE" (не равно), то цикл        B    lr             ; если в цикл не вошли, можно смело возвращаться

который избегает ветвей вокруг тогда и еще статьи. Если r0 и r1 равны, то ни один из SUB инструкции будут выполнены, устраняя необходимость в условном переходе для реализации в то время как проверьте вверху цикла, например, если SUBLE (меньше или равно).

Один из способов, которым Thumb-код обеспечивает более плотное кодирование, - это удалить четырехбитовый селектор из инструкций без ветвления.

Другие преимущества

Еще одна особенность Набор инструкций это возможность сворачивать сдвиги и поворачивать в инструкции «обработки данных» (арифметические, логические и перемещения регистр-регистр), так что, например, оператор C

а += (j << 2);

может быть отображена как инструкция из одного слова и одного цикла:[89]

ДОБАВИТЬ  Ра, Ра, Rj, LSL #2

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

Процессор ARM также имеет функции, редко встречающиеся в других архитектурах RISC, такие как ПК -относительная адресация (действительно, на 32-битной[1] Вооружить ПК является одним из его 16 регистров), а также в режимах до и после инкрементной адресации.

Набор инструкций ARM со временем увеличивался. Некоторые ранние процессоры ARM (до ARM7TDMI), например, не имеют инструкции для хранения двухбайтового количества.

Конвейеры и другие вопросы реализации

ARM7 и более ранние реализации имеют трехступенчатую трубопровод; этапы выборки, декодирования и выполнения. Конструкции с более высокими характеристиками, такие как ARM9, имеют более глубокие конвейеры: Cortex-A8 имеет тринадцать ступеней. Дополнительные изменения реализации для повышения производительности включают более быстрое сумматор и более обширный предсказание ветвления логика. Разница между ядрами ARM7DI и ARM7DMI, например, заключалась в улучшенном множителе; отсюда добавлено «М».

Сопроцессоры

Архитектура ARM (до ARMv8) обеспечивает ненавязчивый способ расширения набора команд с помощью «сопроцессоров», к которым можно обращаться с помощью MCR, MRC, MRRC, MCRR и подобных инструкций. Пространство сопроцессора логически разделено на 16 сопроцессоров с номерами от 0 до 15, причем сопроцессор 15 (cp15) зарезервирован для некоторых типичных функций управления, таких как управление кэшами и MMU работа на процессорах, у которых он есть.

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

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

Отладка

Все современные процессоры ARM включают средства аппаратной отладки, позволяющие программным отладчикам выполнять такие операции, как остановка, пошаговое выполнение и установка точки останова кода, начиная с сброса. Эти объекты построены с использованием JTAG поддержка, хотя некоторые новые ядра опционально поддерживают собственный двухпроводной протокол «SWD» ARM. В ядрах ARM7TDMI буква «D» представляет поддержку отладки JTAG, а буква «I» означает наличие модуля отладки «EmbeddedICE». Для поколений ядер ARM7 и ARM9 EmbeddedICE поверх JTAG был де-факто стандартом отладки, хотя архитектурно не гарантировался.

Архитектура ARMv7 определяет основные средства отладки на архитектурном уровне. К ним относятся точки останова, точки наблюдения и выполнение инструкций в «режиме отладки»; аналогичные возможности были также доступны в EmbeddedICE. Поддерживаются отладка как в «режиме остановки», так и в режиме «монитора». Фактический транспортный механизм, используемый для доступа к средствам отладки, архитектурно не определен, но реализации обычно включают поддержку JTAG.

Существует отдельная архитектура отладки ARM "CoreSight", которая архитектурно не требуется для процессоров ARMv7.

Порт доступа отладки

Порт доступа отладки (DAP) - это реализация интерфейса отладки ARM.[90]Есть две разные поддерживаемые реализации: Serial Wire. JTAG Порт отладки (SWJ-DP) и последовательный порт отладки (SW-DP).[91]CMSIS-DAP - это стандартный интерфейс, который описывает, как различное программное обеспечение для отладки на главном ПК может обмениваться данными через USB с прошивкой, запущенной на аппаратном отладчике, который, в свою очередь, взаимодействует через SWD или JTAG с процессором ARM Cortex с поддержкой CoreSight.[92][93][94][95]

Инструкции по расширению DSP

Чтобы улучшить архитектуру ARM для цифровая обработка сигналов и мультимедийные приложения, в комплект добавлены инструкции DSP.[96] Они обозначены буквой «E» в названии архитектур ARMv5TE и ARMv5TEJ. E-варианты также подразумевают T, D, M и I.

Новые инструкции распространены в цифровой сигнальный процессор (DSP) архитектуры. Они включают варианты подписанных умножать – накапливать, насыщенное сложение и вычитание и подсчет ведущих нулей.

Расширения SIMD для мультимедиа

Представленный в архитектуре ARMv6, он был предшественником Advanced SIMD, также известного как Неон.[97]

Джазель

Jazelle DBX (Direct Bytecode eXecution) - это метод, который позволяет Байт-код Java должно выполняться непосредственно в архитектуре ARM в качестве третьего состояния выполнения (и набора команд) наряду с существующим режимом ARM и Thumb-mode. Поддержка этого состояния обозначена буквой «J» в архитектуре ARMv5TEJ и в именах ядер ARM9EJ-S и ARM7EJ-S. Поддержка этого состояния требуется начиная с ARMv6 (за исключением профиля ARMv7-M), хотя новые ядра включают только тривиальную реализацию, которая не обеспечивает аппаратного ускорения.

Большой палец

Для повышения плотности скомпилированного кода процессоры, начиная с ARM7TDMI (выпущенного в 1994 г.[98]) показали Большой палец набор инструкций, которые имеют собственное состояние. («T» в «TDMI» обозначает функцию Thumb.) В этом состоянии процессор выполняет набор команд Thumb, компактное 16-битное кодирование для подмножества набора команд ARM.[99] Большинство инструкций Thumb напрямую отображаются на обычные инструкции ARM. Экономия места достигается за счет неявного использования некоторых операндов команд и ограничения количества возможностей по сравнению с командами ARM, выполняемыми в состоянии набора команд ARM.

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

В отличие от процессорных архитектур с инструкциями переменной длины (16- или 32-разрядные), таких как Cray-1 и Hitachi SuperH наборы инструкций ARM и Thumb существуют независимо друг от друга. Встроенное оборудование, такое как Game Boy Advance, обычно имеют небольшой объем ОЗУ, доступный с полным 32-разрядным каналом данных; доступ к большинству осуществляется через 16-битный или более узкий вторичный канал данных. В этой ситуации обычно имеет смысл скомпилировать Thumb-код и вручную оптимизировать несколько наиболее загружаемых процессором участков с использованием полных 32-разрядных инструкций ARM, поместив эти более широкие инструкции в память, доступную для 32-разрядной шины.

Первый процессор с большим пальцем декодер инструкций был ARM7TDMI. Все семейства ARM9 и более поздние, включая XScale, включают декодер инструкций Thumb. Он включает инструкции, принятые от Hitachi. SuperH (1992), который был лицензирован ARM.[100] Самые маленькие семейства процессоров ARM (Cortex M0 и M1) реализуют только 16-битный набор инструкций Thumb для максимальной производительности в самых недорогих приложениях.

Большой палец-2

Большой палец-2 технология была внедрена в ARM1156 ядро, объявленный в 2003 году. Thumb-2 расширяет ограниченный 16-разрядный набор команд Thumb дополнительными 32-разрядными инструкциями, чтобы расширить набор инструкций, создавая таким образом набор инструкций переменной длины. Заявленной целью Thumb-2 было достижение плотности кода, аналогичной Thumb, с производительностью, аналогичной набору инструкций ARM в 32-битной памяти.

Thumb-2 расширяет набор инструкций Thumb за счет манипулирования битовыми полями, переходов таблиц и условного выполнения. В то же время набор инструкций ARM был расширен для сохранения эквивалентной функциональности в обоих наборах инструкций. Новый «Unified Assembly Language» (UAL) поддерживает создание инструкций Thumb или ARM из одного и того же исходного кода; версии Thumb, представленные на процессорах ARMv7, по сути так же функциональны, как и код ARM (включая возможность писать обработчики прерываний). Это требует некоторой осторожности и использования новой инструкции «IT» (если-то), которая позволяет выполнять до четырех последовательных инструкций на основе проверенного условия или его обратного. При компиляции в код ARM это игнорируется, но при компиляции в Thumb он генерирует фактическую инструкцию. Например:

; если (r0 == r1)CMP r0, r1ITE Эквалайзер        ; ARM: без кода ... Thumb: IT инструкция; тогда r0 = r2;MOVEQ r0, r2  ; ARM: условно; Большой палец: состояние через ITE 'T' (затем); иначе r0 = r3;MOVNE r0, r3  ; ARM: условно; Большой палец: состояние через ITE 'E' (иначе); Напомним, что инструкция Thumb MOV не имеет битов для кодирования «EQ» или «NE».

Все чипы ARMv7 поддерживают набор инструкций Thumb. Все микросхемы серий Cortex-A, Cortex-R и ARM11 поддерживают как «состояние набора инструкций ARM», так и «состояние набора команд Thumb», в то время как микросхемы в Кортекс-М серии поддерживают только набор инструкций Thumb.[101][102][103]

Среда выполнения Thumb (ThumbEE)

Большой палец (ошибочно назван Thumb-2EE в некоторой документации ARM), который продавался как Джазель РКИ (Runtime Compilation Target), было объявлено в 2005 году, впервые появившись в Cortex-A8 процессор. ThumbEE - это четвертое состояние набора инструкций, вносящее небольшие изменения в расширенный набор инструкций Thumb-2. Эти изменения делают набор инструкций особенно подходящим для кода, сгенерированного во время выполнения (например, JIT-компиляция ) в управляемом Среды исполнения. ThumbEE - это цель для таких языков, как Ява, C #, Perl, и Python, и позволяет JIT-компиляторы для вывода скомпилированного кода меньшего размера без снижения производительности.[нужна цитата ]

Новые функции, предоставляемые ThumbEE, включают автоматические проверки нулевого указателя для каждой инструкции загрузки и сохранения, инструкцию для выполнения проверки границ массива и специальные инструкции, вызывающие обработчик. Кроме того, поскольку он использует технологию Thumb-2, ThumbEE обеспечивает доступ к регистрам r8-r15 (где хранится состояние виртуальной машины Java Jazelle / DBX).[104] Обработчики - это небольшие участки часто вызываемого кода, обычно используемые для реализации языков высокого уровня, таких как выделение памяти для нового объекта. Эти изменения происходят из-за перепрофилирования нескольких кодов операций и знания того, что ядро ​​находится в новом состоянии ThumbEE.

23 ноября 2011 года Arm Holdings отказался от использования набора инструкций ThumbEE,[105] ARMv8 удаляет поддержку ThumbEE.

С плавающей точкой (VFP)

VFP (Vector Floating Point) технология - это блок с плавающей запятой (FPU) расширение сопроцессора для архитектуры ARM[106] (в ARMv8 реализовано иначе - сопроцессоры там не определены). Обеспечивает низкую стоимость одинарная точность и двойная точность вычисления с плавающей запятой полностью совместимы с Стандарт ANSI / IEEE 754-1985 для двоичной арифметики с плавающей запятой. VFP обеспечивает вычисления с плавающей запятой, подходящие для широкого спектра приложений, таких как КПК, смартфоны, сжатие и декомпрессия голоса, трехмерная графика и цифровой звук, принтеры, телеприставки и автомобильные приложения. Архитектура VFP была предназначена для поддержки выполнения коротких инструкций в «векторном режиме», но они работали с каждым векторным элементом последовательно и, таким образом, не обеспечивали производительность истинного одна инструкция, несколько данных (SIMD) векторный параллелизм. Поэтому этот векторный режим был удален вскоре после его введения,[107] должен быть заменен на более мощный Advanced SIMD, также известный как Неон.

Некоторые устройства, такие как ARM Cortex-A8, имеют урезанный VFPLite модуль вместо полного модуля VFP и требует примерно в десять раз больше тактов на операцию с плавающей запятой.[108] В архитектуре до ARMv8 реализованы операции с плавающей запятой / SIMD с интерфейсом сопроцессора. Другие блоки с плавающей запятой и / или SIMD, обнаруженные в процессорах на базе ARM, использующих интерфейс сопроцессора, включают FPA, FPE, iwMMXt, некоторые из которых были реализованы программно с помощью треппинга, но могли быть реализованы аппаратно. Они предоставляют некоторые из тех же функций, что и VFP, но не код операции -совместим с ним. FPA10 также предоставляет повышенная точность, но реализует правильное округление (требуемое IEEE 754) только с одинарной точностью.[109]

VFPv1
Устаревший
VFPv2
Необязательное расширение набора инструкций ARM в архитектурах ARMv5TE, ARMv5TEJ и ARMv6. VFPv2 имеет 16 64-битных регистров FPU.
VFPv3 или VFPv3-D32
Реализовано на большинстве процессоров Cortex-A8 и A9 ARMv7. Он обратно совместим с VFPv2, за исключением того, что он не может перехватывать исключения с плавающей запятой. VFPv3 имеет 32 64-битных регистра FPU в стандартной комплектации, добавляет инструкции VCVT для преобразования между скаляром, float и double, добавляет немедленный режим к VMOV, так что константы могут быть загружены в регистры FPU.
VFPv3-D16
То же, что и выше, но только с 16 64-битными регистрами FPU. Реализовано на процессорах Cortex-R4 и R5 и Тегра 2 (Cortex-A9).
VFPv3-F16
Необычный; он поддерживает IEEE754-2008 с плавающей запятой половинной точности (16 бит) как формат хранения.
VFPv4 или VFPv4-D32
Реализованный на процессорах Cortex-A12 и A15 ARMv7, Cortex-A7 опционально имеет VFPv4-D32 в случае FPU с Neon.[110] VFPv4 имеет 32 64-битных регистра FPU в стандартной комплектации, добавляет поддержку половинной точности в качестве формата хранения и плавленый умножать-накапливать инструкция к особенностям VFPv3.
VFPv4-D16
То же, что и выше, но имеет только 16 64-битных регистров FPU. Реализовано на процессорах Cortex-A5 и A7 в случае использования FPU без Neon.[110]
VFPv5-D16-M
Реализовано в Cortex-M7 при наличии опций ядра с плавающей запятой одинарной и двойной точности.

В Debian GNU / Linux и производные, такие как Ubuntu и Linux Mint, Armhf (ARM жесткий поплавок) относится к архитектуре ARMv7, включая дополнительное аппаратное расширение VFP3-D16 с плавающей запятой (и Thumb-2) выше. Программные пакеты и инструменты кросс-компилятора используют суффиксы armhf и arm / armel для различения.[111]

Advanced SIMD (Neon)

В Расширенный SIMD расширение (он же Неон или "MPE" Media Processing Engine) представляет собой комбинацию 64- и 128 бит Набор инструкций SIMD, который обеспечивает стандартизованное ускорение для приложений обработки мультимедиа и сигналов. Neon включен во все устройства Cortex-A8, но не является обязательным для устройств Cortex-A9.[112] Neon может выполнять декодирование звука MP3 на процессорах, работающих на частоте 10 МГц, и может запускать GSM адаптивный многоскоростной (AMR) речевой кодек на 13 МГц. Он имеет полный набор инструкций, отдельные файлы регистров и независимое исполнительное оборудование.[113] Neon поддерживает 8-, 16-, 32- и 64-битные целые числа и данные с плавающей запятой одинарной точности (32-битные) и операции SIMD для обработки аудио и видео, а также обработки графики и игр. В Neon SIMD поддерживает до 16 операций одновременно. Аппаратное обеспечение Neon использует те же регистры с плавающей запятой, что и в VFP. Такие устройства, как ARM Cortex-A8 и Cortex-A9, поддерживают 128-битные векторы, но будут работать с 64-битными одновременно,[108] тогда как более новые устройства Cortex-A15 могут выполнять 128 бит за раз.[114][115]

Особенность Neon в устройствах ARMv7 заключается в том, что он стирает все субнормальные числа к нулю, и в результате GCC компилятор не будет использовать его, если -funsafe-math-optimizations, позволяющий проигрывать денормальные значения, включен. "Enhanced" Neon определен, поскольку ARMv8 не имеет этой особенности, но с GCC 8.2 тот же флаг все еще требуется для включения инструкций Neon.[116] С другой стороны, GCC действительно считает Neon безопасным на AArch64 для ARMv8.

ProjectNe10 - первый проект ARM с открытым исходным кодом (с момента его создания; пока они приобрели более старый проект, теперь известный как Мбед TLS ). Библиотека Ne10 - это набор общих полезных функций, написанных как на Neon, так и на C (для совместимости). Библиотека была создана, чтобы позволить разработчикам использовать оптимизацию Neon без изучения Neon, но она также служит набором высоко оптимизированных примеров внутреннего и ассемблерного кода Neon для общих процедур DSP, арифметики и обработки изображений. Исходный код доступен на GitHub.[117]

ARM Гелиевая технология

Гелий добавляет более 150 скалярных и векторных инструкций.[118]

Расширения безопасности

TrustZone (для профиля Cortex-A)

Расширения безопасности, продаваемые как TrustZone Technology, входят в состав ARMv6KZ и более поздних архитектур профилей приложений. Он обеспечивает недорогую альтернативу добавлению еще одного выделенного ядра безопасности к SoC, предоставляя два виртуальных процессора, поддерживаемых аппаратным контролем доступа. Это позволяет ядру приложения переключаться между двумя состояниями, называемыми миры (чтобы избежать путаницы с другими именами для доменов возможностей), чтобы предотвратить утечку информации из более надежного мира в менее надежный мир.Этот переключатель мира обычно ортогонален всем остальным возможностям процессора, поэтому каждый мир может работать независимо от другого, используя одно и то же ядро. Затем память и периферийные устройства узнают об операционном мире ядра и могут использовать это для обеспечения контроля доступа к секретам и коду на устройстве.[119]

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

На практике, поскольку конкретные детали реализации проприетарных реализаций TrustZone не были публично раскрыты для проверки, неясно, какой уровень гарантии предоставляется для данного модель угрозы, но они не защищены от атак.[121][122]

Открытая виртуализация[123] это реализация с открытым исходным кодом архитектуры доверенного мира для TrustZone.

AMD лицензировал и включил технологию TrustZone в свою технологию защищенных процессоров.[124] Включено в некоторых, но не во всех продуктах, AMD ВСУ включить процессор Cortex-A5 для безопасной обработки.[125][126][127] Фактически, ядро ​​Cortex-A5 TrustZone было включено в более ранние продукты AMD, но не было включено из-за нехватки времени.[126]

Samsung Knox использует TrustZone для таких целей, как обнаружение модификаций ядра.[128]

TrustZone для ARMv8-M (для профиля Cortex-M)

Расширение безопасности, продаваемое как TrustZone для технологии ARMv8-M, было введено в архитектуру ARMv8-M. Несмотря на то, что он содержит концепции, аналогичные TrustZone для ARMv8-A, он имеет другую архитектурную схему, поскольку переключение мира выполняется с использованием инструкций ветвления вместо использования исключений. Он также поддерживает безопасную обработку прерываний с чередованием из любого мира, независимо от текущего состояния безопасности. Вместе эти функции обеспечивают вызовы с низкой задержкой в ​​безопасный мир и оперативную обработку прерываний. ARM предоставляет справочный стек безопасного мирового кода в виде доверенной прошивки для M и Сертифицировано PSA.

Защита от невыполнения страницы

Начиная с ARMv6, архитектура ARM поддерживает защита от невыполнения страницы, который упоминается как XN, для eXecute Never.[129]

Расширение большого физического адреса (LPAE)

Расширение большого физического адреса (LPAE), которое увеличивает размер физического адреса с 32 бит до 40 бит, было добавлено в архитектуру ARMv7-A в 2011 году.[130] Размер физического адреса больше, 44 бита, в Cortex-A75 и Cortex-A65AE.[131]

ARMv8-R и ARMv8-M

В ARMv8-R и ARMv8-M Архитектуры, объявленные после архитектуры ARMv8-A, имеют общие функции с ARMv8-A, но не содержат никаких 64-битных инструкций AArch64.

ARMv8.1-M

Архитектура ARMv8.1-M, ​​анонсированная в феврале 2019 года, является усовершенствованием архитектуры ARMv8-M. Он предлагает новые функции, в том числе:

  • Новое расширение набора векторных команд. Расширение вектора M-профиля (MVE), или Helium, предназначено для приложений обработки сигналов и машинного обучения.
  • Дополнительные улучшения набора инструкций для циклов и ветвей (расширение ветвей с малыми накладными расходами).
  • Инструкции для с плавающей запятой половинной точности поддержка.
  • Улучшение набора инструкций для управления TrustZone для модуля с плавающей запятой (FPU).
  • Новый атрибут памяти в блоке защиты памяти (MPU).
  • Улучшения в отладке, включая Performance Monitoring Unit (PMU), Unprivileged Debug Extension и дополнительную поддержку отладки, сосредоточены на разработке приложений для обработки сигналов.
  • Расширение надежности, доступности и удобства обслуживания (RAS).

64/32-битная архитектура

Платформа ARMv8-A с процессором Cortex A57 / A53 MPCore big.LITTLE

ARMv8-A

Объявлено в октябре 2011 г.,[8] ARMv8-A (часто называемый ARMv8, хотя также доступен ARMv8-R) представляет собой фундаментальное изменение архитектуры ARM. Он добавляет дополнительную 64-битную архитектуру (например, Cortex-A32 - это 32-битный процессор ARMv8-A.[132] в то время как большинство процессоров ARMv8-A поддерживают 64-разрядную версию), названную «AArch64», и соответствующий новый набор инструкций «A64». AArch64 предоставляет пользовательское пространство совместимость с ARMv7-A, 32-битной архитектурой, именуемой здесь «AArch32», и старым 32-битным набором команд, теперь называемым «A32». Набор команд Thumb упоминается как «T32» и не имеет 64-битного аналога. ARMv8-A позволяет запускать 32-разрядные приложения в 64-разрядной ОС, а 32-разрядная ОС находится под управлением 64-разрядной ОС. гипервизор.[1] ARM анонсировала свои ядра Cortex-A53 и Cortex-A57 30 октября 2012 года.[57] Apple первой выпустила ядро, совместимое с ARMv8-A (Apple A7 ) в потребительском продукте (айфон 5с ). AppliedMicro, используя FPGA, был первым, кто продемонстрировал ARMv8-A.[133] Первый ARMv8-A SoC от Samsung Exynos 5433 используется в Galaxy Note 4, который состоит из двух кластеров по четыре ядра Cortex-A57 и Cortex-A53 в конфигурации big.LITTLE; но он будет работать только в режиме AArch32.[134]

Как для AArch32, так и для AArch64, ARMv8-A делает VFPv3 / v4 и расширенный стандарт SIMD (Neon). Он также добавляет инструкции по криптографии, поддерживающие AES, SHA-1 /SHA-256 и арифметика конечных полей.[135] AArch64 был представлен в ARMv8-A и его последующей версии. AArch64 не входит в 32-разрядные архитектуры ARMv8-R и ARMv8-M.

Архитектура безопасности платформы

Архитектура безопасности платформы (PSA)[136] представляет собой архитектурно-независимую структуру безопасности и схему оценки, предназначенную для обеспечения безопасности устройств Интернета вещей (IoT), построенных на процессорах системы на кристалле (SoC). Он был представлен ARM в 2017 году.[137] на ежегодном мероприятии TechCon[138] и сначала будет использоваться на ядрах процессора ARM Cortex-M, предназначенных для использования в микроконтроллерах. PSA включает в себя свободно доступные модели угроз и анализы безопасности, демонстрирующие процесс выбора функций безопасности.[139] в обычных продуктах Интернета вещей. PSA также предоставляет бесплатно загружаемые пакеты интерфейса прикладного программирования (API),[140] архитектурные спецификации, реализации микропрограмм с открытым исходным кодом и соответствующие наборы тестов. Сертифицировано PSA[141] предлагает многоуровневую схему оценки безопасности для поставщиков микросхем, поставщиков ОС и производителей устройств Интернета вещей.

Поддержка операционной системы

32-битные операционные системы

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

Исторические операционные системы

Первый 32-битный персональный компьютер на базе ARM, Желудь Архимеда, изначально предназначался для запуска амбициозной операционной системы под названием ARX. Машины поставляются с ОС RISC который также использовался в более поздних системах на базе ARM от Acorn и других поставщиков. Некоторые ранние машины Acorn также могли запускать Unix порт называется RISC iX. (Ни то, ни другое не следует путать с RISC / OS, современный вариант Unix для архитектуры MIPS.)

Встроенные операционные системы

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

Операционные системы мобильных устройств

32-разрядная архитектура ARM является основной аппаратной средой для большинства операционных систем мобильных устройств, таких как:

Раньше, но сейчас снято с производства:

  • iOS 10 и ранее

Настольные / серверные операционные системы

32-разрядная архитектура ARM поддерживается ОС RISC и несколькими Unix-подобный операционные системы, включая:

64-битные операционные системы

Встроенные операционные системы

Операционные системы мобильных устройств

  • iOS поддерживает ARMv8-A в IOS 7 и позже 64-битный Apple SoC. iOS 11 и более поздние версии поддерживают только 64-разрядные процессоры и приложения ARM.
  • Android поддерживает ARMv8-A в Android Lollipop (5.0) и новее.

Настольные / серверные операционные системы

Перенос на 32- или 64-битные операционные системы ARM

Приложения Windows перекомпилированы для ARM и связаны с Winelib - из Вино проект - может работать на 32-битной или 64-битной ARM в Linux, FreeBSD или других совместимых операционных системах.[168][169] двоичные файлы x86, например когда они не были специально скомпилированы для ARM, были продемонстрированы на ARM с использованием QEMU с Wine (в Linux и др.),[нужна цитата ] но не работают на полной скорости или с такими же возможностями, как с Winelib.

Смотрите также

использованная литература

  1. ^ а б c d е Гризентуэйт, Ричард (2011). «Предварительный просмотр технологии ARMv8-A» (PDF). Получено 31 октября 2011.
  2. ^ «Стандарт вызова процедур для архитектуры ARM» (PDF). Arm Holdings. 30 ноября 2013 г.. Получено 27 мая 2013.
  3. ^ а б «Некоторые факты о RISC-машине Acorn» Роджер Уилсон размещение на comp.arch, 2 ноября 1988 г. Дата обращения 25 мая 2007 г.
  4. ^ а б Хахман, Марк (14 октября 2002 г.). «Ядра ARM осваивают территорию 3G». ExtremeTech. Получено 24 мая 2018.
  5. ^ Терли, Джим (18 декабря 2002 г.). «Двухпроцентное решение». Встроенный. Получено 24 мая 2018.
  6. ^ «Fujitsu отказывается от SPARC и переходит на ARM в качестве суперкомпьютера Post-K». 20 июня 2016 г.. Получено 18 декабря 2016.
  7. ^ «Ноябрь 2020 | ТОП500». top500.org. Получено 1 декабря 2020.
  8. ^ а б «ARM раскрывает технические подробности следующей версии архитектуры ARM» (Пресс-релиз). Arm Holdings. 27 октября 2011. Архивировано с оригинал 1 января 2019 г.. Получено 20 сентября 2013.
  9. ^ «Анонс платформы ARM Neoverse N1». community.arm.com. Получено 8 апреля 2020.
  10. ^ «Создание умного мира и развитие искусственного интеллекта: ARM». Кремниевый обзор. 2019. Получено 8 апреля 2020.
  11. ^ «Ядра микропроцессоров и технологии - АРМ». ARM | Архитектура цифрового мира. Получено 8 апреля 2020.
  12. ^ «Обеспечение массового подключения к Интернету вещей, поскольку партнеры ARM поставляют 100 миллиардов чипов». community.arm.com. Получено 8 апреля 2020. совокупное развертывание 100 миллиардов микросхем, половина из которых поставлена ​​за последние четыре года. [..] почему не триллион или больше? Это наша цель - в ближайшие два десятилетия развернуть триллион подключенных устройств.
  13. ^ «Рынок MCU на пути перехода на 32-битные устройства и устройства на базе ARM: 32-битные вершины продаж; 16-битные лидирующие позиции в единичных поставках». IC Insights. 25 апреля 2013 г.. Получено 1 июля 2014.
  14. ^ Терли, Джим (2002). «Двухпроцентное решение». embedded.com.
  15. ^ «Arm Holdings стремится к расширению ПК и серверов». 1 февраля 2011 г.
  16. ^ Керри Макгуайр Баланза (11 мая 2010 г.). «ARM с нуля до миллиардов за 25 лет». Arm Holdings. Получено 8 ноября 2012.
  17. ^ VLSI Technology, Inc. (1990). Руководство по семейству машин Acorn RISC. Prentice-Hall. ISBN  9780137816187.
  18. ^ Акция Acorn Archimedes с 1987 года. 1987.
  19. ^ Маннерс, Дэвид (29 апреля 1998 г.). "Путь ARM". Еженедельник электроники. Архивировано из оригинал 29 июля 2012 г.. Получено 26 октября 2012.
  20. ^ Софи Уилсон на Alt Party 2009 (часть 3/8).
  21. ^ Чисналл, Дэвид (23 августа 2010 г.). Понимание архитектур ARM. Получено 26 мая 2013.
  22. ^ Фербер, Стивен Б. (2000). Архитектура системы на кристалле ARM. Бостон: Эддисон-Уэсли. ISBN  0-201-67519-6.
  23. ^ "История разработки набора команд ARM с Софи Уилсон (Часть 3)". 10 мая 2015. Получено 25 мая 2020 - через YouTube.
  24. ^ "Устная история Софи Уилсон - сотрудник Музея компьютерной истории 2012" (PDF). Музей истории компьютеров. 31 января 2012 г.. Получено 25 мая 2020.
  25. ^ Гудвинс, Руперт (4 декабря 2010 г.). «Жертвы Intel: восемь потенциальных убийц-гигантов». ZDNet. Получено 7 марта 2012.
  26. ^ Акция Acorn Archimedes с 1987 года на YouTube
  27. ^ Ричард Мюррей. «32-битная операция».
  28. ^ Леви, Маркус. «История архитектуры ARM: от зарождения до IPO» (PDF). Получено 14 марта 2013.
  29. ^ Сантану Чаттопадхьяй (2010). Встроенный системный дизайн. PHI Learning Pvt. ООО п. 9. ISBN  978-81-203-4024-4.
  30. ^ Основные вехи ARM, Сайт компании ARM. Проверено 8 апреля 2015 г.
  31. ^ Эндрюс, Джейсон (2005). «3 темы проверки SoC для архитектуры ARM». Совместная проверка аппаратного и программного обеспечения для проектирования ARM SoC. Оксфорд, Великобритания: Эльзевир. стр.69. ISBN  0-7506-7730-9. ARM начиналась как филиал Acorn Computer в Кембридже, Англия, с образования совместного предприятия между Acorn, Apple и VLSI Technology. В период с 1983 по 1985 год группа из двенадцати сотрудников разработала дизайн первого микропроцессора ARM.
  32. ^ Вебер, Джонатан (28 ноября 1990 г.). «Apple присоединится к Acorn и VLSI в предприятии по производству микросхем». Лос-Анджелес Таймс. Лос-Анджелес. Получено 6 февраля 2012. Apple инвестировала около 3 миллионов долларов (примерно 1,5 миллиона фунтов стерлингов) в приобретение 30% -ной доли в компании, получившей название Advanced Risc Machines Ltd. (ARM) [...]
  33. ^ "Корпоративный справочник ARM" В архиве 4 октября 2006 г. Wayback Machine, ARM Технология.
  34. ^ Монтанаро, Джеймс и др. (1997). «Микропроцессор CMOS RISC с частотой 160 МГц, 32 бит, 0,5 Вт». Цифровой технический журнал, т. 9, вып. 1. С. 49–62.
  35. ^ ДеМоне, Пол (9 ноября 2000 г.). «Гонка ARM за мировое господство». Технологии реального мира. Получено 6 октября 2015.
  36. ^ «Марш машин». technologyreview.com. Обзор технологий MIT. 20 апреля 2010 г.. Получено 6 октября 2015.
  37. ^ Кразит, Том (3 апреля 2006 г.). «Вооружена для гостиной». CNET.
  38. ^ Трейси Робинсон (12 февраля 2014 г.). «Празднование 50 миллиардов отгруженных чипов на базе ARM».
  39. ^ Сара Мерри (3 марта 2014 г.). «Охват ARM: рубеж в 50 миллиардов чипов».
  40. ^ Браун, Эрик (2009). «Нетбук ARM поставляется со съемным планшетом». Архивировано из оригинал 3 января 2013 г.. Получено 19 августа 2009.
  41. ^ Питер Кларк (7 января 2016 г.). «Amazon теперь продает собственные чипы ARM».
  42. ^ «MACOM успешно завершает приобретение AppliedMicro» (Пресс-релиз). 26 января 2017.
  43. ^ Фрумусану, Андрей. «Детали ARM, основанные на лицензии на технологию ARM Cortex». АнандТех. Получено 26 мая 2019.
  44. ^ Катресс, доктор Ян. «Гибкий доступ к ARM: спроектируйте SoC, прежде чем тратить деньги». АнандТех. Получено 9 октября 2019.
  45. ^ «ARM Гибкий доступ. Часто задаваемые вопросы». ARM | Архитектура цифрового мира. Получено 9 октября 2019.
  46. ^ Нолтинг, Стефан. "Процессорная система STORM CORE" (PDF). OpenCores. Получено 1 апреля 2014.
  47. ^ "Еревант / ЗАП". GitHub. Получено 13 октября 2016.
  48. ^ «Процессор Cortex-M23». РУКА. Получено 27 октября 2016.
  49. ^ «Процессор Cortex-M33». РУКА. Получено 27 октября 2016.
  50. ^ «Архитектура ARMv8-M упрощает безопасность для интеллектуальных встраиваемых систем». РУКА. Получено 10 ноября 2015.
  51. ^ «Архитектура ARMv8-R». Получено 10 июля 2015.
  52. ^ «Архитектура ARM Cortex-R» (PDF). Arm Holdings. Октябрь 2013. Получено 1 февраля 2014.
  53. ^ Смит, Райан (20 сентября 2016 г.). «ARM объявляет о выпуске процессора Cortex-R52: детерминированного и безопасного для ADAS и др.». АнандТех. Получено 20 сентября 2016.
  54. ^ «Процессор Cortex-A32». РУКА. Получено 10 октября 2019.
  55. ^ «Процессор Cortex-A35». РУКА. Получено 10 ноября 2015.
  56. ^ а б «ARM запускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире» (Пресс-релиз). Arm Holdings. Получено 31 октября 2012.
  57. ^ "Процессор Cortex-A72". РУКА. Получено 10 июля 2015.
  58. ^ «Процессор Cortex-A73». РУКА. Получено 2 июн 2016.
  59. ^ «Архитектура ARMv8-A». Получено 10 июля 2015.
  60. ^ Предварительный просмотр архитектурной технологии ARMv8 (слайды); Arm Holdings.
  61. ^ «Cavium Thunder X увеличивает количество ядер ARM до 48 на одном чипе». Полуточный. 3 июня 2014 г.
  62. ^ «Cavium на Supercomputing 2014». Yahoo Finance. 17 ноября 2014 г. Архивировано с оригинал 16 октября 2015 г.. Получено 15 января 2017.
  63. ^ "Cray для оценки чипов ARM в суперкомпьютерах". eWeek. 17 ноября 2014 г.
  64. ^ «Samsung представляет Exynos 8890 с модемом Cat.12/13 и специальным процессором». АнандТех.
  65. ^ «Процессор Cortex-A34». РУКА. Получено 10 октября 2019.
  66. ^ «D21500 [AARCH64] Добавить поддержку Broadcom Vulcan». reviews.llvm.org.
  67. ^ «Процессор Cortex-A55». РУКА. Получено 29 мая 2017.
  68. ^ «Процессор Cortex-A75». РУКА. Получено 29 мая 2017.
  69. ^ «Процессор Cortex-A76». РУКА. Получено 11 октября 2018.
  70. ^ Беренис Манн (апрель 2017 г.). «Архитектура ARM - эволюция и доставка ARMv8.2-A». community.ARM.com.
  71. ^ Фрумусану, Андрей. «Samsung анонсирует Exynos 9825 SoC: первый 7-нм силиконовый чип EUV». АнандТех. Получено 11 октября 2019.
  72. ^ "Fujitsu начала производить миллиарды супер-вычислений в Японии с помощью самого мощного процессора ARM A64FX". Новости информационных технологий Китая. Получено 17 августа 2019. Чип ARMv8 SVE (Scalable Vector Extension), который использует 512-битную плавающую точку.
  73. ^ «Cortex-A65AE - ARM». ARM | Архитектура цифрового мира. Получено 8 апреля 2020. может выполнять два потока параллельно в каждом цикле. Каждый поток может находиться на разных уровнях исключения и запускать разные операционные системы.
  74. ^ Фрумусану, Андрей. «Marvell представляет ThunderX3: 96-ядерный и 384-поточный серверный процессор ARM третьего поколения». АнандТех. Получено 26 мая 2020.
  75. ^ «Линейная карта» (PDF). 2003. Получено 1 октября 2012.
  76. ^ Пэрриш, Кевин (14 июля 2011 г.). «Один миллион ядер ARM, связанных с имитацией мозга». EE Times. Получено 2 августа 2011.
  77. ^ http://infocenter.arm.com/help/index.jsp
  78. ^ «Режим процессора». Arm Holdings. Получено 26 марта 2013.
  79. ^ «КВМ / АРМ» (PDF). Получено 3 апреля 2013.
  80. ^ Браш, Дэвид (август 2010). «Расширения архитектуры ARMv7-A» (PDF). АРМ ООО. Получено 6 июн 2014.
  81. ^ "Как компилятор ARM поддерживает невыровненный доступ?". 2011. Получено 5 октября 2013.
  82. ^ «Невыровненный доступ к данным». Получено 5 октября 2013.
  83. ^ Cortex-M0 r0p0 Техническое справочное руководство; Arm Holdings.
  84. ^ "Справочное руководство по архитектуре ARMv7-M; Arm Holdings". arm.com. Получено 19 января 2013.
  85. ^ а б "Справочное руководство по архитектуре ARMv7-A и ARMv7-R; Arm Holdings". arm.com. Получено 19 января 2013.
  86. ^ «Информационный центр АРМ». Получено 10 июля 2015.
  87. ^ «Коды состояния 1: флаги и коды состояния». Сообщество ARM. Получено 26 сентября 2019.
  88. ^ «9.1.2. Количество циклов команд».
  89. ^ «Компоненты CoreSight: о порте доступа для отладки».
  90. ^ "Cortex-M3: порт доступа отладки (DAP)".
  91. ^ Майк Андерсон.«Общие сведения о параметрах отладки ARM HW».
  92. ^ «Руководство пользователя отладчика CMSIS-DAP».
  93. ^ «CMSIS-DAP».
  94. ^ «SWDAP против CMSIS-DAP против DAPLink».
  95. ^ "Расширения набора команд ARM DSP". arm.com. В архиве из оригинала 14 апреля 2009 г.. Получено 18 апреля 2009.
  96. ^ «DSP & SIMD». Получено 10 июля 2015.
  97. ^ ARM7TDMI Техническое справочное руководство страница ii
  98. ^ Джаггар, Дэйв (1996). Справочное руководство по архитектуре ARM. Прентис Холл. С. 6–1. ISBN  978-0-13-736299-8.
  99. ^ Натан Уиллис (10 июня 2015 г.). «Возрождение архитектуры SuperH». LWN.net.
  100. ^ "Архитектура набора команд процессора ARM". ARM.com. В архиве из оригинала 15 апреля 2009 г.. Получено 18 апреля 2009.
  101. ^ "ARM нацелена на сына Большого пальца в uCs, ASSPs, SoCs". Linuxdevices.com. Архивировано из оригинал 9 декабря 2012 г.. Получено 18 апреля 2009.
  102. ^ «Информационный центр АРМ». Infocenter.arm.com. Получено 18 апреля 2009.
  103. ^ Том Р. Халфхилл (2005). «ARM усиливает компиляторы Java: новые 16-разрядные инструкции Thumb-2EE сохраняют системную память» (PDF). Архивировано из оригинал (PDF) 5 октября 2007 г.
  104. ^ Справочное руководство по архитектуре ARM, выпуск ARMv7-A и ARMv7-R, выпуск C.b, раздел A2.10, 25 июля 2012 г.
  105. ^ «Набор инструментов ARM Compiler с использованием ассемблера - сопроцессор VFP». ARM.com. Получено 20 августа 2014.
  106. ^ «Директивы VFP и векторная нотация». ARM.com. Получено 21 ноября 2011.
  107. ^ а б «Различия между ARM Cortex-A8 и Cortex-A9». Шервин Эмами. Получено 21 ноября 2011.
  108. ^ «Лист данных FPA10» (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 июня 1993 г.. Получено 26 ноября 2020. Что касается IEEE 754-1985, FPA обеспечивает соответствие арифметике с одинарной точностью [...] Иногда умножение с двойной и повышенной точностью может производиться с ошибкой в ​​1 или 2 единицы в наименее значимом месте мантиссы. .
  109. ^ а б "Cortex-A7 MPCore Техническое справочное руководство - 1.3 Функции". РУКА. Получено 11 июля 2014.
  110. ^ «ARMHardFloatPort - Debian Wiki». Wiki.debian.org. 20 августа 2012 г.. Получено 8 января 2014.
  111. ^ «Процессор Cortex-A9». arm.com. Получено 21 ноября 2011.
  112. ^ "О Cortex-A9 NEON MPE". arm.com. Получено 21 ноября 2011.
  113. ^ "US20050125476A1".
  114. ^ "US20080141004A1".
  115. ^ «Параметры ARM». Руководство по сборнику компиляторов GNU. Получено 20 сентября 2019.
  116. ^ «Ne10: проект открытой оптимизированной библиотеки программного обеспечения для архитектуры ARM». GitHub. Получено 20 сентября 2019.
  117. ^ Джозеф Ю. «Введение в архитектуру ARMv8.1-M» (PDF). Получено 5 марта 2020.
  118. ^ «Genode - исследование технологии ARM TrustZone». Получено 10 июля 2015.
  119. ^ «ARM объявляет о доступности мобильных потребительских программных решений DRM на основе технологии ARM TrustZone» (Пресс-релиз). News.thomasnet.com. Получено 18 апреля 2009.
  120. ^ Laginimaineb (8 октября 2015 г.). «Биты, пожалуйста !: Полный эксплойт TrustZone для MSM8974». Биты, пожалуйста!. Получено 3 мая 2016.
  121. ^ Ди Шен. «Атака на ваше« доверенное ядро ​​»с использованием TrustZone на Android» (PDF). Брифинги Black Hat. Получено 3 мая 2016.
  122. ^ «Программное обеспечение ARM TrustZone и ARM Hypervisor с открытым исходным кодом». Откройте виртуализацию. Архивировано из оригинал 14 июня 2013 г.. Получено 14 июн 2013.
  123. ^ «Безопасная технология AMD». AMD. AMD. Получено 6 июля 2016.
  124. ^ Смит, Райан (13 июня 2012 г.). «APU AMD 2013 будут включать процессор ARM Cortex A5 для возможностей Trustzone». АнандТех. Получено 6 июля 2016.
  125. ^ а б Шимпи, Ананд Лал (29 апреля 2014 г.). «Предварительный просмотр производительности архитектуры AMD Beema Mullins A10 micro 6700T». АнандТех. Получено 6 июля 2016.
  126. ^ Уолтон, Джарред (4 июня 2014 г.). «AMD запускает APU Mobile Kaveri». АнандТех. Получено 6 июля 2016.
  127. ^ «Платформа Samsung KNOX» (PDF). Samsung Electronics. Апрель 2016 г.
  128. ^ «Справочное руководство по архитектуре ARM» (PDF). п. B4-8. Архивировано из оригинал (PDF) 6 февраля 2009 г. Биты APX и XN (никогда не выполнять) были добавлены в VMSAv6 [Архитектура системы виртуальной памяти]
  129. ^ Справочное руководство по архитектуре ARM, выпуск ARMv7-A и ARMv7-R. ARM Limited.
  130. ^ «Cortex-A65AE». ARM Разработчик. Получено 26 апреля 2019.
  131. ^ «Процессор Cortex-A32 - ARM». Получено 18 декабря 2016.
  132. ^ «AppliedMicro демонстрирует первое в мире 64-битное ядро ​​ARM v8» (Пресс-релиз). AppliedMicro. 28 октября 2011 г.. Получено 11 февраля 2014.
  133. ^ "Exynos 5433 от Samsung - это процессор ARM A57 / A53". АнандТех. Получено 17 сентября 2014.
  134. ^ "Справочное техническое руководство по процессору ARM Cortex-A53 MPCore: расширение криптографии". РУКА. Получено 11 сентября 2016.
  135. ^ Осборн, Чарли. «ARM анонсирует архитектуру безопасности PSA для устройств IoT». ZDNet.
  136. ^ Вонг, Уильям. "Архитектура безопасности платформы ARM нацелена на Cortex-M". Электронный дизайн.
  137. ^ Хоффенберг, Стив. «ARM: безопасность - это не просто технологический императив, это социальная ответственность». VDC Research.
  138. ^ ARMasu, Лучан. «ARM раскрывает более подробную информацию о своей архитектуре безопасности платформы Интернета вещей». Оборудование Тома.
  139. ^ Уильямс, Крис. "ARM PSA IoT API? BRB ... Набор инструментов для защиты сетевого подключения открывает еще кое-что". Реестр.
  140. ^ «Сертификат PSA: укрепление доверия к IoT». Сертифицировано PSA.
  141. ^ «Технические характеристики ОС-9». Микроволновая печь.
  142. ^ а б "Фарос". SourceForge. Получено 24 мая 2018.
  143. ^ «Безопасная и надежная виртуализация PikeOS». Проверено 10 июля 2013 года.
  144. ^ а б «Операционные системы реального времени, сертифицированные по безопасности - Поддерживаемые процессоры».
  145. ^ «Порт платформы ARM». opensolaris.org. Архивировано из оригинал 2 декабря 2012 г.. Получено 29 декабря 2012.
  146. ^ «Мультивизор на базе INTEGRITY от Green Hills Software представляет первое в отрасли 64-разрядное решение для безопасной виртуализации». ghs.com. Получено 14 марта 2018.
  147. ^ «Операционная система реального времени Enea OSE для 5G и LTE-A | Enea». www.enea.com. Получено 17 апреля 2018.
  148. ^ «Поддерживаемые платформы». docs.sel4.systems. Получено 23 ноября 2018.
  149. ^ «Платформа разработки программного обеспечения QNX (SDP 7.0) | BlackBerry QNX». www.blackberry.qnx.com. Получено 27 июля 2020.
  150. ^ Линус Торвальдс (1 октября 2012 г.). "Re: [GIT PULL] arm64: порт ядра Linux". Список рассылки ядра Linux (Список рассылки). Получено 2 мая 2019.
  151. ^ Ларабель, Майкл (27 февраля 2013 г.). "64-разрядная версия Ubuntu / Debian для ARM загружается". Фороникс. Получено 17 августа 2014.
  152. ^ «Новости проекта Debian - 14 августа 2014 г.». Debian. 14 августа 2014 г.. Получено 17 августа 2014.
  153. ^ «Ubuntu для ARM».
  154. ^ "Архитектура / AArch64". Получено 16 января 2015.
  155. ^ «Портал: ARM / AArch64». Получено 16 января 2015.
  156. ^ «Примечания к выпуску SUSE Linux Enterprise 12 SP2». Получено 11 ноября 2016.
  157. ^ «Red Hat представляет поддержку сервера ARM для Red Hat Enterprise Linux». redhat.com. Получено 18 января 2019.
  158. ^ «Обновление проекта 64-битной архитектуры ARM». Фонд FreeBSD. 24 ноября 2014 г.
  159. ^ "OpenBSD / arm64". Получено 7 августа 2017.
  160. ^ "NetBSD / arm64". Получено 5 августа 2018.
  161. ^ «HP и Asus анонсируют первые ПК с Windows 10 ARM: 20 часов автономной работы, гигабитный LTE». Ars Technica. Получено 22 января 2018. Эта новая версия Windows 10 - первая 64-разрядная операционная система Microsoft ARM. Он будет запускать x86- и 32-разрядные приложения ARM из Магазина, а со временем - 64-разрядные приложения ARM. Однако Microsoft еще не доработала свой 64-битный ARM SDK. Есть много компонентов (например, есть 64-битный компилятор ARM), но компания еще не принимает 64-битные приложения ARM, представленные в Store, и нет никаких 64-битных настольных приложений ARM.
  162. ^ Хасан, Мехеди (10 декабря 2016 г.). «Windows 10 на ARM64 получает первые скомпилированные приложения». MSPoweruser.
  163. ^ Филиппидис, Катрина (1 июня 2018 г.). «VLC становится одним из первых приложений ARM64 для Windows». Engadget.
  164. ^ Свитгалл, Марк (15 ноября 2018 г.). «Официальная поддержка Windows 10 при разработке ARM». Разработчик Windows. Блоги Windows. Microsoft. Получено 17 декабря 2019.
  165. ^ Гартенберг, Хаим (12 ноября 2020 г.). «macOS Big Sur теперь доступен для загрузки». Грани. Получено 13 ноября 2020.
  166. ^ Клевер, Джули (23 июня 2020 г.). «Rosetta не будет поддерживать приложения виртуализации x86 под управлением Windows». MacRumors. Получено 13 ноября 2020.
  167. ^ "ARM - Официальная винная вики". Получено 10 июля 2015.
  168. ^ "ARM64 - Официальная вики-страница о винах". Получено 10 июля 2015.
  169. ^ «Обновления безопасности ARM - разработчик ARM». ARM Разработчик. Получено 24 мая 2018.

дальнейшее чтение

внешние ссылки

Краткие справочные карты