Arhitectura ARM

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Sigla arhitecturii ARM

Arhitectura ARM (anterior Advanced RISC Machine , înainte de Acorn RISC Machine ), în electronică și informatică , indică o familie de microprocesoare RISC pe 32 și 64 de biți dezvoltate de ARM Holdings și utilizate într-o multitudine de sisteme încorporate . Datorită caracteristicilor sale de consum redus de energie, comparativ cu performanța, arhitectura ARM domină sectorul dispozitivelor mobile , unde economia de energie a bateriei este esențială.

În 2007, familia ARM a acoperit 75% din piața mondială pentru procesoare pe 32 de biți pentru aplicații încorporate , [1] poziționându-se ca una dintre cele mai populare arhitecturi pe 32 de biți din lume. Procesoarele ARM sunt utilizate în telefoanele mobile , tablete , playere media, console portabile , PDA-uri și periferice pentru computer (cum ar fi routere , hard disk-uri de rețea etc.). Ramurile importante ale familiei ARM sunt procesoarele XScale și procesoarele OMAP , fabricate de Texas Instruments .

Istorie

Un procesor ARM Conexant utilizat de mai multe routere

Proiectul ARM a început în 1983 în secțiunea de cercetare și dezvoltare a Acorn Computers Ltd.

Echipa condusă de Sophie Wilson și Steve Furber își propunea o versiune mai bună a tehnologiei MOS 6502 . Acorn folosea MOS 6502 pentru computerele sale la acea vreme, iar managerii credeau că utilizarea procesorelor interne ar oferi beneficii semnificative. Echipa a finalizat dezvoltarea prototipului, numit ARM1 , în 1985, iar primul procesor cu adevărat produs, ARM2 , a fost realizat în anul următor. ARM2 era un procesor cu magistrală de date pe 32 de biți, magistrală de adrese pe 26 de biți, deci putea adresa până la 64 de megaocteți și registre de 16/32 biți. Unul dintre registre a fost utilizat pentru a defini alinierea contorului de programe, deoarece primii 6 biți și ultimii 2 au fost folosiți ca steaguri de către procesor pentru a specifica starea acestuia. ARM2, cu cei 30.000 de tranzistoare, a fost probabil cel mai simplu procesor pe 32 de biți. Mai simplu decât Motorola 68000 , care, în ciuda faptului că avea 68.000 de tranzistoare, a oferit performanțe comparabile. Procesorul își datora simplitatea lipsei de microcod (în 68000 microcodul ocupa un sfert din tranzistoare) și, la fel ca majoritatea procesoarelor de atunci, nu avea cache . Succesorul ARM3 a avut în schimb 4KB de cache pentru a îmbunătăți performanța.

La sfârșitul anilor 1980, Apple Computer a început să lucreze cu Acorn pentru a dezvolta o nouă versiune a nucleului ARM. Proiectul a fost atât de important încât Acorn a mutat echipa de dezvoltare la o nouă companie numită Advanced RISC Machines Ltd .. Acesta este motivul pentru care ARM este adesea extins ca Advanced RISC Machine în loc de Acorn RISC Machine. Advanced RISC Machines a devenit ARM Ltd când compania-mamă ARM Holdings a devenit publică pe bursa din Londra și NASDAQ în 1998.

Munca echipei de dezvoltare a dus la realizarea ARM6 . Primul model a fost produs în 1991 și Apple a folosit procesorul ARM6 bazat pe nucleu ARM 610 pentru Apple Newton . În 1994, Acorn a folosit ARM610 ca procesor central al computerului său RiscPC . Nucleul a fost aproape neschimbat față de ARM2 original: în timp ce ARM2 avea 30.000 de tranzistoare, ARM6 avea 35.000. Ideea companiei a fost de a permite OEM-urilor să preia nucleul ARM și să-l combine cu diferite componente opționale pentru a obține un procesor complet, redus de putere, cu putere redusă, deoarece a fost optimizat pentru sarcini individuale. OEM-urile ar avea atunci producătorii de semiconductori să producă procesorul la comandă.

Cea mai reușită implementare este, fără îndoială, ARM7TDMI , utilizată în console portabile, telefoane mobile și diverse periferice și produsă în sute de milioane de unități.

DEC a licențiat arhitectura ARM, provocând multă confuzie pe piață, deoarece DEC în sine avea propria linie de procesoare DEC Alpha și a produs StrongARM . La 233 MHz procesorul consumă doar 1 Watt, iar versiunile recente consumă și mai puțin. Intel , într-un acord cu DEC pentru un proces, a achiziționat linia StrongARM și a folosit-o împreună cu procesorul său i960 pentru a construi linia XScale, care a fost ulterior vândută în timpul unei restructurări corporative.

