[go: up one dir, main page]

ARM

Tämä on arkistoitu versio sivusta sellaisena, kuin se oli 12. helmikuuta 2022 kello 05.18 käyttäjän Ipr1 (keskustelu | muokkaukset) muokkauksen jälkeen. Sivu saattaa erota merkittävästi tuoreimmasta versiosta.
Tämä artikkeli käsittelee mikroprosessoriarkkitehtuuria. Lyhenteen ARM ja nimen Arm muita merkityksiä on lueteltu täsmennyssivulla.

ARM (lyhenne sanoista Advanced RISC Machines) on mikroprosessoriarkkitehtuuri, jonka brittiläinen tietokonevalmistaja Acorn Computers kehitti 1980-luvun puolivälissä.[1] Arkkitehtuuriin kuuluu 32- ja 64-bittisiä suorittimia. ARM on pitkäikäisimpiä RISC-arkkitehtuureja ja nykyisin suosittu etenkin kämmenmikrojen, matkapuhelimien ja sulautettujen järjestelmien suorittimissa. Se on maailman eniten valmistettu 32-bittinen suoritinarkkitehtuuri: alkuvuodesta 2007 ARM-suorittimia oli valmistettu viisi miljardia kappaletta, ja mm. 90 % matkapuhelimista käyttää niitä.[2][3] Vuonna 2014 luku oli kymmenkertaistunut yli viiteenkymmeneen miljardiin.[4]

ARM
Perustietoja
Kehittäjä Acorn Computers, Arm
Valmistaja Samsung, Texas Instruments
Arkkitehtuuri ja luokitus
Arkkitehtuurityyppi RISC
Osoiteavaruus 32-bit / 64-bit
Tavujärjestys Bi-endian

Historia

ARM-suorittimet ovat olleet 32-bittisiä (32-bittinen leveys ja osoiteavaruus) ARMv3:sta lähtien: tätä edeltävät mallit käyttivät 26-bittistä osoiteavaruutta.[5]

64-bittinen ARM-suoritinsarja on julkaistu lokakuussa 2011.[6]

Armv9-arkkitehtuuriversio on julkaistu maaliskuussa 2021.[7] Edeltävä Armv8 julkaistiin vuonna 2011.[7] Uutena Armv9:ssä on koneoppimisen käyttöön suunnattu eri tarkkuuksien liukuluvut (kuten bfloat16) matriisien laskentaan sekä digitaalisen signaalikäsittelyn parannukset.[7]

Valmistajat

ARM-suorittimia suunniteleva Arm ei valmista ARM-suorittimia, vaan on keskittynyt vain niiden suunnittelemiseen ja lisensoi niiden valmistusoikeuksia useille muille yrityksille kuten Samsungille, Texas Instrumentsille (katso OMAP), Motorolalle (katso DragonBall MX), Qualcommille (katso Qualcomm Snapdragon) ja Applelle (katso Apple M1).

ARM-käskykannan ominaisuuksia

ARM soveltuu pienikokoisiin laitteisiin hyvin, koska sen voi toteuttaa suhteellisen vähäisellä logiikkamäärällä tehokkuuteensa nähden. Esimerkiksi ARM2:ssa oli vain noin 30 000 transistoria, mutta se oli silti nopeampi kuin samalla kellotaajuudella ajettu Motorola 68000, jossa transistoreja oli noin 68 000. Pienestä koostaan huolimatta ARM-prosessorit ovat varteenotettavia prosessoreita, koska ne voivat sisältää esimerkiksi muistinhallintayksikön (MMU), joka mahdollistaa kehittyneiden käyttöjärjestelmien ajamisen.

ARM-käskykanta on RISC-tyyppinen load-store-arkkitehtuuri, jossa on suuri määrä rekistereitä ja pieni määrä komentoja.[5] Operaatiot tehdään rekisterien välillä. Muistia käsittelevät vain muistinlataus- ja tallennuskäskyt. ARM sisältää kuitenkin myös joukon RISC-kantaa ilmaisuvoimaisempia käskyjä, kuten käskyt pinon käyttämiseen. Lisäksi normaaleihin aritmeettisiin käskyihin voidaan liittää toisen parametrin bittien siirto (shiftaus). Miltei jokainen käsky voi olla ehdollinen, eli käsky voidaan joko suorittaa tai olla suorittamatta riippuen jonkun ehtorekisterin arvosta. Sen avulla voidaan välttää osa ohjelmakoodin ehdollisista haarautumisista, jolla saadaan pidettyä suorittimen liukuhihnat täynnä ja parannettua välimuistin osumatarkkuutta, joka parantaa suorituskykyä.

