ARM arhitektura

S Vikipedije, slobodne enciklopedije
ARM arhitekture
ARM logo
DizajnerARM Holdings
Bitovi32-bit ili 64-bit
Predstavljen1985
ArhitekturaRISC
TipRegistar-Registar
GrananjeUslovni kod
OtvorenostZatvoren
64/32-bitna arhitektura
Predstavljen2011
VerzijaARMv8-A
Format instrukcijeAArch64/A64 i AArch32/A32 koriste 32-bitne instrukcije, T32 (Thumb2) koristi kombinovane 16- i 32-bitne instrukcije. ARMv7 kompatibilnost korisničkog prostora[1]
EndijanostBi (Little as default)
ProširenjaSva obavezna: Thumb-2, NEON, Jazelle, VFPv4-D16, VFPv4
Registri
Opštenamenski31x 64-bitni celobrojni registar[1] plus PC i SP, ELR, SPSR za nivoe izuzetaka
U pokretnom zarezu32× 128-bitna registra,[1] skalarni 32- i 64-bitni FP, SIMD 64- i 128-bitni FP i celobrojni
32-bitne arhitekture (Cortex)
VerzijaARMv8-R, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M
Format instrukcije32-bitni osim Thumb2 proširenja koja koriste kombinovano 16- i 32-bitne instrukcije.
EndijanostBi (Little as default)
ProširenjaThumb-2 (obavezno od ARMv7), NEON, Jazelle, FPv4-SP
Registri
Opštenamenski16x 32-bitna celobrojna registra uključujući PC i SP
U pokretnom zarezuDo 32× 64-bitna registra,[2] SIMD/pokretni zarez (opcionalno)
32-bitne arhitekture (prevaziđene)
VerzijaARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
Format instrukcije32-bitni osim Thumb proširenja koja koriste kombinovano 16- i 32-bitne instrukcije.
EndijanostBi (Little as default) kod ARMv3 i novijih
ProširenjaThumb, Jazelle
Registri
Opštenamenski16x 32-bitni celobrojni registri uključujući PC (26-bitno adresiranje kod starijih) i SP

ARM je porodica arhitektura skupa instrukcija za procesore bazirane na RISC arhitekturi razvijena od strane britanske kompanije ARM Holdings.

RISC-bazirani pristup računarskog dizajna znači da ARM procesori zahtevaju znatno manje tranzistora od tipičnih procesora kod procečnih računara. Ovaj pristup smanjuje cenu, zagrevanje i potrošnju energije. Ovo su željene osobine kod lakih, prenosnih, uređaja koji rade na bateriju uključujući pametne telefone, laptopove, tablete, i druge ugrađene sisteme. Jednostavniji dizajn omogućava efikasnije višejezgarne procesore i veđi broj jezgara po manjoj ceni, što daje veću računarsku moć i višu energetsku efikasnost za servere i superračunare.[3][4][5]

ARM Holdings razvija skup insrukcija i arhitekturu za ARM-bazirane proizvode, ali ne proizvodi proizvode. Kompanija periodično izbacuje ažurirane verzije svojih jezgara. Aktuelna jezgra iz ARM Holdings-a podržavaju 32-bitni adresni prostor i 32-bitnu aritmetiku; skoro predstavljena ARMv8-A arhitektura uvodi podršku za 64-bitni adresni prostor i 64-bitnu aritmetiku. Instrukcije za ARM Holdings-ova jezgra imaju 32-bita široke instrukcije fiksirane dužine, ali novije verzije arhitekture takođe podržavaju i skup instrukcije promenljive dužine koji omogućava i 32-bita i 16-bita široke instrukcije radi bolje gustine koda. Neka jezgra omogućavaju i hardversko izvršavanje Java bajtkoda.

ARM Holdings licencira dizajn čipova i arhitekture ARM skupa instrukcija trećim strankama, koje dizajniraju svoje proizvode koji implementiraju jednu od tih arhitektura—uključujući sisteme na čipu (SoC) koji integrišu memoriju, interfejse, radio prijemnike (GSM), i tako dalje. Trenutno, varijante uveliko korišćenih Cortex jezgra, starijih „klasičnih“ jezgara, i specijalizovanih SecurCore jezgara su dostupne svakom od njih sa dozvolom da dodaju ili izbace određene mogućnosti. Kompanije koje proizvode ARM proizvode uključuju Apple, NVIDIA, Qualcomm, Samsung, i Texas Instruments. Apple je prvi implementirao ARMv8-A arhitekturu u svom Apple A7 čipu u iPhone 5S.

U 2005, oko 98% svih prodatih mobilnih telefona su koristili bar jedan ARM procesor.[6] Mala potrošnja struje je učinila ARM procesore jako popularnim: 37 milijardi ARM procesora je proizvedeno do 2013-e, za razliku od 10 milijardi iz 2008.[7] ARM arhitektura (32-bitna) je najrasprostranjenija arhitektura kod mobilnih uređaja, i najpopularnija 32-bitna kod ugrađenih sistema.[8]

Prema ARM Holdings-u, samo u 2010, proizvođači čipova baziranih na ARM arhitekturi su prijavili prodaju 6,1 milijardi ARM-baziranih procesora, što čine 95% telefoni, 35% televizori i set-top boksovi i 10% mobilni računari. To je najrasprotranjenija arhitektura 32-bitnog skupa instrukcija po količini proizvoda.[9][10]

Istorija[uredi | uredi izvor]

Sistem na čipu baziran na procesoru
ARM1 drugi procesor za BBC Micro

Britanski proizvođač računara Acorn Computers je prvi razvio ARM tokom 1980-ih za potrebe svojih personalnih računara. Njihovi prvi ARM-bazirani proizvodi su bili koprocesorski moduli za BBC Micro seriju računara. Nakon uspešnog BBC Micro računara, Acorn Computers je razmatrao kako da napreduje od relativno jednostavnog procesora MOS Technology 6502 radi osvajanja poslovnih tržišta kao onog kojim je uskoro dominirao IBM PC, predstavljen 1981.Acorn Business Computer (ABC) plan je zahtevao da određeni drugi procesori budu napravljeni da rade sa BBC Micro platformom, ali procesori kao što su Motorola 68000 i National Semiconductor 32016 su smatrani neadekvatnim, a 6502 nije bio dovoljno moćan za grafički korisnički interfejs.[11]

Nakon testiranja svih dostupnih procesora i zaključka da ne odgovaraju, Acorn je odlučio da im treba nova arhitektura. Inspirisan dokumentacijom Berkeley RISC projekta, Acorn je razmatrao dizajniranje sopstvenog procesora.[12] Poseta Western Design Center-u u Feniksu, gde je 6502 bio ažuriran od strane kompanije sa jednim zaposlenim, je otkrila Acorn inženjerima Stivu Furberu i Sofi Vilson da im nisu potrebni ogromni resursi i vrhunska postrojenja za istraživanje i razvoj.[13]

Vilson je razvio skup instrukcija, pišući simulaciju procesora u BBC Basic koji je radio na BBC Micro sa drugim 6502 procesorom. Ovo je ubedilo Acorn-ove inženjere da su na dobrom putu. Vilson je prišap direktoru Acorn-a Hermanu Hojzeru, zahtevajući više resursa. Kada je dobio dozvolu, sastavio je mali tim koji je implementirao Vilsonov model u hardver.

