Arkitektura ARM

ARM-ja është një arkitekture me instruksione (instruction set architecture (ISA)) RISC (reduced instruction set computer) 32-bit e krijuar nga ARM Holdings.  Ishte e njohur si Makineria RISC e avancuar, dhe përpara kësaj si Acorn RISC Machine.  Arkitektura ARM është ISA 32-bit me e përdorur sipas sasisë së prodhuar."ARM Cores Climb Into 3G Territory"  by Mark Hachman, 2002."The Two Percent Solution"  by Jim Turley 2002.  Fillimisht u konceptua si një procesor për kompjutera personal me desktop nga Acorn Computers, një treg tashmë i zotëruar nga familja x86 e përdorur nga kompjutera te pajtueshëm me platformën IBM PC.  Thjeshtësia relative e procesorëve ARM i beri ato te përshtatshëm për aplikacione me fuqi të vogël.  Kjo i bëri ato zotërues në tregun e celularëve dhe elektronikës së ngulitur si mikroprocesore dhe microcontrollues relativisht te vegjël dhe me çmim te ulët.

Në 2007, rreth 98 % e më shumë se një bilion celulareve të shitur përdorin të paktën një procesor ARM."ARMed for the living room".
Në 2009, procesorët ARM japin llogari për afërsisht 90 % të të gjithë procesorëve te ngulitur RISC 32-bit. Procesorët ARM përdoren gjerësisht në elektronikën e konsumit, duke përfshirë PDA-të, celularët, median digjitale, konzolat e lojërave që mbahen në dorë, makinave llogaritëse dhe për hard drive-t dhe router-et.

Arkitektura ARM është e licensueshme.  Kompanitë që kanë ose kanë patur licencën ARM përfshijnë Alcatel-Lucent, Apple Inc., Atmel, Broadcom, Cirrus Logic, Digital Equipment Corporation, Freescale, Intel (përmes DEC), LG, Marvell Technology Group, NEC, Nuvoton, NVIDIA, NXP (më parë e quajtur Philips), Oki, Qualcomm, Samsung, Sharp, STMicroelectronics, Symbios Logic, Texas Instruments, VLSI Technology, Yamaha dhe ZiiLABS.

Procesorët ARM krijohen nga ARM dhe të licencuarit e ARM-së.  Shembujt më të njohur të familjeve të procesorëve ARM të ARM Holdings përfshijnë ARM7, ARM9, ARM11 dhe Cortex.  Shembuj të procesorëve ARM të krijuar nga të licencuarit e rëndësishëm përfshijnë DEC StrongARM, Freescale i.MX, Marvell (më parë e quajtur Intel) XScale, Nintendo, NVIDIA Tegra, ST-Ericsson Nomadik, Qualcomm Snapdragon, dhe linjës se produkteve Texas Instruments OMAP.

 Historia 

Pasi arritën ca sukses me kompjuterin BBC Micro, Acorn Computers Ltd konsideruan si të ecnin përpara nga procesori MOS Technology 6502 relativisht i thjeshtë për të adresuar tregjet e biznesit si ai që së shpejti do zotërohej nga IBM PC, i filluar në 1981. Plani Acorn Business Computer (ABC) kërkonte një numër procesorësh të dytë të bëhen të punojnë me platformën BBC Micro, por procesorët si Motorola 68000 dhe National Semiconductor 32016 ishin të papërshtatshëm, dhe 6502 nuk kishte fuqi të mjaftueshme për një shpërfaqje grafike për përdoruesit.

Acorn-it do t'i duhej një arkitekture e re, pasi testoi të gjithë procesorët e disponueshëm dhe vuri re që i mungonin gjëra. Acorn-i pastaj konsideroi seriozisht projektimin e një procesori të vetin, dhe inxhinierët e tyre gjetën ca letra mbi projektin Berkeley RISC. Ata ndjenë se në qoftë se një klase studentësh te diplomuar mund të krijonin një procesor 32-bit konkurrues, atëherë Acorn nuk  do e kishte fare problem. Një udhëtim tek Western Design Center në Phoenix i tregoi inxhinierëve te Acorn-it Steve Furber dhe Sophie Wilson që nuk kishin nevojë për burime masive.

Wilson vendosi të krijonte kompletin e instruksioneve, duke shkruar një simulim te procesorit ne BBC Basic që përdorej në BBC Micro me një procesor të dyte 6502. Kjo ia mbushi mendjen inxhinierëve te Acorn-it se ishin ne rrugën e duhur. Gjithsesi, para se të shkonin më larg, do kishin nevojë për më shumë burime. Erdhi koha për Wilson-in t'i afrohej shefit ekzekutiv te Acorn-it, Hermann Hauser, dhe t'i shpjegonte çfarë ishte në përgatitje e sipër. Pasi të merrte konfirmimin, një skuadër e vogël u krijua për të zbatuar modelin e Wilson-it në hardware.


 Makineria Acorn RISC: ARM2 
Projekti zyrtar Makineria Acorn RISC filloi në tetor 1983. Projektimi drejtohej nga Wilson dhe Furber, me një qellim projektimi kryesor për te arritur trajtimin e hyrjes dhe daljes se te dhënave me sa më pak vonese si MOS Technology 6502 që u përdor në projektimet ekzistuese kompjuterike te Acorn. Arkitektura e hyrjes në memorie e 6502 kishte lejuar krijuesit të prodhojnë makineri të shpejta pa përdorimin e hardware-ve të kushtueshme për hyrje direkte në memorie. VLSI prodhoi silikonin e pare ARM me 26 prill 1985 – u njoh si ARM1 ne prill 1985."Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, Nov 2 1988, Accessed 25 May 2007. Sistemet e para te "vërteta" të prodhimit të quajtur ARM2 ishin te disponueshëm vitin pasardhës.

Aplikacioni i tij i parë praktik ishte si një procesor i dytë për BBC Micro-n, ku u përdor për të krijuar software-t e simulimit për të përfunduar punën mbi çipet mbështetëse (VIDC, IOC, MEMC) dhe të shpejtonte operimin e software-it CAD të përdorur ne krijimin e ARM2. Më pas Wilson kodoi BBC Basic në gjuhën assembly, dhe njohuritë e thella të përfituara nga projektimi i kompletit të instruksioneve lejoi kodin të bëhej shumë i dendur, duke bërë ARM BBC Basic një testim ekstremisht të mirë për çfarëdo emulatori ARM. Qëllimi origjinal i një kompjuteri të bazuar kryesisht në ARM u arrit në 1987 me daljen e Acorn Archimedes.

Kaq e madhe ishte fshehtësia rreth projektit ARM CPU sa që kur Olivetti po diskutonin për të kontrolluar një pjesë te Acorn-it në 1985, atyre nuk i treguan për skuadrën e krijimit derisa bisedimet u kryen. Ne 1992 Acorn fitoi përsëri çmimin Queen's Award for Technology për ARM.

ARM2 paraqiti një transportues te dhënash me 32-bit, një hapësire adresash me 26-bit dhe 16 regjistra me 32-bit. Kodi i programit duhet të ishte brenda 64 Mb memorie, sepse program counter-i ishte i limituar deri në 26-bit sepse 4 bit-at e pare dhe 2 te fundit të regjistrit 32-bit shërbejnë si flamuj për status. ARM2 ishte mikroprocesori më i thjeshtë i dobishëm 32-bit në të gjithë botën, me vetëm 30,000 tranzistore (krahaso  numrin e transistoreve me modelin 6 vjet më të vjetër të Motorola-s, Motorola 68000 me rreth 70,000 transistorë). Shumë prej kësaj thjeshtësie vjen ngaqë nuk ka mikrokod (që përfshin rreth një-te-katërtën deri në një-të-tretën e 68000) dhe, si shumica e CPU-ve të sotshëm, nuk përmban cache. Kjo thjeshtësi coi ne harxhimin e vogël të energjisë, duke performuar më mirë se Intel 80286.Patterson, Jason. The Acorn Archimedes", The History Of Computers During My Lifetime – The 1980's by (accessed 12 March 2008)]. Një pasardhës, ARM3, u prodhua me cache 40 Kb, që e përmirësoi edhe më tepër performancën.

 Apple, DEC, Intel:  ARM6, StrongARM, XScale 
Rreth fundit te viteve 80, Apple Computer dhe VLSI Technology filluan te punonin me Acorn ne versione me te reja te ARM. Puna ishte aq e rëndësishme saqe Acorn krijoi një kompani te re me skuadrën e krijimit ne 1990, dhe e quajti Advanced RISC Machines Ltd.  Për këtë arsye, fjala ARM nganjëherë zgjerohet si Advanced RISC Machine ne vend te Acorn RISC Machine. Advanced RISC Machine u be ARM Ltd kur kompania prind, ARM Holdings plc, u hodh ne London Stock Exchange dhe NASDAQ ne 1998."ARM Corporate Backgrounder", ARM Technology.

Puna e re Apple-ARM përfundimisht do kthehej në ARM6, fillimisht i dalë në treg në fillim të 1992. Apple përdorte ARM 610 të bazuar në ARM6, si bazë për PDA-ne Apple Newton. Në 1994, Acorn përdori ARM 610 si CPU kryesore në kompjuterët e tyre Risc PC. DEC licencoi arkitekturën ARM6 (gjë që shkaktoi konfusion sepse ato gjithashtu prodhonin mikroprocesorë Alpha) dhe prodhoi StrongARM. Ne 233 MHz kjo CPU harxhonte vetëm 1 Watt energji (versionet e mëvonshme harxhonin shumë më pak).

 Rritje e Licencës 
Bërthama e ARM-së ka qëndruar pothuajse e njëjta në madhësi gjatë këtyre ndryshimeve.  ARM2 kishte 30.000 transistorë, ndërsa ARM6 shkoi vetëm deri në 35.000. Biznesi i ARM-së gjithmonë ka qenë te shesë IP cores, që të licencuarit i përdorin për te krijuar mikrokontrolluesit dhe CPU-të e bazuara në këtë bërthamë. Implementimi më i suksesshëm është ARM7TDMI me qindra miliona shitje.  Idea është qe Original Design Manufacturer të kombinojë bërthamën ARM me një numër pjesësh jo të detyrueshme për të prodhuar një CPU të plotë, një që të mund të ndërtohet në semiconductor fabs të vjetra dhe prapë të ketë performancë të konsiderueshme me çmim të ulët. Atmel ka qenë një qendër projektimi pararendëse në Sistemin e Ngulitur të bazuar në ARM7TDMI.

ARM licencoi rreth 1,6 bilion bërthama në 2005. Në 2005, rreth 1 bilion bërthama ARM u futen në celulare."ARMed for the living room" by Tom Krazit 2006. , më shumë se 10 bilion bërthama ARM janë ndërtuar, dhe iSuppli parashikon që 5 bilion në vit do të transportohen në 2011."ARM Achieves 10 Billion Processor Milestone", ARM Technology, 22 January 2008.

Arkitektura e smartphones, personal digital assistants dhe aparaturave të tjera që mbahen në dorë është ARMv5. Procesorët XScale dhe ARM926 janë ARMv5TE, dhe tashmë janë më të shumtë në aparatura high-end se sa StrongARM, ARM9TDMI dhe ARM7TDMI te bazuar ne procesorë ARMv4, por aparaturat lower-end mund te përdorin bërthama më të vjetra me çmime më të ulëta licencimi. Procesorët ARMv6 paraqitën një hap më lartë në performancë se sa nga bërthamat standarde ARMv5, dhe janë përdorur në disa raste, por procesorët Cortex (ARMv7) tashmë sigurojnë opsione më të shpejta se te gjithë brezat e mëparshëm. Cortex-A ka objektiv procesorët e aplikacioneve, siç i nevojiten smartphone-ve që më përpara përdornin ARM9 ose ARM11. Cortex-R ka objektiv aplikacionet në kohë reale, dhe Cortex-M ka objektiv mikrokontrolluesit.

Ne 2009, disa prodhues prezantuan netbook-et bazuar në CPU me arkitekture ARM, në konkurencë direkte me netbook-et e bazuar në Intel Atom.by Eric Brown 2009

 Bërthamat ARM 
ARM siguron një përmbledhje te shitësve të shumtë të cilët implementojnë bërthamat ARM në projektimet e tyre (shiko 2003 Line Card). KEIL gjithashtu siguron një përmbledhje pak më të re për shitësit e procesorëve te bazuar ne ARM.
 Familja Versioni i Arkitekturës Bërthama Tipar Cache (I/D)/MMU MIPS @ MHz tipike Ne aplikacionARM1ARMv1 (jashtë përdorimi)ARM1AsnjëARM Evaluation System procesor i dyte për BBC Micro ARM2ARMv2 (jashtë përdorimi)ARM2Arkitektura 2 shtoi instruksionin MUL (shumëzim)Asnje4 MIPS @ 8 MHz0.33 DMIPS/MHzAcorn Archimedes, ChessmachineARMv2a (jashte perdorimi)ARM250 MEMC e integruar (MMU), Procesor grafik dhe IO. Arkitektura 2a shtoi instruksionet SWP dhe SWPB.Asnje, MEMC1a7 MIPS @ 12 MHzAcorn ArchimedesARM3ARMv2a (jashtë përdorimi)ARM2aPërdorimi i pare i një cache procesori ne ARM.4K i unifikuar12 MIPS @ 25 MHz0.50 DMIPS/MHzAcorn Archimedes ARM6 ARMv3 (jashtë përdorimi)ARM60arkitektura v3 e para që mbështeti adresimin e 32-bit memorie (ndryshe nga 26 bit)Asnjë10 MIPS @ 12 MHz3DO Interactive Multiplayer, Marres GPS ZarlinkARM600Si ARM60, cache dhe coprocessor bus (për njësite FPA10 floating-point).4K i unifikuar28 MIPS @ 33 MHzARM610Si ARM60, cache, pa coprocessor bus.4K i unifikuar17 MIPS @ 20 MHz0.65 DMIPS/MHzAcorn Risc PC 600, Apple Newton 100 series ARM7 ARMv3 (jashtë përdorimi)ARM7008 KB i unifikuar40 MHzAcorn Risc PC karte CPU-je prototipARM710Si ARM7008 KB i unifikuar40 MHzAcorn Risc PC 700ARM710aSi ARM7008 KB i unifikuar40 MHz0.68 DMIPS/MHzAcorn Risc PC 700, Apple eMate 300ARM7100Si ARM710a, SoC i integruar.8 KB i unifikuar18 MHzPsion Series 5ARM7500Si ARM710a, SoC i integruar.4 KB i unifikuar40 MHzAcorn A7000ARM7500FESi ARM7500, "FE" Shtoi kontrolluesin e memories FPA and EDO.4 KB i unifikuar.56 MHz0.73 DMIPS/MHzAcorn A7000+ Network Computer ARM7TDMI ARMv4TARM7TDMI(-S)3-stage pipeline, Thumbasnje15 MIPS @ 16.8 MHz63 DMIPS @ 70 MHzGame Boy Advance, Nintendo DS, Apple iPod, Lego NXT, Atmel AT91SAM7, Juice Box, NXP Semiconductors LPC2000 dhe LH754xx, Actel's CoreMP7 ARM710TSi ARM7TDMI, cache8 KB i unifikuar, MMU36 MIPS @ 40 MHzPsion Series 5mx, Psion Revo/Revo Plus/Diamond MakoARM720TSi ARM7TDMI, cache8 KB i unifikuar, MMU me Fast Context Switch Extension60 MIPS @ 59.8 MHzZipit Wireless Messenger, NXP Semiconductors LH7952xARM740TSi ARM7TDMI, cacheMPUARMv5TEJARM7EJ-S5-stage pipeline, Thumb, Jazelle DBX, intruksione te avancuara DSPasnje StrongARM ARMv4SA-11016 KB/16 KB, MMU203 MHz1.0 DMIPS/MHzApple Newton 2x00 series, Acorn Risc PC, Rebel/Corel Netwinder, Chalice CATSSA-1100Si SA-110, SoC i integruar16 KB/8 KB, MMU203 MHzPsion netBookSA-1110Si SA-110, SoC i integruar16 KB/8 KB, MMU206 MHzLART (computer), Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series, Palm Zire 31 ARM8 ARMv4 ARM810"ARM810 – Dancing to the Beat of a Different Drum" ARM Holdings presentation at Hot Chips 1996-08-07.5-stage pipeline, static branch prediction, double-bandwidth memory 8 KB i unifikuar, MMU 84 MIPS @ 72 MHz1.16 DMIPS/MHz Acorn Risc PC karte CPU prototip ARM9TDMI ARMv4TARM9TDMI5-stage pipeline, ThumbasnjeARM920TSi ARM9TDMI, cache16 KB/16 KB, MMU me FCSE (Fast Context Switch Extension)Register 13, FCSE PID register ARM920T Technical Reference Manual200 MIPS @ 180 MHzArmadillo, Atmel AT91SAM9, GP32, GP2X (first core), Tapwave Zodiac (Motorola i. MX1), Hewlet Packard HP-49/50 Calculators, Sun SPOT, Cirrus Logic EP9302, EP9307, EP9312, EP9315, Samsung S3C2442 (HTC TyTN, FIC Neo FreeRunner), Samsung S3C2410 (TomTom navigation devices)ARM922TSi ARM9TDMI, cache8 KB/8 KB, MMUNXP Semiconductors LH7A40xARM940TSi ARM9TDMI, cache4 KB/4 KB, MPUGP2X (berthama e dyte), Meizu M6 Mini Player ARM9E ARMv5TEARM946E-SThumb, Enhanced DSP instructions, cachesndryshore, memorje te ciftuara ngusht, MPUNintendo DS, Nokia N-Gage, Canon PowerShot A470, Canon EOS 5D Mark IIDatasheets - Magic Lantern Firmware Wiki, Conexant 802.11 chips, Samsung S5L2010ARM966E-SThumb, Enhanced DSP instructionsno cache, TCMsST Micro STR91xF, includes EthernetARM968E-SSi ARM966E-Spa cache, TCMsNXP Semiconductors LPC2900ARMv5TEJARM926EJ-SThumb, Jazelle DBX, Enhanced DSP instructionsndryshore, TCMs, MMU220 MIPS @ 200 MHz,Celularet: Sony Ericsson (K, W series); Siemens dhe Benq (serite x65 dhe me te reja); LG Arena; Texas Instruments OMAP1710, OMAP1610, OMAP1611, OMAP1612, OMAP-L137, OMAP-L138; Qualcomm MSM6100, MSM6125, MSM6225, MSM6245, MSM6250, MSM6255A, MSM6260, MSM6275, MSM6280, MSM6300, MSM6500, MSM6800; Freescale i.MX21, i.MX27, Atmel AT91SAM9, NXP Semiconductors LPC3000, GPH Wiz, NEC C10046F5-211-PN2-A SoC – berthame e padokumentuar ne ATi Hollywood çipin e grafikes te perdorur ne Wii,Starlet. Samsung S3C2412 perdorur ne kontrolluesin e Squeezebox Duet. Squeezebox Radio; NeoMagic MiMagic Family MM6, MM6+, MM8, MTV; Buffalo TeraStation Live (NAS); Telechips TCC7801, TCC7901;ZiiLABS' ZMS-05 sistem ne nje çip; Western Digital MyBook I World Edition.ARMv5TEARM996HSProcesor pa ore, si ARM966E-Spa caches, TCMs, MPU ARM10E ARMv5TEARM1020E6-stage pipeline, Thumb, Enhanced DSP instructions, (VFP)32 KB/32 KB, MMUARM1022ESi ARM1020E16 KB/16 KB, MMUARMv5TEJARM1026EJ-SThumb, Jazelle DBX, intruksione te avancuara DSP, (VFP)ndryshore, MMU ose MPUWestern Digital MyBook II World Edition;Conexant so4610 dhe so4615 ADSL SoC XScale ARMv5TE80200/IOP310/IOP315I/O Processor, Thumb, intruksione te avancuara DSP80219400/600 MHzThecus N2100IOP321600 BogoMips @ 600 MHzIyonixIOP33xIOP34x1–2 core, RAID Acceleration32K/32K L1, 512K L2, MMUPXA210/PXA250Procesor aplikacionesh, 7-stage pipelinePXA210: 133 and 200 MHz, PXA250: 200, 300, and 400 MHzZaurus SL-5600, iPAQ H3900, Sony CLIÉ NX60, NX70V, NZ90PXA25532KB/32KB, MMU400 BogoMips @ 400 MHz; 371–533 MIPS @ 400 MHzGumstix basix & connex, Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder, iRex ILiadPXA263200, 300 and 400 MHzSony CLIÉ NX73V, NX80VPXA26xdefault 400 MHz, up to 624 MHzPalm Tungsten T3PXA27xProcesor aplikacionesh32 KB/32 KB, MMU800 MIPS @ 624 MHzGumstix verdex,"Trizeps-Modules"  PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim serite x30, x50, dhe x51, Motorola Q, Balloon3, Trolltech Greenphone, Palm TX, Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Trēo 650-755p, Zipit Z2, HP iPaq 614c Business Navigator.PXA800(E)FPXA3XX (emri i koduar "Monahans")32KB/32KB L1, TCM, MMU1000 MIPS @ 1.25 GHzSamsung OmniaPXA900Blackberry 8700, Blackberry Pearl (8100)IXC1100Control Plane ProcessorIXP2400/IXP2800IXP2850IXP2325/IXP2350IXP42xNSLU2 IXP460/IXP465 ARM11ARMv6ARM1136J(F)-S8-stage pipeline, SIMD, Thumb, Jazelle DBX, (VFP), instruksione te avancuara DSPndryshore, MMU740 @ 532–665 MHz (i.MX31 SoC), 400–528 MHzTexas Instruments OMAP2420 (Nokia E90, Nokia N93, Nokia N95, Nokia N82), Zune, BUGbase, Nokia N800, Nokia N810, Qualcomm MSM7200 (with integrated ARM926EJ-S Coprocessor@274 MHz, perdorur ne Eten Glofiish, HTC TyTN II, HTC Nike), Freescale i.MX31 (used in the original Zune 30gb and Toshiba Gigabeat S), Freescale MXC300-30 (Nokia E63, Nokia E71, Nokia 5800, Nokia E51, Nokia 6700 Classic, Nokia 6120 Classic, Nokia 6210 Navigator, Nokia 6220 Classic, Nokia 6290, Nokia 6710 Navigator, Nokia 6720 Classic, Nokia E75, Nokia N97, Nokia N81), Qualcomm MSM7201A sic u pa tek HTC Dream, HTC Magic, Motorola Z6, HTC Hero, & Samsung SGH-i627 (Propel Pro), Qualcomm MSM7227 used in ZTE Link,ARMv6T2ARM1156T2(F)-S9-stage pipeline, SIMD, Thumb-2, (VFP), instruksione te avancuara DSPndryshore, MPUARMv6KZARM1176JZ(F)-SSi ARM1136EJ(F)-Sndryshore, MMU+TrustZoneApple iPhone (original and 3G), Apple iPod touch (1st and 2nd Generation), Conexant CX2427X, Motorola RIZR Z8, Motorola RIZR Z10, NVIDIA GoForce 6100; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60, Samsung S3C6410 (e.g. Samsung Moment, SmartQ 5), S3C6430, and the Qualcomm MSM7627 as seen in the Palm Pixi and Motorola Calgary/DevourARMv6KARM11 MPCoreAs ARM1136EJ(F)-S, 1–4 core SMPvariable, MMUNvidia APX 2500 Family Architecture Version Core Feature Cache (I/D)/MMU Typical MIPS @ MHz In application CortexARMv7-ACortex-A5VFP, NEON, Jazelle RCT and DBX, Thumb-2, 8-stage pipeline, 1–4 core SMPvariable (L1), MMU+TrustZoneup to 1500 (1.5 DMIPS/MHz)"Sparrow" (ARM code name)Cortex-A8VFP, NEON, Jazelle RCT, Thumb-2, 13-stage superscalar pipelinevariable (L1+L2), MMU+TrustZoneup to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz)Texas Instruments OMAP3xxx series, SBM7000, Oregon State University OSWALD, Gumstix Overo Earth, Pandora, Apple iPhone 3GS, Apple iPod touch (3rd Generation), Apple iPad (Apple A4 processor), Apple iPhone 4 (Apple A4 processor), Archos 5, FreeScale i.MX51-SOC, BeagleBoard, Motorola Droid, Palm Pre, Rockchip RK2806 and RK2808, Samsung i8910, Sony Ericsson Satio, Touch Book, Nokia N900, Meizu M9, ZiiLABS ZMS-08 system on a chip.Cortex-A9Application profile, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, Out-of-order speculative issue superscalarMMU+TrustZone2.5 DMIPS/MHzCortex-A9 MPCoreAs Cortex-A9, 1–4 core SMPMMU+TrustZone10,000 DMIPS @ 2 GHz on Performance Optimized TSMC 40G (dual core) (2.5 DMIPS/MHz per core)Texas Instruments OMAP4430/4440, ST-Ericsson U8500, Nvidia Tegra2 ARMv7-RCortex-R4(F)Embedded profile, Thumb-2, (FPU)variable cache, MPU optional600 DMIPS @ 475 MHzBroadcom is a user, TMS570 from Texas InstrumentsARMv7-MECortex-M4 (codenamed "Merlin")Microcontroller profile, both Thumb and Thumb-2, FPU. Hardware MAC, SIMD and divide instructions.MPU optional.1.25 DMIPS/MHzARMv7-MCortex-M3Microcontroller profile, Thumb-2 only. Hardware divide instruction.no cache, MPU optional.125 DMIPS @ 100 MHzTexas Instruments Stellaris  microcontroller family, ST Microelectronics STM32, NXP Semiconductors LPC1700, Toshiba TMPM330FDFG , Ember's EM3xx Series, Atmel AT91SAM3, Europe Technologies EasyBCU, Energy Micro's EFM32, Actel's SmartFusion ARMv6-MCortex-M0 (codenamed "Swift")Microcontroller profile, Thumb-2 subset (16-bit Thumb instructions & BL, MRS, MSR, ISB, DSB, and DMB).No cache.0.9 DMIPS/MHzNXP Semiconductors NXP LPC1100, Triad Semiconductor , MelfasCortex-M0 used in low power touch controller - 6/10/2009 - Electronics Weekly, Chungbuk Technopark Chungbuk Technopark Chooses ARM Cortex-M0 Processor, Nuvoton , austriamicrosystems , Rhom Rohm Licenses ARM Cortex-M0 Processor - ARMCortex-M1FPGA targeted, Microcontroller profile, Thumb-2 subset (16-bit Thumb instructions & BL, MRS, MSR, ISB, DSB, and DMB).None, tightly coupled memory optional.Up to 136 DMIPS @ 170 MHz"ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19, 2007. Retrieved April 11, 2007. (0.8 DMIPS/MHz,"ARM Cortex-M1", ARM product website. Retrieved April 11, 2007. MHz achievable FPGA-dependent)Actel ProASIC3, ProASIC3L, IGLOO and Fusion PSC devices , Altera Cyclone III, other FPGA products are also supported e.g. Synplicity
ARM Extends Cortex Family with First Processor Optimized for FPGA. Family Architecture Version Core Feature Cache (I/D)/MMU Typical MIPS @ MHz In application

 Arkitektura 
Për një kohë të gjate ka qenë një "Manual referimi për arkitekturën ARM", duke dalluar ndërfaqet që të gjithë procesorët ARM duhet të mbajnë (si psh semantikat e udhëzimit) nga detajet e implementimit që mund të ndryshojnë.  Arkitektura ka evoluar me kalimin e kohës, dhe duke filluar me arkitekturën v7, janë përcaktuar tre "profile": "A"-ja (aplikacion), "R"-ja (ne kohe reale), dhe "M"-ja (mikrokontrollues).

Profilet lejohen të ndajnë arkitekturën.  Për shembull profili ARMv7-M është i dalluar sepse mban vetëm modën Thumb processor dhe prandaj ekzekuton instruksione Thumb2, dhe profili ARMv6-M është një nënndarje e profilit ARMv7-M (duke mbajtur më pak instruksione).

 Kompleti i instruksioneve 
Për t'a mbajtur projektimin të pastër, te thjeshtë dhe të shpejtë, implementimi origjinal i ARM-së u vendos pa mikrokod, si procesori shumë më i thjeshtë 8-bit 6502 i përdorur në mikrokompjuterat e mëparshëm Acorn.

 Tiparet RISC 
Arkitektura ARM ka këto tipare RISC:
 Ngarkon/ruan arkitekturën.
 Nuk mbështet akses te padrejtuar në memorie (që tani mbështetet në bërthamat ARMv6, me disa përjashtime të lidhur me ngarkimin/ruajtjen e instruksioneve me shumë fjale).
 File regjistri uniformë 16 × 32-bit.
 Është rregulluar gjerësia 32 bit e instruksionit për të lehtësuar deshifrimin dhe pipelining, duke ulur dendësinë e kodit. Më vonë, "Thumb mode" rriti dendësinë e kodit.
 Më së shumti ekzekutim një-ciklik.

Për të kompensuar për projektimin e thjeshtë, krahasuar me procesorët bashkëkohor si Intel 80286 dhe Motorola 68020, disa tipare të tjera projektimi u përdoren:
 Ekzekutim i kushtezuar i shumicës se instruksioneve, duke kompensuar për mungesën e një parashikues degëzimi.
 Instruksionet aritmetike ndryshojnë kodet e kushtëzimit vetëm kur dëshirohen.
 Barrel shifter 32-bit që mund të përdoret pa ç'avantazh në performancë me shumicën e instruksioneve aritmetike dhe llogaritjeve të adresave.
 Mënyra adresimi të fuqishme me indekse.
 Një rregjister lidhjesh për thirrje të shpejtë të funksioneve.
 Nënsistem ndërprerjeje i thjeshtë por i shpejtë i nivelit të dytë të përparësisë me banka regjistri të ndryshuara.

 Ekzekutimi i kushtezuar 
Tipari i ekzekutimit të kushtëzuar (i quajtur predication) është implementuar me një selektorë kodi kushtëzimi 4-bit (i quajtur predicate) për çdo instruksion; një nga kodet 4-bit rezervohet si "kod daljeje" për të specifikuar disa instruksione të pakushtëzuara, por pothuajse të gjithë instruksionet e zakonshme janë të kushtëzuara. Shumica e arkitekturave të CPU-ve kanë vetëm kode te kushtëzuara në instruksionet e degëzuara.

Kjo pakëson në mënyrë të konsiderueshme bit-et e kodimit te disponueshme për zhvendosje në instruksionet e aksesit në memorie, por nga ana tjetër shmang instruksionet e degëzuara gjatë gjenerimit të kodit për statement-et e vegjël "if". Shembulli standard për këtë është algoritmi Euklidian i bazuar në zbritje:

Ne gjuhen e programimit C, cikli është:
    while (i != j)
    {
       if (i > j)
           i -= j;
       else
           j -= i;
    }
Ne assembly-n e ARM-se, cikli është:
 loop   CMP    Ri, Rj       ; vendos kushtin "NE" nëse (i != j),
                            ;               "GT" nëse (i > j),
                            ;            ose "LT" nëse (i < j)
        SUBGT  Ri, Ri, Rj   ; nëse "GT" (me e madhe se), i = i-j;
        SUBLT  Rj, Rj, Ri   ; nëse "LT" (me e vogle se), j = j-i;
        BNE    loop         ; nëse "NE" (jo e barabarte), atëherë cikli

i cili shmang degëzimet rreth pjesëzave then dhe else.
Vini re se nëse Ri dhe Rj janë te barabarta atëherë asnjë prej instruksioneve SUB nuk do ekzekutohet, duke optimizuar nevojën për një degëzim të kushtëzuar për të implementuar kontrollin me while në fillim të ciklit, për shembull nëse do ishte përdorur SUBLE (më e vogël ose e barabartë).

Një nga mënyrat që kodi Thumb përdor për të siguruar një kodim më të dendur është të heqë selektorin 4-bit nga instruksionet e padegëzuara.

 Tiparet e tjera 
Procesori ARM ka gjithashtu disa tipare që shihen shumë rrallë në arkitektura të tjera RISC, siç është adresimi PC-relativ (në të vërtete, tek ARM-ja PC është një nga 16 regjistrat e saj) dhe mënyrat e adresimit pre- dhe post-increment.

Një tjetër gjë për t'u vërejtur është se ARM ka ekzistuar për një farë kohe, me kompletin e instruksioneve duke u rritur me kalimin e kohës.  Disa procesore më të hershëm ARM (para ARM7TDMI), për shembu ll, nuk kanë instruksion për të ruajtur një sasi 2-byte, pra, për to nuk është e mundur te krijojnë kod efikas qe sillet në mënyre të njëjtë me objektet e C të tipit "volatile int16_t".

 Bashkëprocesorët 
Arkitektura siguron një mënyre jo-intrusive për të zgjeruar kompletin e instruksioneve duke përdorur "bashkëprocesoret" që mund të adresohen duke përdorur MCR, MRC, MRRC, MCRR, dhe instruksione të tjera të ngjashme. Hapësira e bashkëprocesorit ndahet logjikisht ne 16 bashkëprocesorë me numra 0 deri ne 15, ku bashkëprocesori 15 (cp15) është i rezervuar pvr disa funksione kontrolli tipike si menaxhimi i cache-ve dhe operimin e MMU (te procesorët që e kanë një të tillë).