Arhitectura acceptată în mod obișnuit de Windows Mobile și Android (sisteme de operare instalate pe PDA-uri , smartphone-uri , tablete și alte dispozitive portabile) este ARM6. Procesoarele XScale și ARM926 se bazează pe ARMv5TE, în timp ce StrongARM, ARM925T și ARM7TDMI se bazează pe ARM4.

Miezurile

Specificațiile microprocesorului ARM
Familie Arhitectură Miezul Caracteristici Cache (I / D) / MMU MIPS @ MHz Aplicații
ARM7TDMI v4T ARM7TDMI (-S) Conductă în 3 etape nu este 15 MIPS @ 16,8 MHz Game Boy Advance , Nintendo DS , iPod
ARM710T MMU 36 MIPS @ 40 MHz Seria Psion 5 , eMate 300
ARM720T 8KB unificat, MMU 60 MIPS @ 59,8 MHz
ARM740T MPU
v5TEJ ARM7EJ-S Jazelle DBX nu este
ARM9TDMI v4T ARM9TDMI Conductă în 5 etape nu este
ARM920T 16 KB / 16 KB, MMU 200 MIPS @ 180 MHz Armadillo , Neo FreeRunner , GP32 , GP2X (primul nucleu), Tapwave Zodiac ( Motorola i. MX1)
ARM922T 8 KB / 8 KB, MMU
ARM940T 4KB / 4KB, MPU GP2X (al doilea nucleu)
ARM9E v5TE ARM946E-S variabil, strâns îmbinat, MPU Nintendo DS , Nintendo DSi , Nokia N-Gage , jetoane Conexant 802.11, player MP3 Samsung YP-K5
ARM966E-S fără cache, TCM-uri

ST Micro STR91xF, inclusiv Ethernet [1]

ARM968E-S fără cache, TCM-uri
v5TEJ ARM926EJ-S Jazelle DBX variabilă, TCM-uri, MMU 220 MIPS @ 200-220 MHz Texas Instruments OMAP 16xx, 17xx ; Nokia 6630 , 6680 , N70 ; Sony Ericsson (seria K, W), Siemens și Benq (seria x65 și mai noi), Caanoo
v5TE ARM996HS fără cache, TCM-uri, MPU
ARM10E v5TE ARM1020E (VFP) 32 KB / 32 KB, MMU
ARM1022E (VFP) 16 KB / 16 KB, MMU
v5TEJ ARM1026EJ-S Jazelle DBX variabilă, MMU sau MPU
ARM11 v6 ARM1136J (F) -S SIMD, Jazelle DBX, (VFP) variabilă, 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 Hero
v6T2 ARM1156T2 (F) -S SIMD, Thumb-2, (VFP) variabilă, MPU
v6KZ ARM1176JZ (F) -S SIMD, Jazelle DBX, (VFP) variabilă, MMU + TrustZone Raspberry Pi , iPhone EDGE , iPhone 3G
v6K ARM11 MPCore 1-4 nuclee SMP, SIMD, Jazelle DBX, (VFP) variabilă, MMU
Cortex v7-A Cortex-A8 NEON, Jazelle RCT, Thumb-2 variabilă (L1 + L2), MMU + TrustZone până la 2000 (2.0 DMIPS / MHz în viteză de la 600 MHz la mai mare de 1 GHz) Texas Instruments OMAP3 , familia Freescale i.MX51 [2]
v7-R Cortex-R4 Încorporat cache variabil, MMU opțional 600 DMIPS Broadcom
v6-M Cortex-M0 Microcontroler cu cache, fără MMU până la 50 MHz Familia NXP LPC11xx [3]
v7-M Cortex-M3 Microcontroler fără cache, (MPU) 120 DMIPS @ 100 MHz Familia de microcontrolere Luminary Micro [4] , familia STMicroelectronics STM32[5] , familiile NXP LPC17xx și LPC13xx [6] , familia ATMEL AT91SAM3x [7] .
v7E-M ARM Cortex-M4 Microcontroler MPU 1,25 DMIPS / MHz Freescale Kinetis, NXP
XScale v5TE 80200 / IOP310 / IOP315 Procesor I / O
80219
IOP321 Iyonix
IOP33x
PXA210 / PXA250 Zaurus SL-5600, IPaq 54xx
PXA255 32 KB / 32 KB, MMU 400 BogoMips @ 400 MHz Gumstix , IPaq 55xx
PXA26x
PXA27x 800 MIPS @ 624 MHz HTC Universal, Zaurus SL-C1000,3000,3100,3200
PXA800 (E) F.
Monahans 1000 MIPS @ 1,25 GHz
PXA900 Blackberry 8700
IXC1100 Procesor de plan de control
IXP2400 / IXP2800
IXP2850
IXP2325 / IXP2350
IXP42x NSLU2
IXP460 / IXP465