Acorn RISC Mašina: ARM2[uredi | uredi izvor]

Zvanični Acorn RISC Mašina projekat je započet oktobra 1983. Izabrali su VLSI Technology kao partnera u silikonima, s obzirom da su oni bili izvor ROM-ova i specijalizovanih čipova za Acorn. Vilcon i Furber su vodili dizajn. Implementirali su ga sa sličnom idejom efikasnosti kao 6502 procesor.[14] Ključni cilj dizajna je bilo postizanje obrade ulaza i izlaza sa malim kašnjenjem kao kod 6502. Arhitektura memorijskog pristupa kod 6502 je omogućila inženjerima da naprave brze mašine bez skupog hardvera za direktan pristup memoriji.

VLSI je proizveo prvi ARM silikon 26. aprila 1985. Radio je iz prve, i bio poznat kao ARM1 od aprila 1985.[3] Prvi serijski sistemi nazvani ARM2 su bili dostupni sledeće godine.

Prva praktična primena ARM-a je bio drugi procesor za BBC Micro, gde je pomogao razvijenom softveru za simulaciju da završi razvoj čipova za podršku (VIDC, IOC, MEMC), i ubrza CAD softver korišćen u razvoju ARM2. Vilson je zatim iznova napisao BBC Basic u ARM asemblerskom jeziku. Velikim znanjem koje je stekao dizajniranjem skupa instrukcija je napravio veoma gust kod, što je ARM BBC Basic učinilo jako dobrim testom za svaki ARM emulator. Originalni cilj ARM-baziranog računara je postignut 1987. puštanjem u prodaju računara Acorn Archimedes.[11] Acorn je još jednom osvojio Queen's Award for Technology za ARM 1992. godine.

ARM2 je imao 32-bitnu magistralu podataka, 26-bitni adresni prostor i 27 32-bitnih registara. 8 bitova iz programskog registra je bilo dostupno i za druge svrhe; viših 6 bitova (dostupnih zbog 26-bitnog adresnog prostora), su služili kao statusni flegovi, a donja 2 bita (dostupnih jer je programski brojač uvek bio izravnjan sa dužinom reči), su korišćeni za podešavanje režima. Adresna magistrala je proširena na 32 bita kod ARM6, ali je programski kod još uvek morao stajati u okviru prvih 64 MB memorije u 26-bitnom režimu kompatibilnosti, zbog bitova rezervisanih za statusne flegove.[15] ARM2 je imao samo 30.000 tranzistora, u poređenju sa Motorolinim 6-godina-starim 68000 modelom sa 68.000.[16] Dobar deo ove jednostavnosti je proizašlo iz nedostatka mikroprograma (koji predstavlja od četvrtine do trećine kod 68000) i iz (kao kod većine procesora tog vremena) nedostatka keša. Ova jednostavnost je donela i mali potrošnju energije, pak bolje performanse od Intel 80286 procesora. Naslednik, ARM3, je proizveden sa 4 KB keša, koji je dodatno poboljšao performanse.[17]

Apple, DEC, Intel, Marvell: ARM6, StrongARM, XScale[uredi | uredi izvor]

Krajem 1980-ih Epl i VLSI Technology su započeli saradnju sa Acorn-om na novijoj verziji ARM jezgra. 1990-e, Acorn je prebacio dizajnerski tim u novu kompaniju nazvanu Acorn RISC Machines Ltd., koja je postala ARM Ltd kada je njena roditeljska kompanija, ARM Holdings plc, ušla na Londonsku berzu i Nasdak tokom 1998-e.[18]

Nova Apple-ARM saradnja će kasnije prerasti u ARM6, prvi put izbačen rane 1992-e. Apple je koristio ARM6-bazirani ARM610 kao osnovu svog Apple Newton PDA. Tokom 1994-e, Acorn je koristio ARM610 kao glavni procesor (CPU) u svojim Acorn Computer Risc PC računarima. DEC je licencirala ARM6 arhitekturu i proizvela StrongARM. Sa 233 MHz, ovaj procesor je trošio samo jedan vat (novije verzije čak dosta manje). Ovaj rad je kasnije predat Intelu kao deo pravnog dogovora, i Intel je iskoristio priliku da obogati svoju i960 liniju sa StrongARM-om. Intel je kasnije razvio svoju implementaciju visokih performansi zvanu XScale, koju je kasnije prodao Marvelu.

Licenciranje[uredi | uredi izvor]

Čip STM32F103VGT6 ARM Cortex-M3 mikrokontrolera sa 1 megabajtom fleš memorije iz STMicroelectronics-a.

Licenca jezgra[uredi | uredi izvor]

ARM jezgro je zadržalo praktično istu veličinu tokom ovih promena. ARM2 je imao 30.000 tranzistora, ARM6 je porastao samo do 35.000. ARM Holdings-ov primarni biznis je prodaja jezgara koje ima u svom intelektualnom vlasništvu, koja korisnici licence koriste da prave mikrokontrolere (MCUs) i procesore bazirane na tim jezgrima. Proizvođač originalnog dizajna kombinuje ARM jezgra sa drugim komponentama u proizvodnji kompletnog procesora, kakav se tipično može proizvesti u postojećim fabrikama poluprovodnika po niskoj ceni a doneti značajne performanse. Najuspešnija implementacija je bio ARM7TDMI koji je prodao stotnie miliona. Atmel je bio prethodni dizajn centar u ARM7TDMI-baziranim ugrađenim sistemima.

ARM arhitekture korišćene u telefonima, PDA-ovima i drugim prenosnim uređajima su u opsegu od ARMv5, kod jeftinih uređaja, preko ARMv6, do ARMv7 u aktuelnim vrhunskim uređajima. ARMv7 uključuje i hardversku jedinicu za rad sa pokretnim zarezom (FPU), sa unapređenom brzinom u odnosu na softverski pokretni zarez.

Tokom 2009-e, neki proizvođači su predstavili netbukove bazirane na ARM procesorima, kao direktnu konkurenciju netbukovima baziranim na Intel Atom-u.[19] Prema analitičkoj firmi IHS iSuppli, do 2015-e, ARM procesori bi mogli biti u 23% svih laptopova.[20]

ARM Holdings nudi višestruke uslove ugovora, koji variraju u ceni i onome što nude. ARM Holdings svim kupcima licence dostavlja opis ARM jezgra kao i kompletni softverski razvojni paket alata (kompilator, debager, skup razvojnih alata) i pravo da prodaje proizvedeni silikon koji sadrži ARM procesor.

SoC paketi koji integrišu ARM-ov dizajn jezgra uključuju Nvidia Tegra, CSR plc's Quatro porodicu, ST-Ericsson-ove Nova i NovaThor, Silicon Labs-ov Precision32 MCU, Texas Instruments-ove OMAP proizvode, Samsungove Hummingbird i Exynos prozvode, Apple-ove A4, A5, i A5X, i Freescale-ov i.MX.

