KAR | |
---|---|
| |
Fejlesztő | ARM Limited |
Bit mélység | ARMv7 64/32 bit, ARMv8-ig csak 64 bit |
Bemutatták | 1985 |
Építészet | RISC |
Típusú | lajstrom-nyilvántartás |
SK kódolás |
ARMv8: rögzített (64 bit), kivéve ARMv7 kódkompatibilitási módban ARMv7/6: vegyes (32 és 16 bit igazítva) ARMv3/2: rögzített (32 bit) |
Átmenet végrehajtása | feltételjelzők szerint |
Byte sorrend | Kapcsolható (big-endian), általában alacsonyról magasra (little-endian) |
Kiterjesztések |
NEON, Thumb-2 (kötelező az ARMv7 óta), Jazelle, VFPv4-D16, VFPv4 (mind kötelező az ARMv8-ban) Mikrokontrollereken: FPv4-SP |
Médiafájlok a Wikimedia Commons oldalon |
ARM architektúra (az angol Advanced RISC Machine -ből - egy fejlett RISC gép; néha - Acorn RISC Machine ) - parancsok rendszere és leírások családja, valamint kész topológiák 32 bites és 64 bites mikroprocesszor / mikrokontroller magjaiból, amelyeket a cég fejlesztett ki. ARM Limited [1] .
A kész ARM-magtopológiák licencesei között szerepel az AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (2006. június 27-ig), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , QualcomTek , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .
Jelentős processzorcsaládok: ARM7 , ARM9 , ARM11 és Cortex [3] [4] .
Sok licenctulajdonos megtervezi saját alapvető topológiáit az ARM utasításkészlet alapján: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait és Kryo in Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 és HiSilicon K3 .
2006-ban az évente eladott több mint egymilliárd mobiltelefon körülbelül 98%-a volt felszerelve legalább egy ARM processzorral [5] . 2009-ben az összes beágyazott 32 bites processzor 90%-át ARM processzorok tették ki [6] . Az ARM processzorokat széles körben használják a fogyasztói elektronikában, beleértve az okostelefonokat, mobiltelefonokat és lejátszókat, kézi játékkonzolokat, számológépeket, okosórákat és számítógép-perifériákat, például merevlemezeket vagy útválasztókat.
Ezek a processzorok alacsony fogyasztásúak, ezért széles körben használják a beágyazott rendszerekben , és uralják a mobileszközök piacát, amelynél ez a tényező kritikus.
Miután némi sikert ért el a BBC Micro számítógéppel, a brit Acorn Computers cég arra gondolt, hogy a viszonylag gyenge MOS Technology 6502 processzorokról nagyobb teljesítményű megoldásokra tér át, és ugyanazzal a BBC Micro platformmal lép be az üzleti számítógépek piacára . Az olyan processzorok, mint a National Semiconductor Motorola 68000 és 32016 nem voltak erre alkalmasak, a 6502 pedig nem volt elég erős ahhoz, hogy támogassa a grafikus felhasználói felületet [7] .
A cégnek teljesen új architektúrára volt szüksége, miután az összes rendelkezésére álló processzort tesztelte, és nem találta hatékonynak. Az Acorn komolyan gondolta saját processzorának fejlesztését, és mérnökeik elkezdték tanulmányozni a Berkeley-i Kaliforniai Egyetemen kifejlesztett RISC projekt dokumentációját . Úgy gondolták, hogy mivel egy diákcsoportnak sikerült egy teljesen versenyképes processzort létrehoznia, a mérnökeiknek nem lesz nehéz. Egy utazás a Western Design Centerbe (Arizona) megmutatta Steve Ferbernek és Sophie Wilsonnak (akkori nevén Roger [8] ), hogy nincs szükségük hihetetlen erőforrásokra a terv megvalósításához.
Wilson hozzálátott az utasításkészlet fejlesztéséhez az új processzor szimulációjának elkészítésével egy BBC Micro számítógépen. Ebben elért sikere meggyőzte az Acorn mérnökeit, hogy jó úton járnak. Mielőtt azonban továbbléphettek volna, több erőforrásra volt szükségük, ezért ideje volt Wilsonnak elmennie Herman Hauser Acorn vezérigazgatójához , és elmagyarázni, mi történik. Miután megadta az utat, egy kis csapat gyűlt össze, hogy a Wilson-modellt hardverben implementálják.
A hivatalos Acorn RISC Machine projekt 1983 októberében indult. A VLSI Technology Acornt már szállította ROM chipekkel és néhány egyedi integrált áramkörrel A fejlesztést Wilson és Ferber vezette . Fő céljuk a MOS Technology 6502 alacsony késleltetésű megszakításkezelésének elérése volt. A 6502 - ből átvett memóriaelérési architektúra lehetővé tette a fejlesztők számára, hogy jó teljesítményt érjenek el a DMA modul költséges megvalósítása nélkül . Az első processzort a VLSI gyártotta 1985. április 26-án – ekkor kezdett el először működni, és az ARM1 nevet kapta. Az első sorozatgyártású processzorok ARM2 néven a következő évben váltak elérhetővé.
Első felhasználása a BBC Micro második processzora volt , ahol szimulációs szoftverek fejlesztésében használták, amivel kiegészítették a számítógép támogatási chipjeit, valamint felgyorsították az ARM2 fejlesztésénél használt CAD szoftvert. Wilson optimalizálta az ARM utasításkészletet a BBC BASIC futtatására . Az eredeti célt, hogy egy összkaros számítógépet hozzon létre, 1987-ben sikerült elérni az Acorn Archimedes kiadásával.
Az ARM projekt körüli légkör annyira titkos volt, hogy amikor Olivetti 1985-ben az Acorn többségi részesedésének megvásárlásáról tárgyalt , a tárgyalások végéig nem beszéltek a projekt fejlesztéséről. 1992-ben az Acorn ismét elnyerte a Queen's Award for Enterprise-díjat az ARM-ért.
Az ARM2-nek 32 bites adatbusza, 26 bites címtere és 16 32 bites regisztere volt. A programkódnak az első 64 megabájt memóriában kellett lennie, a programszámlálót pedig 26 bitre korlátozták, mivel egy 32 bites regiszter felső 4 és alsó 2 bitje szolgált zászlóként. Az ARM2 a világ talán legegyszerűbb 32 bites processzorává vált, mindössze 30 ezer tranzisztorral (összehasonlításképpen a 6 évvel korábban készült Motorola 68000 -es processzorban 68 ezer tranzisztor volt). Ennek az egyszerűségnek a nagy része a mikrokód hiányának (amely a 68000-ben a vágófelület egynegyedét és egyharmadát foglalja el) és a gyorsítótár hiányának tudható be , ahogy az akkori processzoroknál is előfordult. Ez az egyszerűség alacsony energiaköltségekhez vezetett, miközben az ARM sokkal termelékenyebb volt, mint az Intel 80286 . Utódja, az ARM3 processzor már 4 KB-os gyorsítótárral rendelkezett, ami még tovább növelte a teljesítményt.
Az 1980-as évek végén az Apple Computer és a VLSI Technology elkezdett együttműködni az Acorn Computers-szel az ARM mag új verzióin. A munka annyira fontos volt, hogy az Acorn 1990-ben egy új, Advanced RISC Machines nevű céggé vonta össze a fejlesztőcsapatot . Emiatt az ARM-et néha Advanced RISC Machines néven rövidítik az Acorn RISC Machine helyett . Az Advanced RISC Machinesből ARM lett, amikor anyavállalata, az ARM Holdings 1998-ban bekerült a londoni tőzsdére és a NASDAQ -ra.
Az új Apple-ARM munka végül ARM6-tá fejlődött, amelyet először 1992-ben adtak ki. Az Apple az ARM6-alapú ARM610 processzort használta Apple Newton PDA-termékének alapjául. 1994-ben az Acorn az ARM610-et kezdte használni RISC PC számítógépeinek fő processzoraként . A DEC vásárolt egy licencet az ARM6 architektúrához is (kicsit zavart okozva, mivel Alpha processzorokat is készítettek ), és elkezdte a StrongARM gyártását. 233 MHz-en ez a processzor mindössze 1 watt teljesítményt igényelt (a későbbi verziók sokkal kevesebbet). Az Intel később egy per eredményeként megszerezte ennek a műnek a jogait. Az Intel megragadta az alkalmat, hogy kiegészítse régi I960-as sorozatát a StrongARM processzorral, majd később XScale márkanéven kifejlesztette a mag verzióját , amelyet később eladtak a Marvellnek .
Az ARM mag a változtatások után is változatlan maradt. Az ARM2-ben 30 000 tranzisztor volt.
A család processzorai alapvetően a tömeges mobiltermékek (mobiltelefonok, PDA-k) és a közepes és nagy teljesítményű beágyazott rendszerek (a hálózati útválasztóktól és hozzáférési pontoktól a tévékig) szegmensét hódították meg. Egyes cégek bejelentik az ARM processzorok klaszterein alapuló hatékony szerverek fejlesztését [10] , de ezek egyelőre csak kísérleti projektek 32 bites architektúrával [11] .
A lista korábbi vezetője, az IBM (kiszolgálócsomópontok), a Mellanox (interconnect) és az Nvidia (grafikusgyorsítók) által közösen fejlesztett , az Oak Ridge National Laboratory -ban telepített Summit szuperszámítógép (OLCF-4) lett a második, elveszítette a megtisztelő első helyezést ért el az új japán csúcsrendszer, a Fugaku ( orosz Fugaku ), amely 415,5 petaflops High Performance / Highly Parallel Linpack (HPL) eredményt mutatott. Ez a mutató 2,8-szor haladja meg a Summit képességeit. A Fugakut a Fujitsu 48 magos A64FX SoC-je hajtja, így ez az első olyan rendszer a TOP500-as listán, amely ARM processzorokat tartalmaz. Egyszeri vagy alacsonyabb pontossággal, amelyet gyakran használnak gépi tanulási és mesterséges intelligencia feladatokhoz, a Fugaku több mint 1000 petaflopnál éri el a csúcsot (1 exaflop). Az új rendszert a RIKEN Számítástechnikai Tudományos Központban (R-CCS) telepítik Kobe-ban, Japánban.
Az ARM processzorok számos családja jelenleg jelentős:
2010-ben a gyártó bejelentette az Eagle kódnevű Cortex-A15 processzorokat, az ARM állítása szerint a Cortex A15 mag 40 százalékkal gyorsabb ugyanazon a frekvencián, mint a Cortex-A9 mag , chipenként azonos számú maggal [12] . A 28 nm-es folyamattechnológiával gyártott termék 4 maggal rendelkezik, akár 2,5 GHz-es frekvencián is működhet, és számos modern operációs rendszer támogatja majd [13] [14] .
A Marvell népszerű xScale mikroprocesszorcsaládja (2007. június 27-ig – Intel [15] ) tulajdonképpen az ARM9 architektúra kiterjesztése , kiegészítve az Intel által kifejezetten a multimédiás alkalmazások támogatására kifejlesztett Wireless MMX utasításkészlettel.
ARM kernel verziók (táblázat)Kernel család | Építészeti változat | Sejtmag | Funkciók | Gyorsítótár (I/D)/ MMU | Tipikus MIPS @ MHz | Használat |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (elavult) | ARM1 | Nem | ARM kiértékelő rendszer BBC Micro processzor | ||
ARM2 | ARMv2 (elavult) | ARM2 | MUL parancs hozzáadva (szorzás) | Nem | 4 MIPS @ 8 MHz 0,33 DMIPS /MHz |
Makk Archimedes , Sakkgép |
ARMv2a (elavult) | ARM250 | Integrált MEMC (MMU), GPU, hozzáadott SWP és SWPB (csere) parancsok | Nem, MEMC1a | 7 MIPS @ 12 MHz | Makk Arkhimédész | |
ARM3 | ARMv2a (elavult) | ARM2a | Először használt gyorsítótár | 4 KB összesen | 12 MIPS @ 25 MHz 0,50 DMIPS/MHz |
Makk Arkhimédész |
ARM6 | ARMv3 (elavult) | ARM60 | 32 bites (nem pedig 26 bites) memóriacímtér, amelyet először vezettek be | Nem | 10 MIPS @ 12 MHz | 3DO interaktív többjátékos , Zarlink GPS vevő |
ARM600 | Az ARM60-hoz hasonlóan az FPA10 lebegőpontos matematikai társprocesszor | 4 KB összesen | 28 MIPS @ 33 MHz | |||
ARM610 | Mint az ARM60, gyorsítótár, nincs társprocesszor busz | 4 KB összesen | 17 MIPS @ 20 MHz 0,65 DMIPS/MHz |
Acorn Risc PC 600 , Apple Newton 100 sorozat | ||
ARM7 | ARMv3 (elavult) | ARM700 | 8 KB összesen | 40 MHz | Acorn Risc PC prototípus CPU kártya | |
ARM710 | Mint az ARM700 | 8 KB összesen | 40 MHz | Acorn Risc PC 700 | ||
ARM710a | Mint az ARM700 | 8 KB összesen | 40MHz 0,68DMIPS /MHz |
Acorn Risc PC 700 , Apple eMate 300 | ||
ARM7100 | Az ARM710a-hoz hasonlóan az integrált SoC | 8 KB összesen | 18 MHz | Psion Series 5 | ||
ARM7500 | Az ARM710a-hoz hasonlóan az integrált SoC. | 4 KB összesen | 40 MHz | Acorn A7000 | ||
ARM7500FE | Az ARM7500-hoz hasonlóan az "FE" FPA és EDO memóriavezérlőket adott hozzá | 4 KB összesen | 56MHz 0,73DMIPS/ MHz |
Acorn A7000+ hálózati számítógép | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3 fokozatú szállítószalag, hüvelykujj üzemmód | Nem | 15 MIPS @ 16,8 MHz 63 DMIPS @ 70 MHz |
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7, Juice Box , NXP Semiconductors LPC2000 és LH754xx , Actel 's CoreMP7 |
ARM710T | Mint az ARM7TDMI, gyorsítótár | 8 KB megosztott, MMU | 36 MIPS @ 40 MHz | Psion Series 5mx , Psion Revo /Revo Plus/Diamond Mako | ||
ARM720T | Mint az ARM7TDMI, gyorsítótár | 8 KB megosztott , MMU Fast Context Switch bővítménnyel | 60 MIPS @ 59,8 MHz | Zipit Wireless Messenger , NXP Semiconductors LH7952x | ||
ARM740T | Mint az ARM7TDMI, gyorsítótár | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5 fokozatú folyamat, hüvelykujj, Jazelle DBX, fejlett DSP-parancsok | egyik sem | |||
Erős kar | ARMv4 | SA-110 | 16KB/16KB MMU | 203MHz 1.0DMIPS/MHz |
Apple Newton 2x00 sorozat, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS | |
SA-1100 | Az SA-110-hez hasonlóan az integrált SoC | 16KB/8KB MMU | 203 MHz | Psion netBook | ||
SA-1110 | Az SA-110-hez hasonlóan az integrált SoC | 16KB/8KB MMU | 206 MHz | LART (számítógép) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 sorozat , Palm Zire 31 | ||
ARM8 | ARMv4 | ARM810 [16] | 5 fokozatú csővezeték, statikus elágazás előrejelzés, dupla sávszélességű memória | 8 KB egységes, MMU | 84 MIPS @ 72 MHz 1,16 DMIPS/MHz |
Acorn Risc PC prototípus CPU kártya |
ARM9TDMI | ARMv4T | ARM9TDMI | 5 fokozatú szállítószalag, hüvelykujj | egyik sem | ||
ARM920T | Mint az ARM9TDMI, gyorsítótár | 16 KB/16 KB, MMU FCSE-vel (Fast Context Switch Extension) [17] | 200 MIPS @ 180 MHz | Armadillo , Atmel AT91SAM 9, GP32 , GP2X (első mag), Tapwave Zodiac ( Motorola i. MX1), Hewlett Packard HP-49/50 számológépek , Sun SPOT , Cirrus Logic EP9302, EP9307, Tyrrus Logic EP9302, EP9307, Tyúk 2012, Samsung S9312T, EP4N (S3) , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( TomTom navigációs készülékek) [19] | ||
ARM922T | Mint az ARM9TDMI, gyorsítótár | 8KB/8KB MMU | NXP félvezetők LH7A40x | |||
ARM940T | Mint az ARM9TDMI, gyorsítótár | 4 KB/4 KB MPU | GP2X (második mag), Meizu M6 Mini Player [20] [21] | |||
ARM9E | ARMv5TE | ARM946E-S | Thumb, Továbbfejlesztett DSP utasítások, gyorsítótárak | változó, szorosan csatolt memóriák, MPU | Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , Conexant 802.11 chipek, Samsung S5L2010 | |
ARM966E-S | Thumb, Továbbfejlesztett DSP utasítások | nincs gyorsítótár, TCM-ek | STM STR91xF, beleértve az Ethernetet [23] | |||
ARM968E-S | Mint az ARM966E-S | nincs gyorsítótár, TCM-ek | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Thumb, Jazelle DBX, továbbfejlesztett DSP utasítások | változók, TCM-ek, MMU-k | 220 MIPS @ 200 MHz | Mobiltelefonok: Sony Ericsson (K, W sorozat); Siemens és Benq (x65-ös sorozat és újabb); 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 – dokumentálatlan mag az ATi Hollywood grafikus chipben, amelyet a Wii-ben használt ] Samsung S3 használt [C24 A Squeezebox Duet vezérlője. Squeezebox Radio ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telechipek TCC7801, TCC7901; ZiiLABS ZMS-05 rendszer chipen; Western Digital MyBook I World Edition | |
ARMv5TE | ARM996HS | Óra nélküli processzor, mint az ARM966E-S | nincs gyorsítótár, TCM, MPU | |||
ARM10E | ARMv5TE | ARM1020E | 6 fokozatú csővezeték, hüvelykujj, továbbfejlesztett DSP-utasítások, (VFP) | 32KB/32KB MMU | ||
ARM1022E | Mint az ARM1020E | 16KB/16KB MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Thumb, Jazelle DBX, továbbfejlesztett DSP utasítások, (VFP) | változó, MMU vagy MPU | Western Digital MyBook II World Edition; Conexant so4610 és so4615 ADSL SoC | ||
Xscale | ARMv5TE | 80200/IOP310/IOP315 | I/O processzor, hüvelykujj, továbbfejlesztett DSP utasítások | |||
80219 | 400/600 MHz | Thecus N2100
| ||||
IOP321 | 600 Bogo Mips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 mag, RAID gyorsítás | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Alkalmazásprocesszor, 7 fokozatú pipeline | PXA210: 133 és 200 MHz, PXA250: 200, 300 és 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 és 400 MHz | Sony CLIÉ NX73V, NX80V | ||||
PXA26x | alapértelmezett 400 MHz, 624 MHz-ig | Palm Tungsten T3 | ||||
PXA27x | Alkalmazásfeldolgozó | 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 és x51 sorozat, Motorola Q , Palm Greenphone ,, Tolatech Balloon3 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é G500, Toshiba Portégé G500, Ziq Pa 7 , HP 5 Pa 5, Toshiba Portégé G960 üzleti navigátor | ||
PXA800(E)F | ||||||
PXA3XX (kódnév: "Monahans") | A PXA31x hardveres grafikus gyorsítóval rendelkezik | 32KB/32KB L1, TCM, MMU | 800 MIPS @ 624 MHz | nagyképernyős Alex | ||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Vezérlő sík processzor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S [26] | 8 fokozatú csővezeték, SIMD , Thumb, Jazelle DBX, (VFP), továbbfejlesztett DSP utasítások | változó, 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 (beépített ARM926EJ-S koprocesszorral@274 GMHzfiish, E, ten HTClofiishT IIN , HTC Nike ), Freescale i.MX31 (az eredeti Zune 30 GB-ban és a Toshiba Gigabeat S-ben használt), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic0 Classic , Nokia 61 Qualcomm MSM7201A a HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 , HTC SGH és Motorola ZN5 Classic , HTC SGH és Motorola ZN5 Classic telefonokon . i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28] |
ARMv6T2 | ARM1156T2(F)-S | 9 fokozatú csővezeték, SIMD , Thumb-2, (VFP), továbbfejlesztett DSP utasítások | változó, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Mint az ARM1136EJ(F)-S | változó, MMU+TrustZone | Apple iPhone (eredeti és 3G) , Apple iPod touch (1. és 2. generáció) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telechipek TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (pl . Samsung Moment ), S3C6430 [31] | ||
ARMv6K | ARM11MPCore | Mint az ARM1136EJ(F)-S, 1-4 magos SMP | változó, MMU | Nvidia APX 2500 | ||
Kernel család | Építészeti változat | Sejtmag | Funkciók | Gyorsítótár (I/D)/MMU | Tipikus MIPS @ MHz | Alkalmazások |
Cortex | ARMv7-A | Cortex-A5 | VFP, NEON, Jazelle RCT és DBX, Thumb-2, 8 lépcsős csővezeték, rendelésre, 1-4 magos SMP | változó (L1), MMU+TrustZone | akár 1500 (1,5 DMIPS/MHz) | "Sparrow" (ARM kódnév) [32] [33] [34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13 fokozatú csővezeték, rendelésben, 2 dekóder [35] | változó (L1+L2), MMU+TrustZone | 2000-ig (2,0 DMIPS/MHz 600 MHz-től 1 GHz-nél nagyobb sebességig) | TI OMAP3xxx sorozat , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3. generációs) , Apple iPad ( Apple A4 -es processzor), Apple iPhone 4 ( Apple A4 -es processzor), 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 , Zii0LABS rendszer chipen, Boxchip A13 | ||
Cortex-A9 | Alkalmazásprofil, (VFP), (NEON), Jazelle RCT és DBX, Thumb-2, Rendkívüli spekulatív probléma szuperskalár (2 dekóder); 9-12 [35] csővezeték szakaszai | MMU+TrustZone | 2,5DMIPS/MHz | Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Mint a Cortex-A9, 1-4 magos SMP | MMU+TrustZone | 10 000 DMIPS @ 2 GHz a teljesítményoptimalizált TSMC 40G-n (négymagos?) (2,5 DMIPS/MHz magonként) | PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 mag SMP; Rendkívüli szuperskalár (3 dekóder); 15+ szállítószalag fokozat [35] ; VFPv4, NEON [36] | MMU, LPAE | 3,5DMIPS/MHz/mag; 1,0 GHz – 2,5 GHz (@ 28 nm [35] ) | |||
Cortex-A7 MPCore [37] | FPU, NEON; Rendben (1 dekóder); 8 fokozatú szállítószalag. | 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) | Beágyazott profil, Thumb-2, (FPU) | változó gyorsítótár, opcionális MPU | 600 DMIPS @ 475 MHz | A Broadcom a TI TMS570 felhasználója | |
ARMv7-ME | Cortex-M4 (kódnevén "Merlin") [38] | Mikrokontroller profil, hüvelykujj és hüvelykujj-2, FPU. Hardver MAC, SIMD és osztó utasítások | MPU opcionális | 1,25 DMIPS/MHz | NXP Semiconductors , STM32 , TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Mikrokontroller profil, csak Thumb-2. hardverfelosztási utasítás | nincs gyorsítótár, opcionális MPU | 125 DMIPS 100 MHz-en | TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Ember EM3xx Series , Atmel AT91SAM 3 , Europe Technologies EasyBCU , Energy Micro EFM32 , Actel ' s SmartFusion 1 9 , Milan68BE92 | |
ARMv6-M | Cortex-M0 (kódnév: "Swift") [39] | Mikrokontroller profil, Thumb-2 részhalmaz (16 bites hüvelykujj utasítások és BL, MRS, MSR, ISB, DSB és DMB) | Nincs gyorsítótár | 0,9DMIPS/MHz | NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3] | |
Cortex-M1 | FPGA célzott, mikrovezérlő profil, Thumb-2 részhalmaz (16 bites hüvelykujj utasítások és BL, MRS, MSR, ISB, DSB és DMB) | Nincs, a szorosan csatolt memória opcionális | Akár 136 DMIPS @ 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz elérhető FPGA-függő) | Az Actel ProASIC3, ProASIC3L, IGLOO és Fusion PSC eszközök , Altera Cyclone III , egyéb FPGA termékek is támogatottak, pl . a Synplicity | ||
Kernel család | Építészeti változat | Sejtmag | Funkciók | Gyorsítótár (I/D)/ MMU | Tipikus MIPS @ MHz | Alkalmazások |
Régóta létezik egy ARM architektúra referencia útmutató, amely behatárolja az ARM által támogatott összes interfész típust, mivel az egyes processzortípusok megvalósítási részletei változhatnak. Az architektúra az idők során fejlődött, és az ARMv7 óta 3 profilt határoztak meg:
A profilok kevesebb parancsot támogathatnak (bizonyos típusú parancsokat).
A processzor a következő üzemmódok egyikében lehet:
A processzor mód váltása megfelelő kivétel esetén vagy az állapotregiszter módosításával történik.
Annak érdekében, hogy az eszköz tiszta, egyszerű és gyors legyen, az eredeti ARM-gyártás mikrokód nélkül készült, mint az Acorn Computers korábbi mikroszámítógépeiben használt egyszerűbb, 8 bites 6502-es processzor .
ARM utasításkészletAz a mód, amelyben a 32 bites utasításkészlet végrehajtásra kerül.
ARM alap utasításkészlet: [49]
ADC, ADD, ÉS, 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
Thumb parancskészletA kódsűrűség javítása érdekében az ARM7TDMI-vel kezdődő processzorok "hüvelykujj" móddal vannak felszerelve. Ebben a módban a processzor egy alternatív 16 bites utasításkészletet hajt végre. A legtöbb ilyen 16 bites utasítást normál ARM utasításokká fordítják le. Az utasítások hosszának csökkentését egyes operandusok elrejtésével és a címzhetőség korlátozásával érik el a teljes ARM utasításkészlet módhoz képest.
Thumb módban a kisebb műveleti kódok kevesebb funkcióval rendelkeznek. Például csak az ágak lehetnek feltételesek, és sok műveleti kód csak a fő processzorregiszterek felére korlátozódik. A rövidebb műveleti kódok általában nagyobb kódsűrűséget eredményeznek, bár egyes műveleti kódok további utasításokat igényelnek. Olyan helyzetekben, amikor a memóriaport vagy a busz szélessége 16 bitre korlátozódik, a rövidebb hüvelykujj módú műveleti kódok sokkal gyorsabbak, mint a hagyományos 32 bites ARM műveleti kódok, mivel kevesebb kódot kell betölteni a processzorba korlátozott memóriasávszélesség mellett.
Az olyan hardverek, mint a Game Boy Advance, általában kis mennyiségű RAM-mal rendelkeznek teljes 32 bites adatcsatornával. A legtöbb művelet azonban 16 bites vagy szűkebb információs csatornán keresztül történik. Ebben az esetben érdemes Thumb kódot használni, és manuálisan optimalizálni néhány nehéz kódrészletet a teljes 32 bites ARM utasításokra való átállással.
Az első processzor hüvelykujj parancs dekóderrel az ARM7TDMI volt. Az ARM9 család összes processzora , valamint az XScale beépített hüvelykujj parancsdekóderrel rendelkezik.
Thumb-2 utasításkészletA Thumb-2 az ARM1156 magban bevezetett technológia, amelyet 2003-ban jelentettek be. Kibővíti a korlátozott 16 bites Thumb utasításkészletet további 32 bites utasításokkal, hogy az utasításkészletnek nagyobb szélességet biztosítson. A Thumb-2 célja a Thumb-szerű kódsűrűség és a 32 bites ARM utasításkészlet teljesítményének elérése. Elmondhatjuk, hogy az ARMv7-ben ez a cél megvalósult.
A Thumb-2 mind az ARM, mind a Thumb utasításokat még több utasítással bővíti, beleértve a bitmező manipulációt, a tábla elágazását és a feltételes végrehajtást. Az új "Unified Assembly Language" (UAL) támogatja az ARM és a Thumb parancsok felépítését ugyanabból a forráskódból. A Thumb ARMv7 verziói úgy néznek ki, mint az ARM kód. Ez körültekintést és az új if-then parancs használatát igényli, amely legfeljebb 4 egymást követő tesztállapot-parancs végrehajtását támogatja. A rendszer figyelmen kívül hagyja az ARM-kódba fordítás során, de parancsokat generál az ARM-kódba fordítás során. Például:
; if (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: nincs kód ... Hüvelykujj: IT utasítás ; akkor r0 = r2; MOVEQ r0 , r2 ; ARM: feltételes; Hüvelykujj: feltétel az ITE 'T'-n keresztül (akkor) ; különben r0 = r3; MOVNE r0 , r3 ; ARM: feltételes; Hüvelykujj: feltétel az ITE 'E'-n keresztül (egyéb) ; ne feledje, hogy a Thumb MOV utasításnak nincs bitje az "EQ" vagy az "NE" kódolásáhozAz összes ARMv7 betét támogatja a Thumb-2 utasításkészletet, míg néhány matrica, például a Cortex-m3, csak a Thumb-2-t támogatja. A fennmaradó Cortex és ARM11 betétek támogatják a Thumb-2 és az ARM utasításkészleteket.
Jazelle parancskészletA Jazelle egy olyan technológia, amely lehetővé teszi, hogy a Java bájtkód közvetlenül az ARM architektúrán fusson a végrehajtás harmadik állapotaként (és utasításkészletként), a szokásos ARM utasításokkal és hüvelykujj móddal együtt. A Jazelle technológia támogatását a „J” betű jelzi a processzor nevében – például ARMv5TEJ. Ezt a technológiát az ARMv6 architektúra óta támogatják, bár az újabb kernelek csak korlátozottan tartalmaznak olyan implementációkat, amelyek nem támogatják a hardveres gyorsítást.
ARMv8 és az ARM 64 bites utasításkészlete2011 végén megjelent az architektúra új verziója, az ARMv8. Bevezette az AArch64 architektúra definícióját, amelyben a 64 bites A64 utasításkészlet kerül végrehajtásra. A 32 bites parancsok támogatását A32-nek hívják, és AArch32 architektúrákon hajtják végre. A hüvelykujj-utasítások T32 módban támogatottak, csak 32 bites architektúrák használata esetén. Engedélyezett 32 bites alkalmazások futtatása 64 bites operációs rendszerben, és virtualizált 32 bites operációs rendszer futtatása 64 bites hypervisor használatával [50] . Az Applied Micro, az AMD, a Broadcom, a Calxeda, a HiSilicon, a Samsung, az STM és mások bejelentették, hogy tervezik az ARMv8 használatát. Az ARMv8-at támogató Cortex-A53 és Cortex-A57 magokat az ARM 2012. október 30-án mutatta be [51] .
Mind az AArch32, mind az AArch64 támogatja a VFPv3-at, a VFPv4-et és a fejlett SIMD -t (NEON). Hozzáadott kriptográfiai utasításokat is az AES , SHA-1 és SHA-256 használatához .
Az AArch64 jellemzői:
Az ARM architektúra a következő RISC-szolgáltatásokkal rendelkezik:
Az egyszerű kialakítás kompenzálására néhány tervezési jellemzőt alkalmaztak a modern processzorokhoz, például az Intel 80286-hoz vagy a Motorola 68020-hoz képest:
Az egyik jelentős különbség az ARM architektúra (eredeti architektúra) és a többi CPU architektúra között az úgynevezett predikáció – az utasítások feltételes végrehajtásának képessége. A "feltételes végrehajtás" alatt azt értjük, hogy az utasítás a processzorállapotjelzők aktuális állapotától függően végrehajtásra kerül vagy figyelmen kívül marad. A Thumb and Arm 64-ben a predikáció nem használatos - az első módban nincs hely a parancsban (csak 16 bit), a másodikban pedig a predikáció értelmetlen és nehéz megvalósítani szuperskaláris architektúrákon .
Míg más architektúrák esetében általában csak a feltételes ugrási utasítások rendelkeznek ezzel a tulajdonsággal, az ARM architektúrát úgy tervezték, hogy szinte minden utasítást feltételesen végrehajtson. Ezt úgy érték el, hogy egy speciális 4 bites mezőt ( predikátum ) adtak az utasításkódokhoz. Egyik értéke annak a ténynek van fenntartva, hogy az utasítást feltétel nélkül kell végrehajtani, a többi pedig a feltételek (jelzők) egyik vagy másik kombinációját kódolja. Ez egyrészt, tekintettel az utasítás korlátozott teljes hosszára, csökkentette a memóriaelérési parancsokban az eltolások kódolására rendelkezésre álló bitek számát, másrészt lehetővé tette, hogy megszabaduljunk az elágazó utasításoktól a kis kódok generálásakor. ha-blokkok.
Egy általánosan szemléltető példa az Euklidész-féle kivonás alapú algoritmus . C nyelven így néz ki:
míg ( i != j ) { if ( i > j ) { i -= j ; } másik { j = i ; } }És az ARM assemblerben - így:
hurok CMP Ri , Rj ; állítsa be az "NE" feltételt, ha (i != j), ; "GT", ha (i > j), ; vagy "LT", ha (i < j) SUBGT Ri , Ri , Rj ; ha "GT" (nagyobb, mint), i = ij; SUBLT Rj , Rj , Ri ; ha "LT" (kisebb, mint), j = ji; BNEloop ; _ ha "NE" (nem egyenlő), akkor ciklusA kódból látható, hogy a predikáció használata lehetővé tette az else és then utasításokban való elágazás teljes elkerülését. Vegye figyelembe, hogy ha Ri és Rj egyenlő, akkor a SUB utasítások egyike sem kerül végrehajtásra, így teljesen szükségtelenné válik egy ágra, amely a ciklus minden kezdetén egy while ellenőrzést hajt végre, amelyet például a SUBLE ( kisebb vagy egyenlő) utasítás .
Az egyik módja annak, hogy a Thumb kód nagyobb helymegtakarítást érjen el, pontosan az, hogy eltávolítja a 4 bites predikátumot az összes utasításból, kivéve az ágakat.
Az utasításkészlet másik jellemzője az eltolások és forgatások kombinálása egy "információfeldolgozási" utasításban (aritmetikai, logikai, regiszter-regiszter mozgás), így például a C kifejezés:
a += ( j << 2 );konvertálható egy szó és egy ciklus utasításra az ARM-ben:
ADD Ra , Ra , Rj , LSL #2Emiatt a tipikus ARM programok sűrűbbek a szokásosnál, kevesebb memória-hozzáféréssel. Így a csővezetéket sokkal hatékonyabban használják. Annak ellenére, hogy az ARM olyan sebességgel fut, amelyet sokan lassúnak tartanak, meglehetősen könnyen versenyez sok kifinomultabb CPU-architektúrával.
Az ARM processzor néhány olyan funkcióval is rendelkezik, amelyek ritkán találhatók meg más RISC architektúrákban, mint például a programszámlálóhoz viszonyított címzés (valójában az ARM programszámláló a 16 regiszter egyike), valamint a növekmény előtti és utáni címzési módok.
Egy másik figyelemre méltó jellemző, hogy néhány korai ARM processzor (az ARM7TDMI előtt) például nem rendelkezik utasításokkal a 2 bájtos számok tárolására. Így szigorúan véve lehetetlen hatékony kódot generálni, amely a várt módon viselkedik a "volatile int16_t" típusú C objektumoktól.
Az ARM7 és a korábbiak háromlépcsős csővezetékkel rendelkeznek. Ezek az átvitel, a dekódolás és a végrehajtás szakaszai. A nagyobb teljesítményű architektúrák, mint például az ARM9 , bonyolultabb folyamatokkal rendelkeznek. A Cortex-a8 13 szakaszból áll.
Az architektúra lehetőséget biztosít az utasításkészlet kiterjesztésére olyan társprocesszorok segítségével, amelyek MCR, MRC, MRRC, MCRR és hasonló utasításokkal címezhetők. A társprocesszor terület logikailag 16 társprocesszorra oszlik, amelyek számozása 0-tól 15-ig terjed, a 15. pedig néhány tipikus felügyeleti funkció számára van fenntartva, mint például a gyorsítótár-kezelés és a memóriakezelő egység működése (azokon a processzorokon, amelyek rendelkeznek ilyenekkel).
Az ARM-alapú gépeken a perifériák jellemzően úgy kapcsolódnak a processzorhoz, hogy fizikai regisztereiket leképezik az ARM-memóriában vagy a társprocesszor-memóriában, vagy a buszokhoz csatlakoztatják őket, amelyek viszont a processzorhoz kapcsolódnak. A társprocesszorokhoz való hozzáférés hosszabb késleltetésű, ezért egyes perifériákat úgy terveztek, hogy mindkét irányban elérhetők legyenek. Más esetekben a chipfejlesztők csak a társprocesszor-integrációs mechanizmust használják. Például egy képfeldolgozó motornak egy kis ARM7TDMI magból kell állnia egy társprocesszorral, amely támogatja az elemi HDTV-kódolások feldolgozásának primitív műveleteit.
Továbbfejlesztett SIMD (NEON)A fejlett SIMD kiterjesztése, más néven NEON technológia, egy kombinált 64 bites és 128 bites egyutasításos többszörös adat ( SIMD ) utasításkészlet , amely szabványosított gyorsítást biztosít a média- és jelfeldolgozó alkalmazások számára. A NEON 10 MHz-es processzorfrekvencián képes mp3 audio formátumot dekódolni , és GSM AMR (adaptív többsebességű) beszédkodekkel maximum 13 MHz-en működik. Lenyűgöző utasításkészlettel, különálló regiszterfájlokkal és hardverszinten független végrehajtó rendszerrel rendelkezik. A NEON támogatja a 8-, 16-, 32-, 64-bites egészszámú, egyszeres precíziós és lebegőpontos információkat, és SIMD-műveletekben működik hang- és videófeldolgozáshoz (grafika és játékok). A NEON SIMD-ben egyszerre legfeljebb 16 műveletet támogat.
A továbbfejlesztett SIMD egyik hátránya (vagy mondjuk jellemzője), hogy a társprocesszor a fő processzor kódjához képest meglehetősen jelentős késéssel hajtja végre a továbbfejlesztett SIMD utasításait, a késleltetés eléri a két tucat ciklust vagy többet (attól függően, hogy az építészet és a konkrét feltételek). Emiatt amikor a főprocesszor megpróbálja felhasználni a társprocesszor számítási eredményeit, a végrehajtás jelentős időre lefagy.
VFPA VFP (Vector Floating Point) technológia az ARM architektúra társprocesszorának kiterjesztése. Alacsony költségű számításokat végez egyszeres/dupla pontosságú lebegőpontos számokon, amelyek teljes mértékben megfelelnek az ANSI/IEEE Std 754-1985 bináris lebegőpontos aritmetikai szabványnak . A VFP lebegőpontos számításokat végez számos alkalmazáshoz, például PDA-k, okostelefonok, hangtömörítés, 3D grafika és digitális hang, valamint nyomtatók és set-top boxok számára. A VFP architektúra támogatja a rövid vektoros utasítások végrehajtását is. De mivel a processzor szekvenciálisan hajtja végre a műveleteket a vektor minden elemén, a VFP nem nevezhető valódi SIMD utasításkészletnek. Ez a mód hasznos lehet grafikus és jelfeldolgozó alkalmazásokban, mivel csökkenti a kód méretét és az utasításgenerálást.
Az ARM processzorokon található egyéb lebegőpontos és/vagy SIMD társprocesszorok közé tartozik az FPA , FPE , iwMMXt . Ugyanazokat a funkciókat biztosítják, mint a VFP, de nem kompatibilisek vele opcode szinten .
A TrustZone Technology néven forgalmazott biztonsági bővítmények az ARMv6KZ-ben és más újabb alkalmazásprofil architektúrákban találhatók. A hardveres hozzáférés-vezérléssel támogatott 2 vCPU-val olcsó alternatívát kínál egy dedikált biztonsági motor hozzáadásához. Ez lehetővé teszi az alkalmazásmag számára, hogy váltson két "világnak" nevezett állapot között (a lehetséges domain nevekkel való összetéveszthetőség elkerülése érdekében), hogy megakadályozza, hogy információ szivárogjon a fontosabb világból a kevésbé fontos világba. Ez a világváltás általában ortogonális az összes többi processzor-képességre. Így minden világ futhat függetlenül a többi világtól, ugyanazt a magot használva. A memória és a perifériák a kernel világához illeszkednek, és ezt használhatják a rendszermag titkaihoz és kódjaihoz való hozzáférés szabályozására. A tipikus TrustZone technológiai alkalmazásoknak teljes operációs rendszert kell futtatniuk a kevésbé fontos világban, és kompakt, biztonság-specifikus kódot a fontosabb világban, lehetővé téve a Digital Rights Management számára, hogy sokkal jobban szabályozza a médiahasználatot az ARM-alapú eszközökön, és megakadályozza az illetéktelen hozzáférést a készülék..
A gyakorlatban, mivel a TrustZone megvalósításának konkrét részletei a vállalat tulajdonában maradnak, és nem hozzák nyilvánosságra, továbbra sem világos, hogy ez a fenyegetési modell milyen szintű biztonságot garantál.
Minden modern ARM processzor rendelkezik hibakereső hardverrel, mert nélkülük a szoftveres hibakeresők nem tudnák elvégezni a legalapvetőbb műveleteket, mint például a leállítás, behúzás, töréspontok beállítása újraindítás után.
Az ARMv7 architektúra alapvető hibakeresési funkciókat határoz meg az architektúra szintjén. Ide tartoznak a töréspontok, figyelési pontok és a parancsok végrehajtása hibakeresési módban. Ilyen eszközök az EmbeddedICE hibakereső modullal is elérhetőek voltak. Mindkét mód támogatott – leállítás és áttekintés. A hibakereső eszközök eléréséhez használt tényleges szállítási mechanizmus nincs architekturálisan meghatározva, de a megvalósítás jellemzően JTAG -támogatást tartalmaz .
Van egy külön "kernelnézet" hibakereső architektúra, amelyre az ARMv7 processzorok architekturálisan nem szükségesek.
Az ARM 31 32 bites általános célú regisztert biztosít. A processzor üzemmódjától és állapotától függően a felhasználó csak egy szigorúan meghatározott regiszterkészlethez férhet hozzá. ARM állapotban 17 regiszter áll folyamatosan a fejlesztő rendelkezésére:
A Felhasználói mód és a Rendszer mód kivételével minden módban elérhető a Mentett programállapot-regiszter (SPSR). Kivétel esetén a CPSR regiszter az SPSR-ben kerül tárolásra. Így a processzor állapota (mód, állapot; aritmetikai, logikai műveletek zászlói, megszakítás engedélyezése) a megszakítás előtti pillanatban rögzül [52] .
usr | sys | svc | kb | und | 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 |
Álnevek regisztrálása:
reg. | funkt. | args | vars | GCC | Megjegyzés |
---|---|---|---|---|---|
R0 | a1 | aN - függvény argumentum | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - regiszterváltozó | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Statikus alapregiszter | ||
R10 | v7 | SL | SL-? | ||
R11 | v8 | FP | FP - Stack frame cím ? | ||
R12 | IP | IP - Eljáráson belüli hívások scratch regisztere | |||
R13 | SP | veremmutató | |||
R14 | LR | Linkregiszter | |||
R15 | PC | Program számláló |
Az ARM architektúra egyetlen címteret használ [53] . A gyakorlatban ez a séma azt jelenti, hogy egy cím mutathat memória ( RAM vagy ROM ) vagy I/O portokra, szemben azzal a sémával, amelyben az I/O portoknak saját címterük van.
Az ARM architektúrát használó meglévő termékek többsége teljes rendszer egy chipen, amelyek képesek külső dinamikus véletlen hozzáférésű memóriával ( DRAM ) dolgozni, és tartalmaznak vezérlőket számos perifériabuszhoz, különösen USB , IIC (I2C), hangeszközök, vezérlők az SD és MMC szabványú flash adathordozókkal , kijelzővezérlőkkel és digitális kamerákkal (MIPI) való munkához.
Minden processzor általános célú bemeneti/kimeneti (GPIO) vonallal rendelkezik. A fogyasztói készülékekben „gyorsindítás” és hangerőszabályzó gombok, jelző LED-ek, billentyűzet stb.
Az ARM processzoron alapuló rendszer bekapcsolása után a rendszertöltő és belépési pontjának címe betöltődik a ROM memóriából. A rendszerbetöltő előzetesen inicializálja a rendszert, így ugyanazt a szerepet tölti be, mint amit a BIOS az x86-os rendszereken, ezután akár a rendszerbetöltőt, akár az operációs rendszert közvetlenül betöltheti.
A rendszerbetöltőre nincs egységes szabvány. U-Boot rendszerbetöltő használható , és az UEFI-t gyakran használják a 64 bites ARMv8-hoz. Sok alkalmazás saját betöltőt használ.
Az ARM architektúrát számos operációs rendszer támogatja. Leggyakrabban használt: Linux (beleértve az Androidot is ), iOS , Windows Phone .
Különféle Unix és Unix-szerű operációs rendszerek működhetnek ARM processzorral rendelkező rendszereken: Linux (sok disztribúció), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008-2009 [54 ) ] ), Firefox OS , macOS Big Sur .
A platform a Windows család külön változatait is elindítja : Windows CE , Windows Phone , Windows RT , Windows 10 .
Ezen kívül az ARM-et támogatják: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .
Mikrokontrollerek | ||||||||
---|---|---|---|---|---|---|---|---|
Építészet |
| |||||||
Gyártók |
| |||||||
Alkatrészek | ||||||||
Periféria | ||||||||
Interfészek | ||||||||
OS | ||||||||
Programozás |
|
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |
RISC technológiákon alapuló processzorarchitektúrák | |
---|---|