ARM architektura - ARM architecture

PAŽE
Logo paže 2017. svg
Návrhář
Bity 32bitová , 64bitová
Představeno 1985 ; Před 36 lety ( 1985 )
Design RISC
Typ Zaregistrujte se -zaregistrujte se
Větvení Podmíněný kód , porovnání a větvení
Otevřeno Proprietární
ARM 64/32 bitů
Představeno 2011 ; před 10ti lety ( 2011 )
Verze ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A, ARMv8-R, ARMv9
Kódování AArch64 /A64 a AArch32 /A32 používají 32bitové instrukce, T32 (Thumb-2) používá smíšené 16- a 32bitové instrukce
Endianness Bi (málo jako výchozí)
Rozšíření SVE , SVE2, AES, SHA, TME; Všechny povinné položky: Thumb-2 , Neon , VFPv4-D16, VFPv4; zastaralé: Jazelle
Registry
Obecný účel 31 × 64bitové celočíselné registry
Plovoucí bod 32 × 128bitové registry pro skalární 32- a 64bitové FP nebo SIMD FP nebo celé číslo; nebo kryptografie
ARM 32bitový (Cortex)
Verze ARMv8-R, ARMv8-M, ARMv8.1-M, ​​ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M
Kódování 32bitové, kromě rozšíření Thumb-2 používají smíšené 16- a 32bitové instrukce.
Endianness Bi (málo jako výchozí)
Rozšíření Thumb-2 , Neon , Jazelle , DSP, Saturated, FPv4-SP, FPv5, Helium
Registry
Obecný účel 15 × 32bitové celočíselné registry, včetně R14 (odkazový registr), ale nikoli R15 (PC)
Plovoucí bod Až 32 × 64bitové registry, SIMD/s plovoucí desetinnou čárkou (volitelně)
ARM 32-bit (starší)
Verze ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
Kódování 32bitové, kromě rozšíření Thumb používá smíšené 16- a 32bitové instrukce.
Endianness Bi (ve výchozím nastavení málo) v ARMv3 a vyšší
Rozšíření Palec , Jazelle
Registry
Obecný účel 15 × 32bitové celočíselné registry, včetně R14 (odkazový registr), ale nikoli R15 (PC, 26bitové adresování ve starších)
Plovoucí bod Žádný

ARM (stylizováno malými písmeny jako rameno , dříve zkratka pro Advanced RISC Machines a původně Acorn RISC Machine ) je rodina architektur RISC (Reduced Instruction Set Computing ) pro počítačové procesory , konfigurovaná pro různá prostředí. Společnost Arm Ltd. vyvíjí architekturu a licencuje ji dalším společnostem, které navrhují vlastní produkty implementující jednu z těchto architektur-včetně systémů na čipech (SoC) a systémů na modulech (SoM), které obsahují různé komponenty, jako je paměť , rozhraní a rádia . Navrhuje také jádra, která implementují tuto sadu instrukcí, a licencuje tyto návrhy řadě společností, které tyto základní návrhy začleňují do svých vlastních produktů.

Existuje několik generací designu ARM. Původní ARM1 používal 32bitovou vnitřní strukturu, ale měl 26bitový adresní prostor, který jej omezoval na 64 MB hlavní paměti . Toto omezení bylo odstraněno v řadě ARMv3, která má 32bitový adresní prostor, a několik dalších generací až do ARMv7 zůstalo 32bitových. Architektura ARMv8-A, která byla vydána v roce 2011, přidala podporu pro 64bitový adresní prostor a 64bitovou aritmetiku díky své nové 32bitové sadě instrukcí s pevnou délkou. Společnost Arm Ltd. také vydala řadu dalších sad instrukcí pro různá pravidla; rozšíření „Thumb“ přidává jak 32-, tak 16bitové instrukce pro lepší hustotu kódu , zatímco Jazelle přidává instrukce pro přímé zpracování bajtových kódů Java a nověji JavaScript . Novější změny zahrnují přidání simultánního multithreadingu (SMT) pro lepší výkon nebo odolnost vůči chybám .

Vzhledem ke svým nízkým nákladům, minimální spotřebě energie a nižší produkci tepla než jejich konkurenti jsou procesory ARM žádoucí pro lehká, přenosná zařízení napájená bateriemi-včetně chytrých telefonů , notebooků a tabletových počítačů a dalších vestavěných systémů . Procesory ARM se však používají také pro stolní počítače a servery , včetně nejrychlejšího superpočítače na světě . S více než 180 miliardami vyrobených čipů ARM je ARM od roku 2021 nejpoužívanější architekturou instrukční sady (ISA) a ISA se vyrábí v největším množství. V současné době jsou pro každé z nich k dispozici široce používaná jádra Cortex , starší „klasická“ jádra a specializované varianty jader SecurCore, které obsahují nebo vylučují volitelné funkce.

Dějiny

BBC Micro

První široce úspěšnou konstrukcí společnosti Acorn Computers byla BBC Micro , představená v prosinci 1981. Jednalo se o relativně konvenční stroj založený na CPU MOS 6502, ale díky použití rychlejšího DRAM běžel zhruba na dvojnásobek výkonu konkurenčních návrhů, jako je Apple II. . Typický DRAM té doby běžel na asi 2 MHz; Acorn zařídil dohodu s Hitachi o dodávce rychlejších částí 4 MHz.

Stroje té doby obecně sdílely paměť mezi procesorem a framebufferem , což procesoru umožňovalo rychle aktualizovat obsah obrazovky, aniž by musel provádět samostatný vstup/výstup (I/O). Protože je však načasování zobrazení videa náročné, musel mít video hardware rychlý přístup k této paměti. Kvůli zvláštnosti designu 6502 nechal CPU polovinu času paměť nedotčenou. Tím, že běží procesor na frekvenci 1 MHz, mohl video systém během těchto prostojů číst data a zabírat celkem 2 MHz RAM. V BBC Micro umožnilo použití 4 MHz RAM použít stejnou techniku, ale běželo dvojnásobnou rychlostí. To mu umožnilo překonat jakýkoli podobný stroj na trhu.

Obchodní počítač Acorn

1981 byl také rokem, kdy byl představen počítač IBM PC . Díky nedávno představenému procesoru Intel 8088 , 16bitovému CPU ve srovnání s 8bitovým designem 6502 , dokázal nabídnout vyšší celkový výkon. Jeho zavedení radikálně změnilo trh stolních počítačů; to, co bylo v průběhu předchozích pěti let převážně hobby a herním trhem, se začalo měnit na nezbytnou obchodní položku, kde dřívější 8bitové designy prostě nemohly konkurovat. Na trh přicházely i novější 32bitové designy, například Motorola 68000 a National Semiconductor NS32016 .

Acorn začal zvažovat, jak na tomto trhu konkurovat, a vytvořil nový design papíru známý jako Acorn Business Computer . Stanovili si cíl vyrobit stroj s desetinásobkem výkonu BBC Micro, ale za stejnou cenu. To by PC překonalo a podcenilo. Nedávné představení Apple Lisa zároveň přineslo koncept Xerox Star širšímu publiku a naznačilo, že budoucnost patří strojům s grafickým uživatelským rozhraním . Lisa však stála 9 995 dolarů, protože byla nabitá podpůrnými čipy, velkým množstvím paměti a pevným diskem , to vše v té době velmi drahé.

Inženýři poté začali studovat všechny dostupné designy CPU. Jejich závěr ohledně stávajících 16bitových návrhů byl, že byly mnohem dražší a stále byly „trochu kecy“, které nabízely jen o něco vyšší výkon než jejich design BBC Micro. Také téměř vždy požadovali, aby i na této úrovni fungoval velký počet podpůrných čipů, což zvýšilo náklady na počítač jako celek. Tyto systémy by jednoduše nedosáhly cíle návrhu. Uvažovali také o nových 32bitových provedeních, ale ty byly ještě dražší a měly stejné problémy s podpůrnými čipy. Podle Sophie Wilsonové všechny testované procesory v té době fungovaly přibližně stejně, s šířkou pásma přibližně 4 Mbit/s.

Dvě klíčové události vedly Acorn po cestě do ARM. Jedním z nich bylo zveřejnění série zpráv z Kalifornské univerzity v Berkeley , které naznačovaly, že jednoduchý čipový design může mít přesto extrémně vysoký výkon, mnohem vyšší než nejnovější 32bitové designy na trhu. Druhou byla návštěva Steva Furbera a Sophie Wilson v Western Design Center , společnosti vedené Billem Menschem a jeho sestrou, která se stala logickým nástupcem týmu MOS a nabízela nové verze jako WDC 65C02 . Tým Acorn viděl studenty středních škol vyrábět rozložení čipů na strojích Apple II, což naznačovalo, že to může udělat každý. Naproti tomu návštěva jiné designérské firmy pracující na moderním 32bitovém CPU odhalila tým s více než tuctem členů, kteří již byli na revizi H jejich návrhu, a přesto obsahoval chyby. To upevnilo jejich pozdní rozhodnutí z roku 1983 zahájit vlastní návrh CPU, stroj Acorn RISC Machine.

Koncepty designu

