Proprietar | BRAŢ |
---|---|
Site-ul web | www.arm.com |
Cele arhitecturi ARM sunt arhitecturi externe de tip RISC 32 de biți (ARMv1 la ARMv7) și 64 de biți ( ARMv8 ) dezvoltat de ARM Ltd. începând cu 1983 și a introdus din 1990 de Acorn Computers . Arhitectura ARM este rezultatul muncii lui Sophie Wilson .
Cu o arhitectură relativ mai simplă decât alte familii de procesoare și consumatori cu putere redusă, procesoarele ARM sunt astăzi dominante în domeniul computerelor încorporate , în special telefonia mobilă și tabletele .
Aceste procesoare sunt fabricate sub licență de un număr mare de producători.
Astăzi, ARM este cel mai bine cunoscut pentru sistemele sale pe un cip (SoC) , integrându-se pe un singur cip: microprocesor , procesor grafic (GPU), DSP , FPU , SIMD și controler periferic . Acestea sunt prezente în majoritatea smartphone-urilor și tabletelor. ARM oferă proiectanților arhitecturi care sunt vândute sub licențe de proprietate intelectuală. Acestea oferă diferite opțiuni în care constructorii pot lua orice le interesează pentru a le completa cu opțiunile proprii sau de la terți. Prin urmare, ARM oferă microprocesoare Cortex pentru cele mai recente SoC-uri ( Cortex-A pentru dispozitive portabile precum smartphone-uri și tablete, Cortex-M pentru cuplarea la un microcontroler , Cortex-R pentru microprocesoare în timp real ), procesoare grafice ( Mali ), autobuze AMBA sub licență gratuită, precum și diferitele alte componente necesare pentru compunerea SoC complet. Unii producători, precum Nvidia , preferă să producă propriul procesor grafic, alții, cum ar fi Samsung, preferă să ia în unele cazuri un procesor grafic de la o terță parte sau ARM în funcție de model, iar alții, cum ar fi Apple, modifică un microprocesor componente prin amestecarea mai multor arhitecturi de procesoare ARM ( Apple A6, de exemplu, amestecă tehnologiile de microprocesor Cortex-A9 și Cortex-A15).
Arhitectura ARM a fost inițial dezvoltată intern de compania britanică Acorn Computers , care a folosit-o din 1987 în linia sa de computere Archimedes pe 32 de biți .
ARM a reprezentat apoi „Acorn Risc Machine”. Ulterior, divizia „crearea de microprocesoare” a Acorn a fost desprinsă de compania-mamă și a devenit „Advanced Risc Machine limited”, poziționându-se cu o ofertă independentă pentru piața electronică de bord.
O particularitate a procesoarelor ARM este modul lor de vânzare. Într-adevăr, ARM Ltd. nu produce sau vinde procesoarele sale ca circuite integrate . Compania vinde licențele procesorelor sale, astfel încât acestea să fie gravate în siliciu de către alți producători. Astăzi, majoritatea fondatorilor principali de cipuri oferă arhitectură ARM.
Primul nucleu produs este ARM2, vândut în Archimedes A310 și apoi în gama A4xx. Prezenta o conductă în 3 etape.
Cel mai faimos nucleu este ARM7TDMI care are o conductă în 3 trepte. În plus, ARM7TDMI are un al doilea set de instrucțiuni numit THUMB care permite codarea instrucțiunilor pe 16 biți pentru a obține astfel o economie semnificativă de memorie, în special pentru aplicațiile de la bord.
ARM Ltd. apoi a dezvoltat nucleul ARM9 care prezintă o conductă în 5 etape. Aceasta permite astfel o creștere a numărului de operații logice pe fiecare ciclu de ceas și, prin urmare, o îmbunătățire a performanței vitezei.
Arhitectura ARM este utilizată într-un număr mare de câmpuri și echipează, de exemplu, calculatoarele TI-Nspire și HP-50G . Această arhitectură este, de asemenea, foarte răspândită în telefonia mobilă.
Multe sisteme de operare sunt compatibile cu această arhitectură:
De asemenea, este posibil să aglomerați nuclee cu puteri diferite, cel mai mic consum și putere funcționând de cele mai multe ori, ceea ce face posibilă reducerea consumului de energie al nucleelor mai puternice, care sunt activate numai în cazul unei cereri mari de calcul pentru a accelera procesarea. Această tehnologie se numește mare.PICI , este utilizată de Samsung , cu Exynos de 5 octo (4 cortex low-power-A7 și 4 high power cortex-A15), MediaTek și altele. Tegra 3 de la Nvidia, folosește o tehnică similară cu o singură inimă și mai multe de putere mică de mare putere.
Arhitectura ARM este puternic inspirată de principiile de proiectare RISC . Are 16 registre generale pe 32 de biți. Instrucțiunile, codate pe 32 de biți până la ARMv7, pot avea toate execuție condiționată; pe arhitectura pe 64 de biți ( ARMv8 ), doar câteva instrucțiuni pot avea execuție condiționată.
Setul de instrucțiuni a primit extensii de-a lungul timpului, cum ar fi Thumb , pentru îmbunătățirea densității codului, NEON , pentru furnizarea instrucțiunilor SIMD sau Jazelle , pentru îmbunătățirea execuției codului Java .
Următoarele procesoare utilizează tehnologiile indicate mai jos:
Jazelle DBX (Direct Bytecode eXecution) este o tehnică pentru executarea directă a bytecode-ului Java în arhitecturi ARM ca a treia stare de execuție (și set de execuție), în paralel cu ARM-ul existent și în modul Thumb. Suportul pentru această stare este indicat de „ J ” al arhitecturii ARMv5TEJ și denumirile de bază ARM9EJ-S și ARM7EJ-S. Suportul pentru această stare este necesar de la ARMv6 (cu excepția profilului ARMv7-M). Cu toate acestea, nucleele mai noi includ doar o implementare banală care nu oferă accelerare hardware.
Thumb este un set de instrucțiuni pe 16 biți care oferă un subset al instrucțiunilor ARM clasice pe 32 de biți și economisește memorie semnificativă. Pentru a obține o codificare mai compactă a acestor instrucțiuni, anumiți operanzi sunt implicați și posibilitățile oferite sunt mai limitate.
În modul Thumb, instrucțiunile pe 16 biți oferă mai puține posibilități. Doar conexiunile pot fi, de exemplu, condiționate și mai multe instrucțiuni sunt limitate la accesul unei mici părți din registrele generale ale procesorului. Aceste posibilități reduse îmbunătățesc densitatea generală a unui program, deși unele operații necesită mai multe instrucțiuni. Acest lucru poate reduce timpul necesar încărcării codului în memorie (eliberând lățimea de bandă) și poate crește probabilitatea de a rămâne în memoria cache a instrucțiunilor, crescând foarte mult performanța.
Hardware-ul integrat, cum ar fi Game Boy Advance, are de obicei o cantitate mică de RAM accesibilă printr-o magistrală de date pe 32 de biți, dar majoritatea este accesată printr-o a doua magistrală pe 16 biți sau mai puțin. În această situație, este foarte interesant să vă compilați programul în modul Thumb și să optimizați manual câteva secțiuni care consumă cel mai mult folosind setul complet de instrucțiuni ARM pe 32 de biți, permițând plasarea acestor instrucțiuni mai mari în magistrală. .
Primul procesor care conține un decodor de instrucțiuni Thumb este ARM7TDMI . Toate ARM9 și mai mult (inclusiv XScale ) includ un decodor Thumb.
Tehnologia Thumb-2 începe cu nucleul ARM1156 anunțat în 2003. Thumb-2 extinde setul de instrucțiuni limitat de 16 biți Thumb cu instrucțiuni suplimentare de 32 de biți pentru a oferi mai multă lărgime setului de instrucțiuni. Acest lucru are ca rezultat un set de instrucțiuni cu lățime variabilă. Thumb-2 își propune să atingă o densitate de cod apropiată de Thumb, menținând în același timp performanțe similare cu instrucțiunile ARM setate în memoria de 32 de biți.
Thumb-2 extinde atât setul de instrucțiuni Thumb cât și setul de instrucțiuni ARM, incluzând manipularea câmpului de biți, ramificațiile tabelelor și execuțiile condiționate. Un nou limbaj de asamblare unificat (UAL) acceptă generarea simultană de cod de instrucțiuni ARM și Thumb-2 din același cod sursă; Versiunile de Thumb pe procesoarele ARMv7 sunt, de asemenea, capabile de cod ARM, inclusiv capacitatea de a scrie funcții de gestionare a întreruperilor. Este necesară puțină grijă și utilizarea noii instrucțiuni „ IT ” (dacă-atunci), care vă permite să executați patru instrucțiuni succesive în funcție de o condiție de testare. Când compilați în cod ARM, acest caz este ignorat, dar când compilați în Thumb-2, este generată o instrucțiune reală. De exemplu :
; 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"Toate cipurile ARMv7 acceptă setul de instrucțiuni Thumb-2. Celelalte cipuri din seria Cortex și ARM11 acceptă toate stările de instrucțiuni ARM sau instrucțiuni Thumb-2.
ThumbEE , numit și Thumb-2EE , sau, comercial Jazelle RCT pentru (Runtime Compilation Target, adică în engleză „target of compilation on the fly”), este anunțat în 2005 și apare pentru prima dată în procesorul Cortex-A8 . ThumbEE este a patra stare a procesorului, adăugând mici modificări la setul de instrucțiuni Thumb extins Thumb-2. Aceste modificări fac ca setul de instrucțiuni să fie deosebit de potrivit pentru generarea de cod în timpul rulării, prin compilarea din mers, în medii de rulare controlate. ThumbEE este orientat către limbaje de programare precum Limbo , Java, C # , Perl , Python sau Ruby și permite compilatorilor din mers să genereze mai puțin cod de ieșire fără a afecta performanța.
Noile caracteristici ale ThumbEE includ verificarea automată a indicatorului nul la fiecare instrucțiune de încărcare și salvare, o instrucțiune care verifică limitele unui tablou, accesul la registrele r8-r15 (unde se menține mașina virtuală Jazelle / Java DBX) și instrucțiuni speciale care apelează o funcție de apel invers . Handlerele sunt numite frecvent secțiuni mici de cod, utilizate în mod obișnuit pentru a implementa o funcționalitate de limbaj de programare la nivel înalt, cum ar fi alocarea memoriei pentru un obiect nou. Aceste modificări au fost făcute pentru a reorienta o mână de opcodes și pentru a ști că inima este în modul ThumbEE.
Tehnologia VFP ( vector floating point ) este o extensie de coprocesor de tip FPU în arhitecturi ARM. Oferă calculul formelor cu virgulă mobilă de precizie simplă și cu precizie dublă cu virgulă fixă, care îndeplinesc standardul ANSI / IEEE Std 754-1985 pentru aritmetica în virgulă mobilă binară . VFP oferă calcule în virgulă mobilă pentru a realiza un spectru larg de aplicații și nevoi, cum ar fi PDA-uri , smartphone-uri , compresie și decompresie vocală, grafică tridimensională sau audio digital, imprimante, cutii multimedia și aplicații auto. Arhitectura VFP a fost destinată să susțină execuția modului de instrucțiuni vectoriale scurte, dar acestea funcționează secvențial pe fiecare element vector și, prin urmare, nu oferă performanța unui paralelism vectorial adevărat, așa cum face un SIMD . Aceste moduri vectoriale au fost retrase rapid după introducerea lor pentru a fi înlocuite cu mult mai puternica unitate NEON Advanced SIMD.
Unele procesoare, cum ar fi ARM Cortex-A8, au fost amputate cu un modul VFPLite în loc de un modul VFP complet și necesită aproximativ zece ori mai multe cicluri de ceas pe operație în virgulă mobilă. Alte coprocesoare în virgulă mobilă sau SIMD care pot fi găsite în procesoare bazate pe arhitectura ARM includ NEON , FPA , FPE, iwMMXt . Acestea oferă unele funcționalități similare VFP-urilor, dar nu sunt compatibile cu acesta la nivelul opcode .
Extensia Advanced SIMD (numită și NEON sau MPE pentru Media Processing Engine ) este un SIMD ( Instrucțiune unică, date multiple ), care combină seturi de instrucțiuni pe 64 și 128 de biți, care oferă o accelerație de calcul standardizată pentru aplicații media, 2D / 3D și de procesare a semnalului. NEON este inclus în toate nucleele Cortex-A8, dar este opțional în nucleele Cortex-A9. NEON poate face decodarea MP3 pe un procesor care funcționează la 10 MHz și poate codifica / decoda codec audio GSM AMR la 13 MHz și poate accelera decodarea formatelor video precum h264 sau Real . Acesta conține un set de instrucțiuni, un fișier de registru separat și execuție hardware independentă. Are 32 de registre plutitoare pe 64 de biți, pe care le împărtășește cu FPU, care pot fi cuplate pentru a forma 16 registre de 128 de biți plutitori și acceptă, de asemenea, că aceste registre sunt tratate ca numere întregi semnate sau nesemnate de 8, 16, 32 și 64 biți. Acest SIMD acceptă până la 16 operații simultane. Nucleuri precum ARM Cortex-A8 și Cortex-A9 acceptă vectori pe 128 de biți, dar procesează doar 64 de biți la un moment dat, în timp ce începând cu noul Cortex-A15 poate procesa 128 de biți la un moment dat.
Tehnologia LPAE ( Large Physical Address Extension ) a fost implementat pentru prima dată în Cortex A 3 - lea generatie (Cortex-A7, Cortex-A15 și Cortex-A17). Această extensie este utilizată pe procesoarele ARM pe 32 de biți, permițând adresarea de la 32 de biți (maximum 4 gigaocteți) până la 40 de biți (maximum 1 terabyte). Necesită un MMU cu extensia VMSAv7 . Cu această extensie, granularitatea de control a MMU este de 4KiB .
Această extensie funcționează în mai mulți pași:
Registrul ID_MMFR3furnizează dimensiunea adresei fizice acceptate (32 biți, 36 biți sau 40 biți).
TrustZone este o tehnologie de criptare și securitate a schimburilor cu platforme terțe, conform standardelor Trusted Execution Environment (TEE). Scopul este de a împiedica utilizatorul sau aplicațiile terțe instalate pe terminal să acceseze datele schimbate în acest așa-numit mediu de încredere. Este, de exemplu, utilizat în medii de fișiere protejate de managementul drepturilor digitale (GND), numit și DRM în limba engleză.
ARM oferă, de asemenea, procesoare grafice (GPU-uri) numite Mali, care pot fi integrate în arhitecturi ARM SoC . Prima serie, Mali 200, utilizată în procesoare precum SoC Telechips TCC890x.
A doua serie, Mali 300, nu pare să fi fost utilizată de producători.
A treia serie, Mali 400 MP este oferită pe mai multe procesoare high-end, în general, Cortex A9, cum ar fi ST-Ericsson U8500, Samsung Exynos 4 sau Amlogic 8726-M, dar și pe Cortex A8 AllWinner A1X .
Seria Mali 600 este destinată modelului Cortex A15. Echipează în special seria Samsung Exynos 5. Primul model a fost Mali T604.
API-ul generic pentru accesarea GPU-ului MALI compatibil cu EXA / DRI2 open source gratuit (licențe Apache și MIT) este disponibil pentru Mali 200, 300, 400 și 600 pe platforma Linux, dar cea mai mică parte de acces la procesor, în funcție de pe producător rămâne închis.
Proiectul driverului Lima a fost creat pentru a dezvolta un driver gratuit care să permită utilizarea completă a acestor procesoare. ÎnSeptembrie 2013, depășește deja performanța piloților proprietari pe seria Mali 400.
Cu toate acestea, multe SoC ARM includ un GPU PowerVR sau mai rar alte procesoare grafice ( Qualcomm Adreno , Vivante , Nvidia ), care au toate drivere pentru Linux, dar a căror parte 3D este proprietară și închisă. Proiectul Freedreno are aceleași obiective pentru Adreno ca și proiectul pilot Lima pentru seria Mali.
Arhitectură | Familie (e) |
---|---|
ARMv1 | ARM1 |
ARMv2 | ARM2 , ARM3 |
ARMv3 | ARM6, ARM7 |
ARMv4 | StrongARM , ARM7TDMI , ARM8 , ARM9 TDMI |
ARMv5 | ARM7EJ , ARM9E , ARM10E , XScale , FA626TE, Feroceon, PJ1 / Mohawk |
ARMv6 | ARM11 (ro) |
ARMv6-M | ARM Cortex-M ( ARM Cortex-M0 , ARM Cortex-M0 + , ARM 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 , adaptare terță parte : Scorpion, Krait, PJ4 / Sheeva , Swift |
ARMv7-M | ARM Cortex-M ( ARM Cortex-M3 , ARM Cortex-M4 , ARM Cortex-M7 ) |
ARMv7-R | ARM Cortex-R ( ARM Cortex-R4 , ARM Cortex-R5 , ARM 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 | ARM Cortex-A55 , ARM Cortex-A65 , ARM Cortex-A75 , ARM Cortex-A76 |
ARMv8.3-A | ARM Cortex-A65AE (doar LDAPR, restul în 8.2), ARM Cortex-A76AE (la fel ca A65AE) |
ARMv8-M | ARM Cortex-M23 , ARM Cortex-M33 |
ARMv8-R | ARM Cortex-R53 |
Proprietatea intelectuală este deținută de o companie britanică, dar procesoarele care sunt autorizate sunt licențiate de diferite companii din întreaga lume. Printre companiile care produc modelele seriei Cortex (cele mai avansate), majoritatea se află în Asia (20), urmată de Statele Unite (13) și, în cele din urmă, de Europa (6).