ARM (arhitectură)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 10 februarie 2020; verificările necesită 77 de modificări .
BRAŢ

sigla A.R.M
Dezvoltator ARM Limited
Adâncime de biți ARMv7 pe 64/32 de biți, până la ARMv8 doar pe 64 de biți
Prezentat 1985
Arhitectură RISC
Tip de registru-registru
Codare SK ARMv8: fix (64 de biți), cu excepția modului de compatibilitate cu codul
ARMv7 ARMv7/6: mixt (32 și 16 biți aliniați)
ARMv3/2: fix (32 de biți)
Implementarea tranziției prin steaguri de condiție
Ordinea octetilor Comutabil (big-endian), de obicei de la scăzut la mare (little-endian)
Extensii NEON, Thumb-2 (obligatoriu din ARMv7), Jazelle, VFPv4-D16, VFPv4 (toate obligatorii în ARMv8)
Pe microcontrolere: FPv4-SP
 Fișiere media la Wikimedia Commons

Arhitectura ARM (din limba engleză  Advanced RISC Machine  - o mașină RISC avansată; uneori - Acorn RISC Machine ) - un sistem de comenzi și o familie de descrieri și topologii gata făcute de nuclee de microprocesor / microcontroler pe 32 și 64 de biți dezvoltate de ARM Limited [1] .

Printre licențiații de topologii de bază ARM gata făcute se numără AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (până la 27 iunie 2006), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , Qualcomm , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .

Familii semnificative de procesoare: ARM7 , ARM9 , ARM11 și Cortex [3] [4] .

Mulți licențiați își proiectează propriile topologii de bază pe baza setului de instrucțiuni ARM: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait și Kryo în Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 și HiSilicon K3 .

Popularitate

În 2006, aproximativ 98% din cele peste un miliard de telefoane mobile vândute anual erau echipate cu cel puțin un procesor ARM [5] . Începând cu 2009, procesoarele ARM reprezentau până la 90% din toate procesoarele încorporate pe 32 de biți [6] . Procesoarele ARM sunt utilizate pe scară largă în electronicele de larg consum, inclusiv smartphone-uri, telefoane mobile și playere, console de jocuri portabile, calculatoare, ceasuri inteligente și periferice pentru computere, cum ar fi hard disk-uri sau routere.

Aceste procesoare au un consum redus de energie, astfel că sunt utilizate pe scară largă în sistemele încorporate și domină piața dispozitivelor mobile, pentru care acest factor este critic.

Istorie

După ce a obținut un oarecare succes cu computerul BBC Micro , compania britanică Acorn Computers s-a gândit să treacă de la procesoarele relativ slabe MOS Technology 6502 la soluții mai puternice și să intre pe piața computerelor de afaceri cu aceeași platformă BBC Micro . Procesoare precum Motorola 68000 și 32016 de la National Semiconductor nu erau potrivite pentru acest lucru, iar 6502 nu era suficient de puternic pentru a suporta o interfață grafică cu utilizatorul [7] .

Compania avea nevoie de o arhitectură complet nouă după ce a testat toate procesoarele disponibile și le-a găsit ineficiente. Acorn era serios în dezvoltarea propriului procesor, iar inginerii lor au început să studieze documentația proiectului RISC , dezvoltat la Universitatea din California din Berkeley . Ei au crezut că, deoarece un grup de studenți a reușit să creeze un procesor complet competitiv, atunci inginerii lor nu vor fi dificili. O călătorie la Centrul de Design de Vest (Arizona) le-a arătat inginerilor Steve Ferber și Sophie Wilson (cunoscuti pe atunci sub numele de Roger [8] ) că nu vor avea nevoie de resurse incredibile pentru a duce la îndeplinire acest plan.

Wilson a început să dezvolte setul de instrucțiuni construind o simulare a noului procesor pe un computer BBC Micro. Succesul ei în acest sens i-a convins pe inginerii Acorn că erau pe drumul cel bun. Dar înainte de a putea merge mai departe, aveau nevoie de mai multe resurse, așa că era timpul ca Wilson să meargă la CEO-ul Acorn, Herman Hauser , și să explice ce se întâmplă. După ce a dat aprobarea, o echipă mică s-a adunat pentru a implementa modelul Wilson în hardware.

Acorn RISC Machine: ARM2

Proiectul oficial Acorn RISC Machine a început în octombrie 1983. VLSI Technology siliciu, deoarece a furnizat deja Acorn cu cipuri ROM și câteva circuite integrate personalizate Dezvoltarea a fost condusă de Wilson și Ferber . Scopul lor principal a fost de a atinge gestionarea întreruperilor cu latență scăzută a tehnologiei MOS 6502. Arhitectura de acces la memorie preluată de la 6502 a permis dezvoltatorilor să obțină performanțe bune fără implementarea costisitoare a modulului DMA . Primul procesor a fost produs de VLSI pe 26 aprilie 1985 - atunci a început să funcționeze și a fost numit ARM1. Primele procesoare produse în masă, numite ARM2, au devenit disponibile în anul următor.

Prima sa utilizare a fost ca un al doilea procesor la BBC Micro , unde a fost folosit în dezvoltarea de software de simulare, care a completat cipurile de suport ale computerului, precum și pentru a accelera software-ul CAD utilizat în dezvoltarea ARM2. Wilson a optimizat setul de instrucțiuni ARM pentru a rula BBC BASIC . Scopul inițial al unui computer complet ARM a fost atins în 1987 odată cu lansarea lui Acorn Archimedes.

Atmosfera din jurul proiectului ARM a fost atât de secretă, încât atunci când Olivetti negocia pentru cumpărarea unui pachet majoritar de acțiuni la Acorn în 1985, nu au vorbit despre dezvoltarea proiectului până la sfârșitul negocierilor. În 1992, Acorn a câștigat încă o dată Premiul Queen pentru Enterprise pentru ARM.

ARM2 avea o magistrală de date pe 32 de biți, un spațiu de adrese de 26 de biți și 16 registre de 32 de biți. Codul programului trebuia să se afle în primii 64 de megaocteți de memorie, iar contorul de program a fost limitat la 26 de biți, deoarece cei 4 biți de sus și cei 2 de jos ai unui registru de 32 de biți au servit drept steaguri. ARM2 a devenit poate cel mai simplu dintre cele mai populare procesoare pe 32 de biți din lume, cu doar 30 de mii de tranzistori (pentru comparație, procesorul Motorola 68000 , fabricat cu 6 ani mai devreme, avea 68 de mii de tranzistori). O mare parte din această simplitate se datorează lipsei de microcod (care în 68000 ocupă între un sfert și o treime din suprafața matriței) și lipsei de cache , așa cum era cazul multor procesoare ale vremii. Această simplitate a dus la costuri reduse de energie, în timp ce ARM a fost mult mai productiv decât Intel 80286 . Succesorul său, procesorul ARM3, avea deja un cache de 4 KB, ceea ce a sporit și mai mult performanța.

Apple, DEC, Intel: ARM6, StrongARM, XScale

La sfârșitul anilor 1980, Apple Computer și VLSI Technology au început să lucreze cu Acorn Computers la noi versiuni ale nucleului ARM. Lucrarea a fost atât de importantă încât Acorn a împărțit echipa de dezvoltare în 1990 într-o nouă companie numită Advanced RISC Machines . Din acest motiv, ARM este uneori abreviat ca Advanced RISC Machines în loc de Acorn RISC Machine . Advanced RISC Machines a devenit ARM atunci când compania sa-mamă ARM Holdings a fost listată la Bursa de Valori din Londra și NASDAQ în 1998.