Původní návrhy Berkeley RISC byly v jistém smyslu výukové systémy, které nebyly navrženy speciálně pro přímý výkon. Ke svému základnímu konceptu těžkého registru ARM přidal řadu dobře přijatých návrhových poznámek 6502. Primární mezi nimi byla schopnost rychle obsluhovat přerušení , což umožnilo strojům nabídnout rozumný vstupně-výstupní výkon bez jakéhokoli dalšího externího hardwaru . Aby ARM nabídl podobná vysoce výkonná přerušení jako 6502, omezil svůj fyzický adresní prostor na 24 bitů se 4bajtovým adresováním slov, tedy 26 bitů s adresováním bajtů, nebo 64 MB. Protože všechny instrukce ARM jsou zarovnány na hranicích slov, takže adresa instrukce je adresa slova, čítač programu (PC) tedy potřeboval pouze 24 bitů. Tato 24bitová velikost umožňovala uložení počítače spolu s osmi příznaky procesoru do jednoho 32bitového registru. To znamenalo, že při příjmu přerušení lze celý stav stroje uložit v rámci jedné operace, zatímco pokud by PC mělo plnou 32bitovou hodnotu, vyžadovalo by to samostatné operace pro uložení počítače a stavových příznaků.

Další změnou, a jednou z nejdůležitějších z hlediska praktického výkonu v reálném světě, byla modifikace instrukční sady tak, aby využívala výhody režimu DRAM v režimu stránky . Nedávno zavedený režim stránky umožňoval následným přístupům k paměti běžet dvakrát rychleji, pokud byly zhruba na stejném místě neboli „stránce“. Berkeleyův návrh neuvažoval o režimu stránky a zacházel se všemi pamětmi stejně. Návrh ARM přidal speciální pokyny pro přístup k paměti podobné vektorům, „S-cykly“, které bylo možné použít k vyplnění nebo uložení více registrů na jednu stránku pomocí režimu stránky. Tím se zdvojnásobil výkon paměti, když je bylo možné použít, a to bylo zvláště důležité pro grafický výkon.

Berkeley RISC navrhuje používaná okna registrů ke snížení počtu uložení registrů a obnovení prováděných při volání procedur ; ARM design toto nepřijal.

Wilson vyvinul instrukční sadu a napsal simulaci procesoru v BBC BASIC, která běžela na BBC Micro s druhým procesorem 6502 . To přesvědčilo inženýry Acorn, že jsou na správné cestě. Wilson oslovil generálního ředitele společnosti Acorn Hermanna Hausera a požádal o další zdroje. Hauser dal souhlas a sestavil malý tým, který navrhl skutečný procesor na základě Wilsonova ISA. Oficiální projekt Acorn RISC Machine byl zahájen v říjnu 1983.

ARM1

2. procesor ARM1 pro BBC Micro

Acorn si jako „silikonového partnera“ vybral technologii VLSI , protože pro Acorn byly zdrojem ROM a vlastních čipů. Acorn poskytl design a VLSI zajistilo rozložení a produkci. První vzorky křemíku ARM fungovaly správně, když byly poprvé přijaty a testovány 26. dubna 1985. Známé jako ARM1, tyto verze běžely na 6 MHz.

První aplikace ARM byla jako druhý procesor pro BBC Micro, kde pomohla při vývoji simulačního softwaru dokončit vývoj podpůrných čipů (VIDC, IOC, MEMC) a zrychlila CAD software používaný při vývoji ARM2. Wilson následně přepsal BBC BASIC v jazyce ARM. Hluboké znalosti získané při navrhování instrukční sady umožnily, aby byl kód velmi hustý, což z ARM BBC BASIC učinilo extrémně dobrý test pro jakýkoli emulátor ARM.

ARM2

Výsledek simulací na deskách ARM1 vedl ke konci roku 1986 k zavedení návrhu ARM2 běžícího na 8 MHz a na začátku roku 1987 ve verzi s rychlým nárazem na 10 až 12 MHz. Významnou změnou v základní architektuře bylo přidání Boothova multiplikátoru , zatímco předchozí multiplikace musela být prováděna v softwaru. Navíc nový režim rychlého přerušení reQuest, zkráceně FIQ, umožnil výměnu registrů 8 až 14 jako součást samotného přerušení. To znamenalo, že požadavky FIQ nemusely ukládat své registry, což dále urychlovalo přerušení.

ARM2 byl zhruba sedmkrát vyšší než výkon běžného systému 7000 na 68000, jako je Commodore Amiga nebo Macintosh SE . Byl dvakrát rychlejší než Intel 80386 běžící na 16 MHz a přibližně stejnou rychlostí jako víceprocesorový supermini VAX-11/784 . Jediné systémy, které ji porazily, byly pracovní stanice Sun SPARC a MIPS R2000 RISC . Dále, protože CPU byl navržen pro vysokorychlostní I/O, upustil od mnoha podpůrných čipů viděných v těchto strojích, zejména postrádal jakýkoli vyhrazený řadič s přímým přístupem do paměti (DMA), který se často vyskytoval na pracovních stanicích. Grafický systém byl také zjednodušen na základě stejné sady základních předpokladů o paměti a načasování. Výsledkem byl dramaticky zjednodušený design, nabízející výkon srovnatelný s drahými pracovními stanicemi, ale za cenu podobnou současným stolním počítačům.

ARM2 představoval 32-bitovou datovou sběrnici , 26-bit adresní prostor a 27 32-bitové registry . ARM2 měl počet tranzistorů pouhých 30 000, ve srovnání s o šest let starším modelem 68000 Motorola s přibližně 40 000. Velká část této jednoduchosti pocházela z nedostatku mikrokódu (což představuje přibližně jednu čtvrtinu až jednu třetinu 68 000) a z (jako většina procesorů dne) nezahrnující žádnou mezipaměť . Tato jednoduchost umožnila nízkou spotřebu energie, ale lepší výkon než Intel 80286 .

Nástupce ARM3 byl vyroben s mezipamětí 4 kB, což dále zlepšilo výkon. Adresová sběrnice byla v ARM6 rozšířena na 32 bitů, ale programový kód musel stále ležet v prvních 64 MB paměti v režimu 26bitové kompatibility, kvůli vyhrazeným bitům pro stavové příznaky.

Advanced RISC Machines Ltd. - ARM6

Mikroprocesorový systém na čipu
Zemřít mikroprocesorem ARM610

Na konci 80. let začala společnost Apple Computer and VLSI Technology pracovat s Acorn na novějších verzích jádra ARM. V roce 1990 Acorn vyčlenil konstrukční tým do nové společnosti s názvem Advanced RISC Machines Ltd., která se stala ARM Ltd., když její mateřská společnost Arm Holdings plc v roce 1998 plula na londýnské burze a NASDAQ . Nový Apple-ARM práce by se nakonec vyvinula do ARM6, poprvé vydaného počátkem roku 1992. Apple použil ARM610 založený na ARM6 jako základ pro svůj Apple Newton PDA.

Raní držitelé licence

V roce 1994 Acorn použil ARM610 jako hlavní centrální procesorovou jednotku (CPU) ve svých počítačích RiscPC . DEC licencoval architekturu ARMv4 a vytvořil StrongARM . Tento procesor na frekvenci 233  MHz čerpal pouze jeden watt (novější verze čerpají mnohem méně). Tato práce byla později předána společnosti Intel jako součást soudního řešení a Intel využil příležitosti a doplnil svou řadu i960 o StrongARM. Intel později vyvinul vlastní vysoce výkonnou implementaci s názvem XScale, kterou od té doby prodal společnosti Marvell . Počet tranzistorů jádra ARM zůstal v průběhu těchto změn v podstatě stejný; ARM2 měl 30 000 tranzistorů, zatímco ARM6 vzrostl pouze na 35 000.

Podíl na trhu

V roce 2005 přibližně 98% všech prodaných mobilních telefonů používalo alespoň jeden procesor ARM. V roce 2010 hlásili výrobci čipů založených na architektuře ARM dodávky 6,1 miliardy procesorů založených na ARM , což představuje 95% chytrých telefonů , 35% digitálních televizorů a set-top boxů a 10% mobilních počítačů . V roce 2011 byla 32bitová architektura ARM nejpoužívanější architekturou v mobilních zařízeních a nejpopulárnější 32bitovou architekturou v integrovaných systémech. V roce 2013 bylo vyrobeno 10 miliard a „čipy založené na ARM se nacházejí v téměř 60 procentech světových mobilních zařízení“.

Licencování

Die z STM32F103VGT6 ARM Cortex-M3 mikroprocesoru 1  MB flash paměti od STMicroelectronics

Základní licence

Hlavním předmětem podnikání společnosti Arm Ltd. je prodej IP jader , která držitelé licence používají k vytváření mikrokontrolérů (MCU), procesorů a systémů na čipech založených na těchto jádrech. Výrobce původního designu kombinuje jádro ARM s ostatními částmi za účelem vytvoření kompletního zařízení, typicky takového, které lze postavit do stávajících závodů na výrobu polovodičů (fabů) za nízkou cenu a přitom poskytovat značný výkon. Nejúspěšnější implementací byl ARM7TDMI se stovkami milionů prodaných. Atmel byl předchůdcem designového centra ve vestavěném systému založeném na ARM7TDMI.

Architektury ARM používané v chytrých telefonech, PDA a dalších mobilních zařízeních se pohybují od ARMv5 do ARMv8-A.

