ARM (arvutiarhitektuur): erinevus redaktsioonide vahel
188. rida: | 188. rida: | ||
===NEON=== |
===NEON=== |
||
On kombineeritud 64- ja 128-bitise SIMD käsustik, mis kiirenduse meedia ja signaalitöötlusele. |
|||
===TrustZone=== |
|||
==Litsenseerimine== |
==Litsenseerimine== |
Redaktsioon: 12. detsember 2010, kell 23:39
Palun oodake parandustega, toimetamine on pooleli! |
ARM on 32-bitine vähendatud käsustikuga arvuti(RISC), mida arendab ARM Holdings. ARM tähendab inglise keeles Advanced RISC Machines, mida algselt oli Acorn RISC Machines.[1] ARM protsessorite lihtsus on teinud selle sobivaks madala voolutarbega rakenduste jaoks nagu mobiiltelefonid ja muud väikesed seadmed.
Umbes 95% mobiiltelefonidest kasutab ARM poolt disainitud protsessorit.[2] ARM protsessoreid kasutatakse pihuarvutites, mobiiltelefonides, muusika mängijates, mängukonsoolides, kalkulaatorites ja arvuti- ja võrgutarvikutes.
ARM arhitektuur on litsenseeritav. Mõned tuntumad ARM 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 protsessoreid arendab nii ARM Holdings ise kui ka volitatud tootjad. ARM Holdings enda poolt on tehtud ARM7, ARM9, ARM11 and Cortex tooteperekonnad. Mõned tuntumad teiste tootjate poolt 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
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 transistorit, 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äsustiku ja parandatud ujukoma tuge.
ARM protsessorid
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 | 8KB | 84 MIPS @ 72 MHz |
StrongARM | ARMv4 | 5-astmeline pipeline | 8–16 KB | - |
ARM9TDMI | ARMv4T | 5-astmeline pipeline, Thumb | 4-16KB | 200 MIPS @ 180 MHz |
ARM9E | ARMv5TE, ARMv5TEJ | Thumb, Jazelle DBX, täiendatud DSP käsud, | 16-32KB, muutuv | 220 MIPS @ 200 MHz |
ARM10E | ARMv5TE, ARMv5TEJ | Thumb, Jazelle DBX, täiendatud DSP käsud, VFP(Vector Floating Point) | 4-16KB | 200 MIPS @ 180 MHz |
XScale | ARMv5TE | 7-astmeline pipeline, Thumb, täiendatud DSP käsud, Wireless MMX | 32KB | 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 cores | 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) | 32KB/32KB L1, kuni 4MB L2 | 2.5 DMIPS/MHz tuuma kohta, 10 000 DMIPS @ 2 GHz (Jõudlusele optimiseeritud 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, Thumb-2 only. 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
Näidisrakendusete tabel (ingliskeelse artikkli tabel)
ARM ärimudel
ARM ei tooda ise füüsilisi protsessoreid, vaid ainult lood ja hooldab arhitektuure ning volitatud tootjad teevad nende arhitektuuride põhjal konkreetseid protsessoreid. Protsessorite põhjal luuakse konkreetsed seadmed.[12]
Arhitektuur
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.
Profiilid
Alates ARM 7. põlvkonnast on sellel profiilid erinevate rakendusvaldkondade jaoks.
Profiil | Nimi | Kirjeldus |
---|---|---|
A | Rakenduslik profiil | Virtuaalse mälu süsteemi põhine mikroprotsessor. Mõeldud suure jõudlusega seadmetele, mis peavad jooksutama täisfunktsionaalseid operatsioonisüsteeme. |
R | Reaalaja profiil | Kaitstud mälu sü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. |
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 erinevaid implementatsioone.
Seade
Seadmetes on tavaliselt ARM protsessor ja selle lisad ühendatud ühte süsteemikiipi. Seadme arenduse ajal lisatakse erinevad 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
- kell
- väliste siinide liidesed
Arhitektuuri omadused
Vähendatud käsustik
Vähendatud käsustik ehk RISC.[13]
Lihtsus
- Fikseeritud 32-bitine käsk muutuja asemel
- Lihtsam toota
Töö
- Traaditud käsudekodeerimise loogika
- Paralleelne käsu täitmine
- Võimalik ühe tsükliline käsutäitmine
Eelised
- Väiksem füüsiline kiibi suurus
- Lühem arendusaeg
- Kohati suurem võimsus kui keeruka käsustikuga kiibid
Puudused
- Ei suuda vahetult täita x86 koodi
Tinglik täitmine
ARM protsessorites ei kasutata tingliku 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 Euclidese 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 kiirenduse meedia ja signaalitöötlusele.
TrustZone
Litsenseerimine
Toetatud operatsioonisüsteemid
Viited
- ↑ ARM Holdings
- ↑ Mobiledia: ARM to Take on Intel, Dominate Mobile Chip Market, 20. september 2010
- ↑ XScale
- ↑ Intel 80286
- ↑ Markus Levy, 2005, The History of The ARM Architecture
- ↑ Leonid Ryzhyk, 5. juuni 2006, The ARM Architecture
- ↑ Cortex A8 Juhend
- ↑ Cortex A5
- ↑ Cortex A8
- ↑ Cortex A9
- ↑ Cortex A15
- ↑ Architectures, Processors, and Devices
- ↑ An Introduction to the ARM System Architecture