Note de proiect

Pentru a menține designul curat, simplu și rapid, procesorul nu are microcod, la fel ca procesorul MOS 6502 folosit la computerele Acorn timpurii.

Arhitectura ARM este o arhitectură RISC care oferă:

  • Încarcă / stochează arhitectura
  • nicio asistență pentru accesele nealiniate de memorie (acceptate de core v6)
  • set de instrucțiuni ortogonale
  • o bancă de registre pe 32 de biți (denumită R0, R1, ..., R15)
  • instrucțiuni cu lungime fixă ​​pentru a simplifica decodarea și execuția la costul scăderii densității codului
  • Finalizarea unei instrucțiuni pentru fiecare ciclu de ceas într-o situație pur ideală, fără a se bloca

Pentru a compensa designul simplu în comparație cu procesoarele din aceeași epocă, cum ar fi Intel 80286 și Motorola 68020 , procesorul a inclus câteva caracteristici unice, cum ar fi:

  • executarea condiționată a multor instrucțiuni pentru a reduce săriturile și a compensa stațiile de conducte
  • numai operațiile aritmetice pot modifica registrele execuțiilor condiționate
  • Schimbator pe 32 de biți care poate fi utilizat simultan cu majoritatea instrucțiunilor fără penalizări de timp
  • metodă de adresare index foarte puternică
  • Întrerupere foarte rapidă și simplă pe 2 niveluri cu un subsistem de comutare a registrelor conectate

Una dintre cele mai interesante caracteristici ale procesoarelor ARM sunt 4 biți suplimentari utilizați pentru a crea coduri condiționale pentru fiecare instrucțiune.

Aceste coduri au redus posibilitățile de adresă, deoarece procesorul nu are mulți biți pentru a le specifica, dar marele avantaj este că aceste coduri permit evitarea salturilor în cazul if simple. Un exemplu clasic este în execuția algoritmului lui Euclid pentru găsirea celui mai mare divizor comun (GCD) .

În limbajul C , codul este:

 int mcd ( int i , int j )
{
    în timp ce ( i ! = j )
    {
       dacă ( i > j )
           i - = j ; / * în formă clasică i = ij; * /
       altceva
           j - = i ; / * în formă clasică j = ji; * /
    }
    retur i ;
}

În asamblarea ARM, bucla devine:

 bucle CMP Ri , Rj ; setați condiția „NE” dacă (i! = j)
                            ; „GT” dacă (i> j),
                            ; sau „LT” dacă (i <j)
        SUBGT Ri , Ri , Rj ; dacă „GT”, i = ij;
        SUBLT Rj , Rj , Ri ; dacă "LT", j = ji;
        Bucla BNE ; dacă „NE”, atunci bucla

Acest lucru evită ramurile de then și else .

O altă caracteristică unică a setului de instrucțiuni este abilitatea de a schimba date în timpul operațiilor normale de date (aritmetică, logică și operații de copiere a registrului). De exemplu, următorul cod C.

a += (j << 2);

este tradus în această instrucțiune de asamblare care rulează într-o singură buclă

ADD Ra, Ra, Rj, LSL #2

Aceste caracteristici fac programele ARM în mod normal mai dense decât programele echivalente pentru alte procesoare RISC. În plus, procesorul face mai puține accesuri la memorie și este capabil să umple conductele mai bine. Prin urmare, CPU-urile ARM pot utiliza frecvențe mai mici decât alte procesoare, în timp ce consumă mai puțină energie pentru a efectua aceleași sarcini.

Mai mult, un procesor ARM are alte caracteristici rar întâlnite în procesoarele RISC, cum ar fi adresarea legată de PC (PC-ul din ARM este registrul R15), adresarea pre și post-increment.

O caracteristică curioasă a procesoarelor ARM este că setul de instrucțiuni crește în timp. De exemplu, procesoarele ARM timpurii (înainte de ARM7TDMI) nu aveau instrucțiuni pentru a încărca cantități de doi octeți. Prin urmare, nu a reușit să gestioneze direct tipurile scurte în C.

