Proprietario | BRACCIO |
---|---|
Sito web | www.arm.com |
Le architetture ARM sono architetture esterne di tipo RISC 32 bit (ARMv1 to ARMv7) e 64 bit ( ARMv8 ) sviluppate da ARM Ltd. dal 1983 e introdotte dal 1990 da Acorn Computers . L'architettura ARM è il frutto del lavoro di Sophie Wilson .
Con un'architettura relativamente più semplice rispetto ad altre famiglie di processori e consumatori a bassa potenza, i processori ARM sono oggi dominanti nel campo dell'informatica incorporata , in particolare della telefonia mobile e dei tablet .
Questi processori sono fabbricati su licenza da un gran numero di produttori.
Oggi, ARM è meglio conosciuto per i suoi sistemi su un chip (SoC) , che integrano su un singolo chip: microprocessore , processore grafico (GPU), DSP , FPU , SIMD e controller periferico . Questi sono presenti nella maggior parte degli smartphone e dei tablet. ARM offre architetture vendute con licenze di proprietà intellettuale ai progettisti. Offrono diverse opzioni in cui i costruttori possono prendere ciò che gli interessa per integrarsi con le proprie opzioni di designer o di terze parti. ARM propone quindi microprocessori Cortex per i SoC più recenti ( Cortex-A per dispositivi portatili come smartphone e tablet, Cortex-M per accoppiamento a microcontrollore , Cortex-R per microprocessori real-time ), processori grafici ( Mali ), bus AMBA sotto licenza libera, così come i vari altri componenti necessari per la composizione del SoC completo. Alcuni produttori, come Nvidia , preferiscono produrre il proprio processore grafico, altri, come Samsung, preferiscono prendere in alcuni casi un processore grafico di terze parti o ARM a seconda del modello, e altri, come Apple, modificano alcuni microprocessori componenti combinando diverse architetture di processori ARM (l' Apple A6, ad esempio, combina le tecnologie dei microprocessori Cortex-A9 e Cortex-A15).
L'architettura ARM è stata inizialmente sviluppata internamente dalla società britannica Acorn Computers , che l'ha utilizzata dal 1987 nella sua linea di computer Archimedes a 32 bit .
ARM allora stava per 'Acorn Risc Machine'. Successivamente, la divisione “creazione di microprocessori” di Acorn è stata staccata dalla capogruppo ed è diventata “Advanced Risc Machine limited”, posizionandosi con un'offerta indipendente per il mercato dell'elettronica di bordo.
Una particolarità dei processori ARM è la loro modalità di vendita. Infatti, ARM Ltd. non produce né vende i suoi processori come circuiti integrati . L'azienda vende le licenze dei suoi processori in modo che vengano incise nel silicio da altri produttori. Oggi, la maggior parte dei principali fondatori di chip offre l'architettura ARM.
Il primo nucleo prodotto è l'ARM2, venduto nella gamma Archimedes A310 poi A4xx. Presentava una pipeline a 3 stadi.
Il core più famoso è l' ARM7TDMI che ha una pipeline a 3 stadi. Inoltre, l' ARM7TDMI dispone di un secondo set di istruzioni denominato THUMB che consente la codifica di istruzioni su 16 bit in modo da ottenere così un notevole risparmio di memoria, in particolare per le applicazioni di bordo.
ARM srl ha poi sviluppato il core ARM9 che presenta una pipeline a 5 stadi. Ciò consente quindi un aumento del numero di operazioni logiche su ciascun ciclo di clock e quindi un miglioramento delle prestazioni di velocità.
L'architettura ARM è utilizzata in un gran numero di campi ed equipaggia, ad esempio, i calcolatori TI-Nspire e HP-50G . Questa architettura è molto diffusa anche nella telefonia mobile.
Molti sistemi operativi sono compatibili con questa architettura:
È inoltre possibile agglomerare nuclei di diversa potenza, la più bassa di consumo e la maggior parte del tempo in funzione, questo permette di ridurre al minimo il consumo di potenza dei nuclei più potenti, che si attivano solo in caso di elevata richiesta di calcolo per velocizzare la lavorazione. Questa tecnologia si chiama big.LITTLE , viene utilizzata da Samsung , con i suoi 5 octo Exynos (4 low power cortex-A7 e 4 high power cortex-A15), MediaTek e altri. Il Tegra 3 di Nvidia, utilizza una tecnica simile con un cuore e diversi ad alta potenza a bassa potenza.
L'architettura ARM è fortemente ispirata ai principi di progettazione RISC . Dispone di 16 registri generali a 32 bit. Le istruzioni, codificate a 32 bit fino ad ARMv7, possono avere tutte l'esecuzione condizionale; sull'architettura a 64 bit ( ARMv8 ), solo poche istruzioni possono avere esecuzione condizionale.
Il set di istruzioni ha ricevuto estensioni nel tempo, come Thumb , per migliorare la densità del codice, NEON , per fornire istruzioni SIMD o Jazelle , per migliorare l'esecuzione del codice Java .
I seguenti processori utilizzano le tecnologie di seguito indicate:
Jazelle DBX (Direct Bytecode eXecution) è una tecnica per eseguire direttamente il bytecode Java nelle architetture ARM come terzo stato di esecuzione (e set di esecuzione), in parallelo con l'ARM esistente e in modalità Thumb. Il supporto per questo stato è indicato dalla " J " dell'architettura ARMv5TEJ e dai nomi dei core ARM9EJ-S e ARM7EJ-S. Il supporto per questo stato è richiesto da ARMv6 (ad eccezione del profilo ARMv7-M). Tuttavia, i core più recenti includono solo un'implementazione banale che non fornisce l'accelerazione hardware.
Thumb è un set di istruzioni a 16 bit che fornisce un sottoinsieme delle classiche istruzioni ARM a 32 bit e consente di risparmiare molta memoria. Per ottenere una codifica più compatta di queste istruzioni, alcuni operandi sono impliciti e le possibilità offerte sono più limitate.
In modalità Thumb, le istruzioni a 16 bit offrono meno possibilità. Solo le connessioni possono, ad esempio, essere condizionate e alcune istruzioni sono limitate all'accesso di una piccola parte dei registri generali del processore. Queste possibilità ridotte migliorano la densità complessiva di un programma, sebbene alcune operazioni richiedano più istruzioni. Ciò può ridurre il tempo necessario per caricare il codice in memoria (liberando larghezza di banda) e aumentare la probabilità di rimanere nella cache delle istruzioni, aumentando notevolmente le prestazioni.
L'hardware integrato come il Game Boy Advance ha in genere una piccola quantità di RAM accessibile tramite un bus dati a 32 bit, ma la maggior parte è accessibile tramite un secondo bus a 16 bit o meno. In questa situazione, è molto interessante compilare il programma in modalità Thumb e ottimizzare manualmente le poche sezioni più impegnative utilizzando il set completo di istruzioni ARM a 32 bit, consentendo di inserire queste istruzioni più grandi nel bus. .
Il primo processore contenente un decodificatore di istruzioni Thumb è l' ARM7TDMI . Tutti gli ARM9 e superiori (incluso XScale ) includono un decoder Thumb.
La tecnologia Thumb-2 inizia con il core ARM1156 annunciato nel 2003. Thumb-2 espande il set di istruzioni a 16 bit limitato di Thumb con istruzioni aggiuntive a 32 bit per dare più ampiezza al set di istruzioni. Ciò si traduce in un set di istruzioni a larghezza variabile. Thumb-2 mira a raggiungere una densità di codice vicina a Thumb mantenendo prestazioni simili all'istruzione ARM impostata nella memoria a 32 bit.
Thumb-2 estende sia il set di istruzioni Thumb che il set di istruzioni ARM, inclusa la manipolazione dei campi di bit, i rami di tabella e le esecuzioni condizionali. Un nuovo Unified Assembly Language (UAL) supporta la generazione simultanea di codice di istruzioni ARM e Thumb-2 dallo stesso codice sorgente; Le versioni di Thumb su processori ARMv7 sono anche in grado di utilizzare codice ARM, inclusa la possibilità di scrivere funzioni di gestione degli interrupt. Occorre un po' di attenzione e l'uso della nuova istruzione " IT " (if-then), che permette di eseguire quattro istruzioni successive a seconda di una condizione di test. Quando si compila su codice ARM, questo caso viene ignorato, ma quando si compila su Thumb-2, viene generata un'istruzione effettiva. Per esempio :
; if (r0 == r1) CMP r0, r1 ITE EQ ; ARM : pas de code ... Thumb : instruction IT ; then r0 = r2; MOVEQ r0, r2 ; ARM : conditionnel ; Thumb : condition via ITE 'T' (then) ; else r0 = r3; MOVNE r0, r3 ; ARM : conditionnel ; Thumb: condition via ITE 'E' (else) ; Se rappeler que l'instruction MOV de Thumb n'a pas de bits pour encoder "EQ" ou "NE"Tutti i chip ARMv7 supportano il set di istruzioni Thumb-2. Gli altri chip della serie Cortex e ARM11 supportano tutti gli stati dell'istruzione ARM o dell'istruzione Thumb-2.
ThumbEE , chiamato anche Thumb-2EE , o, commercialmente Jazelle RCT for (Runtime Compilation Target, che significa in inglese "bersaglio di compilazione al volo"), viene annunciato nel 2005 e compare per la prima volta nel processore Cortex-A8 . ThumbEE è il quarto stato del processore, che aggiunge piccole modifiche al set di istruzioni Thumb esteso di Thumb-2. Queste modifiche rendono il set di istruzioni particolarmente adatto per generare codice in fase di esecuzione, mediante compilazione al volo, in ambienti di runtime controllati. ThumbEE è orientato verso linguaggi di programmazione come Limbo , Java, C # , Perl , Python o Ruby e consente ai compilatori al volo di generare meno codice di output senza influire sulle prestazioni.
Le nuove funzionalità di ThumbEE includono il controllo automatico del puntatore nullo su ogni istruzione di caricamento e salvataggio, un'istruzione che controlla i limiti di un array, l'accesso ai registri r8-r15 (dove viene mantenuta la macchina virtuale Jazelle / Java DBX) e istruzioni speciali che chiamare una funzione di callback . I gestori sono spesso chiamati piccole sezioni di codice, in genere utilizzate per implementare una funzionalità del linguaggio di programmazione di alto livello come l'allocazione della memoria per un nuovo oggetto. Queste modifiche sono state apportate per riorientare una manciata di codici operativi e per sapere che il cuore è in modalità ThumbEE.
La tecnologia VFP ( vector floating point ) è un'estensione del coprocessore di tipo FPU nelle architetture ARM. Fornisce il calcolo di formati a virgola mobile a precisione singola a basso costo e a virgola mobile a doppia precisione che soddisfano lo standard ANSI / IEEE Std 754-1985 per l'aritmetica binaria in virgola mobile . VFP fornisce calcoli in virgola mobile per realizzare un ampio spettro di applicazioni ed esigenze come PDA , smartphone , compressione e decompressione vocale, grafica tridimensionale o audio digitale, stampanti, box multimediali e applicazioni automobilistiche. L'architettura VFP era destinata a supportare l'esecuzione in modalità di brevi istruzioni vettoriali, ma operano in sequenza su ciascun elemento vettoriale e quindi non offrono le prestazioni del vero parallelismo vettoriale come fa un SIMD non . Queste modalità vettoriali sono state rapidamente ritirate dopo la loro introduzione per essere sostituite dall'unità NEON Advanced SIMD molto più potente.
Alcuni processori, come l'ARM Cortex-A8, sono stati amputati con un modulo VFPLite invece di un modulo VFP completo e richiedono circa dieci volte il numero di cicli di clock per operazione in virgola mobile. Altri coprocessori in virgola mobile o SIMD che possono essere trovati nei processori basati su architettura ARM includono NEON , FPA , FPE, iwMMXt . Forniscono alcune funzionalità simili ai VFP ma non sono compatibili con esso a livello di codice operativo .
L'estensione Advanced SIMD (chiamata anche NEON o MPE per Media Processing Engine ) è una SIMD ( Single Instruction, Multiple Data ), che combina set di istruzioni a 64 e 128 bit, che forniscono un'accelerazione computazionale standardizzata per applicazioni multimediali, 2D / 3D e di elaborazione del segnale. NEON è incluso in tutti i core Cortex-A8 ma è opzionale nei core Cortex-A9. NEON può effettuare la decodifica MP3 su un processore operante a 10 MHz e può codificare/decodificare codec audio GSM AMR a 13 MHz e può accelerare la decodifica di formati video come h264 o Real . Contiene un set di istruzioni, un file di registro separato e un'esecuzione hardware indipendente. Dispone di 32 registri flottanti a 64 bit, che condivide con l'FPU, che possono essere accoppiati per formare 16 registri a virgola mobile a 128 bit, e accetta anche che questi registri siano trattati come interi con o senza segno di 8, 16, 32 e 64 bit. Questo SIMD supporta fino a 16 operazioni simultanee. Core come ARM Cortex-A8 e Cortex-A9 supportano vettori a 128 bit ma elaborano solo 64 bit alla volta, mentre a partire dal più recente Cortex-A15 può elaborare 128 bit alla volta.
La tecnologia LPAE ( Grande Physical Address Extension ) è stato implementato per la prima volta nel Cortex A 3 ° generazione (Cortex-A7, Cortex-A15 e Cortex-A17). Questa estensione viene utilizzata sui processori ARM a 32 bit, consentendo l'indirizzamento da 32 bit (massimo 4 gigabyte) a 40 bit (massimo 1 terabyte). Richiede una MMU con l'estensione VMSAv7 . Con questa estensione, la granularità di controllo della MMU è 4KiB .
Questa estensione funziona in più fasi:
Il registro ID_MMFR3fornisce la dimensione dell'indirizzo fisico supportato (32 bit, 36 bit o 40 bit).
TrustZone è una tecnologia per la crittografia e la sicurezza degli scambi con piattaforme di terze parti, secondo gli standard Trusted Execution Environment (TEE). L'obiettivo è impedire all'utente o alle applicazioni di terzi installate sul terminale di accedere ai dati scambiati in questo cosiddetto ambiente fidato. È, ad esempio, utilizzato in ambienti di file protetti da gestione dei diritti digitali (GND), chiamato anche DRM in inglese.
ARM offre anche processori grafici (GPU) chiamati Mali che possono essere integrati nelle architetture ARM SoC . La prima serie, Mali 200, utilizzato nei processori come il SoC Telechips TCC890x.
La seconda serie, Mali 300, non sembra essere stata utilizzata dai produttori.
La terza serie, Mali 400 MP è offerta su processori di fascia più alta, generalmente Cortex A9, come l' ST-Ericsson U8500, il Samsung Exynos 4 o l' Amlogic 8726-M, ma anche sul Cortex A8 AllWinner A1X .
La serie Mali 600 è destinata al Cortex A15. Equipaggia in particolare la serie Samsung Exynos 5. Il primo modello è stato il Mali T604.
L'API di accesso GPU MALI generica compatibile con open source EXA / DRI2 gratuito (licenze Apache e MIT) è disponibile per Mali 200, 300, 400 e 600 su piattaforma Linux, ma la parte di accesso più bassa al processore, a seconda del produttore rimane chiuso.
Il progetto del driver Lima è stato creato per sviluppare un driver gratuito che consenta il pieno utilizzo di questi processori. Nelsettembre 2013, supera già le prestazioni dei piloti proprietari sulla serie Mali 400.
Tuttavia, molti SoC ARM includono una GPU PowerVR o più raramente altri processori grafici ( Qualcomm Adreno , Vivante , Nvidia ), che hanno tutti driver per Linux, ma la cui parte 3d è proprietaria e closed-source. Il progetto Freedreno ha gli stessi obiettivi per l'Adreno del progetto del driver Lima per la serie Mali.
Architettura | Famiglia (i) |
---|---|
ARMv1 | BRACCIO1 |
ARMv2 | ARM2 , braccio 3 |
ARMv3 | ARM6, ARM7 |
ARMv4 | StrongARM , ARM7TDMI , ARM8 , ARM9 TDMI |
ARMv5 | ARM7EJ , ARM9E , ARM10E , XScale , FA626TE, Feroceon, PJ1 / Mohawk |
ARMv6 | ARM11 (it) |
ARMv6-M | BRACCIO Cortex-M ( BRACCIO Cortex-M0 , BRACCIO Cortex-M0 + , BRACCIO Cortex-M1 ) |
ARMv7-A | ARM Cortex-A (Gen1: ARM Cortex-A8 , Gen2: ARM Cortex-A9 MPCore , ARM Cortex-A5 MPCore , Gen3: ARM Cortex-A7 MPCore , ARM Cortex-A12 MPCore , ARM Cortex-A15 MPCore , Adattamento di terze parti : Scorpion, Krait, PJ4 / Sheeva , Swift, |
ARMv7-M | BRACCIO Cortex-M ( BRACCIO Cortex-M3 , BRACCIO Cortex-M4 , BRACCIO Cortex-M7 ) |
ARMv7-R | BRACCIO Cortex-R ( BRACCIO Cortex-R4 , BRACCIO Cortex-R5 , BRACCIO Cortex-R7 ) |
ARMv8-A | ARM Cortex-A35 , ARM Cortex-A50 ( ARM Cortex-A53 , ARM Cortex-A57 ), ARM Cortex-A72 , ARM Cortex-A73 , X-Gene , Denver, Cyclone , Exynos M1 / M2 |
ARMv8.2-A | BRACCIO Cortex-A55 , BRACCIO Cortex-A65 , BRACCIO Cortex-A75 , BRACCIO Cortex-A76 |
ARMv8.3-A | ARM Cortex-A65AE (solo LDAPR, il resto in 8.2), ARM Cortex-A76AE (come A65AE) |
ARMv8-M | BRACCIO Cortex-M23 , BRACCIO Cortex-M33 |
ARMv8-R | BRACCIO Cortex-R53 |
La proprietà intellettuale è di proprietà di una società del Regno Unito, ma i processori concessi in licenza sono concessi in licenza da varie società in tutto il mondo. Tra le aziende produttrici dei modelli della serie Cortex (i più avanzati), la maggioranza si trova in Asia (20), seguita dagli Stati Uniti (13) e infine dall'Europa (6).