Licencenti bez sopstvenih fabrika, koji žele da integrišu ARM jezgro u svoj dizajn čipa, su uglavnom zainteresovani samo u spremno-za-proizvodnju proverena IP jezgra. Za ove mušterije, ARM Holdings dostavlja logičku mrežu izabranog ARM jezgra, uz apstraktan simulacioni model i test programe koji pomažu integraciju dizajna i proveru. Ambicioznije mušterije, uključujući one sa svojim fabrikama (IDM) i operatore fabrika, biraju da dobiju procesor u sintezibilnoj RTL (Verilog) formi. Sa sintezibilnim RTL-om, mušterija ima mogućnost da izvodi optimizacije i proširenja na arhitektonskom nivou. Ovo omogućava dizajneru da postigne ekzotične dizajnerske ciljeve koji su nemogući sa nemodifikovanom logičkom mrežom (visoku brzinu radnog takta, jako malu potrošnju struje, proširenja skupa instrukcija, itd.). Iako ARM Holdings ne daje pravo svojim mušterijama da preprodaju samu ARM arhitekturu, oni slobodno mogu da prodaju proizvedene proizvode kao što su čipovi, ploče za procenu, kompletne sisteme. Privredničke fabrike poluprovodnika mogu biti poseban slučaj; ne samo da im je dozvoljeno da prodaju gotove proizvode sa ARM jezgrima, oni generalno drže pravno da proizvode ARM jezgra za druge mušterije.

ARM Holdings ceni svoje intelektualno vlasništvo na osnovu subjektivne vrednosti. Slabija ARM jezgra tipično imaju niže cene licenciranja od onih sa visokim performansama. U implementacionim terminima, sintezibilno jezgro košta više od tvrdih (blackbox) jezgara. Komplikujući sistem cena, vlasnici fabrika koji imaju ARM licencu, kao što su Samsung ili Fujitsu, mogu ponuditi mušterijama fabrike niže cene licenciranja. U zameni za realizaciju jezgra kroz dizajn servise u okviru fabrike, mušterija može smanjiti ili eliminisati plaćanje unapred cene za ARM licencu.

U poređenju sa namenskim fabrikama poluprovodnika (kao što su TSMC i UMC) bez sopstvenih usluga dizajna, Fujitsu/Samsung naplaćuju dva to tri puta više po proizvedenom vaferu. Za primene niskog i srednjeg obima, fabrika sa dizajnerskim servisima nudi nižu ukupnu cenu (kroz subvencioniranje naknade za licencu). Za visoko-količinske delove iz masovne proizvodnje, dugoročna ušteda koja se postiže nižim cenama vafera smanjuje težinu ARM-ovih NRE (Non-Recurring Engineering) cena, što čini namenske fabrike boljim izborom.

Arhitektonska licenca[uredi | uredi izvor]

Kompanije takođe mogu dobiti i ARM arhitektonsku licencu za dizajniranje sopstvenih procesorskih jezgara sa ARM skupom instrukcija. Ova jezgra moraju biti u potpunosti usaglašena sa ARM arhitekturom.

Jezgra[uredi | uredi izvor]

Arhitektura Širina
magistrale
Jezgra dizajnirana od strane ARM Holdings Jezgra dizajnirana od strane trećih partija Cortex profil Reference
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
Mikrokontroler
ARMv7-M 32 ARM Cortex-M3
Mikrokontroler
ARMv7E-M 32 ARM Cortex-M4
Mikrokontroler
ARMv7-R 32 ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 U realnom vremenu
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) Aplikacioni
ARMv8-A 64/32 ARM Cortex-A53, ARM Cortex-A57[21] X-Gene, Denver, Apple A7 (Cyclone) Aplikacioni

[22][23]

ARMv8-R 32 Nije najavljno još uvek U realnom vremenu [24][25]

Spisak proizvođača koji implementiraju ARM jezgra u svoj dizajn (proizvodi aplikacijski specifičnog standarda (ASSP), mikroprocesori i mikrokontroleri) su dostupni od strane ARM Holdings-a.[26]

Primer primene ARM jezgara[uredi | uredi izvor]

ARM jezgra se koriste u puno proizvoda, posebno u PDA uređajima i telefonima. Neki primeri računara su Microsoft Surface, Apple-ov iPad i ASUS Eee Pad Transformer. Ostali uključuju Apple-ov iPhone telefon i iPod prenosni medija plejer, Canon PowerShot A470 digitalni fotoaparat, Nintendo DS ručna konzola za igre i Tom Tom sistem za navigaciju.

Tokom 2005-e, ARM Holdings je imao udeo u razvoju računara za Manchester University, SpiNNaker, koji koristi ARM jezgra da simulira ljudski mozak.[27]

ARM čipovi se takođe koriste u Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard i drugim računarima u okviru jedne ploče, jer su veoma mali, jeftini i troše jako malo električne energije.

32-bitna arhitektura[uredi | uredi izvor]

32-bitna ARM arhitektura, kao što je ARMv7-A, je najrasprostranjenija arhitektura kod mobilnih uređaja.[8]

Od 1995-e, Referentno uputstvo ARM arhitekture je bilo primarni izvor dokumentacije u vezi ARM arhitekture i skupa instrukcija, razdvajajući interfejse koje svi ARM procesori moraju da podržavaju (kao što je instrukcijska semantika) od implementacionih detalja koji smeju da variraju. Arhitektura je evoluirala vremenom, i verzija 7 arhitekture, ARMv7, koja definiše arhitekturu za prvo od Cortex serije jezgara, definiše tri arhitektonska „profila":

  • A-profil, „Aplikacioni“ profil: Cortex-A serija
  • R-profil, profil „realnog vremena": Cortex-R serija
  • M-profil, „Mikrokontrolerski“ profil: Cortex-M serija

Iako su arhitektonski profili prvi put definisani za ARMv7, ARM je naknadno definisao ARMv6-M arhitekturu (korišćenu kod Cortex M0/M0+/M1) kao podskup ARMv7-M profila sa manje instrukcija.

Režimi rada procesora[uredi | uredi izvor]

Osim u M-profilu, 32-bitna ARM arhitektura definiše nekoliko režima procesora, u zavisnosti od implementiranih osobina arhitekture. U jednom trenutku, procesor se može nalaziti u samo jednom režimu, ali može menjati režime usled spoljašnjih događaja (prekida) ili programski.[28]

Korisnički režim
Jedini neprivilegovan režim.
FIQ režim
Privilegovan režim u koji se ulazi usled FIQ prekida.
IRQ režim
Privilegovani režim u koji se ulazi usled IRQ prekida.
Supervizorski (svc) režim
Privilegovani režim u koji se ulazi usled resetovanja procesora ili izvršenja SVC instrukcije.
Zaustavni režim
Privilegovani režim u koji se ulazi usled prefetch abort ili data abort izuzetaka.
Nedefinisani režim
Privilegovani režim u koji se ulazi usled nedefinisanog instrukcijskog izuzetka.
Sistemski režim (ARMv4 i noviji)
Jedini privilegovan režim u koji se ne ulazi usled izuzetka. Može mu se pristupiti isključivo pomoću instrukcije koja direktno upisuje režimne bitove CPSR-a.
Režim nadgledanja (ARMv6 i ARMv7 Security Extensions, ARMv8 EL3)
Režim nadgledanja je uveden da podrži TrustZone proširenje kod ARM jezgara.
Hyp mode (ARMv7 Virtualization Extensions, ARMv8 EL2)
Hipervizorski režim koji podržava virtuelizaciju ne-sigurnosne operacije procesora.[29]

Skup instrukcija[uredi | uredi izvor]

Originalna ARM implementacija je bila hardverski ožičena bez mikroprograma, kao i mnogo jednostavniji 8-bitni 6502 procesor korišćen u ranijim Acorn mikroračunarima.