Primele procesoare, cum ar fi ARM7, s-au bazat pe o proiectare, preluare, decodare și executare a conductei în 3 etape. Procesoare mai moderne, cum ar fi ARM9, au trecut la conducte în 5 trepte pentru a crește performanța. Alte modificări pentru a spori performanța includ un sistem de predicție rapidă pentru adder și salt .

Deget mare

Cele mai recente procesoare ARM vin cu un set de instrucțiuni pe 16 biți numit Thumb, care folosește patru octeți pentru fiecare instrucțiune. Codul Thumb este mai ușor, dar are mai puține funcționalități. De exemplu, numai salturile pot fi condiționate și unele coduri de opțiuni nu pot fi utilizate de toate instrucțiunile. În ciuda acestor limitări, Thumb oferă performanțe mai bune decât setul complet de instrucțiuni pentru sistemele cu lățime de bandă limitată. Multe sisteme încorporate au o magistrală limitată spre memorie și, deși procesorul poate adresa 32-bit, 16-bit sau o adresare similară este adesea utilizată - un exemplu popular este Game Boy Advance . În aceste situații este convenabil să creați cod Thumb pentru majoritatea programului și să optimizați părțile codului care necesită multă putere de calcul folosind setul complet de instrucțiuni.

Primul procesor echipat cu Thumb a fost ARM7TDMI. Toate familiile ARM9 și ulterioare (inclusiv XScale) sunt echipate cu Thumb.

Jazelle

ARM a implementat tehnologia [2] în unele procesoare pentru a permite procesorului să execute în mod nativ codul secundar Java . Această tehnologie este interoperabilă cu codul standard ARM și Thumb.

Primul procesor echipat cu Jazelle a fost ARM926J-S , tehnologia Jazelle a fost subliniată de J în acronim. Procesorul este utilizat pe telefoanele mobile pentru a accelera executarea jocurilor și aplicațiilor Java ME . Ideea de a facilita executarea codului Java pentru aceste aplicații a determinat probabil ARM să dezvolte această tehnologie.

Thumb-2

Tehnologia Thumb-2 a debutat în nucleul ARM1156 , introdus în 2003. Thumb-2 extinde instrucțiunile limitate de 16 biți cu instrucțiuni suplimentare de 32 de biți pentru a oferi mai multă putere procesorului. Tehnologia Thumb 2 oferă cod cu densitate (și, prin urmare, ocupare lățime de bandă) similară cu cea a codului Thumb, dar cu performanțe mai apropiate de ARM pe 32 de biți.

Thumb-2 extinde, de asemenea, instrucțiunile ARM și Thumb cu noi instrucțiuni care permit manipularea biților unici, execuția condiționată și gestionarea tabelelor cu salturi.

Thumb-2EE

Thumb-2EE , vândut sub numele de JazelleRCT [3] , este o tehnologie anunțată în 2005 care a fost implementată pentru prima dată în procesorul Cortex-A8 . Thumb-2EE este o extensie a instrucțiunilor Thumb-2, concepute special pentru a gestiona codul generat în timp real, de exemplu atunci când se execută cod compilat exact în timp . Tehnologia Thumb 2EE a fost concepută pentru limbaje precum Java , C # , Perl și python pentru a genera cod compilat cu dimensiuni reduse, fără a afecta performanțele.

Noile instrucțiuni furnizate vă permit să verificați automat indicatorii nul înainte de fiecare încărcare sau stocare, vă permit să gestionați posibila descoperire a matricelor , gestionarea sucursalelor și multe alte caracteristici oferite de limbaje la nivel înalt, cum ar fi instanța de memorie pentru articole noi.

NEON

Tehnologia NEON este o combinație de instrucțiuni SIMD pe 64 și 128 biți (date cu instrucțiuni multiple) pentru a accelera și standardiza manipularea și procesarea semnalelor multimedia. NEON vă permite să efectuați decodare MP3 cu un procesor de 10 megaherți și vă permite să rulați codecul GSM AMR (Adaptive Multi-Rate) cu un procesor de 13 megaherți. Tehnologia se bazează pe un set de instrucțiuni separat, registre independente și execuție separată de cod. NEON gestionează date între 8/16/32/64 biți, precizie simplă și date în virgulă mobilă. Tehnologia SIMD este crucială pentru efectuarea operațiilor vectoriale, operații care procesează o mulțime de date cu același program. NEON vă permite să gestionați până la 16 operații simultan.

