Indietro

ⓘ Architettura ARM




                                               

ARM Holdings

ARM Holdings è una società di alta tecnologia con sede a Cambridge, Regno Unito. La società è nota principalmente per la sua linea di processori basata sullarchitettura ARM sebbene sviluppi e venda anche system-on-a-chip, piattaforme hardware, infrastrutture e software sotto i marchi RealView e KEIL. La società venne fondata come joint venture tra la Acorn Computers, la Apple e la VLSI Technology al fine di sviluppare una linea di microprocessori RISC, inizialmente utilizzati nei computer Acorn Archimedes e nei palmari Apple Newton. In seguito i processori sono stati utilizzati da molti pr ...

Architettura ARM
                                     

ⓘ Architettura ARM

L architettura ARM, in elettronica e informatica, indica una famiglia di microprocessori RISC a 32-bit sviluppata da ARM Holdings e utilizzata in una moltitudine di sistemi embedded. Grazie alle sue caratteristiche di basso consumo elettrico rapportato alle prestazioni larchitettura 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, videogiochi 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.

                                     

1. Storia

Il progetto ARM è iniziato nel 1983 nella sezione ricerca e sviluppo della Acorn Computers Ltd.

Il team guidato da Sophie Wilson e Steve Furber iniziò lo sviluppo puntando a realizzare 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 semplicemente ARM1, nel 1985 e il primo processore realmente prodotto l ARM2 fu realizzato lanno successivo. LARM2 era un processore con un bus dati a 32 bit, un 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 lallineamento del program counter dato che i primi 6 bit e gli ultimi 2 erano utilizzati come flag dal processore per specificarne lo stato. LARM2 era probabilmente il più semplice processore a 32 bit con i suoi 30.000 transistor. Era 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 transistor e, come la maggior parte delle CPU dellepoca, 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 motivo 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 decise di quotarsi al London Stock Exchange e al NASDAQ.

I lavori del team di sviluppo portarono alla realizzazione dell ARM6. Il primo modello fu prodotto nel 1991 e Apple utilizzò il processore ARM 610 basato su core ARM6 per lApple Newton. Nel 1994 Acorn utilizzò ARM610 come processore centrale del suo computer RiscPC.

Il core era quasi immutato rispetto alloriginale ARM2: mentre lARM2 aveva 30.000 transistor lARM6 ne aveva 35.000. Lidea della società infatti 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 a uno dei vari produttori di semiconduttori che lavorano su commissione.

Limplementazione di maggior successo è sicuramente lARM7TDMI, utilizzato in console portatili, telefoni cellulari e periferiche varie. Il processore è stato prodotto in centinaia di milioni di esemplari.

La DEC licenziò larchitettura 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 le versioni recenti consumano anche di 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 che in seguito fu venduta durante una ristrutturazione aziendale.

Larchitettura comunemente supportata da Windows Mobile e Android è lARM6. I processori XScale e lARM926 sono basati su ARMv5TE mentre gli StrongARM, gli ARM925T e gli ARM7TDMI sono basati su ARM4.

                                     

2. 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.

Larchitettura ARM è unarchitettura RISC che prevede:

  • Architettura load/store
  • un banco di registri a 32 bit
  • assenza del supporto ad accessi non allineati alla memoria supportati dal core v6
  • Completamento di unistruzione per ogni ciclo di clock in una situazione puramente ideale priva di stalli
  • istruzioni a lunghezza fissa per semplificare la decodifica e lesecuzione a costo di diminuire la densità del codice
  • set di istruzioni ortogonale

Per compensare il progetto semplice rispetto a processori della stessa epoca come lIntel 80286 e il Motorola 68020, il processore comprendeva alcune caratteristiche uniche come:

  • solo le operazioni aritmetiche possono alterare i registri delle esecuzioni condizionate
  • metodo di indirizzamento a indice molto potente
  • esecuzione condizionata di molte istruzioni per ridurre i salti e compensare gli stalli della pipeline
  • shifter a 32 bit che può essere utilizzato in contemporanea con la maggior parte delle istruzioni senza penalizzazioni di tempo
  • interrupt a 2 livelli molto veloce e semplice con un sottosistema di registri collegati che commutano

Una delle caratteristiche più interessante dei processori ARM sono 4 bit addizionali 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 nellesecuzione dellalgoritmo di Euclide per la ricerca del massimo comune divisore MCD.

