ARM (arvutiarhitektuur)

Allikas: Vikipeedia

ARM (lühend inglise keelest Advanced RISC Machines, algselt Acorn RISC Machines.[1]) on 32-bitine vähendatud käsustikuga arvutiarhitektuur (RISC), mida arendab ARM Holdings. ARM protsessorite lihtsus on teinud selle sobivaks madala voolutarbega rakenduste jaoks nagu mobiiltelefonid ja muud väikesed seadmed.

Umbes 95% mobiiltelefonidest kasutab ARM-i väljatöötatud protsessorit.[2] ARM-i protsessoreid kasutatakse manussüsteemides: pihuarvutites, mobiiltelefonides, muusikamängijates, mängukonsoolides, kalkulaatorites ja arvuti- ja võrgutarvikutes.

ARM-i arhitektuur on litsentseeritav. Mõned tuntumad ARM-i kliendid on Apple Inc., Broadcom, Cirrus Logic, Digital Equipment Corporation, Freescale, Intel, LG, Marvell Technology Group, Microsoft, NEC, Nuvoton, Nvidia, Qualcomm, Samsung, Sharp, Texas Instruments ja Yamaha.

ARM ise protsessoreid ei arenda, aga seda teevad ARM Holdings alltöövõtjad ja teised volitatud tootjad. ARM Holdingsi enda tehtud on ARM7, ARM9, ARM11 and Cortex tooteperekonnad. Mõned tuntumad teiste tootjate tehtud protsessorid on DEC StrongARM, Freescale i.MX, Marvell (algselt Intel) XScale (põhineb ARM v5 -l[3]), Nintendo, Nvidia Tegra, ST-Ericsson Nomadik, Qualcomm Snapdragon, Texas Instruments-i OMAP seeria ja Apple A4.

Ajalugu[muuda | redigeeri lähteteksti]

ARM ajalugu algas 1979. aastal, mil loodi Inglismaal, Cambridge-s firma Acorn Computers. Acorn tootis alguses koduarvuteid. Tugeva konkurentsi tõttu hakkas Acorni meeskond keeruliste käsustikega protsessorite asemele midagi uut mõtlema ja lõid selle tarbeks uurimisprojekti. Selle projekti tulemusel sündiski esimene ARM (Acorn RISC Machine) protsessor. 1985. aastal lasid nad välja esimese 26-bitise protsessori. Sellel oli 25 000 transistori , mis oli isegi tolle aja kohta väga vähe, kuid siiski oli jõudluselt samaväärne Intel 80286 protsessoriga (134 000 transistorit[4]).[5][6]

1987 lasti välja ARM versioon 2, millel oli kaasprotsessori tugi. Hiljem arendati selle põhjal ARM versioon 3, millele lisati sisemine vahemälu.

1990 lõid Apple, VLSI Technology ja Acorn ühisettevõtte nimega ARM, mis tähendas nüüd Advanced RISC Machines.

1996 lasti välja ARM protsessorite neljas põlvkond. Suurim uuendus selles versioonis oli Thumb 16-bitise pakitud käsustiku lisamine. Thumb -i kood võtab 40% vähem ruumi võrreldes 32-bitise koodiga. Levinuim neljanda põlvakonna protsessor on ARM7TDMI, mida kasutab näiteks Apple iPod.

1999 lasti välja ARM protsessorite viies põlvkond, mis lisas ARM protsessoritele digitaalse signaalitöötluse ja Java baitkoodi laiendused. Tuntuim viienda põlvkonna implementatsioon on XScale protsessor.

2001 väljastati ARMv6, mis lisas SIMD käsustiku, TrustZone virtualiseerimistehnoloogia ja mitme protsessori toe. Parandati ka Thumb tehnoloogiat.

2006[7] ilmus ARM seitsmes põlvkond. See sisaldab parandatud SIMD käsustikku ja parandatud ujukoma tuge.

ARM protsessorid[muuda | redigeeri lähteteksti]