Noua lucrare Apple-ARM a evoluat în cele din urmă în ARM6, lansat pentru prima dată în 1992. Apple a folosit procesorul ARM610 bazat pe ARM6 ca bază pentru produsul său Apple Newton PDA. În 1994, Acorn a început să folosească ARM610 ca procesor principal în computerele sale PC RISC . DEC a cumpărat și o licență pentru arhitectura ARM6 (provocând un pic de confuzie, deoarece au făcut și procesoare Alpha ) și a început să producă StrongARM. La 233 MHz, acest procesor necesita doar 1 watt de putere (versiunile ulterioare au necesitat mult mai puțin). Intel a obținut ulterior drepturile asupra acestei lucrări ca urmare a unui proces. Intel a profitat de ocazie pentru a completa linia lor moștenită I960 cu procesorul StrongARM și ulterior a dezvoltat versiunea lor a nucleului sub numele de marcă XScale , pe care l-au vândut ulterior către Marvell .

Nucleul ARM a păstrat aceeași dimensiune după toate aceste modificări. ARM2 avea 30.000 de tranzistori.

Impactul tehnologiei ARM pe piață

Practic, procesoarele familiei au cucerit segmentul produselor mobile de masă (telefoane mobile, PDA-uri) și sisteme embedded de performanță medie și înaltă (de la routere de rețea și puncte de acces la televizoare). Unele companii anunță dezvoltarea de servere eficiente bazate pe clustere de procesoare ARM [10] , dar până acum acestea sunt doar proiecte experimentale cu o arhitectură pe 32 de biți [11] .

Liderul anterior al listei, supercomputerul Summit (OLCF-4) , dezvoltat în comun de IBM (noduri de server), Mellanox (interconectare) și Nvidia (acceleratoare grafice), și instalat la Laboratorul Național Oak Ridge  , a devenit al doilea, pierzând onorabil primul loc pentru noul sistem de top japonez Fugaku ( rus. Fugaku ), care a arătat un rezultat High Performance / Highly Parallel Linpack (HPL) de 415,5 petaflopi. Acest indicator depășește capacitățile Summit-ului de 2,8 ori. Fugaku este alimentat de SoC A64FX cu 48 de nuclee de la Fujitsu, ceea ce îl face primul sistem pe primul loc din lista TOP500 cu procesoare ARM. La o precizie unică sau mai mică, care este adesea folosită pentru sarcini de învățare automată și inteligență artificială, Fugaku atinge vârfuri la peste 1.000 de petaflops (1 exaflops). Noul sistem este instalat la RIKEN Computational Science Center (R-CCS) din Kobe, Japonia.

procesoare ARM

Mai multe familii de procesoare ARM sunt în prezent semnificative:

În 2010, producătorul a anunțat procesoare Cortex-A15 cu numele de cod Eagle, ARM susține că nucleul Cortex A15 este cu 40% mai rapid la aceeași frecvență decât nucleul Cortex-A9 cu același număr de nuclee pe cip [12] . Produsul, fabricat folosind o tehnologie de proces de 28 nm, are 4 nuclee, poate funcționa la o frecvență de până la 2,5 GHz și va fi susținut de multe sisteme de operare moderne [13] [14] .

Populara familie de microprocesoare xScale a Marvell (până la 27 iunie 2007 - Intel [15] ) este de fapt o extensie a arhitecturii ARM9 , completată de setul de instrucțiuni Wireless MMX , dezvoltat special de Intel pentru a suporta aplicații multimedia.

Versiunile nucleului ARM (tabel)
Familia Kernel Varianta de arhitectura Nucleu Funcții Cache (I/D)/ MMU MIPS tipic @ MHz Utilizare
ARM1 ARMv1 (învechit) ARM1 Nu Sistem de evaluare ARM Procesor BBC Micro
ARM2 ARMv2 (învechit) ARM2 S-a adăugat comanda MUL (înmulțire) Nu 4 MIPS @ 8 MHz
0,33 DMIPS /MHz
Ghinda Arhimede , Mașină de șah
ARMv2a (învechit) ARM250 MEMC (MMU), GPU integrat, comenzi adăugate SWP și SWPB (swap). Nu, MEMC1a 7 MIPS la 12 MHz Ghinda Arhimede
ARM3 ARMv2a (învechit) ARM2a Cache folosit pentru prima dată 4 KB total 12 MIPS la 25 MHz
0,50 DMIPS/MHz
Ghinda Arhimede
ARM6 ARMv3 (învechit) ARM60 Spațiu de adresă de memorie de 32 de biți (în loc de 26 de biți) introdus pentru prima dată Nu 10 MIPS la 12 MHz Multiplayer interactiv 3DO , receptor GPS Zarlink
ARM600 La fel ca ARM60, coprocesorul matematic în virgulă mobilă FPA10 4 KB total 28 MIPS la 33 MHz
ARM610 Ca ARM60, cache, fără magistrală de coprocesor 4 KB total 17 MIPS la 20 MHz
0,65 DMIPS/MHz
Acorn Risc PC 600 , seria Apple Newton 100
ARM7 ARMv3 (învechit) ARM700 8 KB total 40 MHz Card CPU prototip Acorn Risc PC
ARM710 Ca ARM700 8 KB total 40 MHz Acorn Risc PC 700
ARM710a Ca ARM700 8 KB total 40MHz 0,68DMIPS
/MHz
Acorn Risc PC 700 , Apple eMate 300
ARM7100 La fel ca ARM710a, SoC integrat 8 KB total 18 MHz Seria Psion 5
ARM7500 La fel ca ARM710a, SoC integrat. 4 KB total 40 MHz Acorn A7000
ARM7500FE La fel ca ARM7500, „FE” a adăugat controlere de memorie FPA și EDO 4 KB total
56MHz 0,73DMIPS/ MHz
Computer de rețea Acorn A7000+
ARM7TDMI ARMv4T ARM7TDMI(-S) Transportor în 3 trepte, modul Thumb Nu 15 MIPS la 16,8 MHz
63 DMIPS la 70 MHz
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7 , Juice Box , NXP Semiconductors LPC2000 și LH754xx , CoreMP7 de la Actel
ARM710T Ca ARM7TDMI, cache 8 KB partajat, MMU 36 MIPS la 40 MHz Seria Psion 5mx , Psion Revo /Revo Plus/Diamond Mako
ARM720T Ca ARM7TDMI, cache 8 KB partajat , MMU cu extensie Fast Context Switch  60 MIPS la 59,8 MHz Zipit Wireless Messenger , NXP Semiconductors LH7952x
ARM740T Ca ARM7TDMI, cache MPU
ARMv5TEJ ARM7EJ-S Conductă în 5 etape, Thumb, Jazelle DBX, comenzi DSP avansate nici unul
Braț puternic ARMv4 SA-110 16KB/16KB MMU 203MHz
1.0DMIPS/MHz
Apple Newton seria 2x00, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS
SA-1100 La fel ca SA-110, SoC integrat 16KB/8KB MMU 203 MHz Psion netBook
SA-1110 La fel ca SA-110, SoC integrat 16KB/8KB MMU 206 MHz LART (computer) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, seria Jornada 560 , Palm Zire 31
ARM8 ARMv4 ARM810 [16] Conductă în 5 etape, predicție de ramificație statică, memorie cu lățime de bandă dublă 8 KB unificat, MMU 84 MIPS @ 72 MHz
1,16 DMIPS/MHz
Card CPU prototip Acorn Risc PC
ARM9TDMI ARMv4T ARM9TDMI Transportor în 5 trepte, Thumb nici unul
ARM920T Ca ARM9TDMI, cache 16 KB/16 KB, MMU cu FCSE (Fast Context Switch Extension) [17] 200 MIPS la 180 MHz Armadillo , Atmel AT91SAM 9, GP32 , GP2X (primul nucleu), Tapwave Zodiac ( Motorola i. MX1), Calculatoare Hewlett Packard HP-49/50 , Sun SPOT , Cirrus Logic EP9302, EP9307, EP9312, EP9312, EP9312, EP9312, Samsung (HTC2TN442 ) , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( dispozitive de navigare TomTom ) [19]
ARM922T Ca ARM9TDMI, cache 8KB/8KB MMU NXP Semiconductors LH7A40x
ARM940T Ca ARM9TDMI, cache 4 KB/4 KB MPU GP2X (al doilea nucleu), Meizu M6 Mini Player [20] [21]
ARM9E ARMv5TE ARM946E-S Thumb, instrucțiuni DSP îmbunătățite, cache memorii variabile, strâns cuplate, MPU Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , cipuri Conexant 802.11, Samsung S5L2010
ARM966E-S Thumb, instrucțiuni DSP îmbunătățite fără cache, TCM-uri STM STR91xF, inclusiv Ethernet [23]
ARM968E-S Ca ARM966E-S fără cache, TCM-uri NXP Semiconductors LPC2900
ARMv5TEJ ARM926EJ-S Thumb, Jazelle DBX, instrucțiuni DSP îmbunătățite variabile, TCM, MMU 220 MIPS la 200 MHz Telefoane mobile: Sony Ericsson (seria K, W); Siemens și Benq (seria x65 și mai nou); 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 — nucleu nedocumentat în cipul grafic ATi Hollywood utilizat în Wii, [24] Samsung S3C24412 Controlerul lui Squeezebox Duet . Radio Squeezebox ; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telecipuri TCC7801, TCC7901; Sistemul ZMS-05 ZiiLABS pe un cip; Western Digital MyBook I World Edition
ARMv5TE ARM996HS Procesor fără ceas precum ARM966E-S fără cache, TCM, MPU
ARM10E ARMv5TE ARM1020E Conductă în 6 etape, Thumb, instrucțiuni DSP îmbunătățite, (VFP) 32KB/32KB MMU
ARM1022E Ca ARM1020E 16KB/16KB MMU
ARMv5TEJ ARM1026EJ-S Thumb, Jazelle DBX, instrucțiuni DSP îmbunătățite, (VFP) variabilă, MMU sau MPU Western Digital MyBook II World Edition; SoC-uri ADSL Conexant so4610 și so4615
Xscale ARMv5TE 80200/IOP310/IOP315 Procesor I/O, Thumb, instrucțiuni DSP îmbunătățite
80219 400/600 MHz Thecus N2100
  • Procesorul Intel 80219 include un nucleu XScale de mare viteză pe 32 de biți la 400 sau 600 MHz cu o interfață PCI-X pe 64 de biți
  • Busul PCI/ PCI-X permite conectarea controlerelor Gigabit Ethernet