32-bitna ARM arhitektura (i 64-bitna arhitektura većinskim delom, videti dole izuzetke) uključuju sledeće RISC osobine:

  • Učitaj/snimi arhitektura.
  • Nema podrške za neporavnate pristupe memoriji u originalnoj verziji arhitekture. ARMv6 i kasnije, osim u nekim mikrokontrolerskim verzijama, koje podržavaju neporavnat pristup za instrukcija učitavanja/skladištenja od polovine reči i jedne reči sa nekim ograničenjima, kao što je nezagarantovana atomičnost.[30][31]
  • Uniformna 16-struka 32-bitna skup registara (uključujući programski brojač, pokazivač steka i Link registar).
  • Fiksirana širina instrukcije od 32 bita radi lakšeg dekodiranja i protočne obrade, po ceni smanjene gustine koda. Kasnije, Thumb skup instrukcija uvodi 16-bitne instrukcije i povećanu gustinu koda.
  • Uglavnom jedno-ciklusno izvršenje.

Radi kompenzovanja jednostavnijeg dizajna, u poređenju sa procesorima kao što su Intel 80286 i Motorola 68020, dodate su određene funkcionalnosti:

  • Uslovno izvršenje većine instrukcija smanjuje gubitke kod petlji i kompenzuje nedostatak predviđanja grananja.
  • Aritmetičke instrukcije menjaju kodove stanja samo kada se to želi.
  • 32-bitna instrukcija za šiftovanje se može koristiti bez gubitaka performansi sa većinom aritmetičkih instrukcija i računanja adrese.
  • Moćni indeksirani režimi adresiranja.
  • Link register podržava brze funkcijske pozive.
  • Jednostavan, ali brz, podsistem prekida sa 2 nivoa prioriteta i obrnutim registarskim blokovima.

Aritmetičke instrukcije[uredi | uredi izvor]

ARM podržava instrukcije sabiranja, oduzimanja i množenja. Instrukcije celobrojnog deljenja su implementirane samo kod ARM jezgara baziranih na sledećim ARM arhitekturama:

  • ARMv7-M i ARMv7E-M arhitekture uvek uključuju instrukcije deljenja.[32]
  • ARMv7-R uvek uključuje instrukcije deljenja u Thumb skupu instrukcija, ali opcionalno i u svom 32-bitnom skupu instrukcija.[33]
  • ARMv7-A arhitektura opcionalno uključuje instrukcije deljenja. Instrukcije ne moraju biti implementirane, ili implementirane samo u Thumb skupu instrukcija, ili i u Thumb i ARM skupovima instrukcija, ili implementirane ako su uključena proširenja za virtuelizaciju.[33]

Registri[uredi | uredi izvor]

Registri od R0 do R7 su isti u svim režimima rada procesora; nikad nisu grupisani.

R13 i R14 su grupisani u okviru svih privilegovanih rećima osim sistemskog režima. To jest, svaki mod u koji se ulazi usled izuzetka ima sopstvene R13 i R14. Ovi registri uglavnom sadrže pokazivač steka, i povratnu adresu iz funkcijskih poziva, redom.

Registri u okviru režima procesora
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

Pseudonimi:

  • R13 se takođe naziva i SP, pokazivač steka.
  • R14 se takođe naziva i LR, Link registar.
  • R15 se takođe naziva i PC, programski brojač.

CPSR ima sledećih 32 bitova.[34]

  • M (bitovi 0–4) su bitovi režima procesora.
  • T (bit 5) je bit stanja Thumb-a.
  • F (bit 6) je bit isključenja FIQ.
  • I (bit 7) je bit isključenja IRQ.
  • A (bit 8) je bit obustave usled nepreciznih podataka.
  • E (bit 9) određuje na kojoj se adresi nalazi najznačaniji bajt (endijan).
  • IT (bitovi 10–15 i 25–26) su bitovi ako-onda stanja.
  • GE (bitovi 16–19) određuju odnos veličina (veće ili jednako).
  • DNM (bitovi 20–23) su bitovi zabrane modifikovanja.
  • J (bit 24) je bit stanja Java-e.
  • Q (bit 27) je bit prekoračenja (koji se mora ručno eksplicitno resetovati).
  • V (bit 28) je bit prekoračenja.
  • C (bit 29) je bit prenosa/pozajmljivanja/proširenja.
  • Z (bit 30) je nulti bit.
  • N (bit 31) označava stanje negativno/manje od.

Uslovno izvršavanje[uredi | uredi izvor]

Skoro svaka ARM instrukcija ima osobinu uslovnog izvršenja zvanu predviđanje, koja je implementirana sa 4-bitnim selektorom koda uslova (predviđanje). Da bi omogućio bezuslovno izvršenje, jedan od 4-bitnih kodova uzrokuje da se instrukcija stalno izvršava. Većina drugih procesorskih arhitektura imaju kodove uslova samo na instrukcijama grananja.

Iako predviđanje zauzima 4 od 32 bita u reči instrukcija, i tako značajno smanjuje broj bitova dostupnih za predstavljanje pomeraja u instrukcijama sa pristupom memoriji, ono zaobilazi instrukcije grananja pri generisanju koda za kratke if izraze. Osim eliminisanja samih instrukcija grananja, ovo čuva protočnu obradu instrukcija dohvatanja/dekodiranja/izvršenja po ceni samo jednog ciklusa po preskočenoj instrukciji.

Tipičan primer uslovnog izvršenja je Euklidov algoritam baziran na oduzimanju:

U C programskom jeziku, petlja je:

    while (i != j)
    {
       if (i > j)
       {
           i -= j;
       }
       else  /* i < j (since i != j in while condition) */
       {
           j -= i;
       }
    }

U ARM asembleru, petlja je:

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

koja zaobilazi grane oko then i else izraza.

Ako su Ri i Rj jednaki, onda se nijedna od SUB instrukcija neće izvršiti, eliminišući potrebu da uslovna grana implementira while proverz na vrhu petlje, ako je, na primer, SUBLE (manje ili jednako) bio korišćen.

Jedan od načina na koje Thumb kod omogućuje gušće kodiranje je uklanjanje 4-bitnog selektora iz instrukcija bez grananja.

Druge osobine[uredi | uredi izvor]

Druga osobina skupa instrukcija je da predstavi šiftovanje i rotacije kao instrukcije „obrade podataka“ (aritmetičke, logičke, i registar-registar kopiranje), tako da, na primer, C izraz

a += (j << 2);

može biti preveden u jedno-ciklusnu instrukciju jednostruke dužine reči:[35]

ADD Ra, Ra, Rj, LSL #2

Rezultat ovoga je tipično gušći ARM program sa manje pristupa memoriji; stoga je i protočna obrada efikasnije iskorišćena.

ARM procesor takođe ima osobine retko viđene kod drugih RISC arhitektura, kao što je PC-relativno adresiranje (zaista, na 32-bitnom[1] ARM-u, PC je jedan od njegovih 16 registara) i adresni režimi prethodnog i naknadnog inkrementiranja.

ARM skup instrukcija se povećavao vremenom. Neki od prvih ARM procesora (pre ARM7TDMI), na primer, nisu imali instrukciju za skladištenje dvobajtne vrednosti.

Protočna obrada i drugi problemi implementacije[uredi | uredi izvor]

