ARM (архітэктура)

Матэрыял з Вікіпедыі - вольнай энцыклапедыі

Перайсці да навігацыі Перайсці да пошуку
ARM
Выява лагатыпа
Лагатып ARM
Лагатып ARM
Распрацоўнік ARM Limited
Разраднасць ARMv7 64/32 біт, да ARMv8 толькі 32 біт
Прадстаўлена 1985
Архітэктура RISC
Тып Рэгістр-рэгістр
Кадаваньне СК ARMv8: фіксаванае (32 біт), акрамя рэжыму сумяшчальнасці з ARMv7 кодам
ARMv7/6: змяшанае (32 і 16 біт выраўнавана)
ARMv3/2: фіксаванае (32 біт)
Рэалізацыя пераходаў па сцягах умоў
Парадак байтаў Пераключаецца (big-endian), звычайна - ад малодшага да старэйшага (little-endian)
Пашырэння NEON, Thumb-2 (абавязкова пачынаючы з ARMv7), Jazelle, VFPv4-D16, VFPv4 (усе абавязковыя ў ARMv8)
У мікракантролерах: FPv4-SP
Лагатып ВікіСховішча Медыяфайлы на ВікіСховішчы
ARM-працэсар вытворчасці Conexant , усталёўваецца ў асноўным у маршрутызатарах.

Архітэктура ARM (ад англ. Advanced RISC Machine — удасканаленая RISC-машына; часам — Acorn RISC Machine ) — сістэма каманд і сямейства апісанняў і гатовых тапалогій 32-бітных і 64-бітных мікрапрацэсарных / мікракантролерных ядраў, якія распрацоўваюцца кампаніяй ARM Limited [1] .

Сярод ліцэнзіятаў гатовых тапалогій ядраў ARM - кампаніі AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic [en] , Intel (да 27 чэрвеня 2006 гады), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , Qualcomm , Sony , Texas Instruments , Nvidia , Freescale , Міландр , ЭЛВІС [2] , HiSilicon , Байкал электронікс .

Значныя сямействы працэсараў: ARM7 , ARM9 , ARM11 і Cortex [3] [4] .

Многія ліцэнзіяты праектуюць уласныя тапалогіі ядраў на базе сістэмы каманд ARM: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik [en] , Krait і Kryo ў Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 і HiSilicon K3 .

Папулярнасць

У 2006 годзе каля 98 % з больш чым мільярда мабільных тэлефонаў, якія прадаваліся штогод, былі абсталяваны, прынамсі, адным працэсарам ARM [5] . Па стане на 2009, на працэсары ARM прыходзілася да 90 % усіх убудаваных 32-разрадных працэсараў [6] . Працэсары ARM шырока выкарыстоўваюцца ў спажывецкай электроніцы - у тым ліку смартфонах, мабільных тэлефонах і плэерах, партатыўных гульнявых кансолях, калькулятарах, разумных гадзінах і кампутарных перыферыйных прыладах, такіх, як жорсткія дыскі або маршрутызатары.

Гэтыя працэсары маюць нізкае энергаспажыванне, таму знаходзяць шырокае ўжыванне ва ўбудаваных сістэмах і пераважаюць на рынку мабільных прылад, для якіх дадзены фактар ​​немалаважны.

Гісторыя

Пасля дасягнення некаторых поспехаў з кампутарам BBC Micro брытанская кампанія Acorn Computers задумалася над пераходам ад адносна слабых працэсараў MOS Technology 6502 да больш прадукцыйным рашэнням і выхадам на рынак бізнес-кампутараў з той жа платформай BBC Micro . Такія працэсары, як Motorola 68000 і 32016 ад National Semiconductor , былі для гэтага непрыдатныя, а 6502 быў нядосыць магутным, каб падтрымліваць графічны карыстацкі інтэрфейс [7] .

Кампаніі была патрэбна зусім новая архітэктура пасля таго, як яна пратэставала ўсе даступныя ёй працэсары і палічыла іх неэфектыўнымі. Acorn сур'ёзна настроіўся на распрацоўку ўласнага працэсара, і іх інжынеры пачалі вывучаць дакументацыю праекта RISC , распрацаванага ў Універсітэце Каліфорніі ў Берклі . Яны падумалі, што раз ужо групе студэнтаў атрымалася стварыць суцэль канкурэнтаздольны працэсар, то іх інжынерам гэта будзе нескладана. Паездка ў Western Design Center (Арызона) паказала інжынерам Стыву Ферберу і Сафі Уілсан (на той момант вядомай пад імем Роджэр [8] ), што ім не спатрэбяцца неверагодныя рэсурсы для ажыццяўлення гэтага плана.

Уілсан прыступіла да распрацоўкі сістэмы каманд , ствараючы сімулятар новага працэсара на кампутары BBC Micro. Яе поспехі ў гэтым пераканалі інжынераў Acorn, што яны на дакладным шляху. Але ўсё ж перад тым, як ісці далей, ім патрабавалася больш рэсурсаў, надышоў час для Уілсан ісці да дырэктара Acorn Германа Хаўзэра і растлумачыць, у чым жа справа. Пасля таго, як ён даў дабро, сабралася невялікая каманда для рэалізацыі мадэлі Уілсан на апаратным узроўні.

