ARM архитектура
ARM је породица архитектура скупа инструкција за процесоре базиране на RISC архитектури развијена од стране британске компаније ARM Holdings.
Дизајнер | ARM Holdings |
---|---|
Битови | 32-bit или 64-bit |
Представљен | 1985 |
Архитектура | RISC |
Тип | Регистар-Регистар |
Гранање | Условни код |
Отвореност | Затворен |
Представљен | 2011 |
---|---|
Верзија | ARMv8-A |
Формат инструкције | AArch64/A64 и AArch32/A32 користе 32-битне инструкције, T32 (Thumb2) користи комбиноване 16- и 32-битне инструкције. ARMv7 компатибилност корисничког простора[1] |
Ендијаност | Bi (Little as default) |
Проширења | Сва обавезна: Thumb-2, NEON, Jazelle, VFPv4-D16, VFPv4 |
Регистри | |
Општенаменски | 31x 64-битни целобројни регистар[1] plus PC и SP, ELR, SPSR за нивое изузетака |
У покретном зарезу | 32× 128-битна регистра,[1] скаларни 32- и 64-битни FP, SIMD 64- и 128-битни FP и целобројни |
Верзија | ARMv8-R, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M |
---|---|
Формат инструкције | 32-битни осим Thumb2 проширења која користе комбиновано 16- и 32-битне инструкције. |
Ендијаност | Bi (Little as default) |
Проширења | Thumb-2 (обавезно од ARMv7), NEON, Jazelle, FPv4-SP |
Регистри | |
Општенаменски | 16x 32-битна целобројна регистра укључујући PC и SP |
У покретном зарезу | До 32× 64-битна регистра,[2] SIMD/покретни зарез (опционално) |
Верзија | ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2 |
---|---|
Формат инструкције | 32-битни осим Thumb проширења која користе комбиновано 16- и 32-битне инструкције. |
Ендијаност | Bi (Little as default) код ARMv3 и новијих |
Проширења | Thumb, Jazelle |
Регистри | |
Општенаменски | 16x 32-битни целобројни регистри укључујући PC (26-битно адресирање код старијих) и SP |
RISC-базирани приступ рачунарског дизајна значи да ARM процесори захтевају знатно мање транзистора од типичних процесора код процечних рачунара. Овај приступ смањује цену, загревање и потрошњу енергије. Ово су жељене особине код лаких, преносних, уређаја који раде на батерију укључујући паметне телефоне, лаптопове, таблете, и друге уграђене системе. Једноставнији дизајн омогућава ефикасније вишејезгарне процесоре и веђи број језгара по мањој цени, што даје већу рачунарску моћ и вишу енергетску ефикасност за сервере и суперрачунаре.[3][4][5]
ARM Holdings развија скуп инсрукција и архитектуру за ARM-базиране производе, али не производи производе. Компанија периодично избацује ажуриране верзије својих језгара. Актуелна језгра из ARM Holdings-а подржавају 32-битни адресни простор и 32-битну аритметику; скоро представљена ARMv8-A архитектура уводи подршку за 64-битни адресни простор и 64-битну аритметику. Инструкције за ARM Holdings-ова језгра имају 32-бита широке инструкције фиксиране дужине, али новије верзије архитектуре такође подржавају и скуп инструкције променљиве дужине који омогућава и 32-бита и 16-бита широке инструкције ради боље густине кода. Нека језгра омогућавају и хардверско извршавање Јава бајткода.
ARM Holdings лиценцира дизајн чипова и архитектуре ARM скупа инструкција трећим странкама, које дизајнирају своје производе који имплементирају једну од тих архитектура—укључујући системе на чипу (SoC) који интегришу меморију, интерфејсе, радио пријемнике (GSM), и тако даље. Тренутно, варијанте увелико коришћених Cortex језгра, старијих „класичних“ језгара, и специјализованих SecurCore језгара су доступне сваком од њих са дозволом да додају или избаце одређене могућности. Компаније које производе ARM производе укључују Apple, NVIDIA, Qualcomm, Samsung, и Texas Instruments. Apple је први имплементирао ARMv8-A архитектуру у свом Apple A7 чипу у iPhone 5S.
У 2005, око 98% свих продатих мобилних телефона су користили бар један ARM процесор.[6] Мала потрошња струје је учинила ARM процесоре јако популарним: 37 милијарди ARM процесора је произведено до 2013-е, за разлику од 10 милијарди из 2008.[7] ARM архитектура (32-битна) је најраспрострањенија архитектура код мобилних уређаја, и најпопуларнија 32-битна код уграђених система.[8]
Према ARM Holdings-у, само у 2010, произвођачи чипова базираних на ARM архитектури су пријавили продају 6,1 милијарди ARM-базираних процесора, што чине 95% телефони, 35% телевизори и сет-топ боксови и 10% мобилни рачунари. То је најраспротрањенија архитектура 32-битног скупа инструкција по количини производа.[9][10]
Историја
уредиБритански произвођач рачунара Acorn Computers је први развио ARM током 1980-их за потребе својих персоналних рачунара. Њихови први ARM-базирани производи су били копроцесорски модули за BBC Micro серију рачунара. Након успешног BBC Micro рачунара, Acorn Computers је разматрао како да напредује од релативно једноставног процесора MOS Technology 6502 ради освајања пословних тржишта као оног којим је ускоро доминирао IBM PC, представљен 1981.Acorn Business Computer (ABC) план је захтевао да одређени други процесори буду направљени да раде са BBC Micro платформом, али процесори као што су Motorola 68000 и National Semiconductor 32016 су сматрани неадекватним, а 6502 није био довољно моћан за графички кориснички интерфејс.[11]
Након тестирања свих доступних процесора и закључка да не одговарају, Acorn је одлучио да им треба нова архитектура. Инспирисан документацијом Berkeley RISC пројекта, Acorn је разматрао дизајнирање сопственог процесора.[12] Посета Western Design Center-у у Фениксу, где је 6502 био ажуриран од стране компаније са једним запосленим, је открила Acorn инжењерима Стиву Фурберу и Софи Вилсон да им нису потребни огромни ресурси и врхунска постројења за истраживање и развој.[13]
Вилсон је развио скуп инструкција, пишући симулацију процесора у BBC Basic који је радио на BBC Micro са другим 6502 процесором. Ово је убедило Acorn-ове инжењере да су на добром путу. Вилсон је пришап директору Acorn-а Херману Хојзеру, захтевајући више ресурса. Када је добио дозволу, саставио је мали тим који је имплементирао Вилсонов модел у хардвер.
Acorn RISC Машина: ARM2
уредиЗванични Acorn RISC Машина пројекат је започет октобра 1983. Изабрали су VLSI Technology као партнера у силиконима, с обзиром да су они били извор ROM-ова и специјализованих чипова за Acorn. Вилцон и Фурбер су водили дизајн. Имплементирали су га са сличном идејом ефикасности као 6502 процесор.[14] Кључни циљ дизајна је било постизање обраде улаза и излаза са малим кашњењем као код 6502. Архитектура меморијског приступа код 6502 је омогућила инжењерима да направе брзе машине без скупог хардвера за директан приступ меморији.
VLSI је произвео први ARM силикон 26. априла 1985. Радио је из прве, и био познат као ARM1 од априла 1985.[3] Први серијски системи названи ARM2 су били доступни следеће године.
Прва практична примена ARM-а је био други процесор за BBC Micro, где је помогао развијеном софтверу за симулацију да заврши развој чипова за подршку (VIDC, IOC, MEMC), и убрза CAD софтвер коришћен у развоју ARM2. Вилсон је затим изнова написао BBC Basic у ARM асемблерском језику. Великим знањем које је стекао дизајнирањем скупа инструкција је направио веома густ код, што је ARM BBC Basic учинило јако добрим тестом за сваки ARM емулатор. Оригинални циљ ARM-базираног рачунара је постигнут 1987. пуштањем у продају рачунара Acorn Archimedes.[11] Acorn је још једном освојио Queen's Award for Technology за ARM 1992. године.
ARM2 је имао 32-битну магистралу података, 26-битни адресни простор и 27 32-битних регистара. 8 битова из програмског регистра је било доступно и за друге сврхе; виших 6 битова (доступних због 26-битног адресног простора), су служили као статусни флегови, а доња 2 бита (доступних јер је програмски бројач увек био изравњан са дужином речи), су коришћени за подешавање режима. Адресна магистрала је проширена на 32 бита код ARM6, али је програмски код још увек морао стајати у оквиру првих 64 MB меморије у 26-битном режиму компатибилности, због битова резервисаних за статусне флегове.[15] ARM2 је имао само 30.000 транзистора, у поређењу са Моторолиним 6-година-старим 68000 моделом са 68.000.[16] Добар део ове једноставности је произашло из недостатка микропрограма (који представља од четвртине до трећине код 68000) и из (као код већине процесора тог времена) недостатка кеша. Ова једноставност је донела и мали потрошњу енергије, пак боље перформансе од Intel 80286 процесора. Наследник, ARM3, је произведен са 4 KB кеша, који је додатно побољшао перформансе.[17]
Apple, DEC, Intel, Marvell: ARM6, StrongARM, XScale
уредиКрајем 1980-их Епл и VLSI Technology су започели сарадњу са Acorn-ом на новијој верзији ARM језгра. 1990-е, Acorn је пребацио дизајнерски тим у нову компанију названу Acorn RISC Machines Ltd., која је постала ARM Ltd када је њена родитељска компанија, ARM Holdings plc, ушла на Лондонску берзу и Насдак током 1998-е.[18]
Нова Apple-ARM сарадња ће касније прерасти у ARM6, први пут избачен ране 1992-е. Apple је користио ARM6-базирани ARM610 као основу свог Apple Newton PDA. Током 1994-е, Acorn је користио ARM610 као главни процесор (CPU) у својим Acorn Computer Risc PC рачунарима. DEC је лиценцирала ARM6 архитектуру и произвела StrongARM. Са 233 MHz, овај процесор је трошио само један ват (новије верзије чак доста мање). Овај рад је касније предат Интелу као део правног договора, и Интел је искористио прилику да обогати своју i960 линију са StrongARM-ом. Интел је касније развио своју имплементацију високих перформанси звану XScale, коју је касније продао Марвелу.
Лиценцирање
уредиЛиценца језгра
уредиARM језгро је задржало практично исту величину током ових промена. ARM2 је имао 30.000 транзистора, ARM6 је порастао само до 35.000. ARM Holdings-ов примарни бизнис је продаја језгара које има у свом интелектуалном власништву, која корисници лиценце користе да праве микроконтролере (MCUs) и процесоре базиране на тим језгрима. Произвођач оригиналног дизајна комбинује ARM језгра са другим компонентама у производњи комплетног процесора, какав се типично може произвести у постојећим фабрикама полупроводника по ниској цени а донети значајне перформансе. Најуспешнија имплементација је био ARM7TDMI који је продао стотние милиона. Atmel је био претходни дизајн центар у ARM7TDMI-базираним уграђеним системима.
ARM архитектуре коришћене у телефонима, PDA-овима и другим преносним уређајима су у опсегу од ARMv5, код јефтиних уређаја, преко ARMv6, до ARMv7 у актуелним врхунским уређајима. ARMv7 укључује и хардверску јединицу за рад са покретним зарезом (FPU), са унапређеном брзином у односу на софтверски покретни зарез.
Током 2009-е, неки произвођачи су представили нетбукове базиране на ARM процесорима, као директну конкуренцију нетбуковима базираним на Intel Atom-у.[19] Према аналитичкој фирми IHS iSuppli, до 2015-е, ARM процесори би могли бити у 23% свих лаптопова.[20]
ARM Holdings нуди вишеструке услове уговора, који варирају у цени и ономе што нуде. ARM Holdings свим купцима лиценце доставља опис ARM језгра као и комплетни софтверски развојни пакет алата (компилатор, дебагер, скуп развојних алата) и право да продаје произведени силикон који садржи ARM процесор.
SoC пакети који интегришу ARM-ов дизајн језгра укључују Nvidia Tegra, CSR plc's Quatro породицу, ST-Ericsson-ове Nova и NovaThor, Silicon Labs-ов Precision32 MCU, Texas Instruments-ове OMAP производе, Самсунгове Hummingbird и Exynos прозводе, Apple-ове A4, A5, и A5X, и Freescale-ов i.MX.
Лиценценти без сопствених фабрика, који желе да интегришу ARM језгро у свој дизајн чипа, су углавном заинтересовани само у спремно-за-производњу проверена IP језгра. За ове муштерије, ARM Holdings доставља логичку мрежу изабраног ARM језгра, уз апстрактан симулациони модел и тест програме који помажу интеграцију дизајна и проверу. Амбициозније муштерије, укључујући оне са својим фабрикама (IDM) и операторе фабрика, бирају да добију процесор у синтезибилној RTL (Verilog) форми. Са синтезибилним RTL-ом, муштерија има могућност да изводи оптимизације и проширења на архитектонском нивоу. Ово омогућава дизајнеру да постигне екзотичне дизајнерске циљеве који су немогући са немодификованом логичком мрежом (високу брзину радног такта, јако малу потрошњу струје, проширења скупа инструкција, итд.). Иако ARM Holdings не даје право својим муштеријама да препродају саму ARM архитектуру, они слободно могу да продају произведене производе као што су чипови, плоче за процену, комплетне системе. Привредничке фабрике полупроводника могу бити посебан случај; не само да им је дозвољено да продају готове производе са ARM језгрима, они генерално држе правно да производе ARM језгра за друге муштерије.
ARM Holdings цени своје интелектуално власништво на основу субјективне вредности. Слабија ARM језгра типично имају ниже цене лиценцирања од оних са високим перформансама. У имплементационим терминима, синтезибилно језгро кошта више од тврдих (blackbox) језгара. Компликујући систем цена, власници фабрика који имају ARM лиценцу, као што су Samsung или Fujitsu, могу понудити муштеријама фабрике ниже цене лиценцирања. У замени за реализацију језгра кроз дизајн сервисе у оквиру фабрике, муштерија може смањити или елиминисати плаћање унапред цене за ARM лиценцу.
У поређењу са наменским фабрикама полупроводника (као што су TSMC и UMC) без сопствених услуга дизајна, Fujitsu/Samsung наплаћују два то три пута више по произведеном ваферу. За примене ниског и средњег обима, фабрика са дизајнерским сервисима нуди нижу укупну цену (кроз субвенционирање накнаде за лиценцу). За високо-количинске делове из масовне производње, дугорочна уштеда која се постиже нижим ценама вафера смањује тежину ARM-ових NRE (Non-Recurring Engineering) цена, што чини наменске фабрике бољим избором.
Архитектонска лиценца
уредиКомпаније такође могу добити и ARM архитектонску лиценцу за дизајнирање сопствених процесорских језгара са ARM скупом инструкција. Ова језгра морају бити у потпуности усаглашена са ARM архитектуром.
Језгра
уредиАрхитектура | Ширина магистрале |
Језгра дизајнирана од стране ARM Holdings | Језгра дизајнирана од стране трећих партија | Cortex профил | Референце |
---|---|---|---|---|---|
ARMv1 | 32/26 | ARM1 | |||
ARMv2 | 32/26 | ARM2, ARM3 | Amber | ||
ARMv3 | 32 | ARM6, ARM7 | |||
ARMv4 | 32 | ARM8 | StrongARM, FA526 | ||
ARMv4T | 32 | ARM7TDMI, ARM9TDMI | |||
ARMv5 | 32 | ARM7EJ, ARM9E, ARM10E | XScale, FA626TE, Feroceon, PJ1/Mohawk | ||
ARMv6 | 32 | ARM11 | |||
ARMv6-M | 32 | ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1 | |||
ARMv7-M | 32 | ARM Cortex-M3 | |||
ARMv7E-M | 32 | ARM Cortex-M4 | |||
ARMv7-R | 32 | ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 | У реалном времену | ||
ARMv7-A | 32 | ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15 |
Krait, Scorpion, PJ4/Sheeva, Apple A6/A6X (Swift) | Апликациони | |
ARMv8-A | 64/32 | ARM Cortex-A53, ARM Cortex-A57[21] | X-Gene, Denver, Apple A7 (Cyclone) | Апликациони | |
ARMv8-R | 32 | Није најављно још увек | У реалном времену | [24][25] |
Списак произвођача који имплементирају ARM језгра у свој дизајн (производи апликацијски специфичног стандарда (ASSP), микропроцесори и микроконтролери) су доступни од стране ARM Holdings-а.[26]
Пример примене ARM језгара
уредиARM језгра се користе у пуно производа, посебно у PDA уређајима и телефонима. Неки примери рачунара су Microsoft Surface, Apple-ов iPad и ASUS Eee Pad Transformer. Остали укључују Apple-ов iPhone телефон и iPod преносни медија плејер, Canon PowerShot A470 дигитални фотоапарат, Nintendo DS ручна конзола за игре и Том Том систем за навигацију.
Током 2005-е, ARM Holdings је имао удео у развоју рачунара за Manchester University, SpiNNaker, који користи ARM језгра да симулира људски мозак.[27]
ARM чипови се такође користе у Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard и другим рачунарима у оквиру једне плоче, јер су веома мали, јефтини и троше јако мало електричне енергије.
32-битна архитектура
уреди32-битна ARM архитектура, као што је ARMv7-A, је најраспрострањенија архитектура код мобилних уређаја.[8]
Од 1995-е, Референтно упутство ARM архитектуре је било примарни извор документације у вези ARM архитектуре и скупа инструкција, раздвајајући интерфејсе које сви ARM процесори морају да подржавају (као што је инструкцијска семантика) од имплементационих детаља који смеју да варирају. Архитектура је еволуирала временом, и верзија 7 архитектуре, ARMv7, која дефинише архитектуру за прво од Cortex серије језгара, дефинише три архитектонска „профила":
- A-профил, „Апликациони“ профил: Cortex-A серија
- R-профил, профил „реалног времена": Cortex-R серија
- M-профил, „Микроконтролерски“ профил: Cortex-M серија
Иако су архитектонски профили први пут дефинисани за ARMv7, ARM је накнадно дефинисао ARMv6-M архитектуру (коришћену код Cortex M0/M0+/M1) као подскуп ARMv7-M профила са мање инструкција.
Режими рада процесора
уредиОсим у M-профилу, 32-битна ARM архитектура дефинише неколико режима процесора, у зависности од имплементираних особина архитектуре. У једном тренутку, процесор се може налазити у само једном режиму, али може мењати режиме услед спољашњих догађаја (прекида) или програмски.[28]
- Кориснички режим
- Једини непривилегован режим.
- FIQ режим
- Привилегован режим у који се улази услед FIQ прекида.
- IRQ режим
- Привилеговани режим у који се улази услед IRQ прекида.
- Супервизорски (svc) режим
- Привилеговани режим у који се улази услед ресетовања процесора или извршења SVC инструкције.
- Зауставни режим
- Привилеговани режим у који се улази услед prefetch abort или data abort изузетака.
- Недефинисани режим
- Привилеговани режим у који се улази услед недефинисаног инструкцијског изузетка.
- Системски режим (ARMv4 и новији)
- Једини привилегован режим у који се не улази услед изузетка. Може му се приступити искључиво помоћу инструкције која директно уписује режимне битове CPSR-а.
- Режим надгледања (ARMv6 и ARMv7 Security Extensions, ARMv8 EL3)
- Режим надгледања је уведен да подржи TrustZone проширење код ARM језгара.
- Hyp mode (ARMv7 Virtualization Extensions, ARMv8 EL2)
- Хипервизорски режим који подржава виртуелизацију не-сигурносне операције процесора.[29]
Скуп инструкција
уредиОригинална ARM имплементација је била хардверски ожичена без микропрограма, као и много једноставнији 8-битни 6502 процесор коришћен у ранијим Acorn микрорачунарима.
32-битна ARM архитектура (и 64-битна архитектура већинским делом, видети доле изузетке) укључују следеће RISC особине:
- Учитај/сними архитектура.
- Нема подршке за непоравнате приступе меморији у оригиналној верзији архитектуре. ARMv6 и касније, осим у неким микроконтролерским верзијама, које подржавају непоравнат приступ за инструкција учитавања/складиштења од половине речи и једне речи са неким ограничењима, као што је незагарантована атомичност.[30][31]
- Униформна 16-струка 32-битна скуп регистара (укључујући програмски бројач, показивач стека и Link регистар).
- Фиксирана ширина инструкције од 32 бита ради лакшег декодирања и проточне обраде, по цени смањене густине кода. Касније, Thumb скуп инструкција уводи 16-битне инструкције и повећану густину кода.
- Углавном једно-циклусно извршење.
Ради компензовања једноставнијег дизајна, у поређењу са процесорима као што су Intel 80286 и Motorola 68020, додате су одређене функционалности:
- Условно извршење већине инструкција смањује губитке код петљи и компензује недостатак предвиђања гранања.
- Аритметичке инструкције мењају кодове стања само када се то жели.
- 32-битна инструкција за шифтовање се може користити без губитака перформанси са већином аритметичких инструкција и рачунања адресе.
- Моћни индексирани режими адресирања.
- Link register подржава брзе функцијске позиве.
- Једноставан, али брз, подсистем прекида са 2 нивоа приоритета и обрнутим регистарским блоковима.
Аритметичке инструкције
уредиARM подржава инструкције сабирања, одузимања и множења. Инструкције целобројног дељења су имплементиране само код ARM језгара базираних на следећим ARM архитектурама:
- ARMv7-M и ARMv7E-M архитектуре увек укључују инструкције дељења.[32]
- ARMv7-R увек укључује инструкције дељења у Thumb скупу инструкција, али опционално и у свом 32-битном скупу инструкција.[33]
- ARMv7-A архитектура опционално укључује инструкције дељења. Инструкције не морају бити имплементиране, или имплементиране само у Thumb скупу инструкција, или и у Thumb и ARM скуповима инструкција, или имплементиране ако су укључена проширења за виртуелизацију.[33]
Регистри
уредиРегистри од R0 до R7 су исти у свим режимима рада процесора; никад нису груписани.
R13 и R14 су груписани у оквиру свих привилегованих рећима осим системског режима. То јест, сваки мод у који се улази услед изузетка има сопствене R13 и R14. Ови регистри углавном садрже показивач стека, и повратну адресу из функцијских позива, редом.
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 |
Псеудоними:
- R13 се такође назива и SP, показивач стека.
- R14 се такође назива и LR, Link регистар.
- R15 се такође назива и PC, програмски бројач.
CPSR има следећих 32 битова.[34]
- M (битови 0–4) су битови режима процесора.
- T (бит 5) је бит стања Thumb-а.
- F (бит 6) је бит искључења FIQ.
- I (бит 7) је бит искључења IRQ.
- A (бит 8) је бит обуставе услед непрецизних података.
- E (бит 9) одређује на којој се адреси налази најзначанији бајт (ендијан).
- IT (битови 10–15 и 25–26) су битови ако-онда стања.
- GE (битови 16–19) одређују однос величина (веће или једнако).
- DNM (битови 20–23) су битови забране модификовања.
- J (бит 24) је бит стања Java-е.
- Q (бит 27) је бит прекорачења (који се мора ручно експлицитно ресетовати).
- V (бит 28) је бит прекорачења.
- C (бит 29) је бит преноса/позајмљивања/проширења.
- Z (бит 30) је нулти бит.
- N (бит 31) означава стање негативно/мање од.
Условно извршавање
уредиСкоро свака ARM инструкција има особину условног извршења звану предвиђање, која је имплементирана са 4-битним селектором кода услова (предвиђање). Да би омогућио безусловно извршење, један од 4-битних кодова узрокује да се инструкција стално извршава. Већина других процесорских архитектура имају кодове услова само на инструкцијама гранања.
Иако предвиђање заузима 4 од 32 бита у речи инструкција, и тако значајно смањује број битова доступних за представљање помераја у инструкцијама са приступом меморији, оно заобилази инструкције гранања при генерисању кода за кратке if
изразе. Осим елиминисања самих инструкција гранања, ово чува проточну обраду инструкција дохватања/декодирања/извршења по цени само једног циклуса по прескоченој инструкцији.
Типичан пример условног извршења је Еуклидов алгоритам базиран на одузимању:
У C програмском језику, петља је:
while (i != j)
{
if (i > j)
{
i -= j;
}
else /* i < j (since i != j in while condition) */
{
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 = i-j;
SUBLT Rj, Rj, Ri ; if "LT" (Less Than), j = j-i;
BNE loop ; if "NE" (Not Equal), then loop
која заобилази гране око then
и else
израза.
Ако су Ri
и Rj
једнаки, онда се ниједна од SUB
инструкција неће извршити, елиминишући потребу да условна грана имплементира while
проверз на врху петље, ако је, на пример, SUBLE
(мање или једнако) био коришћен.
Један од начина на које Thumb код омогућује гушће кодирање је уклањање 4-битног селектора из инструкција без гранања.
Друге особине
уредиДруга особина скупа инструкција је да представи шифтовање и ротације као инструкције „обраде података“ (аритметичке, логичке, и регистар-регистар копирање), тако да, на пример, C израз
a += (j << 2);
може бити преведен у једно-циклусну инструкцију једноструке дужине речи:[35]
ADD Ra, Ra, Rj, LSL #2
Резултат овога је типично гушћи ARM програм са мање приступа меморији; стога је и проточна обрада ефикасније искоришћена.
ARM процесор такође има особине ретко виђене код других RISC архитектура, као што је PC-релативно адресирање (заиста, на 32-битном[1] ARM-у, PC је један од његових 16 регистара) и адресни режими претходног и накнадног инкрементирања.
ARM скуп инструкција се повећавао временом. Неки од првих ARM процесора (пре ARM7TDMI), на пример, нису имали инструкцију за складиштење двобајтне вредности.
Проточна обрада и други проблеми имплементације
уредиARM7 и старије имплементације имају 3-степену проточну обраду; где су степени дохватање, декодирање и извршавање. Архитектуре високих перформанси, као што је ARM9, имају дубљу проточну обраду: Cortex-A8 има 13 степени. Додатне имплементационе промене ради виших перформанси укључују бржи сабирач и сложенију логику предвиђања гранања. Разлика између ARM7DI и ARM7DMI језгара, на пример, је унапређен множач; услед чега је додатно "M".
Подпроцесори
уредиARM архитектура омогућава ненаметљив начин проширења скупа интрукција помоћу „подпроцесора“ који се могу адресирати коришћењем 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. И „халт режим“ и „режим надгледања“ су били подржани. Сам механизам транспорта коришћен за приступ дебагерским функцијама није архитектонски дефинисан, али имеплементације углавном укључују JTAG подршку.
Постоји засебна ARM "CoreSight" дебаг архитектура, која се архитектонски не захтева од стране ARMv7 процесора.
Алати
уредиARM архитектура је подржана од стране скупа развојних алата као што је Emprog ThunderBench за ARM. Такви алати омогућују развојним инжењерима да програмирају урећај са ARM архитектуром коришћењем језика високог нивоа као што је C.[36]
Инструкције DSP унапређења
уредиРади унапређења ARM архитектуре за дигиталну обраду сигнала и мултимедијске апликације, DSP инструкције су додате скупу.[37] Исте су назначене словом "E" у називу ARMv5TE и ARMv5TEJ архитектура. E-варијанте такође подразумевају T,D,M и I.
Нове инструкције су честе у архитектурама дигиталне обраде сигнала. Оне укључују варијације означеног једноинструкцијског множења и сабирања, засићеног сабирања и одузимања, и бројања водећих нула.
SIMD проширења за мултимедију
уредиПредстављена са ARMv6 архитектуром.[38]
Jazelle
уредиJazelle DBX (Direct Bytecode eXecution) је техника која омогуђава Java бајткоду да се извршава директно на ARM архитектури као треће стање извршења (и скуп инструкција) поред постојећих ARM и Thumb-mode. Подршка за ово је назначена са "J" код ARMv5TEJ архитектуре, и код ARM9EJ-S и ARM7EJ-S назива језгара. Подршка за ово стање је неопходна почевши од ARMv6 (осим за ARMv7-M профил), с тим да новија језгра укључују само тривијалну имплементацију без хардверске акцелерације.
Thumb
уредиРади унапређења густине компајлираног кода, процесори почевши од ARM7TDMI (представљеног 1994-е[39]) имају Thumb скуп инструкција, који имају сопствено стање. ( "T" у "TDMI" означава Thumb особину.) У овом стању, процесор извршава Thumb скуп инструкција, компакту 16-битну замену за подскуп ARM скупа инструкција.[40] Већина Thumb инструкција су директно мапиране на нормалне ARM инструкције. Штедња простора се постиже прављењем одређених инструкцијих операнада да буду имплицитни и ограничавањем броја могућности у поређењу са ARM инструкцијама извршеним у стању ARM скупа инструкција.
Код Thumb-а, 16-битни опкодови имају мање функционалности. На пример, само гране могу бити условне, и пуно опкодова су ограничени на приступ само половини општенаменских регистара процесора. Краћи опкодови дају унапређену укупну густину кода, иако неке операције захтевају додатне инструкције. У ситуацијама где је меморијски порт или ширина магистрале ограничена на мање од 32 бита, краћи Thumb опкодови пружају веће перформансе у поређењу са 32-битним ARM кодом, јер мање програмског кода мора бити учитано у процесор преко ограниченог меморијског протока.
Уграђени хардвер, као што је Game Boy Advance, углавном има малу количину RAM-а доступног преко пуне 32-битне магистрале; већини се приступа преко 16-битне или уже секундарне магистрале. У овој ситуацији, углавном је најразумније компајлирати Thumb код и ручно оптимизовати неколико процесорски најзахтевнијих секција коришћењем потпуних 32-битних ARM инструкција, смештањем ових ширих инструкција у меморију којој се приступа 32-битном магистралом.
Први процесор са Thumb инструкцијским декодером је био ARM7TDMI. Све ARM9 и новије породице, укључујући XScale, укључују Thumb декодер инструкција.
Thumb-2
уредиThumb-2 технологија је представљена са ARM1156 језгром, најављеним 2003-е. Thumb-2 проширује ограничени 16-битни скуп инструкција Thumb-а са додатним 32-битним инструкцијама, чиме је створен скуп инструкција променљиве дужине. Циљ за Thumb-2 је био да постигне густину кода сличну оригиналном Thumb-у са перформансама сличним ARM скупу инструкција на 32-битној меморији. Код ARMv7 је речено да је овај циљ постигнут.
Thumb-2 проширује Thumb скуп инструкција са манипулацијом поља битова, табеларним гранама и условним извршавањем. У исто време, ARM скуп инструкција је проширен да одржи еквивалентну функционалност у оба скупа инструкција. Нови „Унификовани асемблерски језик“ (UAL) подржава генерацију или Thumb или ARM инструкција из истог изворног кода; верзије Thumb-а виђене на ARMv7 процесорима су у основи подједнако способне као ARM код (укључујући могућност да пишу обраде прекида). Ово захтева мало пажње, и коришћење нове "IT" (if-then) инструкције, кода дозвољава да се до 4 сукцесивне инструкције изврше на основу провереног стања, или на свом инверзу. При компајлирању у ARM код, ово се игнорише, али када се компајлира Thumb, генерише се стварна инструкција. На пример:
; 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 скуп инструкција. Сви чипови у Cortex-A серији, Cortex-R серији, и ARM11 серији подржавају и „стање ARM скупа инструкција“ и „стање Thumb скупа инструкција“, док чипови Cortex-M серије подржавају само Thumb скуп инструкција.[41][42][43]
Thumb Извршно Окружење (ThumbEE)
уредиThumbEE (погрешно назван Thumb-2EE у некој ARM документацији), рекламиран као Jazelle RCT (Runtime Compilation Target), је најављен 2005-е, појавивши се први пут код Cortex-A8 процесора. ThumbEE је четврто стање скупа инструкција, чинећи мале промене на Thumb-2 проширеном Thumb скупу инструкција. Ове промене чине скуп инструкција посебно прилагођеним за код генерисан у тренутку извршења (нпр. од стране JIT компилације) у контролисаним Извршним Окружењима. ThumbEE је циљ језика као што су Java, C#, Perl, и Python, и дозвољава JIT компајлерима да генеришу мањи излазни код без утицаја на перформансе.
Нове особине представљене са ThumbEE укључују аутоматске провере нултог показивача при свакој инструкцији учитавања и складиштења, инструкцију која извршава проверу граница низа, и посебно инструкције за позив хендлера. Поред тога, пошто користи Thumb-2 технологију, ThumbEE обезбеђује пристуш регистрима r8-r15 (где се држи стање Jazelle/DBX Java виртуелне машине).[44]
ARM Holdings је 23. новембра 2011. прекинуо подршку за сваку употребу ThumbEE скупа инструкција,[45] а ARMv8 уклања подршку за ThumbEE.
Векторски покретни зарез (VFP)
уредиVFP (Векторски покретни зарез) технологија је FPU подпроцесорско проширење ARM архитектуре. Оно обезбеђује јефтино рачунање са покретним зарезом једноструке и двоструке тачности потпуно усклађено са ANSI/IEEE Std 754-1985 стандардом за бинарну аритметику у покретном зарезу. VFP обезбеђује рачунање у покретном зарезу прилагођено за широк спектар примена као што су PDA, телефони, компресија и декомпресија гласа, тродимензионална графика и дигитални звук, штампачи, сет-топ боксеви, и аутомобилске апликације. VFP архитектура је требало да подржи извршење кратких инструкција „векторског режима“, али оне раде на сваком векторском елементу секвенцијално, стога нису постигле перформансу правог векторског паралелизма једне инструкције са вишеструким подацима (SIMD). Овај векторски режим је стога уклоњен убрзо након увођења,[46] и замењен много моћнијом NEON Advanced SIMD јединицом.
Неки уређаји као што је ARM Cortex-A8 имају поједностављени VFPLite модул уместо пуног VFP модула, и захтевају око 10 пута више циклуса по операцији са покретним зарезом.[47] Други подпроцесори за покретни зарез и SIMD у ARM-базираним процесорима укључују FPA, FPE, iwMMXt. Они обезбеђују сличну функционалност као VFP, али нису опкод-компатибилни са њим.
- VFPv1
- Превазиђен.
- VFPv2
- Опционално проширење ARM скупу инструкција код ARMv5TE, ARMv5TEJ и ARMv6 архитектура.
- VFPv3 или VFPv3-D32
- Имплементиран на раним ARMv7 процесорима (Cortex-A8 и A9) и уназад је компатибилан са VFPv2, осим што не може ухватити изузетке при покретном зарезу. VFPv3 има 32x 64-битних FPU регистара стандардно, доноси VCVT инструкције за конвертовање између скалара, децимала и децимала дупле прециности, додаје непосредан режим у VMOV тако да се константе могу учитати у FPU регистре.
- VFPv3-D16
- Као и изнад, али има само 16 64-битних FPU регистара.
- VFPv3-F16
- Редак; подржава IEEE754-2008 стандард половичне тачности (16-битни) за операције у покретном зарезу.
- VFPv4 или VFPv4-D32
- Је имплементиран на новијим ARMv7 процесорима (Cortex-A12 и A15). VFPv4 има 32x 64-битна FPU регистра стандардно, додаје и проширења половичне прецизности и инструкције истовременог сабирања и множења у VFPv3.
- VFPv4-D16
- Као и изнад, али има само 16x 64-битних FPU регистара. Имплементиран на Cortex-A5 и A7 процесорима.
Код Debijan Linuxа и деривата armhf (ARM hard float) се односи на ARMv7 архитектуру која укључује додатно VFP3-D16 хардверско проширење са покретним зарезом (и Thumb-2) изнад.
- Софтверски пакети и крос-компајлерски алати користе armhf и arm/armel суфиксе да их разликују. Видети: Debian ArmHardFloatPort
Напредни SIMD (NEON)
уредиНапредни SIMD проширење (познатије као NEON или "MPE" Media Processing Engine) је комбиновани 64- и 128-битни SIMD скуп инструкција који обезбеђује стандардизовано убрзање код апликација за обраду медија и сигнала. NEON је део свих Cortex-A8 уређаја али је опционалан код Cortex-A9 уређаја.[48] NEON може да извршава декодирање MP3 звука на процесорима од само 10 MHz и GSM адаптивни кодек променљивог преноса (AMR) говора на не више од 13 MHz. Он поседује обиман скуп инструкција, посебне групе регистара и независни извршни хардвер.[49] NEON подржава 8-, 16-, 32- и 64-битне целобројне операције и операције у покретном зарезу једноструке тачности (32-битне) и SIMD операције за аудио и видео обраду као и обраду графике и игара. Код NEON-а, SIMD подржава до 16 операција истовремено. NEON хардвер дели исте регистре који се користе код операција са покретним зарезом. Уређаји као што су ARM Cortex-A8 и Cortex-A9 подржавају 128-битне векторе али их извршавају у деловима од по 64 бита,[47] док новији Cortex-A15 уређаји могу и по 128 бита.
Сигурносна проширења (TrustZone)
уредиСигурносна Проширења, названа TrustZone Technology, су у ARMv6KZ и новијим архитектурама апликационог профила. Она представљају јефтину алтернативу додавању додатног сигурносног језгра систему на чипу, обезбеђујући два виртуелна процесора потпомогнута хардверски базираном контролом приступа. Ово омогућује апликационом језгру да се пребацује између два стања, названа световима (да се не би мешала са другим називима за домене способности), ради спречавања цурења информација из поверљивог света у мање поверљиве. Ова промена света је генерално ортогонална свим другим способностима процесора, стога сваки свет ради независно од другог иако користи исто језгро. Меморија и периферије су затим обавештене о свету у коме се налази језгро и могу искористити то да обезбеде контролу притупа тајнама и коду на уређају.
Типична примена TrustZone технологије је да се извршава цео оперативни систем у мање поверљивом свету, и мањи сигурносно специјализовани код у поверљивијем свету (назван TrustZone Software, TrustZone оптимизована верзија Trusted Foundations Software развијеног од стране Trusted Logic Mobility), обезбеђујући много бољу контролу дигиталних права за контролу коришћења медија на ARM-базираним уређајима[50] и спречујући било какву злоупотребу уређаја. Trusted Foundations Software је преузет од стране Gemalto. Giesecke & Devrient су развили конкурентску имплементацију названу Mobicore. Априла 2012-е ARM Gemalto и Giesecke & Devrient су искомбиновали своја TrustZone портфеља у заједничку фирму Trustonic.[51][52] Open Virtualization је имплементација архитектуре сигурног света слободног кода за TrustZone.[53]
У пракси, с обзиром да су специфични имплементациони детаљи TrustZone-а заштићени и нису јавно изложени за преглед, није јасно који ниво осигурања је обезбеђен за дати модел опасности.
Заштита меморије за извршења
уредиПочевши од ARMv6, ARM архитектура подржава заштиту меморије из које сме да се извршава код, што се назива и XN, за eXecute Never.[54]
ARMv8-R
уредиARMv8-R подархитектура најављена након ARMv8-A дели неке особине осим што није 64-битна.
64/32-битна архитектура
уредиARMv8-A
уредиНајављена октобра 2011-е,[55] ARMv8-A (често звана ARMv8 иако нису све варијанте 64-битне као што је ARMv8-R) представља фундаменталну промену у ARM архитектури. Она доноси 64-битну архитектуру, названу "AArch64", и нови "A64" скуп инструкција. AArch64 обезбеђује компатибилност корисничког простора са ARMv7-A ISA, 32-битном архитектуром, стога названом "AArch32" и старим 32-битним скупом инструкција, сада званим "A32". Thumb скупови инструкција се сада називају "T32" и немају 64-битног парњака. ARMv8-A дозвољава 32-битним апликацијама да се извршавају на 64-битном OS-у, и 32-битном OS-у да буде под контролом 64-битног хипервизора.[1] ARM је најавио своја Cortex-A53 и Cortex-A57 језгра 30. октобра 2012-е.[21]
И за AArch32 и AArch64, ARMv8-A поставља VFPv3/v4 и напредни SIMD (NEON) као стандард. Такође додаје криптографске инструкције које подржавају AES и SHA-1/SHA-256 стандарде.
AArch64 особине:
- Нови скуп инструкција, A64
- Има 31 општенаменски 64-битни регистар.
- Има раздвојене наменске SP и PC
- Инструкције су и даље 32 бита дугачке и углавном исте као код A32 (са LDM/STM инструкцијама и већином условног извршења изостављеним).
- Има упарена учитавања/складиштења (уместо LDM/STM)
- Већина инструкција може примити 32-битне или 64-битне аргументе.
- Подразумева се да су адресе 64-битне.
- Advanced SIMD (NEON) је унапређен
- Има 32× 128-битних регистара (раније 16), којима се може приступити преко VFPv4.
- Подржава операције са покретним зарезом двоструке тачности
- Потпуно IEEE 754 компатибилан
- Инструкције AES енкрипције/декрипције и SHA-1/SHA-2 хеширања такође користе ове регистре.
- Нови систем изузетака
- Мање груписаних регистара и режима
- Меморијско превођење из 48-битне виртуелних адреса базирано на постојећим LPAE, које је дизајнирано да се лако прошири на 64-бита
Подршка оперативних система:
- Линукс – исправке које додају ARMv8-A подршку су предате на преглед Catalin Marinas из ARM Ltd-а. Ове исправке су укључене у Језгро линукса верзије 3.7 касне 2012-е.[56]
- iOS – iOS 7 на 64-битном Apple A7 систему на чипу има подршку за ARMv8-A апликације.
32-битни оперативни систем
уредиИсторијски оперативни системи
уредиПрви ARM-базирани персонални рачунар, Acorn Archimedes, је радио на привременом оперативном систему званом Arthur, који се развио у RISC OS, коришћен на новијим ARM-базираним системима из Acorn-а и других произвођача. Неке Acorn машине су имале и Јуникс порт зван RISC iX.
Уграђени оперативни системи
уредиARM архитектура је подржана од стране великог броја уграђених и система у реалном времену, укључујући Линукс, Windows CE, Simbijan, ChibiOS/RT, FreeRTOS, eCos, Integrity, Nucleus PLUS, MicroC/OS-II, PikeOS,[57] QNX, RTEMS, RTXC Quadros, ThreadX, VxWorks, DRYOS, MQX, T-Kernel, OSE, SCIOPTA и RISC OS.
Оперативни системи за мобилне уређаје
уредиARM архитектура је примарно хардверско окружење за већину оперативних система за мобилне уређаје као што су iOS, Android, Windows Phone, Windows RT, Bada, Blackberry OS/Blackberry 10, MeeGo, Firefox OS, Tizen, Ubuntu Touch, Sailfish и Igelle OS.
Десктоп оперативни системи
уредиARM архитектура је подржана од стране RISC OS и вишеструких Unix-оликих оперативних система укључујући BSD и разне Линукс дистрибуције као што су Ubuntu и Chrome OS.
64-битни оперативни системи
уредиОперативни системи за мобилне уређаје
уредиARMv8-A архитектура је коришћена код оперативних система за мобилне уређаје као што је iOS (на 64-битном ARM процесору).
Десктоп оперативни системи
уредиARMv8-A архитектура је подржана од стране неких Линукс дистрибуција.
Види још
уредиРеференце
уреди- ^ а б в г д Grisenthwaite, Richard (2011). „ARMv8-A Technology Preview” (PDF). Архивирано из оригинала (PDF) 10. 06. 2018. г. Приступљено 31. 10. 2011.
- ^ „Procedure Call Standard for the ARM Architecture” (PDF). ARM Holdings. 30. 11. 2013. Приступљено 27. 5. 2013.
- ^ а б "Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, 2 November 1988. Приступљено 25 May 2007.
- ^ "ARM Cores Climb Into 3G Territory" by Mark Hachman, 2002.
- ^ "The Two Percent Solution" by Jim Turley 2002.
- ^ Krazit, Tom (3. 4. 2006). „ARMed for the living room”. CNet.com.
- ^ Grabham, Dan (19. 7. 2013). „From a small Acorn to 37 billion chips: ARM's ascent to tech superpower”. TechRadar. Приступљено 8. 11. 2013.
- ^ а б Fitzpatrick, Jason (2011). „An interview with Steve Furber”. Communications of the ACM. 54 (5): 34—39. S2CID 9046599. doi:10.1145/1941487.1941501.
- ^ ARM Holdings eager for PC and server expansion, 1. 2. 2011
- ^ Balanza, Kerry McGuire (11. 5. 2010), ARM from zero to billions in 25 short years, ARM Holdings, Архивирано из оригинала 22. 02. 2013. г., Приступљено 8. 11. 2012
- ^ а б Langbridge 2014, стр. 5.
- ^ Chisnall, David (23. 8. 2010). „Understanding ARM Architectures”. Приступљено 26. 5. 2013.
- ^ Furber 2000
- ^ Goodwins, Rupert (4. 12. 2010). „Intel's victims: Eight would-be giant killers”. ZDNet. Архивирано из оригинала 05. 05. 2013. г. Приступљено 7. 3. 2012.
- ^ Richard Murray. „32 bit operation”.
- ^ Levy, Markus. „The History of The ARM Architecture: From Inception to IPO” (PDF). Приступљено 14. 3. 2013.
- ^ Chattopadhyay 2010, стр. 9
- ^ "ARM Corporate Backgrounder", ARM Technology.
- ^ Brown, Eric (2009). „ARM netbook ships with detachable tablet”. Архивирано из оригинала 03. 01. 2013. г. Приступљено 12. 01. 2017.
- ^ McGrath, Dylan (18. 7. 2011). „IHS: ARM ICs to be in 23% of laptops in 2015”. EE Times. Приступљено 20. 7. 2011.
- ^ а б „ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors” (Саопштење). ARM Holdings. Приступљено 31. 10. 2012.
- ^ ARMv8-A Architecture Webpage; ARM Holdings.
- ^ „ARMv8 Architecture Technology Preview (Slides); ARM Holdings.” (PDF). Архивирано из оригинала (PDF) 10. 06. 2018. г. Приступљено 25. 12. 2013.
- ^ ARMv8-R Architecture Webpage; ARM Holdings.
- ^ „ARMv8R Architecture Whitepaper; ARM Holdings.” (PDF). Архивирано из оригинала (PDF) 29. 10. 2013. г. Приступљено 25. 12. 2013.
- ^ „Line Card” (PDF). 2003. Приступљено 1. 10. 2012.
- ^ Parrish, Kevin (14. 7. 2011). „One Million ARM Cores Linked to Simulate Brain”. EE Times. Архивирано из оригинала 17. 07. 2011. г. Приступљено 2. 8. 2011.
- ^ „Processor mode”. ARM Holdings. Приступљено 26. 3. 2013.
- ^ „KVM/ARM” (PDF). Приступљено 3. 4. 2013.
- ^ „How does the ARM Compiler support unaligned accesses?”. 2011. Приступљено 5. 10. 2013.
- ^ „Unaligned data access”. Приступљено 5. 10. 2013.
- ^ „ARMv7-M Architecture Reference Manual; ARM Holdings”. Silver.arm.com. Приступљено 19. 1. 2013.
- ^ а б „ARMv7-A and ARMv7-R Architecture Reference Manual; ARM Holdings”. Silver.arm.com. Приступљено 19. 1. 2013.
- ^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual
- ^ „9.1.2. Instruction cycle counts”.
- ^ ARM Tools
- ^ „ARM DSP Instruction Set Extensions”. Arm.com. Архивирано из оригинала 14. 04. 2009. г. Приступљено 18. 4. 2009.
- ^ DSP & SIMD - ARM
- ^ ARM7TDMI Technical Reference Manual page ii
- ^ Jaggar 1996, стр. 6–1.
- ^ „ARM Processor Instruction Set Architecture”. Arm.com. Архивирано из оригинала 15. 04. 2009. г. Приступљено 18. 4. 2009.
- ^ „ARM aims son of Thumb at uCs, ASSPs, SoCs”. Linuxdevices.com. Архивирано из оригинала 09. 12. 2012. г. Приступљено 18. 4. 2009.
- ^ „ARM Information Center”. Infocenter.arm.com. Приступљено 18. 4. 2009.
- ^ "Arm strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory" Архивирано на сајту Wayback Machine (5. октобар 2007) by Tom R. Halfhill 2005.
- ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition, issue C.b, Section A2.10, 24 July 2012.
- ^ „VFP directives and vector notation”. Arm.com. Приступљено 21. 11. 2011.
- ^ а б „Differences between ARM Cortex-A8 and Cortex-A9”. Shervin Emami. 26. 6. 2023. Приступљено 21. 11. 2011.
- ^ „Cortex-A9 Processor”. Arm.com. Приступљено 21. 11. 2011.
- ^ „About the Cortex-A9 NEON MPE”. Arm.com. Приступљено 21. 11. 2011.
- ^ „ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM T”. News.thomasnet.com. Архивирано из оригинала 18. 09. 2018. г. Приступљено 18. 4. 2009.
- ^ „Trustonic”. Trustonic. Приступљено 14. 6. 2013.
- ^ „ARM, Gemalto and Giesecke & Devrient Form Joint Venture To”. ARM Holdings. 3. 4. 2012. Приступљено 19. 1. 2013.
- ^ „ARM TrustZone and ARM Hypervisor Open Source Software”. Open Virtualization. Архивирано из оригинала 14. 06. 2013. г. Приступљено 14. 6. 2013.
- ^ "APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]", ARM Architecture Reference Manual. Приступљено 2009/12/01.
- ^ „ARM Discloses Technical Details Of The Next Version Of The ARM Architecture” (Саопштење). ARM Holdings. 27. 10. 2011. Приступљено 20. 9. 2013.
- ^ Torvalds, Linus (1. 10. 2012). „Re: [GIT PULL] arm64: Linux kernel port”. Linux kernel mailing list. Архивирано из оригинала 31. 08. 2013. г. Приступљено 2. 10. 2012.
- ^ "PikeOS Safe and Secure Virtualization". Приступљено 10 July 2013.
Литература
уреди- Langbridge, James A. (2014). Professional Embedded ARM Development. John Wiley & Sons. стр. 5. ISBN 978-1-118-78894-3.
- Jaggar, Dave (1996). ARM Architecture Reference Manual. Prentice Hall. стр. 6—1. ISBN 978-0-13-736299-8.
- Furber, Stephen B. (2000). ARM system-on-chip architecture. Boston: Addison-Wesley. ISBN 978-0-201-67519-1.
- Chattopadhyay, Santanu (2010). Embedded System Design. PHI Learning Pvt. Ltd. стр. 9. ISBN 978-81-203-4024-4. Приступљено 15. 3. 2013.
- Assembly Language Programming : ARM Cortex-M3; ; Vincent Mahout; Wiley-ISTE; 256 pages. (1st изд.). 2012. ISBN 978-1-84821-329-6.
- The Definitive Guide to the ARM Cortex-M3 and Cortex-M4 Processors; ; Joseph Yiu; Newnes; 600 pages. (3rd изд.). 2013. ISBN 978-0-12-408082-9.
- Yiu, Joseph (2009). The Definitive Guide to the ARM Cortex-M3. Newnes. ISBN 978-1-85617-964-5.
- Yiu, Joseph (2011). The Definitive Guide to the ARM Cortex-M0. Elsevier. ISBN 978-0-12-385478-0.
- Yurichev, Dennis, "An Introduction To Reverse Engineering for Beginners" including ARM assembly. Online book: http://yurichev.com/writings/RE_for_beginners-en.pdf
Спољашње везе
уреди- Брзе референце