In linguaggio C il codice è:

In assembly ARM il ciclo diventa:

Questo evita i rami del then e dell else.

Unaltra caratteristica unica del set di istruzioni è la capacità di shiftare i dati 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 lindirizzamento 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 dellARM7TDMI per esempio non avevano istruzioni per caricare quantità 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. I processori più moderni come lARM9 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.

                                     

2.1. Note di progetto Thumb

Gli ultimi processori ARM sono dotati di un set di istruzioni a 16 bit chiamato Thumb che utilizza quattro byte per ogni istruzione. Il codice Thumb è più leggero, ma è dotato di meno funzionalità. Per esempio solo i salti possono essere condizionati e alcuni opcode non possono essere utilizzati da tutte le istruzioni. Nonostante queste limitazioni, Thumb fornisce prestazioni migliori del set di istruzioni completo nel caso di sistemi dotati di limitata larghezza di banda. Molti sistemi embedded sono dotati di un bus verso la memoria limitato e, sebbene il processore possa indirizzare a 32 bit, spesso si utilizzano indirizzamenti a 16 bit o simili: un esempio molto diffuso è il Game Boy Advance. In queste situazioni conviene creare codice Thumb per la maggior parte del programma e ottimizzare le parti di codice che richiedono molta potenza di calcolo utilizzando il set di istruzioni completo.

Il primo processore dotato di Thumb è stato lARM7TDMI. Tutti gli ARM9 le famiglie successive incluso gli XScale sono dotati di Thumb.



                                     

2.2. Note di progetto Jazelle

ARM ha implementato in alcuni processori la tecnologia per permettere al processore di eseguire nativamente il Java bytecode. Questa tecnologia è interoperabile con il codice ARM standard e Thumb.

Il primo processore dotato di Jazelle è stato l ARM926J-S, la tecnologia Jazelle è stata sottolineata dalla J nella sigla. Il processore viene utilizzato sui telefoni cellulari per velocizzare lesecuzione dei giochi Java ME e delle applicazioni. Lidea di facilitare lesecuzione di codice Java per queste applicazioni ha probabilmente spinto ARM a sviluppare questa tecnologia.

                                     

2.3. Note di progetto Thumb-2

La tecnologia Thumb-2 ha fatto il suo debutto nell ARM1156 core, presentato nel 2003. Thumb-2 estende le limitate istruzioni a 16 bit con delle addizionali istruzioni a 32 bit per fornire maggior potenza al processore. La tecnologia Thumb 2 fornisce codice con densità e quindi occupazione di banda simile a quello del codice Thumb ma con prestazioni più vicine a quello ARM a 32 bit.

Thumb-2 inoltre estende le istruzioni ARM e Thumb con delle nuove istruzioni che permettono la manipolazione dei singoli bit, lesecuzione condizionata e la gestione di tabelle con salti.

                                     

2.4. Note di progetto Thumb-2EE

Thumb-2EE, venduta come JazelleRCT, è una tecnologia annunciata nel 2005 che è stata implementata per la prima volta nel processore Cortex-A8. Thumb-2EE è una estensione delle istruzioni Thumb-2, specificamente progettato per gestire codice generato in tempo reale, per esempio durante la esecuzione di codice compilato just in time. La tecnologia Thumb 2EE è stata progetta per linguaggi come Java, C#, Perl e python in modo da generare codice compilato di dimensioni ridotte senza impattare sulle prestazioni.

Le nuove istruzione fornite permettono di controllare automaticamente i puntatori nulli prima di ogni load o store, permettono di gestire leventuale sfondamento degli array, la gestione delle diramazioni e molte altre caratteristiche fornite da linguaggi ad alto livello come listanza di memoria per i nuovi oggetti.

                                     

2.5. Note di progetto NEON

La tecnologia NEON è una combinazioni di istruzioni a 64 e 128 bit SIMD Single Instruction Multiple Data per accelerare e standardizzare il trattamento e lelaborazione di segnali multimediali. NEON permette di eseguire la decodifica MP3 con una CPU a 10 Megahertz e permette di eseguire il codec GSM AMR Adaptive Multi-Rate con una CPU a 13 Megahertz. La tecnologia poggia su un set di istruzioni separato, registri indipendenti e esecuzione del codice separata. NEON gestisce dati a 8/16/32/64 bit di tipo intero, a singola precisione e in virgola mobile. La tecnologia SIMD è cruciale per lesecuzione di operazioni vettoriali, operazioni che trattano molti dati con lo stesso programma. NEON permette di gestire fino a 16 operazioni contemporaneamente.

                                     

