ARM (arvutiarhitektuur)

Ajalugu

ARM ajalugu algas 1979. aastal, mil loodi Inglismaal Cambridge'is firma Acorn Computers. Acorn tootis alguses koduarvuteid. Tugeva konkurentsi tõttu hakkas Acorni meeskond keeruliste käsustikega protsessorite asemele midagi uut mõtlema ja selleks loodi uurimisprojekt. 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 transistori).
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 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 ilmus ARM seitsmes põlvkond. See sisaldab parandatud SIMD käsustikku ja parandatud ujukoma tuge.

ARM ärimudel

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.

Protsessor

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

Tingimuslik täitmine

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

Jazelle

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

Thumb

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

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

NEON

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

TrustZone

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

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

Toetavad operatsioonisüsteemid

ARM-arhitektuuri toetavad paljud operatsioonisüsteemid. Esimesed ARM-põhised arvutid kasutasid operatsioonisüsteemi Arthur, millest arenes välja RISC OS.

Manusopsüsteemid

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

UNIXi-laadsed

Android, Apple iOS, WebOS (Palm), GNU/Linux, BSD, Plan 9 (Bell Labs), Inferno, Solaris.