Acorn RISC Machine: ARM2

Афіцыйны праект Acorn RISC Machine быў пачаты ў кастрычніку 1983 гады . VLSI Technology ( англ. ) была абраная ў якасці пастаўшчыка крамянёвых кампанентаў, бо яна ўжо забяспечвала Acorn мікрасхемамі ПЗУ і некаторымі нестандартнымі інтэгральнымі схемамі. Распрацоўку ўзначалілі Уілсан і Фербер . Іх асноўнай мэтай было дасягненне нізкай латэнтнасці апрацоўкі перапынення , як у MOS Technology 6502. Архітэктура доступу да памяці, узятая ад 6502, дазволіла распрацоўнікам дасягнуць добрай прадукцыйнасці без выкарыстання дарагога ў рэалізацыі модуля DMA . Першы працэсар быў выраблены VLSI 26 красавіка 1985 года - менавіта тады ён упершыню зарабіў і быў названы ARM1. Першыя серыйныя працэсары пад назовам ARM2 сталі даступныя ў наступным годзе.

Яго першае ўжыванне было ў якасці другога працэсара ў BBC Micro , дзе ён быў скарыстаны пры распрацоўцы праграмнага забеспячэння для мадэлявання, што дазволіла завяршыць працу над дапаможнымі мікрасхемамі кампутара, а таксама паскорыць працу праграмнага забеспячэння CAD , выкарыстоўванага пры распрацоўцы ARM2. Уілсан аптымізавала набор інструкцый ARM для выканання BBC BASIC . Першапачатковая мэта кампутара, поўнасцю пабудаванага на базе ARM, была дасягнута ў 1987 годзе з выхадам Acorn Archimedes.

Атмасфера вакол праекту ARM была настолькі сакрэтная, што калі кампанія Olivetti вяла перамовы аб куплі кантрольнага пакета акцый Acorn у 1985 году, яны не сталі распавядаць аб развіцці праекту да канца перамоў. У 1992 годзе Acorn яшчэ раз выйграў Прэмію каралевы для прадпрыемстваў за ARM.

У ARM2 была 32-разрадная шына дадзеных, 26-бітная адрасная прастора і 16 32-разрадных рэгістраў. Праграмны код павінен быў ляжаць у першых 64 мегабайтах памяці, а праграмны лічыльнік быў абмежаваны 26 бітамі, бо верхнія 4 і ніжнія 2 біт 32-бітнага рэгістра служылі сцягамі. ARM2 стаў, магчыма, самым простым з папулярных 32-бітных працэсараў у свеце, маючы ўсяго толькі 30 тысяч транзістараў (для параўнання, у зробленым на 6 гадоў раней працэсары Motorola 68000 было 68 тысяч транзістараў). Многае з гэтай прастаты абумоўлена адсутнасцю мікракода (які ў працэсары 68000 займае ад адной чвэрці да адной траціны пляца крышталя) і адсутнасцю кэша , як і ў шматлікіх працэсарах таго часу. Гэтая прастата прывяла да нізкіх выдаткаў энергіі, у той час як ARM быў значна больш прадукцыйны, чым Intel 80286[9] . У яго пераемніка – працэсара ARM3 – ужо быў кэш 4 кб, што яшчэ больш павялічыла прадукцыйнасць.

Apple, DEC, Intel: ARM6, StrongARM, XScale

У канцы 1980-х гадоў Apple Computer і VLSI Technology пачалі працаваць з Acorn Computers над новымі версіямі ядра ARM. Праца была настолькі важная, што Acorn пераўтварыла каманду распрацоўшчыкаў у 1990 годзе ў новую кампанію пад назвай Advanced RISC Machines . Па гэтай прычыне ARM часам расшыфроўваюць як Advanced RISC Machines замест Acorn RISC Machine . Advanced RISC Machines стала ARM, калі яе бацькоўская кампанія ARM Holdings выйшла на Лонданскую фондавую біржу і NASDAQ у 1998 годзе.

Новая праца Apple-ARM у канчатковым выніку ператварылася ў ARM6, упершыню выпушчаны ў 1992 году. Apple выкарыстоўвала заснаваны на базе ARM6 працэсар ARM610 у якасці асновы для свайго прадукта Apple Newton PDA. У 1994 году Acorn стала выкарыстоўваць ARM610 як галоўны працэсар у сваіх кампутарах RISC PC . Кампанія DEC таксама купіла ліцэнзію на архітэктуру ARM6 (чым выклікала невялікую блытаніну, паколькі яны таксама выраблялі працэсары Alpha ) і пачала вырабляць StrongARM. На 233 Мгц гэты працэсар патрабаваў усяго 1 Вт магутнасці (пазнейшыя версіі патрабавалі значна менш). Пазней Intel атрымаў правы на гэтую працу ў выніку судовага працэсу. Intel скарысталася магчымасцю дапоўніць сваю састарэлую лінейку I960 працэсарам StrongARM і пазней распрацавала сваю версію ядра пад гандлёвай маркай XScale , якую яны пасля прадалі кампаніі Marvell .

