PAŽE | |
---|---|
| |
Vývojář | ARM Limited |
Bitová hloubka | ARMv7 64/32 bit, do ARMv8 pouze 64 bit |
Prezentováno | 1985 |
Architektura | RISC |
Typ | registrovat-registrovat |
SK kódování |
ARMv8: pevná (64 bitů), kromě režimu kompatibility kódu ARMv7 ARMv7/6: smíšená (32 a 16 bitů zarovnána) ARMv3/2: pevná (32 bitů) |
Implementace přechodu | podle příznaků stavu |
Pořadí bajtů | Přepínatelné (big-endian), obvykle z nízké na vysokou (little-endian) |
Rozšíření |
NEON, Thumb-2 (povinné od ARMv7), Jazelle, VFPv4-D16, VFPv4 (vše povinné v ARMv8) Na mikrokontrolérech: FPv4-SP |
Mediální soubory na Wikimedia Commons |
Architektura ARM (z anglického Advanced RISC Machine - pokročilý RISC stroj; někdy - Acorn RISC Machine ) - systém příkazů a rodina popisů a hotových topologií 32bitových a 64bitových mikroprocesorových / mikrokontrolérových jader vyvinutých společností ARM Limited [1] .
Mezi držitele licencí hotových topologií jádra ARM patří AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (do 27. června 2006), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , Qualcomm , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .
Významné rodiny procesorů: ARM7 , ARM9 , ARM11 a Cortex [3] [4] .
Mnoho držitelů licence navrhuje své vlastní základní topologie založené na instrukční sadě ARM: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait a Kryo v Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 a HiSilicon K3 .
V roce 2006 bylo asi 98 % z více než jedné miliardy mobilních telefonů prodaných ročně vybaveno alespoň jedním procesorem ARM [5] . Od roku 2009 tvořily procesory ARM až 90 % všech vestavěných 32bitových procesorů [6] . Procesory ARM jsou široce používány ve spotřební elektronice, včetně smartphonů, mobilních telefonů a přehrávačů, kapesních herních konzolí, kalkulaček, chytrých hodinek a počítačových periferií, jako jsou pevné disky nebo routery.
Tyto procesory mají nízkou spotřebu energie, takže jsou široce používány ve vestavěných systémech a dominují trhu mobilních zařízení, pro který je tento faktor kritický.
Po dosažení určitého úspěchu s počítačem BBC Micro přemýšlela britská společnost Acorn Computers o přechodu od relativně slabých procesorů MOS Technology 6502 k výkonnějším řešením a vstupu na trh podnikových počítačů se stejnou platformou BBC Micro . Procesory jako Motorola 68000 a 32016 od National Semiconductor k tomu nebyly vhodné a 6502 nebyl dostatečně výkonný, aby podporoval grafické uživatelské rozhraní [7] .
Společnost potřebovala zcela novou architekturu poté, co otestovala všechny procesory, které měla k dispozici, a zjistila, že jsou neefektivní. Acorn to s vývojem vlastního procesoru myslel vážně a jejich inženýři začali studovat dokumentaci projektu RISC , vyvinutého na Kalifornské univerzitě v Berkeley . Mysleli si, že když se skupině studentů podařilo vytvořit zcela konkurenceschopný procesor, jejich inženýři nebudou mít potíže. Výlet do Western Design Center (Arizona) ukázal inženýrům Stevu Ferberovi a Sophie Wilsonové (tehdy známé jako Roger [8] ), že k uskutečnění tohoto plánu nebudou potřebovat neuvěřitelné zdroje.
Wilson se pustil do vývoje instrukční sady vytvořením simulace nového procesoru na počítači BBC Micro. Její úspěch v tomto přesvědčil inženýry Acorn, že jsou na správné cestě. Ale než mohli jít dál, potřebovali více zdrojů, takže nastal čas, aby Wilson zašel za generálním ředitelem společnosti Acorn Hermanem Hauserem a vysvětlil mu, co se děje. Poté, co dal souhlas, se sešel malý tým, aby implementoval Wilsonův model do hardwaru.
Oficiální projekt Acorn RISC Machine začal v říjnu 1983. Společnost VLSI Technology křemíku, protože již dodala Acornu ROM čipy a některé zakázkové integrované obvody Vývoj vedli Wilson a Ferber . Jejich hlavním cílem bylo dosáhnout zpracování přerušení s nízkou latencí u technologie MOS Technology 6502. Architektura přístupu do paměti převzatá z 6502 umožnila vývojářům dosáhnout dobrého výkonu bez nákladné implementace modulu DMA . První procesor vyrobila společnost VLSI 26. dubna 1985 – tehdy poprvé začal pracovat a dostal název ARM1. První sériově vyráběné procesory, nazvané ARM2, byly dostupné v následujícím roce.
Jeho první použití bylo jako druhý procesor v BBC Micro , kde byl použit při vývoji simulačního softwaru, který doplnil podpůrné čipy počítače, a také urychlil CAD software používaný při vývoji ARM2. Wilson optimalizoval instrukční sadu ARM pro běh BBC BASIC . Původního cíle all-ARM počítače bylo dosaženo v roce 1987 s vydáním Acorn Archimedes.
Atmosféra kolem projektu ARM byla tak tajná, že když Olivetti v roce 1985 vyjednával o koupi většinového podílu v Acornu, až do konce vyjednávání o vývoji projektu nemluvili. V roce 1992 Acorn opět vyhrál Queen's Award for Enterprise za ARM.
ARM2 měl 32bitovou datovou sběrnici, 26bitový adresní prostor a 16 32bitových registrů. Programový kód musel ležet v prvních 64 megabajtech paměti a počítadlo programu bylo omezeno na 26 bitů, protože horní 4 a spodní 2 bity 32bitového registru sloužily jako příznaky. ARM2 se stal snad nejjednodušším z populárních 32bitových procesorů na světě, má pouze 30 tisíc tranzistorů (pro srovnání procesor Motorola 68000 vyrobený o 6 let dříve měl 68 tisíc tranzistorů). Velká část této jednoduchosti je způsobena nedostatkem mikrokódu (který u 68000 zabírá jednu čtvrtinu až jednu třetinu plochy matrice) a nedostatkem mezipaměti , jak tomu bylo u mnoha procesorů té doby. Tato jednoduchost vedla k nízkým nákladům na energii, zatímco ARM byl mnohem produktivnější než Intel 80286 . Jeho nástupce, procesor ARM3, měl již 4 KB cache, což výkon ještě zvýšilo.
Koncem 80. let začaly Apple Computer a VLSI Technology spolupracovat s Acorn Computers na nových verzích jádra ARM. Práce byla tak důležitá, že Acorn v roce 1990 složil vývojový tým do nové společnosti s názvem Advanced RISC Machines . Z tohoto důvodu je ARM někdy zkracován jako Advanced RISC Machines namísto Acorn RISC Machine . Advanced RISC Machines se stala ARM, když její mateřská společnost ARM Holdings byla kotována na londýnské burze cenných papírů a NASDAQ v roce 1998.
Z nové práce Apple-ARM se nakonec vyvinul ARM6, poprvé vydaný v roce 1992. Apple použil procesor ARM610 založený na ARM6 jako základ pro svůj produkt Apple Newton PDA. V roce 1994 Acorn začal používat ARM610 jako hlavní procesor ve svých počítačích RISC PC . DEC také koupil licenci na architekturu ARM6 (což způsobilo trochu zmatku, protože také vyráběli procesory Alpha ) a začali vyrábět StrongARM. Při 233 MHz tento procesor vyžadoval pouze 1 watt energie (pozdější verze vyžadovaly mnohem méně). Intel později získal práva na toto dílo v důsledku soudního sporu. Intel využil příležitosti a doplnil svou starší řadu I960 o procesor StrongARM a později vyvinul jejich verzi jádra pod značkou XScale , kterou následně prodal společnosti Marvell .
Jádro ARM si po všech těchto změnách zachovalo stejnou velikost. ARM2 měl 30 000 tranzistorů.
Procesory rodiny v podstatě dobyly segment masových mobilních produktů (mobilní telefony, PDA) a vestavěných systémů středního a vysokého výkonu (od síťových směrovačů a přístupových bodů až po televizory). Některé společnosti oznamují vývoj výkonných serverů založených na clusterech procesorů ARM [10] , ale zatím se jedná pouze o experimentální projekty s 32bitovou architekturou [11] .
Předchozí vedoucí žebříčku, superpočítač Summit (OLCF-4) , vyvinutý společně IBM (serverové uzly), Mellanox (propojení) a Nvidia (grafické akcelerátory) a instalovaný v Oak Ridge National Laboratory , se stal druhým a ztratil čestné první místo novému japonskému špičkovému systému Fugaku ( rus. Fugaku ), který ukázal výsledek High Performance / Highly Parallel Linpack (HPL) 415,5 petaflops. Tento ukazatel převyšuje možnosti Summitu 2,8krát. Fugaku je poháněn 48jádrovým A64FX SoC od Fujitsu, což z něj dělá vůbec první systém číslo 1 v seznamu TOP500 s procesory ARM. Při jednoduché nebo nižší přesnosti, která se často používá pro strojové učení a úkoly umělé inteligence, dosahuje Fugaku více než 1 000 petaflopů (1 exaflop). Nový systém je instalován v RIKEN Computational Science Center (R-CCS) v Kobe v Japonsku.
V současné době je významných několik rodin procesorů ARM:
V roce 2010 výrobce oznámil procesory Cortex-A15 s kódovým označením Eagle, ARM tvrdí, že jádro Cortex A15 je o 40 procent rychlejší na stejné frekvenci než jádro Cortex-A9 se stejným počtem jader na čip [12] . Produkt vyrobený 28nm procesní technologií má 4 jádra, může pracovat na frekvenci až 2,5 GHz a bude podporován mnoha moderními operačními systémy [13] [14] .
Populární rodina mikroprocesorů xScale společnosti Marvell (do 27. června 2007 - Intel [15] ) je ve skutečnosti rozšířením architektury ARM9 doplněné o sadu instrukcí Wireless MMX , speciálně vyvinutou společností Intel pro podporu multimediálních aplikací.
Verze jádra ARM (tabulka)Rodina jádra | Verze architektury | Jádro | Funkce | Mezipaměť (I/D)/ MMU | Typický MIPS @ MHz | Používání |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (zastaralé) | ARM1 | Ne | Procesor ARM Evaluation System BBC Micro | ||
ARM2 | ARMv2 (zastaralé) | ARM2 | Přidán příkaz MUL (násobit) | Ne | 4 MIPS při 8 MHz 0,33 DMIPS /MHz |
Žalud Archimedes , šachový stroj |
ARMv2a (zastaralé) | ARM250 | Integrované MEMC (MMU), GPU, přidané příkazy SWP a SWPB (swap). | Ne, MEMC1a | 7 MIPS při 12 MHz | Žalud Archimedes | |
ARM3 | ARMv2a (zastaralé) | ARM2a | Poprvé použitá cache | celkem 4 kB | 12 MIPS @ 25 MHz 0,50 DMIPS/MHz |
Žalud Archimedes |
ARM6 | ARMv3 (zastaralé) | ARM60 | Poprvé zaveden 32bitový (spíše než 26bitový) adresní prostor paměti | Ne | 10 MIPS při 12 MHz | 3DO interaktivní multiplayer , GPS přijímač Zarlink |
ARM600 | Stejně jako ARM60, FPA10 matematický koprocesor s plovoucí desetinnou čárkou | celkem 4 kB | 28 MIPS při 33 MHz | |||
ARM610 | Stejně jako ARM60, mezipaměť, žádná sběrnice koprocesoru | celkem 4 kB | 17 MIPS při 20 MHz 0,65 DMIPS/MHz |
Acorn Risc PC 600 , řada Apple Newton 100 | ||
ARM7 | ARMv3 (zastaralé) | ARM700 | celkem 8 kB | 40 MHz | Prototyp CPU karty Acorn Risc PC | |
ARM710 | Jako ARM700 | celkem 8 kB | 40 MHz | Acorn Risc PC 700 | ||
ARM710a | Jako ARM700 | celkem 8 kB | 40 MHz 0,68 DMIPS /MHz |
Acorn Risc PC 700 , Apple eMate 300 | ||
ARM7100 | Stejně jako ARM710a, integrovaný SoC | celkem 8 kB | 18 MHz | Psion Series 5 | ||
ARM7500 | Stejně jako ARM710a, integrovaný SoC. | celkem 4 kB | 40 MHz | Žalud A7000 | ||
ARM7500FE | Stejně jako ARM7500, "FE" přidal FPA a EDO paměťové řadiče | celkem 4 kB | 56 MHz 0,73 DMIPS/ MHz |
Síťový počítač Acorn A7000+ | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-stupňový dopravník, režim palce | Ne | 15 MIPS při 16,8 MHz 63 DMIPS při 70 MHz |
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7, Juice Box , NXP Semiconductors LPC2000 a LH754xx , Actel 's CoreMP7 |
ARM710T | Jako ARM7TDMI, mezipaměť | Sdíleno 8 KB, MMU | 36 MIPS při 40 MHz | Psion Series 5mx , Psion Revo /Revo Plus/Diamond Mako | ||
ARM720T | Jako ARM7TDMI, mezipaměť | 8 KB sdílené , MMU s rozšířením Fast Context Switch Extension | 60 MIPS při 59,8 MHz | Zipit Wireless Messenger , NXP Semiconductors LH7952x | ||
ARM740T | Jako ARM7TDMI, mezipaměť | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5-stupňové potrubí, Thumb, Jazelle DBX, pokročilé příkazy DSP | žádný | |||
StrongARM | ARMv4 | SA-110 | 16KB/16KB MMU | 203 MHz 1,0 DMIPS/MHz |
Apple Newton série 2x00, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS | |
SA-1100 | Stejně jako SA-110, integrovaný SoC | 16KB/8KB MMU | 203 MHz | Netbook Psion | ||
SA-1110 | Stejně jako SA-110, integrovaný SoC | 16KB/8KB MMU | 206 MHz | LART (počítač) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series , Palm Zire 31 | ||
ARM8 | ARMv4 | ARM810 [16] | 5-stupňové potrubí, predikce statické větve, dvoupásmová paměť | 8 KB unifikovaných, MMU | 84 MIPS při 72 MHz 1,16 DMIPS/MHz |
Prototyp CPU karty Acorn Risc PC |
ARM9TDMI | ARMv4T | ARM9TDMI | 5-stupňový dopravník, Palec | žádný | ||
ARM920T | Jako ARM9TDMI, mezipaměť | 16 KB/16 KB, MMU s FCSE (Fast Context Switch Extension) [17] | 200 MIPS @ 180 MHz | Armadillo , Atmel AT91SAM 9, GP32 , GP2X (první jádro), Tapwave Zodiac ( Motorola i. MX1), Hewlett Packard HP-49/50 Calculators , Sun SPOT , Cirrus Logic EP9302, EP9307, EP9312, EP9345, S9345 , EP9315 , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( navigační zařízení TomTom ) [19] | ||
ARM922T | Jako ARM9TDMI, mezipaměť | 8KB/8KB MMU | NXP Semiconductors LH7A40x | |||
ARM940T | Jako ARM9TDMI, mezipaměť | 4 KB/4 KB MPU | GP2X (druhé jádro), Meizu M6 Mini Player [20] [21] | |||
ARM9E | ARMv5TE | ARM946E-S | Thumb, Enhanced DSP instrukce, cache | variabilní, pevně spojené paměti, MPU | Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , čipy Conexant 802.11, Samsung S5L2010 | |
ARM966E-S | Palec, vylepšené instrukce DSP | žádná mezipaměť, TCM | STM STR91xF, zahrnuje Ethernet [23] | |||
ARM968E-S | Jako ARM966E-S | žádná mezipaměť, TCM | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Thumb, Jazelle DBX, instrukce Enhanced DSP | proměnné, TCM, MMU | 220 MIPS @ 200 MHz | Mobilní telefony: Sony Ericsson (řada K, W); Siemens a Benq (řada x65 a novější); 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 — nezdokumentované jádro v grafickém čipu ATi Hollywood používaném ve Wii, [24] Samsung S3C použitý v Ovladač Squeezebox Duet . Rádio Squeezebox ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telečipy TCC7801, TCC7901; systém ZiiLABS ' ZMS-05 na čipu; Western Digital MyBook I World Edition | |
ARMv5TE | ARM996HS | Bezhodinový procesor jako ARM966E-S | žádné mezipaměti, TCM, MPU | |||
ARM10E | ARMv5TE | ARM1020E | 6stupňový kanál, Thumb, vylepšené instrukce DSP, (VFP) | 32KB/32KB MMU | ||
ARM1022E | Jako ARM1020E | 16KB/16KB MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Thumb, Jazelle DBX, Enhanced DSP instrukce, (VFP) | variabilní, MMU nebo MPU | Western Digital MyBook II World Edition; Conexant so4610 a so4615 ADSL SoC | ||
Xscale | ARMv5TE | 80200/IOP310/IOP315 | I/O procesor, palec, instrukce Enhanced DSP | |||
80219 | 400/600 MHz | Thecus N2100 | ||||
IOP321 | 600 Bogo Mips při 600 MHz | Iyonix | ||||
IOP 33x | ||||||
IOP 34x | 1-2 jádro, RAID Acceleration | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Aplikační procesor, 7-stupňová pipeline | PXA210: 133 a 200 MHz, PXA250: 200, 300 a 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 a 400 MHz | Sony CLIÉ NX73V, NX80V | ||||
PXA26x | výchozí 400 MHz, až 624 MHz | Palm Tungsten T3 | ||||
PXA27x | Aplikační procesor | 32KB/32KB MMU | 800 MIPS @ 624 MHz | Gumstix verdex , "Trizeps-Modules" PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50 a x51 řada, Motorola Q, Balloon3 , Palmola TX , Troll 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é, Tregé iPa60, Toshiba Portégé iG550 obchodní navigátor | ||
PXA800(E)F | ||||||
PXA3XX (kódové označení "Monahans") | PXA31x má hardwarový grafický akcelerátor | 32KB/32KB L1, TCM, MMU | 800 MIPS @ 624 MHz | highscreen alex | ||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Řídicí rovinný procesor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S [26] | 8stupňové potrubí, SIMD , Thumb, Jazelle DBX, (VFP), vylepšené instrukce DSP | proměnná, 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 (s integrovaným ARM926EJ-S koprocesorem@274 MHz, použitý v E HTCten Glofish , TyTN II , HTC Nike ), Freescale i.MX31 (použito v originále Zune 30gb a Toshiba Gigabeat S), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic , Nokia 6120 Qualcomm MSM7201A, jak je vidět v HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 Classic , Motorola Z6 , Motorola Z6 i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28] |
ARMv6T2 | ARM1156T2(F)-S | 9-stupňové potrubí, SIMD , Thumb-2, (VFP), vylepšené instrukce DSP | variabilní, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Jako ARM1136EJ(F)-S | variabilní, MMU+TrustZone | Apple iPhone (originální a 3G) , Apple iPod touch (1. a 2. generace) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telečipy TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (např. Samsung Moment ), S3C6430 [31] | ||
ARMv6K | ARM11MPCore | Jako ARM1136EJ(F)-S, 1-4 jádrový SMP | proměnná, MMU | Nvidia APX 2500 | ||
Rodina jádra | Verze architektury | Jádro | Funkce | Mezipaměť (I/D)/MMU | Typický MIPS @ MHz | Aplikace |
Kůra | ARMv7-A | Cortex-A5 | VFP, NEON, Jazelle RCT a DBX, Thumb-2, 8stupňové potrubí, In-order, 1-4 jádrové SMP | proměnná (L1), MMU+TrustZone | až 1500 (1,5 DMIPS/MHz) | "Vrabec" (kódové jméno ARM) [32] [33] [34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13-stupňové potrubí, In-order, 2 dekodéry [35] | variabilní (L1+L2), MMU+TrustZone | až 2000 (2,0 DMIPS/MHz při rychlosti od 600 MHz do více než 1 GHz) | Řada TI OMAP3xxx , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3. generace) , Apple iPad ( procesor Apple A4 ), Apple iPhone 4 ( procesor Apple A4 ), 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 , ZiiLABS ZMS na čipu, Boxchip A13 | ||
Cortex-A9 | Aplikační profil, (VFP), (NEON), Jazelle RCT a DBX, Thumb-2, Superskalární spekulativní emise mimo pořadí (2 dekodéry); 9-12 [35] stupně potrubí | MMU+TrustZone | 2,5 DMIPS/MHz | Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Stejně jako Cortex-A9, 1-4 jádrový SMP | MMU+TrustZone | 10 000 DMIPS @ 2 GHz na TSMC 40G s optimalizovaným výkonem (čtyřjádro?) (2,5 DMIPS/MHz na jádro) | PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 jádrové SMP; Mimořádný superskalární (3 dekodéry); 15+ dopravníkových stupňů [35] ; VFPv4, NEON [36] | MMU, LPAE | 3,5 DMIPS/MHz/jádro; 1,0 GHz – 2,5 GHz (@ 28 nm [35] ) | |||
Cortex-A7 MPCore [37] | FPU, NEON; V pořadí (1 dekodér); 8stupňový dopravník. | 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) | Vestavěný profil, Thumb-2, (FPU) | variabilní mezipaměť, volitelný MPU | 600 DMIPS @ 475 MHz | Broadcom je uživatel, TI TMS570 | |
ARMv7-ME | Cortex-M4 (kódové označení "Merlin") [38] | Profil mikrokontroléru, Thumb i Thumb-2, FPU. Hardwarové instrukce MAC, SIMD a rozdělení | MPU volitelný | 1,25 DMIPS/MHz | NXP Semiconductors , STM32 , TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Profil mikrokontroléru, pouze Thumb-2. instrukce rozdělení hardwaru | žádná mezipaměť, volitelný MPU | 125 DMIPS při 100 MHz | TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Ember 's EM3xx Series, Atmel AT91SAM 3, Europe Technologies EasyBCU , Energy Micro 's EFM32 , Actel 's SmartFusion, Actel [ SmartFusion , Milandre ] | |
ARMv6-M | Cortex-M0 (kódové označení "Swift") [39] | Profil mikrokontroléru, podmnožina Thumb-2 (16bitové instrukce Thumb & BL, MRS, MSR, ISB, DSB a DMB) | Žádná mezipaměť | 0,9 DMIPS/MHz | NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3] | |
Cortex-M1 | Zacíleno na FPGA, profil mikrořadiče, podmnožina Thumb-2 (16bitové instrukce palce a BL, MRS, MSR, ISB, DSB a DMB) | Žádné, pevně spojená paměť volitelná | Až 136 DMIPS při 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz dosažitelné v závislosti na FPGA) | Actel ProASIC3, ProASIC3L, IGLOO a Fusion PSC zařízení , Altera Cyclone III , další produkty FPGA jsou také podporovány, např. Synplicity | ||
Rodina jádra | Verze architektury | Jádro | Funkce | Mezipaměť (I/D)/ MMU | Typický MIPS @ MHz | Aplikace |
Již dlouho existuje referenční příručka k architektuře ARM, která vymezuje všechny typy rozhraní, které ARM podporuje, protože detaily implementace každého typu procesoru se mohou lišit. Architektura se postupem času vyvíjela a od ARMv7 byly definovány 3 profily:
Profily mohou podporovat méně příkazů (příkazů určitého typu).
Procesor může být v jednom z následujících provozních režimů:
K přepnutí režimu procesoru dojde při výskytu příslušné výjimky nebo úpravou stavového registru.
Aby bylo zařízení čisté, jednoduché a rychlé, byla původní výroba ARM provedena bez mikrokódu , jako je jednodušší 8bitový procesor 6502 používaný v předchozích mikropočítačích od Acorn Computers .
Instrukční sada ARMRežim, ve kterém se provádí 32bitová instrukční sada.
Základní instrukční sada ARM: [49]
ADC, ADD, AND, 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
Palec příkazů setPro zlepšení hustoty kódu jsou procesory počínaje ARM7TDMI vybaveny režimem „palec“. V tomto režimu procesor vykonává alternativní sadu 16bitových instrukcí. Většina těchto 16bitových instrukcí je přeložena do normálních instrukcí ARM. Snížení délky instrukce je dosaženo skrytím některých operandů a omezením adresovatelnosti ve srovnání s režimem plné instrukční sady ARM.
V režimu Thumb mají menší operační kódy menší funkčnost. Například pouze větve mohou být podmíněné a mnoho operačních kódů je omezeno na přístup pouze k polovině registrů hlavního procesoru. Kratší operační kódy obecně vedou k větší hustotě kódu, ačkoli některé operační kódy vyžadují další instrukce. V situacích, kdy je šířka paměťového portu nebo sběrnice omezena na 16 bitů, jsou kratší operační kódy v režimu Thumb mnohem rychlejší než běžné 32bitové operační kódy ARM, protože s omezenou šířkou pásma paměti musí být do procesoru nahráno méně kódu.
Hardware jako Game Boy Advance má obvykle k dispozici malé množství paměti RAM s plným 32bitovým datovým kanálem. Většina operací se však provádí prostřednictvím 16bitového nebo užšího informačního kanálu. V tomto případě má smysl použít Thumb kód a ručně optimalizovat některé těžké části kódu pomocí přepnutí na plné 32bitové instrukce ARM.
První procesor s dekodérem příkazů Thumb byl ARM7TDMI. Všechny procesory rodiny ARM9 , stejně jako XScale , měly vestavěný dekodér příkazů Thumb.
Instrukční sada Thumb-2Thumb-2 je technologie představená v jádře ARM1156, která byla oznámena v roce 2003. Rozšiřuje omezenou 16bitovou sadu instrukcí Thumb o další 32bitové instrukce, aby instrukční sada získala větší šířku. Cílem Thumb-2 je dosáhnout hustoty kódu podobné Thumb a výkonu 32bitové instrukční sady ARM. Dá se říci, že v ARMv7 byl tento cíl splněn.
Thumb-2 rozšiřuje instrukce ARM i Thumb o ještě více instrukcí, včetně manipulace s bitovým polem, větvení tabulek, podmíněného provádění. Nový „Unified Assembly Language“ (UAL) podporuje vytváření příkazů pro ARM i Thumb ze stejného zdrojového kódu. Verze Thumb ARMv7 vypadají jako kód ARM. To vyžaduje opatrnost a použití nového příkazu if-then, který podporuje provedení až 4 po sobě jdoucích příkazů testovacího stavu. Během kompilace do kódu ARM je ignorován, ale generuje příkazy během kompilace do kódu ARM. Například:
; if (ro == r1) CMP r0 , r1 ITE EQ ; ARM: žádný kód ... Palec: IT instrukce ; pak r0 = r2; MOVEQ r0 , r2 ; ARM: podmíněné; Palec: podmínka přes ITE 'T' (pak) ; jinak r0 = r3; MOVNE r0 , r3 ; ARM: podmíněné; Palec: podmínka přes ITE 'E' (jinak) ; připomeňte si, že instrukce Thumb MOV nemá žádné bity pro kódování "EQ" nebo "NE"Všechny nástroje ARMv7 podporují sadu instrukcí Thumb-2, zatímco některé nástroje, jako například Cortex-m3, podporují pouze Thumb-2. Zbývající matrice Cortex a ARM11 podporují sady instrukcí Thumb-2 i ARM.
Sada příkazů JazelleJazelle je technologie, která umožňuje bajtovému kódu Java spouštět se přímo na architektuře ARM jako 3. stav provádění (a instrukční sada) spolu s běžnými instrukcemi ARM a režimem Thumb. Podpora technologie Jazelle je označena písmenem „J“ v názvu procesoru – například ARMv5TEJ. Tato technologie je podporována již od architektury ARMv6, i když novější jádra obsahují pouze omezené implementace, které nepodporují hardwarovou akceleraci.
ARMv8 a 64bitová instrukční sada ARMNa konci roku 2011 byla zveřejněna nová verze architektury ARMv8. Představila definici architektury AArch64, ve které se provádí 64bitová instrukční sada A64. Podpora 32bitových příkazů se nazývá A32 a je prováděna na architekturách AArch32. Instrukce palce jsou podporovány v režimu T32 pouze při použití 32bitových architektur. Je povoleno spouštět 32bitové aplikace v 64bitovém OS a provozovat virtualizovaný 32bitový OS pomocí 64bitového hypervizoru [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM a další oznámily plány na použití ARMv8. Jádra Cortex-A53 a Cortex-A57 podporující ARMv8 představil ARM 30. října 2012 [51] .
AArch32 i AArch64 podporují VFPv3, VFPv4 a pokročilé SIMD (NEON). Také přidány kryptografické instrukce pro práci s AES , SHA-1 a SHA-256 .
Vlastnosti AArch64:
Architektura ARM má následující vlastnosti RISC:
Pro kompenzaci jednoduchého designu byly ve srovnání s moderními procesory, jako je Intel 80286 nebo Motorola 68020, použity některé konstrukční prvky:
Jedním z podstatných rozdílů mezi architekturou ARM (original architecture) a ostatními architekturami CPU je tzv. predikace – schopnost podmíněně provádět instrukce. Pod pojmem "podmíněné provedení" zde rozumíme, že instrukce bude provedena nebo ignorována v závislosti na aktuálním stavu příznaků stavu procesoru. V Thumb and Arm 64 se predikace nepoužívá - v prvním režimu pro ni v příkazu není místo (pouze 16 bitů) a ve druhém - predikace je nesmyslná a obtížně implementovatelný na superskalárních architekturách .
Zatímco pro jiné architektury mají tuto vlastnost zpravidla pouze instrukce podmíněného skoku, architektura ARM byla navržena tak, aby podmíněně provedla téměř jakoukoli instrukci. Toho bylo dosaženo přidáním speciálního 4bitového pole ( predikátu ) do jejich instrukčních kódů. Jedna z jeho hodnot je vyhrazena pro to, že instrukce musí být provedena bezpodmínečně, a zbytek kóduje jednu nebo jinou kombinaci podmínek (příznaků). Na jednu stranu to s ohledem na omezenou celkovou délku instrukce snížilo počet bitů dostupných pro kódování offsetů v příkazech pro přístup do paměti, ale na druhou stranu to umožnilo zbavit se větvených instrukcí při generování kódu pro malé if-bloky.
Příklad běžně zvažovaný pro ilustraci je Euklidův algoritmus založený na odčítání . V jazyce C to vypadá takto:
zatímco ( i != j ) { if ( i > j ) { i- = j ; } jinak { j- = i ; } }A v assembleru ARM - takto:
smyčka CMP Ri , Rj ; nastavit podmínku "NE" if (i != j), ; "GT" if (i > j), ; nebo "LT", pokud (i < j) SUBGT Ri , Ri , Rj ; pokud "GT" (větší než), i = ij; SUBLT Rj , Rj , Ri ; pokud "LT" (menší než), j = ji; BNEloop ; _ pokud "NE" (není rovno), pak smyčkaZ kódu je vidět, že použití predikace umožnilo zcela se vyhnout větvení v příkazech else a then. Všimněte si, že pokud jsou Ri a Rj stejné, nebude provedena žádná z instrukcí SUB, což zcela eliminuje potřebu větve, která implementuje kontrolu while při každém začátku smyčky, což by mohlo být implementováno například pomocí SUBLE ( menší nebo rovno) instrukce .
Jedním ze způsobů, jak Thumb kód dosahuje větší úspory místa, je právě odstranění 4bitového predikátu ze všech instrukcí kromě větví.
Další vlastností instrukční sady je schopnost kombinovat posuny a rotace v instrukci "zpracování informací" (aritmetický, logický, pohyb registr-registr), takže například výraz C:
a += ( j << 2 );lze v ARM převést na jednoslovnou a cyklickou instrukci:
PŘIDAT Ra , Ra , Rj , LSL #2To způsobuje, že typické programy ARM jsou hustší než obvykle s menším přístupem do paměti. Potrubí je tak využíváno mnohem efektivněji. I když ARM běží rychlostí, kterou by mnozí považovali za pomalé, poměrně snadno konkuruje mnoha sofistikovanějším architekturám CPU.
Procesor ARM má také některé funkce, které se zřídka vyskytují v jiných architekturách RISC, jako je adresování vzhledem k programovému čítači (ve skutečnosti je programový čítač ARM jedním ze 16 registrů), stejně jako režimy adresování před a po přírůstku.
Další funkcí, která stojí za zmínku, je, že některé rané procesory ARM (před ARM7TDMI) například nemají instrukce pro ukládání 2bajtových čísel. Tedy, přísně vzato, je pro ně nemožné vygenerovat efektivní kód, který se chová tak, jak se očekává od C objektů typu "volatile int16_t".
ARM7 a starší mají třístupňové potrubí. Jedná se o fáze přenosu, dekódování a provádění. Architektury s vyšším výkonem jako ARM9 mají složitější potrubí. Cortex-a8 má 13stupňové potrubí.
Architektura poskytuje způsob, jak rozšířit instrukční sadu pomocí koprocesorů, které mohou být adresovány pomocí MCR, MRC, MRRC, MCRR a podobných instrukcí. Prostor koprocesoru je logicky rozdělen na 16 koprocesorů očíslovaných 0 až 15, přičemž 15. je vyhrazen pro některé typické funkce správy, jako je správa mezipaměti a provoz jednotky správy paměti (u procesorů, které jimi disponují).
Na strojích založených na ARM jsou periferie obvykle připojeny k procesoru mapováním jejich fyzických registrů v paměti ARM nebo koprocesorové paměti nebo jejich připojením ke sběrnicím, které jsou zase připojeny k procesoru. Přístup ke koprocesorům má delší latenci, takže některé periferie jsou navrženy tak, aby byly přístupné oběma směry. V ostatních případech používají vývojáři čipů pouze mechanismus integrace koprocesoru. Například engine pro zpracování obrazu by se měl skládat z malého jádra ARM7TDMI spojeného s koprocesorem, který podporuje primitivní operace pro zpracování elementárních HDTV kódování.
Enhanced SIMD (NEON)Rozšířením pokročilé SIMD, označované také jako technologie NEON, je kombinovaná 64bitová a 128bitová instrukční sada s jednou instrukcí s více daty ( SIMD ) , která poskytuje standardizovanou akceleraci pro aplikace pro zpracování médií a signálů. NEON umí dekódovat audio formát mp3 na frekvenci procesoru 10 MHz a může pracovat s kodekem řeči GSM AMR (adaptive multi-rate) na maximálně 13 MHz. Má působivou sadu instrukcí, samostatné soubory registrů a nezávislý systém provádění na úrovni hardwaru. NEON podporuje 8-, 16-, 32-, 64-bitové celé číslo, informace s jednou přesností a plovoucí desetinnou čárkou a pracuje v operacích SIMD pro zpracování zvuku a videa (grafika a hry). V NEON SIMD podporuje až 16 operací najednou.
Jednou z nevýhod (nebo řekněme vlastností) vylepšeného SIMD je, že koprocesor provádí instrukce vylepšeného SIMD s poměrně výrazným zpožděním vzhledem ke kódu hlavního procesoru, zpoždění dosahuje dvou tuctů cyklů nebo více (v závislosti na architektura a specifické podmínky). Z tohoto důvodu, když se hlavní procesor pokusí použít výsledky výpočtu koprocesoru, provádění bude na značnou dobu zmrazeno.
VFPTechnologie VFP (Vector Floating Point) je rozšířením koprocesoru v architektuře ARM. Provádí nízkonákladové výpočty na číslech s pohyblivou řádovou čárkou s jednoduchou/dvojitou přesností, která jsou plně v souladu se standardem ANSI/IEEE Std 754-1985 pro binární aritmetiku s pohyblivou řádovou čárkou . VFP provádí výpočty s pohyblivou řádovou čárkou vhodné pro širokou škálu aplikací, jako jsou PDA, chytré telefony, audio komprese, 3D grafika a digitální zvuk, stejně jako tiskárny a set-top boxy. Architektura VFP také podporuje provádění krátkých vektorových instrukcí. Ale protože procesor provádí operace sekvenčně na každém prvku vektoru, nelze VFP nazvat skutečnou sadou instrukcí SIMD. Tento režim může být užitečný v grafických aplikacích a aplikacích pro zpracování signálu, protože snižuje velikost kódu a generování instrukcí.
Další koprocesory s pohyblivou řádovou čárkou a/nebo SIMD koprocesory, které se nacházejí na procesorech ARM, zahrnují FPA , FPE , iwMMXt . Poskytují stejné funkce jako VFP, ale nejsou s ním kompatibilní na úrovni operačních kódů .
Bezpečnostní rozšíření uváděná na trh jako TrustZone Technology se nacházejí v ARMv6KZ a dalších novějších architekturách profilovaných aplikací. Poskytuje levnou alternativu k přidání vyhrazeného bezpečnostního jádra tím, že poskytuje 2 vCPU podporované řízením přístupu k hardwaru. To umožňuje jádru aplikace přepínat mezi dvěma stavy nazývanými „světy“ (aby nedošlo k záměně s případnými názvy domén), aby se zabránilo úniku informací z důležitějšího světa do méně důležitého. Tento přepínač světa je obvykle ortogonální ke všem ostatním schopnostem procesoru. Každý svět tak může běžet nezávisle na ostatních světech pomocí stejného jádra. Paměť a periferie jsou vyrobeny tak, aby vyhovovaly světu jádra, a lze je použít k získání kontroly přístupu k tajemstvím a kódům jádra. Typické aplikace TrustZone Technology by měly provozovat plný operační systém v méně důležitém světě a kompaktní, pro zabezpečení specifický kód v důležitějším světě, což umožňuje správě digitálních práv mnohem větší kontrolu nad používáním médií na zařízeních založených na ARM a brání neoprávněnému přístupu k zařízení..
V praxi, protože konkrétní detaily implementace TrustZone zůstávají majetkem společnosti a nejsou zveřejněny, zůstává nejasné, jaká úroveň zabezpečení je pro tento model hrozby zaručena.
Všechny moderní procesory ARM mají ladicí hardware, protože bez nich by softwarové debuggery nemohly provádět ty nejzákladnější operace, jako je zastavení, odsazení, nastavení bodů přerušení po restartu.
Architektura ARMv7 definuje základní funkce ladění na architektonické úrovni. Patří mezi ně body přerušení, sledovací body a provádění příkazů v režimu ladění. Takové nástroje byly k dispozici také s modulem ladění EmbeddedICE. Podporovány jsou oba režimy – zastavení a kontrola. Skutečný transportní mechanismus, který se používá pro přístup k ladicím nástrojům, není architektonicky specifikován, ale implementace obvykle zahrnuje podporu JTAG .
Existuje samostatná architektura ladění "kernel view", která není architektonicky vyžadována procesory ARMv7.
ARM poskytuje 31 32bitových obecných registrů . V závislosti na režimu a stavu procesoru má uživatel přístup pouze k přesně definované sadě registrů. Ve stavu ARM má vývojář neustále k dispozici 17 registrů:
Ve všech režimech kromě uživatelského a systémového režimu je k dispozici také registr stavu uloženého programu (SPSR). Po výskytu výjimky se registr CPSR uloží do SPSR. Stav procesoru (režim, stav; příznaky aritmetiky, logické operace, povolení přerušení) je tedy pevně stanoven v okamžiku bezprostředně před přerušením [52] .
usr | sys | svc | abt | a | 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 |
Registrovat aliasy:
reg. | funkt. | argumenty | vars | GCC | Komentář |
---|---|---|---|---|---|
R0 | a1 | aN - argument funkce | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - proměnná registru | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Statický základní registr | ||
R10 | v7 | SL | SL-? | ||
R11 | v8 | FP | FP - adresa rámce zásobníku ? | ||
R12 | IP | IP - Registr stíracích volání v rámci procedury | |||
R13 | SP | ukazatel zásobníku | |||
R14 | LR | Odkaz na registr | |||
R15 | PC | Počítadlo programů |
Architektura ARM používá jediný adresní prostor [53] . V praxi toto schéma znamená, že adresa může ukazovat na paměť ( RAM nebo ROM ) nebo I/O porty, na rozdíl od schématu, ve kterém I/O porty mají svůj vlastní adresní prostor.
Většina stávajících produktů využívajících architekturu ARM jsou kompletní systémy na čipu, které mají schopnost pracovat s externí dynamickou pamětí s náhodným přístupem ( DRAM ) a obsahují řadiče pro mnoho periferních sběrnic, zejména USB , IIC (I2C), zvuková zařízení, řadiče pro práci s flash médii standardů SD a MMC , řadiče zobrazení a digitální fotoaparáty (MIPI).
Všechny procesory mají obecné vstupní/výstupní (GPIO) linky. Ve spotřebitelských zařízeních k nim lze připojit tlačítka „rychlého startu“ a ovládání hlasitosti, signální LED diody, klávesnici atd.
Po zapnutí systému založeného na procesoru ARM se z paměti ROM načte bootloader a adresa jeho vstupního bodu. Zavaděč předinicializuje systém, čímž plní stejnou roli, jakou plní BIOS na systémech x86, poté může načíst buď zavaděč systému nebo přímo OS.
Neexistuje jediný standard pro zavaděč. Lze použít zavaděč U-Boot a pro 64bitové ARMv8 se často používá UEFI. Mnoho aplikací používá své vlastní zavaděče.
Architektura ARM je podporována mnoha operačními systémy. Nejpoužívanější: Linux (včetně Androidu ), iOS , Windows Phone .
Na systémech s procesorem ARM mohou pracovat různé operační systémy Unix a Unixu: Linux (mnoho distribucí), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54 ] ), Firefox OS , macOS Big Sur .
Platforma také uvádí na trh samostatné varianty rodiny Windows : Windows CE , Windows Phone , Windows RT , Windows 10 .
ARM navíc podporují: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .
Mikrokontroléry | ||||||||
---|---|---|---|---|---|---|---|---|
Architektura |
| |||||||
Výrobci |
| |||||||
Komponenty | ||||||||
Obvod |
| |||||||
Rozhraní | ||||||||
OS | ||||||||
Programování |
|
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |
Architektury procesorů založené na technologiích RISC | |
---|---|