IOP321 600 Bogo Mips la 600 MHz Iyonix
IOP33x
IOP34x 1-2 nuclee, accelerare RAID 32K/32K L1, 512K L2, MMU
PXA210/PXA250 Procesor de aplicații, conductă în 7 etape PXA210: 133 și 200 MHz, PXA250: 200, 300 și 400 MHz Zaurus SL-5600, iPAQ H3900, Sony CLIÉ NX60, NX70V, NZ90
PXA255 32KB/32KB MMU 400 Bogo Mips @ 400 MHz; 371-533 MIPS la 400 MHz [25] Gumstix basix & connex , Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder , iRex ILiad
PXA263 200, 300 și 400 MHz Sony CLIÉ NX73V, NX80V
PXA26x implicit 400 MHz, până la 624 MHz Palm Tungsten T3
PXA27x Procesor de aplicații 32KB/32KB MMU 800 MIPS la 624 MHz Gumstix verdex , „Trizeps-Modules” PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50, and x51 series, Motorola Q, Balloon3 , Palmtech Greenphone , Motorola , TrolltechTX TX 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é G900, HP Z755, Z755, Z755 navigator de afaceri
PXA800(E)F
PXA3XX (nume de cod „Monahans”) PXA31x are un accelerator grafic hardware 32KB/32KB L1, TCM, MMU 800 MIPS la 624 MHz highscreen alex
PXA900 Blackberry 8700, Blackberry Pearl (8100)
IXC1100 Procesor plan de control
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x NSLU2 IXP460/IXP465
ARM11 ARMv6 ARM1136J(F)-S [26] Conductă în 8 etape, SIMD , Thumb, Jazelle DBX, (VFP), instrucțiuni DSP îmbunătățite variabilă, 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 (cu coprocesor ARM926EJ-S integrat la 274 MHz, utilizat în HTC Tyfiish IITN , Eten Glofish II ) , HTC Nike ), Freescale i.MX31 (utilizat în Zune 30gb original și Toshiba Gigabeat S), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic , Nokia 6120 Classic , Nokia 6120 Qualcomm MSM7201A așa cum se vede în 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 Hero- , și Samsung SGH Hero- , i627 (Propel Pro) , Qualcomm MSM7227 / MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28]
ARMv6T2 ARM1156T2(F)-S Conductă în 9 etape, SIMD , Thumb-2, (VFP), instrucțiuni DSP îmbunătățite variabilă, MPU
ARMv6KZ ARM1176JZ(F)-S Ca și ARM1136EJ(F)-S variabilă, MMU+TrustZone Apple iPhone (original și 3G) , Apple iPod touch (generația I și a II-a) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telecipuri TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (de ex. Samsung Moment ), S3C6430 [31]
ARMv6K ARM11MPCore Ca și ARM1136EJ(F)-S, SMP cu 1-4 nuclee variabilă, MMU Nvidia APX 2500
Familia Kernel Varianta de arhitectura Nucleu Funcții Cache (I/D)/MMU MIPS tipic @ MHz Aplicații
Cortexul ARMv7-A Cortex-A5 VFP, NEON, Jazelle RCT și DBX, Thumb-2, conductă în 8 etape, în comandă, SMP cu 1-4 nuclee variabilă (L1), MMU+TrustZone până la 1500 (1,5 DMIPS/MHz) „Sparrow” (nume de cod ARM) [32] [33] [34]
Cortex-A8 VFP, NEON, Jazelle RCT, Thumb-2; Conductă în 13 trepte, în comandă, 2 decodoare [35] variabilă (L1+L2), MMU+TrustZone până la 2000 (2,0 DMIPS/MHz cu viteză de la 600 MHz la mai mult de 1 GHz) Seria TI OMAP3xxx , SBM7000, Universitatea de Stat din Oregon OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (generația a treia) , Apple iPad ( procesor Apple A4 ), Apple iPhone 4 ( procesor Apple A4 ), Archos 5 , Archos 101 , FreeScale i.MX51- SOC , BeagleBoard , Motorola Droid , Motorola Droid X , Palm Pre , Samsung Omnia HD , Samsung Wave S8500 , Nexus S , Sony Ericsson Satio , Touch Book , Nokia N900 , Meizu M9 , sistemul ZiiLABS ZMS-08 pe un cip, Boxchip A13
Cortex-A9 Profil aplicație, (VFP), (NEON), Jazelle RCT și DBX, Thumb-2, Problemă speculativă în afara ordinei superscalare (2 decodoare); 9-12 [35] etape de conductă MMU+TrustZone 2,5DMIPS/MHz Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G
Cortex-A9 MPCore Ca și Cortex-A9, 1-4 nuclee SMP MMU+TrustZone 10.000 DMIPS la 2 GHz pe TSMC 40G cu performanță optimizată (quad core?) (2,5 DMIPS/MHz per nucleu) PlayStation® Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517
Cortex-A15 MPCore 1-32 nuclee SMP; Superscalar necomandat (3 decodoare); 15+ trepte transportoare [35] ; VFPv4, NEON [36] MMU, LPAE 3,5DMIPS/MHz/Core; 1,0 GHz - 2,5 GHz (@ 28 nm [35] )
Cortex-A7 MPCore [37] FPU,NEON; În ordine (1 decodor); Transportor cu 8 trepte. 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) Profil încorporat, Thumb-2, (FPU) cache variabilă, MPU opțional 600 DMIPS la 475 MHz Broadcom este un utilizator, TI TMS570
ARMv7-ME Cortex-M4 (nume de cod „Merlin”) [38] Profil de microcontroler, atât Thumb cât și Thumb-2, FPU. Hardware MAC, SIMD și instrucțiuni de împărțire MPU optional 1,25DMIPS/MHz NXP Semiconductors , STM32 , TI Stellaris LM4F
ARMv7-M Cortex-M3 Profil de microcontroler, numai Thumb-2. instrucțiuni de împărțire hardware fără cache, MPU opțional 125 DMIPS la 100 MHz TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Ember 's EM3xx Series, Atmel AT91SAM 3, Europe Technologies EasyBCU , Energy Micro 's EFM32 , Actel 's SmartFusion , Milandre 1986BE91T [2]
ARMv6-M Cortex-M0 (nume de cod „Swift”) [39] Profil de microcontroler, subset Thumb-2 (instrucțiuni Thumb pe 16 biți și BL, MRS, MSR, ISB, DSB și DMB) Fără cache 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 vizat, profil microcontroler, subset Thumb-2 (instrucțiuni Thumb pe 16 biți și BL, MRS, MSR, ISB, DSB și DMB) Niciuna, memorie strâns cuplată opțională Până la 136 DMIPS la 170 MHz [46] (0,8 DMIPS/MHz, [47] MHz realizabil în funcție de FPGA) Dispozitivele Actel ProASIC3, ProASIC3L, IGLOO și Fusion PSC , Altera Cyclone III , alte produse FPGA sunt de asemenea acceptate, de exemplu Synplicity