Ядро ARM захавала ўсё той жа памер пасля ўсіх гэтых змен. У ARM2 было 30 тысяч транзістараў, у той час як ARM6 дарос усяго толькі да 35 тысяч.

Уплыў ARM-тэхналогіі на рынак

У асноўным працэсары сямейства заваявалі сегмент масавых мабільных прадуктаў (сотавыя тэлефоны, кішэнныя кампутары) і ўбудавальных сістэм сярэдняй і высокай прадукцыйнасці (ад сеткавых маршрутызатараў і кропак доступу да тэлевізараў). Асобныя кампаніі заяўляюць аб распрацоўках эфектыўных сервераў на базе кластараў ARM працэсараў [10] , але пакуль гэта толькі эксперыментальныя праекты з 32-бітнай архітэктурай [11] .

Папярэдні лідэр спісу – суперкампутар Summit (OLCF-4) , распрацаваны сумесна кампаніямі IBM (серверныя вузлы), Mellanox (міжзлучэнне) і Nvidia (графічныя паскаральнікі), і ўсталяваны ў Ок-Рыджскай нацыянальнай лабараторыі – стаў другім, саступіўшы ганаровае першае месца новай японскай. топ-сістэме Fugaku ( рус. Фугаку ), якая паказала вынік High Performance / High Parallel Linpack (HPL) роўны 415,5 петафлопс. Дадзены паказчык пераўзыходзіць магчымасці Summit у 2,8 разы. Fugaku абсталяваны 48-ядзерным працэсарам A64FX SoC ад Fujitsu, такім чынам, японская распрацоўка стала першай у гісторыі сістэмай №1 у спісе ТOP500, пры гэтым абсталяванай працэсарамі ARM. Пры адзінарнай або больш нізкай дакладнасці, якая часта выкарыстоўваецца для задач машыннага навучання і штучнага інтэлекту, пікавая прадукцыйнасць Fugaku складае больш за 1000 петафлопс (1 экзафлопс). Новая сістэма ўстаноўлена ў Цэнтры вылічальных навук RIKEN (R-CCS) у Кобе, Японія.

Працэсары ARM

У наш час значнымі з'яўляюцца некалькі сямействаў працэсараў ARM:

  • ARM7 (з тактавай частатой да 60-72 Мгц), прызначаныя, напрыклад, для недарагіх мабільных тэлефонаў і ўбудавальных рашэнняў сярэдняй прадукцыйнасці. У цяперашні час актыўна выцясняецца новым сямействам Cortex .
  • ARM9 , ARM11 (з частотамі да 1 Ггц) для больш магутных тэлефонаў, кішэнных кампутараў і ўбудавальных рашэнняў высокай прадукцыйнасці.
  • Cortex A – новае сямейства працэсараў на змену ARM9 і ARM11.
  • Cortex M – новае сямейства працэсараў на змену ARM7, таксама закліканае заняць новую для ARM нішу ўбудавальных рашэнняў нізкай прадукцыйнасці. У сямействе прысутнічаюць чатыры значныя ядры:
    • Cortex-M0, Cortex-M0+ (больш энергаэфектыўны) і Cortex-M1 (аптымізавана для прымянення ў ПЛІС) з архітэктурай ARMv6-M;
    • Cortex-M3 з архітэктурай ARMv7-M;
    • Cortex-M4 (дададзеныя SIMD-інструкцыі, апцыянальна FPU) і Cortex-M7 (FPU з падтрымкай лікаў адзінарнай і падвойнай дакладнасці) з архітэктурай ARMv7E-M;
    • Cortex-M23 і Cortex-M33 з архітэктурай ARMv8-M ARMv8-M .

У 2010 годзе вытворца анансаваў працэсары Cortex-A15 пад кодавай назвай Eagle, ARM сцвярджае, што ядро ​​Cortex A15 на 40 працэнтаў больш прадукцыйнае на той жа частаце, чым ядро Cortex-A9 пры аднолькавай колькасці ядраў на чыпе [12] . Выраб, выраблены па 28-нанаметроваму тэхпрацэсу, мае 4 ядры, можа функцыянаваць на частаце да 2,5 Ггц і будзе падтрымлівацца многімі сучаснымі аперацыйнымі сістэмамі [13] [14] .

Папулярнае сямейства мікрапрацэсараў xScale фірмы Marvell (да 27 чэрвеня 2007 года — Intel [15] ) у рэчаіснасці з'яўляецца пашырэннем архітэктуры ARM9 , дапоўненай наборам інструкцый Wireless MMX , спецыяльна распрацаваных фірмай Intel для падтрымкі мультымедыйных прыкладанняў.