Muistin osoitusmoodien ollessa rajattu kaikki käskyt voidaan koodata täsmälleen 32-bitillä.[5] Käskyt voidaan tasata muistiosoitteisiin ja käskyn purkaminen voidaan toteuttaa hyvin yksinkertaisesti.[5] Vertailun vuoksi x86-suorittimissa käskykoko vaihtelee ja ne ratkaisevat haittapuolia purkamalla käskyt yksinkertaisempiin RISC-tyyppisiin mikro-operaatioihin.[5]

Normaalit ARM-käskyt ovat 32 bitin mittaisia. Uusissamilloin? ARM-prosessoreissa on myös Thumb-toimintatila, jossa käskyt ovat 16 bitin mittaisia. Tällöin ohjelmamuistia sekä ohjelmamuistin ja prosessorin välistä muistiväylää tarvitaan vähemmän. Thumb-moodissa prosessorin toiminta on rajoittunutta: esimerkiksi vapaasti käytettävien rekisterien määrä on rajoitettu kahdeksaan, eikä muiden kuin hyppykäskyjen suoritus voi olla ehdollista.

Yleiskäyttöisiä rekistereitä ARMissa on 16 kappaletta, joka on melko vähän RISC-prosessorille.

Tavujärjestys on bi-endian ARM6-malleista eteenpäin, joka tarkoittaa että suoritin tukee molempia mahdollisuuksia (little, big).[8][9] Vanhat mallit olivat vain pieni-endiaanisia (ARM2, ARM3, ARM2aS).[9]

Monien muiden suorittimien tavoin ARM tukee eri toimintamoodeja: käyttäjätila tavallisille ohjelmille ja järjestelmätila (system mode) käyttöjärjestelmän koodille.[5] ARMv7:stä lähtien mukana on laitteistotuki hypervisor-virtualisoinnille, joka ARMv8:ssa on osa arkkitehtuuria suoritustasonimellä EL2.[5][10] EL1-suoritustaso on käyttöjärjestelmän ytimelle ja EL0-taso ilman eritysoikeuksia suoritettavalle koodille.[10] Lisäksi on toimintojen avuksi on kehitetty uusia keskeytyskäsittelijöitä (GIC) sekä IOMMU-tuki (SMMU ARM-arkkitehtuurissa).[10]

ARM-suoritinytimiä

  • ARM1 (1985), prototyyppi
  • ARM2 (1986), jota käytettiin Acorn Archimedes -mikrotietokoneissa
  • ARM6 (1991), jota käytettiin Apple Newton -PDA-laitteessa
  • ARM7, jota käytettiin muun muassa GameBoy Advancessa
  • StrongARM, jota valmisti aluksi DEC, ja jonka valmistusoikeudet myytiin sittemmin Intelille
  • Intel XScale
  • ARM9, joka on mm. hyvin monessa PDA:ssa käytetyn OMAP1xxx-piirin sisällä
  • ARM11, löytyy mm. OMAP2xxx-piirin sisältä.
  • Cortex A8, sisältää haarautumisenennustuksen, käytössä mm. iPhone 3GS:ssä ja Nokia N900:ssa.
  • Cortex A9, ensimmäinen käskyjä uudelleenjärjestelevä ARM-suoritin. Löytyy mm. Nvidian Tegra 2 -piirin sisältä.
  • Scorpion, Qualcommin suunnittelema ARM-ydin. Suorittaa kahta käskyä rinnakkain ja uudelleenjärjestelee käskyjä rajoitetusti. Käytössä mm. useimmissa Windows Phone 7-puhelimissa olevissa SnapDragon-piireissä.
  • Cortex A5, uudempi pienempi, vähävirtaisempi ja suorituskyvyltään heikompi malli.
  • Cortex A7, korvasi Cortex A8n, vähävirtaisempi mutta nopeampi.
  • Cortex A15, selvästi järeämpi ydin, pystyy suorittamaan kolmea käskyä rinnakkain ja pystyy uudelleenjärjestelemään käskyjä.
  • Krait, Qualcommin uudempi ARM-ydin. Suorittaa kolmea käskyä rinnakkain ja uudelleenjärjestelee käskyjä. Käytössä mm. useimmissa Windows Phone 8-puhelimissa olevissa SnapDragon-piireissä.
  • Swift, Applen suunnittelema ARM-ydin. Käytössä mm. iPhone 5:ssa. Suorittaa kolmea käskyä rinnakkain. [11]
  • Cortex A12, korvasi Cortex A9n, rakenteeltaan samantyylinen mutta suorituskyvyltään parempi.
  • Cortex A17, paranneltu Cortex A12.
  • Cyclone, Applen suunnittelema ja käyttämä ARM-ydin. Käytössä mm. iPhone 5S:ssä, pystyy suorittamaan jopa kuutta käskyä rinnakkain.[11]
  • Cortex-R-sarja on tarkoitettu deterministiseen käyttöön reaaliaikajärjestelmissä[12]
  • Cortex-M-sarja on tarkoitettu alhaisen hinnan ja virrankäytön kohteisiin mikrokontrollereissa[13]