V roce 2009 někteří výrobci představili netbooky založené na CPU architektury ARM, v přímé konkurenci s netbooky založenými na Intel Atom .

Společnost Arm Ltd. nabízí řadu licenčních podmínek, které se liší v ceně a v dodávkách. Společnost Arm Ltd. poskytuje všem držitelům licence integrovatelný popis hardwaru jádra ARM a také kompletní sadu nástrojů pro vývoj softwaru ( kompilátor , debugger , sada pro vývoj softwaru ) a právo prodávat vyrobený silikon obsahující procesor ARM.

Balíčky SoC integrující základní designy ARM zahrnují první tři generace Nvidia Tegra, rodinu Quatro CSR plc, rodinu Nova-Nova od společnosti ST-Ericsson, MCU Precision32 společnosti Silicon Labs, produkty OMAP od společnosti Texas Instruments, produkty Hummingbird a Exynos společnosti Samsung , Apple, A4 , A5 a A5X a NXP je i.MX .

Držitelé licence Fabless , kteří si přejí integrovat jádro ARM do vlastního návrhu čipu, mají obvykle zájem pouze o získání ověřeného polovodičového jádra duševního vlastnictví připraveného k výrobě . Společnost Arm Ltd. pro tyto zákazníky dodává popis netlistu brány vybraného jádra ARM spolu s abstrahovaným simulačním modelem a testovacími programy, které pomáhají integraci a ověřování návrhu. Ambicióznější zákazníci, včetně výrobců integrovaných zařízení (IDM) a slévárenských operátorů, se rozhodnou získat IP procesoru v syntetizovatelné formě RTL ( Verilog ). Díky syntetizovatelnému RTL má zákazník možnost provádět optimalizace a rozšíření architektonické úrovně. To umožňuje konstruktérovi dosáhnout exotických designových cílů, které jinak nejsou možné s nemodifikovaným netlistem ( vysoký takt , velmi nízká spotřeba energie, rozšíření sady instrukcí atd.). Přestože společnost Arm Ltd. neuděluje nabyvateli licence právo na další prodej samotné architektury ARM, nabyvatelé licence mohou volně prodávat vyrobené produkty, jako jsou čipová zařízení, zkušební desky a kompletní systémy. Slévárny obchodníků mohou být zvláštním případem; nejenže mohou prodávat hotová jádra obsahující ARM křemíku, ale obecně mají právo znovu vyrábět jádra ARM pro jiné zákazníky.

Společnost Arm Ltd. oceňuje svou IP na základě vnímané hodnoty. Méně výkonná jádra ARM mají obvykle nižší licenční náklady než jádra s vyšším výkonem. Z hlediska implementace stojí syntetizovatelné jádro více než jádro z tvrdého makra (blackbox). Slévárna obchodníků, která je držitelem licence ARM, jako je Samsung nebo Fujitsu, může komplikovat cenu a nabídnout zákazníkům fabu snížené licenční náklady. Výměnou za získání jádra ARM prostřednictvím interních konstrukčních služeb slévárny může zákazník snížit nebo vyloučit platbu předem licenčního poplatku ARM.

Ve srovnání se specializovanými slévárnami polovodičů (jako jsou TSMC a UMC ) bez vlastních konstrukčních služeb účtuje společnost Fujitsu/Samsung dvakrát až třikrát více za vyrobenou oplatku . U aplikací s malým až středním objemem nabízí slévárna designových služeb nižší celkové ceny (prostřednictvím subvencování licenčního poplatku). U velkoobjemových sériově vyráběných dílů dlouhodobé snížení nákladů dosažitelné nižšími cenami oplatky snižuje dopad nákladů ARM na NRE (Non-Recurring Engineering), takže specializovaná slévárna je lepší volbou.