[48]

Familia Kernel Varianta de arhitectura Nucleu Funcții Cache (I/D)/ MMU MIPS tipic @ MHz Aplicații

Arhitectură

Există de mult timp un ghid de referință pentru arhitectura ARM care delimitează toate tipurile de interfețe pe care le suportă ARM, deoarece detaliile de implementare ale fiecărui tip de procesor pot varia. Arhitectura a evoluat de-a lungul timpului și de la ARMv7 au fost definite 3 profiluri:

Profilurile pot accepta mai puține comenzi (comenzi de un anumit tip).

Moduri

Procesorul poate fi în unul dintre următoarele moduri de operare:

Comutarea modului procesorului are loc atunci când apare o excepție corespunzătoare sau prin modificarea registrului de stare.

Set de comenzi

Pentru a menține dispozitivul curat, simplu și rapid, fabricarea originală ARM a fost realizată fără microcod , la fel ca procesorul mai simplu pe 8 biți 6502 utilizat în microcalculatoarele anterioare de la Acorn Computers .

Set de instrucțiuni ARM

Modul în care este executat setul de instrucțiuni pe 32 de biți.

Set de instrucțiuni de bază ARM: [49]

ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, TEQ, TST

Set de comenzi Thumb

Pentru a îmbunătăți densitatea codului, procesoarele care încep cu ARM7TDMI sunt echipate cu un mod „degetul mare”. În acest mod, procesorul execută un set alternativ de instrucțiuni pe 16 biți. Majoritatea acestor instrucțiuni pe 16 biți sunt traduse în instrucțiuni ARM normale. Reducerea lungimii instrucțiunii se realizează prin ascunderea unor operanzi și prin limitarea adresabilității în comparație cu modul complet de set de instrucțiuni ARM.

În modul Thumb, codurile operaționale mai mici au mai puține funcționalități. De exemplu, numai ramurile pot fi condiționate, iar multe opcodes sunt limitate la accesarea doar la jumătate din registrele procesorului principal. Codurile operaționale mai scurte au ca rezultat, în general, o densitate mai mare a codului, deși unele coduri operaționale necesită instrucțiuni suplimentare. În situațiile în care portul de memorie sau lățimea magistralei este limitată la 16 biți, codurile operaționale mai scurte în modul Thumb sunt mult mai rapide decât codurile operaționale ARM obișnuite pe 32 de biți, deoarece trebuie încărcat mai puțin cod în procesor cu lățime de bandă limitată a memoriei.

Hardware precum Game Boy Advance are de obicei o cantitate mică de RAM disponibilă cu un canal de date complet pe 32 de biți. Dar majoritatea operațiunilor sunt efectuate printr-un canal de informații de 16 biți sau mai îngust. În acest caz, este logic să utilizați codul Thumb și să optimizați manual unele secțiuni grele de cod folosind comutarea la instrucțiuni complete ARM pe 32 de biți.

Primul procesor cu un decodor de comandă Thumb a fost ARM7TDMI. Toate procesoarele din familia ARM9 , precum și XScale , aveau un decodor de comandă Thumb încorporat.

Set de instrucțiuni Thumb-2

Thumb-2 este o tehnologie introdusă în nucleul ARM1156, care a fost anunțată în 2003. Acesta extinde setul de instrucțiuni Thumb limitat de 16 biți cu instrucțiuni suplimentare de 32 de biți pentru a oferi setului de instrucțiuni o lățime suplimentară. Scopul Thumb-2 este de a atinge densitatea codului de tip Thumb și performanța setului de instrucțiuni ARM pe 32 de biți. Putem spune că în ARMv7 acest obiectiv a fost atins.

Thumb-2 extinde atât instrucțiunile ARM, cât și Thumb cu și mai multe instrucțiuni, inclusiv manipularea câmpului de biți, ramificarea tabelelor, execuția condiționată. Noul „Limbaj de asamblare unificat” (UAL) acceptă construirea de comenzi atât pentru ARM, cât și pentru Thumb, din același cod sursă. Versiunile ARMv7 ale Thumb arată ca codul ARM. Acest lucru necesită prudență și utilizarea noii comenzi if-then, care acceptă executarea a până la 4 comenzi consecutive de stare de testare. Este ignorat în timpul compilării în codul ARM, dar generează comenzi în timpul compilării în codul ARM. De exemplu:

; dacă (r0 == r1) CMP r0 , r1 ITE EQ ; ARM: fără cod ... Thumb: instrucțiuni IT ; atunci r0 = r2; MOVEQ r0 , r2 ; ARM: condiționat; Thumb: stare prin ITE „T” (atunci) ; altfel r0 = r3; MOVNE r0 , r3 ; ARM: condiționat; Thumb: stare prin ITE „E” (altfel) ; Amintiți-vă că instrucțiunea Thumb MOV nu are biți pentru a codifica „EQ” sau „NE”

Toate matrițele ARMv7 acceptă setul de instrucțiuni Thumb-2, în timp ce unele matrițe, cum ar fi Cortex-m3, acceptă doar Thumb-2. Celelalte matrițe Cortex și ARM11 acceptă atât seturile de instrucțiuni Thumb-2, cât și ARM.

Set de comenzi Jazelle

Jazelle  este o tehnologie care permite codul octet Java se execute direct pe arhitectura ARM ca a treia stare de execuție (și set de instrucțiuni), împreună cu instrucțiuni ARM obișnuite și modul Thumb. Suportul pentru tehnologia Jazelle este indicat de litera „J” din numele procesorului - de exemplu, ARMv5TEJ. Această tehnologie a fost acceptată încă de la arhitectura ARMv6, deși nucleele mai noi conțin doar implementări limitate care nu acceptă accelerarea hardware.

ARMv8 și setul de instrucțiuni ARM pe 64 de biți