ARM7 i starije implementacije imaju 3-stepenu protočnu obradu; gde su stepeni dohvatanje, dekodiranje i izvršavanje. Arhitekture visokih performansi, kao što je ARM9, imaju dublju protočnu obradu: Cortex-A8 ima 13 stepeni. Dodatne implementacione promene radi viših performansi uključuju brži sabirač i složeniju logiku predviđanja grananja. Razlika između ARM7DI i ARM7DMI jezgara, na primer, je unapređen množač; usled čega je dodatno "M".

Podprocesori[uredi | uredi izvor]

ARM arhitektura omogućava nenametljiv način proširenja skupa intrukcija pomoću „podprocesora“ koji se mogu adresirati korišćenjem MCR, MRC, MRRC, MCRR, i sličnih instrukcija. Podprocesorski prostor je logički podeljen na 16 podprocesora sa brojevima od 0 do 15, gde je podprocesor 15 (cp15) rezervisan za neke tipične kontrolne funkcije kao što su upravljanje kešom i MMU operacije na procesorima koji je imaju.

Kod ARM-baziranih mašina, periferalni uređaji su uglavnom povezani sa procesorom mapiranjem njihovih fizičkih registara u ARM memorijski prostor, u podprocesorski prostor, ili povezivanjem na drugi uređaj (magistralu) koja ga zauzvrat povezuje sa procesorom. Podprocesorski pristupi imaju niže kašnjenje, pa se nekim periferijama — na primer XScale kontroleru prekida — može pristupiti na oba načina: i kroz memoriju i kroz podprocesore.

U drugim slučajevima, dizajneri čipova integrišu hardver samo pomoću podprocesorskog mehanizma. Na primer, mašina za obradu slike može biti malo ARM7TDMI jezgro kombinovano sa podprocesorom koji ima namenske operacije u okviru podrške specifičnog skupa HDTV primitiva za transkodovanje.

Debagovanje[uredi | uredi izvor]

Svi moderni ARM procesori uključuju funkcionalnost hardverskog debagovanja, što omogućava softverskim debagerima da izvode operacije kao što su haltovanje, stepenovanje, i ukazivanje na mesto greške u kodu počevši od reseta. Ove osobine su ugrađene korišćenjem JTAG podrške, s tim da neka novija jezgra opcionalno podržavaju ARM-ov sopstveni dvožični "SWD" protokol. Kod ARM7TDMI jezgara, "D" je predstavljalo JTAG debag podršku, a "I" je predstavljalo prisustvo "EmbeddedICE" debag modula. Za ARM7 i ARM9 generacije jezgara, EmbeddedICE preko JTAG-a je bio defakto debag standard, doduše ne arhitektonski garantovan.

ARMv7 arhitektura definiše osnovne funkcije debagovanja na arhitektornskom nivou. One uključuju tačke prekida, tačke nadgledanja i izvršenje instrukcija u „Debag režimu"; slične funkcije su takođe bile dostupne i sa EmbeddedICE. I „halt režim“ i „režim nadgledanja“ su bili podržani. Sam mehanizam transporta korišćen za pristup debagerskim funkcijama nije arhitektonski definisan, ali imeplementacije uglavnom uključuju JTAG podršku.

Postoji zasebna ARM "CoreSight" debag arhitektura, koja se arhitektonski ne zahteva od strane ARMv7 procesora.

Alati[uredi | uredi izvor]

ARM arhitektura je podržana od strane skupa razvojnih alata kao što je Emprog ThunderBench za ARM. Takvi alati omogućuju razvojnim inženjerima da programiraju urećaj sa ARM arhitekturom korišćenjem jezika visokog nivoa kao što je C.[36]

Instrukcije DSP unapređenja[uredi | uredi izvor]

Radi unapređenja ARM arhitekture za digitalnu obradu signala i multimedijske aplikacije, DSP instrukcije su dodate skupu.[37] Iste su naznačene slovom "E" u nazivu ARMv5TE i ARMv5TEJ arhitektura. E-varijante takođe podrazumevaju T,D,M i I.

Nove instrukcije su česte u arhitekturama digitalne obrade signala. One uključuju varijacije označenog jednoinstrukcijskog množenja i sabiranja, zasićenog sabiranja i oduzimanja, i brojanja vodećih nula.

SIMD proširenja za multimediju[uredi | uredi izvor]

Predstavljena sa ARMv6 arhitekturom.[38]

Jazelle[uredi | uredi izvor]

Jazelle DBX (Direct Bytecode eXecution) je tehnika koja omoguđava Java bajtkodu da se izvršava direktno na ARM arhitekturi kao treće stanje izvršenja (i skup instrukcija) pored postojećih ARM i Thumb-mode. Podrška za ovo je naznačena sa "J" kod ARMv5TEJ arhitekture, i kod ARM9EJ-S i ARM7EJ-S naziva jezgara. Podrška za ovo stanje je neophodna počevši od ARMv6 (osim za ARMv7-M profil), s tim da novija jezgra uključuju samo trivijalnu implementaciju bez hardverske akceleracije.

Thumb[uredi | uredi izvor]

Radi unapređenja gustine kompajliranog koda, procesori počevši od ARM7TDMI (predstavljenog 1994-e[39]) imaju Thumb skup instrukcija, koji imaju sopstveno stanje. ( "T" u "TDMI" označava Thumb osobinu.) U ovom stanju, procesor izvršava Thumb skup instrukcija, kompaktu 16-bitnu zamenu za podskup ARM skupa instrukcija.[40] Većina Thumb instrukcija su direktno mapirane na normalne ARM instrukcije. Štednja prostora se postiže pravljenjem određenih instrukcijih operanada da budu implicitni i ograničavanjem broja mogućnosti u poređenju sa ARM instrukcijama izvršenim u stanju ARM skupa instrukcija.

Kod Thumb-a, 16-bitni opkodovi imaju manje funkcionalnosti. Na primer, samo grane mogu biti uslovne, i puno opkodova su ograničeni na pristup samo polovini opštenamenskih registara procesora. Kraći opkodovi daju unapređenu ukupnu gustinu koda, iako neke operacije zahtevaju dodatne instrukcije. U situacijama gde je memorijski port ili širina magistrale ograničena na manje od 32 bita, kraći Thumb opkodovi pružaju veće performanse u poređenju sa 32-bitnim ARM kodom, jer manje programskog koda mora biti učitano u procesor preko ograničenog memorijskog protoka.

Ugrađeni hardver, kao što je Game Boy Advance, uglavnom ima malu količinu RAM-a dostupnog preko pune 32-bitne magistrale; većini se pristupa preko 16-bitne ili uže sekundarne magistrale. U ovoj situaciji, uglavnom je najrazumnije kompajlirati Thumb kod i ručno optimizovati nekoliko procesorski najzahtevnijih sekcija korišćenjem potpunih 32-bitnih ARM instrukcija, smeštanjem ovih širih instrukcija u memoriju kojoj se pristupa 32-bitnom magistralom.

Prvi procesor sa Thumb instrukcijskim dekoderom je bio ARM7TDMI. Sve ARM9 i novije porodice, uključujući XScale, uključuju Thumb dekoder instrukcija.

Thumb-2[uredi | uredi izvor]

