Larchitettura ARM (precedentemente Advanced RISC Machine, prima ancora Acorn RISC Machine), in elettronica e informatica, indica una famiglia di microprocessori RISC a 32-bit e 64-bit sviluppata da ARM Holdings e utilizzata in una moltitudine di sistemi embedded. Grazie alle sue caratteristiche di basso consumo energetico, rapportato alle prestazioni, l'architettura ARM domina il settore dei dispositivi mobili dove il risparmio energetico delle batterie è fondamentale.

Nel 2007 la famiglia ARM copriva il 75% del mercato mondiale dei processori a 32 bit per applicazioni embedded, posizionandosi come una delle più diffuse architetture a 32 bit del mondo. I processori ARM vengono utilizzati in cellulari, tablet, lettori multimediali, console portatili, PDA e periferiche per computer (come router, hard disk di rete ecc). Importanti rami della famiglia ARM sono i processori XScale e i processori OMAP, prodotti da Texas Instruments.

Storia

Il progetto ARM iniziò nel 1983 nella sezione ricerca e sviluppo della Acorn Computers Ltd. Il team guidato da Sophie Wilson e Steve Furber puntava a una versione migliore del MOS Technology 6502. Acorn in quel periodo utilizzava il MOS 6502 per i suoi computer e i manager pensarono che utilizzare processori prodotti internamente avrebbe fornito notevoli vantaggi. Il team completò lo sviluppo del prototipo, chiamato ARM1, nel 1985 e il primo processore realmente prodotto, lARM2, fu realizzato l'anno successivo. L'ARM2 era un processore con bus dati a 32 bit, bus di indirizzi a 26 bit, in modo da poter indirizzare fino a 64 Megabyte, e registri a 16/32 bit. Uno dei registri serviva per definire l'allineamento del program counter dato che i primi 6 bit e gli ultimi 2 erano utilizzati come flag dal processore per specificarne lo stato. L'ARM2, coi suoi 30.000 transistors era probabilmente il più semplice processore a 32 bit, più semplice del Motorola 68000 che, pur avendo 68.000 transistor, forniva prestazioni paragonabili. Il processore doveva la sua semplicità alla mancanza di microcodice (nel 68000 il microcodice occupa un quarto dei transistors) e, come la maggior parte delle CPU dell'epoca, non aveva cache. Il successore ARM3 invece fu dotato di 4KB di cache per migliorare le prestazioni.

Alla fine degli anni ottanta Apple Computer iniziò a lavorare con Acorn per sviluppare una nuova versione del core ARM. Il progetto era talmente importante da spingere Acorn a spostare il team di sviluppo in una nuova compagnia chiamata Advanced RISC Machines Ltd.. Per questo spesso ARM è espanso come Advanced RISC Machine invece di Acorn RISC Machine. Advanced RISC Machines divenne ARM Ltd quando nel 1998 la società madre ARM Holdings si quotò al London Stock Exchange e al NASDAQ.

I lavori del team di sviluppo portarono alla realizzazione dellARM6. Il primo modello fu prodotto nel 1991 e Apple utilizzò il processore ARM 610 basato su core ARM6 per l'Apple Newton. Nel 1994 Acorn utilizzò ARM610 come processore centrale del suo computer RiscPC. Il core era quasi immutato rispetto all'originale ARM2: mentre l'ARM2 aveva 30.000 transistor l'ARM6 ne aveva 35.000. L'idea della società era di permettere agli OEM di prendere il core ARM e combinarlo con vari componenti opzionali per ottenere una CPU completa economica e a basso consumo, dato che era ottimizzata per i singoli compiti. Gli OEM poi avrebbero fatto produrre il processore ai produttori di semiconduttori che lavorano su commissione.

L'implementazione di maggior successo è sicuramente l'ARM7TDMI, utilizzato in console portatili, telefoni cellulari e periferiche varie, e prodotto in centinaia di milioni di esemplari.

La DEC licenziò l'architettura ARM, producendo molta confusione nel mercato dato che la stessa DEC disponeva di una propria linea di processori i DEC Alpha, e produsse lo StrongARM. A 233 MHz il processore consuma solo 1 Watt e le versioni successive consumano anche meno. Intel, nel corso di una transazione con DEC per una causa legale, acquisì la linea StrongARM e la utilizzò in congiunzione con il suo processore i960 per realizzare la linea XScale, in seguito venduta durante una ristrutturazione aziendale.

