ARM (arkkitehtuuri)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 10. helmikuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 77 muokkausta .
ARM

A.R.M. logo
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 .

Suosio

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.

Historia

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.

Acorn RISC Machine: ARM2

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.

Apple, DEC, Intel: ARM6, StrongARM, XScale

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.

ARM-teknologian vaikutus markkinoihin

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.

ARM-prosessorit

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
  • Intel 80219 -prosessori sisältää nopean 32-bittisen XScale -ytimen 400 tai 600 MHz taajuudella 64-bittisellä PCI-X-liitännällä
  • PCI/ PCI-X-väylä mahdollistaa Gigabit Ethernet -ohjaimien liittämisen
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

[48]

Kernel-perhe Arkkitehtuuriversio Nucleus Toiminnot Välimuisti (I/D)/ MMU Tyypillinen MIPS @ MHz Sovellukset

Arkkitehtuuri

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).

Modes

Prosessori voi olla jossakin seuraavista toimintatiloista:

Prosessoritilan vaihto tapahtuu, kun tapahtuu sopiva poikkeus tai muuttamalla tilarekisteriä.

Komentosarja

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äskysarja

Tila, 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

Peukalokomentosarja

Kooditiheyden 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äskysarja

Thumb-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" koodaamiseksi

Kaikki 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-komentosarja

Jazelle  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äskyjoukko

Vuoden 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:

  • Uusi A64 ohjesarja
  • 31 yleiskäyttöistä rekisteriä, jokainen 64 bittiä pitkä
  • Erilliset SP- ja PC-rekisterit
  • Ohjeet ovat kooltaan 32 bittiä ja monet ovat samoja kuin A32-käskyt
  • Useimmat ohjeet toimivat sekä 32- että 64-bittisten argumenttien kanssa
  • Osoitteet ovat kooltaan 64 bittiä
  • Edistynyt SIMD (NEON) parannettu
  • Lisäsi NEONin, VFPv4:n, AES:n salausohjeiden ja SHA:n kautta saatavilla olevien 128-bittisten rekisterien määrää 16:sta 32:een
  • Tukee laskelmia kaksinkertaisella tarkkuudella liukulukuluvuilla (64-bittinen tupla)
  • Täysi IEEE 754 -yhteensopivuus
  • Uusi poissulkemisjärjestelmä
  • Virtuaaliosoitteen käännös 48-bittisestä muodosta toimii olemassa olevien LPAE-mekanismeja käyttäen

RISC-funktiot

ARM-arkkitehtuurissa on seuraavat RISC-ominaisuudet:

  • Load/Storage-arkkitehtuuri
  • Ei tukea epälineaariselle (ei-sanatasaiselle) muistinkäytölle (tuettu nyt ARMv6-prosessoreissa, joitain poikkeuksia lukuun ottamatta ja täysin ARMv7)
  • Yhtenäinen 16x32-bittinen rekisteritiedosto
  • Kiinteä käskypituus (32 bittiä) yksinkertaistaa dekoodausta vähentämällä kooditiheyttä. Myöhemmin peukalotila lisäsi koodin tiheyttä.
  • Yhden syklin suoritus

Yksinkertaisen suunnittelun kompensoimiseksi on käytetty joitain suunnitteluominaisuuksia verrattuna nykyaikaisiin prosessoreihin, kuten Intel 80286 tai Motorola 68020:

  • Aritmeettiset ohjeet korvaavat ehdolliset koodit vain tarvittaessa
  • 32-bittinen monen rekisterin syklinen vaihtaja, jota voidaan käyttää suorituskyvyn heikkenemättä useimmissa aritmeettisissa käskyissä ja osoitelaskelmissa.
  • Tehokkaat indeksoidut osoitetilat
  • Viiterekisteri lehtitoimintojen nopeaan kutsumiseen
  • Yksinkertainen mutta nopea, kahdella keskeytysalijärjestelmän prioriteettitasolla ja käytössä olevat rekisteripankit.

Ehdollinen suoritus

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 silmukka

Koodista 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.

Muut ominaisuudet

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 #2

Tä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.

Putkilinja ja muut toteutusnäkökohdat

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.

