ÄRM | |
---|---|
A.R.M.-logotyp | |
Utvecklaren | ARM Limited |
Lite djup | ARMv7 64/32 bitar, upp till ARMv8 endast 64 bitar |
Presenteras | 1985 |
Arkitektur | RISC |
Sorts | register-register |
SK-kodning |
ARMv8: fast (64 bitar), förutom i ARMv7-kodkompatibilitetsläge ARMv7/6: blandat (32 och 16 bitar justerade) ARMv3/2: fast (32 bitar) |
Övergångsimplementering | genom tillståndsflaggor |
Byte-ordning | Växlingsbar (big-endian), vanligtvis från låg till hög (little-endian) |
Tillägg |
NEON, Thumb-2 (obligatoriskt sedan ARMv7), Jazelle, VFPv4-D16, VFPv4 (alla obligatoriska i ARMv8) På mikrokontroller: FPv4-SP |
Mediafiler på Wikimedia Commons |
ARM-arkitektur (från engelska Advanced RISC Machine - en avancerad RISC-maskin; ibland - Acorn RISC Machine ) - ett system av kommandon och en familj av beskrivningar och färdiga topologier av 32-bitars och 64-bitars mikroprocessor / mikrokontrollerkärnor utvecklade av ARM Limited [1] .
Bland licenstagarna av färdiga ARM-kärntopologier finns AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (till 27 juni 2006), Marvell , NXP , STMicroelectronics , Samsung , LG , Mediacommek , Qual , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .
Betydande processorfamiljer: ARM7 , ARM9 , ARM11 och Cortex [3] [4] .
Många licenstagare designar sina egna kärntopologier baserat på ARM-instruktionsuppsättningen: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait och Kryo i Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 och HiSilicon K3 .
2006 var cirka 98 % av de mer än en miljard mobiltelefoner som säljs årligen utrustade med minst en ARM-processor [5] . Från och med 2009 stod ARM-processorer för upp till 90 % av alla inbäddade 32-bitarsprocessorer [6] . ARM-processorer används ofta inom hemelektronik, inklusive smartphones, mobiltelefoner och spelare, handhållna spelkonsoler, miniräknare, smarta klockor och kringutrustning som hårddiskar eller routrar.
Dessa processorer har låg strömförbrukning, så de används ofta i inbyggda system och dominerar marknaden för mobila enheter, för vilken denna faktor är avgörande.
Efter att ha nått viss framgång med BBC Micro -datorn funderade det brittiska företaget Acorn Computers på att gå från de relativt svaga MOS Technology 6502-processorerna till mer kraftfulla lösningar och gå in på affärsdatormarknaden med samma BBC Micro- plattform . Processorer som Motorola 68000 och 32016 från National Semiconductor var olämpliga för detta, och 6502:an var inte tillräckligt kraftfull för att stödja ett grafiskt användargränssnitt [7] .
Företaget behövde en helt ny arkitektur efter att det hade testat alla tillgängliga processorer och funnit dem ineffektiva. Acorn menade allvar med att utveckla sin egen processor, och deras ingenjörer började studera dokumentationen av RISC-projektet , utvecklat vid University of California i Berkeley . De trodde att eftersom en grupp studenter lyckades skapa en helt konkurrenskraftig processor, skulle deras ingenjörer inte vara svåra. En resa till Western Design Center (Arizona) visade ingenjörerna Steve Ferber och Sophie Wilson (då känd som Roger [8] ) att de inte skulle behöva otroliga resurser för att genomföra denna plan.
Wilson började utveckla instruktionsuppsättningen genom att bygga en simulering av den nya processorn på en BBC Micro-dator. Hennes framgång i detta övertygade Acorns ingenjörer om att de var på rätt väg. Men innan de kunde gå längre behövde de mer resurser, så det var dags för Wilson att gå till Acorns vd Herman Hauser och förklara vad som pågick. Efter att han gett klartecken samlades ett litet team för att implementera Wilson-modellen i hårdvara.
Det officiella Acorn RISC Machine-projektet startade i oktober 1983. VLSI Technology eftersom det redan hade försett Acorn med ROM -chips och några anpassade integrerade kretsar Utvecklingen leddes av Wilson och Ferber . Deras huvudsakliga mål var att uppnå låg latensavbrottshantering av MOS Technology 6502. Minnesaccessarkitekturen hämtad från 6502 gjorde det möjligt för utvecklarna att uppnå bra prestanda utan den kostsamma implementeringen av DMA -modulen . Den första processorn producerades av VLSI den 26 april 1985 - det var då den började fungera och fick namnet ARM1. De första massproducerade processorerna, kallade ARM2, blev tillgängliga året efter.
Dess första användning var som en andra processor på BBC Micro , där den användes i utvecklingen av simuleringsprogram, som kompletterade datorns stödchips, samt påskyndade CAD -mjukvaran som användes vid utvecklingen av ARM2. Wilson optimerade ARM-instruktionsuppsättningen för att köra BBC BASIC . Det ursprungliga målet med en helt ARM-dator uppnåddes 1987 med släppet av Acorn Archimedes.
Atmosfären kring ARM-projektet var så hemlig att när Olivetti förhandlade om att köpa en majoritetsandel i Acorn 1985, pratade de inte om utvecklingen av projektet förrän i slutet av förhandlingarna. 1992 vann Acorn återigen Queen's Award for Enterprise för ARM.
ARM2 hade en 32-bitars databuss, ett 26-bitars adressutrymme och 16 32-bitars register. Programkoden måste ligga i de första 64 megabyte av minne, och programräknaren var begränsad till 26 bitar, eftersom de översta 4 och 2 nedre bitarna i ett 32-bitars register fungerade som flaggor. ARM2 har blivit kanske den enklaste av de populära 32-bitarsprocessorerna i världen, med bara 30 tusen transistorer (som jämförelse hade Motorola 68000- processorn, tillverkad 6 år tidigare, 68 tusen transistorer). Mycket av denna enkelhet beror på bristen på mikrokod (som i 68000 tar upp mellan en fjärdedel och en tredjedel av tärningsytan) och bristen på cache , vilket var fallet med många dåtidens processorer. Denna enkelhet ledde till låga energikostnader, medan ARM var mycket mer produktiv än Intel 80286 . Dess efterträdare, ARM3-processorn, hade redan en cache på 4 KB, vilket ökade prestandan ännu mer.
I slutet av 1980-talet började Apple Computer och VLSI Technology arbeta med Acorn Computers på nya versioner av ARM-kärnan. Arbetet var så viktigt att Acorn slog ihop utvecklingsteamet 1990 till ett nytt företag kallat Advanced RISC Machines . Av denna anledning förkortas ARM ibland som Advanced RISC Machines istället för Acorn RISC Machine . Advanced RISC Machines blev ARM när dess moderbolag ARM Holdings noterades på London Stock Exchange och NASDAQ 1998.
Det nya Apple-ARM-arbetet utvecklades så småningom till ARM6, som först släpptes 1992. Apple använde den ARM6-baserade ARM610-processorn som grund för sin Apple Newton PDA-produkt. 1994 började Acorn använda ARM610 som huvudprocessor i sina RISC PC-datorer . DEC köpte också en licens för ARM6- arkitekturen (orsakade lite förvirring eftersom de också gjorde Alpha- processorer ) och började tillverka StrongARM. Vid 233 MHz krävde denna processor endast 1 watt effekt (senare versioner krävde mycket mindre). Intel fick senare rättigheterna till detta verk som ett resultat av en rättegång. Intel passade på att komplettera sin gamla I960-linje med StrongARM-processorn och utvecklade senare sin version av kärnan under varumärket XScale , som de sedan sålde till Marvell .
ARM-kärnan behöll samma storlek efter alla dessa förändringar. ARM2 hade 30 000 transistorer.
I grund och botten har processorerna i familjen erövrat segmentet av massmobilprodukter (mobiltelefoner, handdatorer) och inbyggda system med medelhög och hög prestanda (från nätverksroutrar och åtkomstpunkter till TV-apparater). Vissa företag tillkännager utvecklingen av effektiva servrar baserade på kluster av ARM-processorer [10] , men än så länge är dessa endast experimentella projekt med en 32-bitars arkitektur [11] .
Listans tidigare ledare, Summit-superdatorn (OLCF-4) , utvecklad gemensamt av IBM (servernoder), Mellanox (interconnect) och Nvidia (grafiska acceleratorer), och installerad vid Oak Ridge National Laboratory , blev den andra och förlorade hedervärd förstaplats till det nya japanska toppsystemet Fugaku ( rus. Fugaku ), som visade ett High Performance / Highly Parallel Linpack (HPL) resultat på 415,5 petaflops. Denna indikator överstiger Summits kapacitet med 2,8 gånger. Fugaku drivs av Fujitsus 48-kärniga A64FX SoC, vilket gör det till det första någonsin #1-systemet på TOP500-listan med ARM-processorer. Med enkel eller lägre precision, som ofta används för maskininlärning och artificiell intelligens, når Fugaku över 1 000 petaflops (1 exaflops). Det nya systemet är installerat på RIKEN Computational Science Center (R-CCS) i Kobe, Japan.
Flera familjer av ARM-processorer är för närvarande betydande:
2010 tillkännagav tillverkaren Cortex-A15-processorer med kodnamnet Eagle, ARM hävdar att Cortex A15-kärnan är 40 procent snabbare vid samma frekvens än Cortex-A9- kärnan med samma antal kärnor per chip [12] . Produkten, tillverkad med en 28-nm processteknik, har 4 kärnor, kan arbeta med en frekvens på upp till 2,5 GHz och kommer att stödjas av många moderna operativsystem [13] [14] .
Marvells populära xScale- familj av mikroprocessorer (till 27 juni 2007 - Intel [15] ) är faktiskt en förlängning av ARM9- arkitekturen , kompletterad med Wireless MMX- instruktionsuppsättningen , speciellt utvecklad av Intel för att stödja multimediaapplikationer.
ARM-kärnversioner (tabell)Kärnfamilj | Arkitektur version | Kärna | Funktioner | Cache (I/D)/ MMU | Typiska MIPS @ MHz | Användande |
---|---|---|---|---|---|---|
ARM1 | ARMv1 (utfasad) | ARM1 | Inte | ARM Evaluation System BBC Micro- processor | ||
ARM2 | ARMv2 (utfasad) | ARM2 | Lade till MUL-kommando (multiplicera) | Inte | 4 MIPS @ 8 MHz 0,33 DMIPS /MHz |
Acorn Archimedes , schackmaskin |
ARMv2a (utfasad) | ARM250 | Integrerad MEMC (MMU), GPU, tillagda SWP och SWPB (swap) kommandon | Nej, MEMC1a | 7 MIPS @ 12 MHz | Acorn Archimedes | |
ARM3 | ARMv2a (utfasad) | ARM2a | Första använda cachen | 4 KB totalt | 12 MIPS @ 25 MHz 0,50 DMIPS/MHz |
Acorn Archimedes |
ARM6 | ARMv3 (utfasad) | ARM60 | 32-bitars (snarare än 26-bitars) minnesadressutrymme infördes för första gången | Inte | 10 MIPS @ 12 MHz | 3DO Interactive Multiplayer , Zarlink GPS-mottagare |
ARM600 | Liksom ARM60, FPA10 flyttalsmatematisk coprocessor | 4 KB totalt | 28 MIPS @ 33 MHz | |||
ARM610 | Som ARM60, cache, ingen samprocessorbuss | 4 KB totalt | 17 MIPS @ 20 MHz 0,65 DMIPS/MHz |
Acorn Risc PC 600 , Apple Newton 100-serien | ||
ARM7 | ARMv3 (utfasad) | ARM700 | 8 KB totalt | 40 MHz | Acorn Risc PC Prototyp CPU-kort | |
ARM710 | Som ARM700 | 8 KB totalt | 40 MHz | Acorn Risc PC 700 | ||
ARM710a | Som ARM700 | 8 KB totalt | 40 MHz 0,68 DMIPS /MHz |
Acorn Risc PC 700 , Apple eMate 300 | ||
ARM7100 | Som ARM710a, integrerad SoC | 8 KB totalt | 18 MHz | Psion Series 5 | ||
ARM7500 | Som ARM710a, integrerad SoC. | 4 KB totalt | 40 MHz | Acorn A7000 | ||
ARM7500FE | Precis som ARM7500 lade "FE" till FPA- och EDO-minneskontroller | 4 KB totalt | 56 MHz 0,73 DMIPS/ MHz |
Acorn A7000+ nätverksdator | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-stegs transportör, tumläge | Inte | 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 och LH754xx , Actels CoreMP7 |
ARM710T | Som ARM7TDMI, cache | 8 KB delad, MMU | 36 MIPS @ 40 MHz | Psion Series 5mx , Psion Revo /Revo Plus/Diamond Mako | ||
ARM720T | Som ARM7TDMI, cache | 8 KB delad , MMU med Fast Context Switch Extension | 60 MIPS @ 59,8 MHz | Zipit Wireless Messenger , NXP Semiconductors LH7952x | ||
ARM740T | Som ARM7TDMI, cache | MPU | ||||
ARMv5TEJ | ARM7EJ-S | 5-stegs pipeline, Thumb, Jazelle DBX, avancerade DSP-kommandon | ingen | |||
Stark arm | ARMv4 | SA-110 | 16KB/16KB MMU | 203 MHz 1,0 DMIPS /MHz |
Apple Newton 2x00-serien, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS | |
SA-1100 | Som SA-110, integrerad SoC | 16KB/8KB MMU | 203MHz | Psion netBook | ||
SA-1110 | Som SA-110, integrerad SoC | 16KB/8KB MMU | 206MHz | LART (dator) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series , Palm Zire 31 | ||
ARM8 | ARMv4 | ARM810 [16] | 5-stegs pipeline, statisk grenprediktion, dubbelbandbreddsminne | 8 KB unified, MMU | 84 MIPS @ 72 MHz 1,16 DMIPS/MHz |
Acorn Risc PC Prototyp CPU-kort |
ARM9TDMI | ARMv4T | ARM9TDMI | 5-stegs transportör, tumme | ingen | ||
ARM920T | Som ARM9TDMI, cache | 16 KB/16 KB, MMU med FCSE (Fast Context Switch Extension) [17] | 200 MIPS @ 180 MHz | Armadillo , Atmel AT91SAM 9, GP32 , GP2X (första kärnan), Tapwave Zodiac ( Motorola i. MX1), Hewlett Packard HP-49/50 Miniräknare , Sun SPOT , Cirrus Logic EP9302, EP9307, EP9312, 42 EP9312 , Samsung Ty2CTN , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( TomTom navigationsenheter) [19] | ||
ARM922T | Som ARM9TDMI, cache | 8KB/8KB MMU | NXP Semiconductors LH7A40x | |||
ARM940T | Som ARM9TDMI, cache | 4 KB/4 KB MPU | GP2X (andra kärnan), Meizu M6 Mini Player [20] [21] | |||
ARM9E | ARMv5TE | ARM946E-S | Tumme, förbättrade DSP-instruktioner, cachar | variabla, tätt kopplade minnen, MPU | Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , Conexant 802.11 chips, Samsung S5L2010 | |
ARM966E-S | Tumme, förbättrade DSP-instruktioner | ingen cache, TCM | STM STR91xF, inkluderar Ethernet [23] | |||
ARM968E-S | Som ARM966E-S | ingen cache, TCM | NXP Semiconductors LPC2900 | |||
ARMv5TEJ | ARM926EJ-S | Tummen, Jazelle DBX, Enhanced DSP instruktioner | variabler, TCM, MMU | 220 MIPS @ 200 MHz | Mobiltelefoner: Sony Ericsson (K, W-serien); Siemens och Benq (x65-serien och nyare); 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 — odokumenterad kärna i ATi Hollywood -grafikkretsen som används i Wii, [24] Samsung S23 Squeezebox Duet 's Controller. Squeezebox Radio ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telechips TCC7801, TCC7901; ZiiLABS ZMS-05-system på ett chip; Western Digital MyBook I World Edition | |
ARMv5TE | ARM996HS | Klocklös processor som ARM966E-S | inga cacher, TCM, MPU:er | |||
ARM10E | ARMv5TE | ARM1020E | 6-stegs pipeline, tumme, förbättrade DSP-instruktioner, (VFP) | 32KB/32KB MMU | ||
ARM1022E | Som ARM1020E | 16KB/16KB MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Thumb, Jazelle DBX, Enhanced DSP instruktioner, (VFP) | variabel, MMU eller MPU | Western Digital MyBook II World Edition; Conexant so4610 och so4615 ADSL SoCs | ||
Xscale | ARMv5TE | 80200/IOP310/IOP315 | Instruktioner för I/O-processor, tumme, förbättrad DSP | |||
80219 | 400/600 MHz | Thecus N2100
| ||||
IOP321 | 600 Bogo Mips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 kärnor, RAID-acceleration | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Applikationsprocessor, 7-stegs pipeline | PXA210: 133 och 200 MHz, PXA250: 200, 300 och 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 och 400 MHz | Sony CLIÉ NX73V, NX80V | ||||
PXA26x | standard 400 MHz, upp till 624 MHz | Palm Tungsten T3 | ||||
PXA27x | Applikationsprocessor | 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 och x51-serien, Motorola Q, Balloon3 , Motorola TX Greenphone , Troll Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Toshiba Porté Tregé G900, i-Pit 500, Z 650, Z 650, Z 650 affärsnavigator | ||
PXA800(E)F | ||||||
PXA3XX (kodnamnet "Monahans") | PXA31x har en grafikaccelerator för hårdvara | 32KB/32KB L1, TCM, MMU | 800 MIPS @ 624 MHz | högskärm alex | ||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Styrplansprocessor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S [26] | 8-stegs pipeline, SIMD , Thumb, Jazelle DBX, (VFP), förbättrade DSP-instruktioner | variabel, 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 (med integrerad ARM926EJ-S Coprocessor@274 MHz, används i Eten Glofi IIish , HTC TyTN IIish , HTC Nike ), Freescale i.MX31 (används i original Zune 30gb och Toshiba Gigabeat S), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic , Nokia 6120 Classic , Nokia 6120 Classic Qualcomm MSM7201A som ses i HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 Classic , Motorola Z6 , HTC SGH- Z6 i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28] |
ARMv6T2 | ARM1156T2(F)-S | 9-stegs pipeline, SIMD , Thumb-2, (VFP), förbättrade DSP-instruktioner | variabel, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | Som ARM1136EJ(F)-S | variabel, MMU+TrustZone | Apple iPhone (original och 3G) , Apple iPod touch (1:a och 2:a generationen) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (t.ex. Samsung Moment ), S3C6430 [31] | ||
ARMv6K | ARM11MPCore | Som ARM1136EJ(F)-S, 1-4 kärnor SMP | variabel, MMU | Nvidia APX 2500 | ||
Kärnfamilj | Arkitektur version | Kärna | Funktioner | Cache (I/D)/MMU | Typiska MIPS @ MHz | Ansökningar |
Bark | ARMv7-A | Cortex-A5 | VFP, NEON, Jazelle RCT och DBX, Thumb-2, 8-stegs pipeline, i ordning, 1-4 kärna SMP | variabel (L1), MMU+TrustZone | upp till 1500 (1,5 DMIPS/MHz) | "Sparrow" (ARM-kodnamn) [32] [33] [34] |
Cortex-A8 | VFP, NEON, Jazelle RCT, Thumb-2; 13-stegs pipeline, i ordning, 2 dekodrar [35] | variabel (L1+L2), MMU+TrustZone | upp till 2000 (2,0 DMIPS/MHz i hastighet från 600 MHz till mer än 1 GHz) | TI OMAP3xxx series , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3:e generationen) , Apple iPad ( Apple A4- processor), Apple iPhone 4 ( Apple A4- processor), Archos 5 , Archos 101 , FreeScale i.MX51- SOC , BeagleBoard , Motorola Droid , Motorola Droid X , Palm Pre , Samsung Omnia HD , Samsung Wave S8500 , Nexus S , Sony Ericsson Satio , Touch Book , Nokia N900 , Meizu M9 , ZiiLABS ZMS-08 system på ett chip, Boxchip A13 | ||
Cortex-A9 | Applikationsprofil, (VFP), (NEON), Jazelle RCT och DBX, Thumb-2, Superskalär för spekulativa problem i ur ordning (2 avkodare); 9-12 [35] rörledningssteg | MMU+TrustZone | 2,5 DMIPS/MHz | Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G | ||
Cortex-A9 MPCore | Som Cortex-A9, 1-4 kärnor SMP | MMU+TrustZone | 10 000 DMIPS @ 2 GHz på prestandaoptimerad TSMC 40G (fyrkärnig?) (2,5 DMIPS/MHz per kärna) | PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517 | ||
Cortex-A15 MPCore | 1-32 kärna SMP; Out-of-order superskalär (3 avkodare); 15+ transportörsteg [35] ; VFPv4, NEON [36] | MMU, LPAE | 3,5 DMIPS/MHz/Kärna; 1,0 GHz - 2,5 GHz (@ 28 nm [35] ) | |||
Cortex-A7 MPCore [37] | FPU,NEON; I ordning (1 dekoder); 8 stegs transportör. | 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) | Inbäddad profil, Thumb-2, (FPU) | variabel cache, valfri MPU | 600 DMIPS @ 475 MHz | Broadcom är en användare, TI TMS570 | |
ARMv7-ME | Cortex-M4 (kodnamnet "Merlin") [38] | Mikrokontrollerprofil, både Thumb och Thumb-2, FPU. Hårdvara MAC, SIMD och dela instruktioner | MPU tillval | 1,25 DMIPS/MHz | NXP Semiconductors , STM32 , TI Stellaris LM4F | |
ARMv7-M | Cortex-M3 | Mikrokontrollerprofil, endast Thumb-2. maskinvarudelningsinstruktion | ingen cache, valfri MPU | 125 DMIPS @ 100 MHz | TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Embers EM3xx Series, Atmel AT91SAM 3, Europe Technologies EasyBCU , Energy Micros EFM32 , Actels SmartFusion , Milandre 1986 ] | |
ARMv6-M | Cortex-M0 (kodnamnet "Swift") [39] | Mikrokontrollerprofil, Thumb-2 subset (16-bitars tuminstruktioner & BL, MRS, MSR, ISB, DSB och DMB) | Ingen cache | 0,9 DMIPS/MHz | NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3] | |
Cortex-M1 | FPGA-inriktad, mikrokontrollerprofil, Thumb-2-delmängd (16-bitars tuminstruktioner & BL, MRS, MSR, ISB, DSB och DMB) | Inget, tätt kopplat minne tillval | Upp till 136 DMIPS @ 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz uppnåbar FPGA-beroende) | Actel ProASIC3, ProASIC3L, IGLOO och Fusion PSC-enheter , Altera Cyclone III , andra FPGA-produkter stöds också, t.ex. Synplicity | ||
Kärnfamilj | Arkitektur version | Kärna | Funktioner | Cache (I/D)/ MMU | Typiska MIPS @ MHz | Ansökningar |
Det har länge funnits en ARM-arkitekturreferensguide som avgränsar alla typer av gränssnitt som ARM stöder, eftersom implementeringsdetaljerna för varje processortyp kan variera. Arkitekturen har utvecklats över tiden och sedan ARMv7 har 3 profiler definierats:
Profiler kan stödja färre kommandon (kommandon av en viss typ).
Processorn kan vara i ett av följande driftslägen:
Växling av processorläge sker när ett lämpligt undantag inträffar eller genom att modifiera statusregistret.
För att hålla enheten ren, enkel och snabb gjordes den ursprungliga ARM-tillverkningen utan mikrokod , som den enklare 8-bitars 6502-processorn som användes i tidigare mikrodatorer från Acorn Computers .
ARM-instruktionsuppsättningLäget i vilket 32-bitars instruktionsuppsättningen exekveras.
ARM-basinstruktionsuppsättning: [49]
ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST
TumkommandouppsättningFör att förbättra koddensiteten är processorer som börjar med ARM7TDMI utrustade med ett "tumme"-läge. I detta läge exekverar processorn en alternativ uppsättning 16-bitars instruktioner. De flesta av dessa 16-bitars instruktioner översätts till normala ARM-instruktioner. Minskningen av instruktionslängden uppnås genom att dölja vissa operander och begränsa adresserbarheten jämfört med fullt ARM-instruktionsuppsättningsläge.
I tumläge har mindre opkoder mindre funktionalitet. Till exempel kan bara grenar vara villkorade, och många opkoder är begränsade till att bara komma åt hälften av huvudprocessorregistren. Kortare opkoder resulterar i allmänhet i större koddensitet, även om vissa opkoder kräver ytterligare instruktioner. I situationer där minnesporten eller bussbredden är begränsad till 16 bitar är de kortare tumlägesopkoderna mycket snabbare än vanliga 32-bitars ARM-opkoder, eftersom mindre kod måste laddas in i processorn med begränsad minnesbandbredd.
Hårdvara som Game Boy Advance har vanligtvis en liten mängd RAM tillgängligt med en fullständig 32-bitars datakanal. Men de flesta operationer utförs genom en 16-bitars eller smalare informationskanal. I det här fallet är det vettigt att använda tumkod och manuellt optimera vissa tunga kodsektioner genom att byta till fullständiga 32-bitars ARM-instruktioner.
Den första processorn med en tumkommandoavkodare var ARM7TDMI. Alla processorer i ARM9 -familjen , såväl som XScale , hade en inbyggd tumkommandoavkodare.
Thumb-2 instruktionsuppsättningThumb-2 är en teknik som introducerades i ARM1156-kärnan, som tillkännagavs 2003. Den utökar den begränsade 16-bitars tuminstruktionsuppsättningen med ytterligare 32-bitars instruktioner för att ge instruktionsuppsättningen extra bredd. Målet med Thumb-2 är att uppnå tumliknande koddensitet och 32-bitars ARM-instruktionsuppsättningsprestanda. Vi kan säga att i ARMv7 uppnåddes detta mål.
Thumb-2 utökar både ARM- och Thumb-instruktioner med ännu fler instruktioner, inklusive bitfältsmanipulation, tabellgrening, villkorad exekvering. Det nya "Unified Assembly Language" (UAL) stöder byggkommandon för både ARM och Thumb från samma källkod. ARMv7-versionerna av Thumb ser ut som ARM-kod. Detta kräver försiktighet och användning av det nya if-then-kommandot, som stöder exekvering av upp till 4 på varandra följande testtillståndskommandon. Den ignoreras under kompilering till ARM-kod, men genererar kommandon under kompilering till ARM-kod. Till exempel:
; om (r0 == rl) CMP r0 , rl ITE EQ ; ARM: ingen kod ... Tumme: IT-instruktion ; då r0 = r2; MOVEQ r0 , r2 ; ARM: villkorlig; Thumb: condition via ITE 'T' (då) ; annars r0 = r3; MOVNE r0 , r3 ; ARM: villkorlig; Tummen: tillstånd via ITE 'E' (annat) ; kom ihåg att Thumb MOV-instruktionen inte har några bitar för att koda "EQ" eller "NE"Alla ARMv7-matriser stöder Thumb-2-instruktionsuppsättningen, medan vissa dies, som Cortex-m3, bara stöder Thumb-2. De återstående Cortex- och ARM11-matriserna stöder både Thumb-2 och ARM-instruktionsuppsättningar.
Jazelle kommandouppsättningJazelle är en teknologi som gör att Java-bytekod kan exekveras direkt på ARM-arkitekturen som ett 3:e exekveringsläge (och instruktionsuppsättning) tillsammans med vanliga ARM-instruktioner och tumläge. Stöd för Jazelle-teknik indikeras med bokstaven "J" i processornamnet - till exempel ARMv5TEJ. Denna teknik har stöds sedan ARMv6-arkitekturen, även om nyare kärnor endast innehåller begränsade implementeringar som inte stöder hårdvaruacceleration.
ARMv8 och ARM 64-bitars instruktionsuppsättningI slutet av 2011 publicerades en ny version av arkitekturen, ARMv8. Den introducerade definitionen av AArch64-arkitekturen, där 64-bitars A64-instruktionsuppsättningen exekveras. Stöd för 32-bitars kommandon kallas A32 och exekveras på AArch32-arkitekturer. Tuminstruktioner stöds i T32-läge, endast när du använder 32-bitars arkitekturer. Det är tillåtet att köra 32-bitars applikationer i ett 64-bitars operativsystem och köra ett virtualiserat 32-bitars operativsystem med en 64-bitars hypervisor [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM och andra har meddelat planer på att använda ARMv8. Cortex-A53- och Cortex-A57-kärnorna som stöder ARMv8 introducerades av ARM den 30 oktober 2012 [51] .
Både AArch32 och AArch64 stöder VFPv3, VFPv4 och avancerad SIMD (NEON). Lade även till kryptografiska instruktioner för att arbeta med AES , SHA-1 och SHA-256 .
AArch64 funktioner:
ARM-arkitekturen har följande RISC-funktioner:
För att kompensera för den enkla designen har vissa designfunktioner använts i jämförelse med moderna processorer som Intel 80286 eller Motorola 68020:
En av de betydande skillnaderna mellan ARM-arkitekturen (originalarkitektur) och andra CPU-arkitekturer är den så kallade predikationen - förmågan att villkorligt exekvera instruktioner. Med "villkorlig exekvering" menar vi här att instruktionen kommer att exekveras eller ignoreras beroende på det aktuella tillståndet för processorstatusflaggorna. I Thumb and Arm 64 används inte predikation - i det första läget finns det ingen plats för det i kommandot (endast 16 bitar), och i det andra - predikation är meningslöst och svår att implementera på superskalära arkitekturer .
Medan för andra arkitekturer, som regel, endast villkorliga hoppinstruktioner har denna egenskap, designades ARM-arkitekturen för att villkorligt exekvera nästan vilken instruktion som helst. Detta uppnåddes genom att lägga till ett speciellt 4-bitarsfält ( predikat ) till deras instruktionskoder. Ett av dess värden är reserverat för det faktum att instruktionen måste utföras ovillkorligt, och resten kodar en eller annan kombination av villkor (flaggor). Å ena sidan, med tanke på instruktionens begränsade totala längd, minskade detta antalet tillgängliga bitar för kodning av förskjutningar i minnesåtkomstkommandon, men å andra sidan gjorde det det möjligt att bli av med förgreningsinstruktioner vid generering av kod för små om-block.
Ett exempel som vanligtvis betraktas som illustration är Euclids subtraktionsbaserade algoritm . I C-språket ser det ut så här:
medan ( i != j ) { if ( i > j ) { i -= j ; } annat { j -= i ; } }Och i ARM assembler - så här:
loop CMP Ri , Rj ; ange villkor "NE" om (i != j), ; "GT" om (i > j), ; eller "LT" om (i < j) SUBGT Ri , Ri , Rj ; om "GT" (större än), i = ij; SUBLT Rj , Rj , Ri ; om "LT" (mindre än), j = ji; BNEloop ; _ om "NE" (inte lika), sedan loopDet framgår av koden att användningen av predikation gjorde det möjligt att helt undvika förgrening i else- och sedan-satserna. Observera att om Ri och Rj är lika, så kommer ingen av SUB-instruktionerna att exekveras, vilket helt eliminerar behovet av en gren som implementerar en stundskontroll vid varje start av slingan, vilket kan implementeras, till exempel med hjälp av SUBLE ( mindre än eller lika med) instruktion .
Ett sätt som Thumb code uppnår större utrymmesbesparingar är just genom att ta bort 4-bitars predikatet från alla instruktioner utom grenar.
En annan egenskap hos instruktionsuppsättningen är möjligheten att kombinera skift och rotationer i en "informationsbearbetnings"-instruktion (aritmetisk, logisk, register-registerrörelse) så att till exempel uttrycket C:
a += ( j << 2 );kan konverteras till en instruktion med ett ord och en cykel i ARM:
ADD Ra , Ra , Rj , LSL #2Detta gör att typiska ARM-program blir tätare än vanligt med mindre minnesåtkomst. Därmed används rörledningen mycket mer effektivt. Även om ARM körs i hastigheter som många skulle anse vara långsamma, konkurrerar den ganska lätt med många mer sofistikerade CPU-arkitekturer.
ARM-processorn har också vissa funktioner som sällan finns i andra RISC-arkitekturer, såsom adressering i förhållande till programräknaren (i själva verket är ARM-programräknaren ett av 16 register), såväl som adresseringslägen före och efter inkrement.
En annan funktion som är värd att notera är att vissa tidiga ARM-processorer (före ARM7TDMI), till exempel, inte har instruktioner för att lagra 2-byte-nummer. Det är alltså strängt taget omöjligt för dem att generera effektiv kod som beter sig som förväntat av C-objekt av typen "volatile int16_t".
ARM7 och tidigare har en pipeline i tre steg. Dessa är stadierna av överföring, avkodning och utförande. Arkitekturer med högre prestanda som ARM9 har mer komplexa pipelines. Cortex-a8 har en 13-stegs pipeline.
Arkitekturen tillhandahåller ett sätt att utöka instruktionsuppsättningen med hjälp av samprocessorer som kan adresseras med MCR, MRC, MRRC, MCRR och liknande instruktioner. Samprocessorutrymmet är logiskt uppdelat i 16 samprocessorer numrerade 0 till 15, där den 15:e är reserverad för vissa typiska hanteringsfunktioner såsom cachehantering och drift av minneshanteringsenheter ( på processorer som har dem).
På ARM-baserade maskiner är kringutrustning vanligtvis ansluten till processorn genom att mappa deras fysiska register i ARM-minne eller samprocessorminne, eller genom att ansluta dem till bussar, som i sin tur är anslutna till processorn. Åtkomst till samprocessorer har en längre latens, så vissa kringutrustningar är utformade för att nås åt båda hållen. I andra fall använder chiputvecklare endast samprocessorintegreringsmekanismen. Till exempel bör en bildbehandlingsmotor bestå av en liten ARM7TDMI-kärna kopplad med en samprocessor som stöder primitiva operationer för bearbetning av elementära HDTV-kodningar.
Förbättrad SIMD (NEON)En förlängning av avancerad SIMD, även kallad NEON-teknik, är en kombinerad 64-bitars och 128-bitars enkelinstruktionsmultipeldata ( SIMD ) instruktionsuppsättning som tillhandahåller standardiserad acceleration för media- och signalbehandlingstillämpningar. NEON kan avkoda mp3 -ljudformat vid 10 MHz processorfrekvens och kan arbeta med GSM AMR (adaptive multi-rate) talcodec vid max 13 MHz. Den har en imponerande uppsättning instruktioner, separata registerfiler och ett oberoende exekveringssystem på hårdvarunivå. NEON stöder 8-, 16-, 32-, 64-bitars heltal, enkel precision och flyttalsinformation, och fungerar i SIMD-operationer för ljud- och videobehandling (grafik och spel). I NEON stöder SIMD upp till 16 operationer åt gången.
En av nackdelarna (eller, säg, en funktion) med den förbättrade SIMD:n är att samprocessorn exekverar instruktionerna för den förbättrade SIMD:n med en ganska betydande fördröjning i förhållande till huvudprocessorkoden, fördröjningen når två dussin cykler eller mer (beroende på arkitekturen och specifika förhållanden). Av denna anledning, när huvudprocessorn försöker använda resultaten av samprocessorns beräkning, kommer exekveringen att frysas under en betydande tid.
VFPVFP-teknik (Vector Floating Point) är en förlängning av samprocessorn i ARM-arkitekturen. Den utför lågkostnadsberäkningar på enkla/dubbla precisionsflyttal som är helt kompatibla med ANSI/IEEE Std 754-1985 Standard for Binary Floating-Point Arithmetic . VFP utför flyttalsberäkningar lämpliga för ett brett spektrum av applikationer som handdatorer, smartphones, ljudkomprimering, 3D-grafik och digitalt ljud, samt skrivare och set-top-boxar. VFP-arkitekturen stöder även exekvering av korta vektorinstruktioner. Men eftersom processorn utför operationer sekventiellt på varje element i vektorn, kan VFP inte kallas en sann SIMD-instruktionsuppsättning. Detta läge kan vara användbart i grafik- och signalbehandlingsapplikationer eftersom det minskar kodstorlek och instruktionsgenerering.
Andra flyttals- och/eller SIMD-samprocessorer som finns på ARM-processorer inkluderar FPA , FPE , iwMMXt . De tillhandahåller samma funktionalitet som VFP, men är inte kompatibla med den på opcodenivå .
Säkerhetstillägg som marknadsförs som TrustZone Technology finns i ARMv6KZ och andra nyare applikationsprofilerade arkitekturer. Det ger ett billigt alternativ till att lägga till en dedikerad säkerhetsmotor genom att tillhandahålla 2 vCPU:er som stöds av maskinvaruåtkomstkontroll. Detta gör att applikationskärnan kan växla mellan två tillstånd som kallas "världar" (för att undvika förväxling med möjliga domännamn) för att förhindra att information läcker från den viktigare världen till den mindre viktiga. Denna världsomkopplare är vanligtvis ortogonal mot alla andra processorfunktioner. Således kan varje värld köras oberoende av andra världar med samma kärna. Minne respektive kringutrustning är gjorda för att passa kärnans värld och kan använda detta för att få åtkomstkontroll till kärnans hemligheter och koder. Typiska TrustZone Technology-applikationer bör köra ett komplett operativsystem i den mindre viktiga världen och kompakt, säkerhetsspecifik kod i den viktigare världen, vilket ger Digital Rights Management mycket mer kontroll över medieanvändning på ARM-baserade enheter och förhindrar obehörig åtkomst till enheten..
I praktiken, eftersom de specifika detaljerna för implementeringen av TrustZone förblir företagets egendom och inte avslöjas, är det fortfarande oklart vilken säkerhetsnivå som garanteras för denna hotmodell.
Alla moderna ARM-processorer har felsökningshårdvara, för utan dem skulle programvarufelsökare inte kunna utföra de mest grundläggande operationerna som att stoppa, indraga, ställa in brytpunkter efter omstart.
ARMv7-arkitekturen definierar grundläggande felsökningsfunktioner på arkitekturnivå. Dessa inkluderar brytpunkter, bevakningspunkter och att utföra kommandon i felsökningsläge. Sådana verktyg var också tillgängliga med EmbeddedICE-felsökningsmodulen. Båda lägena stöds - stoppa och granska. Den faktiska transportmekanismen som används för att komma åt felsökningsverktygen är inte arkitektoniskt specificerad, men implementeringen inkluderar vanligtvis JTAG- stöd .
Det finns en separat "kärnvy"-felsökningsarkitektur som inte krävs arkitektoniskt av ARMv7-processorer.
ARM tillhandahåller 31 32-bitars register för allmänna ändamål . Beroende på processorns läge och tillstånd har användaren endast tillgång till en strikt definierad uppsättning register. I ARM-läge är 17 register ständigt tillgängliga för utvecklaren:
I alla lägen utom användarläge och systemläge, finns även SPSR (Save Program Status Register) tillgängligt. Efter att ett undantag inträffat, lagras CPSR-registret i SPSR. Processorns tillstånd (läge, tillstånd; aritmetiska flaggor, logiska operationer, avbrottsaktivering) är alltså fixerat vid ögonblicket omedelbart före avbrottet [52] .
usr | sys | svc | ca | 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 |
Registrera alias:
reg. | funkt. | args | vars | GCC | Kommentar |
---|---|---|---|---|---|
R0 | a1 | ett N - funktionsargument | |||
R1 | a2 | ||||
R2 | a3 | ||||
R3 | a4 | ||||
R4 | v1 | vN - registervariabel | |||
R5 | v2 | ||||
R6 | v3 | ||||
R7 | v4 | ||||
R8 | v5 | ||||
R9 | SB | v6 | SB - Statiskt Basregister | ||
R10 | v7 | SL | SL-? | ||
R11 | v8 | FP | FP - Stack ramadress ? | ||
R12 | IP | IP - Intra-procedur call scratch register | |||
R13 | SP | stackpekare | |||
R14 | LR | Länkregister | |||
R15 | PC | Programräknare |
ARM-arkitekturen använder ett enda adressutrymme [53] . I praktiken innebär detta schema att en adress kan peka på minne ( RAM eller ROM ) eller I/O-portar, i motsats till ett schema där I/O-portar har sitt eget adressutrymme.
De flesta av de befintliga produkterna som använder ARM-arkitekturen är kompletta system på ett chip som har förmågan att arbeta med externt dynamiskt random access memory ( DRAM ) och innehåller kontroller för många perifera bussar, i synnerhet USB , IIC (I2C), ljudenheter, kontroller för att arbeta med flashmedia av SD- och MMC -standarder , displaykontroller och digitalkameror (MIPI).
Alla processorer har GPIO-linjer (general purpose input/output). I konsumentenheter kan "snabbstart" och volymkontrollknappar, signallysdioder, ett tangentbord etc. anslutas till dem.
Efter att ha slagit på systemet baserat på ARM-processorn, laddas starthanteraren och adressen till dess ingångspunkt från ROM-minnet. Starthanteraren förinitierar systemet och fyller därmed samma roll som BIOS utför på x86-system, varefter den kan ladda antingen systemladdaren eller operativsystemet direkt.
Det finns ingen enskild standard för bootloadern. En U-Boot bootloader kan användas och UEFI används ofta för 64-bitars ARMv8. Många applikationer använder sina egna lastare.
ARM-arkitekturen stöds av många operativsystem. Mest använda: Linux (inklusive Android ), iOS , Windows Phone .
Olika Unix- och Unix-liknande operativsystem kan fungera på system med en ARM-processor: Linux (många distributioner), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54 ) ] ), Firefox OS , macOS Big Sur .
Plattformen lanserar även separata varianter av Windows- familjen : Windows CE , Windows Phone , Windows RT , Windows 10 .
Dessutom stöds ARM av: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .
Mikrokontroller | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Tillverkare |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Gränssnitt | ||||||||
OS | ||||||||
Programmering |
|
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |
Processorarkitekturer baserade på RISC -teknologier | |
---|---|