L'architettura comunemente supportata da Windows Mobile e Android (sistemi operativi installati su PDA, smartphone, Tablet computer e altri dispositivi portatili) è l'ARM6. I processori XScale e l'ARM926 sono basati su ARMv5TE mentre gli StrongARM, gli ARM925T e gli ARM7TDMI sono basati su ARM4.

I core Specifiche microprocessori ARM Famiglia Architettura Core Caratteristiche Cache (I/D)/MMU MIPS @ MHz ApplicazioniARM7TDMIv4TARM7TDMI(-S)3-stage pipelinenone15 MIPS @ 16.8 MHzGame Boy Advance, Nintendo DS, iPodARM710TMMU36 MIPS @ 40 MHzPsion 5 series, eMate 300ARM720T8KB unified, MMU60 MIPS @ 59.8 MHzARM740TMPUv5TEJARM7EJ-SJazelle DBXnoneARM9TDMIv4TARM9TDMI5-stage pipelinenoneARM920T16KB/16KB, MMU200 MIPS @ 180 MHzArmadillo, Neo FreeRunner, GP32, GP2X (first core), Tapwave Zodiac (Motorola i. MX1)ARM922T8KB/8KB, MMUARM940T4KB/4KB, MPUGP2X (second core)ARM9Ev5TEARM946E-Svariabile, strettamente accorpata, MPUNintendo DS, Nintendo DSi, Nokia N-Gage, Conexant 802.11 chips, Samsung YP-K5 MP3 playerARM966E-Sno cache, TCMsST Micro STR91xF, incluso Ethernet ARM968E-Sno cache, TCMsv5TEJARM926EJ-SJazelle DBXvariabile, TCMs, MMU220 MIPS @ 200-220 MHzTexas Instruments OMAP 16xx, 17xx; Nokia 6630, 6680, N70; Sony Ericsson (K, W series), Siemens and Benq (x65 series and newer), Caanoov5TEARM996HSno caches, TCMs, MPUARM10Ev5TEARM1020E(VFP)32KB/32KB, MMUSamsung SPGPv3ARM1022E(VFP)16KB/16KB, MMUv5TEJARM1026EJ-SJazelle DBXvariabile, MMU or MPUConexant CX94610ARM11v6ARM1136J(F)-SSIMD, Jazelle DBX, (VFP)variable, MMU?? @ 333-665 MHz (i.MX31 SoC)Texas Instruments OMAP2, Nokia E51 (369 MHz), Nokia 6700 Classic, Nokia 6120 classic, Nokia 6220 Classic (369 MHz), Nokia 6720 Classic, Nokia 6290, Nokia 6210 Navigator, Nokia 6710 Navigator, Nokia N93, Nokia N95 (333 MHz), Nokia Nst-4 (434 MHz), Nokia E5 (600 MHz), Nokia 5800 Xpressmusic (434 MHz), Nokia N97 (434 MHz) HTC Dream, HTC Magic, HTC Herov6T2ARM1156T2(F)-SSIMD, Thumb-2, (VFP)variabile, MPUv6KZARM1176JZ(F)-SSIMD, Jazelle DBX, (VFP)variabile, MMU+TrustZoneRaspberry Pi, iPhone EDGE, iPhone 3Gv6KARM11 MPCore1-4 core SMP, SIMD, Jazelle DBX, (VFP)variabile, MMUCortexv7-ACortex-A8NEON, Jazelle RCT, Thumb-2variabile (L1+L2), MMU+TrustZoneup to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz)Texas Instruments OMAP3, Freescale famiglia i.MX51 v7-RCortex-R4Embeddedcache variabile, MMU opzionale600 DMIPSBroadcomv6-MCortex-M0Microcontrollerwith cache, senza MMUfino a 50 MHzNXP famiglia LPC11xx v7-MCortex-M3Microcontrollerno cache, (MPU)120 DMIPS @ 100 MHzLuminary Micro microcontroller family, STMicroelectronics famiglia STM32 , NXP famiglie LPC17xx e LPC13xx , ATMEL .v7E-MARM Cortex-M4MicrocontrollerMPU1.25 DMIPS/MHzFreescale Kinetis, NXPXScalev5TE80200/IOP310/IOP315I/O Processor80219IOP321IyonixIOP33xPXA210/PXA250 Zaurus SL-5600, IPaq 54xxPXA25532KB/32KB, MMU400 BogoMips @400 MHzGumstix, IPaq 55xxPXA26xPXA27x800 MIPS @ 624 MHzHTC Universal, Zaurus SL-C1000,3000,3100,3200PXA800(E)FMonahans1000 MIPS @ 1.25 GHzPXA900Blackberry 8700IXC1100Control Plane ProcessorIXP2400/IXP2800IXP2850IXP2325/IXP2350IXP42xNSLU2IXP460/IXP465

