stringtranslate.com

Семейство архитектуры ARM

ARM (стилизовано строчными буквами как arm , ранее аббревиатура от Advanced RISC Machines и изначально Acorn RISC Machine ) — семейство архитектур набора инструкций RISC (ISA) для компьютерных процессоров . Arm Holdings разрабатывает ISA и лицензирует их другим компаниям, которые создают физические устройства, использующие набор инструкций. Она также проектирует и лицензирует ядра , реализующие эти ISA.

Благодаря своей низкой стоимости, низкому энергопотреблению и низкому тепловыделению процессоры ARM полезны для легких, портативных устройств с питанием от батареи, включая смартфоны , ноутбуки и планшетные компьютеры , а также встраиваемые системы . [3] [4] [5] Однако процессоры ARM также используются для настольных компьютеров и серверов , включая Fugaku , самый быстрый в мире суперкомпьютер с 2020 [6] по 2022 год. С более чем 230 миллиардами произведенных чипов ARM, [7] [8] по крайней мере с 2003 года, и с его доминированием, растущим с каждым годом , ARM является наиболее широко используемым семейством архитектур набора инструкций. [9] [4] [10] [11] [12]

Было несколько поколений дизайна ARM. Оригинальный ARM1 использовал 32-битную внутреннюю структуру, но имел 26-битное адресное пространство , что ограничивало его 64 МБ основной памяти . Это ограничение было снято в серии ARMv3, которая имеет 32-битное адресное пространство, и несколько дополнительных поколений вплоть до ARMv7 оставались 32-битными. Выпущенная в 2011 году архитектура ARMv8-A добавила поддержку 64-битного адресного пространства и 64-битной арифметики с ее новым 32-битным набором инструкций фиксированной длины. [13] Arm Holdings также выпустила серию дополнительных наборов инструкций для различных правил; расширение «Thumb» добавляет как 32-битные, так и 16-битные инструкции для улучшенной плотности кода , в то время как Jazelle добавила инструкции для прямой обработки байт-кода Java . Более поздние изменения включают добавление одновременной многопоточности (SMT) для улучшения производительности или отказоустойчивости . [14]

История

Микро Би-би-си

Первой широко успешной разработкой Acorn Computers был BBC Micro , представленный в декабре 1981 года. Это была относительно обычная машина на базе процессора MOS Technology 6502 , но она работала примерно вдвое быстрее конкурирующих разработок, таких как Apple II, благодаря использованию более быстрой динамической памяти с произвольным доступом (DRAM). Типичная DRAM той эпохи работала на частоте около 2 МГц; Acorn заключила сделку с Hitachi на поставку более быстрых деталей на 4 МГц. [15]

Машины той эпохи обычно разделяли память между процессором и кадровым буфером , что позволяло процессору быстро обновлять содержимое экрана без необходимости выполнять отдельный ввод/вывод (I/O). Поскольку синхронизация видеодисплея была точной, видеооборудование должно было иметь приоритетный доступ к этой памяти. Из-за причуды конструкции 6502 ЦП оставлял память нетронутой в течение половины времени. Таким образом, работая ЦП на частоте 1 МГц, видеосистема могла считывать данные во время этих простоев, занимая общую полосу пропускания ОЗУ в 2 МГц. В BBC Micro использование ОЗУ на частоте 4 МГц позволяло использовать ту же технику, но работать на вдвое большей скорости. Это позволяло превзойти любую подобную машину на рынке. [16]

Acorn Бизнес Компьютер

1981 год был также годом, когда был представлен персональный компьютер IBM . Используя недавно представленный Intel 8088 , 16-битный процессор по сравнению с 8-битным дизайном 6502 , он предлагал более высокую общую производительность. Его появление радикально изменило рынок настольных компьютеров: то, что было в основном рынком хобби и игр, развивающимся в течение предыдущих пяти лет, начало меняться на обязательный бизнес-инструмент, где более ранние 8-битные дизайны просто не могли конкурировать. Даже более новые 32-битные дизайны также появлялись на рынке, такие как Motorola 68000 [17] и National Semiconductor NS32016 [18 ]

Acorn начала думать, как конкурировать на этом рынке, и выпустила новый бумажный проект под названием Acorn Business Computer . Они поставили себе цель создать машину с производительностью в десять раз выше, чем у BBC Micro, но по той же цене. [19] Это превзошло бы по производительности и было бы дешевле ПК. В то же время недавнее появление Apple Lisa принесло концепцию графического пользовательского интерфейса (GUI) более широкой аудитории и предположило, что будущее принадлежит машинам с GUI. [20] Lisa, однако, стоила 9995 долларов, так как она была укомплектована микросхемами поддержки, большим объемом памяти и жестким диском , что было очень дорого в то время. [21]

Затем инженеры начали изучать все доступные конструкции ЦП. Их вывод о существующих 16-битных конструкциях был таков: они были намного дороже и все еще были «немного дерьмовыми», [22] предлагая лишь немного более высокую производительность, чем их конструкция BBC Micro. Они также почти всегда требовали большого количества вспомогательных микросхем для работы даже на этом уровне, что увеличивало стоимость компьютера в целом. Эти системы просто не достигли бы цели проектирования. [22] Они также рассматривали новые 32-битные конструкции, но они стоили еще дороже и имели те же проблемы с вспомогательными микросхемами. [23] По словам Софи Уилсон , все протестированные в то время процессоры работали примерно одинаково, с пропускной способностью около 4 Мбит/с. [24] [a]

Два ключевых события привели Acorn на путь ARM. Одним из них была публикация серии отчетов Калифорнийского университета в Беркли , в которых говорилось, что простая конструкция чипа может, тем не менее, иметь чрезвычайно высокую производительность, намного выше, чем последние 32-битные конструкции на рынке. [25] Вторым событием был визит Стива Фербера и Софи Уилсон в Western Design Center , компанию, которой управляли Билл Менш и его сестра, которая стала логическим преемником команды MOS и предлагала новые версии, такие как WDC 65C02 . Команда Acorn увидела, как старшеклассники создают макеты чипов на машинах Apple II, что предполагало, что это может сделать любой. [26] [27] Напротив, визит в другую проектную фирму, работающую над современным 32-битным ЦП, выявил команду с более чем дюжиной членов, которые уже работали над ревизией H своего проекта, и тем не менее он все еще содержал ошибки. [b] Это закрепило их решение в конце 1983 года начать собственную разработку ЦП, Acorn RISC Machine. [28]

Концепции дизайна

Первоначальные проекты Berkeley RISC были в некотором смысле обучающими системами, не разработанными специально для прямой производительности. К основным концепциям RISC с большим количеством регистров и загрузкой/хранением ARM добавила ряд хорошо принятых проектных заметок 6502. Главной среди них была возможность быстро обслуживать прерывания , что позволяло машинам предлагать разумную производительность ввода/вывода без дополнительного внешнего оборудования. Чтобы предлагать прерывания с такой же производительностью, как у 6502, проект ARM ограничил свое физическое адресное пространство 64 МБ общего адресуемого пространства, требуя 26 бит адреса. Поскольку инструкции имели длину 4 байта (32 бита) и требовали выравнивания по 4-байтовым границам, нижние 2 бита адреса инструкции всегда были равны нулю. Это означало, что счетчику программ (PC) требовалось всего 24 бита, что позволяло хранить его вместе с восьмибитными флагами процессора в одном 32-битном регистре. Это означало, что при получении прерывания все состояние машины можно было сохранить за одну операцию, тогда как если бы PC был полным 32-битным значением, потребовались бы отдельные операции для сохранения PC и флагов состояния. Это решение вдвое сократило накладные расходы на прерывание. [29]