Архітэктура

Уже давно существует справочное руководство по архитектуре ARM, которое разграничивает все типы интерфейсов, которые поддерживает ARM, так как детали реализации каждого типа процессора могут различаться. Архитектура развивалась с течением времени и, начиная с ARMv7, были определены 3 профиля:

  • A (application) — для устройств, требующих высокой производительности (смартфоны, планшеты);
  • R (real time) — для приложений, работающих в реальном времени;
  • M (microcontroller) — для микроконтроллеров и недорогих встраиваемых устройств [3] .

Профили могут поддерживать меньшее количество команд (команды определенного типа).

Режимы

Процессор может находиться в одном из следующих операционных режимов:

  • User mode — обычный режим выполнения программ. В этом режиме выполняется большинство программ.
  • Fast Interrupt (FIQ) — режим быстрого прерывания (меньшее время срабатывания).
  • Interrupt (IRQ) — основной режим прерывания.
  • System mode — защищённый режим для использования операционной системой.
  • Abort mode — режим, в который процессор переходит при возникновении ошибки доступа к памяти (доступ к данным или к инструкции на этапе prefetch конвейера).
  • Supervisor mode — привилегированный пользовательский режим.
  • Undefined mode — режим, в который процессор входит при попытке выполнить неизвестную ему инструкцию.

Переключение режима процессора происходит при возникновении соответствующего исключения или же модификацией регистра статуса.

Набор команд

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

Набор команд ARM

Режим, в котором исполняется 32-битный набор команд.

ARM Base Instruction Set: [49]

ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST

Набор команд Thumb

Для улучшения плотности кода процессоры, начиная с ARM7TDMI, снабжены режимом «thumb». В этом режиме процессор выполняет альтернативный набор 16-битных команд. Большинство из этих 16-разрядных команд переводится в нормальные команды ARM. Уменьшение длины команды достигается за счёт сокрытия некоторых операндов и ограничения возможностей адресации по сравнению с режимом полного набора команд ARM.

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

Аппаратные средства типа Game Boy Advance, как правило, имеют небольшой объём оперативной памяти, доступной с полным 32-битным информационным каналом. Но большинство операций выполняется через 16-битный или более узкий информационный канал. В этом случае имеет смысл использовать Thumb-код и вручную оптимизировать некоторые тяжелые участки кода, используя переключение в режим полных 32-битных инструкций ARM.

Первым процессором с декодером Thumb-команд был ARM7TDMI. Все процессоры семейства ARM9 , а также XScale , имели встроенный декодер Thumb-команд.

Набор команд Thumb-2

Thumb-2 — технология, появившаяся в ARM1156 core, анонсированном в 2003 году. Он расширяет ограниченный 16-битный набор команд Thumb дополнительными 32-битными командами, чтобы задать набору команд дополнительную ширину. Цель Thumb-2 — достичь плотности кода, как у Thumb, и производительности, как у набора команд ARM на 32 битах. Можно сказать, что в ARMv7 эта цель была достигнута.

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

 ; if (r0 == r1)
CMP r0 , r1
ITE EQ ; ARM: no code ... Thumb: IT instruction
; then r0 = r2;
MOVEQ r0 , r2 ; ARM: conditional; Thumb: condition via ITE 'T' (then)
; else r0 = r3;
MOVNE r0 , r3 ; ARM: conditional; Thumb: condition via ITE 'E' (else)
; recall that the Thumb MOV instruction has no bits to encode "EQ" or "NE"

Все кристаллы ARMv7 поддерживают набор команд Thumb-2, а некоторые кристаллы, вроде Cortex-m3, поддерживают только Thumb-2. Остальные кристаллы Cortex и ARM11 поддерживают наборы команд как Thumb-2, так и ARM.

Набор команд Jazelle

Jazelle — это технология, которая позволяет байткоду Java исполняться прямо в архитектуре ARM в качестве 3-го состояния исполнения (и набора команд) наряду с обычными командами ARM и режимом Thumb. Поддержка технологии Jazelle обозначается буквой «J» в названии процессора — например, ARMv5TEJ. Данная технология поддерживается, начиная с архитектуры ARMv6, хотя новые ядра содержат лишь ограниченные реализации, которые не поддерживают аппаратного ускорения.

ARMv8 и набор команд ARM 64 бита