2.6. Note di progetto VFP

La tecnologia VFP è unestensione dellarchitettura ARM che fornisce un coprocessore matematico. La tecnologia è nata per fornire operazioni in grado di trattare dati in virgola mobile a singola e doppia precisione in modo economico e pienamente compatibile con la standard ANSI/IEEE Std 754-1985 Standard for Binary Floating-Point Arithmetic. VFP fornisce istruzioni per applicazioni tipo compressioni, decompressioni, grafica tridimensionale, analisi audio e altro. Questa estensione risulta utile per dispositivi tipo PDA, smartphone, set-top box e applicazioni di automazione e controllo. La tecnologia VFP gestisce anche brevi vettori di dati con tecnologia SIMD.

                                     

3. Licenze ARM

ARM Ltd non produce realmente le sue CPU e non vende dispositivi basati sulle sue CPU. ARM Ltd licenzia ad altre aziende la possibilità di realizzare CPU basate su core ARM. ARM offre una serie di licenze che variano a seconda del processore, delle personalizzazioni e del numero di pezzi prodotti. Tutte le licenze ARM prevedono una descrizione hardware dei core e il set completo di strumenti di sviluppo per la realizzazione del software per i processori. Le aziende, dopo aver acquistato la licenza da ARM, si rivolgono a una fonderia di silicio che provvede a realizzare fisicamente il processore basandosi sulla descrizione fornita da ARM. Se lacquirente lo richiede, ARM fornisce anche i simulatori dellhardware delle CPU in modo da permettere allacquirente di modificare la CPU aggiungendovi funzionalità e poi di testarne leffettiva funzionalità senza dover realizzare fisicamente il chip. Alcuni acquirenti acquistano direttamente la descrizione verilog dei processori in modo da poter ottimizzare anche il singolo core migliorandone le prestazioni o riducendone i consumi per utilizzi particolari. Caso a parte sono le fonderie di silicio: queste possono effettuare delle modifiche per un cliente le stesse modifiche possono essere vendute ad altri clienti.

Come le altre aziende, ARM vende le licenze in base al loro valore percepito. Core lenti vengono venduti a un prezzo inferiore a quello di core più moderni e veloci. Inoltre versioni ottimizzate hanno costi maggiori di versioni realizzate assemblando blocchi precostituiti. La situazione viene ulteriormente complicata dalla presenza di fonderie che rivendono versioni ridotte delle licenze ARM Samsung e Fujitsu per esempio, avendo preso dei core base e avendoli personalizzati per migliorarne le prestazioni. Rispetto a fonderie che lavorano su progetti dedicati e quindi realizzati espressamente, queste fonderie offrono prezzi 2 o 3 volte inferiori con prestazioni spesso accettabili. Nel caso di bassi volumi di acquisto usualmente conviene rivolgersi alle fonderie per le licenze mentre in caso di alti volumi di vendita conviene contattare direttamente ARM per una licenza specifica e poi rivolgersi a fonderie dedicate che lavorano solo per il committente e non come Samsung o Fujitsu che lavorando per più committenti contemporaneamente non possono seguire il prodotto allo stesso modo.

I maggiori gruppi di semiconduttori hanno licenza con ARM. Tra questi: Atmel, Broadcom, Cirrus Logic, Freescale società spin-off di Motorola dal 2003, Fujitsu, Intel tramite un accordo con DEC, IBM, Infineon Technologies, Nintendo, OKI, Philips, Samsung, Sharp, STMicroelectronics, Texas Instruments e VLSI. I contratti di licenza sono regolati da clausole di non divulgazione quindi non si conoscono con certezza i costi dei core ARM anche se si sa che sono tra i core più costosi del mercato a parità di prestazioni. Una singola licenza ARM per un prodotto con un processore ARM può costare fino a 200.000 dollari. Per quantità elevate e per modifiche significative allarchitettura il costo della licenza può superare i 10 milioni di dollari.