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

Из Википедије, слободне енциклопедије
ARM архитектуре
ARM powered Badge.svg
ARM лого
Дизајнер ARM Holdings
Битови 32-bit или 64-bit
Представљен 1985
Архитектура RISC
Тип Регистар-Регистар
Гранање Условни код
Отвореност Затворен
64/32-битна архитектура
Представљен 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 и целобројни
32-битне архитектуре (Cortex)
Верзија 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/покретни зарез (опционално)
32-битне архитектуре (превазиђене)
Верзија ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
Формат инструкције 32-битни осим Thumb проширења која користе комбиновано 16- и 32-битне инструкције.
Ендијаност Bi (Little as default) код ARMv3 и новијих
Проширења Thumb, Jazelle
Регистри
Општенаменски 16x 32-битни целобројни регистри укључујући PC (26-битно адресирање код старијих) и SP

ARM је породица архитектура скупа инструкција за процесоре базиране на RISC архитектури развијена од стране британске компаније ARM Holdings.

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]

Садржај

Историја[уреди]

Систем на чипу базиран на процесору
ARM1 други процесор за BBC Micro

Британски произвођач рачунара 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 није био довољно моћан за графички кориснички интерфејс.[тражи се извор од 03. 2014.]

Након тестирања свих доступних процесора и закључка да не одговарају, Acorn је одлучио да им треба нова архитектура. Инспирисан документацијом Berkeley RISC пројекта, Acorn је разматрао дизајнирање сопственог процесора.[11] Посета Western Design Center-у у Фениксу, где је 6502 био ажуриран од стране компаније са једним запосленим, је открила Acorn инжењерима Стиву Фурберу и Софи Вилсон да им нису потребни огромни ресурси и врхунска постројења за истраживање и развој.[12]

Вилсон је развио скуп инструкција, пишући симулацију процесора у BBC Basic који је радио на BBC Micro са другим 6502 процесором. Ово је убедило Acorn-ове инжењере да су на добром путу. Вилсон је пришап директору Acorn-а Херману Хојзеру, захтевајући више ресурса. Када је добио дозволу, саставио је мали тим који је имплементирао Вилсонов модел у хардвер.

Acorn RISC Машина: ARM2[уреди]

Званични Acorn RISC Машина пројекат је започет октобра 1983. Изабрали су VLSI Technology као партнера у силиконима, с обзиром да су они били извор ROM-ова и специјализованих чипова за Acorn. Вилцон и Фурбер су водили дизајн. Имплементирали су га са сличном идејом ефикасности као 6502 процесор.[13] Кључни циљ дизајна је било постизање обраде улаза и излаза са малим кашњењем као код 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-а.[14] 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, коју је касније продао Марвелу.

Лиценцирање[уреди]

Чип STM32F103VGT6 ARM Cortex-M3 микроконтролера са 1 мегабајтом флеш меморије из STMicroelectronics-а.

Лиценца језгра[уреди]

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 наплаћују два то три пута више по произведеном ваферу.[тражи се извор од 01. 2014.] За примене ниског и средњег обима, фабрика са дизајнерским сервисима нуди нижу укупну цену (кроз субвенционирање накнаде за лиценцу). За високо-количинске делове из масовне производње, дугорочна уштеда која се постиже нижим ценама вафера смањује тежину ARM-ових NRE (Non-Recurring Engineering) цена, што чини наменске фабрике бољим избором.

Архитектонска лиценца[уреди]

Компаније такође могу добити и ARM архитектонску лиценцу за дизајнирање сопствених процесорских језгара са ARM скупом инструкција. Ова језгра морају бити у потпуности усаглашена са ARM архитектуром.

Језгра[уреди]

Vista-xmag.png За више информација погледајте чланак Списак 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)
Апликациони
[22][23]
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 је речено да је овај циљ постигнут.[тражи се извор од 01. 2014.]

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] Хендлери су мали одељци често позиваног кода, често коришћеног за имплементацију језика високог нивоа, као што је додела меморије за нови објекат. Ове промене потичу од измене сврхе одређених опкодова, и чињенице да је језгро у новом ThumbEE стању скупа инструкција.