Společnosti, které byly vyvinuty čipy s jádry navržených Arm Holdings patří Amazon.com ‚s Annapurna Labs dceřiné společnosti Analog Devices , Apple , AppliedMicro (nyní MACOM Technology Solutions ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (nyní NXP Semiconductors ), Huawei , Intel , Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas Instruments a Xilinx .

Postaveno na licenci ARM Cortex Technology

V únoru 2016 společnost ARM oznámila licenci Built on ARM Cortex Technology, často zkrácenou na licenci Built on Cortex (BoC). Tato licence umožňuje společnostem uzavírat partnerství s ARM a provádět úpravy návrhů ARM Cortex. Tyto konstrukční úpravy nebudou sdíleny s jinými společnostmi. Tyto semi-custom základní designy mají také svobodu značky, například Kryo 280 .

Mezi společnosti, které jsou současnými držiteli licence na technologii Built on ARM Cortex Technology, patří Qualcomm .

Architektonická licence

Společnosti mohou také získat architektonickou licenci ARM pro navrhování vlastních jader CPU pomocí instrukčních sad ARM. Tato jádra musí plně odpovídat architektuře ARM. Společnosti, které byly navrženy jádra, které implementují ARM architektuře patří Apple, AppliedMicro (nyní Ampér Computing ), Broadcom, Cavium (nyní Marvell), Digital Equipment Corporation , Intel, NVIDIA, Qualcomm, Samsung Electronics, Fujitsu a NUVIA Inc .

Flexibilní přístup ARM

Dne 16. července 2019 společnost ARM oznámila flexibilní přístup ARM. ARM Flexible Access poskytuje neomezený přístup k zahrnutému duševnímu vlastnictví ARM (IP) pro vývoj. Jakmile zákazníci dosáhnou slévárny nebo prototypování, jsou vyžadovány licenční poplatky za produkt.

75% nejnovější IP ARM za poslední dva roky je zahrnuto v ARM Flexible Access. Od října 2019:

  • CPU: Cortex-A5 , Cortex-A7 , Cortex-A32 , Cortex-A34 , Cortex-A35 , Cortex-A53 , Cortex-R5 , Cortex-R8 , Cortex-R52 , Cortex-M0 , Cortex-M0+ , Cortex-M3 , Cortex-M4 , Cortex-M7 , Cortex-M23 , Cortex-M33
  • GPU: Mali-G52 , Mali-G31 . Obsahuje vývojové sady Mali Driver Development Kit (DDK).
  • Propojení: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
  • Systémové ovladače: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone Memory Wrapper, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, BP140 Paměťové rozhraní
  • Zabezpečení IP: CryptoCell-312, CryptoCell-712, TrustZone True Random Number Generator
  • Periferní ovladače: PL011 UART, PL022 SPI, PL031 RTC
  • Ladění a trasování: CoreSight SoC-400, CoreSight SDC-600, CoreSight STM-500, CoreSight System Trace Macrocell, CoreSight Trace Memory Controller
  • Konstrukční sady: Corstone-101, Corstone-201
  • Fyzická IP: Artisan PIK pro Cortex-M33 TSMC 22ULL ​​včetně kompilátorů paměti, logických knihoven, GPIO a dokumentace
  • Nástroje a materiály: Socrates IP ToolingARM Design Studio, modely virtuálního systému
  • Podpora: Standardní technická podpora ARM, online školení ARM, aktualizace údržby, kredity na školení na místě a recenze designu

Jádra

Architektura
Bitová šířka jádra
Jádra Profil Refe-
rences
Arm Ltd. Třetí strana
ARMv1
32
ARM1
Klasický
ARMv2
32
ARM2 , ARM250, skupina 3 Amber , STORM Open Soft Core
Klasický
ARMv3
32
ARM6 , ARM7
Klasický
ARMv4
32
ARM8 StrongARM , FA526, ZAP jádro procesoru s otevřeným zdrojovým kódem
Klasický
ARMv4T
32
ARM7TDMI , ARM9TDMI , SecurCore SC100
Klasický
ARMv5TE
32
ARM7EJ , ARM9E , ARM10E XScale , FA626TE, Feroceon, PJ1/Mohawk
Klasický
ARMv6
32
ARM11
Klasický
ARMv6-M
32
ARM Cortex-M0 , ARM Cortex-M0+ , ARM Cortex-M1 , SecurCore SC000
ARMv7-M
32
ARM Cortex-M3 , SecurCore SC300 Apple M7
Mikrokontrolér
ARMv7E-M
32
ARM Cortex-M4 , ARM Cortex-M7
Mikrokontrolér
ARMv8-M
32
ARM Cortex-M23 , ARM Cortex-M33
Mikrokontrolér
ARMv7-R
32
ARM Cortex-R4 , ARM Cortex-R5 , ARM Cortex-R7 , ARM Cortex-R8
ARMv8-R
32
ARM Cortex-R52
Reálný čas
64
ARM Cortex-R82
Reálný čas
ARMv7-A
32
ARM Cortex-A5 , ARM Cortex-A7 , ARM Cortex-A8 , ARM Cortex-A9 , ARM Cortex-A12 , ARM Cortex-A15 , ARM Cortex-A17 Qualcomm Scorpion / Krait , PJ4 / Sheeva, Apple Swift ( A6 , A6X )
ARMv8-A
32
ARM Cortex-A32
aplikace
64 /32
ARM Cortex-A35 , ARM Cortex-A53 , ARM Cortex-A57 , ARM Cortex-A72 , ARM Cortex-A73 X-Gene , Nvidia Denver 1/2 , Cavium ThunderX , AMD K12 , Apple Cyclone ( A7 )/Typhoon ( A8 , A8X )/Twister ( A9 , A9X )/Hurricane+Zephyr ( A10 , A10X ), Qualcomm Kryo , Samsung M1 /M2 ("Mongoose") /M3 ("Surikata")
aplikace
64
ARM Cortex-A34
aplikace
ARMv8.1-A
64/32
TBA Cavium ThunderX2
aplikace
ARMv8.2-A
64/32
ARM Cortex-A55 , ARM Cortex-A75 , ARM Cortex-A76 , ARM Cortex-A77 , ARM Cortex-A78 , ARM Cortex-X1 , ARM Neoverse N1 Nvidia Carmel , Samsung M4 („Cheetah“), Fujitsu A64FX (ARMv8 SVE 512-bit)
aplikace
64
ARM Cortex-A65 , ARM Neoverse E1 se simultánním multithreadingem (SMT), ARM Cortex-A65AE (také s např. ARMv8.4 Dot Product; vyrobeno pro úkoly důležité z hlediska bezpečnosti, jako jsou pokročilé systémy asistence řidiče (ADAS)) Apple Monsoon+Mistral ( A11 ) (září 2017)
aplikace
ARMv8.3-A
64/32
TBA
aplikace
64
TBA Apple Vortex+Tempest ( A12 , A12X , A12Z ), Marvell ThunderX3 (v8.3+)
aplikace
ARMv8.4-A
64/32
TBA
aplikace
64
TBA Apple Lightning+Thunder ( A13 ), Apple Firestorm+Icestorm ( A14 ), Apple Firestorm+Icestorm ( M1 )
aplikace
ARMv8.5-A
64/32
TBA
aplikace
64
TBA
aplikace
ARMv8.6-A
64
TBA
aplikace
ARMv9-A
64
ARM Cortex-A510 , ARM Cortex-A710 , ARM Cortex-X2, ARM Neoverse N2
aplikace

Společnost Arm Holdings poskytuje seznam prodejců, kteří implementují jádra ARM do svého designu (standardní produkty specifické pro aplikace (ASSP), mikroprocesory a mikrokontroléry).

Ukázkové aplikace jader ARM

Tronsmart MK908, je Rockchip založené quad-core Android „mini PC“, s kartou microSD vedle něj na porovnání velikosti

Jádra ARM se používají v řadě produktů, zejména PDA a smartphonů . Některé výpočetní příklady jsou Microsoft je první generace Surface , Surface 2 a Pocket PC zařízení (po roce 2002 ), Apple 's iPady a Asus ‚s Eee Pad Transformer tabletové počítače , a několik Chromebook notebooky. Jiní zahrnují Apple iPhone chytré telefony a iPod přenosných přehrávačů , Canon PowerShot digitální fotoaparáty , spínače Nintendo hybridní a 3DS kapesní herní konzole a TomTom turn-by-turn navigační systémy .

V roce 2005 se společnost Arm Holdings podílela na vývoji počítače SpiNNaker Manchester University , který pomocí jader ARM simuloval lidský mozek .

ARM čipy jsou také použity v Raspberry Pi , BEAGLEBOARD , BeagleBone , PandaBoard a dalších single-palubních počítačů , protože jsou velmi malé, levné a spotřebují jen velmi málo energie.

32bitová architektura

ARMv7 byl použit k napájení starší verze populární Raspberry Pi single palubních počítačů, jako je tento Raspberry Pi 2 od roku 2015.
ARMv7 se také používá k napájení rodiny jednodeskových počítačů CuBox .

32bitová architektura ARM, jako je ARMv7-A (implementace AArch32; více v sekci ARMv8-A ), byla od roku 2011 nejpoužívanější architekturou v mobilních zařízeních.

Od roku 1995 jsou primárním zdrojem dokumentace architektury a sady instrukcí ARM různé verze ARM Architecture Reference Manual (viz § Externí odkazy ), které rozlišují rozhraní, která musí podporovat všechny procesory ARM (jako sémantika instrukcí) od detaily implementace, které se mohou lišit. Architektura se postupem času vyvíjela a verze sedm architektury ARMv7 definuje tři „profily“ architektury:

  • Profil A, profil „Aplikace“, implementovaný 32bitovými jádry řady Cortex-A a některými jádry bez ARM
  • R-profil je „Real-time“ profil realizován jader v Cortex-R série
  • M-profil, profil „mikrokontroléru“, implementovaný většinou jader v sérii Cortex-M

Ačkoli byly profily architektury nejprve definovány pro ARMv7, ARM následně definovala architekturu ARMv6-M (používanou Cortex M0 / M0+ / M1 ) jako podmnožinu profilu ARMv7-M s menším počtem instrukcí.

Režimy CPU

S výjimkou profilu M určuje 32bitová architektura ARM několik režimů CPU v závislosti na funkcích implementované architektury. V každém okamžiku může být procesor pouze v jednom režimu, ale může přepínat režimy v důsledku vnějších událostí (přerušení) nebo programově.

  • Uživatelský režim: Jediný neprivilegovaný režim.
  • Režim FIQ: privilegovaný režim, který je zadán vždy, když procesor přijme požadavek na rychlé přerušení .
  • Režim IRQ: privilegovaný režim, který je zadán vždy, když procesor přijme přerušení.
  • Režim supervizora (svc): privilegovaný režim zadávaný při každém resetování procesoru nebo při provádění instrukce SVC.
  • Režim přerušení: privilegovaný režim, který je zadán vždy, když dojde k přerušení předběžného načtení nebo přerušení dat.
  • Nedefinovaný režim: privilegovaný režim, který je zadán vždy, když dojde k výjimce nedefinovaných instrukcí.
  • Systémový režim (ARMv4 a vyšší): Jediný privilegovaný režim, který není zadán výjimkou. Lze jej zadat pouze spuštěním instrukce, která explicitně zapisuje do bitů režimu aktuálního registru stavu programu (CPSR) z jiného privilegovaného režimu (nikoli z uživatelského režimu).
  • Režim monitoru (ARMv6 a ARMv7 Security Extensions, ARMv8 EL3): Je zaveden režim monitoru pro podporu rozšíření TrustZone v jádrech ARM.
  • Režim Hyp (ARMv7 Virtualization Extensions, ARMv8 EL2): Režim hypervisoru, který podporuje požadavky na virtualizaci Popek a Goldberg pro nezabezpečený provoz CPU.
  • Režim vlákna (ARMv6-M, ARMv7-M, ARMv8-M): Režim, který lze zadat jako privilegovaný nebo neprivilegovaný. Zda je použit ukazatel hlavního zásobníku (MSP) nebo ukazatel procesního zásobníku (PSP), lze také určit v registru CONTROL s privilegovaným přístupem. Tento režim je určen pro uživatelské úkoly v prostředí RTOS, ale obvykle se používá v holém kovu pro super smyčku.
  • Režim obsluhy ( ARMv6-M, ARMv7-M, ARMv8-M): Režim vyhrazený pro zpracování výjimek (kromě RESET, které jsou zpracovávány v režimu Thread). Režim obsluhy vždy používá MSP a funguje na privilegované úrovni.

Instrukční sada

Původní (a následná) implementace ARM byla pevně zapojena bez mikrokódu , jako mnohem jednodušší 8bitový procesor 6502 používaný v předchozích mikropočítačích Acorn.

32bitová architektura ARM (a 64bitová architektura z velké části) obsahuje následující funkce RISC:

  • Načíst/uložit architekturu .
  • V původní verzi architektury není podpora pro nezarovnané přístupy k paměti . ARMv6 a novější, s výjimkou některých verzí mikrokontrolérů, podporují nezarovnané přístupy pro pokyny pro načítání/ukládání polovičních a jednoslovných slov s určitými omezeními, například bez zaručené atomičnosti .
  • Jednotný soubor registrů 16 × 32 bitů (včetně čítače programu, ukazatele zásobníku a registru odkazů).
  • Opravená šířka instrukce 32 bitů pro usnadnění dekódování a pipeline , za cenu snížené hustoty kódu . Později sada instrukcí Thumb přidala 16bitové instrukce a zvýšila hustotu kódu.
  • Většinou provedení jednoho hodinového cyklu.

Ke kompenzaci jednoduššího designu byly ve srovnání s procesory jako Intel 80286 a Motorola 68020 použity některé další konstrukční funkce:

  • Podmíněné provedení většiny instrukcí snižuje režii větví a kompenzuje nedostatek prediktoru větví v počátečních čipech.
  • Aritmetické pokyny mění stavové kódy pouze v případě potřeby.
  • 32bitový sudový řadič lze použít bez penalizace za výkon s většinou aritmetických pokynů a výpočtů adres.
  • Má výkonné indexované režimy adresování .
  • Registr odkazů podporuje rychlé volání funkcí listů.
  • Jednoduchý, ale rychlý subsystém přerušení na úrovni 2 priorit změnil banky registrů.

Aritmetické pokyny

ARM zahrnuje celočíselné aritmetické operace pro sčítání, odčítání a násobení; některé verze architektury také podporují dělící operace.

ARM podporuje 32bitové × 32bitové násobky s 32bitovým nebo 64bitovým výsledkem, ačkoli jádra Cortex-M0 / M0+ / M1 nepodporují 64bitové výsledky. Některá jádra ARM také podporují násobky 16bitových × 16bitových a 32bitových × 16bitových.

Pokyny k rozdělení jsou obsaženy pouze v následujících architekturách ARM:

  • Architektury ARMv7-M a ARMv7E-M vždy obsahují pokyny k rozdělení.
  • Architektura ARMv7-R vždy obsahuje instrukce dělení v sadě instrukcí Thumb, ale volitelně v její 32bitové sadě instrukcí.
  • Architektura ARMv7-A volitelně obsahuje pokyny k rozdělení. Pokyny nemusí být implementovány nebo implementovány pouze v sadě instrukcí Thumb nebo implementovány v sadách instrukcí Thumb i ARM nebo implementovány, pokud jsou zahrnuta rozšíření Virtualization Extensions.

Registry

Registruje se napříč režimy CPU
usr sys svc přibližně und irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

Registry R0 až R7 jsou stejné ve všech režimech CPU; nikdy nejsou banked.

Registry R8 až R12 jsou stejné ve všech režimech CPU kromě režimu FIQ. Režim FIQ má své vlastní odlišné registry R8 až R12.

R13 a R14 jsou uloženy ve všech privilegovaných režimech CPU kromě systémového režimu. To znamená, že každý režim, do kterého lze vstoupit z důvodu výjimky, má své vlastní R13 a R14. Tyto registry obecně obsahují ukazatel zásobníku a zpáteční adresu z volání funkcí.

Přezdívky:

Register aktuálního stavu programu (CPSR) má následujících 32 bitů.

  • M (bity 0–4) jsou bity režimu procesoru.
  • T (bit 5) je bit stavu palce.
  • F (bit 6) je bit deaktivace FIQ.
  • I (bit 7) je bit deaktivace IRQ.
  • A (bit 8) je nepřesný bit deaktivace přerušení dat.
  • E (bit 9) je bit endianness dat.
  • IT (bity 10–15 a 25–26) jsou bity stavu if-then.
  • GE (bity 16–19) je bitů větších než nebo rovných.
  • DNM (bity 20–23) je bit neupravovat.
  • J (bit 24) je bit stavu Java.
  • Q (bit 27) je lepivý bit přetečení.
  • V (bit 28) je bit přetečení.
  • C (bit 29) je bit carry/půjčit/prodloužit.
  • Z (bit 30) je nulový bit.
  • N (bit 31) je záporný/menší než bit.

Podmíněné provedení

Téměř každá instrukce ARM má funkci podmíněného spuštění nazývanou predikace , která je implementována pomocí 4bitového voliče kódů podmínek (predikát). Aby bylo možné provést bezpodmínečné provedení, jeden ze čtyřbitových kódů způsobí, že instrukce bude vždy provedena. Většina ostatních architektur CPU má kódy podmínek pouze na instrukcích větví.

Ačkoli predikát zabírá čtyři z 32 bitů v instrukčním kódu, a tím výrazně snižuje kódovací bity dostupné pro posunutí v pokynech pro přístup do paměti, při generování kódu pro malé ifpříkazy se vyhýbá instrukcím větví . Kromě odstranění samotných instrukcí větve se tím zachová potrubí pro načtení/dekódování/spuštění za cenu pouze jednoho cyklu za vynechanou instrukci.

Algoritmus, který poskytuje dobrý příklad podmíněného provádění, je euklidovský algoritmus založený na odčítání pro výpočet největšího společného dělitele . V programovacím jazyce C lze algoritmus zapsat jako:

int gcd(int a, int b) {
  while (a != b)  // We enter the loop when a<b or a>b, but not when a==b
    if (a > b)   // When a>b we do this
      a -= b;
    else         // When a<b we do that (no if(a<b) needed since a!=b is checked in while condition)
      b -= a;
  return a;
}

Stejný algoritmus lze přepsat způsobem blíže k cílovým instrukcím ARM jako:

loop:
    // Compare a and b
    GT = a > b;
    LT = a < b;
    NE = a != b;

    // Perform operations based on flag results
    if(GT) a -= b;    // Subtract *only* if greater-than
    if(LT) b -= a;    // Subtract *only* if less-than
    if(NE) goto loop; // Loop *only* if compared values were not equal
    return a;

a kódovány v jazyce sestavení jako:

; assign a to register r0, b to r1
loop:   CMP    r0, r1       ; set condition "NE" if (a != b),
                            ;               "GT" if (a > b),
                            ;            or "LT" if (a < b)
        SUBGT  r0, r0, r1   ; if "GT" (Greater Than), a = a-b;
        SUBLT  r1, r1, r0   ; if "LT" (Less Than), b = b-a;
        BNE  loop           ; if "NE" (Not Equal), then loop
        B    lr             ; if the loop is not entered, we can safely return

který se vyhýbá větvím kolem thena elseklauzulí. Pokud r0a r1jsou stejné, SUBnebude provedena ani jedna z instrukcí, což eliminuje potřebu podmíněné větve implementovat whilekontrolu v horní části smyčky, například pokud SUBLEbylo použito (menší nebo rovné).

Jedním ze způsobů, jak kód Thumb poskytuje hustější kódování, je odebrat čtyřbitový selektor z pokynů, které nejsou větví.

Další funkce

Další vlastností sady instrukcí je schopnost skládat směny a otáčet se do instrukcí "zpracování dat" (aritmetický, logický a pohyb registrového registru), takže například příkaz C

a += (j << 2);

lze vykreslit jako jednoslovnou instrukci s jedním cyklem:

ADD  Ra, Ra, Rj, LSL #2

Výsledkem je, že typický program ARM je hustší, než se očekávalo, s menším počtem přístupů do paměti; potrubí je tedy využíváno efektivněji.

Procesor ARM má také funkce, které se jen zřídka vyskytují v jiných architekturách RISC, jako je adresování relativní k počítači (na 32bitovém ARM je počítač jedním z jeho 16 registrů) a režimy adresování před a po přírůstku.

Instrukční sada ARM se postupem času zvětšovala. Například některé rané procesory ARM (před ARM7TDMI) nemají žádné instrukce pro uložení dvoubajtového množství.

Potrubí a další problémy s implementací

ARM7 a dřívější implementace mají třístupňový kanál ; fáze se načítají, dekódují a provádějí. Vyšší provedení, jako je ARM9, mají hlubší potrubí: Cortex-A8 má třináct stupňů. Mezi další implementační změny pro vyšší výkon patří rychlejší sčítač a rozsáhlejší logika predikce větví . Rozdíl mezi jádry ARM7DI a ARM7DMI byl například vylepšený multiplikátor; proto přidané „M“.

Koprocesory

Architektura ARM (pre-ARMv8) poskytuje neintruzivní způsob rozšiřování sady instrukcí pomocí "koprocesorů", které lze adresovat pomocí MCR, MRC, MRRC, MCRR a podobných instrukcí. Prostor koprocesoru je logicky rozdělen na 16 koprocesorů s čísly od 0 do 15, přičemž koprocesor 15 (cp15) je vyhrazen pro některé typické řídicí funkce, jako je správa mezipaměti a operace MMU na procesorech, které jeden mají.

V počítačích založených na ARM jsou periferní zařízení obvykle připojena k procesoru mapováním jejich fyzických registrů do paměťového prostoru ARM, do prostoru koprocesoru nebo připojením k jinému zařízení (sběrnici), které se zase připojuje k procesoru. Přístupy ke koprocesoru mají nižší latenci, takže některé periferie - například řadič přerušení XScale - jsou přístupné oběma způsoby: prostřednictvím paměti a prostřednictvím koprocesorů.

V ostatních případech návrháři čipů integrují hardware pouze pomocí mechanismu koprocesoru. Například procesorem zpracování obrazu může být malé jádro ARM7TDMI kombinované s koprocesorem, který má specializované operace na podporu konkrétní sady primitiv transkódování HDTV.

Ladění

Všechny moderní procesory ARM obsahují hardwarová ladicí zařízení, která softwarovým ladicím programům umožňují provádět operace, jako je zastavení, krokování a zarážka kódu počínaje resetem. Tato zařízení jsou postavena s podporou JTAG , ačkoli některá novější jádra volitelně podporují vlastní dvouvodičový protokol „SWD“ ARM. V jádrech ARM7TDMI „D“ představovalo podporu ladění JTAG a „I“ představovalo přítomnost ladicího modulu „EmbeddedICE“. Pro základní generace ARM7 a ARM9 byl EmbeddedICE přes JTAG de facto standardem ladění, i když nebyl architektonicky zaručen.

Architektura ARMv7 definuje základní ladicí zařízení na architektonické úrovni. Patří sem zarážky, hlídací body a provádění instrukcí v „režimu ladění“; podobná zařízení byla k dispozici také s EmbeddedICE. Podporováno je ladění v režimu „zastavit režim“ i „monitor“. Skutečný transportní mechanismus použitý k přístupu k ladicím zařízením není architektonicky specifikován, ale implementace obecně zahrnují podporu JTAG.

Existuje samostatná ladicí architektura ARM „CoreSight“, kterou procesory ARMv7 architektonicky nepožadují.

Port ladění přístupu

Debug Access Port (DAP) je implementací ARM Debug Interface. Existují dvě různé podporované implementace, Serial Wire JTAG Debug Port (SWJ-DP) a Serial Wire Debug Port (SW-DP). CMSIS-DAP je standardní rozhraní, které popisuje, jak může různý ladicí software na hostitelském počítači komunikovat přes USB s firmwarem běžícím na hardwarovém debuggeru, který zase hovoří přes SWD nebo JTAG s procesorem ARM Cortex s podporou CoreSight.

Pokyny pro vylepšení DSP

Pro zlepšení architektury ARM pro zpracování digitálního signálu a multimediální aplikace byly do sady přidány pokyny DSP. Ty jsou označeny písmenem „E“ v názvu architektury ARMv5TE a ARMv5TEJ. E-varianty také znamenají T, D, M a I.

Nové instrukce jsou běžné v architekturách digitálního signálového procesoru (DSP). Zahrnují varianty podepsaného násobení - akumulace , nasycené sčítání a odčítání a počítání úvodních nul.

Rozšíření SIMD pro multimédia

Představený v architektuře ARMv6, to byl předchůdce Advanced SIMD, také známý jako Neon .

Jazelle

Jazelle DBX (Direct Bytecode eXecution) je technika, která umožňuje provádění bajtového kódu Java přímo v architektuře ARM jako třetí stav spuštění (a sada instrukcí) vedle stávajícího režimu ARM a Thumb. Podpora pro tento stav je označena „J“ v architektuře ARMv5TEJ a v základních jménech ARM9EJ-S a ARM7EJ-S. Podpora pro tento stav je vyžadována od ARMv6 (kromě profilu ARMv7-M), ačkoli novější jádra obsahují pouze triviální implementaci, která neposkytuje žádnou hardwarovou akceleraci.

Palec

Pro zlepšení hustoty kompilovaného kódu obsahují procesory od ARM7TDMI (vydané v roce 1994) sadu instrukcí Thumb , které mají svůj vlastní stav. („T“ v „TDMI“ označuje funkci Thumb.) V tomto stavu procesor provede sadu instrukcí Thumb, kompaktní 16bitové kódování pro podmnožinu sady instrukcí ARM. Většina instrukcí Thumb je přímo mapována na normální instrukce ARM. Úspora místa pochází z implicitního provedení některých instrukčních operandů a omezení počtu možností ve srovnání s instrukcemi ARM provedenými ve stavu sady instrukcí ARM.

V Thumb mají 16bitové operační kódy méně funkcí. Podmíněné mohou být například pouze větve a mnoho operačních kódů je omezeno na přístup pouze k polovině všech obecných registrů CPU. Kratší operační kódy celkově zlepšují hustotu kódu, přestože některé operace vyžadují další pokyny. V situacích, kdy je paměťový port nebo šířka sběrnice omezena na méně než 32 bitů, kratší operační kódy Thumb umožňují vyšší výkon ve srovnání s 32bitovým kódem ARM, protože do omezeného šířky pásma paměti může být nutné do procesoru načíst méně programového kódu.

Na rozdíl od architektur procesorů s instrukcemi s proměnnou délkou (16 nebo 32 bitů), jako jsou Cray-1 a Hitachi SuperH , existují instrukční sady ARM a Thumb nezávisle na sobě. Vestavěný hardware, jako je Game Boy Advance , má obvykle malé množství paměti RAM přístupné pomocí plné 32bitové datové cesty; k většině se přistupuje prostřednictvím 16bitové nebo užší sekundární datové cesty. V této situaci obvykle dává smysl zkompilovat Thumb kód a ručně optimalizovat několik nejnáročnějších procesorových sekcí pomocí úplných 32bitových instrukcí ARM a tyto širší instrukce umístit do 32bitové sběrnice přístupné paměti.

První procesor s dekodérem instrukce Thumb byl ARM7TDMI. Všechny rodiny ARM9 a novější, včetně XScale, obsahují dekodér instrukcí Thumb. Obsahuje pokyny převzaté z Hitachi SuperH (1992), který byl licencován společností ARM. Nejmenší rodiny procesorů ARM (Cortex M0 a M1) implementují pouze 16bitovou sadu instrukcí Thumb pro maximální výkon v aplikacích s nejnižšími náklady.

Palec-2

Technologie Thumb-2 byla představena v jádru ARM1156 , oznámeném v roce 2003. Thumb-2 rozšiřuje omezenou 16bitovou instrukční sadu Thumb o další 32bitové instrukce, aby poskytla instrukční sadě větší šířku, čímž vznikla sada instrukcí s proměnnou délkou . Uvedeným cílem pro Thumb-2 bylo dosáhnout hustoty kódu podobné Thumb s výkonem podobným instrukci ARM nastavené na 32bitové paměti.

Thumb-2 rozšiřuje sadu instrukcí Thumb o manipulaci s bitovým polem, větve tabulky a podmíněné provádění. Současně byla rozšířena sada instrukcí ARM, aby byla zachována ekvivalentní funkčnost v obou sadách instrukcí. Nový „Unified Assembly Language“ (UAL) podporuje generování instrukcí Thumb nebo ARM ze stejného zdrojového kódu; verze Thumb viděné na procesorech ARMv7 jsou v podstatě stejně schopné jako kód ARM (včetně schopnosti psát obsluhy přerušení). To vyžaduje trochu péče a použití nové instrukce „IT“ (pokud-pak), která umožňuje spuštění až čtyř po sobě jdoucích instrukcí na základě testovaného stavu nebo jeho inverze. Při kompilaci do kódu ARM je toto ignorováno, ale při kompilaci do Thumb generuje skutečnou instrukci. Například:

; if (r0 == r1)
CMP r0, r1
ITE EQ        ; ARM: no code ... Thumb: IT instruction
; then r0 = r2;
MOVEQ r0, r2  ; ARM: conditional; Thumb: condition via ITE 'T' (then)
; else r0 = r3;
MOVNE r0, r3  ; ARM: conditional; Thumb: condition via ITE 'E' (else)
; recall that the Thumb MOV instruction has no bits to encode "EQ" or "NE".

Všechny čipy ARMv7 podporují sadu instrukcí Thumb. Všechny čipy řady Cortex-A, Cortex-R a ARM11 podporují „stav sady instrukcí ARM“ i „stav sady instrukcí Thumb“, zatímco čipy řady Cortex-M podporují pouze sadu instrukcí Thumb.

Prostředí spouštění Thumb (ThumbEE)

ThumbEE ( v některé dokumentaci ARM se chybně nazývá Thumb-2EE ), který byl prodáván jako Jazelle RCT (Runtime Compilation Target), byl oznámen v roce 2005, poprvé se objevil v procesoru Cortex-A8 . ThumbEE je čtvrtý stav sady instrukcí, který v rozšířené sadě instrukcí Thumb-2 provádí malé změny. Díky těmto změnám je sada instrukcí zvláště vhodná pro kód generovaný za běhu (např. Kompilací JIT ) ve spravovaných prostředích spouštění . ThumbEE je cíl pro jazyky jako Java , C# , Perl a Python a umožňuje kompilátorům JIT vydávat menší kompilovaný kód bez ovlivnění výkonu.

Mezi nové funkce poskytované ThumbEE patří automatické kontroly nulových ukazatelů při každé instrukci načítání a ukládání, instrukce k provedení kontroly hranic pole a speciální instrukce, které volají handlera. Navíc, protože využívá technologii Thumb-2, ThumbEE poskytuje přístup k registrům r8 – r15 (kde je držen stav Java VM Java/DBX). Obslužné rutiny jsou malé části často nazývaného kódu, běžně používané k implementaci jazyků na vysoké úrovni, jako je alokace paměti pro nový objekt. Tyto změny pocházejí z opětovného použití několika operačních kódů a vědomí, že jádro je v novém stavu ThumbEE.

Dne 23. listopadu 2011 společnost Arm Holdings zamítla jakékoli použití sady instrukcí ThumbEE a ARMv8 odebrala podporu pro ThumbEE.

Plovoucí desetinná čárka (VFP)

Technologie VFP (Vector Floating Point) je rozšíření koprocesoru jednotky s plovoucí desetinnou čárkou (FPU) do architektury ARM (implementováno odlišně v ARMv8-koprocesory zde nejsou definovány). Poskytuje levné výpočty s plovoucí desetinnou čárkou s jednoduchou a dvojitou přesností plně kompatibilní se standardem ANSI/IEEE Std 754-1985 pro binární aritmetiku s pohyblivou řádovou čárkou . VFP poskytuje výpočet s pohyblivou řádovou čárkou vhodný pro široké spektrum aplikací, jako jsou PDA, smartphony, komprese a dekomprese hlasu, trojrozměrná grafika a digitální zvuk, tiskárny, set-top boxy a automobilové aplikace. Architektura VFP byla zamýšlena na podporu provádění krátkých instrukcí ve „vektorovém režimu“, ale tyto operovaly na každém vektorovém prvku postupně, a tak nenabízely výkon skutečné vektorové rovnoběžnosti s jednou instrukcí, vícenásobnými daty (SIMD). Tento vektorový režim byl proto krátce po svém zavedení odstraněn a nahrazen mnohem výkonnějším Advanced SIMD, známým také jako Neon .

Některá zařízení, jako například ARM Cortex-A8, mají namísto plného modulu VFP omezený modul VFPLite a vyžadují zhruba desetkrát více hodinových cyklů na plovoucí operaci. Architektura Pre-ARMv8 implementovala plovoucí desetinnou čárku/SIMD s rozhraním koprocesoru. Mezi další jednotky s plovoucí desetinnou čárkou a/nebo SIMD, které se nacházejí v procesorech založených na ARM pomocí rozhraní koprocesoru, patří FPA , FPE, iwMMXt , z nichž některé byly implementovány do softwaru chycením, ale mohly být implementovány v hardwaru. Poskytují některé stejné funkce jako VFP, ale nejsou opcode kompatibilních s ním. FPA10 také poskytuje rozšířenou přesnost , ale implementuje správné zaokrouhlení (vyžaduje IEEE 754) pouze s jedinou přesností.

VFPv1
Zastaralý
VFPv2
Volitelné rozšíření instrukční sady ARM v architektuře ARMv5TE, ARMv5TEJ a ARMv6. VFPv2 má 16 64bitových registrů FPU.
VFPv3 nebo VFPv3-D32
Implementováno na většině procesorů Cortex-A8 a A9 ARMv7. Je zpětně kompatibilní s VFPv2, kromě toho, že nemůže zachytit výjimky s plovoucí desetinnou čárkou. VFPv3 má standardně 32 64bitových registrů FPU, přidává instrukce VCVT pro převod mezi skalárním, floatovým a dvojitým, přidává okamžitý režim do VMOV tak, že konstanty lze načíst do registrů FPU.
VFPv3-D16
Jak je uvedeno výše, ale pouze s 16 64bitovými registry FPU. Implementováno na procesorech Cortex-R4 a R5 a Tegra 2 (Cortex-A9).
VFPv3-F16
Méně časté; jako formát úložiště podporuje IEEE754-2008 s polopřesnou (16bitovou) plovoucí desetinnou čárkou .
VFPv4 nebo VFPv4-D32
Cortex-A7, implementovaný na procesorech Cortex-A12 a A15 ARMv7, má volitelně VFPv4-D32 v případě FPU s Neonem. VFPv4 má standardně 32 64bitových registrů FPU, k funkcím VFPv3 přidává jak polopřesnou podporu jako formát úložiště, tak fúzované multiplikační akumulace .
VFPv4-D16
Jak je uvedeno výše, ale má pouze 16 64bitových registrů FPU. Implementováno na procesorech Cortex-A5 a A7 v případě FPU bez Neon.
VFPv5-D16-M
Implementováno na Cortex-M7, když existuje možnost jádra s plovoucí desetinnou čárkou s jednoduchou a dvojitou přesností.

V Debianu Linux a derivátech, jako jsou Ubuntu a Linux Mint , armhf ( ARM hard float ) odkazuje na architekturu ARMv7 včetně dalšího hardwarového rozšíření VFP3-D16 s plovoucí desetinnou čárkou (a Thumb-2) výše. Softwarové balíčky a nástroje pro kompilátory používají k odlišení přípony armhf vs. arm/armel.

Advanced SIMD (Neon)

Advanced SIMD rozšíření (aka Neon nebo "MPE" Media Processing Engine) je kombinovaný 64- a 128-bit SIMD instrukční sada, která poskytuje standardizovaný akceleraci pro média a aplikace zpracování signálu. Neon je součástí všech zařízení Cortex-A8, ale je volitelný v zařízeních Cortex-A9. Neon může spouštět dekódování zvuku MP3 na CPU běžících na 10 MHz a může provozovat kodek řeči GSM adaptivní multi-rate (AMR) na 13 MHz. Obsahuje komplexní sadu instrukcí, samostatné registrační soubory a hardware pro nezávislé provádění. Neon podporuje 8-, 16-, 32- a 64bitová celočíselná a jednopřesná (32bitová) data s plovoucí desetinnou čárkou a operace SIMD pro zpracování zvuku a videa, zpracování grafiky a her. V Neonu podporuje SIMD až 16 operací současně. Hardware Neon sdílí stejné registry s plovoucí desetinnou čárkou jako ve VFP. Zařízení, jako jsou ARM Cortex-A8 a Cortex-A9, podporují 128bitové vektory, ale budou pracovat se 64 bity najednou, zatímco novější zařízení Cortex-A15 mohou spouštět 128 bitů najednou.

Neon na zařízeních ARMv7 je, že vyprázdní všechna podnormální čísla na nulu, a v důsledku toho jej kompilátor GCC nebude používat, pokud -funsafe-math-optimizationsnení zapnuto, což umožňuje ztrátu denormálů. „Vylepšený“ Neon definovaný, protože ARMv8 nemá tento vtípek, ale od GCC 8.2 je stále vyžadován stejný příznak pro povolení instrukcí Neon. Na druhou stranu GCC považuje Neon za bezpečný pro AArch64 pro ARMv8.

ProjectNe10 je první open source projekt ARM (od jeho vzniku; zatímco oni získali starší projekt, nyní známý jako Mbed TLS ). Knihovna Ne10 je sada běžných, užitečných funkcí napsaných v Neonu i C (kvůli kompatibilitě). Knihovna byla vytvořena tak, aby vývojářům umožňovala používat optimalizace Neon bez učení Neon, ale slouží také jako sada vysoce optimalizovaných příkladů vnitřního a montážního kódu Neon pro běžné rutiny DSP, aritmetiky a zpracování obrazu. Zdrojový kód je k dispozici na GitHubu.

Technologie ARM Helium

Helium je vektorové rozšíření M-Profile (MVE). Přidává více než 150 skalárních a vektorových instrukcí.

Rozšíření zabezpečení

TrustZone (pro profil Cortex-A)

Rozšíření zabezpečení, prodávaná jako TrustZone Technology, jsou v architektuře ARMv6KZ a novějších aplikačních profilů. Poskytuje levnou alternativu k přidání dalšího vyhrazeného jádra zabezpečení do SoC tím, že poskytuje dva virtuální procesory podporované hardwarovým řízením přístupu. To umožňuje jádru aplikace přepínat mezi dvěma stavy, označovanými jako světy (aby se zamezilo záměně s jinými názvy pro domény schopností), aby se zabránilo úniku informací z důvěryhodnějšího světa do méně důvěryhodného světa. Tento přepínač světa je obecně ortogonální ke všem ostatním schopnostem procesoru, takže každý svět může pracovat nezávisle na druhém při použití stejného jádra. Paměť a periferie jsou poté informovány o operačním světě jádra a mohou jej použít k zajištění řízení přístupu k tajným kódům a kódu v zařízení.

Bohatý operační systém je obvykle provozován v méně důvěryhodném světě s menším kódem specializovaným na bezpečnost v důvěryhodnějším světě, jehož cílem je zmenšit povrch útoku . Mezi typické aplikace patří funkce DRM pro řízení používání médií na zařízeních založených na ARM a zabránění jakémukoli neschválenému používání zařízení.

V praxi, protože konkrétní podrobnosti implementace proprietárních implementací TrustZone nebyly veřejně zpřístupněny ke kontrole, není jasné, jaká úroveň jistoty je pro daný model ohrožení poskytována , ale nejsou imunní vůči útoku.

Open Virtualization je open source implementace architektury důvěryhodného světa pro TrustZone.

AMD licencovala a začlenila technologii TrustZone do své technologie zabezpečeného procesoru . Povolené v některých, ale ne ve všech produktech, APU AMD obsahují procesor Cortex-A5 pro zpracování zabezpečeného zpracování. Ve skutečnosti bylo jádro Cortex-A5 TrustZone zahrnuto v dřívějších produktech AMD, ale nebylo z časových důvodů povoleno.

Samsung Knox používá TrustZone například k detekci úprav jádra.

TrustZone pro ARMv8-M (pro profil Cortex-M)

Rozšíření zabezpečení, prodávané jako TrustZone pro technologii ARMv8-M, bylo představeno v architektuře ARMv8-M. I když obsahuje podobné koncepty jako TrustZone pro ARMv8-A, má jiný architektonický design, protože přepínání světa se provádí pomocí instrukcí větve místo použití výjimek. Podporuje také bezpečné zpracování prokládaných přerušení z obou světů bez ohledu na aktuální stav zabezpečení. Společně tyto funkce poskytují volání do zabezpečeného světa s nízkou latencí a citlivé zpracování přerušení. ARM poskytuje referenční zásobník zabezpečeného světového kódu ve formě důvěryhodného firmwaru pro certifikaci M a PSA .

Ochrana stránky bez spuštění

Od ARMv6 podporuje architektura ARM ochranu stránky bez spuštění , která se u eXecute Never označuje jako XN .

Velké rozšíření fyzické adresy (LPAE)

Rozšíření Large Physical Address Extension (LPAE), které rozšiřuje velikost fyzické adresy z 32 bitů na 40 bitů, bylo přidáno do architektury ARMv7-A v roce 2011. Velikost fyzické adresy je v Cortex-A75 a Cortex-A65AE větší, 44 bitů .

ARMv8-R a ARMv8-M

Architektury ARMv8-R a ARMv8-M , oznámené po architektuře ARMv8-A, sdílejí některé funkce s ARMv8-A, ale neobsahují žádné 64bitové instrukce AArch64.

ARMv8.1-M

Architektura ARMv8.1-M, ​​oznámená v únoru 2019, je vylepšení architektury ARMv8-M. Přináší nové funkce včetně:

  • Nové rozšíření sady vektorových instrukcí. M-Profile Vector Extension (MVE) nebo Helium je určen pro aplikace pro zpracování signálu a strojové učení.
  • Další vylepšení sady instrukcí pro smyčky a větve (Low Overhead Branch Extension).
  • Pokyny pro polopřesnou podporu s plovoucí desetinnou čárkou .
  • Vylepšení sady instrukcí pro správu TrustZone pro jednotku Floating Point Unit (FPU).
  • Nový atribut paměti v jednotce MPU (Memory Protection Unit).
  • Vylepšení v ladění včetně jednotky monitorování výkonu (PMU), neprivilegovaného rozšíření ladění a další podpory ladění se zaměřují na vývoj aplikací pro zpracování signálu.
  • Rozšíření RAS (Reliability, Availability and Serviceability).

64/32bitová architektura

Platforma ARMv8-A s procesorem Cortex A57/A53 MPCore big.LITTLE CPU

ARMv8

ARMv8-A

Oznámeno v říjnu 2011, ARMv8-A (často nazývaný ARMv8, zatímco ARMv8-R je také k dispozici) představuje zásadní změnu architektury ARM. Přidává volitelnou 64bitovou architekturu (např. Cortex-A32 je 32bitový procesor ARMv8-A, zatímco většina procesorů ARMv8-A podporuje 64bitové), pojmenovaný „AArch64“ a přidružená nová instrukční sada „A64“. AArch64 poskytuje kompatibilitu v uživatelském prostoru s ARMv7-A, 32bitovou architekturou, zde označovanou jako „AArch32“ a starou 32bitovou instrukční sadou, nyní pojmenovanou „A32“. Sada instrukcí Thumb je označována jako "T32" a nemá žádný 64bitový protějšek. ARMv8-A umožňuje spouštění 32bitových aplikací v 64bitovém operačním systému a 32bitový operační systém je pod kontrolou 64bitového hypervisoru . Společnost ARM oznámila svá jádra Cortex-A53 a Cortex-A57 30. října 2012. Apple jako první vydal jádro kompatibilní s ARMv8-A ve spotřebním produktu ( Apple A7 v iPhone 5S ). AppliedMicro , využívající FPGA , byl první, kdo demo ARMv8-A. První SoC ARMv8-A od Samsungu je Exynos 5433 používaný v Galaxy Note 4 , který obsahuje dva klastry čtyř jader Cortex-A57 a Cortex-A53 ve velké konfiguraci.LITTLE; ale poběží pouze v režimu AArch32.

Pro AArch32 i AArch64 je ARMv8-A standardem VFPv3/v4 a pokročilým SIMD (Neon). Přidává také kryptografické pokyny podporující AES , SHA-1 / SHA-256 a aritmetiku konečných polí . AArch64 byl představen v ARMv8-A a jeho následné revizi. AArch64 není součástí 32bitových architektur ARMv8-R a ARMv8-M.

ARMv8-R

K profilu ARMv8-R byla přidána volitelná podpora AArch64, přičemž prvním jádrem ARM, které jej implementovalo, byl Cortex-R82. Přidává instrukční sadu A64.

ARMv9

ARMv9-A

Aktualizovaná architektura, oznámená v březnu 2021, klade důraz na bezpečné provádění a rozdělování.

Systém paže Připraven

Arm SystemReady , dříve známý jako Arm ServerReady, je certifikační program, který pomáhá přenést generické off-the-shelf operační systémy a hypervizory na systémy založené na Arm od serverů datových center po průmyslová zařízení Edge a zařízení IoT. Klíčovými stavebními kameny programu jsou specifikace minimálních požadavků na hardware a firmware, na které se mohou operační systémy a hypervizory spolehnout. Tyto specifikace jsou:

Tyto specifikace jsou společně vyvinuty společností Arm Holdings a jejími partnery v Poradním výboru pro architekturu systému (SystemArchAC).

Architecture Compliance Suite (ACS) jsou testovací nástroje, které pomáhají kontrolovat shodu těchto specifikací. Tyto Arm SystemReady specifikace požadavků dokumenty požadavků souvisejících s certifikací.

Tento program představila společnost Arm Holdings v roce 2020 na první akci DevSummit. Jeho předchůdce Arm ServerReady byl představen v roce 2018 na akci Arm TechCon. Tento program aktuálně zahrnuje čtyři pásma:

  • SystemReady SR: toto pásmo je pro servery, které podporují operační systémy a hypervizory, které očekávají rozhraní UEFI , ACPI a SMBIOS . Windows Server, Red Hat Enterprise Linux a VMware ESXi-Arm vyžadují tato rozhraní, zatímco ostatní distribuce Linuxu a BSD mohou také podporovat.
  • SystemReady LS: toto pásmo je pro servery, které hyperscalery používají k podpoře operačních systémů Linux, které očekávají firmware LinuxBoot spolu s rozhraními ACPI a SMBIOS.
  • SystemReady ES: toto pásmo je pro průmyslová zařízení Edge a zařízení IoT, která podporují operační systémy a hypervizory, které očekávají rozhraní UEFI, ACPI a SMBIOS. Windows IoT Enterprise, Red Hat Enterprise Linux a VMware ESXi-Arm vyžadují tato rozhraní, zatímco ostatní distribuce Linuxu a BSD mohou také podporovat.
  • SystemReady IR: toto pásmo je pro průmyslová zařízení Edge a zařízení IoT, která podporují operační systémy, které očekávají rozhraní UEFI a devicetree . Vestavěný Linux (např. Yocto ) a některá distribuce Linux/BSD (např. Fedora, Ubuntu, Debian a OpenSUSE) mohou také podporovat.

Certifikace PSA

Certifikace PSA , dříve známá jako Platform Security Architecture, je bezpečnostní rámec architektury a schéma vyhodnocení. Má pomoci zabezpečeným zařízením internetu věcí (IoT) postaveným na procesorech systém na čipu (SoC). Byl zaveden za účelem zvýšení zabezpečení tam, kde je prostředí úplného důvěryhodného spuštění příliš velké nebo složité.

Architekturu představila společnost Arm Holdings v roce 2017 na každoroční akci TechCon. Přestože je toto schéma agnostické architektury, bylo poprvé implementováno na jádrech procesorů Arm Cortex-M určených pro použití s ​​mikrokontrolérem. Certifikace PSA obsahuje volně dostupné modely hrozeb a bezpečnostní analýzy, které demonstrují proces rozhodování o bezpečnostních funkcích běžných produktů IoT. Poskytuje také volně stahovatelné balíčky rozhraní API (API), architektonické specifikace, implementace firmwaru s otevřeným zdrojovým kódem a související testovací sady.

V návaznosti na vývoj rámce zabezpečení architektury v roce 2017 byl systém zabezpečení certifikace PSA spuštěn o dva roky později na Embedded World v roce 2019. Společnost PSA Certified nabízí víceúrovňové schéma hodnocení zabezpečení pro prodejce čipů, poskytovatele operačních systémů a výrobce zařízení IoT. Prezentace Embedded World představila prodejcům čipů certifikaci úrovně 1. Současně byl předložen návrh ochrany úrovně 2. V únoru 2020 se certifikace úrovně 2 stala použitelným standardem.

Certifikace byla vytvořena společnými zúčastněnými stranami PSA, aby umožnila přístup k různým souborům IoT od návrhu podle zabezpečení. Specifikace certifikované PSA jsou agnostikou implementace a architektury, a proto je lze použít na jakýkoli čip, software nebo zařízení. Certifikace také odstraňuje fragmentaci průmyslu pro výrobce a vývojáře produktů IoT .

Podpora operačního systému

32bitové operační systémy

Historické operační systémy

První 32bitový osobní počítač založený na ARM, Acorn Archimedes , měl původně provozovat ambiciózní operační systém s názvem ARX . Stroje byly dodávány s RISC OS, který byl také použit v pozdějších systémech založených na ARM od společnosti Acorn a dalších prodejců. Některé rané stroje Acorn byly také schopné provozovat unixový port s názvem RISC iX . (Ani jedno nelze zaměňovat s RISC/os , současnou unixovou variantou pro architekturu MIPS.)

Integrované operační systémy

32-bit ARM architektury je podporován velkým počtem vložených a operačních systémů v reálném čase , k nimž patří:

Operační systémy mobilních zařízení

32bitová architektura ARM je primárním hardwarovým prostředím pro většinu operačních systémů mobilních zařízení, jako jsou:

Dříve, ale nyní ukončeno:

Operační systémy desktop/server

32bitová architektura ARM je podporována operačním systémem RISC a několika operačními systémy podobnými Unixu, včetně:

64bitové operační systémy

Integrované operační systémy

Operační systémy mobilních zařízení

Operační systémy desktop/server

Portování na 32- nebo 64bitové operační systémy ARM

Windows aplikace překompilované pro ARM a propojené s Winelib-z projektu Wine -mohou běžet na 32bitových nebo 64bitových ARM v Linuxu, FreeBSD nebo jiných kompatibilních operačních systémech. Binární soubory x86, např. pokud nejsou speciálně kompilovány pro ARM, byly ukázány na ARM pomocí QEMU with Wine (na Linuxu a dalších), ale nefungují na plné rychlosti nebo se stejnou schopností jako u Winelib.

Poznámky

Viz také

Reference

Citace

Bibliografie

Další čtení

externí odkazy

Návody k architektuře
Rychlé referenční karty