ARM | |
---|---|
| |
Kehittäjä | ARM Limited |
Bittinen syvyys | ARMv7 64/32-bittinen, ARMv8 asti vain 64-bittinen |
Esitetty | 1985 |
Arkkitehtuuri | RISC |
Tyyppi | rekisteri-rekisteröinti |
SK koodaus |
ARMv8: kiinteä (64 bittiä), paitsi ARMv7-koodin yhteensopivuustilassa ARMv7/6: sekoitettu (32 ja 16 bittiä kohdistettu) ARMv3/2: kiinteä (32 bittiä) |
Siirtymävaiheen toteutus | ehtolippujen mukaan |
Tavujärjestys | Vaihdettava (big-endian), yleensä matalasta korkeaan (little-endian) |
Laajennukset |
NEON, Thumb-2 (pakollinen ARMv7:stä lähtien), Jazelle, VFPv4-D16, VFPv4 (kaikki pakolliset ARMv8:ssa) Mikrokontrollereissa: FPv4-SP |
Mediatiedostot Wikimedia Commonsissa |
ARM-arkkitehtuuri ( englanninkielisestä Advanced RISC Machinesta - edistynyt RISC-kone; joskus - Acorn RISC Machine ) - komentojärjestelmä ja joukko kuvauksia ja valmiita topologioita 32- ja 64- bittisistä mikroprosessori- / mikrokontrolleriytimistä ARM Limited [1] .
Valmiiden ARM-ydintopologioiden lisenssinsaajia ovat AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (27.6.2006 asti), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , QualcomTek . , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .
Merkittävät prosessoriperheet: ARM7 , ARM9 , ARM11 ja Cortex [3] [4] .
Monet lisenssinhaltijat suunnittelevat omat ydintopologiansa ARM-käskysarjan perusteella: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait ja Kryo Qualcomm Snapdragonissa , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 ja HiSilicon K3 .
Vuonna 2006 noin 98 % vuosittain myydyistä yli miljardista matkapuhelimesta oli varustettu vähintään yhdellä ARM-prosessorilla [5] . Vuodesta 2009 lähtien ARM-prosessorien osuus oli jopa 90 % kaikista sulautetuista 32-bittisistä prosessoreista [6] . ARM-prosessoreita käytetään laajalti kulutuselektroniikassa, mukaan lukien älypuhelimet, matkapuhelimet ja pelaajat, kädessä pidettävät pelikonsolit, laskimet, älykellot ja tietokoneiden oheislaitteet, kuten kiintolevyt tai reitittimet.
Näillä prosessoreilla on alhainen virrankulutus, joten niitä käytetään laajalti sulautetuissa järjestelmissä ja ne hallitsevat mobiililaitteiden markkinoita, joille tämä tekijä on kriittinen.
Saavutettuaan jonkin verran menestystä BBC Micro -tietokoneella brittiläinen yritys Acorn Computers ajatteli siirtyä suhteellisen heikoista MOS Technology 6502 -prosessoreista tehokkaampiin ratkaisuihin ja päästä yritystietokonemarkkinoille samalla BBC Micro -alustalla . Prosessorit, kuten National Semiconductorin Motorola 68000 ja 32016, eivät sovellu tähän, eikä 6502 ollut tarpeeksi tehokas tukemaan graafista käyttöliittymää [7] .
Yritys tarvitsi täysin uuden arkkitehtuurin testattuaan kaikki käytettävissään olevat prosessorit ja todennut ne tehottomiksi. Acorn oli tosissaan oman prosessorin kehittämisessä, ja heidän insinöörinsä alkoivat tutkia Kalifornian yliopistossa Berkeleyssä kehitetyn RISC-projektin dokumentaatiota . He ajattelivat, että koska ryhmä opiskelijoita onnistui luomaan täysin kilpailukykyisen prosessorin, heidän insinöörinsä ei olisi vaikeaa. Matka Western Design Centeriin (Arizona) osoitti insinööreille Steve Ferberille ja Sophie Wilsonille (tuolloin Roger [8] ), että he eivät tarvitsisi uskomattomia resursseja tämän suunnitelman toteuttamiseen.
Wilson ryhtyi kehittämään ohjesarjaa rakentamalla simulaation uudesta prosessorista BBC Micro -tietokoneeseen. Hänen menestys tässä vakuutti Acornin insinöörit siitä, että he olivat oikealla tiellä. Mutta ennen kuin he ehtivät mennä pidemmälle, he tarvitsivat lisää resursseja, joten Wilsonin oli aika mennä Acornin toimitusjohtajan Herman Hauserin luo selittämään, mitä oli tekeillä. Kun hän antoi luvan, pieni tiimi kokoontui toteuttamaan Wilson-mallia laitteistossa.
Virallinen Acorn RISC Machine -projekti alkoi lokakuussa 1983. VLSI Technology toimittajaksi, koska se oli jo toimittanut Acornille ROM -siruja ja joitain mukautettuja integroituja piirejä Kehitystä johtivat Wilson ja Ferber . Niiden päätavoitteena oli saavuttaa MOS Technology 6502:n alhaisen latenssin keskeytyskäsittely . 6502 :sta otettu muistin käyttöarkkitehtuuri mahdollisti kehittäjille hyvän suorituskyvyn ilman kallista DMA - moduulin käyttöönottoa . VLSI valmisti ensimmäisen prosessorin 26. huhtikuuta 1985 - silloin se aloitti toimintansa ja sai nimekseen ARM1. Ensimmäiset massatuotetut prosessorit, nimeltään ARM2, tulivat saataville seuraavana vuonna.
Sitä käytettiin ensimmäisen kerran toisena prosessorina BBC Microssa , jossa sitä käytettiin simulaatioohjelmiston kehittämisessä, joka täydensi tietokoneen tukisirut sekä nopeuttai ARM2:n kehittämisessä käytettyä CAD -ohjelmistoa. Wilson optimoi ARM-käskysarjan suorittamaan BBC BASIC :n . Alkuperäinen tavoite all-ARM-tietokoneesta saavutettiin vuonna 1987, kun Acorn Archimedes julkaistiin.
Ilmapiiri ARM-projektin ympärillä oli niin salaperäinen, että kun Olivetti neuvotteli Acornin enemmistöosuuden ostamisesta vuonna 1985, he eivät puhuneet projektin kehityksestä ennen kuin neuvottelut päättyivät. Vuonna 1992 Acorn voitti jälleen Queen's Award for Enterprise -palkinnon ARM:lle.
ARM2:ssa oli 32-bittinen dataväylä, 26-bittinen osoiteavaruus ja 16 32-bittistä rekisteriä. Ohjelmakoodin oli sijaittava muistin ensimmäisissä 64 megatavussa, ja ohjelmalaskuri rajoitettiin 26 bittiin, koska 32-bittisen rekisterin 4 ylintä ja 2 alinta bittiä toimivat lippuina. ARM2:sta on tullut ehkä yksinkertaisin suosituista 32-bittisistä prosessoreista maailmassa, jossa on vain 30 tuhatta transistoria (vertailun vuoksi , 6 vuotta aiemmin tehdyssä Motorola 68000 -prosessorissa oli 68 tuhatta transistoria). Suuri osa tästä yksinkertaisuudesta johtuu mikrokoodin puutteesta (joka 68000:ssa vie neljäsosan ja kolmanneksen muottialueesta) ja välimuistin puutteesta , kuten monien tuolloin suorittimien kohdalla. Tämä yksinkertaisuus johti alhaisiin energiakustannuksiin, kun taas ARM oli paljon tuottavampi kuin Intel 80286 . Sen seuraajalla, ARM3-prosessorilla, oli jo 4 kt:n välimuisti, mikä lisäsi suorituskykyä entisestään.
1980-luvun lopulla Apple Computer ja VLSI Technology aloittivat työskentelyn Acorn Computersin kanssa ARM-ytimen uusissa versioissa. Työ oli niin tärkeää, että Acorn muodosti kehitystiimin vuonna 1990 uudeksi Advanced RISC Machines -nimiseksi yritykseksi . Tästä syystä ARM:sta käytetään joskus lyhennettä Advanced RISC Machines Acorn RISC Machinen sijaan . Advanced RISC Machinesista tuli ARM, kun sen emoyhtiö ARM Holdings listattiin Lontoon pörssiin ja NASDAQ :iin vuonna 1998.
Uusi Apple-ARM-teos kehittyi lopulta ARM6:ksi, joka julkaistiin ensimmäisen kerran vuonna 1992. Apple käytti ARM6-pohjaista ARM610-prosessoria Apple Newton PDA -tuotteensa perustana . Vuonna 1994 Acorn alkoi käyttää ARM610:tä pääprosessorina RISC PC -tietokoneissaan . DEC osti myös lisenssin ARM6- arkkitehtuurille (joka aiheutti hieman hämmennystä, koska he tekivät myös Alpha -prosessoreita ) ja alkoivat tehdä StrongARM:ia. 233 MHz:n taajuudella tämä prosessori vaati vain 1 watin tehoa (myöhemmät versiot vaativat paljon vähemmän). Intel sai myöhemmin oikeudet tähän teokseen oikeudenkäynnin seurauksena. Intel käytti tilaisuutta hyväkseen täydentääkseen vanhaa I960-sarjaansa StrongARM-prosessorilla ja kehitti myöhemmin versionsa ytimestä tuotenimellä XScale , jonka he myivät myöhemmin Marvellille .
ARM-ydin pysyi samana kaikkien näiden muutosten jälkeen. ARM2:ssa oli 30 000 transistoria.
Periaatteessa perheen prosessorit ovat valloittaneet massamobiilituotteiden (matkapuhelimet, kämmenmikrot) ja sulautettujen järjestelmien segmentin keskisuurten ja korkean suorituskyvyn osalta (verkkoreitittimistä ja tukiasemista televisioihin). Jotkut yritykset ilmoittavat kehittävänsä tehokkaita palvelimia, jotka perustuvat ARM-prosessoriklustereihin [10] , mutta toistaiseksi nämä ovat vain kokeellisia projekteja 32-bittisellä arkkitehtuurilla [11] .
Listan edellinen johtaja Summit-supertietokone (OLCF-4) , jonka IBM (palvelinsolmut), Mellanox (yhdysliikenne) ja Nvidia (grafiikkakiihdyttimet) kehittivät yhdessä ja joka asennettiin Oak Ridge National Laboratoryon , nousi toiseksi ja menetti kunniakas ensimmäinen sija uudelle japanilaiselle huippujärjestelmälle Fugaku ( rus. Fugaku ), joka osoitti High Performance / Highly Parallel Linpack (HPL) -tulosta 415,5 petaflopsia. Tämä indikaattori ylittää Summitin kyvyt 2,8 kertaa. Fugakussa on Fujitsun 48-ytiminen A64FX SoC, mikä tekee siitä ensimmäisen järjestelmän TOP500-listalla, jossa on ARM-prosessorit. Yksinkertaisella tai pienemmällä tarkkuudella, jota käytetään usein koneoppimiseen ja tekoälytehtäviin, Fugaku saavuttaa huippunsa yli 1 000 petaflopissa (1 exaflop). Uusi järjestelmä on asennettu RIKEN Computational Science Centeriin (R-CCS) Kobessa, Japanissa.
Useat ARM-prosessorien perheet ovat tällä hetkellä merkittäviä:
Vuonna 2010 valmistaja julkisti Cortex-A15-prosessorit, koodinimeltään Eagle, ARM väittää, että Cortex A15 -ydin on 40 prosenttia nopeampi samalla taajuudella kuin Cortex-A9- ydin samalla määrällä ytimiä per siru [12] . Tuotteessa, joka on valmistettu 28 nm:n prosessiteknologialla, on 4 ydintä, se voi toimia jopa 2,5 GHz:n taajuudella ja sitä tukevat monet nykyaikaiset käyttöjärjestelmät [13] [14] .
Marvellin suosittu xScale -mikroprosessoriperhe (27. kesäkuuta 2007 asti - Intel [15] ) on itse asiassa ARM9 -arkkitehtuurin laajennus , jota täydentää Intelin erityisesti kehittämä Wireless MMX -käskysarja tukemaan multimediasovelluksia.
ARM-ytimen versiot (taulukko)Kernel-perhe | Arkkitehtuuriversio | Nucleus | Toiminnot | Välimuisti (I/D)/ MMU | Tyypillinen MIPS @ MHz | Käyttö |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (poistettu käytöstä) | ARM1 | Ei | ARM Evaluation System BBC Micro -prosessori | ||
ARM2 | ARMv2 (poistettu käytöstä) | ARM2 | Lisätty MUL-komento (kerroin) | Ei | 4 MIPS @ 8 MHz 0,33 DMIPS /MHz |
Acorn Archimedes , Chessmachine |
ARMv2a (poistettu käytöstä) | ARM250 | Integroitu MEMC (MMU), GPU, lisätyt SWP- ja SWPB (swap) -komennot | Ei, MEMC1a | 7 MIPS @ 12 MHz | Acorn Archimedes | |
ARM3 | ARMv2a (poistettu käytöstä) | ARM2a | Ensimmäinen käytetty välimuisti | 4 kt yhteensä | 12 MIPS @ 25 MHz 0,50 DMIPS/MHz |
Acorn Archimedes |
ARM6 | ARMv3 (poistettu käytöstä) | ARM60 | 32-bittinen (26-bittisen sijaan) muistin osoiteavaruus esiteltiin ensimmäistä kertaa | Ei | 10 MIPS @ 12 MHz | 3DO interaktiivinen moninpeli , Zarlink GPS-vastaanotin |
ARM 600 | Kuten ARM60, FPA10 liukuluku matemaattinen apuprosessori | 4 kt yhteensä | 28 MIPS @ 33 MHz | |||
ARM610 | Kuten ARM60, välimuisti, ei apuprosessoriväylää | 4 kt yhteensä | 17 MIPS @ 20 MHz 0,65 DMIPS/MHz |
Acorn Risc PC 600 , Apple Newton 100 -sarja | ||
ARM7 | ARMv3 (poistettu käytöstä) | ARM 700 | 8 kt yhteensä | 40 MHz | Acorn Risc PC Prototype CPU Card | |
ARM710 | Kuten ARM700 | 8 kt yhteensä | 40 MHz | Acorn Risc PC 700 | ||
ARM710a | Kuten ARM700 | 8 kt yhteensä | 40MHz 0,68DMIPS /MHz |
Acorn Risc PC 700 , Apple eMate 300 | ||
ARM7100 | Kuten ARM710a, integroitu SoC | 8 kt yhteensä | 18 MHz | Psion-sarja 5 | ||
ARM 7500 | Kuten ARM710a, integroitu SoC. | 4 kt yhteensä | 40 MHz | Acorn A7000 | ||
ARM7500FE | Kuten ARM7500, "FE" lisäsi FPA- ja EDO-muistiohjaimet | 4 kt yhteensä | 56 MHz 0,73 DMIPS/ MHz |
Acorn A7000+ verkkotietokone | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-vaiheinen kuljetin, peukalotila | Ei | 15 MIPS @ 16,8 MHz 63 DMIPS @ 70 MHz |
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7, Juice Box , NXP Semiconductors LPC2000 ja LH754xx , Actelin CoreMP7 |
ARM710T | Kuten ARM7TDMI, välimuisti | 8 kt jaettu, MMU | 36 MIPS @ 40 MHz | Psion Series 5mx , Psion Revo /Revo Plus/Diamond Mako | ||
ARM720T | Kuten ARM7TDMI, välimuisti | 8 kt jaettu , MMU Fast Context Switch -laajennuksella | 60 MIPS @ 59,8 MHz | Zipit Wireless Messenger , NXP Semiconductors LH7952x | ||
ARM740T | Kuten ARM7TDMI, välimuisti | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5-vaiheinen liukuhihna, peukalo, Jazelle DBX, edistyneet DSP-komennot | ei mitään | |||
Vahva käsivarsi | ARMv4 | SA-110 | 16KB/16KB MMU | 203MHz 1.0DMIPS/MHz |
Apple Newton 2x00 -sarja, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS | |
SA-1100 | Kuten SA-110, integroitu SoC | 16KB/8KB MMU | 203 MHz | Psion netbook | ||
SA-1110 | Kuten SA-110, integroitu SoC | 16KB/8KB MMU | 206 MHz | LART (tietokone) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series , Palm Zire 31 | ||
ARM8 | ARMv4 | ARM810 [16] | 5-vaiheinen liukuhihna, staattinen haaran ennuste, kaksinkertainen kaistanleveysmuisti | 8 KB yhtenäinen, MMU | 84 MIPS @ 72 MHz 1,16 DMIPS/MHz |
Acorn Risc PC Prototype CPU Card |
ARM9TDMI | ARMv4T | ARM9TDMI | 5-vaiheinen kuljetin, peukalo | ei mitään | ||
ARM920T | Kuten ARM9TDMI, välimuisti | 16 kt/16 kt, MMU ja FCSE (Fast Context Switch Extension) [17] | 200 MIPS @ 180 MHz | Armadillo , Atmel AT91SAM 9, GP32 , GP2X (ensimmäinen ydin), Tapwave Zodiac ( Motorola i. MX1), Hewlett Packard HP-49/50 -laskimet , Sun SPOT , Cirrus Logic EP9302, EP9307, Tyynen, Tyynen, H2C, Samsung 4N ( EP9307 , EP9312, EP4N) , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( TomTom -navigointilaitteet) [19] | ||
ARM922T | Kuten ARM9TDMI, välimuisti | 8KB/8KB MMU | NXP Semiconductors LH7A40x | |||
ARM940T | Kuten ARM9TDMI, välimuisti | 4 kt / 4 kt MPU | GP2X (toinen ydin), Meizu M6 Mini Player [20] [21] | |||
ARM9E | ARMv5TE | ARM946E-S | Peukalo, parannetut DSP-ohjeet, välimuistit | muuttuvat, tiiviisti kytketyt muistit, MPU | Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , Conexant 802.11 -sirut, Samsung S5L2010 | |
ARM966E-S | Peukalo, Enhanced DSP -ohjeet | ei välimuistia, TCM:t | STM STR91xF, sisältää Ethernetin [23] | |||
ARM968E-S | Kuten ARM966E-S | ei välimuistia, TCM:t | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Peukalo, Jazelle DBX, Enhanced DSP -ohjeet | muuttujat, TCM:t, MMU:t | 220 MIPS @ 200 MHz | Matkapuhelimet: Sony Ericsson (K, W-sarja); Siemens ja Benq (x65-sarja ja uudemmat); LG Arena , LG Cookie Fresh ; TI OMAP1710 ... OMAP1612 , OMAP-L137 , OMAP -L138 ; Qualcomm MSM6100…MSM6800; Freescale i.MX21 , i.MX27, Atmel AT91SAM 9, NXP Semiconductors LPC3000 , GPH Wiz, NEC C10046F5-211-PN2-A SoC — dokumentoimaton ydin ATi Hollywood -grafiikkasirussa, jota käytetään Wii:ssä ] Samsung21 käytetty Wii, in24 S3 Squeezebox Duetin ohjain. Squeezebox Radio ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telesirut TCC7801, TCC7901; ZiiLABS ZMS-05 -järjestelmä sirulla; Western Digital MyBook I World Edition | |
ARMv5TE | ARM996HS | Kelloton prosessori, kuten ARM966E-S | ei välimuistia, TCM:itä, MPU:ita | |||
ARM10E | ARMv5TE | ARM1020E | 6-vaiheinen putkisto, peukalo, parannetut DSP-ohjeet, (VFP) | 32KB/32KB MMU | ||
ARM1022E | Kuten ARM1020E | 16KB/16KB MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Peukalo, Jazelle DBX, Enhanced DSP-ohjeet, (VFP) | muuttuja, MMU tai MPU | Western Digital MyBook II World Edition; Conexant so4610 ja so4615 ADSL SoC | ||
Xscale | ARMv5TE | 80200/IOP310/IOP315 | I/O-prosessori, peukalo, parannetut DSP-ohjeet | |||
80219 | 400/600 MHz | Thecus N2100
| ||||
IOP321 | 600 Bogo Mips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 ydintä, RAID-kiihtyvyys | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Sovellusprosessori, 7-vaiheinen putki | PXA210: 133 ja 200 MHz, PXA250: 200, 300 ja 400 MHz | Zaurus SL-5600, iPAQ H3900 , Sony CLIÉ NX60, NX70V, NZ90 | |||
PXA255 | 32KB/32KB MMU | 400 Bogo Mips @ 400 MHz; 371-533 MIPS @ 400 MHz [25] | Gumstix basix & connex , Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder , iRex ILiad | |||
PXA263 | 200, 300 ja 400 MHz | Sony CLIÉ NX73V, NX80V | ||||
PXA26x | oletusarvo 400 MHz, 624 MHz asti | Palm Tungsten T3 | ||||
PXA27x | Sovellusprosessori | 32KB/32KB MMU | 800 MIPS @ 624 MHz | Gumstix verdex , "Triseps-Modules" PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50 ja x51 series, Motorola Q , Palm Greenphone ,, Trolltech Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Toshiba Portégé G500, Toshiba Portégé G500, Zio Portégé G900 , 7 Treq Pa 60 liiketoiminnan navigaattori | ||
PXA800(E)F | ||||||
PXA3XX (koodinimeltään "Monahans") | PXA31x:ssä on laitteistografiikkakiihdytin | 32KB/32KB L1, TCM, MMU | 800 MIPS @ 624 MHz | korkeanäyttö alex | ||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Ohjaustason prosessori | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S [26] | 8-vaiheinen putkisto, SIMD , peukalo, Jazelle DBX, (VFP), parannetut DSP-ohjeet | muuttuja, MMU | 740 @ 532–665 MHz (i.MX31 SoC), 400–528 MHz | TI OMAP2420 ( Nokia E90 , Nokia N93 , Nokia N95 , Nokia N82 ), Zune , BUGbase [1] , Nokia N800 , Nokia N810 , Qualcomm MSM7200 (integroidulla ARM926EJ-S-koprosessorilla@274 MHz, käytössä E , HTClofiish II , HTC Nike ), Freescale i.MX31 (käytetty alkuperäisessä Zune 30gb:ssä ja Toshiba Gigabeat S:ssä), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic0 Classic0 , Nokia 61 Qualcomm MSM7201A kuten HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 , HTC SGH ja Motorola ZN5 Classic i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28] |
ARMv6T2 | ARM1156T2(F)-S | 9-vaiheinen liukuhihna, SIMD , Thumb-2, (VFP), parannetut DSP-ohjeet | muuttuja, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Kuten ARM1136EJ(F)-S | muuttuja, MMU+TrustZone | Apple iPhone (alkuperäinen ja 3G) , Apple iPod touch (1. ja 2. sukupolvi) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telesirut TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (esim. Samsung Moment ), S3C6430 [31] | ||
ARMv6K | ARM11MPCore | Kuten ARM1136EJ(F)-S, 1-4 ydintä SMP | muuttuja, MMU | Nvidia APX 2500 | ||
Kernel-perhe | Arkkitehtuuriversio | Nucleus | Toiminnot | Välimuisti (I/D)/MMU | Tyypillinen MIPS @ MHz | Sovellukset |
Aivokuori | ARMv7-A | Cortex-A5 | VFP, NEON, Jazelle RCT ja DBX, Thumb-2, 8-vaiheinen putkisto, tilaus, 1-4 ytimen SMP | muuttuja (L1), MMU+TrustZone | jopa 1500 (1,5 DMIPS/MHz) | "Sparrow" (ARM-koodinimi) [32] [33] [34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13-vaiheinen putkisto, järjestyksessä, 2 dekooderia [35] | muuttuja (L1+L2), MMU+TrustZone | jopa 2000 (2,0 DMIPS/MHz nopeudella 600 MHz - yli 1 GHz) | TI OMAP3xxx -sarja , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3. sukupolvi) , Apple iPad ( Apple A4 - prosessori), Apple iPhone 4 ( Apple A4- prosessori), Archos 5 , Archos 101 , FreeScale i.MX51- SOC , BeagleBoard , Motorola Droid , Motorola Droid X , Palm Pre , Samsung Omnia HD , Samsung Wave S8500 , Nexus S , Sony Ericsson Satio , Touch Book , Nokia N900 , Meizu M9 , Zii0LABS system sirulla, Boxchip A13 | ||
Cortex-A9 | Sovellusprofiili, (VFP), (NEON), Jazelle RCT ja DBX, Thumb-2, Out-of-order spekulatiivisen ongelman superskalaari (2 dekooderia); 9-12 [35] putkilinjan vaiheita | MMU+TrustZone | 2,5DMIPS/MHz | Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Kuten Cortex-A9, 1-4 ytimen SMP | MMU+TrustZone | 10 000 DMIPS @ 2 GHz suorituskykyoptimoidussa TSMC 40G:ssä (neliydin?) (2,5 DMIPS/MHz ydintä kohti) | PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 ydintä SMP; Epäkunnossa superskalaari (3 dekooderia); 15+ kuljetinvaihetta [35] ; VFPv4, NEON [36] | MMU, LPAE | 3,5DMIPS/MHz/ydin; 1,0 GHz - 2,5 GHz (@ 28 nm [35] ) | |||
Cortex-A7 MPCore [37] | FPU, NEON; Tilauksessa (1 dekooderi); 8-vaiheinen kuljetin. | MMU, LPAE | 1,9 DMIPS/MHz/CPU; 0,8-1,5 GHz (@28nm) | (Broadcom, Freescale, HiSilicon, LG, Samsung, STEricsson, Texas Instruments, MediaTek) | ||
ARMv7-R | Cortex-R4(F) | Upotettu profiili, peukalo-2, (FPU) | muuttuva välimuisti, valinnainen MPU | 600 DMIPS @ 475 MHz | Broadcom on käyttäjä, TI TMS570 | |
ARMv7-ME | Cortex-M4 (koodinimi "Merlin") [38] | Mikrokontrolleriprofiili, sekä Thumb että Thumb-2, FPU. Laitteiston MAC-, SIMD- ja jako-ohjeet | MPU valinnainen | 1.25DMIPS/MHz | NXP Semiconductors , STM32 , TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Mikrokontrolleriprofiili, vain Thumb-2. laitteistonjaon ohje | ei välimuistia, valinnainen MPU | 125 DMIPS @ 100 MHz | TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Emberin EM3xx Series , Atmel AT91SAM 3 , Europe Technologies EasyBCU , Energy Micron EFM32 , Actelin SmartFusion 1 9 , 8BEdre 1 9 Milano92 | |
ARMv6-M | Cortex-M0 (koodinimi "Swift") [39] | Mikro-ohjainprofiili, Thumb-2-alijoukko (16-bittiset peukalon ohjeet & BL, MRS, MSR, ISB, DSB ja DMB) | Ei välimuistia | 0,9DMIPS/MHz | NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3] | |
Cortex-M1 | FPGA-kohdistus, mikro-ohjainprofiili, Thumb-2-alijoukko (16-bittiset peukaloohjeet & BL, MRS, MSR, ISB, DSB ja DMB) | Ei mitään, tiiviisti kytketty muisti valinnainen | Jopa 136 DMIPS @ 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz saavutettavissa oleva FPGA-riippuvainen) | Actel ProASIC3, ProASIC3L, IGLOO ja Fusion PSC -laitteet , Altera Cyclone III , muut FPGA-tuotteet ovat myös tuettuja, esim. Synplicity | ||
Kernel-perhe | Arkkitehtuuriversio | Nucleus | Toiminnot | Välimuisti (I/D)/ MMU | Tyypillinen MIPS @ MHz | Sovellukset |
ARM-arkkitehtuurin viiteopas on ollut pitkään käytössä, ja siinä on rajattu kaikki ARM:n tukemat rajapinnat, koska kunkin prosessorityypin toteutustiedot voivat vaihdella. Arkkitehtuuri on kehittynyt ajan myötä, ja ARMv7:n jälkeen on määritelty 3 profiilia:
Profiilit voivat tukea vähemmän komentoja (tietyn tyyppisiä komentoja).
Prosessori voi olla jossakin seuraavista toimintatiloista:
Prosessoritilan vaihto tapahtuu, kun tapahtuu sopiva poikkeus tai muuttamalla tilarekisteriä.
Jotta laite pysyisi puhtaana, yksinkertaisena ja nopeana, alkuperäinen ARM-valmistus tehtiin ilman mikrokoodia , kuten yksinkertaisempi 8-bittinen 6502-prosessori, jota käytettiin aiemmissa Acorn Computersin mikrotietokoneissa .
ARM-käskysarjaTila, jossa 32-bittinen käskyjoukko suoritetaan.
ARM-perusohjesarja: [49]
ADC, ADD, JA, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST
PeukalokomentosarjaKooditiheyden parantamiseksi ARM7TDMI:stä alkavat prosessorit on varustettu "peukalo"-moodilla. Tässä tilassa prosessori suorittaa vaihtoehtoisen joukon 16-bittisiä käskyjä. Suurin osa näistä 16-bittisistä käskyistä on käännetty normaaleiksi ARM-käskyiksi. Käskyn pituuden lyhentäminen saavutetaan piilottamalla jotkin operandit ja rajoittamalla osoitettavuutta täyden ARM-käskysarjan tilaan verrattuna.
Peukalotilassa pienemmillä opkoodeilla on vähemmän toimintoja. Esimerkiksi vain haarat voivat olla ehdollisia, ja monet operaatiokoodit rajoittuvat käyttämään vain puolta pääprosessorin rekistereistä. Lyhyemmät opkoodit johtavat yleensä suurempaan kooditiheyteen, vaikka jotkin operaatiokoodit vaativat lisäohjeita. Tilanteissa, joissa muistiportin tai väylän leveys on rajoitettu 16 bittiin, lyhyemmät peukalotilan opkoodit ovat paljon nopeampia kuin tavalliset 32-bittiset ARM-operaatiokoodit, koska prosessoriin on ladattava vähemmän koodia rajoitetulla muistin kaistanleveydellä.
Laitteistossa, kuten Game Boy Advancessa, on tyypillisesti käytettävissä pieni määrä RAM-muistia täydellä 32-bittisellä datakanavalla. Mutta useimmat toiminnot suoritetaan 16-bittisen tai kapeamman tietokanavan kautta. Tässä tapauksessa on järkevää käyttää peukalokoodia ja manuaalisesti optimoida joitain raskaan koodin osia vaihtamalla täydellisiin 32-bittisiin ARM-ohjeisiin.
Ensimmäinen prosessori, jossa oli peukalokomentodekooderi, oli ARM7TDMI. Kaikissa ARM9 -perheen prosessoreissa , samoin kuin XScalessa , oli sisäänrakennettu peukalokomentodekooderi.
Peukalo-2 käskysarjaThumb-2 on teknologia, joka esiteltiin ARM1156-ytimessä, joka julkistettiin vuonna 2003. Se laajentaa rajoitettua 16-bittistä Thumb-käskysarjaa 32-bittisillä lisäohjeilla antaakseen käskyjoukolle lisää leveyttä. Thumb-2:n tavoitteena on saavuttaa peukalomainen kooditiheys ja 32-bittisen ARM-käskyjoukon suorituskyky. Voimme sanoa, että ARMv7:ssä tämä tavoite saavutettiin.
Thumb-2 laajentaa sekä ARM- että Thumb-käskyt entistä enemmän käskyillä, mukaan lukien bittikentän käsittely, taulukon haarautuminen ja ehdollinen suoritus. Uusi "Unified Assembly Language" (UAL) tukee sekä ARM- että Thumb-komentojen rakentamista samasta lähdekoodista. Thumbin ARMv7-versiot näyttävät ARM-koodilta. Tämä vaatii varovaisuutta ja uuden if-then-komennon käyttöä, joka tukee jopa neljän peräkkäisen testitilakomennon suorittamista. Sitä ei huomioida käännettäessä ARM-koodiksi, mutta se luo komentoja käännettäessä ARM-koodiksi. Esimerkiksi:
; if (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: ei koodia ... Peukalo: IT-ohje ; silloin r0 = r2; MOVEQ r0 , r2 ; ARM: ehdollinen; Peukalo: ehto kautta ITE 'T' (siis) ; muuten r0 = r3; MOVNE r0 , r3 ; ARM: ehdollinen; Peukalo: kunto ITE 'E:n' kautta (muu) ; muista, että Thumb MOV -käskyssä ei ole bittejä "EQ" tai "NE" koodaamiseksiKaikki ARMv7-suulakkeet tukevat Thumb-2-käskysarjaa, kun taas jotkut meistä, kuten Cortex-m3, tukevat vain Thumb-2:ta. Loput Cortex- ja ARM11-suuttimet tukevat sekä Thumb-2- että ARM-käskysarjoja.
Jazelle-komentosarjaJazelle on tekniikka, jonka avulla Java-tavukoodi voidaan suorittaa suoraan ARM-arkkitehtuurissa 3. suoritustilana (ja käskysarjana) tavallisten ARM-käskyjen ja peukalotilan kanssa. Jazelle-teknologian tuki ilmaistaan prosessorin nimessä kirjaimella "J" - esimerkiksi ARMv5TEJ. Tätä tekniikkaa on tuettu ARMv6-arkkitehtuurista lähtien, vaikka uudemmat ytimet sisältävät vain rajoitetusti toteutuksia, jotka eivät tue laitteistokiihdytystä.
ARMv8 ja ARM 64-bittinen käskyjoukkoVuoden 2011 lopussa julkaistiin uusi versio arkkitehtuurista, ARMv8. Se esitteli AArch64-arkkitehtuurin määritelmän, jossa 64-bittinen A64-käskysarja suoritetaan. Tukea 32-bittisille komentoille kutsutaan nimellä A32, ja se suoritetaan AArch32-arkkitehtuureissa. Peukalokäskyjä tuetaan T32-tilassa vain käytettäessä 32-bittisiä arkkitehtuureja. On sallittua ajaa 32-bittisiä sovelluksia 64-bittisessä käyttöjärjestelmässä ja käyttää virtualisoitua 32-bittistä käyttöjärjestelmää 64-bittisen hypervisorin avulla [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM ja muut ovat ilmoittaneet suunnitelmistaan käyttää ARMv8:aa. ARM esitteli ARMv8:aa tukevat Cortex-A53- ja Cortex-A57-ytimet 30. lokakuuta 2012 [51] .
Sekä AArch32 että AArch64 tukevat VFPv3:a, VFPv4:ää ja edistynyttä SIMD :tä (NEON). Lisätty myös salausohjeet työskentelyyn AES :n , SHA-1 :n ja SHA-256:n kanssa .
AArch64:n ominaisuudet:
ARM-arkkitehtuurissa on seuraavat RISC-ominaisuudet:
Yksinkertaisen suunnittelun kompensoimiseksi on käytetty joitain suunnitteluominaisuuksia verrattuna nykyaikaisiin prosessoreihin, kuten Intel 80286 tai Motorola 68020:
Yksi merkittävistä eroista ARM-arkkitehtuurin (alkuperäisen arkkitehtuurin) ja muiden CPU-arkkitehtuurien välillä on ns. predikaatio - kyky ehdollisesti suorittaa käskyjä. "Ehdollisella suorituksella" tässä tarkoitamme, että käsky suoritetaan tai ohitetaan prosessorin tilalippujen nykyisestä tilasta riippuen. Peukalo ja käsi 64:ssä predikaatiota ei käytetä - ensimmäisessä tilassa sille ei ole tilaa komennossa (vain 16 bittiä), ja toisessa - predikaatio on merkityksetön ja vaikea toteuttaa superskalaariarkkitehtuureissa .
Muissa arkkitehtuureissa tämä ominaisuus on yleensä vain ehdollisilla hyppykäskyillä, mutta ARM-arkkitehtuuri on suunniteltu suorittamaan ehdollisesti melkein kaikki käskyt. Tämä saavutettiin lisäämällä heidän käskykoodeihinsa erityinen 4-bittinen kenttä ( predikaatti ). Yksi sen arvoista on varattu sille, että käsky on suoritettava ehdoitta, ja loput koodaavat yhden tai toisen ehtojen yhdistelmän (liput). Toisaalta, ottaen huomioon käskyn rajallinen kokonaispituus, tämä vähensi muistin pääsykomentojen siirtymien koodaamiseen käytettävissä olevien bittien määrää, mutta toisaalta se mahdollisti haaroituskäskyjen poistamisen luotaessa koodia pienille jos-lohkot.
Esimerkkinä yleisesti käytetty esimerkki on Euklidin vähennyslaskupohjainen algoritmi . C-kielellä se näyttää tältä:
while ( i != j ) { if ( i > j ) { i - = j ; } muu { j = i ; } }Ja ARM-asentajassa - näin:
silmukka CMP Ri , Rj ; aseta ehto "NE" jos (i != j), ; "GT", jos (i > j), ; tai "LT" , jos (i < j) SUBGTRi , Ri , Rj ; jos "GT" (suurempi kuin), i = ij; SUBLT Rj , Rj , Ri ; jos "LT" (pienempi kuin), j = ji; BNEloop ; _ jos "NE" (ei yhtä suuri), niin silmukkaKoodista voidaan nähdä, että predikaatiolla pystyttiin täysin välttämään haarautuminen else- ja then-lauseissa. Huomaa, että jos Ri ja Rj ovat yhtä suuret, mitään SUB-käskyistä ei suoriteta, mikä poistaa kokonaan tarpeen haaralle, joka toteuttaa aikatarkistuksen jokaisessa silmukan alussa, mikä voitaisiin toteuttaa esimerkiksi käyttämällä SUBLE ( pienempi tai yhtä suuri kuin) -ohje .
Yksi tapa, jolla Thumb-koodi saavuttaa suurempia tilansäästöjä, on juuri poistamalla 4-bittinen predikaatti kaikista käskyistä paitsi haaroista.
Toinen käskyjoukon ominaisuus on kyky yhdistää siirtoja ja rotaatioita "tiedonkäsittely"-käskyssä (aritmeettinen, looginen, rekisteri-rekisteriliike) siten, että esimerkiksi lauseke C:
a += ( j << 2 );voidaan muuntaa yhden sanan ja yhden syklin käskyksi ARM:ssa:
ADD Ra , Ra , Rj , LSL #2Tämä aiheuttaa sen, että tyypilliset ARM-ohjelmat ovat tavallista tiheämpiä ja vähemmän muistia. Siten putkistoa käytetään paljon tehokkaammin. Vaikka ARM toimii nopeuksilla, joita monet pitävät hitaita, se kilpailee melko helposti monien kehittyneempien CPU-arkkitehtuurien kanssa.
ARM-prosessorissa on myös joitain ominaisuuksia, joita harvoin löytyy muista RISC-arkkitehtuureista, kuten osoitus suhteessa ohjelmalaskuriin (itse asiassa ARM-ohjelmalaskuri on yksi 16:sta rekisteristä), sekä pre- ja post-inkrement-osoitustilat.
Toinen huomionarvoinen ominaisuus on, että joissakin varhaisissa ARM-prosessoreissa (ennen ARM7TDMI:tä), esimerkiksi, ei ole ohjeita 2-tavuisten numeroiden tallentamiseen. Siten tarkalleen ottaen niiden on mahdotonta luoda tehokasta koodia, joka käyttäytyy odotetulla tavalla "volatile int16_t" -tyyppisistä C-objekteista.
ARM7:ssä ja aikaisemmissa on kolmivaiheinen putkisto. Nämä ovat siirron, dekoodauksen ja suoritusvaiheet. Suorituskykyisemmissä arkkitehtuureissa, kuten ARM9:ssä , on monimutkaisempia putkistoja. Cortex-a8:ssa on 13-vaiheinen putkisto.
Arkkitehtuuri tarjoaa tavan laajentaa käskyjoukkoa käyttämällä apuprosessoreja, jotka voidaan käsitellä käyttämällä MCR, MRC, MRRC, MCRR ja vastaavia ohjeita. Apuprosessoritila on jaettu loogisesti 16 apuprosessoriin, jotka on numeroitu 0 - 15, joista 15. on varattu joillekin tyypillisille hallintatoiminnoille, kuten välimuistin hallinta ja muistinhallintayksikön toiminto (prosessoreissa, joissa niitä on).
ARM-pohjaisissa koneissa oheislaitteet liitetään tyypillisesti prosessoriin kartoittamalla niiden fyysiset rekisterit ARM-muistiin tai apuprosessorin muistiin tai liittämällä ne väyliin, jotka puolestaan ovat yhteydessä prosessoriin. Apuprosessoreihin pääsyllä on pidempi latenssi, joten jotkin oheislaitteet on suunniteltu käytettäviksi molempiin suuntiin. Muissa tapauksissa sirujen kehittäjät käyttävät vain apuprosessorin integrointimekanismia. Esimerkiksi kuvankäsittelykoneen tulisi koostua pienestä ARM7TDMI-ytimestä yhdistettynä apuprosessoriin, joka tukee alkeellisia toimintoja HDTV-koodausten käsittelyssä.
Enhanced SIMD (NEON)Edistyneen SIMD:n laajennus, jota kutsutaan myös NEON-teknologiaksi, on yhdistetty 64-bittinen ja 128-bittinen SIMD -käskysarja, joka tarjoaa standardoidun kiihdytyksen media- ja signaalinkäsittelysovelluksiin. NEON pystyy purkamaan mp3 -ääniformaatin 10 MHz:n prosessoritaajuudella ja voi toimia GSM AMR (adaptive multi-rate) -puhekoodekin kanssa maksimitaajuudella 13 MHz. Siinä on vaikuttava joukko ohjeita, erilliset rekisteritiedostot ja itsenäinen suoritusjärjestelmä laitteistotasolla. NEON tukee 8-, 16-, 32-, 64-bittistä kokonaislukua, yhden tarkkuuden ja liukulukuinformaatiota ja toimii SIMD-operaatioissa äänen ja videon käsittelyssä (grafiikka ja pelit). NEON SIMD tukee jopa 16 toimintoa kerrallaan.
Yksi parannetun SIMD:n haitoista (tai esimerkiksi ominaisuuksista) on se, että apuprosessori suorittaa parannetun SIMD:n käskyt melko merkittävällä viiveellä suhteessa pääprosessorikoodiin, viive saavuttaa kaksi tusinaa jaksoa tai enemmän (riippuen arkkitehtuuri ja erityisolosuhteet). Tästä syystä, kun pääprosessori yrittää käyttää apuprosessorin laskennan tuloksia, suoritus jäädytetään huomattavaksi ajaksi.
VFPVFP (Vector Floating Point) -tekniikka on ARM-arkkitehtuurin apuprosessorin laajennus. Se suorittaa edullisia laskelmia yhden/kaksinkertaisen tarkkuuden liukulukuluvuille, jotka ovat täysin yhteensopivia ANSI/IEEE Std 754-1985 -standardin kanssa binaarisen liukulukuaritmeettisena . VFP suorittaa liukulukulaskelmia, jotka soveltuvat monenlaisiin sovelluksiin, kuten PDA-laitteisiin, älypuhelimiin, äänen pakkaamiseen, 3D-grafiikkaan ja digitaaliseen ääneen sekä tulostimiin ja digisovittimiin. VFP-arkkitehtuuri tukee myös lyhyiden vektorikäskyjen suorittamista. Mutta koska prosessori suorittaa toimintoja peräkkäin jokaiselle vektorin elementille, VFP:tä ei voida kutsua todelliseksi SIMD-käskyjoukoksi. Tämä tila voi olla hyödyllinen grafiikka- ja signaalinkäsittelysovelluksissa, koska se pienentää koodin kokoa ja käskyjen tuottamista.
Muita ARM-prosessoreista löytyviä liukuluku- ja/tai SIMD-apuprosessoreja ovat FPA , FPE , iwMMXt . Ne tarjoavat samat toiminnot kuin VFP, mutta eivät ole yhteensopivia sen kanssa opcode -tasolla .
Suojauslaajennuksia, joita markkinoidaan nimellä TrustZone Technology, löytyy ARMv6KZ:sta ja muista uudemmista sovellusprofiloiduista arkkitehtuureista. Se tarjoaa edullisen vaihtoehdon erillisen suojausmoottorin lisäämiselle tarjoamalla 2 vCPU:ta, joita tukee laitteiston kulunvalvonta. Tämä mahdollistaa sovelluksen ytimen siirtymisen kahden "maailmoiksi" kutsutun tilan välillä (jotta vältetään sekaannukset mahdollisten verkkotunnusten kanssa), jotta tietoa ei vuotaisi tärkeämmästä maailmasta vähemmän tärkeään. Tämä maailmankytkin on yleensä ortogonaalinen kaikkiin muihin prosessorin ominaisuuksiin nähden. Siten jokainen maailma voi toimia itsenäisesti muista maailmoista samaa ydintä käyttäen. Muisti ja oheislaitteet on tehty sopimaan ytimen maailmaan, ja ne voivat käyttää tätä pääsyn hallintaan ytimen salaisuuksiin ja koodeihin. Tyypillisten TrustZone Technology -sovellusten tulisi käyttää täyttä käyttöjärjestelmää vähemmän tärkeässä maailmassa ja kompaktia, tietoturvakohtaista koodia tärkeämmässä maailmassa, mikä mahdollistaa digitaalisten oikeuksien hallinnan paljon enemmän mediankäytön hallinnan ARM-pohjaisissa laitteissa ja estää luvattoman pääsyn laite..
Käytännössä, koska TrustZonen käyttöönoton yksityiskohdat jäävät yrityksen omaisuudeksi eikä niitä julkisteta, jää epäselväksi, mikä turvallisuustaso tälle uhkamallille taataan.
Kaikissa nykyaikaisissa ARM-prosessoreissa on virheenkorjauslaitteisto, koska ilman niitä ohjelmistovirheenkorjaajat eivät pystyisi suorittamaan perustoimintoja, kuten pysäyttämistä, sisennystä ja keskeytyspisteiden asettelua uudelleenkäynnistyksen jälkeen.
ARMv7-arkkitehtuuri määrittelee perusvirheenkorjausominaisuudet arkkitehtuuritasolla. Näitä ovat keskeytyskohdat, tarkkailupisteet ja komennot virheenkorjaustilassa. Tällaisia työkaluja oli saatavana myös EmbeddedICE-virheenkorjausmoduulin kanssa. Molempia tiloja tuetaan - pysäytä ja tarkista. Varsinaista siirtomekanismia, jota käytetään virheenkorjaustyökalujen käyttöön, ei ole määritelty arkkitehtonisesti, mutta toteutus sisältää tyypillisesti JTAG -tuen .
On erillinen "ytimen näkymä" virheenkorjausarkkitehtuuri, jota ARMv7-prosessorit eivät vaadi arkkitehtonisesti.
ARM tarjoaa 31 32-bittistä yleiskäyttöistä rekisteriä . Prosessorin tilasta ja tilasta riippuen käyttäjällä on pääsy vain tiukasti määriteltyyn joukkoon rekistereitä. ARM-tilassa 17 rekisteriä on jatkuvasti kehittäjän käytettävissä:
SPSR (Saved Program Status Register) on myös käytettävissä kaikissa tiloissa paitsi käyttäjätilassa ja järjestelmätilassa. Poikkeuksen tapahtuessa CPSR-rekisteri tallennetaan SPSR:ään. Siten prosessorin tila (tila, tila; aritmeettisten operaatioiden liput, loogiset operaatiot, keskeytyksen salliminen) on kiinteä juuri ennen keskeytystä [52] .
usr | sys | svc | n | 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 |
Rekisteröi aliakset:
reg. | funkt. | args | vars | GCC | Kommentti |
---|---|---|---|---|---|
R0 | a1 | aN - funktion argumentti | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - rekisterimuuttuja | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Staattinen perusrekisteri | ||
R10 | v7 | SL | SL-? | ||
R11 | v8 | FP | FP - Pinokehyksen osoite ? | ||
R12 | IP | IP - Proseduurin sisäinen puhelujen tyhjäkäyntirekisteri | |||
R13 | SP | pinoosoitin | |||
R14 | LR | Linkkirekisteri | |||
R15 | PC | Ohjelman laskuri |
ARM-arkkitehtuuri käyttää yhtä osoiteavaruutta [53] . Käytännössä tämä malli tarkoittaa, että osoite voi osoittaa muistiin ( RAM tai ROM ) tai I/O-portteihin, toisin kuin mallissa, jossa I/O-porteilla on oma osoiteavaruutensa.
Suurin osa olemassa olevista ARM-arkkitehtuuria käyttävistä tuotteista ovat täydellisiä järjestelmiä sirulla, jotka pystyvät toimimaan ulkoisen dynaamisen käyttömuistin ( DRAM ) kanssa ja sisältävät ohjaimia monille oheisväylille, erityisesti USB :lle , IIC :lle (I2C), äänilaitteille, ohjaimet SD- ja MMC -standardien flash-median , näyttöohjaimet ja digitaalikameroiden (MIPI) kanssa työskentelemiseen.
Kaikissa prosessoreissa on yleiskäyttöiset GPIO-linjat (General Input/Output). Kuluttajalaitteissa niihin voidaan liittää “pikakäynnistys” ja äänenvoimakkuuden säätöpainikkeet, merkki-LEDit, näppäimistö jne.
Kun ARM-prosessoriin perustuva järjestelmä on kytketty päälle, käynnistyslatain ja sen aloituspisteen osoite ladataan ROM-muistista. Käynnistyslatain alustaa järjestelmän ja täyttää siten saman roolin, jonka BIOS suorittaa x86-järjestelmissä, minkä jälkeen se voi ladata joko järjestelmän latausohjelman tai käyttöjärjestelmän suoraan.
Käynnistyslataimelle ei ole olemassa yhtä standardia. U-Boot- käynnistyslatainta voidaan käyttää , ja UEFI:ää käytetään usein 64-bittisessä ARMv8:ssa. Monet sovellukset käyttävät omia latauslaitteitaan.
ARM-arkkitehtuuria tukevat monet käyttöjärjestelmät. Eniten käytetty: Linux (mukaan lukien Android ), iOS , Windows Phone .
Erilaiset Unix- ja Unix-tyyppiset käyttöjärjestelmät voivat toimia järjestelmissä, joissa on ARM-prosessori: Linux (useita jakeluita), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008–2009 [54 ) ] ), Firefox OS , macOS Big Sur .
Alusta julkaisee myös erillisiä Windows-perheen versioita : Windows CE , Windows Phone , Windows RT , Windows 10 .
Lisäksi ARM:ää tukevat: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .
Mikro-ohjaimet | ||||||||
---|---|---|---|---|---|---|---|---|
Arkkitehtuuri |
| |||||||
Valmistajat |
| |||||||
Komponentit | ||||||||
Periferia | ||||||||
Liitännät | ||||||||
OS | ||||||||
Ohjelmointi |
|
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |
RISC - teknologioihin perustuvat prosessoriarkkitehtuurit | |
---|---|