В конце 2011 года была опубликована новая версия архитектуры, ARMv8. В ней появилось определение архитектуры AArch64, в которой исполняется 64-битный набор команд A64. Поддержка 32-битных команд получила название A32 и исполняется на архитектурах AArch32. Инструкции Thumb поддерживаются в режиме T32, только при использовании 32-битных архитектур. Допускается исполнение 32-битных приложений в 64-битной ОС, и запуск виртуализованной 32-битной ОС при помощи 64-битного гипервизора [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM и другие заявили о планах по использованию ARMv8. Ядра Cortex-A53 и Cortex-A57, поддерживающие ARMv8, были представлены компанией ARM 30 октября 2012 года [51] .

Как AArch32, так и AArch64, поддерживают VFPv3, VFPv4 и advanced SIMD (NEON). Также добавлены криптографические инструкции для работы с AES , SHA-1 и SHA-256 .

Особенности AArch64:

  • Новый набор команд A64
  • 31 регистр общего назначения, каждый длиной 64 бит
  • Отдельные регистры SP и PC
  • Инструкции имеют размер 32 бит и многие совпадают с командами A32
  • Большинство инструкций работают как с 32-, так и с 64-битными аргументами
  • Адреса имеют размер 64 бит
  • Улучшения Advanced SIMD (NEON) enhanced
  • С 16 до 32 увеличено количество 128-битных регистров, доступных через NEON, VFPv4, криптоинструкции AES, SHA
  • Поддерживает вычисления с числами с плавающей запятой двойной точности (64-бит double)
  • Полная совместимость с IEEE 754
  • Новая система исключений
  • Трансляция виртуальных адресов из 48-битного формата работает с помощью существующих механизмов LPAE

Функции RISC

Архитектура ARM обладает следующими особенностями RISC:

  • Архитектура загрузки/хранения
  • Нет поддержки нелинейного (не выровненного по словам) доступа к памяти (теперь поддерживается в процессорах ARMv6, за некоторыми исключениями, и полностью в ARMv7)
  • Равномерный 16х32-битный регистровый файл
  • Фиксированная длина команд (32 бита) для упрощения декодирования за счет снижения плотности кода. Позднее режим Thumb повысил плотность кода.
  • Одноцикловое исполнение

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

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

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

Одним из существенных отличий архитектуры ARM (изначальная архитектура) от других архитектур ЦПУ является так называемая предикация — возможность условного исполнения команд. Под «условным исполнением» здесь понимается то, что команда будет выполнена или проигнорирована в зависимости от текущего состояния флагов состояния процессора. В Thumb и Arm 64 предикация не используется — в первом режиме для неё нет места в команде (всего 16 бит), а во втором — предикация бессмысленна [ источник не указан 2525 дней ] и сложна для реализации на суперскалярных архитектурах .

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

Пример, обычно рассматриваемый для иллюстрации — основанный на вычитании алгоритм Евклида . В языке C он выглядит так:

 while ( i != j )
  if ( i > j )
    i -= j ;
  else
    j -= i ;

А на ассемблере ARM — так:

 loop CMP Ri , Rj ; set condition «NE» if (i != j),
                            ; "GT" if (i > j),
                            ; or "LT" if (i < j)
        SUBGT Ri , Ri , Rj ; if "GT" (greater than), i = ij;
        SUBLT Rj , Rj , Ri ; if "LT" (less than), j = ji;
        BNE loop ; if "NE" (not equal), then loop

Из кода видно, что использование предикации позволило полностью избежать ветвления в операторах else и then. Заметим, что если Ri и Rj равны, то ни одна из SUB-инструкций не будет выполнена, полностью убирая необходимость в ветке, реализующей проверку while при каждом начале цикла, что могло быть реализовано, например, при помощи инструкции SUBLE (меньше либо равно).

Один из способов, которым уплотнённый (Thumb) код достигает большей экономии объёма — это именно удаление 4-битового предиката из всех инструкций, кроме ветвлений.

Іншыя асаблівасці

Другая особенность набора команд — это возможность соединять сдвиги и вращения в инструкции «обработки информации» (арифметическую, логическую, движение регистр-регистр) так, что, например, выражение С:

 a += ( j << 2 );

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

 ADD Ra , Ra , Rj , LSL #2

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

ARM-процессор также имеет некоторые особенности, редко встречающиеся в других архитектурах RISC — такие, как адресация относительно счетчика команд (на самом деле счетчик команд ARM является одним из 16 регистров), а также пре- и постинкрементные режимы адресации.

Другая особенность, которую стоит отметить, — это то, что некоторые ранние ARM-процессоры (до ARM7TDMI), например, не имеют команд для хранения 2-байтных чисел. Таким образом, строго говоря, для них невозможно сгенерировать эффективный код, который бы вел себя так, как ожидается от объектов С типа «volatile int16_t».

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

ARM7 и более ранние версии имеют трехступенчатый конвейер. Это ступени переноса, декодирования и исполнения. Более производительные архитектуры, типа ARM9 , имеют более сложные конвейеры. Cortex-a8 имеет 13-ступенчатый конвейер.

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

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

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

Усовершенствованный SIMD (NEON)

Расширение усовершенствованного SIMD, также называемое технологией NEON — это комбинированный 64- и 128-битный набор команд SIMD (single instruction multiple data), который обеспечивает стандартизованное ускорение для медиаприложений и приложений обработки сигнала. NEON может выполнять декодирование аудиоформата mp3 на частоте процессора в 10 МГц, и может работать с речевым кодеком GSM AMR (adaptive multi-rate) на частоте не более 13 МГц. Он обладает внушительным набором команд, отдельными регистровыми файлами, и независимой системой исполнения на аппаратном уровне. NEON поддерживает 8-, 16-, 32-, 64-битную информацию целого типа, одинарной точности и с плавающей запятой, и работает в операциях SIMD по обработке аудио и видео (графика и игры). В NEON SIMD поддерживает до 16 операций единовременно.

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

VFP

Технология VFP (Vector Floating Point, вектора чисел с плавающей запятой) — расширение сопроцессора в архитектуре ARM. Она производит низкозатратные вычисления над числами с плавающей запятой одинарной/двойной точности, в полной мере соответствующие стандарту ANSI/IEEE Std 754—1985 Standard for Binary Floating-Point Arithmetic . VFP производит вычисления с плавающей запятой, подходящие для широкого спектра приложений — например, для КПК, смартфонов, сжатие звука, трёхмерной графики и цифрового звука, а также принтеров и телеприставок. Архитектура VFP также поддерживает исполнение коротких векторных команд. Но, поскольку процессор выполняет операции последовательно над каждым элементом вектора, то VFP нельзя назвать истинным SIMD-набором инструкций. Этот режим может быть полезен в графике и приложениях обработки сигнала, так как он позволяет уменьшить размер кода и выработку команд.

Другие сопроцессоры с плавающей запятой и/или SIMD, находящиеся в ARM-процессорах, включают в себя FPA , FPE , iwMMXt . Они обеспечивают ту же функциональность, что и VFP, но не совместимы с ним на уровне опкодов .

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

Расширения безопасности, позиционируемые как TrustZone Technology, находятся в ARMv6KZ и других, более поздних, профилированных на приложениях архитектурах. Оно обеспечивает низкозатратную альтернативу добавлению специального ядра безопасности, обеспечивая 2 виртуальных процессора, поддерживаемых аппаратным контролем доступа. Это позволяет ядру приложения переключаться между двумя состояниями, называемыми «миры» (чтобы избежать путаницы с названиями возможных доменов), чтобы не допустить утечку информации из более важного мира в менее важный. Этот переключатель миров обычно ортогонален всем другим возможностям процессора. Таким образом, каждый мир может работать независимо от других миров, используя одно и то же ядро. Память и периферия соответственно изготавливаются с учетом особенностей мира ядра, и могут использовать это, чтобы получить контроль доступа к секретам и кодам ядра. Типичные приложения TrustZone Technology должны запускать полноценную операционную систему в менее важном мире, и компактный, специализированный на безопасности, код в более важном мире, позволяя Digital Rights Management'у намного точнее контролировать использование медиа на устройствах на базе ARM, и предотвращая несанкционированный доступ к устройству.

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

Отладка

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

Архитектура ARMv7 определяет базовые средства отладки на архитектурном уровне. К ним относятся точки останова, точки просмотра и выполнение команд в режиме отладки. Такие средства были также доступны с модулем отладки EmbeddedICE. Поддерживаются оба режима — остановки и обзора. Реальный транспортный механизм, который используется для доступа к средствам отладки, не специфицирован архитектурно, но реализация, как правило, включает поддержку JTAG .

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

Рэгістры

ARM предоставляет 31 регистр общего назначения разрядностью 32 бит. В зависимости от режима и состояния процессора пользователь имеет доступ только к строго определённому набору регистров. В ARM state разработчику постоянно доступны 17 регистров:

  • 13 регистров общего назначения (r0..r12).
  • Stack Pointer (r13) — содержит указатель стека выполняемой программы.
  • Link register (r14) — содержит адрес возврата в инструкциях ветвления.
  • Program Counter (r15) — биты [31:1] содержат адрес выполняемой инструкции.
  • Current Program Status Register (CPSR) — содержит флаги, описывающие текущее состояние процессора. Модифицируется при выполнении многих инструкций: логических, арифметических, и др.

Во всех режимах, кроме User mode и System mode, доступен также Saved Program Status Register (SPSR). После возникновения исключения регистр CPSR сохраняется в SPSR. Тем самым фиксируется состояние процессора (режим, состояние; флаги арифметических, логических операций, разрешения прерываний) на момент непосредственно перед прерыванием [52] .

usr sys svc abt und irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

Праца з памяццю

Архитектура ARM использует единое адресное пространство [53] . На практике такая схема означает, что адрес может указывать на оперативную память, ROM или порты ввода-вывода, в противовес традиционной схеме, при которой содержимое ROM при запуске копируется в оперативную память, а порты ввода-вывода имеют собственное адресное пространство.

Поддерживаемые системы ввода-вывода

Большинство существующих продуктов с использованием архитектуры ARM представляет собой законченные системы на кристалле, имеющие возможность работы с внешней динамической оперативной памятью ( DRAM ) и содержащие в себе контроллеры множества периферийных шин, в частности USB , IIC (I2C), звуковые устройства, контроллеры для работы с флэш-носителями стандартов SD и MMC , контроллеры дисплеев и цифровых камер (MIPI).

Все процессоры имеют линии ввода-вывода общего назначения (GPIO). В потребительских устройствах к ним могут быть подключены кнопки «быстрого запуска» и регуляции громкости, сигнальные светодиоды, клавиатура и т. п.

Процесс запуска ОС на ARM-машинах

После включения системы на базе ARM-процессора из ROM-памяти загружается начальный загрузчик и адрес его точки входа. Начальный загрузчик проводит предварительную инициализацию системы, исполняя тем самым ту же роль, которую исполняет BIOS на системах x86, после чего может загрузить либо системный загрузчик, либо напрямую ОС.

Единого стандарта на начальный загрузчик не существует. Может применяться загрузчик U-Boot , а для 64-разрядной ARMv8 часто используется UEFI. Во многих применениях используются собственные загрузчики.

ОС, поддерживающие ARM

Архитектура ARM поддерживается множеством операционных систем. Наиболее широко используемые: Linux (в том числе Android ), iOS , Windows Phone . Подробнее: Список операционных систем с поддержкой процессоров ARM .

Работать на системах с ARM-процессором могут различные Unix и Unix-подобные ОС: Linux (многие дистрибутивы), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54] ), Firefox OS , macOS Big Sur .