Note di progetto Per mantenere il progetto pulito, semplice e veloce il processore non ha microcodice, come il processore MOS 6502 utilizzato nei primi computer Acorn.

L'architettura ARM è un'architettura RISC che prevede: architettura load/store assenza del supporto ad accessi non allineati alla memoria (supportati dal core v6) set di istruzioni ortogonale un banco di registri a 32 bit (denominati R0, R1, ..., R15) istruzioni a lunghezza fissa per semplificare la decodifica e l'esecuzione a costo di diminuire la densità del codice completamento di un'istruzione per ogni ciclo di clock in una situazione puramente ideale priva di stalli

Per compensare il progetto semplice rispetto a processori della stessa epoca come l'Intel 80286 e il Motorola 68020, il processore comprendeva alcune caratteristiche uniche come: esecuzione condizionata di molte istruzioni per ridurre i salti e compensare gli stalli della pipeline solo le operazioni aritmetiche possono alterare i registri delle esecuzioni condizionate scorrimento a 32 bit che può essere utilizzato in contemporanea con la maggior parte delle istruzioni senza penalizzazioni di tempo metodo di indirizzamento a indice molto potente interrupt a 2 livelli molto veloce e semplice con un sottosistema di registri collegati che commutano

Una delle caratteristiche più interessanti dei processori ARM sono 4 bit aggiuntivi utilizzati per realizzare dei codici condizionali per ogni istruzione.

Questi codici hanno ridotto le possibilità di indirizzo dato che il processore non ha molti bit per poterli specificare, ma il grande vantaggio è che questi codici permettono di evitare i salti nei caso di semplici if. Un esempio classico si ha nell'esecuzione dell'algoritmo di Euclide per la ricerca del massimo comune divisore (MCD).

In linguaggio C il codice è:

int gcd (int i, int j) { while (i != j)

if (i > j) i -= j; /*in forma classica i=i-j;*/ else j -= i; /*in forma classica j=j-i;*/

return i; }

In assembly ARM il ciclo diventa:

loop CMP Ri, Rj ; set condition "NE" if (i != j) ; "GT" if (i > j), ; or "LT" if (i < j) SUBGT Ri, Ri, Rj ; if "GT", i = i-j; SUBLT Rj, Rj, Ri ; if "LT", j = j-i; BNE loop ; if "NE", then loop

Questo evita i rami del then e dell'else.

Un'altra caratteristica unica del set di istruzioni è la capacità di far scorrere i valori durante le normali operazioni sui dati (operazioni aritmetiche, logiche e di copia di registri). Per esempio il codice C seguente

a += (j << 2);

viene tradotto in questa unica istruzione assembly eseguita in un solo ciclo

ADD Ra, Ra, Rj, LSL #2

Queste caratteristiche rendono i programmi ARM normalmente più densi degli equivalenti programmi per altri processori RISC. Inoltre il processore fa meno accessi alla memoria e riesce a riempire meglio le pipeline. Quindi le CPU ARM possono utilizzare frequenze inferiori a quelle di altri processori consumando meno potenza per svolgere gli stessi compiti.

Inoltre un processore ARM ha altre caratteristiche viste raramente nei processori RISC come l'indirizzamento relativo al PC (il PC negli ARM è il registro R15), indirizzamento con il pre e post incremento.

Una caratteristica curiosa dei processori ARM è che con il tempo il set di istruzioni incrementa. I primi processori ARM (prima dell'ARM7TDMI) per esempio non avevano istruzioni per caricare valori a due byte e quindi non era in grado di gestire direttamente i tipi short in C.

I primi processori tipo gli ARM7 erano basati su un disegno con pipeline a 3 stadi: fetch, decode e execute (lettura, decodifica ed esecuzione). I processori più moderni come l'ARM9 per incrementare le prestazioni sono passati a pipeline a 5 stadi. Altri cambiamenti per incrementare le prestazioni includono un sommatore veloce e un sistema di predizione dei salti.

Thumb