ARM architektúra
A Wikipédiából, a szabad enciklopédiából.
Az ARM architektúra (korábban Advanced RISC Machine, azelőtt Acorn RISC Machine) egy 32-bites, az ARM Limited fejlesztette RISC CPU architektúra, amely több beágyazott rendszerben található meg. Energiatakarékosságuk miatt az ARM architektúrájú CPU-k a vezetők a hordozható elektronikai piacon, ahol az alacsony energiafogyasztás fontos tervezési szempont.
Manapság, az összes beágyazott 32 bites RISC CPU kb. 75%-a az ARM családból származik[1], így ez a világ egyik legelterjedtebb 32-bites architektúrája. Sokféle felhasználói elektronikai eszközben található ARM CPU, kezdve a hordozható eszközöktől (PDA-k, mobiltelefonok, médialejátszók, kézi számítógépkonzolok, és számológépek) egészen a számítógép perifériákig (merevlemezek, asztali routerek). A család kiemelten fontos ágai a Marvell Technology Group által fejlesztett XScale és a Texas Instruments által készített OMAP sorozat.
Tartalomjegyzék |
[szerkesztés] Történet
Az ARM fejlesztése egy kísérleti projektként indult 1983-ban az Acorn Computers Ltd-nél.
A Roger Wilson és Steve Furber vezette csoport egy MOS Technology 6502-re emlékeztető, ám annál fejlettebb processzort kezdett fejleszteni. Az Acorn sok, a 6502-re épülő számítógépet kínált, így egy hasonlóan programozható chip jelentős előnyt jelentett a cégnek.
A csapat 1985 áprilisában készült el az ARM1-nek nevezett fejlesztői mintákkal[2], majd az első eladásra szánt rendszerrel, az ARM2-vel a következő évben. Az ARM2 32-bites adatbusszal és 16 darab 32-bites regiszterrel rendelkezett, valamint 26-bitet használt címzésre (így összesen 64 MByte memória volt címezhető). Ezen regiszterek egyike szolgált a (szó-igazított) utasítás-számlálóként (program counter), úgy hogy a felső 6 és alsó 2 bitje tárolta a processzor státusz flageket. Valószínűleg az ARM2 volt a legegyszerűbb, használható 32-bites mikroprocesszor a világon, midössze kb. 30.000 tranzisztorral (összehasonlításként: a Motorola 6 évvel későbbi 68000-as processzora kb. 70.000 tranzisztort tartalmazott). Ennek az egyszerűségnek a nagy része a mikrókód (a Motorola 68000 tranzisztorainak kb. negyede-harmada) és - a legtöbb mai CPU-hoz hasonlóan - a cache hiányának köszönhető. Az egyszerűsége miatti alacsony áramfelvétele ellenére jobb teljesítményt nyújtott, mint az Intel 80286-os. Az egyik utódját, az ARM3-t, 4 Kbyte méretű cache-sel készítették, amely a teljesítményt tovább növelte.
Az 1980-as évek végén az Apple Computer és az Acorn együttműködésbe kezdett az ARM új változatának kidolgozásában. A munka annyira fontos volt az Acornnak, hogy a fejlesztő csapatot 1990-ben egy új cégbe, az Advanced RISC Machines Ltd.-be helyezték át. Ezért nevezik néha az ARM-ot 'Advances RISC Machine-nak Acorn RISC Machine helyett. Az Advanced RISC Machines Ltd. ARM Ltd.-vé alakult, mikor az anyavállalat, az ARM Holdings plc, 1998-ban a londoni tőzsdén és a NASDAQ-on bejegyzésre került.[1]
Ennek az együttműködésnek az eredményeképpen jött létre az ARM6. Az első példányok 1991-ben kerültek piacra, az Apple pedig az ARM6-alapú ARM 610-et használta az Apple Newton nevű PDA-jában. 1994-ben, az Acorn az ARM 610-et használta RISC PC-i központi processzoraként.
A mag nagyjából azonos méretű maradt a változtatások ellenére. Az ARM2 30.000 tranzisztorral rendelkezett, az ARM6 csupán 35.000-re növelte a tranzisztorok számát. Az elképzelés szerint a gyártó az ARM mag mellé opcionális részeket kínál, amelyekkel egy teljes CPU összeállítható, így alacsony költséggel nagy teljesítmény érhető el.
Az ARM Ltd. szellemi terméket árul, és ezen licenszek alapján építhetőek mikrokontrollerek és CPU-k az ARM magra. A legsikeresebb az ARM7TDMI volt, amelyből több száz millió példányt adtak el majdnem minden mikrokontrollerrel.
A DEC megvásárolta az architektúra licenszét (ezzel némi zavart okozva, mivel ők készítik a DEC Alpha-t is) és elkészítették a StrongARM-ot. 233 Mhz-en a StrongARM mindössze 1 watt energiát használt, az újabb változatok pedig még kevesebbet. Ez később az Intel-hez került egy jogi egyezség részeként, az Intel kihasználta a lehetőséget és kiegészítette az i960-as szériáját a StrongARM-mal. Az Intel később elkészítette a saját, nagysebességű változatát (Intel XScale), amelyet azóta eladott a Marvell Technology Group-nak.
Az okos telefonokban, PDA-kban és egyéb kézi eszközökben megtalálható architektúra az ARMv4. Az ARMv5TE-re épülő XScale és ARM926 már gyakoribbak a high-end készülékekben, mint a StrongARM, az ARM925T és az AM7TDMI alapú ARMv4 processzorok. Az architektúra verzió az Arch oszlopban található.
[szerkesztés] ARM cores
Család | Architektúra | Mag | Képességek | Cache (I/D)/MMU | Tipikus MIPS @ MHz | Felhasználása |
---|---|---|---|---|---|---|
ARM1 | ARMv1 | ARM1 | Nincs | ARM Evaluation System second processor for BBC Micro | ||
ARM2 | ARMv2 | ARM2 | MUL (szorzás) művelet | Nincs | 4 MIPS @ 8 MHz | Acorn Archimedes, Chessmachine |
ARMv2a | ARM250 | Integrált MEMC (memória-kezelő modul), grafikus és I/O processzor. SWP és SWPB (csere) utasítások | Nincs, MEMC1a | 7 MIPS @ 12 MHz | Acorn Archimedes | |
ARM3 | ARMv2a | ARM2a | Processzor cache | 4K egységes | 12 MIPS @ 25 MHz | Acorn Archimedes |
ARM6 | ARMv3 | ARM60 | 32 bites memóriacímek támogatása (korábban: 26 bit) | Nincs | 10 MIPS @ 12 MHz | 3DO Interactive Multiplayer, Zarlink GPS vevő |
ARM600 | Cache és segédprocesszor busz (FPA10-es egység számára) | 4K egységes | 28 MIPS @ 33 MHz | |||
ARM610 | Cache, nincs segédprocesszor busz | 4K egységes | 17 MIPS @ 20 MHz | Acorn Risc PC 600, Apple Newton 100 series | ||
ARM7 | ARMv3 | ARM700 | 8KB egységes | 40 MHz | ||
ARM710a | 8KB egységes | 40 MHz | Acorn Risc PC 700, Apple eMate 300 | |||
ARM7100 | Integrált SoC. | 8KB egységes | 18 MHz | Psion Series 5 | ||
ARM7500 | Integrált SoC. | 4KB egységes | 40 MHz | Acorn A7000 | ||
ARM7500FE | Integrált SoC. FPA és EDO memória vezérlő. | 4KB egységes | 56 MHz | Acorn A7000+ | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-lépéses csővezeték | Nincs | 15 MIPS @ 16.8 MHz | Game Boy Advance, Nintendo DS, iPod, Lego NXT |
ARM710T | 8KB egységes, MMU | 36 MIPS @ 40 MHz | Psion Series 5mx | |||
ARM720T | 8KB egységes, MMU | 60 MIPS @ 59.8 MHz | Zipit | |||
ARM740T | MPU | |||||
ARMv5TEJ | ARM7EJ-S | Jazelle DBX, Enhanced DSP utasítások, 5-lépéses pipeline | Nincs | |||
StrongARM | ARMv4 | SA-110 | 16KB/16KB, MMU | 200 MHz | Apple Newton 2x00 series, Risc PC, Rebel/Corel Netwinder, Chalice CATS, Psion Netbook | |
SA-1110 | 16KB/16KB, MMU | 233 MHz | LART, Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00 | |||
ARM9TDMI | ARMv4T | ARM9TDMI | 5-lépéses pipeline | Nincs | ||
ARM920T | 16KB/16KB, MMU | 200 MIPS @ 180 MHz | Armadillo, GP32,GP2X (első mag), Tapwave Zodiac (Motorola i. MX1), Hp49g+, Sun SPOT, Samsung SC32442 (HTC TyTN, FIC Neo1973[3]) | |||
ARM922T | 8KB/8KB, MMU | |||||
ARM940T | 4KB/4KB, MPU | GP2X (második mag) | ||||
ARM9E | ARMv5TE | ARM946E-S | Enhanced DSP utasítások | változó, szorosan csatolt memóriák, MPU | Nintendo DS, Nokia N-Gage Conexant 802.11 chipek | |
ARM966E-S | Nincs, TCMs |
ST Micro STR91xF (Ethernet [2]) |
||||
ARM968E-S | Nincs, TCMs | |||||
ARMv5TEJ | ARM926EJ-S | Jazelle DBX, Enhanced DSP utasítások | változó, TCMs, MMU | 220 MIPS @ 200 MHz, | Mobile phones: Sony Ericsson (K, W sorozatok), Siemens és Benq (x65 sorozat és újabbak), Texas Instruments OMAP1710, Qualcomm MSM6100, MSM6125, MSM6225, MSM6245, MSM6250, MSM6255A, MSM6260, MSM6275, MSM6280, MSM6300, MSM6500, MSM6800 | |
ARMv5TE | ARM996HS | Órajel-mentes processzor, Enhanced DSP utasítások | Nincs, TCMs, MPU | |||
ARM10E | ARMv5TE | ARM1020E | (VFP), 6-lépéses csővezeték, Enhanced DSP utasítások | 32KB/32KB, MMU | ||
ARM1022E | (VFP) | 16KB/16KB, MMU | ||||
ARMv5TEJ | ARM1026EJ-S | Jazelle DBX, Enhanced DSP utasítások | Változó, MMU or MPU | |||
XScale | ARMv5TE | 80200/IOP310/IOP315 | I/O Processzor, Enhanced DSP utasítások | |||
80219 | 400/600 MHz | Thecus N2100 | ||||
IOP321 | 600 BogoMips @ 600 MHz | Iyonix | ||||
IOP33x | ||||||
IOP34x | 1-2 mag, RAID gyorsítás | 32K/32K L1, 512K L2, MMU | ||||
PXA210/PXA250 | Alkalmazás processzor, 7-lépéses csővezeték | Zaurus SL-5600, iPAQ H3900 | ||||
PXA255 | 32KB/32KB, MMU | 400 BogoMips @ 400 MHz | Gumstix, Palm Tungsten E2,Mentor Ranger & Stryder | |||
PXA26x | alapbeállítás 400 MHz, 624 MHz-ig | Palm Tungsten T3 | ||||
PXA27x | Alkalmazás processzor | 800 MIPS @ 624 MHz | HTC Universal, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50, x51 sorozatok, Motorola Q, Balloon3, Trolltech Greenphone, Palm TX, Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6 | |||
PXA800(E)F | ||||||
Monahans | 1000 MIPS @ 1.25 GHz | |||||
PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
IXC1100 | Control Plane Processzor | |||||
IXP2400/IXP2800 | ||||||
IXP2850 | ||||||
IXP2325/IXP2350 | ||||||
IXP42x | NSLU2 | |||||
IXP460/IXP465 | ||||||
ARM11 | ARMv6 | ARM1136J(F)-S | SIMD, Jazelle DBX, (VFP), 8-lépéses csővezeték | Változó, MMU | 740 @ 532-665 MHz (i.MX31 SoC), 400-528 MHz | Texas Instruments OMAP2420 (Nokia N95, Nokia N93), Zune, Nokia N800, Qualcomm MSM7200 (integrált ARM926EJ-S segédprocesszorral@274MHz, a HTC TyTN II-ban (Kaiser) és HTC Nike-ban) |
ARMv6T2 | ARM1156T2(F)-S | SIMD, Thumb-2, (VFP), 9-lépéses csővezeték | variable, MPU | |||
ARMv6KZ | ARM1176JZ(F)-S | SIMD, Jazelle DBX, (VFP) | változó, MMU+TrustZone | Apple iPhone, Conexant CX2427X, Motorola RIZR Z8 | ||
ARMv6K | ARM11 MPCore | 1-4 core SMP, SIMD, Jazelle DBX, (VFP) | változó, MMU | |||
Cortex | ARMv7-A | Cortex-A8 | Alkalmazás profil, VFP, NEON, Jazelle RCT, Thumb-2, 13-lépéses szuperskaláris csővezeték | Változó (L1+L2), MMU+TrustZone | 2000-ig (2.0 DMIPS/MHz a 600 MHz-től több mint 1 GHz-ig) | Texas Instruments OMAP3 |
Cortex-A9 | Alkalmazás profil, (VFP), (NEON), Jazelle RCT és DBX, Thumb-2, Spekulatív szuperskaláris | MMU+TrustZone | 2.0 DMIPS/MHz | |||
Cortex-A9 MPCore | As Cortex-A9, 1-4 core SMP | MMU+TrustZone | 2.0 DMIPS/MHz | |||
ARMv7-R | Cortex-R4(F) | Embedded profile, (FPU) | Változó cache, opcionális MPU | 600 DMIPS | Broadcom az egyik felhasználója | |
ARMv7-M | Cortex-M3 | Microvezérlő profil, csak Thumb-2 | Nincs cache, (MPU) | 125 DMIPS @ 100 MHz | Luminary Micro[3] mikrovezérlő család, ST Microelectronics STM32[4] | |
ARMv6-M | Cortex-M1 | FPGA-ra tervezett, Microkontroller profil, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB). | Nincs, opcionális szorosan csatolt memória | 136 DMIPS-ig @ 170 MHz[4] (0.8 DMIPS/MHz[5], MHz érhető el FPGA-tól függően) | "Az Actel ProASIC3 és Actel Fusion PSC eszközök 2007 harmadik negyedévében várhatók"[6] |
[szerkesztés] Felépítés
Az egyszerűség és gyorsaság miatt mikrokód nélkül készült, mint a korábbi Acorn mikroszámítógépekben használt, jóval egyszerűbb 8-bites 6502.
Az ARM architektúra a következő RISC képességekkel rendelkezik:
- Load/store architektúra
- Csak illesztett (aligned) memória elérés az ARMv6-ig
- Ortogonális utasítás-készlet
- Nagy, 16*32 bit regiszer-készlet
- Egységes, 32 bites utasítások (egyszerűbb dekódolás és pipelining, csökkentett kódsűrűség)
- Többnyire egy-ciklusos végrehajtás
Az egyszerűbb felépítés kompenzálására, néhány egyedi jellemzőt is hozzáadtak:
- A legtöbb utasításhoz feltételes végrehajtás, így csökkentve az elágazás idejét és kompenzálva az elágazás predikátor hiányát.
- Az aritmetikai utasítások a feltételes kód regisztert csak kérésre módosítják
- 32-bites léptető, amellyel teljesítmény-veszteség nélkül lehet aritmetikai és cím-számolásokat végezni
- Erőteljes indexelt címzési módok
- Egyszerű, de gyors, két prioritási szintű megszakítás-alrendszer cserélt regiszer-készlettel
Egy érdekes ARM újítás a 4-bites feltételes kód minden utasítás elején, így minden utasítás végrehajtása feltételhez köthető. Ez jelentősen korlátozza a memória-elérési utasításokban az eltolást, viszont rövid if
utasítások esetén szükségtelenné teszi az elágazás utasításokat. A standard példa erre az Euklidészi algoritmus:
C programozási nyelven a hurok:
int gcd (int i, int j)
{
while (i != j)
{
if (i > j)
i -= j;
else
j -= i;
}
return i;
}
ARM assembly-ben a hurok:
loop CMP Ri, Rj ; beállítjuk a feltételt: NE - Nem egyenlő (i != 0)
; GT - nagyobb, mint (i > j),
; LT - kisebb, mint (i < j)
SUBGT Ri, Ri, Rj ; ha "GT", i = i-j;
SUBLE Rj, Rj, Ri ; ha "LT", j = j-i;
BNE loop ; ha "NE", akkor ugrás a loop-hoz
így elkerülhetőek az elágazások a then
és az else
kikötések körül.
Az utasítás-készlet egy másik egyedi képessége a léptető és forgató utasítások beépíthetősége az adatfeldolgozó (aritmetikai, logikai, és regiszter-regiszter mozgatás) utasításokban, így például a következő C utasítás
a += (j << 2);
egy egy-ciklusú utasítás lehet az ARM-on.
ADD Ra, Ra, Rj, LSL #2
Ennek eredményeképp egy szokásos ARM program jóval sűrűbb és kevesebb memória-eléréssel rendelkezik, mint elvárnánk; így a pipeline hatékonyabban kihasználható. Bár az ARM egy sokak által alacsonynak vélt sebességen fut, felveszi a versenyt összetettebb CPU architektúrákkal.
Az ARM processzoroknak vannak további, RISC architektúrán ritkán látott képességei, például az Utasítás-számláló-relatív címzés (az utasításszámláló az egyike az ARM processzorok 16 bites regisztereinek), elő- és utónövekményes címzési módok.
Említésre méltó még, hogy bár az ARM már jó ideje elérhető, az utasítás-készlet alig nőtt. Például néhány korai processzor (az ARM7TDMI előttiek), nem rendelkezett 2-byte-os betöltővel, így ezeken lehetetlen olyan kódot gyártani, amely úgy működne, ahogy az elvárható egy C "volatile short" objektumnál.
Az ARM7 és a legtöbb korábbi felépítés három-szakaszú csővezetékkel rendelkeztek: begyűjtés, dekódolás és végrehajtás. A nagyobb teljesítményűek, mint az ARM9, öt-szakaszú pipeline-nal rendelkeznek. A nagyobb teljesítmény elérésének módjai között szerepel a gyorsabb összeadó és a kiterjedtebb predikációs rendszer.
Az architektúra utasításkészlete kiegészíthető "koprocesszorok" használatával, amelyek szoftveresen címezhetőek az MCR, MRC, MRRC és MCRR utasításokkal. A koprocesszor-tér 16 logikai koprocesszorra van felosztva (0-tól 15-ig számozva), a 15-ös (cp15) tipikus vezérlési funkcióknak (gyorsítótár és memória kezelés) van fenntartva (ahol van).
Az ARM alapú gépekben a perifériák általában a fizikai regisztereik ARM memóriájába, a koprocesszor-térbe vagy egy, a processzorhoz kapcsolódó másik eszköz (sín) való leképezésével kapcsolódnak a processzorhoz. A koprocesszor elérés kisebb késleltetésű, így néhány periféria (például az XScale megszakítás-vezérlő) mindkét módon elérhető (memórián és koprocesszoron keresztül).
[szerkesztés] Thumb
Az újabb ARM processzorok rendelkeznek egy tömörített utasítás-készlettel, a Thumb-bal, amely 16 bites utasításokat használ (de továbbra is 32 bites adatokkal dolgozik). A Thumb rövidebb opkódjaival kevesebb funkció érhető el. Például csak az elágazások köthetők feltételhez és sok opkód nem érheti el a CPU regisztereit. A rövidebb opkódok használatával növekszik a kódsűrűség, annak ellenére, hogy néhány művelethez több utasítás szükséges. Különösen azokban a helyzetekben, amelyekben a memória port vagy busz kevesebb mint 32 bit-re van korlátozva, a rövidebb Thumb opkódok jobb teljesítményt nyújtanak, mint a 32 bites, a limitált memória-sávszélesség jobb kihasználása miatt. A beágyazott hardware-eknek többnyire kevesebb a 32 bites adatútja, a többi 16 bites, vagy még vékonyabb (pl.: a Game Boy Advance). Ebben az esetben van értelme a Thumb code-ra fordításának, majd a CPU-t inkább igénybe vevő részeket kézzel átírni a 32 bites nem Thumb utasításkészlettel, és utóbbiakat a 32-bites busz szélességű memóriába elhelyezni.
Az első Thumb utasítás dekóderrel készült processzor az ARM7TDMI volt. Az ARM9 és a későbbiek (ideértve az [Inter XScale|XScale-t]] is) rendelkeznek ilyen értelmezővel.
[szerkesztés] DSP Enhancement utasítások
Az ARM digitális jelfeldolgozásra és multimédiás programokra fejlesztéseként néhány új utasítással egészítették ki [5]. Úgy tűnik, ezt az ARMv5TE és ARMv5TEJ nevekben az "E" jelöli.
Ezek az új utasítások gyakoriak a digitális jelfeldolgozó architektúrákban. Ezek különböző variácók az előjeles szorzásra, telített összeadásra és kivonásra és a vezető nullák számolására.
[szerkesztés] Jazelle
A Jazelle DBX (Közvetlen Bytekód futtatás) technológia segítségével néhány ARM architektúra képes Java bytekódot futtatni az ARM és Thumb futtatási állapotok mellett. Néhány bytekódot gyorsítva futtat, a többit szoftver-kérésekkel hajtja végre.
Az első Jazelle-t támogató processzor az ARM926EJ-S[7] volt: a névbem szereplő J jelöli a Jazelle-képességet. Ezt főként mobiltelefonokban használják, így gyorsítve a Java ME játékok és programok futását.
[szerkesztés] Thumb-2
A Thumb-2, az ARM1156 core-ban, 2003-ban debütáló technológia, a Thumb 16 bites utasításkészletét egészíti ki 32 bites utasításokkal, hogy az utasítás-készlet átfogóbb legyen. Így a Thumb-2 a Thumb kódsűrűségével és 32-bites memóriával rendelkező ARM utasítás-készlet sebességével bír.
A Thumb-2 mind az ARM mind a Thumb utasítás-készletet kiegészíti új utasításokkal, így például bit-mező módosításokkal, ugrótáblákkal (elágazási tábla) és feltételes futtatással.
Minden ARMv7 chip támogatja a Thumb-2 utasítás-készletet. Néhány chip, mint például a Cortex-M3 csak a Thumb-2-t támogatja. Másik Cortex és ARM 11 sorozatú chipek támogatják az "ARM utasítás-készlet módot" és a "Thumb-2 utasítás-készlet módot".
[szerkesztés] Thumb Futtatási környezet (ThumbEE)
A ThumbEE (esetleg Thumb-2EE), a 2005-ben bejelentett, majd a Cortex-A8 processzorban debütáló, Jazelle RCT néven ismert technológia. A ThumbEE a Thumb-2 utasításkészletét egészíti ki úgy, hogy az alkalmas legyen futási időben létrehozott kód futtatására (pl.: Just-in-time compilation ("Pont időben fordítás")) megfelelően kezelt futtatási környezetekben. A ThumbEE cél-nyelvei között megtalálható a Limbo, a [Java], a C#, a Perl és a Python, továbbá a segítségével a JIT fordítók teljesítmény-veszteség nélkül képesek rövidebb kódot előállítani.
A ThumbEE nyújtotta új szolgáltatások között megtalálható a minden írás/olvasás műveletkor lefutó atomatikus null pointer ellenőrzés (tömb határ-ellenőrzésnél hasznos), az r8-r15 regiszterek (ezekben tárolódik a Jazelle/DBX Java virtuális gép állapota) elérhetősége, és az ún. handler-ek ("kezelők": gyakran meghívott kódok) feltételhez kötése (így a magas szintű programozási nyelvek szolgáltatásai (mint pl. a memória-allokáció) egyszerűen megvalósíthatók).
[szerkesztés] Advanced SIMD (NEON)
Az Advanced SIMD (Továbbfejlesztett Egy utasítás - több adat), a NEON néven ismert technológia a média és jelfeldolgozás gyorsítására kínál utasításokat. Egy 10 MHz-en futó NEON-képes proceszor képes MP3 hang dekódolására, egy 13 MHz-es pedig a GSM-eknél használt AMR (Adaptive Multi-Rate) kodek használatára. Az ASIMD új utasításokból, új regiszter-készletből és külön futtató hardware-ből áll. Támogatja a 8, 16, 32 ill. 64 bites egészeket és az egyszeres pontosságú lebegőpontos értékeket, amelyeket SIMD módon kezel így audió/videó/grafika- és játékszámításokra alkalmas. A NEON-ban a SIMD párhuzamosan akár 16 művelet elvégzésére is képes.
[szerkesztés] VFP
A 'VFP egy az ARM-hoz készült segédprocesszor, az IEEE 754 szabványnak megfelelő lebegőpontos aritmetikát támogató, alacsony költségű megoldás. A VFP széles körben felhasználhatóan támogatja a lebegőpontos számításokat, így például használható PDA-kban, nyomtatókban, set-top boxokban, autókban, okos telefonokban, hangtömörítésre és kitömörítésre, 3-dimenziós grafikára valamint digitális audió feldolgozásra. Alkalmas továbbá egyszerűbb vektor-műveletekre, így SIMD párhuzamosságra. Ez jól kihasználható grafikai és jelfeldolgozó programoknál, a kód rövidítése és így az átviteli képesség növelése révén.
Az ARM-hoz készültek további lebegőpontos és/vagy SIMD segédprocesszorok (pl.: FPA, FPE, iwMMXt). Ezek az VFP funkcionalitását biztosít(hat)ják, de azzal nem opkód-kompatibilisek.
[szerkesztés] Biztonsági kiegészítések (TrustZone)
A TrustZone (TM) néven hirdetett biztonsági kiegészítések az ARMv6KZ-től kezdődően találhatók meg az architektúrákban. Ez egy olcsó alternatívát jelent a dedikált biztonsági mag beépítése mellett. A TrustZone két virtuális processzort szolgáltat, hardware-alapú biztonsági rendszerrel. Így egy program két állapot (ún. világ) között váltogathat, így a megbízható világból a kevésbé megbízhatóbb világba nem kerülhetnek információk. Ez a világ-váltás általában ortogonális a processzor további képességeivel, így mindkét világ függetlenül működhet egy rendszermagot használva. A memória és a perifériák is észlelik ezt a váltást, így engedhetik jelszavak és egyéb titkosított adatok elérését az eszközön. Egy tipikus felhasználási módja, hogy egy teljesértékű operációs-rendszer fut a kevésbé megbízható világban, míg egy biztonságra specializált kód fut a megbízható világban.
[szerkesztés] ARM licenszelők
Az ARM Ltd. nem gyárt a terveik alapján CPU-kat, hanem az architektúrákat az érdeklődő cégeknek licenszeli. Az ARM többféle licenszelési módot is ajánl, az ár és az eladható daraboktól függően. Minden ARM licensszel az ARM az ARM mag egy elkészíthető hardware leírását, teljes szoftverfejlesztői készletet (fordító, debugger, SDK) és a legyártott ARM CPU-t tartalmazó szilícium eladásának jogát adja. Azon a gyártók számára, amelyek az ARM magot saját chipjeikben kívánják beépíteni, többnyire csak a gyártásra kész mag szellemi termékét kívánják felvásárolni, az ARM egy az adott ARM magot leíró kapulistát ad egy absztakt szimulációs modellel egyetemben, amellyel a programok tesztelhetők és az architektúra integrációja és ellenőrzése egyszerűbbé tehető. Az ambiciózusabb vásárlók (pl.: gyártók) választhatják a processzor szellemi termének Verilog formában való megvásárlását, amellyel architektúra szintű optimaliziálás és kiegészítések érhetők el. Így a tervezők különleges célokat érhetnek el, amelyek egyébként elérhetetlenek (magasabb órajel, nagyon alacsony energiafogyasztás, utasítás-készlet kiegészítések stb). Az ARM a továbbadás jogát nem adja el, a licenszelők az előállított termékeket (chipek, kártyák, teljes rendszerek stb.) eladhatják. A kereskedő gyártók egy külön csoportot alkotnak: nem csak az ARM magot tartalmazó szilíciumot árulhatják, általában birtokolják az ARM magok további vásárlók számára történő építésének jogát is.
Mint a legtöbb szellemi terméket áruló cég, az árait az ARM is az észlelt értékhez viszonyítja. Architekturálisan ez azt jelenti, hogy a kisebb teljesítményű ARM magok licensze kevesebbe kerül, mint egy magasabb teljesítményűé. Megvalósítás szempontjából ez annyit jelent, hogy egy egységbe foglalható mag drágább, mint egy macro mag. Az árakat bonyolítja, hogy a kereskedő gyártók (például a Samsung és a Fujitsu) alacsonyabb licenszköltségget kínálhat a nagyobb vásárlóknak. Azért cserébe, hogy az ARM magot a gyártó saját tervezőin keresztül kapja meg, a vásárló csökkentheti vagy megszüntetheti az ARM licenszdíját. A saját tervezőket nélkülöző kijelölt gyártókhoz (mint a UMC) képest a Fujitsu/Samsung kétszer-háromszor többet kér darabonként. Kis és közepes mennyiség esetén a tervezői szolgáltatásokat is nyújtó gyár alacsonyabb összköltséget jelent (a licenszdíj elosztása miatt). A nagy tömegű termelésnél hosszú távon elérhető az alacsonyabb darabár a kijelölt gyárak melletti döntéssel, mivel így az ARM felé egy egyszeri tervezési költséget kell fizetni.
Sok félvezetőgyártó cég rendelkezik ARM licensszel, ezek közül néhány: Analog Devices, Atmel, Broadcom, Cirrus Logic, Faraday technology, Freescale (a Motorola-ból 2004-ben kivált cég), Fujitsu, Intel (DEC-el való kapcsolata miatt), IBM, Infineon Technologies, Nintendo, NXP Semiconductors (a Philips-ből 2006-ban kivált cég), OKI, Samsung, Sharp, STMicroelectronics, Texas Instruments és VLSI. Habár az ARM licenszfeltételeit védi egy közzétételt tiltó egyezség, az ARM-ot sokan az egyik legdrágább CPU magnak tartják. Egy fogyasztói termék, amely egy ARM magot tartalmaz a 200.000 USD-t is meghaladható licenszköltséget foglalhat magában. Nagy mennyiségű gyártásnál, vagy az architektúra módosításának esetében a licenszdíj meghaladhatja a 10 millió USD-t is.
Az ARM szerint a több mint 200 licensze jó esélyt ad az Intellel szemben a folyamatban levő vitában, hogy melyik architektúrát használják hordozható számítógépekben.
[szerkesztés] Megközelítő licensz-költség
Az ARM 2006-os éves jelentése szerint a 2.45 milliárd eladott darabból származó jogdíj 88.7 millió GBP (164.1 millió USD) [8]. Ez darabonként 0.036 GBP-t (0.067 USD-t) jelent. Akárhogyis, ez az összes mag átlaga, beleértve az újabb, drágább, és a régebbi, olcsóbb magokat.
Ugyanebben az évben, az ARM licenszekből származó bevétele 65.2 millió GBP volt (119.5 millió USD)[9], átlagosan 1 millió GBP licenszenként. Ismételten, ez egy átlag, mind a régi, mind az új magokkal.
Figyelembe véve, hogy az ARM 2006-os bevételének 60%-a a jogdíjból, 40%-a a licenszekből származott, az ARM átlagosan 0.06 GBP-t (0.11 USD) szerez a processzorokért (beleértve a jogdíjakat és a licenszet). Azonban mivel többnyire az újabb technológiák licenszei kerülnek eladásra, az eladott egységek (és így a jogdíjak) nagyobb részét az elfogadottabb termékek teszik ki. Így a fenti számítás nem tükrözi egy ARM termék valós árát.
[szerkesztés] Lásd még
[szerkesztés] Források
- ^ http://www.arm.com/miscPDFs/3823.pdf
- ^ "Néhány tény az Acorn RISC Machine-ról" Roger Wilson üzenete a comp.arch-on, Nov 2 1988.
- ^
- ^ "Az ARM kiegészíti a Cortex családot az első FPGA-ra optimalizált processzorral", ARM press release, March 19 2007.
- ^ "ARM Cortex-M1", ARM termék weboldal.
- ^ ARM Extends Cortex Family with First Processor Optimized for FPGA
- ^ Shanghai Jade Licenses ARM Prime Starter Kit for DCP SoC
- ^ "Business review/Financial review/IFRS", p. 10, ARM éves jelentés, 2006. May 7 2007
- ^ A teljes, 110.6 millió GBP-s (202.5 millió USD) elosztva a "Termékenkénti licenszbevétellel"; "Üzleti áttekintés/Pénzügyi áttekintés/IFRS" és "Teljesítmény mutatók", p. 10 / p. 3ARM éves jelentés, 2006. May 7 2007
[szerkesztés] Külső hivatkozások
- Ezen oldal eredeti, angol változata
- ARM Ltd.
- ARM Assembler Programmozás; leírások, példák
- TrustZone(TM) Technológia
- ARM Microkontroller fejlesztői források - fejléc fájlok, sémák, CAD fájlok stb..
- Arm architektúra