ARM (architektúra)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. február 10-én felülvizsgált verziótól ; az ellenőrzések 77 szerkesztést igényelnek .
KAR

A.R.M. logó
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 .

Népszerűség

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.

Történelem

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.

Acorn RISC gép: ARM2

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.

Apple, DEC, Intel: ARM6, StrongARM, XScale

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.

Az ARM technológia hatása a piacon

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.

ARM processzorok

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
  • Az Intel 80219 processzor nagy sebességű, 32 bites XScale magot tartalmaz 400 vagy 600 MHz-en 64 bites PCI-X interfésszel
  • A PCI/ PCI-X busz lehetővé teszi a Gigabit Ethernet vezérlők csatlakoztatását
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

[48]

Kernel család Építészeti változat Sejtmag Funkciók Gyorsítótár (I/D)/ MMU Tipikus MIPS @ MHz Alkalmazások

Építészet

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

Módok

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.

Parancskészlet

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észlet

Az 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észlet

A 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észlet

A 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ához

Az ö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észlet

A 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észlete

2011 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:

  • Új A64 utasításkészlet
  • 31 általános célú regiszter, mindegyik 64 bit hosszú
  • Külön SP és PC regiszterek
  • Az utasítások 32 bitesek, és sokuk megegyezik az A32-es utasításokkal
  • A legtöbb utasítás 32 bites és 64 bites argumentumokkal is működik
  • A címek 64 bitesek
  • Továbbfejlesztett SIMD (NEON).
  • 16-ról 32-re növelte a NEON, VFPv4, AES titkosítási utasításokon, SHA-n keresztül elérhető 128 bites regiszterek számát
  • Támogatja a dupla pontosságú lebegőpontos számokkal végzett számításokat (64 bites dupla)
  • Teljes IEEE 754 megfelelőség
  • Új kizárási rendszer
  • A virtuális címfordítás 48 bites formátumból a meglévő LPAE-mechanizmusok segítségével működik

RISC függvények

Az ARM architektúra a következő RISC-szolgáltatásokkal rendelkezik:

  • Betöltési/tárolási architektúra
  • Nem támogatja a nemlineáris (nem szóhoz igazított) memóriahozzáférést (most már az ARMv6 processzorok támogatják, néhány kivételtől eltekintve, és teljes mértékben az ARMv7)
  • Egységes 16x32 bites regiszterfájl
  • Rögzített utasításhosszúság (32 bit) a dekódolás egyszerűsítése érdekében a kódsűrűség csökkentésével. Később a hüvelykujj mód növelte a kódsűrűséget.
  • Egyciklusos végrehajtás

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 aritmetikai utasítások csak szükség esetén helyettesítik a feltételes kódokat
  • Egy 32 bites többregiszteres ciklikus váltó, amely teljesítményvesztés nélkül használható a legtöbb aritmetikai utasításban és címszámításban.
  • Hatékony indexelt cím módok
  • Referencia regiszter a levélfunkciók gyors hívásához
  • Egyszerű, de gyors, a megszakítási alrendszer két prioritási szintjével, engedélyezett regiszterbankokkal.

Feltételes végrehajtás

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 ciklus

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

Egyéb jellemzők

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 #2

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

A folyamat és egyéb megvalósítási szempontok

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.

Társprocesszorok

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.

VFP

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

Biztonsági bővítmények

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.

Hibakeresés

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.

Regisztrálok

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:

  • 13 általános célú regiszter (r0..r12).
  • Stack Pointer (r13) - a végrehajtott program veremmutatóját tartalmazza.
  • Linkregiszter (r14) - tartalmazza a visszatérési címet az elágazási utasításokban.
  • Program Counter (r15) - a [31:1] bitek a végrehajtott utasítás címét tartalmazzák.
  • Current Program Status Register (CPSR) – a processzor aktuális állapotát leíró jelzőket tartalmaz. Számos utasítás végrehajtásakor módosul: logikai, aritmetikai stb.

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ó

Munka a memóriával

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.

Támogatott I/O rendszerek

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 operációs rendszer indítási folyamata ARM gépeken

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.

ARM-t támogató operációs rendszer

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 .

Lásd még

  • OpenRISC  - 2000 architektúra or1k GPL implementációval
  • LEON  - az 1997-ben megjelent SPARC V8 architektúra ingyenes implementációi (GPL, LGPL)
  • Az OpenSPARC  a SPARC V9 architektúra ingyenes (GPL) megvalósítása 2005-től
  • OpenPOWER  – IBM Power architektúra , amelyet 2013-ban alapított az IBM, a Google, a Mellanox, az NVIDIA
  • A RISC-V  egy ingyenes és nyílt architektúra és utasításkészlet mikroprocesszorokhoz és mikrokontrollerekhez, 2010-ben.
  • MIPS  – utasításkészletek és MIPS architektúra