Другим изменением, одним из самых важных с точки зрения практической производительности в реальном мире, стала модификация набора инструкций для использования преимуществ страничного режима DRAM . Недавно представленный страничный режим позволял последующим доступам к памяти работать в два раза быстрее, если они находились примерно в одном и том же месте, или «странице», в чипе DRAM. Проект Беркли не рассматривал страничный режим и обрабатывал всю память одинаково. Проект ARM добавил специальные векторные инструкции доступа к памяти, «S-циклы», которые можно было использовать для заполнения или сохранения нескольких регистров на одной странице с использованием страничного режима. Это удваивало производительность памяти, когда они могли использоваться, и было особенно важно для графической производительности. [30]

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

Уилсон разработал набор инструкций, написав симуляцию процессора на BBC BASIC , которая работала на BBC Micro со вторым процессором 6502. [31] [32] Это убедило инженеров Acorn, что они на правильном пути. Уилсон обратился к генеральному директору Acorn Герману Хаузеру и запросил дополнительные ресурсы. Хаузер дал свое одобрение и собрал небольшую команду для разработки реального процессора на основе ISA Уилсона. [33] Официальный проект Acorn RISC Machine начался в октябре 1983 года.

АРМ1

ARM1 2-й процессор для BBC Micro

Acorn выбрала VLSI Technology в качестве «кремниевого партнёра», поскольку они были источником ПЗУ и заказных чипов для Acorn. Acorn предоставила дизайн, а VLSI обеспечила макет и производство. Первые образцы кремния ARM работали должным образом, когда были впервые получены и протестированы 26 апреля 1985 года. [3] Известные как ARM1, эти версии работали на частоте 6 МГц. [34]

Первое приложение ARM было в качестве второго процессора для BBC Micro, где оно помогло в разработке программного обеспечения для моделирования, чтобы завершить разработку микросхем поддержки (VIDC, IOC, MEMC), и ускорило программное обеспечение CAD, используемое при разработке ARM2. Впоследствии Уилсон переписал BBC BASIC на языке ассемблера ARM . Глубокие знания, полученные при проектировании набора инструкций, позволили сделать код очень плотным, что сделало ARM BBC BASIC чрезвычайно хорошим тестом для любого эмулятора ARM.

АРМ2

Результат моделирования на платах ARM1 привел к появлению в конце 1986 года конструкции ARM2, работающей на частоте 8 МГц, и в начале 1987 года — версии с увеличенной скоростью на частоте от 10 до 12 МГц. [c] Значительным изменением в базовой архитектуре стало добавление умножителя Booth , тогда как ранее умножение приходилось выполнять программно. [36] Кроме того, новый режим Fast Interrupt reQuest, сокращенно FIQ, позволял заменять регистры с 8 по 14 как часть самого прерывания. Это означало, что запросам FIQ не нужно было сохранять свои регистры, что еще больше ускоряло прерывания. [37]

Первым применением ARM2 стал персональный компьютер Acorn Archimedes моделей A305, A310 и A440, выпущенный в 1987 году.

Согласно тесту Dhrystone , ARM2 был примерно в семь раз производительнее типичной системы на базе 68000 с частотой 7 МГц, такой как Amiga или Macintosh SE . Он был вдвое быстрее Intel 80386, работающего на частоте 16 МГц, и примерно такой же скорости, как многопроцессорный суперминикомпьютер VAX-11/784 . Единственными системами, которые превзошли его, были рабочие станции Sun SPARC и MIPS R2000 на базе RISC . [38] Кроме того, поскольку ЦП был разработан для высокоскоростного ввода-вывода, он обходился без многих вспомогательных микросхем, которые можно было увидеть в этих машинах; в частности, у него не было выделенного контроллера прямого доступа к памяти (DMA), который часто встречался на рабочих станциях. Графическая система также была упрощена на основе того же набора базовых предположений о памяти и синхронизации. Результатом стала значительно упрощенная конструкция, предлагающая производительность на уровне дорогих рабочих станций, но по цене, аналогичной современным настольным компьютерам. [38]

ARM2 имел 32-битную шину данных , 26-битное адресное пространство и 27 32-битных регистров , из которых 16 доступны в любой момент времени (включая ПК ). [39] ARM2 имел количество транзисторов всего 30 000, [40] по сравнению с шестилетней старшей моделью Motorola 68000 с примерно 68 000. Большая часть этой простоты была обусловлена ​​отсутствием микрокода , который составляет около четверти или трети транзисторов 68000, и отсутствием (как и у большинства процессоров того времени) кэша . Эта простота позволила ARM2 иметь низкое энергопотребление и более простую тепловую упаковку за счет меньшего количества транзисторов с питанием. Тем не менее, ARM2 предлагал лучшую производительность, чем современный IBM PS/2 Model 50 1987 года , который изначально использовал Intel 80286 , предлагая 1,8 MIPS @ 10 МГц, а позднее, в 1987 году, 2 MIPS PS/2 70 с его Intel 386 DX @ 16 МГц. [41] [42]

Преемник, ARM3, был выпущен с кэшем 4 КБ, что еще больше повысило производительность. [43] Адресная шина была расширена до 32 бит в ARM6, но программный код все еще должен был находиться в пределах первых 64 МБ памяти в 26-битном режиме совместимости из-за зарезервированных бит для флагов состояния. [44]

Advanced RISC Machines Ltd. – ARM6

Микропроцессорная система на кристалле
Кристалл микропроцессора ARM610

В конце 1980-х годов Apple Computer и VLSI Technology начали работать с Acorn над новыми версиями ядра ARM. В 1990 году Acorn выделила команду разработчиков в новую компанию под названием Advanced RISC Machines Ltd., [45] [46] [47] которая стала ARM Ltd., когда ее материнская компания Arm Holdings plc вышла на Лондонскую фондовую биржу и Nasdaq в 1998 году. [48] Новая работа Apple–ARM в конечном итоге превратилась в ARM6, впервые выпущенный в начале 1992 года. Apple использовала ARM610 на базе ARM6 в качестве основы для своего Apple Newton PDA.

Первые лицензиаты

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

Доля рынка

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

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

Кристалл микроконтроллера STM32 F103VGT6 ARM Cortex-M3 с 1 МБ  флэш- памяти от STMicroelectronics

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

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

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

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

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

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

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

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

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