La sfârșitul anului 2011, a fost publicată o nouă versiune a arhitecturii, ARMv8. Acesta a introdus definiția arhitecturii AArch64, în care se execută setul de instrucțiuni A64 pe 64 de biți. Suportul pentru comenzile pe 32 de biți se numește A32 și este executat pe arhitecturile AArch32. Instrucțiunile Thumb sunt acceptate în modul T32, numai atunci când se utilizează arhitecturi pe 32 de biți. Este permis să ruleze aplicații pe 32 de biți într-un sistem de operare pe 64 de biți și să ruleze un sistem de operare virtualizat pe 32 de biți folosind un hypervisor pe 64 de biți [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM și alții au anunțat că vor folosi ARMv8. Miezurile Cortex-A53 și Cortex-A57 care acceptă ARMv8 au fost introduse de ARM pe 30 octombrie 2012 [51] .

Atât AArch32, cât și AArch64 acceptă VFPv3, VFPv4 și SIMD avansat (NEON). De asemenea, au adăugat instrucțiuni criptografice pentru lucrul cu AES , SHA-1 și SHA-256 .

Caracteristicile AArch64:

  • Noul set de instrucțiuni A64
  • 31 de registre de uz general, fiecare cu lungimea de 64 de biți
  • Registrele SP și PC separate
  • Instrucțiunile au dimensiunea de 32 de biți și multe sunt aceleași cu instrucțiunile A32
  • Majoritatea instrucțiunilor funcționează atât cu argumente pe 32 de biți, cât și pe 64 de biți
  • Adresele au o dimensiune de 64 de biți
  • SIMD avansat (NEON) îmbunătățit
  • Creșterea numărului de registre pe 128 de biți disponibile prin NEON, VFPv4, instrucțiuni cripto AES, SHA de la 16 la 32
  • Suportă calcule cu numere cu virgulă mobilă cu precizie dublă (dublu pe 64 de biți)
  • Conformitate totală cu IEEE 754
  • Noul sistem de excludere
  • Traducerea adreselor virtuale din formatul de 48 de biți funcționează folosind mecanismele LPAE existente

Funcții RISC

Arhitectura ARM are următoarele caracteristici RISC:

  • Arhitectura de încărcare/stocare
  • Fără suport pentru accesul la memorie neliniar (nealiniat la cuvinte) (acceptat acum în procesoarele ARMv6, cu unele excepții și complet în ARMv7)
  • Fișier registru uniform pe 16x32 de biți
  • Lungime fixă ​​a instrucțiunii (32 de biți) pentru a simplifica decodarea prin reducerea densității codului. Mai târziu, modul Thumb a crescut densitatea codului.
  • Execuție cu un singur ciclu

Pentru a compensa designul simplu, unele caracteristici de design au fost utilizate în comparație cu procesoarele moderne precum Intel 80286 sau Motorola 68020:

  • Instrucțiunile aritmetice înlocuiesc codurile condiționale numai atunci când este necesar
  • Un schimbător ciclic cu mai multe registre pe 32 de biți care poate fi utilizat fără pierderi de performanță în majoritatea instrucțiunilor aritmetice și calculelor de adrese.
  • Moduri puternice de adrese indexate
  • Registrul de referință pentru apelarea rapidă a funcțiilor frunzelor
  • Simplu, dar rapid, cu două niveluri de prioritate ale subsistemului de întrerupere cu bănci de registre activate.

Execuție condiționată

Una dintre diferențele semnificative dintre arhitectura ARM (arhitectura originală) și alte arhitecturi CPU este așa-numita predicție  - capacitatea de a executa în mod condiționat instrucțiuni. Prin „execuție condiționată” aici înțelegem că instrucțiunea va fi executată sau ignorată în funcție de starea curentă a steagurilor de stare a procesorului. În Thumb and Arm 64, predicția nu este utilizată - în primul mod nu există loc pentru ea în comandă (doar 16 biți), iar în al doilea - predicția este lipsită de sens si greu de implementat pe arhitecturi superscalare .

În timp ce pentru alte arhitecturi, de regulă, numai instrucțiunile de salt condiționate au această proprietate, arhitectura ARM a fost concepută pentru a executa condiționat aproape orice instrucțiune. Acest lucru a fost realizat prin adăugarea unui câmp special de 4 biți ( predicat ) la codurile lor de instrucțiuni. Una dintre valorile sale este rezervată faptului că instrucțiunea trebuie executată necondiționat, iar restul codifică una sau alta combinație de condiții (steaguri). Pe de o parte, având în vedere lungimea totală limitată a instrucțiunii, acest lucru a redus numărul de biți disponibili pentru codificarea offset-urilor în comenzile de acces la memorie, dar, pe de altă parte, a făcut posibilă eliminarea instrucțiunilor de ramificare la generarea codului pentru mici. if-blocuri.

Un exemplu considerat în mod obișnuit pentru ilustrare este algoritmul bazat pe scăderea lui Euclid . În limbajul C arată astfel:

în timp ce ( i != j ) { dacă ( i > j ) { i -= j ; } altfel { j -= i ; } }

Și în asamblatorul ARM - așa:

bucla CMP Ri , Rj ; setați condiția „NE” dacă (i != j), ; "GT" dacă (i > j), ; sau "LT" dacă (i < j) SUBGT Ri , Ri , Rj ; dacă „GT” (mai mare decât), i = ij; SUBLT Rj , Rj , Ri ; dacă „LT” (mai mic decât), j = ji; BNEloop ; _ dacă „NE” (nu este egal), atunci buclă

Din cod se poate observa că utilizarea predicației a făcut posibilă evitarea completă a ramificării în declarațiile else și apoi. Rețineți că, dacă Ri și Rj sunt egale, atunci niciuna dintre instrucțiunile SUB nu va fi executată, eliminând complet necesitatea unei ramuri care implementează o verificare while la fiecare început al buclei, care ar putea fi implementată, de exemplu, folosind SUBLE ( mai mic sau egal cu) instruire .

O modalitate prin care codul Thumb realizează economii mai mari de spațiu este tocmai prin eliminarea predicatului pe 4 biți din toate instrucțiunile, cu excepția ramurilor.

Alte caracteristici

O altă caracteristică a setului de instrucțiuni este capacitatea de a combina deplasări și rotații într-o instrucțiune de „prelucrare a informațiilor” (mișcare aritmetică, logică, registru-registru), astfel încât, de exemplu, expresia C:

a += ( j << 2 );

poate fi convertit într-o instrucțiune cu un cuvânt și un ciclu în ARM:

ADĂUGAȚI Ra , Ra , Rj , LSL #2

Acest lucru face ca programele ARM tipice să fie mai dense decât de obicei, cu acces mai puțin la memorie. Astfel, conducta este folosită mult mai eficient. Chiar dacă ARM rulează la viteze pe care mulți le-ar considera lent, concurează destul de ușor cu multe arhitecturi CPU mai sofisticate.

Procesorul ARM are, de asemenea, unele caracteristici rar întâlnite în alte arhitecturi RISC, cum ar fi adresarea în raport cu contorul de programe (de fapt, contorul de programe ARM este unul dintre cele 16 registre), precum și moduri de adresare pre- și post-increment.

O altă caracteristică care merită remarcată este că unele procesoare ARM timpurii (înainte de ARM7TDMI), de exemplu, nu au instrucțiuni pentru stocarea numerelor de 2 octeți. Astfel, strict vorbind, le este imposibil să genereze cod eficient care să se comporte așa cum era de așteptat de la obiectele C de tip „volatile int16_t”.

Conducta și alte aspecte de implementare

ARM7 și anterioare au o conductă în trei etape. Acestea sunt etapele transferului, decodării și execuției. Arhitecturile de performanță mai înaltă precum ARM9 au conducte mai complexe. Cortex-a8 are o conductă în 13 etape.

Coprocesoare

Arhitectura oferă o modalitate de a extinde setul de instrucțiuni folosind coprocesoare care pot fi abordate folosind MCR, MRC, MRRC, MCRR și instrucțiuni similare. Spațiul coprocesorului este împărțit logic în 16 coprocesoare numerotate de la 0 la 15, al 15-lea fiind rezervat pentru unele funcții tipice de management, cum ar fi gestionarea cache-ului și funcționarea unității de gestionare a memoriei (pe procesoarele care le au).

Pe mașinile bazate pe ARM, perifericele sunt de obicei conectate la procesor prin maparea registrelor lor fizice în memoria ARM sau în memoria coprocesorului sau prin atașarea lor la magistrale, care la rândul lor sunt conectate la procesor. Accesul la coprocesoare are o latență mai mare, așa că unele periferice sunt proiectate pentru a fi accesate în ambele direcții. În alte cazuri, dezvoltatorii de cipuri folosesc doar mecanismul de integrare a coprocesorului. De exemplu, un motor de procesare a imaginii ar trebui să fie compus dintr-un miez ARM7TDMI mic cuplat cu un coprocesor care acceptă operațiuni primitive pentru procesarea codificărilor elementare HDTV.

SIMD îmbunătățit (NEON)

O extensie a SIMD avansată, denumită și tehnologie NEON, este un set de instrucțiuni SIMD (Single instruction multiple Data) combinat pe 64 de biți și 128 de biți, care oferă accelerație standardizată pentru aplicațiile media și de procesare a semnalului. NEON poate decoda formatul audio mp3 la frecvența procesorului de 10 MHz și poate funcționa cu codec de vorbire GSM AMR (adaptive multi-rate) la maximum 13 MHz. Are un set impresionant de instrucțiuni, fișiere de registru separate și un sistem de execuție independent la nivel hardware. NEON acceptă informații întregi pe 8, 16, 32, 64 de biți, precizie unică și în virgulă mobilă și funcționează în operațiuni SIMD pentru procesarea audio și video (grafică și jocuri). În NEON SIMD acceptă până la 16 operațiuni simultan.

Unul dintre dezavantajele (sau, să zicem, o caracteristică) ale SIMD-ului îmbunătățit este că coprocesorul execută instrucțiunile SIMD-ului îmbunătățit cu o întârziere destul de semnificativă față de codul procesorului principal, întârzierea atinge două duzini de cicluri sau mai mult (în funcție de arhitectura si conditiile specifice). Din acest motiv, atunci când procesorul principal încearcă să folosească rezultatele calculului coprocesorului, execuția va fi înghețată pentru un timp semnificativ.

VFP

Tehnologia VFP (Vector Floating Point) este o extensie a coprocesorului din arhitectura ARM. Efectuează calcule cu costuri reduse pe numere cu virgulă mobilă de precizie simplă/dublă care sunt pe deplin compatibile cu Standardul ANSI/IEEE Std 754-1985 pentru aritmetica binară în virgulă mobilă . VFP efectuează calcule în virgulă mobilă potrivite pentru o gamă largă de aplicații, cum ar fi PDA-uri, smartphone-uri, compresie audio, grafică 3D și audio digital, precum și imprimante și set-top box-uri. Arhitectura VFP suportă, de asemenea, execuția de instrucțiuni vectoriale scurte. Dar, deoarece procesorul efectuează operații secvenţial pe fiecare element al vectorului, VFP nu poate fi numit un adevărat set de instrucţiuni SIMD. Acest mod poate fi util în aplicațiile grafice și de procesare a semnalului, deoarece reduce dimensiunea codului și generarea de instrucțiuni.

Alte coprocesoare în virgulă mobilă și/sau SIMD găsite pe procesoarele ARM includ FPA , FPE , iwMMXt . Ele oferă aceeași funcționalitate ca și VFP, dar nu sunt compatibile cu acesta la nivel de cod operațional .

Extensii de securitate

Extensiile de securitate comercializate ca TrustZone Technology se găsesc în ARMv6KZ și în alte arhitecturi mai recente profilate de aplicații. Oferă o alternativă cu costuri reduse la adăugarea unui motor de securitate dedicat, oferind 2 vCPU-uri suportate de controlul accesului hardware. Acest lucru permite nucleului aplicației să comute între două stări numite „lumi” (pentru a evita confuzia cu posibilele nume de domenii) pentru a preveni scurgerea informațiilor din lumea mai importantă în lumea mai puțin importantă. Acest comutator mondial este de obicei ortogonal cu toate celelalte capabilități ale procesorului. Astfel, fiecare lume poate rula independent de alte lumi folosind același nucleu. Memoria și, respectiv, perifericele sunt făcute pentru a se potrivi lumii nucleului și pot folosi acest lucru pentru a obține controlul accesului la secretele și codurile nucleului. Aplicațiile tipice TrustZone Technology ar trebui să ruleze un sistem de operare complet în lumea mai puțin importantă și un cod compact, specific de securitate în lumea mai importantă, permițând Digital Rights Management mult mai mult control asupra utilizării media pe dispozitivele bazate pe ARM și împiedicând accesul neautorizat la aparatul..

În practică, deoarece detaliile specifice ale implementării TrustZone rămân proprietatea companiei și nu sunt dezvăluite, rămâne neclar ce nivel de securitate este garantat pentru acest model de amenințare.

Depanare

Toate procesoarele ARM moderne au hardware de depanare, deoarece fără ele, depanatorii de software nu ar putea efectua cele mai de bază operațiuni precum oprirea, indentarea, setarea punctelor de întrerupere după repornire.

Arhitectura ARMv7 definește caracteristicile de bază de depanare la nivel arhitectural. Acestea includ puncte de întrerupere, puncte de urmărire și executarea comenzilor în modul de depanare. Astfel de instrumente au fost disponibile și cu modulul de depanare EmbeddedICE. Ambele moduri sunt acceptate - oprire și revizuire. Mecanismul de transport real care este utilizat pentru a accesa instrumentele de depanare nu este specificat arhitectural, dar implementarea include de obicei suport JTAG .

Există o arhitectură separată de depanare „vizualizare kernel” care nu este necesară din punct de vedere arhitectural de procesoarele ARMv7.

Registre

ARM oferă 31 de registre de uz general pe 32 de biți . În funcție de modul și starea procesorului, utilizatorul are acces doar la un set de registre strict definit. În starea ARM, 17 registre sunt disponibile în mod constant dezvoltatorului:

  • 13 registre de uz general (r0..r12).
  • Stack Pointer (r13) - conține indicatorul de stivă al programului care se execută.
  • Registrul de legături (r14) - conține adresa de retur în instrucțiunile de filială.
  • Program Counter (r15) - biții [31:1] conțin adresa instrucțiunii care se execută.
  • Registrul de stare a programului curent (CPSR) - conține steaguri care descriu starea curentă a procesorului. Se modifică la executarea multor instrucțiuni: logice, aritmetice etc.

În toate modurile, cu excepția modului Utilizator și a modului Sistem, este disponibil și Registrul de stare program salvat (SPSR). După ce apare o excepție, registrul CPSR este stocat în SPSR. Astfel, starea procesorului (mod, stare; steaguri de aritmetică, operații logice, activare întrerupere) este fixată în momentul imediat înainte de întrerupere [52] .

usr sys svc cca 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

Înregistrați aliasuri:

reg. funkt. argumente vars GCC cometariu
R0 a1 aN - argumentul funcției
R1 a2
R2 a3
R3 a4
R4 v1 vN - variabilă de registru
R5 v2
R6 v3
R7 v4
R8 v5
R9 SB v6 SB - Registrul de bază static
R10 v7 SL SL-?
R11 v8 FP FP - Stack frame address  ?
R12 IP IP - Registrul scratch al apelurilor intra-procedură
R13 SP indicator de stivă
R14 LR Link registru
R15 PC Contor de programe

Lucrul cu memoria

Arhitectura ARM folosește un singur spațiu de adrese [53] . În practică, această schemă înseamnă că o adresă poate indica memorie ( RAM sau ROM ) sau porturi I/O, spre deosebire de o schemă în care porturile I/O au propriul spațiu de adrese.

Sisteme I/O acceptate

Cele mai multe dintre produsele existente care utilizează arhitectura ARM sunt sisteme complete pe un cip care au capacitatea de a lucra cu memorie externă dinamică cu acces aleatoriu ( DRAM ) și conțin controlere pentru multe magistrale periferice, în special USB , IIC (I2C), dispozitive de sunet, controlere pentru lucrul cu medii flash de standarde SD și MMC , controlere de afișare și camere digitale (MIPI).

Toate procesoarele au linii de intrare/ieșire de uz general (GPIO). În dispozitivele de consum, butoanele „pornire rapidă” și de control al volumului, LED-uri de semnal, o tastatură etc. pot fi conectate la acestea.

Procesul de pornire a sistemului de operare pe mașinile ARM

După pornirea sistemului bazat pe procesorul ARM, bootloader-ul și adresa punctului său de intrare sunt încărcate din memoria ROM. Bootloader-ul preinițializează sistemul, îndeplinind astfel același rol pe care îl îndeplinește BIOS-ul pe sistemele x86, după care poate încărca fie încărcătorul de sistem, fie direct OS-ul.

Nu există un standard unic pentru bootloader. Poate fi folosit un bootloader U-Boot , iar UEFI este adesea folosit pentru ARMv8 pe 64 de biți. Multe aplicații folosesc propriile lor încărcătoare.

OS care acceptă ARM

Arhitectura ARM este suportată de multe sisteme de operare. Cel mai utilizat: Linux (inclusiv Android ), iOS , Windows Phone .

Diverse sisteme de operare Unix și Unix-like pot funcționa pe sisteme cu un procesor ARM: Linux (multe distribuții), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54 ] ), Firefox OS , macOS Big Sur .

Platforma lansează și variante separate ale familiei Windows : Windows CE , Windows Phone , Windows RT , Windows 10 .

În plus, ARM este suportat de: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .

Vezi și

  • OpenRISC  - arhitectură 2000 cu implementare GPL a or1k
  • LEON  - implementări gratuite (GPL, LGPL) ale arhitecturii SPARC V8 apărute în 1997
  • OpenSPARC  este o implementare gratuită (GPL) a arhitecturii SPARC V9 din 2005
  • OpenPOWER  - arhitectura IBM Power , fondată în 2013 de IBM, Google, Mellanox, NVIDIA
  • RISC-V  este o arhitectură și un set de instrucțiuni gratuit și deschis pentru microprocesoare și microcontrolere create în 2010
  • MIPS  - Seturi de instrucțiuni și arhitectură MIPS

Note

  1. ARM Limited este implicată exclusiv în dezvoltarea de nuclee și instrumente pentru acestea ( compilatoare , instrumente de depanare etc.), câștigând bani pe licențierea arhitecturii către producători terți.
  2. Sistem pe un cip 1892VM14Ya . multicore.ru Preluat la 28 decembrie 2018. Arhivat din original la 29 decembrie 2018.
  3. 1 2 D. Kozlov-Kononov. Miezuri de procesor din familia Cortex. Combinație de înaltă performanță și consum redus de energie Arhivat 24 noiembrie 2013 la Wayback Machine , Electronics Magazine, nr. #8/2010
  4. Ghid introductiv la microcontrolerele ARM Cortex-M3 . Consultat la 29 septembrie 2013. Arhivat din original pe 27 septembrie 2013.
  5. „Armed for the living room” Arhivat 9 noiembrie 2012 la Wayback Machine .
  6. „Un interviu cu Steve Furber” Arhivat 27 iulie 2011 la Wayback Machine // Communications of the ACM, mai 2011, vol. 54 nr. 5, paginile 34-39, doi:10.1145/1941487.1941501
  7. Maniere, David . ARM's way , Electronics Weekly  (29 aprilie 1998). Arhivat din original pe 29 iulie 2012. Preluat la 26 octombrie 2012.
  8. Sophie Wilson-CHM . Consultat la 4 aprilie 2019. Arhivat din original pe 4 aprilie 2019.
  9. Apache Benchmarks for Calxeda's 5-Watt Web Server - ARM Servers, Now! (link indisponibil) . Consultat la 26 noiembrie 2012. Arhivat din original la 30 octombrie 2012. 
  10. Înnorat cu șanse de ARM. Ce înseamnă piața de microservere pentru furnizorii de semiconductori Arhivat 2 decembrie 2012 la Wayback Machine // Oppenheimer & Co. Inc, 30 martie 2012
  11. Exclusiv: ARM Cortex-A15 „40 Percent” Faster Than Cortex-A9 . Consultat la 5 octombrie 2013. Arhivat din original la 21 iulie 2011.
  12. Procesor Cortex-A15  . BRAŢ. — Prezentarea procesoarelor familiei ARM CortexA15 MPCore pe site-ul producătorului. Consultat la 20 aprilie 2012. Arhivat din original la 30 mai 2012.
  13. ARM Cortex-A15 - Procesor de până la 2,5 GHz, nu doar pentru smartphone-uri . Ferra.ru (10 septembrie 2010). Consultat la 20 aprilie 2012. Arhivat din original pe 26 aprilie 2012.
  14. Sala de știri Intel | Top titluri, știri de ultimă oră și evenimente curente de la Intel (link nu este disponibil) . Consultat la 4 octombrie 2013. Arhivat din original pe 6 martie 2009. 
  15. ^ „ ARM810 - Dancing to the Beat of a Different Drum” Arhivat 10 septembrie 2008 la Wayback Machine Arhivat 23 iulie 2011. Prezentare ARM Holdings la Hot Chips 1996-08-07.
  16. Register 13, FCSE PID register Arhivat 7 iulie 2011 la Wayback Machine ARM920T Technical Reference Manual
  17. Neo1973: comparație GTA01Bv4 versus GTA02 . Consultat la 15 noiembrie 2007. Arhivat din original pe 13 martie 2012.
  18. S3C2410 . Data accesului: 13 ianuarie 2010. Arhivat din original pe 13 martie 2012.
  19. Seria Rockbox Samsung SA58xxx . Consultat la 22 februarie 2008. Arhivat din original pe 13 martie 2012.
  20. Rockbox Meizu M6 Port - Informații hardware . Consultat la 22 februarie 2008. Arhivat din original pe 13 martie 2012.
  21. Fișe tehnice - Magic Lantern Firmware Wiki . Consultat la 6 iunie 2010. Arhivat din original pe 18 iulie 2011.
  22. Microcontroller STR9 - STR912 - STR912FW44 - pagina de descărcare a documentelor și fișierelor (link indisponibil) . mcu.st.com. Consultat la 18 aprilie 2009. Arhivat din original pe 10 februarie 2007. 
  23. Starlet Arhivat pe 10 octombrie 2018 la Wayback Machine .
  24. Benchmarks - Albatros (link indisponibil) . Albatross-uav.org (18 iunie 2005). Consultat la 18 aprilie 2009. Arhivat din original la 16 octombrie 2008. 
  25. ARM1136J(F)-S - Procesor ARM . arm.com. Consultat la 18 aprilie 2009. Arhivat din original pe 13 martie 2012.
  26. Chips Qualcomm kernel ARM - de la telefoane la laptopuri . xi0.info. Preluat la 8 mai 2010. Arhivat din original la 13 martie 2012.
  27. Chipset Qualcomm MSM7227 RISC . pdadb.net. Preluat la 8 mai 2010. Arhivat din original la 13 martie 2012.
  28. GoForce 6100 . Nvidia.com. Consultat la 18 aprilie 2009. Arhivat din original pe 13 martie 2012.
  29. Mediatek MT6573 . http://www.mediatek.com.+ Accesat la 18 aprilie 2009. Arhivat din original pe 6 iunie 2012.
  30. Procesoare Samsung S3C6410 și S3C6430 Series ARM (link indisponibil) . Samsung. Consultat la 8 octombrie 2009. Arhivat din original la 1 septembrie 2009.   și Qualcomm MSM7627 așa cum se vede în Palm Pixi și Motorola Calgary/Devour
  31. Merrit, Rick „ARM se întinde cu nucleu A5, grafică, FPGA” . EE Times (21 octombrie 2009). Consultat la 28 octombrie 2009. Arhivat din original la 13 martie 2012.
  32. Clarke, Peter ARM sugerează planuri pentru nucleele procesoarelor Swift și Sparrow . EE Times (3 februarie 2009). Consultat la 18 aprilie 2009. Arhivat din original pe 13 martie 2012.
  33. Segan, cipurile multicore de la Sascha ARM vizează netbook-uri . Revista PC (9 aprilie 2009). Consultat la 18 aprilie 2009. Arhivat din original pe 13 martie 2012.
  34. 1 2 3 4 標æº- Arhivat 29 iulie 2013 la Wayback Machine Arhivat 29 iulie 2013.
  35. Procesor Cortex-A15 - ARM . Preluat la 24 octombrie 2012. Arhivat din original la 30 mai 2012.
  36. Procesor Cortex-A7 - ARM . Preluat la 24 octombrie 2012. Arhivat din original la 31 mai 2016.
  37. Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2 februarie 2010). Preluat la 3 mai 2010. Arhivat din original la 13 martie 2012.
  38. Clarke, Peter ARM pregătește un nucleu mic pentru microcontrolere cu putere redusă . EE Times (23 februarie 2009). Consultat la 30 noiembrie 2009. Arhivat din original pe 13 martie 2012.
  39. Walko, John NXP primul care a demonstrat ARM Cortex-M0 silicon . EE Times (23 martie 2009). Consultat la 29 iunie 2009. Arhivat din original la 13 martie 2012.
  40. ARM Powered VCAs " Triad Semiconductor Arhivat 16 iulie 2011 la Wayback Machine Arhivat 16 iulie 2011.
  41. Cortex-M0 folosit în controlerul tactil de putere redusă - 06/10/2009 - Electronics Weekly . Consultat la 6 iunie 2010. Arhivat din original pe 16 august 2011.
  42. Chungbuk Technopark alege procesorul ARM Cortex-M0 . Preluat la 6 iunie 2010. Arhivat din original la 7 octombrie 2010.
  43. Traducere Google . Preluat la 3 mai 2022. Arhivat din original la 22 ianuarie 2020.
  44. Austriamicrosystems alege procesorul ARM Cortex-M0 pentru aplicații cu semnal mixt . Preluat la 6 iunie 2010. Arhivat din original la 22 iulie 2011.
  45. „ARM Extends Cortex Family with First Processor Optimized for FPGA” Arhivat 5 mai 2007 la Wayback Machine , comunicat de presă ARM, 19 martie 2007. Recuperat la 11 aprilie 2007.
  46. „ARM Cortex-M1” Arhivat la 1 aprilie 2007 pe Wayback Machine , site-ul web al produsului ARM. Preluat la 11 aprilie 2007.
  47. ARM extinde familia Cortex cu primul procesor optimizat pentru FPGA Arhivat 5 mai 2007 la Wayback Machine .
  48. Categorie:Opcodes -  ARMwiki . www.heyrick.co.uk. Preluat la 6 august 2018. Arhivat din original la 6 august 2018.
  49. ARM (link în jos) . Consultat la 15 aprilie 2013. Arhivat din original pe 10 iunie 2018. 
  50. ARM lansează seria Cortex-A50, cea mai… din lume - ARM . Consultat la 17 aprilie 2013. Arhivat din original pe 20 aprilie 2013.
  51. ARM7TDMI (rev 3)  Manual de referință tehnică . Preluat la 22 august 2009. Arhivat din original la 13 martie 2012.
  52. http://www.peter-cockerell.net/aalp/html/ch-2.html Arhivat 8 decembrie 2015 la Wayback Machine „Dispozitivele de intrare și de ieșire sunt mapate în memorie. Nu există un concept de spațiu de adrese I/O separat. Cipurile periferice sunt citite și scrise ca și cum ar fi zone de memorie. Aceasta înseamnă că în sistemele practice ARM, harta memoriei este împărțită în trei zone: RAM, ROM și dispozitive de intrare/ieșire (probabil în ordinea descrescătoare a dimensiunii)."
  53. Proiect OpenSolaris: Port Platformă ARM . Microsisteme solare . Arhivat din original pe 13 martie 2012.

Link -uri