Также на платформе запускаются отдельные варианты семейства Windows : Windows CE , Windows Phone , Windows RT , Windows 10 (Только на Raspberry Pi или Lumia 950 / 950 XL)

Кроме того, ARM поддерживают: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .

Глядзіце таксама

  • OpenRISC — архитектура 2000 года с GPL-реализацией or1k
  • LEON — свободные реализации (GPL, LGPL) архитектуры SPARC V8, появившиеся в 1997 году
  • OpenSPARC — свободная (GPL) реализация архитектуры SPARC V9 от 2005 года
  • OpenPOWER — архитектура IBM Power , основанная в 2013 году IBM, Google, Mellanox, NVIDIA
  • RISC-V — свободная и открытая архитектура и система команд для микропроцессоров и микроконтроллеров, созданная в 2010 году
  • MIPS — наборы команд и архитектура MIPS

Нататкі

  1. Компания ARM Limited занимается исключительно разработкой ядер и инструментов для них ( компиляторы , средства отладки и т. п.), зарабатывая на лицензировании архитектуры сторонним производителям.
  2. Система на кристалле 1892ВМ14Я . multicore.ru. Дата абарачэння: 28 снежня 2018.
  3. 1 2 Д.Козлов-Кононов. Процессорные ядра семейства Cortex. Сочетание высокой производительности и низкого энергопотребления , журнал Электроника, вып. #8/2010
  4. Ознакомительное руководство по ARM-микроконтроллерам Cortex-M3
  5. «ARMed for the living room» .
  6. «An interview with Steve Furber» // Communications of the ACM, May 2011, Vol. 54 No. 5, Pages 34-39, doi:10.1145/1941487.1941501
  7. Manners, David . ARM's way , Electronics Weekly (29 апреля 1998). Архивировано 29 июля 2012 года. Дата обращения 26 октября 2012.
  8. Sophie Wilson — CHM
  9. Santanu Chattopadhyay. Embedded System Design (неопр.) . — PHI Learning Pvt. Ltd., 2010. — С. 9. — ISBN 978-81-203-4024-4 .
  10. Apache Benchmarks for Calxeda's 5-Watt Web Server — ARM Servers, Now! (недаступная спасылка) . Дата обращения: 26 ноября 2012. Архивировано 30 октября 2012 года.
  11. Cloudy with a chance of ARM. What the Microserver Market Means for Semiconductor Vendors Архивная копия от 2 декабря 2012 на Wayback Machine // Oppenheimer & Co. Inc, March 30, 2012
  12. Exclusive : ARM Cortex-A15 «40 Per Cent» Faster Than Cortex-A9
  13. Cortex-A15 Processor (англ.) . ARM. — Презентация процессоров семейства ARM CortexA15 MPCore на сайте производителя. Дата обращения: 20 апреля 2012. Архивировано 30 мая 2012 года.
  14. ARM Cortex-A15 — процессор с тактовой частотой до 2,5 ГГц, не только для смартфонов . Ferra.ru (10 сентября 2010). Дата абарачэння: 20 красавіка 2012.
  15. Intel Newsroom | Top headlines, breaking news and current events from Intel (недоступная ссылка) . Дата обращения: 4 октября 2013. Архивировано 6 марта 2009 года.
  16. «ARM810 — Dancing to the Beat of a Different Drum» Архивная копия от 10 сентября 2008 на Wayback Machine Архивировано 23 июля 2011 года. ARM Holdings presentation at Hot Chips 1996-08-07.
  17. Register 13, FCSE PID register ARM920T Technical Reference Manual
  18. Neo1973: GTA01Bv4 versus GTA02 comparison . Дата обращения: 15 ноября 2007. Архивировано 13 марта 2012 года.
  19. S3C2410 . Дата обращения: 13 января 2010. Архивировано 13 марта 2012 года.
  20. Rockbox Samsung SA58xxx series . Дата абарачэння: 22 лютага 2008. Архівавана 13 сакавіка 2012 года.
  21. Rockbox Meizu M6 Port – Hardware Information . Дата абарачэння: 22 лютага 2008. Архівавана 13 сакавіка 2012 года.
  22. Datasheets — Magic Lantern Firmware Wiki
  23. STR9 – STR912 – STR912FW44 microcontroller – documents and files download page (недоступная ссылка) . Mcu.st.com. Дата обращения: 18 апреля 2009. Архивировано 10 февраля 2007 года.
  24. Starlet .
  25. Benchmarks – Albatross (недоступная ссылка) . Albatross-uav.org (18 июня 2005). Дата обращения: 18 апреля 2009. Архивировано 16 октября 2008 года.
  26. ARM1136J(F)-S – ARM Processor . Arm.com. Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
  27. Qualcomm chips kernel ARM - from phones to laptops . xi0.info. Дата обращения: 8 мая 2010. Архивировано 13 марта 2012 года.
  28. Qualcomm MSM7227 RISC Chipset . pdadb.net. Дата обращения: 8 мая 2010. Архивировано 13 марта 2012 года.
  29. GoForce 6100 . Nvidia.com. Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
  30. Mediatek MT6573 . http://www.mediatek.com.+ Дата обращения: 18 апреля 2009. Архивировано 6 июня 2012 года.
  31. Samsung S3C6410 and S3C6430 Series ARM Proccessors (недоступная ссылка) . Samsung. Дата обращения: 8 октября 2009. Архивировано 1 сентября 2009 года. , and the Qualcomm MSM7627 as seen in the Palm Pixi and Motorola Calgary/Devour
  32. Merrit, Rick "ARM stretches out with A5 core, graphics, FPGAs" . EE Times (21 октября 2009). Дата обращения: 28 октября 2009. Архивировано 13 марта 2012 года.
  33. Clarke, Peter ARM tips plans for Swift and Sparrow processor cores . EE Times (3 февраля 2009). Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
  34. Segan, Sascha ARM's Multicore Chips Aim for Netbooks . PC Magazine (9 апреля 2009). Дата обращения: 18 апреля 2009. Архивировано 13 марта 2012 года.
  35. 1 2 3 4 標æº- Архивная копия от 29 июля 2013 на Wayback Machine Архивировано 29 июля 2013 года.
  36. Cortex-A15 Processor — ARM
  37. Cortex-A7 Processor — ARM
  38. Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2 февраля 2010). Дата обращения: 3 мая 2010. Архивировано 13 марта 2012 года.
  39. Clarke, Peter ARM preps tiny core for low-power microcontrollers . EE Times (23 февраля 2009). Дата обращения: 30 ноября 2009. Архивировано 13 марта 2012 года.
  40. Walko, John NXP first to demo ARM Cortex-M0 silicon . EE Times (23 марта 2009). Дата обращения: 29 июня 2009. Архивировано 13 марта 2012 года.
  41. ARM Powered VCAs " Triad Semiconductor Архивная копия от 16 июля 2011 на Wayback Machine Архивировано 16 июля 2011 года.
  42. Cortex-M0 used in low power touch controller — 10/06/2009 — Electronics Weekly
  43. Chungbuk Technopark Chooses ARM Cortex-M0 Processor
  44. Google Translate
  45. Austriamicrosystems Chooses ARM Cortex-M0 Processor For Mixed Signal Applications
  46. «ARM Extends Cortex Family with First Processor Optimized for FPGA» , ARM press release, March 19, 2007. Retrieved April 11, 2007.
  47. «ARM Cortex-M1» , ARM product website. Retrieved April 11, 2007.
  48. ARM Extends Cortex Family with First Processor Optimized for FPGA .
  49. Category:Opcodes - ARMwiki (англ.) . www.heyrick.co.uk. Дата абарачэння: 6 жніўня 2018.
  50. ARM (недоступная ссылка) . Дата обращения: 15 апреля 2013. Архивировано 10 июня 2018 года.
  51. ARM Launches Cortex-A50 Series, the World's Most… - ARM . Дата обращения: 17 апреля 2013. Архивировано 20 апреля 2013 года.
  52. ARM7TDMI (rev 3) Technical Reference Manual (англ.) . Дата обращения: 22 августа 2009. Архивировано 13 марта 2012 года.
  53. http://www.peter-cockerell.net/aalp/html/ch-2.html «Input and output devices are memory mapped. There is no concept of a separate I/O address space. Peripheral chips are read and written as if they were areas of memory. This means that in practical ARM systems, the memory map is divided into three areas: RAM, ROM, and input/output devices (probably in decreasing order of size).»
  54. OpenSolaris Project: ARM Platform Port . Sun Microsystems . Архівавана 13 сакавіка 2012 года.

Спасылкі