Perekond Arhitektuur Omadused Vahemälu Jõudlus
ARM1 ARMv1 Esimene versioon Puudub Pole teada
ARM2 ARMv2, ARMv2a Korrutamisinstruktsioon Puudub 7 MIPS @ 12 MHz
ARM3 ARMv2a Integreeritud vahemälu 4K, ühtne 12 MIPS @ 25 MHz
ARM6 ARMv3 ARM60: 32-bitine mäluaadressi tugi, ARM60: puudub kaasprotsessori siin 4K ühtne 10-28 MIPS @ 12 MHz
ARM7 ARMv3 Puudub kaasprotsessori siin 8KB ühtne Pole teada
ARM7TDMI ARMv4T 3-astmeline pipeline, Thumb käsustik 8KB ühtne 15-63 MIPS @ 16.8 MHz
ARM7EJ ARMv5TEJ 5-astmeline pipeline, Thumb, Jazelle DBX, täiendatud DSP käsud Puudub Pole teada
ARM8 ARMv4 5-astmeline pipeline, staatiline hargnemise ennustamine, topelt mälu ülekandekiirus 8 kB 84 MIPS @ 72 MHz
StrongARM ARMv4 5-astmeline pipeline 8–16 kB -
ARM9TDMI ARMv4T 5-astmeline pipeline, Thumb 4-16 kB 200 MIPS @ 180 MHz
ARM9E ARMv5TE, ARMv5TEJ Thumb, Jazelle DBX, täiendatud DSP käsud, 16-32 kB, muutuv 220 MIPS @ 200 MHz
ARM10E ARMv5TE, ARMv5TEJ Thumb, Jazelle DBX, täiendatud DSP käsud, VFP(Vector Floating Point) 4-16 kB 200 MIPS @ 180 MHz
XScale ARMv5TE 7-astmeline pipeline, Thumb, täiendatud DSP käsud, Wireless MMX 32 kB kuni 1.25 GHz
ARM11 ARMv6 7-astmeline pipeline, SIMD, Thumb, Jazelle DBX, Thumb-2, VFP, täiendatud DSP käsud muutuv 740 @ 532–665 MHz (i.MX31 SoC), 400–528 MHz
Cortex-A ARMv7-A Cortex-A5[8]: VFP, NEON, Jazelle RCT, Thumb/Thumb-2, 1-4 tuuma muutuv (L1+L2) 1.57 DMIPS / MHz tuuma kohta
Cortex-A8[9]: VFP, NEON, Jazelle RCT, Thumb-2, 13-astmeline superskalaarne pipeline muutuv (L1+L2) 2.0 DMIPS/MHz
Cortex-A9 MPCore[10]: Rakenduslik profiil, VFPv3 FPU, NEON, Thumb-2, Jazelle RCT/DBX, 1–4 tuuma (sümmeetriline multitöötlus) 32 kB / 32 kB L1, kuni 4 MB L2 2.5 DMIPS/MHz tuuma kohta, 10 000 DMIPS @ 2 GHz (jõudlusele optimeeritud TSMC 40G (kahetuumaline)
Cortex-A15 MPCore[11]: Rakenduslik profiil, VFPv4 FPU, NEON, Thumb-2, Jazelle RCT/DBX, Large Physical Address Extensions (LPAE), riistvara virtualiseerimine, 1–4 tuuma (sümmeetriline multitöötlus) 32KB/32KB L1, kuni 4MB L2
Cortex-R ARMv7-R Reaalaja profiil, Thumb-2, FPU muutuv 740 @ 532–665 MHz (i.MX31 SoC), 400–528 MHz
Cortex-M ARMv6-M Cortex-M0: Mikrokontrolleri profiil, Thumb-2 alamhulk (16-bitine Thumb käsustik & BL, MRS, MSR, ISB, DSB, and DMB). Riistvaraline korrutamise käsk Puudub 0.9 DMIPS/MHz
Cortex-M1: FPGA targeted, Mikrokontrolleri profiil, Thumb-2 alamhulk (16-bitine Thumb käsustik & BL, MRS, MSR, ISB, DSB, and DMB) Puudub Kuni 136 DMIPS @ 170 MHz
ARMv7-M Cortex-M3: Mikrokontrolleri profiil, ainult Thumb-2. Riistvaraline jagamise käsk Valikuline 125 DMIPS @ 100 MHz
ARMv7-ME Cortex-M4: Mikrokontrolleri profiil, Thumb ja Thumb-2, FPU. Hardware MAC, SIMD ja jagamine Valikuline 1.25 DMIPS/MHz
Perekond Arhitektuur Omadused Vahemälu Jõudlus


Näidisrakendused[muuda | redigeeri lähteteksti]

Näidisrakendusete tabel (ingliskeelse artikkli tabel)

ARM ärimudel[muuda | redigeeri lähteteksti]

ARM ei tooda ise füüsilisi protsessoreid, vaid ainult loob ja hooldab arhitektuure ning volitatud tootjad teevad nende arhitektuuride põhjal konkreetseid protsessoreid. Protsessorite põhjal luuakse konkreetsed seadmed.[12]

Omadused[muuda | redigeeri lähteteksti]

Arhitektuur[muuda | redigeeri lähteteksti]

ARM arhitektuur määrab ära kuidas ARM protsessor peab käituma. Arhitektuur sisaldab:

  • käsustik
  • programmeerija mudel
  • konfiguratsioon
  • vigade haldus
  • mälumudel

Iga arhitektuuri versioon määrab süsteemi omadused:

  • kui mitu vahemälu tasemeid on ja nende suurused
  • abi-juhtregistri funktsionaalsus
  • abiinstruktsioonide mõju

Arhitektuur võib määrata ära ka erinevad laiendused. Arhitektuuri muudatused erinevates versioonides on tavaliselt tagasiühilduvad eelmisete versioonidega.

Protsessor[muuda | redigeeri lähteteksti]

Protsessor on konkreetne implementatsioon mingist arhitektuurist. Näiteks ARM1156T2(F)-S on ARMv6 arhitektuuri implementatsioon, millele on lisatud Thumb-2(T2), Ujukoma üksus(FPU)(F) ja SIMD(S), vastavalt tähistele protsessori nimes. Samast arhitektuurist võib olla palju erinevaid implementatsioone.

Seade[muuda | redigeeri lähteteksti]

Seadmetes on tavaliselt ARM protsessor ja selle lisad ühendatud ühte süsteemikiipi. Seadme arenduse ajal lisatakse erinevad kiibid vastavalt vajadusele. Seetõttu võivad erinevad seadmed põhineda samal protsessoril, kuid millel on näiteks erinev vahemälu suurus.

Näiteks võivad seadmel olla järgmised komponendid:

  • 2. taseme vahemälu kontroller
  • staatilise mälu kontroller
  • dünaamilise mälu kontroller
  • vastastikune siin
  • katkestuste kontroller
  • taktsignaal
  • väliste siinide liidesed

Profiilid[muuda | redigeeri lähteteksti]

Alates ARM 7. põlvkonnast on sellel profiilid erinevate rakendusvaldkondade jaoks.

Profiil Nimi Kirjeldus
A Rakenduslik profiil Virtuaalse mälusüsteemi põhine mikroprotsessor. Mõeldud suure jõudlusega seadmetele, mis peavad jooksutama täisfunktsionaalseid operatsioonisüsteeme.
R Reaalaja profiil Kaitstud mälusüsteemi põhine mikroprotsessor. Mõeldud ettemääratud ajastusega ja lühikest katkestusaega vajavatele süsteemidele.
M Mikrokontrolleri profiil Võimaldab lühikese katkestusajaga pöördumist otse kõrgetaseme programmeerimiskeeltest. Toetab osaliselt kaitstud mälu süsteemi ja Thumb käsustikku.

Käsustik[muuda | redigeeri lähteteksti]

Lihtsus

  • Vähendatud käsustik ehk RISC.[13]
  • Fikseeritud 32-bitine käsk muutuja asemel
  • Lihtsam toota

Töö

  • Riistvaraline käsu dekodeerimise loogika
  • Paralleelne käskude täitmine
  • Võimalik ühetsükliline käsutäitmine

Eelised

  • Kiibi väiksem füüsiline suurus
  • Lühem arendusaeg
  • Kohati suurem võimsus kui keeruka käsustikuga kiipidel

Puudused

  • Ei suuda vahetult täita x86 koodi


Tingimuslik täitmine[muuda | redigeeri lähteteksti]

ARM protsessorites ei kasutata tingimuslikku täitmist ainult hargnemiste(tingimuslausete) korral, vaid kõikide käskude korral. Selleks lisatakse igale käsule 4-bitine tingimuskood. Käsk kas täidetakse või ei täideta vastavalt sellele, milline on N, Z, C ja V tähiste väärtus programmi oleku registris(Current Program Status Register(CPSR))[14].

Näide Eukleidese algoritmi põhjal: C keeles näeb kood välja selline:

    while(i!=j) {
       if (i > j)
           i -= j;
       else
           j -= i;
    }

ARM assembleris näeb sama kood välja selline:

 loop   CMP    Ri, Rj       ; määra tingimus "NE" if (i != j),
                            ;               "GT" if (i > j),
                            ;            or "LT" if (i < j)
        SUBGT  Ri, Ri, Rj   ; if "GT" (suurem kui), i = i-j;
        SUBLT  Rj, Rj, Ri   ; if "LT" (vähem kui), j = j-i;
        BNE    loop         ; if "NE" (pole võrdne), then loop

SUB käske täidetakse ainult siis, kui Ri ja Rj on võrdsed. Hargemist ei toimu kui Ri ja Rj pole võrdsed.

Laiendused[muuda | redigeeri lähteteksti]

Jazelle[muuda | redigeeri lähteteksti]

Jazelle võimaldab täita Java baitkoodi otse ARM protsessoril.

Thumb[muuda | redigeeri lähteteksti]

Thumb on käsustiku olek. Selles olekus käsustik sisaldab muutuva pikkusega käske – 16–32-bitti. Lühem käsukood annab parema jõudluse. Thumb olekus 16-bitistel käsukoodidel on väiksem funktsionaalsus. Tinglik täitmine on lubatud vaid hargnemiste korral.

Thumb-2[muuda | redigeeri lähteteksti]

Thumb-2 laiendab nii ARM kui Thumb käsustikku, lisades bitivälja manipuleerimise, tabeli hargnevused ja tingliku täitmise.

NEON[muuda | redigeeri lähteteksti]

On kombineeritud 64- ja 128-bitise SIMD käsustik, mis annab kiirenduse meedia ja signaalitöötlusele.

TrustZone[muuda | redigeeri lähteteksti]

ARM TrustZone® tehnoloogia on süsteemikeskne lähenemine rakenduste turvamiseks nagu rahaülekanded, DRM ja veebiteenused. TrustZone tehnoloogia on tugevalt integreeritud A-profiili protsessoritesse.

Täitmise keelamine[muuda | redigeeri lähteteksti]

Alates ARMv6 on ka ARM protsessoritel nn NX-bit, mis märgib teatud mälupiirkonnad mittetäidetavaks.

Toetavad operatsioonisüsteemid[muuda | redigeeri lähteteksti]

ARM arhitektuuri toetavad paljud operatsioonisüsteemid.

Esimesed ARM põhised arvutid kasutasid operatsioonisüsteemi nimega Arthur, millest arenes välja RISC OS.

Manusopsüsteemid[muuda | redigeeri lähteteksti]

  • Windows CE
  • Symbian OS
  • eCos
  • INTEGRITY
  • Nucleus PLUS
  • MicroC/OS-II
  • QNX
  • RTXC Quadros
  • ThreadX
  • VxWorks

Unixi-laadsed[muuda | redigeeri lähteteksti]

Linuxi distributsioonid[muuda | redigeeri lähteteksti]

BSD[muuda | redigeeri lähteteksti]

Solaris[muuda | redigeeri lähteteksti]

  • OpenSolaris

Vaata ka[muuda | redigeeri lähteteksti]

Viited[muuda | redigeeri lähteteksti]