ARM 64-bit

64-bittinen ARM-suoritinsarja on julkaistu lokakuussa 2011.[6]

Sarjan ensimmäinen malli on ARMv8-A, johon on kaksi päivitysversiota: ARMv8.1-A ja ARMv8.2-A.

64-bittinen ARM-arkkitehtuuri tunnetaan nimellä AArch64 ja se käyttää A64-käskykantaa.[14]

Lokakuussa 2020 kerrottiin että Cortex-A-sarjan suorittimet ovat vuodesta 2022 alkaen vain 64-bittisiä ja tuki 32-bittiselle ARM32-käskykannalle jää niistä pois.[15] Cortex-R- ja Cortex-M-sarjojen suorittimet ovat vielä 32-bittisiä.[15] ARM32-käskykannassa on käskyjä, jotka ovat vaikeita spekulatiiviselle suoritukselle ja vaikeasti optimoitavissa liukuhihnalle.[15]

NEON

NEON (tai engl. Media Processing Engine, MPE) on ARM-suorittimien vastine SIMD-käskylaajennuksille.[16]

Mali

Pääartikkeli: Mali (grafiikkasuoritin)

Mali on ARM Holdingsin grafiikkasuoritinsarja (GPU).

Lähteet

  1. Brian Santo: 25 Microchips That Shook the World spectrum.ieee.org. 1.5.2009. Viitattu 23.10.2021. (englanniksi)
  2. http://www.arm.com/about/newsroom/16535.php
  3. http://www.technologyreview.com/web/21675/?a=f[vanhentunut linkki]
  4. ARM Holdings plc Annual Report 2013: Strategic Report (PDF) (Sivu 3) financialreports.arm.com. Arkistoitu 29.8.2014. Viitattu 1.6.2016. (englanniksi)
  5. a b c d e f g The ARM architecture – yesterday, today, and tomorrow linux-magazine.com. Viitattu 11.10.2020. (englanniksi) 
  6. a b ARM Discloses Technical Details Of The Next Version Of The ARM Architecture ARM. Viitattu 24.1.2017.
  7. a b c Arm pulls the sheets off its latest Armv9 architecture with added AI support, Realms software isolation theregister.com. 30.3.2021. (englanniksi) 
  8. Memory endianness ARM. Viitattu 1.2.2017.
  9. a b Programmer's Model for Big-Endian ARM netwinder.osuosl.org. Viitattu 1.2.2017.
  10. a b c Understanding virtualization facilities in the ARMv8 processor architecture embedded.com. 20.9.2018. Viitattu 11.11.2020. (englanniksi)
  11. a b http://www.anandtech.com/show/7910/apples-cyclone-microarchitecture-detailed
  12. https://developer.arm.com/ip-products/processors/cortex-r
  13. https://developer.arm.com/ip-products/processors/cortex-m
  14. ARMv8 Instruction Set Overview ARM. Viitattu 16.2.2017.
  15. a b c Heads up: From 2022, all new top-end Arm Cortex-A CPU cores for phones, slabtops will be 64-bit-only, snub 32-bit theregister.com. 8.10.2020. Viitattu 11.10.2020. (englanniksi) 
  16. NEON ARM. Viitattu 16.2.2017.

Aiheesta muualla