ARM

Z Wikipedie, otevřené encyklopedie

Skočit na: Navigace, Hledání
Conexant ARM procesor používaný hlavně v routerech

ARM (dříve Advanced RISC Machine a ještě předtím Acorn RISC Machine) je v informačních technologiích 32bitová mikroprocesorová architektura typu RISC vyvinutá firmou ARM Limited, která je široce využívaná v mnoha vestavěných systémech. Díky svým energeticky úsporným vlastnostem jsou procesory ARM používány hlavně v mobilním odvětví spotřební elektroniky, kde je malá spotřeba velmi důležitá. První mikroprocesor s architekturou ARM byl navržen firmou ARM Limited v roce 1984.

Dnes tvoří rodina procesorů ARM 75 % všech 32bitových RISC procesorů[1] ve vestavěných zařízeních, což z ní dělá nejpoužívanější architekturu na světě. Procesory ARM je 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). Důležité větvě této rodiny jsou zejména Marvell XScale a OMAP od Texas Instruments.

Obsah

[editovat] Charakteristika procesoru ARM

  • 32bitová vnitřní architektura
  • 32bitová datová sběrnice s propustností 32 MB/s
  • 26bitová adresová sběrnice (dostupný lineární adresní prostor 64 MiB)
  • 25 vnitřních 32bitových registrů
  • přístup do paměti pouze instrukcemi Load/Store
  • částečné překrývání vnitřních registrů
  • nejdelší doba reakce na přerušení 3 milisekundy
  • hodinová frekvence 8 MHz
  • možnost podmíněného vykonání instrukcí
  • průměrná rychlost vykonání instrukcí 3 až 4 MIPS
  • možnost připojení standardních pamětí DRAM
  • jednoduchý a výkonný instrukční soubor, jednoduše využitelné kompilátory jazyků vyšších programovacích jazyků

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) 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ší.

[editovat] Architektura procesoru ARM

Procesor ARM obsahuje 44 základních instrukcí s jednotnou šířkou 32 bitů. V jednom taktu jsou vykonány pouze instrukce pracující s ALU (aritmeticko-logická jednotka), s registry nebo s přímými operandy.

Procesor pracuje ve čtyřech základních režimech:

  • uživatelský režim USR
  • privilegovaný režim supervizora SUP
  • privilegovaný režim přerušení IRQ
  • privilegovaný režim rychlého přerušení FIQ

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.

[editovat] 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 je 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í:

  • chyba v adresování (Address Exception Trap)
  • chyba při čtení, nebo zápisu dat do vnější paměti (Data Fetch Cyrcle Aborts)
  • chyba při čtení instrukce z vnější paměti (Instruction Fetch Cyrcle Aborts)
  • přerušení programovými prostředky (instrukce SWI)
  • nedefinovaný kód instrukcí (Undefined Instruction Traps)
  • reset procesoru

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žší)

[editovat] 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í.

[editovat] Literatura

  • LIČEV, Lačezar; MORKES, David. Procesory - architektura, funkce, použití. Praha : Computer Press, 1999. ISBN 80-7226-172-X.

[editovat] Reference

  1. http://www.arm.com/miscPDFs/3823.pdf

[editovat] Externí odkazy

logo Wikimedia Commons
Wikimedia Commons nabízí obrázky, zvuky či videa k tématu