Компании, которые разработали чипы с ядрами, разработанными Arm, включают дочернюю компанию Amazon.com Annapurna Labs , [57] Analog Devices , Apple , AppliedMicro (теперь: MACOM Technology Solutions [58] ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (теперь NXP Semiconductors ), Huawei , Intel , [ сомнительнообсудить ] Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas Instruments и Xilinx .

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

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

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

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

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

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

16 июля 2019 года ARM анонсировала ARM Flexible Access. ARM Flexible Access предоставляет неограниченный доступ к включенной интеллектуальной собственности ARM (ИС) для разработки. Лицензионные сборы за продукт требуются, как только клиент достигает литейной сборки или прототипирования. [60] [61]

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

Ядра

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

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

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

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

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

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

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

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

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

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

Начиная с 1995 года, различные версии ARM Architecture Reference Manual (см. § Внешние ссылки) были основным источником документации по архитектуре процессора ARM и набору инструкций, отличая интерфейсы, которые должны поддерживать все процессоры ARM (например, семантику инструкций), от деталей реализации, которые могут различаться. Архитектура развивалась с течением времени, и седьмая версия архитектуры, ARMv7, определяет три «профиля» архитектуры:

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

Режимы ЦП

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

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

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

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

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

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

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

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

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

Регистры

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

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

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

Псевдонимы:

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

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

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

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

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

int gcd ( int a , int b ) { while ( a != b ) // Мы входим в цикл, когда a < b или a > b, но не когда a == b if ( a > b ) // Когда a > b мы делаем это a -= b ; else // Когда a < b мы делаем это (не нужно "if (a < b)", так как a != b проверяется в условии while) b -= a ; return a ; }                         

Тот же алгоритм можно переписать ближе к целевым инструкциям ARM следующим образом:

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

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

; присвоить a регистру r0, b r1 цикл: CMP r0 , r1 ; установить условие "NE" если (a ≠ b), ; "GT" если (a > b), ; или "LT" если (a < b) SUBGT r0 , r0 , r1 ; если "GT" (больше), то a = a − b SUBLT r1 , r1 , r0 ; если "LT" (меньше), то b = b − a BNE цикл ; если "NE" (не равно), то цикл B lr ; возврат                      

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

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

Другие особенности

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

а += ( j << 2 );    

можно представить как однословную инструкцию, состоящую из одного цикла: [114]

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

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

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

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

Трубопроводы и другие вопросы внедрения

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

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

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

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

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

Отладка

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

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

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

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

Порт отладки (DAP) — это реализация интерфейса отладки ARM. [115] Существует две различные поддерживаемые реализации: порт отладки Serial Wire JTAG (SWJ-DP) и порт отладки Serial Wire (SW-DP). [116] CMSIS-DAP — это стандартный интерфейс, описывающий, как различное отладочное программное обеспечение на хост-компьютере может взаимодействовать через USB с прошивкой, работающей на аппаратном отладчике, которая, в свою очередь, взаимодействует через SWD или JTAG с процессором ARM Cortex с поддержкой CoreSight. [117] [118] [119]

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

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

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

Впервые представленное в 1999 году, это расширение набора основных инструкций контрастировало с более ранним сопроцессором DSP ARM, известным как Piccolo, который использовал отдельный, несовместимый набор инструкций, выполнение которого включало отдельный счетчик программ. [121] Инструкции Piccolo использовали отдельный файл регистров из шестнадцати 32-битных регистров, причем некоторые инструкции объединяли регистры для использования в качестве 48-битных аккумуляторов, а другие инструкции адресовали 16-битные полурегистры. Некоторые инструкции могли работать с двумя такими 16-битными значениями параллельно. Связь с файлом регистров Piccolo включала загрузку в Piccolo и сохранение из инструкций сопроцессора Piccolo через два буфера из восьми 32-битных записей. Описанный как напоминающий другие подходы, в частности SH-DSP от Hitachi и 68356 от Motorola, Piccolo не использовал выделенную локальную память и полагался на полосу пропускания ядра ARM для извлечения операндов DSP, влияя на параллельную производительность. [122] Отличительный набор инструкций Piccolo также оказался не «хорошей целью компилятора». [121]

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

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

Джазель

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

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

Для улучшения плотности компилируемого кода процессоры, начиная с ARM7TDMI (выпущенного в 1994 году [124] ), имеют сжатый набор инструкций Thumb , который имеет свое собственное состояние. («T» в «TDMI» указывает на функцию Thumb.) В этом состоянии процессор выполняет набор инструкций Thumb, компактное 16-битное кодирование для подмножества набора инструкций ARM. [125] Большинство инструкций 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-битную шинную доступную память.

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

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

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

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

; if (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: нет кода ... Thumb: инструкция IT ; then r0 = r2; MOVEQ r0 , r2 ; ARM: условная; Thumb: условие через ITE 'T' (then) ; else r0 = r3; MOVNE r0 , r3 ; ARM: условная; Thumb: условие через ITE 'E' (else) ; напомним, что инструкция Thumb MOV не имеет битов для кодирования "EQ" или "NE".          

Все чипы ARMv7 поддерживают набор инструкций Thumb. Все чипы серии Cortex-A, поддерживающие ARMv7, все серии Cortex-R и все серии ARM11 поддерживают как «состояние набора инструкций ARM», так и «состояние набора инструкций Thumb», тогда как чипы серии Cortex -M поддерживают только набор инструкций Thumb. [127] [128] [129]

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

ThumbEE (ошибочно называемый Thumb-2EE в некоторой документации ARM), который был продан как Jazelle RCT [130] (Runtime Compilation Target), был анонсирован в 2005 году и устарел в 2011 году. Впервые он появился в процессоре Cortex-A8 . ThumbEE — это четвертое состояние набора инструкций, вносящее небольшие изменения в расширенный набор инструкций Thumb-2. Эти изменения делают набор инструкций особенно подходящим для кода, генерируемого во время выполнения (например, путем JIT-компиляции ) в управляемых средах выполнения . ThumbEE — это цель для таких языков, как Java , C# , Perl и Python , и позволяет JIT-компиляторам выводить меньший скомпилированный код без снижения производительности. [ необходима цитата ]

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

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

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

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

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

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 и Tegra 2 (Cortex-A9).
VFPv3-F16
Необычно; поддерживает формат хранения данных с плавающей запятой половинной точности (16 бит) IEEE754-2008 .
VFPv4 или VFPv4-D32
Реализованный на процессорах Cortex-A12 и A15 ARMv7, Cortex-A7 опционально имеет VFPv4-D32 в случае FPU с Neon. [137] VFPv4 имеет 32 64-битных регистра FPU в стандартной комплектации, добавляет как поддержку половинной точности в качестве формата хранения, так и объединенные инструкции умножения-накопления к функциям VFPv3.
VFPv4-D16
Как и выше, но имеет только 16 64-битных регистров FPU. Реализовано на процессорах Cortex-A5 и A7 в случае FPU без Neon. [137]
VFPv5-D16-M
Реализовано на Cortex-M7 при наличии опции ядра с плавающей запятой одинарной и двойной точности.

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

Расширенный SIMD (Неон)

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

Странность Neon в устройствах Armv7 заключается в том, что он сбрасывает все субнормальные числа в ноль, и в результате компилятор GCC не будет использовать его, если не -funsafe-math-optimizationsвключен , который позволяет терять денормальные числа. «Улучшенный» Neon определен, поскольку Armv8 не имеет этой странности, но с GCC 8.2 тот же флаг по-прежнему требуется для включения инструкций Neon. [143] С другой стороны, GCC считает Neon безопасным на AArch64 для Armv8.

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

Технология ARM Helium

Helium — это расширение M-Profile Vector Extension (MVE). Оно добавляет более 150 скалярных и векторных инструкций. [145]

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

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

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

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

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

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

AMD лицензировала и включила технологию TrustZone в свою технологию Secure Processor Technology . [151] APU AMD включают процессор Cortex-A5 для безопасной обработки, который включен в некоторые, но не во все продукты. [152] [153] [154] Фактически, ядро ​​Cortex-A5 TrustZone было включено в более ранние продукты AMD, но не было включено из-за ограничений по времени. [153]

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

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

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

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

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

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

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

Размер физического адреса может быть даже больше в процессорах на базе 64-битной архитектуры (Armv8-A). Например, в Cortex-A75 и Cortex-A65AE он составляет 44 бита. [158]

Армв8-Р и Армв8-М

Архитектуры Armv8-R и Armv8-M , анонсированные после архитектуры Armv8-A, разделяют некоторые функции с Armv8-A. Однако Armv8-M не включает никаких 64-битных инструкций AArch64, а Armv8-R изначально не включал никаких инструкций AArch64; эти инструкции были добавлены в Armv8-R позже.

Армв8.1-М

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

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

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

Армв8

Армв8-А

Анонсированный в октябре 2011 года [13] Armv8-A (часто называемый ARMv8, хотя также доступен Armv8-R) представляет собой фундаментальное изменение архитектуры ARM. Он поддерживает два состояния выполнения : 64-битное состояние с именем AArch64 и 32-битное состояние с именем AArch32 . В состоянии AArch64 поддерживается новый 64-битный набор инструкций A64 ; в состоянии AArch32 поддерживаются два набора инструкций: исходный 32-битный набор инструкций, названный A32 , и 32-битный набор инструкций Thumb-2, названный T32 . AArch32 обеспечивает совместимость пользовательского пространства с Armv7-A. Состояние процессора может изменяться при изменении уровня исключения; это позволяет запускать 32-битные приложения в состоянии AArch32 под управлением 64-битной ОС, ядро ​​которой выполняется в состоянии AArch64, и позволяет 32-битной ОС работать в состоянии AArch32 под управлением 64-битного гипервизора, работающего в состоянии AArch64. [1] ARM анонсировала свои ядра Cortex-A53 и Cortex-A57 30 октября 2012 года. [73] Apple была первой, кто выпустил ядро, совместимое с Armv8-A, в потребительском продукте ( Apple A7 в iPhone 5S ). AppliedMicro , использующая FPGA , была первой, кто продемонстрировал Armv8-A. [159] Первая система на кристалле Armv8-A от Samsung — это Exynos 5433, используемая в Galaxy Note 4 , которая имеет два кластера по четыре ядра Cortex-A57 и Cortex-A53 в конфигурации big.LITTLE ; но он будет работать только в режиме AArch32. [160]

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

Процессор ARMv8-A может поддерживать один или оба из AArch32 и AArch64; он может поддерживать AArch32 и AArch64 на более низких уровнях исключений и только AArch64 на более высоких уровнях исключений. [162] Например, ARM Cortex-A32 поддерживает только AArch32, [163] ARM Cortex-A34 поддерживает только AArch64, [164] а ARM Cortex-A72 поддерживает как AArch64, так и AArch32. [165] Процессор ARMv9-A должен поддерживать AArch64 на всех уровнях исключений и может поддерживать AArch32 на уровне EL0. [162] Некоторые процессоры ARMv8-A, такие как Apple M1 и Apple A11 , вообще не поддерживают приложения AArch32.

Армв8-Р

Опциональная поддержка AArch64 была добавлена ​​в профиль Armv8-R, причем первым ядром ARM, реализующим ее, стало Cortex-R82. [166] Он добавляет набор инструкций A64.

Армв9

Армв9-А

Анонсированная в марте 2021 года обновленная архитектура делает акцент на безопасном выполнении и разделении . [167] [168]

Arm SystemReady

Arm SystemReady, ранее называвшаяся Arm ServerReady, — это программа сертификации, которая помогает внедрять стандартные операционные системы и гипервизоры в системы на базе Arm, от серверов центров обработки данных до промышленных периферийных устройств и устройств IoT. Ключевыми строительными блоками программы являются спецификации минимальных требований к оборудованию и прошивке, на которые могут полагаться операционные системы и гипервизоры. Эти спецификации следующие: [169]

Эти спецификации совместно разработаны Arm и ее партнерами из Консультативного комитета по архитектуре систем (SystemArchAC).

Architecture Compliance Suite (ACS) — это инструменты тестирования, которые помогают проверить соответствие этим спецификациям. Спецификация требований Arm SystemReady документирует требования сертификаций. [174]

Эта программа была представлена ​​Arm в 2020 году на первом мероприятии DevSummit . Ее предшественник Arm ServerReady был представлен в 2018 году на мероприятии Arm TechCon. В настоящее время эта программа включает четыре группы:

Сертифицировано PSA

PSA Certified , ранее называвшаяся Platform Security Architecture, представляет собой архитектурно-независимую структуру безопасности и схему оценки. Она предназначена для защиты устройств Интернета вещей (IoT), построенных на процессорах system-on-a-chip (SoC). [175] Она была введена для повышения безопасности в случаях, когда полностью доверенная среда выполнения слишком велика или сложна. [176]

Архитектура была представлена ​​Arm в 2017 году на ежегодном мероприятии TechCon . [176] [177] Хотя схема не зависит от архитектуры, она была впервые реализована на ядрах процессора Arm Cortex-M, предназначенных для использования в микроконтроллерах. Сертификация PSA включает в себя свободно доступные модели угроз и анализы безопасности, которые демонстрируют процесс принятия решения о функциях безопасности в распространенных продуктах IoT. [178] Она также предоставляет свободно загружаемые пакеты интерфейса прикладного программирования (API), архитектурные спецификации, реализации прошивки с открытым исходным кодом и соответствующие тестовые наборы. [179]

После разработки структуры безопасности архитектуры в 2017 году схема обеспечения PSA Certified была запущена два года спустя на Embedded World в 2019 году. [180] PSA Certified предлагает многоуровневую схему оценки безопасности для поставщиков микросхем, поставщиков ОС и производителей устройств IoT. [181] Презентация Embedded World познакомила поставщиков микросхем с сертификацией уровня 1. В то же время был представлен проект защиты уровня 2. [182] Сертификация уровня 2 стала применимым стандартом в феврале 2020 года. [183]

Сертификация была создана PSA Joint Stakeholders для обеспечения подхода безопасности по проектированию для разнообразного набора продуктов IoT. Спецификации, сертифицированные PSA, не зависят от реализации и архитектуры, поэтому их можно применять к любому чипу, программному обеспечению или устройству. [184] [182] Сертификация также устраняет фрагментацию отрасли для производителей и разработчиков продуктов IoT . [185]

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

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

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

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

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

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

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

По состоянию на март 2024 года 32-разрядная архитектура ARM была основной аппаратной средой для большинства операционных систем мобильных устройств, таких как следующие, но многие из этих платформ, такие как Android и Apple iOS, перешли на 64-разрядную архитектуру ARM:

Ранее, но сейчас прекращено:

Операционные системы для настольных компьютеров и серверов

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

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

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

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

Операционные системы для настольных компьютеров и серверов

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

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

Примечания

  1. ^ При использовании 32-битных слов 4 Мбит/с соответствуют 1 MIPS .
  2. ^ В доступных источниках не упоминается, какая именно это была команда разработчиков, но, учитывая время и известную историю разработок той эпохи, вполне вероятно, что это была команда National Semiconductor, чей NS32016 страдал от большого количества ошибок.
  3. ^ Мэтт Эванс отмечает, что, по-видимому, более быстрые версии были просто помещены выше и, по-видимому, не имеют никаких основных изменений. [35]

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

Ссылки

Цитаты

  1. ^ abcdef Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF) . Архивировано из оригинала (PDF) 11 ноября 2011 г. . Получено 31 октября 2011 г. .
  2. ^ "6.1.2.1 Соглашения об использовании регистров VFP". Стандарт вызова процедур для архитектуры ARM . Arm Holdings . 6 октября 2023 г. Получено 22 августа 2024 г.
  3. ^ ab Wilson, Roger (2 ноября 1988 г.). "Некоторые факты о машине Acorn RISC". Группа новостей : comp.arch . Получено 25 мая 2007 г.
  4. ^ ab Hachman, Mark (14 октября 2002 г.). «ARM Cores Climb into 3G Territory». ExtremeTech . Получено 24 мая 2018 г. .
  5. ^ Терли, Джим (18 декабря 2002 г.). «Двухпроцентное решение». Встроено . Получено 14 февраля 2023 г.
  6. ^ Катресс, Ян (22 июня 2020 г.). «Новый суперкомпьютер № 1: Fujitsu Fugaku и A64FX выводят Arm на вершину с 415 петафлопс». anandtech.com . Получено 25 января 2021 г.
  7. ^ "Arm Partners Have Shipted 200 Billion Chips". Arm (пресс-релиз) . Получено 3 ноября 2021 г.
  8. ^ "Включение массового подключения IoT по мере поставки партнерами ARM 100 миллиардов чипов". community.arm.com . 27 февраля 2017 г. . Получено 8 апреля 2020 г. . совокупное развертывание 100 миллиардов чипов, половина из которых была поставлена ​​за последние четыре года. [..] почему не триллион или больше? Это наша цель — развертывание триллиона подключенных устройств в течение следующих двух десятилетий.
  9. ^ «Рынок микроконтроллеров переходит на 32-битные и ARM-устройства: 32-битные лидируют в продажах; 16-битные лидируют в поставках единиц». IC Insights. 25 апреля 2013 г. Получено 1 июля 2014 г.
  10. ^ Терли, Джим (2002). «Двухпроцентное решение». embedded.com.
  11. ^ "Arm Holdings стремится к расширению ПК и серверов". The Register . 1 февраля 2011 г.
  12. ^ МакГвайр-Баланза, Керри (11 мая 2010 г.). «ARM от нуля до миллиардов за 25 коротких лет». Arm Holdings . Получено 8 ноября 2012 г.
  13. ^ ab "ARM раскрывает технические подробности следующей версии архитектуры ARM" (пресс-релиз). Arm Holdings . 27 октября 2011 г. Архивировано из оригинала 1 января 2019 г. Получено 20 сентября 2013 г.
  14. ^ "Анонс платформы ARM Neoverse N1". community.arm.com . 20 февраля 2019 г. . Получено 8 апреля 2020 г. .
  15. ^ Фэрберн, Дуглас (31 января 2012 г.). «Устная история Софи Уилсон» (PDF) . Архивировано (PDF) из оригинала 3 марта 2016 г. . Получено 2 февраля 2016 г. .
  16. ^ Смит, Тони (30 ноября 2011 г.). «BBC Micro исполняется 30 лет». The Register Hardware . Архивировано из оригинала 12 декабря 2011 г. Получено 12 декабря 2011 г.
  17. ^ Полссон, Кен. «Хронология микропроцессоров». Processortimeline.info . Архивировано из оригинала 9 августа 2018 года . Получено 27 сентября 2013 года .
  18. ^ Лиди, Гленн (апрель 1983 г.). «Семейство микропроцессоров National Semiconductor NS16000». Byte . стр. 53–66 . Получено 22 августа 2020 г. .
  19. ^ Эванс 2019, 6:00.
  20. Manners, David (29 апреля 1998 г.). "ARM's way". Electronics Weekly . Архивировано из оригинала 29 июля 2012 г. Получено 26 октября 2012 г.
  21. ^ Эванс 2019, 5:30.
  22. ^ Эванс 2019, 7:45.
  23. ^ Эванс 2019, 8:30.
  24. Софи Уилсон на Alt Party 2009 (часть 3/8). Архивировано из оригинала 11 декабря 2021 г.
  25. ^ Chisnall, David (23 августа 2010 г.). Understanding ARM Architectures . Получено 26 мая 2013 г.
  26. ^ Эванс 2019, 9:00.
  27. ^ Фурбер, Стивен Б. (2000). Архитектура ARM-системы на кристалле . Бостон: Addison-Wesley. ISBN 0-201-67519-6.
  28. ^ Эванс 2019, 9:50.
  29. Эванс 2019, 23:30.
  30. ^ Эванс 2019, 26:00.
  31. ^ «История разработки набора инструкций ARM с Софи Уилсон (часть 3)». 10 мая 2015 г. Архивировано из оригинала 11 декабря 2021 г. Получено 25 мая 2020 г. – через YouTube.
  32. ^ "Устная история Софи Уилсон – стипендиат Музея компьютерной истории 2012 года" (PDF) . Музей компьютерной истории . 31 января 2012 г. . Получено 25 мая 2020 г. .
  33. ^ Харкер, Т. (лето 2009 г.). «ARM серьезно относится к IP (Вторая часть из двух частей [Мнение Associated Editors]». Журнал IEEE Solid-State Circuits . 1 (3): 8–69. doi :10.1109/MSSC.2009.933674. ISSN  1943-0590. S2CID  36567166.
  34. ^ Эванс 2019, 20:30.
  35. ^ Эванс 2019, 22:00.
  36. Эванс 2019, 21:30.
  37. ^ Эванс 2019, 22:0030.
  38. ^ Эванс 2019, 14:00.
  39. ^ "От одной Arm к другой! Процессоры и архитектуры ARM" . Получено 31 мая 2022 г.
  40. ^ Леви, Маркус. «История архитектуры ARM: от зарождения до IPO» (PDF) . Получено 18 июля 2022 г.
  41. Представляем Commodore Amiga 3000 (PDF) . Commodore-Amiga, Inc. 1991.
  42. ^ "Заявления о скорости MIPS и MFLOPS компьютеров с 1980 по 1996 год". www.roylongbottom.org.uk . Получено 17 июня 2023 г. .
  43. ^ Сантану Чаттопадхай (2010). Проектирование встроенных систем. PHI Learning Pvt. Ltd. стр. 9. ISBN 978-81-203-4024-4.
  44. ^ Ричард Мюррей. «32-битная операция».
  45. ^ "ARM Company Milestones". ARM . Архивировано из оригинала 20 апреля 2015 . Получено 8 апреля 2015 .
  46. ^ Эндрюс, Джейсон (2005). "3 темы проверки SoC для архитектуры ARM". Совместная проверка оборудования и программного обеспечения для проектирования ARM SoC . Оксфорд, Великобритания: Elsevier . С. 69. ISBN 0-7506-7730-9. ARM начиналась как филиал Acorn Computer в Кембридже, Англия, с образованием совместного предприятия между Acorn, Apple и VLSI Technology. Команда из двенадцати сотрудников разработала проект первого микропроцессора ARM между 1983 и 1985 годами.
  47. Вебер, Джонатан (28 ноября 1990 г.). «Apple присоединяется к Acorn, VLSI в предприятии по производству чипов». Los Angeles Times . Лос-Анджелес . Получено 6 февраля 2012 г. Apple инвестировала около 3 миллионов долларов (примерно 1,5 миллиона фунтов стерлингов) за 30% акций компании, получившей название Advanced Risc Machines Ltd. (ARM) [...]
  48. ^ "ARM Corporate Backgrounder" (PDF) . ARM . Архивировано из оригинала (PDF) 4 октября 2006 г.
  49. ^ Монтанаро, Джеймс и др. (1997). "160-МГц, 32-бит, 0,5-Вт КМОП RISC микропроцессор" (PDF) . Цифровой технический журнал . 9 (1): 49–62.
  50. ^ DeMone, Paul (9 ноября 2000 г.). «Гонка ARM за мировое господство в области встраиваемых систем». Real World Technologies . Получено 6 октября 2015 г.
  51. ^ "Марш машин". technologyreview.com . MIT Technology Review . 20 апреля 2010 г. Архивировано из оригинала 16 октября 2015 г. Получено 6 октября 2015 г.
  52. Krazit, Tom (3 апреля 2006 г.). «ARMed for the living room». CNET.
  53. Трейси Робинсон (12 февраля 2014 г.). «Празднование 50 миллиардов отгруженных чипов на базе ARM».
  54. Сара Мюрри (3 марта 2014 г.). «ARM's Reach: 50 Billion Chip Milestone». Архивировано из оригинала 16 сентября 2015 г.
  55. ^ Браун, Эрик (2009). "ARM netbook ships with detachable tablet". Архивировано из оригинала 3 января 2013 года . Получено 19 августа 2009 года .
  56. Питер Кларк (7 января 2016 г.). «Amazon теперь продает собственные чипы ARM».
  57. ^ «MACOM успешно завершила приобретение AppliedMicro» (пресс-релиз). 26 января 2017 г.
  58. ^ Фрумусану, Андрей. "ARM Details Built on ARM Cortex Technology License". AnandTech . Получено 26 мая 2019 г. .
  59. ^ Катресс, Ян. «Гибкий доступ ARM: проектируйте SoC, прежде чем тратить деньги». AnandTech . Получено 9 октября 2019 г.
  60. ^ "ARM Flexible Access Frequently Asked Questions". ARM . Получено 9 октября 2019 г. .
  61. ^ Нолтинг, Стефан. "STORM CORE Processor System" (PDF) . OpenCores . Получено 1 апреля 2014 г. .
  62. ^ ZAP на GitHub
  63. ^ "Процессор Cortex-M23". ARM . Получено 27 октября 2016 г. .
  64. ^ "Процессор Cortex-M33". ARM . Получено 27 октября 2016 г. .
  65. ^ "Архитектура ARMv8-M упрощает безопасность для интеллектуальных встраиваемых систем". ARM . Получено 10 ноября 2015 г. .
  66. ^ Ltd, Arm. "M-Profile Architectures". Arm | Архитектура для цифрового мира . Получено 29 августа 2023 г.
  67. ^ "ARMv8-R Architecture" . Получено 10 июля 2015 г. .
  68. ^ Craske, Simon (октябрь 2013 г.). "ARM Cortex-R Architecture" (PDF) . Arm Holdings. Архивировано из оригинала (PDF) 6 апреля 2014 г. Получено 1 февраля 2014 г.
  69. ^ Смит, Райан (20 сентября 2016 г.). «ARM анонсирует процессор Cortex-R52: детерминированный и безопасный, для ADAS и многого другого». AnandTech . Получено 20 сентября 2016 г.
  70. ^ "Процессор Cortex-A32". ARM . Получено 10 октября 2019 .
  71. ^ "Процессор Cortex-A35". ARM . Получено 10 ноября 2015 г. .
  72. ^ ab "ARM запускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире" (пресс-релиз). Arm Holdings . Получено 31 октября 2012 г. .
  73. ^ "Процессор Cortex-A72". ARM . Получено 10 июля 2015 г. .
  74. ^ "Процессор Cortex-A73". ARM . Получено 2 июня 2016 г. .
  75. ^ "ARMv8-A Architecture" . Получено 10 июля 2015 г. .
  76. ^ "Cavium Thunder X увеличивает количество ядер ARM до 48 на одном чипе". SemiAccurate . 3 июня 2014 г.
  77. ^ "Cavium at Supercomputing 2014". Yahoo Finance . 17 ноября 2014 г. Архивировано из оригинала 16 октября 2015 г. Получено 15 января 2017 г.
  78. ^ Берт, Джефф (17 ноября 2014 г.). «Cray собирается оценить чипы ARM в своих суперкомпьютерах». eWeek .
  79. ^ "Samsung анонсирует Exynos 8890 с модемом Cat.12/13 и специальным процессором". AnandTech .
  80. ^ "Процессор Cortex-A34". ARM . Получено 10 октября 2019 г. .
  81. ^ "D21500 [AARCH64] Добавлена ​​поддержка Broadcom Vulcan". reviews.llvm.org .
  82. ^ "Процессор Cortex-A55". ARM . Получено 29 мая 2017 .
  83. ^ "Процессор Cortex-A75". ARM . Получено 29 мая 2017 г. .
  84. ^ "Процессор Cortex-A76". ARM . Получено 11 октября 2018 г. .
  85. ^ Беренис Манн (апрель 2017 г.). «Архитектура ARM – эволюция и поставка ARMv8.2-A». community.ARM.com .
  86. ^ Фрумусану, Андрей. "Samsung анонсирует Exynos 9825 SoC: первый 7-нм EUV-кремниевый чип". AnandTech . Получено 11 октября 2019 г. .
  87. ^ "Fujitsu начала производить миллиарды супервычислений в Японии с самым мощным процессором ARM A64FX". China IT News . Архивировано из оригинала 20 июня 2019 г. Получено 17 августа 2019 г. Чип ARMv8 SVE (Scalable Vector Extension), использующий 512-битную плавающую точку.
  88. ^ "Cortex-A65AE – ARM". ARM . Получено 8 апреля 2020 г. . может выполнять два потока параллельно в каждом цикле. Каждый поток может находиться на разных уровнях исключений и запускать разные операционные системы.
  89. ^ Фрумусану, Андрей. "Marvell анонсирует ThunderX3: 96 ядер и 384 потока 3-го поколения ARM серверный процессор". AnandTech . Получено 26 мая 2020 г. .
  90. ^ "AArch64: добавить поддержку новых процессоров Apple · apple/llvm-project@677da09". GitHub . Получено 23 сентября 2022 г. .
  91. ^ "Новые возможности архитектуры Armv8-A - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 21 сентября 2020 г. . Получено 28 декабря 2021 г. .
  92. ^ "Решение Arm для будущих потребностей ИИ, безопасности и специализированных вычислений — v9". Arm . Получено 16 августа 2021 г. .
  93. ^ "Первые процессоры Armv9 Cortex для потребительских вычислений". community.arm.com . 25 мая 2021 г. . Получено 16 августа 2021 г. .
  94. ^ "Документация – Arm Developer". developer.arm.com . Получено 3 октября 2024 г. .
  95. ^ "Документация – Arm Developer". developer.arm.com . Получено 3 октября 2024 г. .
  96. ^ «Поддержка Apple M4 добавлена ​​в компилятор LLVM, подтверждая его возможности ISA». www.phoronix.com . Получено 15 июня 2024 г. .
  97. ^ "Разработки архитектуры Arm A-Profile 2021 г. - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 8 сентября 2021 г. . Получено 25 сентября 2023 г. .
  98. ^ "Разработки архитектуры Arm A-Profile 2022 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 29 сентября 2022 г. . Получено 25 сентября 2023 г. .
  99. ^ "Разработки архитектуры Arm A-Profile 2023 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 29 сентября 2022 г. . Получено 11 октября 2024 г. .
  100. ^ "Разработки архитектуры Arm A-Profile 2024 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 29 сентября 2022 г. . Получено 11 октября 2024 г. .
  101. ^ "Line Card" (PDF) . 2003 . Получено 1 октября 2012 .
  102. ^ Пэрриш, Кевин (14 июля 2011 г.). «Миллион ядер ARM, связанных для моделирования мозга». EE Times . Получено 2 августа 2011 г.
  103. ^ "Режим процессора". Arm Holdings . Получено 26 марта 2013 г.
  104. ^ "KVM/ARM" (PDF) . Получено 14 февраля 2023 г.
  105. ^ Браш, Дэвид (август 2010 г.). Расширения архитектуры ARMv7-A . Симпозиум IEEE Hot Chips 22 (HCS) 2010 г. стр. 1–21. doi :10.1109/HOTCHIPS.2010.7480070. ISBN 978-1-4673-8875-7. S2CID  46339775.
  106. ^ «Как компилятор ARM поддерживает невыровненный доступ?». 2011. Получено 5 октября 2013 г.
  107. ^ "Невыровненный доступ к данным" . Получено 5 октября 2013 г.
  108. ^ "Техническое справочное руководство Cortex-M0 r0p0" (PDF) . Arm .
  109. ^ "Справочное руководство по архитектуре ARMv7-M". Arm . Получено 18 июля 2022 г. .
  110. ^ ab "Справочное руководство по архитектуре ARMv7-A и ARMv7-R; Arm Holdings". arm.com . Получено 19 января 2013 г. .
  111. ^ "ARM Information Center" . Получено 10 июля 2015 г. .
  112. ^ "Коды состояний 1: Флаги и коды состояний". Сообщество ARM . 11 сентября 2013 г. Получено 26 сентября 2019 г.
  113. ^ "9.1.2. Количество циклов инструкций".
  114. ^ «Компоненты CoreSight: О порте доступа к отладке».
  115. ^ «Cortex-M3: порт отладочного доступа (DAP)».
  116. ^ Андерсон, Майк. «Понимание параметров отладки ARM HW» (PDF) .
  117. ^ «Руководство пользователя отладчика CMSIS-DAP».
  118. ^ "CMSIS-DAP".
  119. ^ "ARM DSP Instruction Set Extensions". arm.com . Архивировано из оригинала 14 апреля 2009 . Получено 18 апреля 2009 .
  120. ^ ab Clarke, Peter (3 мая 1999 г.). "EPF: ARC, ARM добавляют расширения DSP к своим ядрам RISC". EE Times . Получено 15 марта 2024 г.
  121. ^ Терли, Джим (18 ноября 1996 г.). «ARM настраивает Piccolo для повышения производительности DSP» (PDF) . Отчет о микропроцессорах . Получено 15 марта 2024 г. .
  122. ^ "DSP & SIMD" . Получено 10 июля 2015 г.
  123. ^ "Техническое справочное руководство ARM7TDMI" (PDF) . стр. ii.
  124. ^ Джаггар, Дэйв (1996). Справочное руководство по архитектуре ARM . Prentice Hall. стр. 6–1. ISBN 978-0-13-736299-8.
  125. ^ Натан Уиллис (10 июня 2015 г.). «Воскрешение архитектуры SuperH». LWN.net .
  126. ^ "ARM Processor Instruction Set Architecture". ARM.com. Архивировано из оригинала 15 апреля 2009 года . Получено 18 апреля 2009 года .
  127. ^ "ARM aims son of Thumb at uCs, ASSPs, SoCs". Linuxdevices.com. Архивировано из оригинала 9 декабря 2012 года . Получено 18 апреля 2009 года .
  128. ^ "ARM Information Center". Infocenter.arm.com . Получено 18 апреля 2009 г. .
  129. ^ "Jazelle". ARM Ltd. Архивировано из оригинала 2 июня 2017 года.
  130. ^ Том Р. Халфхилл (2005). "ARM усиливает компиляторы Java: новые 16-битные инструкции Thumb-2EE экономят системную память" (PDF) . Архивировано из оригинала (PDF) 5 октября 2007 г.
  131. ^ Справочное руководство по архитектуре ARM, издания Armv7-A и Armv7-R, выпуск Cb, раздел A2.10, 25 июля 2012 г.
  132. ^ "ARM Compiler toolchain Using the Assembler – VFP coprocessor". ARM.com . Получено 20 августа 2014 г. .
  133. ^ "Директивы VFP и векторная нотация". ARM.com . Получено 21 ноября 2011 г. .
  134. ^ ab "Различия между ARM Cortex-A8 и Cortex-A9". Шервин Эмами . Получено 21 ноября 2011 г.
  135. ^ "FPA10 Data Sheet" (PDF) . chrisacorns.computinghistory.org.uk . GEC Plessey Semiconductors. 11 июня 1993 г. . Получено 26 ноября 2020 г. В отношении IEEE 754-1985 FPA достигает соответствия в арифметике с одинарной точностью [...] Иногда умножения с двойной и расширенной точностью могут выполняться с ошибкой в ​​1 или 2 единицы в младшем разряде мантиссы.
  136. ^ ab "Cortex-A7 MPCore Technical Reference Manual – 1.3 Features". ARM . Получено 11 июля 2014 г. .
  137. ^ "ArmHardFloatPort – Debian Wiki". Wiki.debian.org. 20 августа 2012 г. Получено 8 января 2014 г.
  138. ^ "Процессор Cortex-A9". arm.com . Получено 21 ноября 2011 г. .
  139. ^ "О Cortex-A9 NEON MPE". arm.com . Получено 21 ноября 2011 г. .
  140. ^ "US20050125476A1".
  141. ^ "US20080141004A1".
  142. ^ "ARM Options". Руководство по коллекции компиляторов GNU . Получено 20 сентября 2019 г.
  143. ^ Ne10: проект открытой оптимизированной библиотеки программного обеспечения для архитектуры ARM на GitHub
  144. ^ Джозеф Йиу. "Введение в архитектуру ARMv8.1-M" (PDF) . Получено 18 июля 2022 г.
  145. ^ "Genode – Исследование технологии ARM TrustZone" . Получено 10 июля 2015 г. .
  146. ^ "ARM объявляет о доступности мобильных потребительских программных решений DRM на основе технологии ARM TrustZone" (пресс-релиз). News.thomasnet.com . Получено 18 апреля 2009 г.
  147. ^ Laginimaineb (8 октября 2015 г.). "Bits, Please!: Полный эксплойт TrustZone для MSM8974". Bits, Please! . Получено 3 мая 2016 г. .
  148. ^ Ди Шен. «Атака вашего «доверенного ядра» с использованием TrustZone на Android» (PDF) . Black Hat Briefings . Получено 3 мая 2016 г. .
  149. ^ "ARM TrustZone и ARM Hypervisor Open Source Software". Открытая виртуализация. Архивировано из оригинала 14 июня 2013 г. Получено 14 июня 2013 г.
  150. ^ "AMD Secure Technology". AMD . Архивировано из оригинала 23 июля 2016 . Получено 6 июля 2016 .
  151. ^ Смит, Райан (13 июня 2012 г.). «AMD 2013 APUs будут включать процессор ARM Cortex A5 для возможностей Trustzone». AnandTech . Получено 6 июля 2016 г.
  152. ^ ab Shimpi, Anand Lal (29 апреля 2014 г.). "AMD Beema Mullins Architecture A10 micro 6700T Performance Preview". AnandTech . Получено 6 июля 2016 г. .
  153. ^ Уолтон, Джарред (4 июня 2014 г.). «AMD запускает мобильные гибридные процессоры Kaveri». AnandTech . Получено 6 июля 2016 г. .
  154. ^ "Root of Trust" (белая книга). Samsung Electronics . Апрель 2016 г.
  155. ^ "ARM Architecture Reference Manual" (PDF) . стр. B4-8. Архивировано из оригинала (PDF) 6 февраля 2009 г. Биты APX и XN (execute never) были добавлены в VMSAv6 [Virtual Memory System Architecture]
  156. ^ Справочное руководство по архитектуре ARM, издания ARMv7-A и ARMv7-R . ARM Limited.
  157. ^ "Cortex-A65AE". Разработчик ARM . Получено 26 апреля 2019 г.
  158. ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (пресс-релиз). AppliedMicro. 28 октября 2011 г. Получено 11 февраля 2014 г.
  159. ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech . Получено 17 сентября 2014 г. .
  160. ^ "Техническое справочное руководство по процессору ARM Cortex-A53 MPCore: Расширение криптографии". ARM . Получено 11 сентября 2016 г. .
  161. ^ ab "Влияние реализованных уровней исключений". Изучите архитектуру - Модель исключений AArch64 . Arm.
  162. ^ "Cortex-A32". Разработчик Arm .
  163. ^ "Cortex-A34". Разработчик Arm .
  164. ^ "Cortex-A72". Разработчик Arm .
  165. ^ Фрумусану, Андрей (3 сентября 2020 г.). «ARM анонсировала Cortex-R82: первый 64-битный процессор реального времени». AnandTech .
  166. ^ Фрумусану, Андрей (30 марта 2021 г.). «Arm анонсирует архитектуру Armv9: SVE2, безопасность и следующее десятилетие». AnandTech .
  167. ^ Харрод, Алекс (30 марта 2021 г.). «Решение Arm для будущих потребностей в области ИИ, безопасности и специализированных вычислений — v9» (пресс-релиз). Arm Holdings .
  168. ^ «Программа соответствия SystemReady». Arm .
  169. ^ "Архитектура базовой системы Arm". Arm .
  170. ^ "Arm Server Base System Architecture". Arm .
  171. ^ "Требования к ботинку базы Arm". Arm .
  172. ^ "Требования безопасности базовой загрузки". Arm .
  173. ^ "Спецификация требований Arm SystemReady". Arm .
  174. ^ Осборн, Чарли. «ARM анонсирует архитектуру безопасности PSA для устройств Интернета вещей». ZDNet.
  175. ^ ab Wong, William (25 октября 2017 г.). "ARM's Platform Security Architecture Targets Cortex-M". Electronic Design . Архивировано из оригинала 8 мая 2019 г.
  176. ^ Хоффенберг, Стив (31 октября 2017 г.). «ARM: Безопасность — это не просто технологический императив, это социальная ответственность». VDC Research . Архивировано из оригинала 28 сентября 2023 г.
  177. ^ Армасу, Лучиан (22 февраля 2018 г.). «ARM раскрывает больше подробностей о своей архитектуре безопасности платформы IoT». Tom's Hardware .
  178. ^ Уильямс, Крис. «ARM PSA IoT API? BRB... Набор инструментов для защиты сетевого комплекта открывает еще больше возможностей». The Register .
  179. ^ Хейс, Кэролайн (25 февраля 2019 г.). «Embedded World: Arm представляет четвертый элемент безопасности для PSA». Electronics Weekly .
  180. ^ "Сертификация PSA: укрепление доверия к IoT". Сертификация PSA .
  181. ^ ab «Сертификация PSA–укрепление доверия, укрепление ценности». EE Times . 4 марта 2019 г.
  182. ^ «6-триллионная стоимость стандартов безопасности и регулирования в эпоху Интернета вещей». IoT Now. 16 марта 2020 г.
  183. ^ МакГрегор, Джим (4 марта 2019 г.). «Arm представляет тестирование сертификации безопасности для IoT». Forbes .
  184. ^ Спид, Ричард (26 февраля 2019 г.). «Azure IoT направляется в космос, чтобы поддерживать связь на периферии, благодаря Inmarsat». TheRegister .
  185. ^ "Характеристики OS-9". Microware .
  186. ^ ab "Pharos". SourceForge . Получено 24 мая 2018 г. .
  187. ^ "PikeOS Safe and Secure Virtualization" . Получено 10 июля 2013 г. .
  188. ^ ab «Сертифицированные по безопасности операционные системы реального времени – Поддерживаемые процессоры».
  189. ^ "ARM Platform Port". opensolaris.org. Архивировано из оригинала 2 декабря 2012 г. Получено 29 декабря 2012 г.
  190. ^ "Мультивизор на базе INTEGRITY от Green Hills Software обеспечивает первое в отрасли решение для встраиваемой защищенной виртуализации на 64-битной основе". ghs.com . Получено 14 марта 2018 г.
  191. ^ "Enea OSE real-time operating system for 5G and LTE-A | Enea". enea.com . Архивировано из оригинала 1 января 2019 года . Получено 17 апреля 2018 года .
  192. ^ "Поддерживаемые платформы". docs.sel4.systems . Получено 23 ноября 2018 г. .
  193. ^ "Платформа разработки программного обеспечения QNX (SDP 7.0) | BlackBerry QNX". blackberry.qnx.com . Получено 27 июля 2020 г. .
  194. ^ "Wind River выпускает 64-битную VxWorks RTOS" (пресс-релиз). Wind River Systems . 28 февраля 2011 г. Получено 24 октября 2023 г.
  195. ^ "Манджаро-АРМ". Манджаро вики . 20 июня 2022 г.
  196. ^ Линус Торвальдс (1 октября 2012 г.). "Re: [GIT PULL] arm64: Linux kernel port". Почтовая рассылка по ядру Linux (Список рассылки) . Получено 2 мая 2019 г. .
  197. ^ Ларабель, Майкл (27 февраля 2013 г.). «64-битная ARM-версия Ubuntu/Debian загружается». Phoronix . Получено 17 августа 2014 г.
  198. ^ "Новости проекта Debian – 14 августа 2014 г.". Debian . 14 августа 2014 г. Получено 17 августа 2014 г.
  199. ^ "Ubuntu Server для ARM". ubuntu.com .
  200. ^ "Architectures/AArch64" . Получено 16 января 2015 г. .
  201. ^ "Portal:ARM/AArch64" . Получено 16 января 2015 г. .
  202. ^ "SUSE Linux Enterprise 12 SP2 Release Notes" . Получено 11 ноября 2016 г. .
  203. ^ "Red Hat представляет поддержку сервера ARM для Red Hat Enterprise Linux". redhat.com . Получено 18 января 2019 г. .
  204. ^ "Обновление проекта архитектуры 64-бит ARM". FreeBSD Foundation. 24 ноября 2014 г.
  205. ^ "OpenBSD/arm64" . Получено 25 сентября 2023 г. .
  206. ^ "NetBSD/arm64" . Проверено 5 августа 2018 г.
  207. ^ "HP, Asus анонсируют первые ПК с Windows 10 ARM: 20-часовое время автономной работы, гигабитный LTE". Ars Technica . Получено 22 января 2018 г. Эта новая версия Windows 10 является первой 64-битной операционной системой ARM от Microsoft. Она будет запускать приложения x86 и 32-бит ARM из Магазина, а со временем и 64-битные приложения ARM. Однако Microsoft еще не завершила свой 64-битный ARM SDK. Многие части уже готовы (например, есть 64-битный компилятор ARM), но компания пока не принимает 64-битные приложения ARM, отправленные в Магазин, и нет никаких 64-битных настольных приложений ARM.
  208. ^ Хассан, Мехеди (10 декабря 2016 г.). «Windows 10 на ARM64 получает свои первые скомпилированные приложения». MSPoweruser .
  209. ^ Филиппидис, Катрина (1 июня 2018 г.). «VLC становится одним из первых приложений Windows для ARM64». Engadget .
  210. ^ Sweetgall, Marc (15 ноября 2018 г.). "Официальная поддержка Windows 10 в разработке ARM". Windows Developer. Windows Blogs . Microsoft . Получено 17 декабря 2019 г. .
  211. ^ Гартенберг, Хаим (12 ноября 2020 г.). «macOS Big Sur теперь доступна для загрузки». The Verge . Получено 13 ноября 2020 г. .
  212. ^ Кловер, Джули (23 июня 2020 г.). «Rosetta не будет поддерживать приложения виртуализации x86 под управлением Windows». MacRumors . Получено 13 ноября 2020 г.
  213. ^ "ARM – The Official Wine Wiki" . Получено 10 июля 2015 г. .
  214. ^ "ARM64 – The Official Wine Wiki" . Получено 10 июля 2015 г. .
  215. ^ "ARM Security Updates". Разработчик ARM . Получено 24 мая 2018 г.

Библиография

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

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

Руководства по архитектуре

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

Инструкции

Коды операций