23. новембра 2011-е, ARM Holdings прекинуо подршку за сваку употребу 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-а заштићени и нису јавно изложени за преглед, није јасно који ниво осигурања је обезбеђен за дати модел опасности.[тражи се извор од 01. 2014.]

Заштита меморије за извршења[уреди]

Почевши од 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-битни оперативни систем[уреди]

Android, популарни оперативни систем ради на ARM архитектури.

Историјски оперативни системи[уреди]

Први 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 архитектура је подржана од стране неких Линукс дистрибуција.

Такође видети[уреди]

Референце[уреди]

  1. ^ а б в г д Grisenthwaite, Richard (2011). „ARMv8-A Technology Preview“ Приступљено 31. 10. 2011.. 
  2. ^ „Procedure Call Standard for the ARM Architecture“. ARM Holdings. 30 November 2013 Приступљено 27. 5. 2013.. 
  3. ^ а б "Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, 2 November 1988. Retrieved 25 May 2007.
  4. ^ "ARM Cores Climb Into 3G Territory" by Mark Hachman, 2002.
  5. ^ "The Two Percent Solution" by Jim Turley 2002.
  6. ^ Krazit, Tom (3. 4. 2006.). „ARMed for the living room“. CNet.com. 
  7. ^ Grabham, Dan (19. 7. 2013.). „From a small Acorn to 37 billion chips: ARM's ascent to tech superpower“. TechRadar Приступљено 8 November 2013. 
  8. ^ ARM Holdings eager for PC and server expansion, 1 Feb 2011 
  9. ^ Kerry McGuire Balanza (11. 5. 2010.), ARM from zero to billions in 25 short years, ARM Holdings, приступљено 8 Nov 2012 
  10. ^ Chisnall, David (23. 8. 2010.). „Understanding ARM Architectures“ Приступљено 26. 5. 2013.. 
  11. ^ Furber, Stephen B. (2000). ARM system-on-chip architecture. Boston: Addison-Wesley. ISBN 0-201-67519-6. 
  12. ^ Goodwins, Rupert (4. 12. 2010.). „Intel's victims: Eight would-be giant killers“. ZDNet Приступљено 7. 3. 2012.. 
  13. ^ Acorn Archimedes Promotion from 1987
  14. ^ Richard Murray. „32 bit operation“. 
  15. ^ Levy, Markus. „The History of The ARM Architecture: From Inception to IPO“ Приступљено 14. 3. 2013.. 
  16. ^ Santanu Chattopadhyay (2010). Embedded System Design. PHI Learning Pvt. Ltd.. стр. 9. ISBN 978-81-203-4024-4 Приступљено 15. 3. 2013.. 
  17. ^ "ARM Corporate Backgrounder"[мртва веза од 01. 2014.], ARM Technology.
  18. ^ Brown, Eric (2009). „ARM netbook ships with detachable tablet“. Archived from the original on 3. 1. 2013.. 
  19. ^ McGrath, Dylan (18. 7. 2011.). „IHS: ARM ICs to be in 23% of laptops in 2015“. EE Times Приступљено 20. 7. 2011.. 
  20. ^ а б „ARM Launches Cortex-A50 Series, the World’s Most Energy-Efficient 64-bit Processors“ (Press release). ARM Holdings Приступљено 31. 10. 2012.. 
  21. ^ ARMv8-A Architecture Webpage; ARM Holdings.
  22. ^ ARMv8 Architecture Technology Preview (Slides); ARM Holdings.
  23. ^ ARMv8-R Architecture Webpage; ARM Holdings.
  24. ^ ARMv8R Architecture Whitepaper; ARM Holdings.
  25. ^ „Line Card“ (PDF). 2003 Приступљено 1. 10. 2012.. 
  26. ^ Parrish, Kevin (14. 7. 2011.). „One Million ARM Cores Linked to Simulate Brain“. EE Times Приступљено 2. 8. 2011.. 
  27. ^ „Processor mode“. ARM Holdings Приступљено 26. 3. 2013.. 
  28. ^ „KVM/ARM“ Приступљено 3. 4. 2013.. 
  29. ^ „How does the ARM Compiler support unaligned accesses?“. 2011 Приступљено 5. 10. 2013.. 
  30. ^ „Unaligned data access“ Приступљено 5. 10. 2013.. 
  31. ^ „ARMv7-M Architecture Reference Manual; ARM Holdings“. Silver.arm.com Приступљено 19. 1. 2013.. 
  32. ^ а б „ARMv7-A and ARMv7-R Architecture Reference Manual; ARM Holdings“. Silver.arm.com Приступљено 19. 1. 2013.. 
  33. ^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual
  34. ^ „9.1.2. Instruction cycle counts“. 
  35. ^ ARM Tools
  36. ^ „ARM DSP Instruction Set Extensions“. Arm.com. Archived from the original on 14. 4. 2009. Приступљено 18. 4. 2009.. 
  37. ^ DSP & SIMD - ARM
  38. ^ ARM7TDMI Technical Reference Manual page ii
  39. ^ Jaggar, Dave (1996). ARM Architecture Reference Manual. Prentice Hall. стр. 6-1. ISBN 978-0-13-736299-8. 
  40. ^ „ARM Processor Instruction Set Architecture“. Arm.com. Archived from the original on 15. 4. 2009. Приступљено 18. 4. 2009.. 
  41. ^ „ARM aims son of Thumb at uCs, ASSPs, SoCs“. Linuxdevices.com. Archived from the original on 9. 12. 2012. Приступљено 18. 4. 2009.. 
  42. ^ „ARM Information Center“. Infocenter.arm.com Приступљено 18. 4. 2009.. 
  43. ^
  44. ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition, issue C.b, Section A2.10, 24 July 2012.
  45. ^ „VFP directives and vector notation“. Arm.com Приступљено 21 November 2011. 
  46. ^ а б „Differences between ARM Cortex-A8 and Cortex-A9“. Shervin Emami Приступљено 21 November 2011. 
  47. ^ „Cortex-A9 Processor“. Arm.com Приступљено 21 November 2011. 
  48. ^ „About the Cortex-A9 NEON MPE“. Arm.com Приступљено 21 November 2011. 
  49. ^ „ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM T“. News.thomasnet.com Приступљено 18. 4. 2009.. 
  50. ^ „Trustonic“. Trustonic Приступљено 14. 6. 2013.. 
  51. ^ „ARM, Gemalto and Giesecke & Devrient Form Joint Venture To“. ARM Holdings. 3. 4. 2012. Приступљено 19. 1. 2013.. 
  52. ^ „ARM TrustZone and ARM Hypervisor Open Source Software“. Open Virtualization Приступљено 14. 6. 2013.. 
  53. ^ "APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]", ARM Architecture Reference Manual[мртва веза од 01. 2014.]. Retrieved 2009/12/01.
  54. ^ „ARM Discloses Technical Details Of The Next Version Of The ARM Architecture“ (Press release). ARM Holdings. 27. 10. 2011. Приступљено 20. 9. 2013.. 
  55. ^ Linus Torvalds (1. 10. 2012.). „Re: [GIT PULL] arm64: Linux kernel port“. Linux kernel mailing list Приступљено 2. 10. 2012.. 
  56. ^ "PikeOS Safe and Secure Virtualization". Retrieved 10 July 2013.

Литература[уреди]

Додатна литература[уреди]

Спољашње везе[уреди]

Брзе референце
  • Инструкције: Thumb (1), ARM and Thumb-2 (2), Vector Floating Point (3)
  • Опкодови: Thumb (1, 2), ARM (3, 4), GNU Assembler Directives 5.