Jegyzetek

  1. Az ARM Limited kizárólag a kernelek és a hozzájuk tartozó eszközök ( fordítók , hibakereső eszközök stb.) fejlesztésével foglalkozik, pénzt keresve az architektúra külső gyártók számára történő licencelésével .
  2. Rendszer chipen 1892VM14Ya . multicore.ru Letöltve: 2018. december 28. Az eredetiből archiválva : 2018. december 29.
  3. 1 2 D. Kozlov-Kononov. A Cortex család processzormagjai. A nagy teljesítmény és az alacsony fogyasztás kombinációja Archiválva : 2013. november 24., a Wayback Machine , Electronics Magazine, no. #8/2010
  4. Bevezető útmutató az ARM Cortex-M3 mikrovezérlőkhöz . Letöltve: 2013. szeptember 29. Az eredetiből archiválva : 2013. szeptember 27..
  5. "ARMed for the nappali" Archiválva : 2012. november 9. a Wayback Machine -nél .
  6. "Interjú Steve Furberrel" Archiválva : 2011. július 27. a Wayback Machine -nél // Communications of the ACM, May 2011, Vol. 54 sz. 5, 34-39. oldal, doi:10.1145/1941487.1941501
  7. Manners, David . ARM's way , Electronics Weekly  (1998. április 29.). Az eredetiből archiválva : 2012. július 29. Letöltve: 2012. október 26.
  8. Sophie Wilson-CHM . Letöltve: 2019. április 4. Az eredetiből archiválva : 2019. április 4..
  9. Apache referenciaértékek a Calxeda 5 wattos webszerveréhez – ARM szerverek, most! (nem elérhető link) . Letöltve: 2012. november 26. Az eredetiből archiválva : 2012. október 30. 
  10. Felhős idő, ARM veszélyével. Mit jelent a mikroszerverek piaca a félvezető gyártók számára Archiválva 2012. december 2-án a Wayback Machine -nél // Oppenheimer & Co. Inc., 2012. március 30
  11. Exkluzív: ARM Cortex-A15 "40 százalékkal" gyorsabb, mint a Cortex-A9 . Letöltve: 2013. október 5. Az eredetiből archiválva : 2011. július 21..
  12. Cortex-A15  processzor . KAR. — Az ARM CortexA15 MPCore család processzorainak bemutatása a gyártó honlapján. Letöltve: 2012. április 20. Az eredetiből archiválva : 2012. május 30.
  13. ARM Cortex-A15 - Processzor 2,5 GHz-ig, nem csak okostelefonokhoz . Ferra.ru (2010. szeptember 10.). Letöltve: 2012. április 20. Az eredetiből archiválva : 2012. április 26..
  14. Intel Newsroom | Legnépszerűbb hírek, friss hírek és aktuális események az Inteltől (a hivatkozás nem érhető el) . Letöltve: 2013. október 4. Az eredetiből archiválva : 2009. március 6.. 
  15. "ARM810 - Dancing to the Beat of a Different Drum" Archiválva : 2008. szeptember 10. a Wayback Machine -nél Archiválva : 2011. július 23. Az ARM Holdings bemutatója a Hot Chipsen 1996.08.07.
  16. 13. regiszter, FCSE PID regiszter Archiválva : 2011. július 7. a Wayback Machine ARM920T műszaki kézikönyvében
  17. Neo1973: GTA01Bv4 versus GTA02 összehasonlítás . Letöltve: 2007. november 15. Az eredetiből archiválva : 2012. március 13..
  18. S3C2410 . Hozzáférés dátuma: 2010. január 13. Az eredetiből archiválva : 2012. március 13.
  19. Rockbox Samsung SA58xxx sorozat . Letöltve: 2008. február 22. Az eredetiből archiválva : 2012. március 13..
  20. Rockbox Meizu M6 port – Hardverinformáció . Letöltve: 2008. február 22. Az eredetiből archiválva : 2012. március 13..
  21. Adatlapok - Magic Lantern firmware Wiki . Letöltve: 2010. június 6. Az eredetiből archiválva : 2011. július 18..
  22. STR9 - STR912 - STR912FW44 mikrokontroller - dokumentumok és fájlok letöltési oldala (nem elérhető link) . mcu.st.com. Letöltve: 2009. április 18. Az eredetiből archiválva : 2007. február 10.. 
  23. Starlet archiválva : 2018. október 10. a Wayback Machine -nél .
  24. Benchmarks - Albatross (a link nem érhető el) . Albatross-uav.org (2005. június 18.). Letöltve: 2009. április 18. Az eredetiből archiválva : 2008. október 16.. 
  25. ARM1136J(F)-S - ARM processzor . arm.com. Letöltve: 2009. április 18. Az eredetiből archiválva : 2012. március 13..
  26. Qualcomm chipek kernel ARM - telefonoktól laptopokig . xi0.info. Letöltve: 2010. május 8. Az eredetiből archiválva : 2012. március 13.
  27. Qualcomm MSM7227 RISC lapkakészlet . pdadb.net. Letöltve: 2010. május 8. Az eredetiből archiválva : 2012. március 13.
  28. GoForce 6100 . Nvidia.com. Letöltve: 2009. április 18. Az eredetiből archiválva : 2012. március 13..
  29. Mediatek MT6573 . http://www.mediatek.com.+ Letöltve: 2009. április 18. Az eredetiből archiválva : 2012. június 6..
  30. Samsung S3C6410 és S3C6430 sorozatú ARM processzorok (nem elérhető hivatkozás) . Samsung. Letöltve: 2009. október 8. Az eredetiből archiválva : 2009. szeptember 1..   és a Qualcomm MSM7627 a Palm Pixiben és a Motorola Calgary/Devourban
  31. Merrit, Rick "Az ARM kinyúlik A5 maggal, grafikával, FPGA-kkal" . EE Times (2009. október 21.). Letöltve: 2009. október 28. Az eredetiből archiválva : 2012. március 13..
  32. Clarke, Peter ARM tippeket ad a Swift és Sparrow processzormagokhoz . EE Times (2009. február 3.). Letöltve: 2009. április 18. Az eredetiből archiválva : 2012. március 13..
  33. Segan, a Sascha ARM többmagos chipjei a netbookokat célozzák . PC Magazin (2009. április 9.). Letöltve: 2009. április 18. Az eredetiből archiválva : 2012. március 13..
  34. 1 2 3 4 標æº- Archiválva : 2013. július 29. a Wayback Machine -nél Archiválva : 2013. július 29.
  35. Cortex-A15 processzor - ARM . Letöltve: 2012. október 24. Az eredetiből archiválva : 2012. május 30.
  36. Cortex-A7 processzor - ARM . Letöltve: 2012. október 24. Az eredetiből archiválva : 2016. május 31..
  37. Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2010. február 2.). Letöltve: 2010. május 3. Az eredetiből archiválva : 2012. március 13.
  38. Clarke, Peter ARM apró magot készít az alacsony fogyasztású mikrokontrollerekhez . EE Times (2009. február 23.). Letöltve: 2009. november 30. Az eredetiből archiválva : 2012. március 13..
  39. Walko, John NXP először az ARM Cortex-M0 szilíciumot demózza . EE Times (2009. március 23.). Letöltve: 2009. június 29. Az eredetiből archiválva : 2012. március 13..
  40. ARM Powered VCA-k " Triad Semiconductor archiválva : 2011. július 16., a Wayback Machine -nél archiválva : 2011. július 16.
  41. Cortex-M0 alacsony fogyasztású érintőképernyős vezérlőben használt - 2009.06.10. - Electronics Weekly . Letöltve: 2010. június 6. Az eredetiből archiválva : 2011. augusztus 16..
  42. A Chungbuk Technopark az ARM Cortex-M0 processzort választja . Letöltve: 2010. június 6. Az eredetiből archiválva : 2010. október 7..
  43. Google fordító . Letöltve: 2022. május 3. Az eredetiből archiválva : 2020. január 22.
  44. Az Austriamicrosystems az ARM Cortex-M0 processzort választja vegyes jelű alkalmazásokhoz . Letöltve: 2010. június 6. Az eredetiből archiválva : 2011. július 22.
  45. "Az ARM kiterjeszti a Cortex családot FPGA-ra optimalizált első processzorral" Archiválva : 2007. május 5., a Wayback Machine , ARM sajtóközlemény, 2007. március 19. Letöltve: 2007. április 11.
  46. "ARM Cortex-M1" archiválva 2007. április 1-én a Wayback Machine -en , az ARM termék webhelyén. Letöltve: 2007. április 11.
  47. Az ARM kiterjeszti a Cortex családot az FPGA-ra optimalizált első processzorral Archiválva : 2007. május 5. a Wayback Machine -nél .
  48. Kategória:Opcodes -  ARMwiki . www.heyrick.co.uk. Letöltve: 2018. augusztus 6. Az eredetiből archiválva : 2018. augusztus 6..
  49. ARM (lefelé irányuló kapcsolat) . Letöltve: 2013. április 15. archiválva az eredetiből: 2018. június 10. 
  50. Az ARM elindítja a Cortex-A50 sorozatot, a világ legjobb… - ARM-jét . Letöltve: 2013. április 17. Az eredetiből archiválva : 2013. április 20..
  51. ARM7TDMI (rev 3) Technical Reference  Manual . Letöltve: 2009. augusztus 22. Az eredetiből archiválva : 2012. március 13.
  52. http://www.peter-cockerell.net/aalp/html/ch-2.html Archiválva : 2015. december 8. a Wayback Machine -nél "A bemeneti és kimeneti eszközök memórialeképezve vannak. Nem létezik külön I/O címtér koncepciója. A perifériás chipek olvasása és írása úgy történik, mintha memóriaterületek lennének. Ez azt jelenti, hogy a gyakorlati ARM rendszerekben a memóriatérkép három részre van osztva: RAM, ROM és bemeneti/kimeneti eszközök (valószínűleg csökkenő méretben).
  53. OpenSolaris Project: ARM Platform Port . Sun Microsystems . Az eredetiből archiválva : 2012. március 13.

Linkek