Thumb-2 tehnologija je predstavljena sa ARM1156 jezgrom, najavljenim 2003-e. Thumb-2 proširuje ograničeni 16-bitni skup instrukcija Thumb-a sa dodatnim 32-bitnim instrukcijama, čime je stvoren skup instrukcija promenljive dužine. Cilj za Thumb-2 je bio da postigne gustinu koda sličnu originalnom Thumb-u sa performansama sličnim ARM skupu instrukcija na 32-bitnoj memoriji. Kod ARMv7 je rečeno da je ovaj cilj postignut.

Thumb-2 proširuje Thumb skup instrukcija sa manipulacijom polja bitova, tabelarnim granama i uslovnim izvršavanjem. U isto vreme, ARM skup instrukcija je proširen da održi ekvivalentnu funkcionalnost u oba skupa instrukcija. Novi „Unifikovani asemblerski jezik“ (UAL) podržava generaciju ili Thumb ili ARM instrukcija iz istog izvornog koda; verzije Thumb-a viđene na ARMv7 procesorima su u osnovi podjednako sposobne kao ARM kod (uključujući mogućnost da pišu obrade prekida). Ovo zahteva malo pažnje, i korišćenje nove "IT" (if-then) instrukcije, koda dozvoljava da se do 4 sukcesivne instrukcije izvrše na osnovu proverenog stanja, ili na svom inverzu. Pri kompajliranju u ARM kod, ovo se ignoriše, ali kada se kompajlira Thumb, generiše se stvarna instrukcija. Na primer:

; 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"

Svi ARMv7 čipovi podržavaju Thumb skup instrukcija. Svi čipovi u Cortex-A seriji, Cortex-R seriji, i ARM11 seriji podržavaju i „stanje ARM skupa instrukcija“ i „stanje Thumb skupa instrukcija“, dok čipovi Cortex-M serije podržavaju samo Thumb skup instrukcija.[41][42][43]

Thumb Izvršno Okruženje (ThumbEE)[uredi | uredi izvor]

ThumbEE (pogrešno nazvan Thumb-2EE u nekoj ARM dokumentaciji), reklamiran kao Jazelle RCT (Runtime Compilation Target), je najavljen 2005-e, pojavivši se prvi put kod Cortex-A8 procesora. ThumbEE je četvrto stanje skupa instrukcija, čineći male promene na Thumb-2 proširenom Thumb skupu instrukcija. Ove promene čine skup instrukcija posebno prilagođenim za kod generisan u trenutku izvršenja (npr. od strane JIT kompilacije) u kontrolisanim Izvršnim Okruženjima. ThumbEE je cilj jezika kao što su Java, C#, Perl, i Python, i dozvoljava JIT kompajlerima da generišu manji izlazni kod bez uticaja na performanse.

Nove osobine predstavljene sa ThumbEE uključuju automatske provere nultog pokazivača pri svakoj instrukciji učitavanja i skladištenja, instrukciju koja izvršava proveru granica niza, i posebno instrukcije za poziv hendlera. Pored toga, pošto koristi Thumb-2 tehnologiju, ThumbEE obezbeđuje pristuš registrima r8-r15 (gde se drži stanje Jazelle/DBX Java virtuelne mašine).[44]

ARM Holdings je 23. novembra 2011. prekinuo podršku za svaku upotrebu ThumbEE skupa instrukcija,[45] a ARMv8 uklanja podršku za ThumbEE.

Vektorski pokretni zarez (VFP)[uredi | uredi izvor]

VFP (Vektorski pokretni zarez) tehnologija je FPU podprocesorsko proširenje ARM arhitekture. Ono obezbeđuje jeftino računanje sa pokretnim zarezom jednostruke i dvostruke tačnosti potpuno usklađeno sa ANSI/IEEE Std 754-1985 standardom za binarnu aritmetiku u pokretnom zarezu. VFP obezbeđuje računanje u pokretnom zarezu prilagođeno za širok spektar primena kao što su PDA, telefoni, kompresija i dekompresija glasa, trodimenzionalna grafika i digitalni zvuk, štampači, set-top boksevi, i automobilske aplikacije. VFP arhitektura je trebalo da podrži izvršenje kratkih instrukcija „vektorskog režima“, ali one rade na svakom vektorskom elementu sekvencijalno, stoga nisu postigle performansu pravog vektorskog paralelizma jedne instrukcije sa višestrukim podacima (SIMD). Ovaj vektorski režim je stoga uklonjen ubrzo nakon uvođenja,[46] i zamenjen mnogo moćnijom NEON Advanced SIMD jedinicom.

Neki uređaji kao što je ARM Cortex-A8 imaju pojednostavljeni VFPLite modul umesto punog VFP modula, i zahtevaju oko 10 puta više ciklusa po operaciji sa pokretnim zarezom.[47] Drugi podprocesori za pokretni zarez i SIMD u ARM-baziranim procesorima uključuju FPA, FPE, iwMMXt. Oni obezbeđuju sličnu funkcionalnost kao VFP, ali nisu opkod-kompatibilni sa njim.

VFPv1
Prevaziđen.
VFPv2
Opcionalno proširenje ARM skupu instrukcija kod ARMv5TE, ARMv5TEJ i ARMv6 arhitektura.
VFPv3 ili VFPv3-D32
Implementiran na ranim ARMv7 procesorima (Cortex-A8 i A9) i unazad je kompatibilan sa VFPv2, osim što ne može uhvatiti izuzetke pri pokretnom zarezu. VFPv3 ima 32x 64-bitnih FPU registara standardno, donosi VCVT instrukcije za konvertovanje između skalara, decimala i decimala duple precinosti, dodaje neposredan režim u VMOV tako da se konstante mogu učitati u FPU registre.
VFPv3-D16
Kao i iznad, ali ima samo 16 64-bitnih FPU registara.
VFPv3-F16
Redak; podržava IEEE754-2008 standard polovične tačnosti (16-bitni) za operacije u pokretnom zarezu.
VFPv4 ili VFPv4-D32
Je implementiran na novijim ARMv7 procesorima (Cortex-A12 i A15). VFPv4 ima 32x 64-bitna FPU registra standardno, dodaje i proširenja polovične preciznosti i instrukcije istovremenog sabiranja i množenja u VFPv3.
VFPv4-D16
Kao i iznad, ali ima samo 16x 64-bitnih FPU registara. Implementiran na Cortex-A5 i A7 procesorima.

Kod Debijan Linuxa i derivata armhf (ARM hard float) se odnosi na ARMv7 arhitekturu koja uključuje dodatno VFP3-D16 hardversko proširenje sa pokretnim zarezom (i Thumb-2) iznad.

  • Softverski paketi i kros-kompajlerski alati koriste armhf i arm/armel sufikse da ih razlikuju. Videti: Debian ArmHardFloatPort

Napredni SIMD (NEON)[uredi | uredi izvor]

Napredni SIMD proširenje (poznatije kao NEON ili "MPE" Media Processing Engine) je kombinovani 64- i 128-bitni SIMD skup instrukcija koji obezbeđuje standardizovano ubrzanje kod aplikacija za obradu medija i signala. NEON je deo svih Cortex-A8 uređaja ali je opcionalan kod Cortex-A9 uređaja.[48] NEON može da izvršava dekodiranje MP3 zvuka na procesorima od samo 10 MHz i GSM adaptivni kodek promenljivog prenosa (AMR) govora na ne više od 13 MHz. On poseduje obiman skup instrukcija, posebne grupe registara i nezavisni izvršni hardver.[49] NEON podržava 8-, 16-, 32- i 64-bitne celobrojne operacije i operacije u pokretnom zarezu jednostruke tačnosti (32-bitne) i SIMD operacije za audio i video obradu kao i obradu grafike i igara. Kod NEON-a, SIMD podržava do 16 operacija istovremeno. NEON hardver deli iste registre koji se koriste kod operacija sa pokretnim zarezom. Uređaji kao što su ARM Cortex-A8 i Cortex-A9 podržavaju 128-bitne vektore ali ih izvršavaju u delovima od po 64 bita,[47] dok noviji Cortex-A15 uređaji mogu i po 128 bita.