Në aparaturat e bazuara në ARM, pajisjet periferike janë zakonisht të lidhura me procesorin duke hartuar regjistrat e tyre fizike në hapësirën e memories ARM ose në hapësirën e bashkëprocesorit ose duke lidhur një tjetër pajisje e cila pastaj lidhet me procesorin. Hyrjet ne bashkëprocesor kanë vonesë më te vogël kështu që disa periferike (për shembull kontrolluesi i ndërprerjeve XScale) janë projektuar që të jenë të arritshëm në të dy mënyrat (përmes memories dhe përmes bashkëprocesorëve).  Në raste të tjera, projektuesit e çipeve integrojnë hardware vetëm duke përdorur mekanizmin e bashkëprocesorit. Për shembull, një motor për përpunim imazhesh mund të jetë një bërthamë e vogël ARM7TDMI e kombinuar me një bashkëprocesor që ka veprime të specializuara për të mbajtur një komplet specifik primitivësh transkodimi HDTV.

 Thumb 
Për të përmirësuar dendësinë e kodit të kompiluar, procesorët nga ARM7TDMI e më pas kanë paraqitur modën Thumb. ("T"-ja në "TDMI" tregon tiparin Thumb.) Në këtë modë, procesori ekzekuton instruksione 16-bit. Shumica e këtyre instruksioneve Thumb 16 bit hartohen direkt me instruksionet ARM. Kursimi i hapësirës vjen duke bërë të nënkuptueshme disa madhësi të instruksioneve dhe duke limituar numrin e mundësive krahasuar me instruksionet e plota në modën ARM.

Në Thumb, kodet më të vogla të operimit kanë më pak funksionalitet.  Për shembull, vetëm degëzimet mund të jenë të kushtëzuara, dhe shumë kode operimi kanë akses të kufizuar vetëm në gjysmën e regjistrave të CPU-se. Kodet e shkurtra të operimit japin përmirësim të përgjithshëm të dendësisë së kodit, edhe pse disa veprime kërkojnë instruksione ekstra. Në situata ku gjerësia e portës së memories është më pak se 32-bit, kodet e shkurtra Thumb të operimit japin performancë në rritje në krahasim me kodin 32-bit të ARM, meqë më pak kod programi ka nevojë të ngarkohet në procesor përmes gjerësisë së vogël të memories.

Hardware-t e ngulitur, si Game Boy Advance, zakonisht kanë një sasi të vogël të RAM-it të arritshëm me një datapath të plotë 32-bit; shumica arrihet me një datapath dytësor 16-bit ose më të ngushtë. Në këtë situatë, zakonisht kodi Thumb kompilohet dhe optimizohen manualisht disa nga sektorët me më shumë punë intensive të CPU, duke përdorur instruksione ARM të plota 32-bit, duke vendosur këto instruksione më të gjera në memorie 32-bit të arritshme nga cdo bus.

Procesori i parë me një ckodues instruksionesh Thumb ishte ARM7TDMI.  Të gjithë ARM9 dhe familjet e mëvonshme, duke përfshirë XScale, kanë përmbajtur një ckodues instruksionesh Thumb.

 Instruksionet e përmirësimit të DSP 
Për të përmirësuar arkitekturën ARM për perpunim sinjalesh digjitale dhe aplikacioneve të multimedias, disa instruksione të reja iu shtuan kompletit. Këto tregohen me një "E" në emrat e arkitekturave ARMv5TE dhe ARMv5TEJ. Variantet E përfshijnë gjithashtu T, D, M, dhe I.

 Jazelle 

Jazelle është një teknikë që lejon Java Bytecode të ekzekutohet direkt në arkitekturën ARM si një gjendje (dhe komplet instruksionesh) e tretë ekzekutimi së bashku me ARM dhe Thumb-mode. Kjo gjendje tregohet me "J" në arkitekturën, dhe në emrat e bërthamave ARM9EJ-S dhe ARM7EJ-S. Mbështetja për këtë gjendje është e nevojshme duke filluar nga ARMv6 (përvec profilit ARMv7-M), edhe pse bërthamat më të reja përfshijnë vetëm një implementim të thjeshtë që nuk siguron përshpejtim hardware.

 Thumb-2 
Teknologjia Thumb-2 u shfaq në berthamën ARM1156, e shpallur në 2003. Thumb-2 zgjeron kompletin e intruksioneve Thumb të limituar në 16-bit me më tepër intruksione 32-bit për t'i dhënë kompletit të instruksioneve një shkallë më të lartë. Një qëllim i caktuar për Thumb-2 është të arrijë dendësi kodi të ngjashme me atë të Thumb-it me performancë të ngjashme me atë te kompletit te instruksioneve të ARM-së në memorje 32-bit. Mund të themi se në ARMv7, ky qëllim u arrit.

Thumb-2 zgjeron kompletin e instruksioneve ARM dhe Thumb me edhe më shumë instruksione, duke përfshirë manipulimin e bit-field, degëzimeve të tabelave, dhe ekzekutimit të kushtëzuar. Një "Gjuhë Assembly e Unifikuar" (UAL) mbështet edhe brezin e instruksioneve të ARM, edhe të Thumb-2 nga i njëjti kod burim; versionet e Thumb të parë në procesorët ARMv7 janë aq të afta sa kodi ARM (duke përfshirë aftësinë për të shkruar manovruesa ndërpresish). Kjo kërkon pak kujdes, dhe përdorim të një instruksioni të ri "IT" (if-then), që lejon deri në 4 instruksione të njëpasnjëshme të ekzekutohen bazuar në një kusht të testuar. Gjatë kompilimit në kod ARM, kjo dhe injorohet, por gjatë kompilimit në Thumb-2 kjo krijon një intruksion. Per shembull:
; nqs (r0 == r1)
CMP r0, r1
ITE EQ        ; ARM: nuk është kod ... Thumb: instruksion IT
; atehere r0 = r2;
MOVEQ r0, r2  ; ARM: e kushtezuar; Thumb: kusht nepermjet ITE 'T' (atehere)
; perndryshe r0 = r3;
MOVNE r0, r3  ; ARM: e kushtezuar; Thumb: kusht nepermjet ITE 'e' (perndryshe)
; kujtoni se instruksioni MOV ne Thumb nuk ka asnje bit per te koduar "EQ" ose "NE"

