Firma ARM Holdings (dříve ARM Limited) používala dříve pro ARM architekturu obchodní název Advanced RISC Machine, původně pak Acorn RISC Machine. ARM architektura způsobila v několika směrech revoluci v informačních technologiích.[zdroj?] Je založen na architektuře RISC, neméně pozoruhodné je, že první procesory ARM byly založeny na GaAs polovodičích, které dovolily na tehdejší dobu velmi vysoké taktovací frekvence. Rovněž použitá 32bitová šířka slova nebyla v době vzniku ARMu samozřejmostí. První mikroprocesor s architekturou ARM byl navržen firmou ARM Limited v roce 1984.
Firma ARM Holdings časem ustoupila od výroby procesorů a místo toho se soustředila pouze na jejich vývoj. Schéma procesorů ARM je tedy „intelektuálním vlastnictvím“ firmy ARM, která jej licencuje výrobcům hardware. Procesory ARM je dnes možné najít ve všech odvětvích spotřební elektroniky od PDA, mobilních telefonů, multimediálních přehrávačů, přenosných herních konzolí, kalkulaček až po počítačové periferie (pevné disky, routery). Procesory ARM mají ve svém výrobním programu desítky výrobců, ve spotřební elektronice se používají např. procesory XScale od firmy Marvell, nebo OMAP od firmy Texas Instruments.
V roce 2006 byla architektura ARM zastoupena v 98 % z více než jedné miliardy každoročně prodaných mobilů.[6]
Rostoucí význam architektury ARM, jejíž nejvýkonnější zástupci[7] dnes již mají dostatečný výkon i pro použití v osobních počítačích byl pravděpodobně jedním z impulsů, které přiměly firmu Intel k vývoji nízkopříkonových procesorů Intel Atom. Podle jiných zdrojů byl Intel Atom odpovědí na úsporné mikroprocesory AMD Geode.
Charakteristika
Architektura ARM se nejvýrazněji uplatňuje v mobilních zařízeních (mobilní telefony, tablety) a ve vestavěných systémech (pevný disk, USB flash disk, Wi-Fi čipy, routery apod.). Nízká spotřeba energie při vysokém výpočetním výkonu má zásadní význam hlavně v zařízeních napájených bateriemi, avšak je velkou výhodou také u zařízení pracujících v náročných tepelných podmínkách. Nízkopříkonové procesory totiž nepotřebují složité a přitom relativně nespolehlivé chlazení.
64/32bit, provádění instrukcí v (původním) pořadí – in-order (výkon přibližně na úrovni 32bitového Cortex-A9[36]; dále výkonnostní srovnání s Cortex-A7[37])
?
?
low end/mainstream PC, main stream smartfonů; Samsung Exynos Octa + GPU Mali-T830[38]; Qualcomm Snapdragon 610 (čtyřjádro), Qualcomm Snapdragon 615 (osmijádro), oba používají GPU Adreno 405[39] Viz též Rasperry Pi 3.[40]
64/32bit, provádění instrukcí mimo (původní) pořadí – out-of-order; jeho jednovláknový výkon je při přepočtu na plochu čipu momentálně nejvyšší, a až o 30% vyšší než Cortex-A72, při zachování příkonu a zmenšení "otisku" CPU na čipu.[50][51][52][53]
?
?
Prémiová až mainstreamová mobilní zařízení. Virtuální realita. Možno použít s CPU jádry Cortex-A53 nebo Cortex-A35; a GPU jádry Mali-G71.[50][51][52]
Procesory ARM podporují dva adresové módy. Můžeme adresovat buď prostřednictvím čítače instrukcí, nebo pomocí bázové adresy uložené v jednom z vnitřních registrů. Do paměti lze přistupovat pouze instrukcemi Load/Store (Load-Store Architecture) výrazně zjednodušuje výkonnou jednotku (Execution Unit) procesoru, protože pouze několik instrukcí pracuje přímo s pamětí. Většina instrukcí pracuje s vnitřními registry.
ARM procesory podporují dvě úrovně priority přerušení s dvěma zaměnitelnými bankami registrů. Nejkratší doba provedení požadavku na přerušení je poskytována režimem rychlého přerušení FIQ (Fast Interrupt Request). Druhý typ přerušení je IRQ (Interrupt Request), který se používá pro obsluhu přerušení nevyžadujících extrémně krátké doby odezvy nebo v případě, že vlastní obsluha přerušení je oproti době reakce procesoru mnohonásobně delší.
Architektura procesoru ARM
Procesor ARM obsahuje 44 základních instrukcí s jednotnou šířkou 32 bitů. V jednom taktu se vykonávají pouze instrukce pracující s aritmeticko-logickou jednotkou (ALU), s registry nebo s přímými operandy.
V procesoru je obsaženo 25 částečně se překrývajících 32bitových registrů (15 registrů je univerzálních a zbývajících 10 má speciální funkce), z toho 16 registrů je v každém režimu činnosti programově přístupných.
Množina registrů procesoru
Režim
Mód
Registry
Poznámka
Uživatelský
0
R0 až R9
R10
R11
R12
R13
R14
R15 (PSW)
Rychlé přerušení
1
R10 FIQ
R11 FIQ
R12 FIQ
R13 FIQ
R14 FIQ
Privilegované
Přerušení
2
R10
R11
R12
R13 IRQ
R14 IRQ
Supervisor
3
R10
R11
R12
R13 SVC
R14 SVC
Registry R0 až R13 jsou přístupné v uživatelském režimu pro libovolný účel. Registr R14 je určen výhradně pro uživatelský režim. Pět registrů je speciálně určeno pro režim rychlého přerušení (FIQ). Je-li procesor v režimu FIQ, je těchto pět registrů mapováno do registrů R10 až R14. V registru R14 je uložena návratová adresa do přerušeného programu. Další dva registry jsou určeny pro režim přerušení (IRQ) a v tomto režimu překrývají registry R13 a R14 uživatelského režimu. Další dva registry jsou určeny pro privilegovaný režim supervizora. Poslední registr R15 obsahuje stavové slovo procesoru a čítač instrukcí, který je sdílen všemi režimy činnosti. Významově nejvyšších 6 bitů PSW obsahuje stav procesoru, dalších 24 bitů představuje čítač instrukcí a významově nejnižší dva bity obsahují aktuální režim činnosti procesoru.
Specifika procesoru ARM
Jak bylo uvedeno, procesor obsahuje množinu částečně se překrývajících registrů, takže v případě přerušení nemusí být proveden kompletní úklid registrů. V případě režimu rychlého přerušení FIQ je zkrácení doby odezvy procesoru dosaženo použitím čtyř lokálních univerzálních registrů a jednoho registru s návratovou adresou. Tyto registry mohou obsahovat všechny ukazatele a různé čítače používané v jednoduchých procedurách obsluhy vstupů a výstupů, takže lze dobře dosáhnout velmi rychlého opakovaného přepínání procesoru mezi uživatelským režimem a režimem „rychlého přerušení“.
Procesor je dále schopen obsloužit následující přerušení:
Procesor poskytuje 26bitovou adresu lineární operační paměti, což umožňuje adresovat 64 MiB fyzické paměti. Odkaz na data mimo rozsah způsobí přerušení chyby adresování (Address Exception Trap).
Vektory obsluh jednotlivých přerušení
Adresa
Funkce
Priorita
000 0000
Reset
0 (nejvyšší)
000 0014
Chyba adresace
1
000 0010
Abort (datový)
2
000 001C
Rychlé přerušení (FIQ)
3
000 0018
Přerušení (IRQ)
4
000 000C
Abort (instrukční)
5
000 0004
Nedefinovaný instrukční kód
6
000 0008
Softwarové přerušení
7 (nejnižší)
Instrukční soubor procesoru ARM
Instrukční soubor můžeme rozdělit na skupiny:
instrukce zpracování údajů – zpracování registrových operandů, zpracování přímých operandů, nastavení podmínkového kódu a instrukce aritmeticko-logické
instrukce jednoduchého přenosu údajů
instrukce blokového přenosu údajů – instrukce vykonávají přenos mezi skupinou registrů a spojitou oblastí paměti, přičemž jeden registr je použit jako směrník
instrukce větvení a větvení s uchováním návratové adresy (tyto instrukce odkládají PSW do R14)
instrukce přechodu do privilegovaného režimu supervizora, které zahrnují i programové přerušení
Všechny instrukce mají čtyřbitový prefix, který zajišťuje podmíněné vykonání samotné instrukce. Instrukce zpracování údajů pracují pouze nad souborem vnitřních registrů a každá z těchto instrukcí obsahuje reference na tři operandy: jeden cílový a dva zdrojové.
Instrukce přenosu údajů jsou použity k přenosu dat mezi pamětí a souborem registrů (Load) a naopak (Store). Efektivní adresa je vypočtena součtem obsahu zdrojového registru a posuvu (offset) daného 12bitovou konstantou nebo obsahem dalšího registru. Posuv (offset) může být přičítán k indexovému registru nebo od něj odčítán. Instrukce přenosu údajů mohou pracovat jak s jednotlivými byty, tak s dvojitým slovem (Double Word, 32bitů). Byte přečtený z paměti je uložen do významově nejnižších 8bitů cílového registru a zbytek obsahu je zaplněn nulami.
Instrukce blokového přenosu zabezpečují přenos několika registrů jednou instrukcí. Instrukce obsahuje pole bitů, z nichž každý odpovídá jednomu registru viditelnému v daném režimu. Bit 0 odpovídá R0, bit 1 odpovídá R1, atd.
Instrukce programového přerušení jsou použity především pro přechod do privilegovaného režimu supervizora. PSW je ukládáno do registru R14 režimu supervizora a hodnota čítače instrukcí je dána adresou softwarového přerušení.
Velikost stránky paměti
ARMv8 (AArch64) má v 64bitovém režimu volitelnou velikost stránky paměti 4, 16 nebo 64 KiB. Standardní velikost je 4 KiB. Větší stránky paměti jsou používány v serverovém a HPC prostředí[61] a v systému Android 15,[62] kde 16 KiB stránky poskytují zvýšení výkonu o 5 až 10 % na úkor zvýšení využití operační paměti RAM o asi 9 %.
Odkazy
Reference
↑ Qualcomm Announces Always Connected Platform for Windows Devices. xda-developers. 2017-12-05. Dostupné online [cit. 2017-12-07]. (anglicky)
↑MCU Market on Migration Path to 32-bit and ARM-based Devices: 32-bit tops in sales; 16-bit leads in unit shipments [online]. IC Insights, 25 April 2013 [cit. 2014-07-01]. Dostupné v archivu pořízeném dne 2017-08-18.Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
↑ARM Holdings eager for PC and server expansion. [s.l.]: [s.n.], 1 February 2011. Dostupné online.Je zde použita šablona {{Citation}} označená jako k „pouze dočasnému použití“.
↑Kerry McGuire Balanza. ARM from zero to billions in 25 short years. [s.l.]: ARM Holdings, 11 May 2010. Dostupné online.Je zde použita šablona {{Citation}} označená jako k „pouze dočasnému použití“.
↑ARM 50 Billion Chips [online]. [cit. 2014-04-01]. Dostupné v archivu pořízeném dne 2014-04-07.Je zde použita šablona {{Cite web}} označená jako k „pouze dočasnému použití“.
↑ ARMed for the living room. CNET [online]. [cit. 2024-10-13]. Dostupné online. (anglicky)
↑ "ARM's new brain". www.eetimes.com [online]. [cit. 2010-09-15]. Dostupné v archivu pořízeném dne 2010-10-03.
↑Samsung S3C6410 and S3C6430 Series ARM Proccessors [online]. Samsung [cit. 2009-10-08]. Dostupné v archivu pořízeném dne 2009-09-01.
↑MERRIT, Rick. "ARM stretches out with A5 core, graphics, FPGAs" [online]. EE Times, 2009-10-21 [cit. 2009-10-28]. Dostupné v archivu pořízeném dne 2012-03-13.
↑CLARKE, Peter. ARM tips plans for Swift and Sparrow processor cores [online]. EE Times, 2009-02-03 [cit. 2009-04-18]. Dostupné v archivu pořízeném dne 2012-03-13.
↑SEGAN, Sascha. ARM's Multicore Chips Aim for Netbooks [online]. PC Magazine, 2009-04-09 [cit. 2009-04-18]. Dostupné online.
↑CLARKE, Peter. ARM preps tiny core for low-power microcontrollers [online]. EE Times, 2009-02-23 [cit. 2009-11-30]. Dostupné v archivu pořízeném dne 2012-03-13.
↑WALKO, John. NXP first to demo ARM Cortex-M0 silicon [online]. EE Times, 2009-03-23 [cit. 2009-06-29]. Dostupné v archivu pořízeném dne 2012-03-13.
↑www.triadsemi.com [online]. [cit. 29-01-2010]. Dostupné v archivu pořízeném dne 16-07-2011.
↑OLŠAN, Jan. ARM uvádí jádro Cortex-A32. Architektura ARMv8 bez 64 bitů pro IoT či hodinky. http://www.cnews.cz [online]. 2016-02-25 [cit. 2016-02-25]. Dostupné online.
↑New ARM Cortex-A35 Processor Extends the ARMv8-A Architecture Deeper Into Mobile and Embedded Markets [online]. ARM, 10.11.2015 [cit. 2015-11-13]. Dostupné online.
↑ abLAWSON, Stephen. The company's new CPU and GPU designs aim for high efficiency and sustained performance. Http://www.computerworld.com/. www.ComputerWorld.com [online]. 2016-05-29 [cit. 2016-05-30]. Dostupné v archivu pořízeném z originálu dne 2016-05-31. (anglický)
↑ abLARABEL, Michail. ARM Announces the Mali-G71 Graphics Processor, Cortex-A73. Http://www.phoronix.com. Phoronix.com [online]. 2016-05-30 [cit. 2016-05-30]. Dostupné online. (anglicky)
↑LARABEL, Michael. Google Making Progress On 16KB Page Size For Android. Phoronix.com [online]. 2024-08-23 [cit. 2024-08-24]. Dostupné online. (anglicky)