Sigurnosna proširenja (TrustZone)[uredi | uredi izvor]

Sigurnosna Proširenja, nazvana TrustZone Technology, su u ARMv6KZ i novijim arhitekturama aplikacionog profila. Ona predstavljaju jeftinu alternativu dodavanju dodatnog sigurnosnog jezgra sistemu na čipu, obezbeđujući dva virtuelna procesora potpomognuta hardverski baziranom kontrolom pristupa. Ovo omogućuje aplikacionom jezgru da se prebacuje između dva stanja, nazvana svetovima (da se ne bi mešala sa drugim nazivima za domene sposobnosti), radi sprečavanja curenja informacija iz poverljivog sveta u manje poverljive. Ova promena sveta je generalno ortogonalna svim drugim sposobnostima procesora, stoga svaki svet radi nezavisno od drugog iako koristi isto jezgro. Memorija i periferije su zatim obaveštene o svetu u kome se nalazi jezgro i mogu iskoristiti to da obezbede kontrolu pritupa tajnama i kodu na uređaju.

Tipična primena TrustZone tehnologije je da se izvršava ceo operativni sistem u manje poverljivom svetu, i manji sigurnosno specijalizovani kod u poverljivijem svetu (nazvan TrustZone Software, TrustZone optimizovana verzija Trusted Foundations Software razvijenog od strane Trusted Logic Mobility), obezbeđujući mnogo bolju kontrolu digitalnih prava za kontrolu korišćenja medija na ARM-baziranim uređajima[50] i sprečujući bilo kakvu zloupotrebu uređaja. Trusted Foundations Software je preuzet od strane Gemalto. Giesecke & Devrient su razvili konkurentsku implementaciju nazvanu Mobicore. Aprila 2012-e ARM Gemalto i Giesecke & Devrient su iskombinovali svoja TrustZone portfelja u zajedničku firmu Trustonic.[51][52] Open Virtualization je implementacija arhitekture sigurnog sveta slobodnog koda za TrustZone.[53]

U praksi, s obzirom da su specifični implementacioni detalji TrustZone-a zaštićeni i nisu javno izloženi za pregled, nije jasno koji nivo osiguranja je obezbeđen za dati model opasnosti.

Zaštita memorije za izvršenja[uredi | uredi izvor]

Počevši od ARMv6, ARM arhitektura podržava zaštitu memorije iz koje sme da se izvršava kod, što se naziva i XN, za eXecute Never.[54]

ARMv8-R[uredi | uredi izvor]

ARMv8-R podarhitektura najavljena nakon ARMv8-A deli neke osobine osim što nije 64-bitna.

64/32-bitna arhitektura[uredi | uredi izvor]

ARMv8-A[uredi | uredi izvor]

Najavljena oktobra 2011-e,[55] ARMv8-A (često zvana ARMv8 iako nisu sve varijante 64-bitne kao što je ARMv8-R) predstavlja fundamentalnu promenu u ARM arhitekturi. Ona donosi 64-bitnu arhitekturu, nazvanu "AArch64", i novi "A64" skup instrukcija. AArch64 obezbeđuje kompatibilnost korisničkog prostora sa ARMv7-A ISA, 32-bitnom arhitekturom, stoga nazvanom "AArch32" i starim 32-bitnim skupom instrukcija, sada zvanim "A32". Thumb skupovi instrukcija se sada nazivaju "T32" i nemaju 64-bitnog parnjaka. ARMv8-A dozvoljava 32-bitnim aplikacijama da se izvršavaju na 64-bitnom OS-u, i 32-bitnom OS-u da bude pod kontrolom 64-bitnog hipervizora.[1] ARM je najavio svoja Cortex-A53 i Cortex-A57 jezgra 30. oktobra 2012-e.[21]

I za AArch32 i AArch64, ARMv8-A postavlja VFPv3/v4 i napredni SIMD (NEON) kao standard. Takođe dodaje kriptografske instrukcije koje podržavaju AES i SHA-1/SHA-256 standarde.

AArch64 osobine:

  • Novi skup instrukcija, A64
    • Ima 31 opštenamenski 64-bitni registar.
    • Ima razdvojene namenske SP i PC
    • Instrukcije su i dalje 32 bita dugačke i uglavnom iste kao kod A32 (sa LDM/STM instrukcijama i većinom uslovnog izvršenja izostavljenim).
      • Ima uparena učitavanja/skladištenja (umesto LDM/STM)
    • Većina instrukcija može primiti 32-bitne ili 64-bitne argumente.
    • Podrazumeva se da su adrese 64-bitne.
  • Advanced SIMD (NEON) je unapređen
    • Ima 32× 128-bitnih registara (ranije 16), kojima se može pristupiti preko VFPv4.
    • Podržava operacije sa pokretnim zarezom dvostruke tačnosti
    • Potpuno IEEE 754 kompatibilan
    • Instrukcije AES enkripcije/dekripcije i SHA-1/SHA-2 heširanja takođe koriste ove registre.
  • Novi sistem izuzetaka
    • Manje grupisanih registara i režima
  • Memorijsko prevođenje iz 48-bitne virtuelnih adresa bazirano na postojećim LPAE, koje je dizajnirano da se lako proširi na 64-bita

Podrška operativnih sistema:

  • Linuks – ispravke koje dodaju ARMv8-A podršku su predate na pregled Catalin Marinas iz ARM Ltd-a. Ove ispravke su uključene u Jezgro linuksa verzije 3.7 kasne 2012-e.[56]
  • iOS – iOS 7 na 64-bitnom Apple A7 sistemu na čipu ima podršku za ARMv8-A aplikacije.

32-bitni operativni sistem[uredi | uredi izvor]

Android, popularni operativni sistem radi na ARM arhitekturi.

Istorijski operativni sistemi[uredi | uredi izvor]

Prvi ARM-bazirani personalni računar, Acorn Archimedes, je radio na privremenom operativnom sistemu zvanom Arthur, koji se razvio u RISC OS, korišćen na novijim ARM-baziranim sistemima iz Acorn-a i drugih proizvođača. Neke Acorn mašine su imale i Juniks port zvan RISC iX.

Ugrađeni operativni sistemi[uredi | uredi izvor]

ARM arhitektura je podržana od strane velikog broja ugrađenih i sistema u realnom vremenu, uključujući Linuks, 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 i RISC OS.

Operativni sistemi za mobilne uređaje[uredi | uredi izvor]

ARM arhitektura je primarno hardversko okruženje za većinu operativnih sistema za mobilne uređaje kao što su iOS, Android, Windows Phone, Windows RT, Bada, Blackberry OS/Blackberry 10, MeeGo, Firefox OS, Tizen, Ubuntu Touch, Sailfish i Igelle OS.

Desktop operativni sistemi[uredi | uredi izvor]

ARM arhitektura je podržana od strane RISC OS i višestrukih Unix-olikih operativnih sistema uključujući BSD i razne Linuks distribucije kao što su Ubuntu i Chrome OS.

64-bitni operativni sistemi[uredi | uredi izvor]

Operativni sistemi za mobilne uređaje[uredi | uredi izvor]

ARMv8-A arhitektura je korišćena kod operativnih sistema za mobilne uređaje kao što je iOS (na 64-bitnom ARM procesoru).

Desktop operativni sistemi[uredi | uredi izvor]

ARMv8-A arhitektura je podržana od strane nekih Linuks distribucija.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ a b v g d Grisenthwaite, Richard (2011). „ARMv8-A Technology Preview” (PDF). Arhivirano iz originala (PDF) 10. 06. 2018. g. Pristupljeno 31. 10. 2011. 
  2. ^ „Procedure Call Standard for the ARM Architecture” (PDF). ARM Holdings. 30. 11. 2013. Pristupljeno 27. 5. 2013. 
  3. ^ a b "Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, 2 November 1988. Pristupljeno 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. Pristupljeno 8. 11. 2013. 
  8. ^ ARM Holdings eager for PC and server expansion, 1. 2. 2011 
  9. ^ Balanza, Kerry McGuire (11. 5. 2010), ARM from zero to billions in 25 short years, ARM Holdings, Arhivirano iz originala 22. 02. 2013. g., Pristupljeno 8. 11. 2012 
  10. ^ a b Langbridge 2014, str. 5.
  11. ^ Chisnall, David (23. 8. 2010). „Understanding ARM Architectures”. Pristupljeno 26. 5. 2013. 
  12. ^ Furber 2000
  13. ^ Goodwins, Rupert (4. 12. 2010). „Intel's victims: Eight would-be giant killers”. ZDNet. Arhivirano iz originala 05. 05. 2013. g. Pristupljeno 7. 3. 2012. 
  14. ^ Richard Murray. „32 bit operation”. 
  15. ^ Levy, Markus. „The History of The ARM Architecture: From Inception to IPO” (PDF). Pristupljeno 14. 3. 2013. 
  16. ^ Chattopadhyay 2010, str. 9
  17. ^ "ARM Corporate Backgrounder", ARM Technology.
  18. ^ Brown, Eric (2009). „ARM netbook ships with detachable tablet”. Arhivirano iz originala 03. 01. 2013. g. Pristupljeno 12. 01. 2017. 
  19. ^ McGrath, Dylan (18. 7. 2011). „IHS: ARM ICs to be in 23% of laptops in 2015”. EE Times. Pristupljeno 20. 7. 2011. 
  20. ^ a b „ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors” (Saopštenje). ARM Holdings. Pristupljeno 31. 10. 2012. 
  21. ^ ARMv8-A Architecture Webpage; ARM Holdings.
  22. ^ „ARMv8 Architecture Technology Preview (Slides); ARM Holdings.” (PDF). Arhivirano iz originala (PDF) 10. 06. 2018. g. Pristupljeno 25. 12. 2013. 
  23. ^ ARMv8-R Architecture Webpage; ARM Holdings.
  24. ^ „ARMv8R Architecture Whitepaper; ARM Holdings.” (PDF). Arhivirano iz originala (PDF) 29. 10. 2013. g. Pristupljeno 25. 12. 2013. 
  25. ^ „Line Card” (PDF). 2003. Pristupljeno 1. 10. 2012. 
  26. ^ Parrish, Kevin (14. 7. 2011). „One Million ARM Cores Linked to Simulate Brain”. EE Times. Arhivirano iz originala 17. 07. 2011. g. Pristupljeno 2. 8. 2011. 
  27. ^ „Processor mode”. ARM Holdings. Pristupljeno 26. 3. 2013. 
  28. ^ „KVM/ARM” (PDF). Pristupljeno 3. 4. 2013. 
  29. ^ „How does the ARM Compiler support unaligned accesses?”. 2011. Pristupljeno 5. 10. 2013. 
  30. ^ „Unaligned data access”. Pristupljeno 5. 10. 2013. 
  31. ^ „ARMv7-M Architecture Reference Manual; ARM Holdings”. Silver.arm.com. Pristupljeno 19. 1. 2013. 
  32. ^ a b „ARMv7-A and ARMv7-R Architecture Reference Manual; ARM Holdings”. Silver.arm.com. Pristupljeno 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. Arhivirano iz originala 14. 04. 2009. g. Pristupljeno 18. 4. 2009. 
  37. ^ DSP & SIMD - ARM
  38. ^ ARM7TDMI Technical Reference Manual page ii
  39. ^ Jaggar 1996, str. 6–1.
  40. ^ „ARM Processor Instruction Set Architecture”. Arm.com. Arhivirano iz originala 15. 04. 2009. g. Pristupljeno 18. 4. 2009. 
  41. ^ „ARM aims son of Thumb at uCs, ASSPs, SoCs”. Linuxdevices.com. Arhivirano iz originala 09. 12. 2012. g. Pristupljeno 18. 4. 2009. 
  42. ^ „ARM Information Center”. Infocenter.arm.com. Pristupljeno 18. 4. 2009. 
  43. ^ "Arm strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory" Arhivirano na sajtu Wayback Machine (5. oktobar 2007) by Tom R. Halfhill 2005.
  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. Pristupljeno 21. 11. 2011. 
  46. ^ a b „Differences between ARM Cortex-A8 and Cortex-A9”. Shervin Emami. 26. 6. 2023. Pristupljeno 21. 11. 2011. 
  47. ^ „Cortex-A9 Processor”. Arm.com. Pristupljeno 21. 11. 2011. 
  48. ^ „About the Cortex-A9 NEON MPE”. Arm.com. Pristupljeno 21. 11. 2011. 
  49. ^ „ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM T”. News.thomasnet.com. Arhivirano iz originala 18. 09. 2018. g. Pristupljeno 18. 4. 2009. 
  50. ^ „Trustonic”. Trustonic. Pristupljeno 14. 6. 2013. 
  51. ^ „ARM, Gemalto and Giesecke & Devrient Form Joint Venture To”. ARM Holdings. 3. 4. 2012. Pristupljeno 19. 1. 2013. 
  52. ^ „ARM TrustZone and ARM Hypervisor Open Source Software”. Open Virtualization. Arhivirano iz originala 14. 06. 2013. g. Pristupljeno 14. 6. 2013. 
  53. ^ "APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]", ARM Architecture Reference Manual. Pristupljeno 2009/12/01.
  54. ^ „ARM Discloses Technical Details Of The Next Version Of The ARM Architecture” (Saopštenje). ARM Holdings. 27. 10. 2011. Pristupljeno 20. 9. 2013. 
  55. ^ Torvalds, Linus (1. 10. 2012). „Re: [GIT PULL] arm64: Linux kernel port”. Linux kernel mailing list. Arhivirano iz originala 31. 08. 2013. g. Pristupljeno 2. 10. 2012. 
  56. ^ "PikeOS Safe and Secure Virtualization". Pristupljeno 10 July 2013.

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]

Brze reference
  • Instrukcije: Thumb (1), ARM and Thumb-2 (2), Vector Floating Point (3)
  • Opkodovi: Thumb (1, 2), ARM (3, 4), GNU Assembler Directives 5.