Te gjithë çipet ARMv7 mbështesin kompletin e instruksioneve Thumb-2.
Disa çipe, si Cortex-M3, mbështesin vetëm kompletin e instruksioneve Thumb-2. Çipe të tjerë në seritë Cortex dhe ARM11 mbështesin edhe "modën me komplet instruksionesh ARM" dhe "modën me komplet instruksionesh Thumb-2".

 Mjedisi i ekzekutimit te Thumb-it (ThumbEE) 
ThumbEE, i njohur gjithashtu si Thumb-2EE, dhe i tregtuar si Jazelle RCT (Runtime Compilation Target), u shpall në 2005, dhe u shfaq për herë të parë në procesorin Cortex-A8. ThumbEE është një modë e katërt procesori, duke bërë ndryshime të vogla në kompletin e instruksioneve Thumb të zgjeruar nga Thumb-2. Këto ndryshime e bëjnë kompletin e instruksioneve vecanërisht të përshtatshëm për kod të krijuar gjatë ekzekutimit të programit (p.sh. nga kompilimi JIT)  në Mjediset e menaxhuara të ekzekutimit. ThumbEE është një objektiv për gjuhet si Limbo, Java, C#, Perl dhe Python, dhe lejon kompajlerat JIT të nxjerrë kod te kompiluar më të vogël pa ndikuar në performancë.

Tiparet e reja të ThumbEE përfshijnë kontrolle automatike të pointer-ave null në cdo instruksion ngarkimi dhe ruajtjeje, një instruksion për të kontrolluar kufijtë e array, akses në regjistrat r8-r15 (ku mbahet gjendja Jazelle/DBX Java VM), dhe instruksione speciale që thërrasin një manovrues(handler)."Arm strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory" by Tom R. Halfhill 2005. Manovruesit janë sektorë të vegjël kodi që thërritet shpesh, zakonisht i përdorur për të implementuar një tipar të një gjuhe programimi të nivelit të lartë, si psh rezervimi i memorjes për një objekt të ri.

 Advanced SIMD (NEON) 
Shtojca Advanced SIMD, e tregtuar si teknologjia NEON, është një komplet instruksionesh SIMD i kombinuar 64- dhe 128-bit, që siguron përshpejtim të standartizuar për aplikacionet e përpunimit të medias dhe të sinjaleve. NEON mund të ekzekutojë ckodim audio-je MP3 në CPU me 10 MHz dhe mund të ekzekutojë codec-un e të folurit GSM AMR me më pak se 13 MHz. Ka një komplet instruksionesh të hollesishëm, file regjistrash të ndara dhe hardware ekzekutimi të pavarura. NEON mban numra të plotë 8-, 16-, 32- dhe 64-bit dhe punon në operime SIMD për të manovruar përpunimin e audios dhe videos si dhe përpunimin e grafikës dhe te lojërave. Në NEON, SIMD mban deri në 16 punë në të njëjtën kohë.

 VFP 
Teknologjia VFP (Vector Floating Point) është një shtojcë bashkëprocesori në arkitekturën ARM. Siguron përpunim numrash me presje me një-precision dhe dopjo-precision me pak shpenzim. VFP siguron përpunim numrash me presje të përshtatshëm për një spektrum të gjerë aplikacionesh si PDA, smartphone, kompresim dhe dekompresim zëri, grafika tre-dimensionale dhe audio digjitale, printera, dhe aplikacione automotive. Arkitektura VFP gjithashtu mund të ekzekutojë instruksione të shkurtra vektore por këto punojnë në cdo element vektor njëri pas tjetrit dhe nuk ofrojnë performancën e vërtetë të paralelizmit SIMD. Kjo modë mund të jetë akoma e dobishme në aplikacione për procesim grafikash dhe sinjalesh meqë lejon një reduktim në madhësinë e kodit.

 See also 
 AMULET – a family of asynchronous ARMs
 ARMulator, ARM Instruction Set Simulator
 ARMware, a virtual machine that emulates an ARM-based PDA.
 QEMU, a virtual machine, supports also a lot of ARM processors (armXXXX, cortex-XX, ti925t, pxa2XX, pxa270-XX, any).
 Inferno
 NXP/Philips LPC2000 ARM7TDMI-S Microcontrollers
 SkyEye simulator – an open source ARM Instruction Set Simulator
 Smartbook
 Texas Instruments OMAP – an ARM core plus DSP and application acceleration cores
 Symbian OS
 Windows CE and Windows Mobile
 iOS
 Android

 References 

 External links 

 ARM Ltd.
 ARM Documentation
 ARM architecture opcode map, for ARMv4T and ARMv5TE
 TrustZone(TM) Technology
 ARM Microcontroller Development Resources – header files, schematics, CAD files, etc..
 Arm Architecture
 ARM Instruction Set Quick Reference Card
 ARM and Thumb-2 Instruction Set Quick Reference Card
 ARM Architecture Procedure Call Standard
 Xduino project supports easy ARM programming, ARM compiler, IDE, and  Arduino syntax (only for Cortex-M3 STM32)
 ARM Processor Instruction Set Architecture
 Advanced RISC Machines, The ARM Instruction Set , a very good overview of ARM
 The ARM-THUMB Procedure Call Standard
 Install Debian on ARM on qemu
 ARM and OMAP architecture history diagram


Kategoria:Embedded microprocessors
Kategoria:Articles with example code
Kategoria:Instruction set architectures
Kategoria:Central processing unit