Apuprosessorit

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.

VFP

VFP (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 .

Suojauslaajennukset

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.

Virheenkorjaus

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.

Rekisterit

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ä:

  • 13 yleiskäyttöistä rekisteriä (r0..r12).
  • Pinoosoitin (r13) - sisältää suoritettavan ohjelman pinoosoittimen.
  • Linkkirekisteri (r14) - sisältää palautusosoitteen haaraohjeissa.
  • Ohjelmalaskuri (r15) - bitit [31:1] sisältävät suoritettavan käskyn osoitteen.
  • Current Program Status Register (CPSR) - sisältää liput, jotka kuvaavat prosessorin nykyistä tilaa. Sitä muutetaan suoritettaessa monia käskyjä: loogisia, aritmeettisia jne.

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

Työskentely muistin kanssa

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.

Tuetut I/O-järjestelmät

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.

Käyttöjärjestelmän käynnistysprosessi ARM-koneissa

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-tukijärjestelmä

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 .

Katso myös

  • OpenRISC  - 2000 arkkitehtuuri, jossa on or1k GPL-toteutus
  • LEON  - vuonna 1997 ilmestyneen SPARC V8 -arkkitehtuurin ilmaiset toteutukset (GPL, LGPL)
  • OpenSPARC  on ilmainen (GPL) SPARC V9 -arkkitehtuurin toteutus vuodelta 2005
  • OpenPOWER  - IBM Power -arkkitehtuuri , jonka perustivat vuonna 2013 IBM, Google, Mellanox, NVIDIA
  • RISC-V  on vuonna 2010 luotu ilmainen ja avoin arkkitehtuuri ja ohjesarja mikroprosessoreille ja mikro-ohjaimille
  • MIPS  - Ohjesarjat ja MIPS-arkkitehtuuri

Muistiinpanot

  1. ARM Limited kehittää yksinomaan ytimiä ja niille tarkoitettuja työkaluja ( kääntäjät , virheenkorjaustyökalut jne.) ja ansaitsee rahaa arkkitehtuurin lisensoimisesta kolmansien osapuolien valmistajille.
  2. Järjestelmä sirulla 1892VM14Ya . multicore.ru Haettu 28. joulukuuta 2018. Arkistoitu alkuperäisestä 29. joulukuuta 2018.
  3. 1 2 D. Kozlov-Kononov. Cortex-perheen prosessoriytimet. Korkean suorituskyvyn ja alhaisen virrankulutuksen yhdistelmä Arkistoitu 24. marraskuuta 2013 osoitteessa Wayback Machine , Electronics Magazine, no. #8/2010
  4. ARM Cortex-M3 -mikro-ohjainten johdanto-opas . Haettu 29. syyskuuta 2013. Arkistoitu alkuperäisestä 27. syyskuuta 2013.
  5. "ARMed for the olohuone" Arkistoitu 9. marraskuuta 2012 Wayback Machinessa .
  6. "Haastattelu Steve Furberin kanssa" Arkistoitu 27. heinäkuuta 2011 Wayback Machinessa // Communications of the ACM, toukokuu 2011, Vol. 54 nro. 5, sivut 34-39, doi: 10.1145/1941487.1941501
  7. Manners, David . ARM's way , Electronics Weekly  (29. huhtikuuta 1998). Arkistoitu alkuperäisestä 29. heinäkuuta 2012. Haettu 26. lokakuuta 2012.
  8. Sophie Wilson-CHM . Haettu 4. huhtikuuta 2019. Arkistoitu alkuperäisestä 4. huhtikuuta 2019.
  9. Apache-testit Calxedan 5 watin verkkopalvelimelle – ARM-palvelimet nyt! (linkki ei saatavilla) . Haettu 26. marraskuuta 2012. Arkistoitu alkuperäisestä 30. lokakuuta 2012. 
  10. Pilvistä ja ARM mahdollisuus. Mitä mikropalvelinmarkkinat merkitsevät puolijohdetoimittajille Arkistoitu 2. joulukuuta 2012 Wayback Machinessa // Oppenheimer & Co. Inc., 30. maaliskuuta 2012
  11. Ainutlaatuinen: ARM Cortex-A15 "40 prosenttia" nopeampi kuin Cortex-A9 . Haettu 5. lokakuuta 2013. Arkistoitu alkuperäisestä 21. heinäkuuta 2011.
  12. Cortex-A15  prosessori . ARM. — ARM CortexA15 MPCore -perheen prosessorien esittely valmistajan verkkosivuilla. Haettu 20. huhtikuuta 2012. Arkistoitu alkuperäisestä 30. toukokuuta 2012.
  13. ARM Cortex-A15 - Prosessori jopa 2,5 GHz, ei vain älypuhelimille . Ferra.ru (10. syyskuuta 2010). Haettu 20. huhtikuuta 2012. Arkistoitu alkuperäisestä 26. huhtikuuta 2012.
  14. Intel Newsroom | Suosituimmat otsikot, tuoreet uutiset ja ajankohtaiset tapahtumat Inteliltä (linkki ei saatavilla) . Haettu 4. lokakuuta 2013. Arkistoitu alkuperäisestä 6. maaliskuuta 2009. 
  15. "ARM810 - Dancing to the Beat of a Different Drum" Arkistoitu 10. syyskuuta 2008 Wayback Machinessa Arkistoitu 23. heinäkuuta 2011. ARM Holdingsin esittely Hot Chipsissä 1996-08-07.
  16. Rekisteri 13, FCSE PID-rekisteri Arkistoitu 7. heinäkuuta 2011 Wayback Machine ARM920T Technical Reference Manualiin
  17. Neo1973: GTA01Bv4 ja GTA02 vertailu . Haettu 15. marraskuuta 2007. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  18. S3C2410 . Käyttöpäivä: 13. tammikuuta 2010. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  19. Rockbox Samsung SA58xxx -sarja . Haettu 22. helmikuuta 2008. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  20. Rockbox Meizu M6 -portti - Laitteistotiedot . Haettu 22. helmikuuta 2008. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  21. Datasheets - Magic Lantern Firmware Wiki . Haettu 6. kesäkuuta 2010. Arkistoitu alkuperäisestä 18. heinäkuuta 2011.
  22. STR9 - STR912 - STR912FW44 mikrokontrolleri - asiakirjojen ja tiedostojen lataussivu (linkki ei käytettävissä) . mcu.st.com. Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 10. helmikuuta 2007. 
  23. Starlet Arkistoitu 10. lokakuuta 2018 Wayback Machinessa .
  24. Vertailuarvot - Albatross (linkki ei saatavilla) . Albatross-uav.org (18. kesäkuuta 2005). Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 16. lokakuuta 2008. 
  25. ARM1136J(F)-S - ARM-prosessori . arm.com. Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  26. Qualcomm siru ytimen ARM - puhelimista kannettaviin tietokoneisiin . xi0.info. Haettu 8. toukokuuta 2010. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  27. Qualcomm MSM7227 RISC -piirisarja . pdadb.net. Haettu 8. toukokuuta 2010. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  28. GoForce 6100 . Nvidia.com. Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  29. Mediatek MT6573 . http://www.mediatek.com.+ Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 6. kesäkuuta 2012.
  30. Samsung S3C6410- ja S3C6430 -sarjan ARM-prosessorit (linkki ei saatavilla) . Samsung. Haettu 8. lokakuuta 2009. Arkistoitu alkuperäisestä 1. syyskuuta 2009.   ja Qualcomm MSM7627 kuten Palm Pixissä ja Motorola Calgary/Devourissa
  31. Merrit, Rick "ARM ulottuu A5-ytimellä, grafiikalla, FPGA:lla" . EE Times (21. lokakuuta 2009). Haettu 28. lokakuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  32. Clarke, Peter ARM neuvoo Swift- ja Sparrow-prosessoriytimien suunnitelmia . EE Times (3. helmikuuta 2009). Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  33. Segan, Sascha ARM:n moniytimiset sirut tähtäävät netbookeihin . PC Magazine (9. huhtikuuta 2009). Haettu 18. huhtikuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  34. 1 2 3 4 標æº- Arkistoitu 29. heinäkuuta 2013 Wayback Machinessa Arkistoitu 29. heinäkuuta 2013.
  35. Cortex-A15 prosessori - ARM . Haettu 24. lokakuuta 2012. Arkistoitu alkuperäisestä 30. toukokuuta 2012.
  36. Cortex-A7 -prosessori - ARM . Haettu 24. lokakuuta 2012. Arkistoitu alkuperäisestä 31. toukokuuta 2016.
  37. Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2. helmikuuta 2010). Haettu 3. toukokuuta 2010. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  38. Clarke, Peter ARM valmistelee pienen ytimen pienitehoisille mikrokontrollereille . EE Times (23. helmikuuta 2009). Haettu 30. marraskuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  39. Walko, John NXP esitteli ensimmäisenä ARM Cortex-M0 Siliconin . EE Times (23. maaliskuuta 2009). Haettu 29. kesäkuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  40. ARM Powered VCAs " Triad Semiconductor Arkistoitu 16. heinäkuuta 2011 Wayback Machinessa Arkistoitu 16. heinäkuuta 2011.
  41. Cortex-M0 käytetty pienitehoisessa kosketusohjaimessa - 06/10/2009 - Electronics Weekly . Haettu 6. kesäkuuta 2010. Arkistoitu alkuperäisestä 16. elokuuta 2011.
  42. Chungbuk Technopark valitsee ARM Cortex-M0 -suorittimen . Haettu 6. kesäkuuta 2010. Arkistoitu alkuperäisestä 7. lokakuuta 2010.
  43. Google-kääntäjä . Haettu 3. toukokuuta 2022. Arkistoitu alkuperäisestä 22. tammikuuta 2020.
  44. Austriamicrosystems valitsee ARM Cortex-M0 -prosessorin sekasignaalisovelluksiin . Haettu 6. kesäkuuta 2010. Arkistoitu alkuperäisestä 22. heinäkuuta 2011.
  45. "ARM Extends Cortex Family with First Processor Optimized for FPGA" Arkistoitu 5. toukokuuta 2007 Wayback Machinessa , ARM:n lehdistötiedote, 19. maaliskuuta 2007. Haettu 11. huhtikuuta 2007.
  46. "ARM Cortex-M1" Arkistoitu 1. huhtikuuta 2007 Wayback Machinessa , ARM-tuotesivustossa. Haettu 11. huhtikuuta 2007.
  47. ARM laajentaa Cortex-perhettä ensimmäisellä FPGA:lle optimoidulla prosessorilla Arkistoitu 5. toukokuuta 2007 Wayback Machinessa .
  48. Luokka:Opcodes -  ARMwiki . www.heyrick.co.uk. Haettu 6. elokuuta 2018. Arkistoitu alkuperäisestä 6. elokuuta 2018.
  49. ARM (downlink) . Haettu 15. huhtikuuta 2013. Arkistoitu alkuperäisestä 10. kesäkuuta 2018. 
  50. ARM julkaisee Cortex-A50-sarjan, maailman… - ARM . Haettu 17. huhtikuuta 2013. Arkistoitu alkuperäisestä 20. huhtikuuta 2013.
  51. ARM7TDMI (rev 3) Technical Reference  Manual . Haettu 22. elokuuta 2009. Arkistoitu alkuperäisestä 13. maaliskuuta 2012.
  52. http://www.peter-cockerell.net/aalp/html/ch-2.html Arkistoitu 8. joulukuuta 2015 Wayback Machinessa "Syöte- ja tulostuslaitteet on muistikartoitettu. Erillistä I/O-osoiteavaruutta ei ole olemassa. Oheislaitteet luetaan ja kirjoitetaan ikään kuin ne olisivat muistialueita. Tämä tarkoittaa, että käytännön ARM-järjestelmissä muistikartta on jaettu kolmeen alueeseen: RAM, ROM ja syöttö-/tulostuslaitteet (luultavasti koon pienenevässä järjestyksessä).
  53. OpenSolaris Project: ARM Platform Port . Sun Microsystems . Arkistoitu alkuperäisestä 13. maaliskuuta 2012.

Linkit