VFP

Tehnologia VFP este o extensie a arhitecturii ARM care oferă un coprocesor matematic. Tehnologia a fost creată pentru a oferi operațiuni capabile să proceseze date cu virgulă mobilă de precizie simplă și dublă într-un mod economic și pe deplin compatibil cu standardul ANSI / IEEE Std 754-1985 pentru aritmetică în virgulă mobilă binară . VFP oferă instrucțiuni pentru aplicații precum compresie, decompresie, grafică tridimensională, analiză audio și multe altele. Această extensie este utilă pentru dispozitive precum PDA-uri, smartphone-uri, set-top box-uri și aplicații de automatizare și control. Tehnologia VFP gestionează, de asemenea, suporturile de date scurte cu tehnologia SIMD.

Licențe ARM

ARM Ltd nu își fabrică de fapt procesoarele și nu vinde dispozitive bazate pe procesoarele sale. ARM Ltd acordă licență altor companii posibilitatea de a face procesoare bazate pe nuclee ARM. ARM oferă o serie de licențe care variază în funcție de procesor, personalizări și numărul de piese produse. Toate licențele ARM includ o descriere hardware a nucleelor ​​și setul complet de instrumente de dezvoltare pentru construirea de software pentru procesoare. Companiile, după achiziționarea licenței de la ARM, apelează la o turnătorie de siliciu care construiește fizic procesorul pe baza descrierii furnizate de ARM. Dacă cumpărătorul o solicită, ARM furnizează și simulatoare hardware CPU, astfel încât cumpărătorul să poată modifica procesorul adăugând funcționalitate și apoi să-și testeze funcționalitatea reală fără a fi nevoie să construiască fizic cipul. Unii cumpărători cumpără direct descrierea verilog a procesoarelor pentru a optimiza chiar și nucleul unic, îmbunătățindu-i performanța sau reducându-și consumul pentru anumite utilizări. Un caz separat este turnătorii de siliciu: pot face modificări pentru un client și aceleași modificări pot fi vândute altor clienți.

La fel ca alte companii, ARM vinde licențe pe baza valorii percepute a acestora. Miezurile lente sunt vândute la un preț mai mic decât miezurile mai moderne și mai rapide. În plus, versiunile optimizate au costuri mai mari decât versiunile realizate prin asamblarea blocurilor pre-construite. Situația este complicată și mai mult de prezența turnătorilor care revând versiuni reduse ale licențelor ARM (Samsung și Fujitsu de exemplu), luând nuclee de bază și personalizându-le pentru a-și îmbunătăți performanța. Comparativ cu turnătoriile care lucrează la proiecte dedicate și, prin urmare, realizate în mod expres, aceste turnătorii oferă prețuri de 2 sau 3 ori mai mici, cu performanțe deseori acceptabile. În cazul volumelor mici de cumpărare, este de obicei recomandabil să contactați turnătorii pentru licențe, în timp ce în cazul volumelor mari de vânzări, este recomandabil să contactați direct ARM pentru o anumită licență și apoi să contactați turnătoriile dedicate care funcționează numai pentru client și nu Samsung sau Fujitsu care lucrează pentru mai mulți clienți în același timp nu pot urmări produsul în același mod.

Principalele grupuri de semiconductori sunt autorizate sub ARM. Printre acestea: Atmel , Broadcom , Cirrus Logic , Freescale (o companie derivată din Motorola din 2003), Fujitsu , Intel (printr-un acord cu DEC ), IBM , Infineon Technologies , Nintendo , OKI , Philips , Samsung , Sharp , STMicroelectronics , Texas Instruments și VLSI . Acordurile de licență sunt guvernate de clauze de nedivulgare, astfel încât costurile nucleelor ​​ARM nu sunt cunoscute cu certitudine, chiar dacă se știe că se numără printre cele mai scumpe nuclee de pe piață cu aceeași performanță. O singură licență ARM pentru un produs cu procesor ARM poate costa până la 200.000 USD. Pentru cantități mari și modificări arhitecturale semnificative, costul licenței poate depăși 10 milioane de dolari.

Notă

  1. ^ Copie arhivată ( PDF ), la arm.com . Adus la 17 decembrie 2007 (arhivat din original la 3 decembrie 2007) .
  2. ^ Jazelle Arhivat la 23 februarie 2009 la Internet Archive .
  3. ^ Jazelle RCT [ link rupt ]

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh2015001756 · GND (DE) 4706184-4 · BNF (FR) cb16243194b (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT