BRAŢ | |
---|---|
| |
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 .
Î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.
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.
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.
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.
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.
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 | ||||
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 | ||
Familia Kernel | Varianta de arhitectura | Nucleu | Funcții | Cache (I/D)/ MMU | MIPS tipic @ MHz | Aplicații |
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).
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.
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 ARMModul î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 ThumbPentru 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-2Thumb-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 JazelleJazelle este o tehnologie care permite codul octet Java să 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țiLa 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:
Arhitectura ARM are următoarele caracteristici RISC:
Pentru a compensa designul simplu, unele caracteristici de design au fost utilizate în comparație cu procesoarele moderne precum Intel 80286 sau Motorola 68020:
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.
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 #2Acest 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”.
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.
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.
VFPTehnologia 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 .
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.
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.
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:
Î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 |
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.
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.
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.
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 .
Microcontrolere | ||||||||
---|---|---|---|---|---|---|---|---|
Arhitectură |
| |||||||
Producătorii |
| |||||||
Componente | ||||||||
Periferie | ||||||||
Interfețe | ||||||||
OS | ||||||||
Programare |
|
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |
Arhitecturi de procesoare bazate pe tehnologii RISC | |
---|---|