mini|Das Logo des Unternehmens ARM mini|ARM-Prozessor von Conexant, der u. a. in Routern verwendet wird
Die ARM-Architektur ist eine ursprünglich 1983 vom britischen Computerunternehmen Acorn entwickelte Mikroprozessor-Architektur, die seit 1990 von dem aus Acorn ausgelagerten Unternehmen ARM Limited weiterentwickelt wird. ARM stand für Acorn RISC Machines, später für Advanced RISC Machines.BBC Acorn User Januar 1991, Apple embraces Acorn with 'open' ARM (). Obwohl der Name außerhalb der IT-Fachwelt wenig bekannt ist, gehören Implementierungen dieses Typs weltweit zu den meistverbreiteten Mikroprozessoren.
Das Unternehmen ARM Limited stellte lange keine eigenen ICs her, sondern vergab und vergibt unterschiedliche Lizenzen an Halbleiter-Entwicklungsunternehmen und Halbleiterhersteller. Dabei können die Kunden wählen zwischen Entwicklungslizenzen, die die Entwicklung eigener ICs auf Basis der ARM-Architektur ermöglichen, und dem Zukauf von sogenannten IP-Cores, Funktionsblöcken wie CPU-Kerne der Arm-Cortex-A-Reihe, GPU-Einheiten wie Mali oder Bussystemen wie AMBA, die dann zu eigenen System-on-a-Chip-Bausteinen konfiguriert werden. Seit 2026 stellt das Unternehmen auch eigene Prozessoren her.
Die Vielzahl dieser Lizenznehmer und verschiedene Vorteile der Architektur (z. B. geringer Energiebedarf bei hoher Leistungsfähigkeit) führten dazu, dass ARM-Implementierungen im Embedded-Bereich die meistgenutzte Architektur sind. Fast alle derzeitigen Smartphones und Tabletcomputer haben lizenzierte ARM-Prozessoren, darunter das iPhone und die meisten Android-Geräte. Die ersten ARM-Prozessoren (ARMv1) aus dem Jahr 1985 hatten eine 32-Bit-Architektur (ARM32), etwa 2013 erschienen dann Prozessoren mit 64-Bit-Architektur (Armv8-Serie, ARM64). Die ersten 64-Bit-Systeme waren der X-Gene von Applied Micro Circuits Corporation im Juni 2013 und im September 2013 der A7 im iPhone 5s.
Die aktuellen, im Herbst 2025 vorgestellten Arm-C1-Kerne basieren auf der Armv9.3-A-Architektur.
Geschichte Die ARM-Architektur wurde 1983 vom englischen Computerhersteller Acorn als Entwicklungsprojekt gestartet. Das Team begann unter der Leitung von Sophie Wilson und Steve Furber die Entwicklung eines leistungsfähigen Prozessors für einen Nachfolger der bis dahin auf dem 6502 basierenden Computer.
Anstatt wie die Konkurrenz auf Prozessoren der Unternehmen Intel oder Motorola zurückzugreifen, entwickelte man einen eigenen Prozessor, den ARM (Acorn Risc Machine) mit 32 Bit und einer geplanten Taktfrequenz von 4 MHz. Die Tests mit den Prototypen verliefen derart erfolgreich, dass die späteren Serienprozessoren (ARM2, 1986), die in den neu entwickelten Rechnern (Acorn Archimedes) verbaut wurden, direkt mit 8 MHz getaktet wurden. Tests ergaben, dass diese Rechner bei praktisch gleicher Taktfrequenz etwa achtmal schneller waren als die Konkurrenten Commodore Amiga und Atari ST mit Motorola-68000-Prozessor.
Nachdem der ARM2 1989 zum ARM3 (mit Cache und höherer Taktfrequenz) weiterentwickelt worden war, und immer mehr Unternehmen Interesse an diesen Prozessoren bekundet hatten, gründete Acorn im Jahre 1990 zusammen mit Apple und VLSI Technology das Unternehmen Advanced RISC Machines Ltd. mit Sitz in Großbritannien, das später in ARM Ltd. umbenannt wurde.
Eigenschaften Die Architektur zeichnet sich durch einen effizienten Befehlssatz aus, erlaubt eine kompakte ASIC-Implementierung und ist gut für Optimierungen im Bereich der Ausführungsgeschwindigkeit und der Stromaufnahme geeignet.
Eine bedeutende Implementierung ist der als StrongARM bekannte Mikrocontroller.
Der Hersteller Intel ist neben anderen Marktteilnehmern Lizenznehmer des Unternehmens Advanced RISC Machines Ltd. und darf somit auf der ARM-Architektur basierende Prozessoren herstellen. Darüber hinaus darf Intel (neben z. B. Apple, Motorola/Freescale oder NXP), im Gegensatz zu den meisten anderen Lizenznehmern, Änderungen und Erweiterungen am ARM-Kern durchführen. So vertrieb Intel bis 2006 unter dem Namen XScale eine in Lizenz gefertigte ARM-CPU und weitere ebenfalls als XScale bezeichnete und per Bus angebundene Peripherie-Halbleiter. Dazu gehören die PXA250-, PXA260- und PXA270-Prozessoren, die häufig in PDAs und Smartphones zum Einsatz kamen, vor allem für Windows CE und Palm OS.
Die GNU Compiler Collection kann Code für ARM erzeugen und auch der XNU-Kernel (macOS/iOS), Linux-Kernel und Windows NT Kernel 6.2 laufen auf diesem CPU-Typ.
Einsatzgebiet
Mobilgeräte Aufgrund ihrer geringen Leistungsaufnahme kommen ARM-Prozessoren vor allem in eingebetteten Systemen wie Mobiltelefonen, PDAs und Routern zum Einsatz. Besondere Bedeutung hat die Architektur bei Smartphones, da sie von allen verbreiteten mobilen Betriebssystemen unterstützt wird. Bei tragbaren Spielkonsolen besteht eine ähnliche Verbreitung. Ebenfalls findet man die CPUs in vielen stationären Geräten der Unterhaltungselektronik.
Arbeitsplatzrechner
Die Rechner der Acorn-Archimedes- und Risc-PC-Reihe von Acorn verwendeten ebenfalls ARM-CPUs. Nachfolgemodelle dieser Desktop-Rechner waren unter anderem vom Unternehmen Castle Technology unter dem Namen IYONIX pc erhältlich.
Im Herbst 2020 stellte Apple drei Systeme aus der Mac-Reihe vor, welche mit dem Apple M1 ein ARM-basiertes Ein-Chip-System (System on a Chip, SoC) als Prozessor verwenden. Alle seitdem erschienenen Desktopcomputer des Herstellers basieren auf ARM-SoCs.
Seit 2023 sind Laptops verschiedener Hersteller verfügbar, die auf der ARM-Prozessorserie Snapdragon X von Qualcomm basieren. Die Geräte werden in der Regel mit Windows on ARM ausgeliefert.
IoT-Geräte
Auch auf dem Raspberry Pi ist ein Ein-Chip-System von Broadcom mit einem ARM-Mikroprozessor verbaut.
Server Mit der Fertigstellung der 64-Bit-Mikroarchitektur Armv8 im Jahre 2012 waren die Voraussetzungen für einen Einsatz von ARM-Prozessoren in Serversystemen gegeben. ARM stand hier vor der Aufgabenstellung, ein komplettes Marktsegment zu definieren, da Serversysteme auch spezialisierte Betriebssysteme und Anwendungen benötigen. Unter Mitarbeit von Red Hat und anderen Betriebssystemherstellern entstand 2016 die Server Base System Architecture (SBSA), eine Spezifikation, die alle Hardware-Schnittstellen beinhaltet, die auf einem Serversystem für das Betriebssystem benötigt werden. Daraufhin entstanden ARM-Linux-Server-Distributionen von Red Hat, SuSE und Ubuntu sowie eine Windows-ARM-Server-Variante von Microsoft, welche wiederum eine Basis von wichtigen Infrastrukturanwendungen zur Verfügung stellen. Die ARM-Architektur ist auch für dieses Marktsegment wegen ihrer geringen Leistungsaufnahme (Preis / Watt und Preis / Performance Index) interessant, weswegen ARM Serverprozessoren auch für Höchstleistungsrechner und Supercomputer bewirbt.
Mehrere Partner (Architektur-Lizenznehmer) entwickelten daraufhin ARM-Server-Prozessoren: X-Gene bzw. EMag und Altra-CPUs von Ampere (ex Applied Micro), ThunderX von Cavium, verbaut im Supercomputer ASTRA am Sandia-Laboratory Centriq von Qualcomm, A64FX von Fujitsu, diese CPU ist die erste Realisierung der Scalable-Vector-Extension-Spezifikation, eine SIMD-Einheit für energieeffizientes Höchstleistungsrechnen. Die CPU ist im Fugaku (Supercomputer) verbaut.
Im Herbst 2018 gab ARM eine eigene Roadmap über Technologien für Server-Prozessoren, genannt Neoverse, heraus. Dies dokumentiert, dass weitere ARM-Entwicklungen und Support für die Entwicklungspartner zu erwarten sind.
Befehlssatz und Programmiermodell Die ARM-CPU ist eine RISC-Architektur und kennt als solche drei Kategorien von Befehlen: Befehle zum Zugriff auf den Speicher (Load/Store), arithmetische oder logische Befehle für Werte in Registern, Befehle zum Ändern des Programmflusses (Sprünge, Unterprogrammaufrufe).
Die ARM verwendet einen Drei-Adress-Code-Befehlssatz, alle arithmetisch-logischen Befehle akzeptieren also ein Zielregister und zwei Operandenregister.
Beispiel ADD r0, r1, r2 ;r0 := r1 + r2 Die ARM ist sowohl Little-Endian- als auch Big-Endian-kompatibel, kann also mit beiden Byte-Reihenfolgen umgehen, was angesichts des Einsatzzwecks als Standard-CPU in Kommunikationsgeräten ein deutlicher Vorteil ist. Der Standardmodus der ARM ist Little-Endian.
Registersatz Wie viele RISC-CPUs bietet ARM eine große Anzahl von Registern: Dem Programmierer stehen 13 Universal-Register zur Verfügung r0...r12. Drei zusätzliche Register r13...r15 sind wie Universal-Register adressierbar, haben aber spezifische Bedeutungen. Diese sind ein Stackpointer r13, ein „Link-Register“ r14, das die Rücksprungadresse bei Prozeduraufrufen (mit BL „branch with link“) enthält, die später zurück in den Programmzähler geschrieben wird, sowie der Programmzähler (Program-Counter, PC) selbst r15. Zusätzlich zu diesen direkt veränderbaren Registern gibt es das Status-Register (CPSR, Current-Program-Status-Register), das die Statusbits und andere Informationen, wie z. B. den momentanen Ausführungsmodus, enthält.
Ausführungsmodi Die ARM kennt mehrere Ausführungsmodi, die über bestimmte Ereignisse betreten werden und teilweise dem ausgeführten Code zusätzliche Privilegien einräumen. Im Einzelnen sind das: User-Mode: normaler User-Code Supervisor-Mode (SVC): privilegierte Betriebssystem-Tasks, Eintritt z. B. durch Aufruf eines Software-Interrupts (SWI) Hypervisor-Mode (HYP): privilegierte Tasks zur Erfüllung von Hypervisor-Funktionen Interrupt-Mode (IRQ): Eintritt durch Auftreten eines äußeren Interrupt-Requests während der Befehlsverarbeitung Fast-Interrupt-Mode (FIQ): Eintritt durch Auftreten eines äußeren Fast-Interrupt-Requests. Fast-Interrupts werden meist nur für besonders zeitkritische Ereignisse benutzt (siehe Echtzeitsysteme). Memory-Abort (ABT): tritt auf, wenn eine Datenanforderung nicht erfüllt werden kann. Undefined-Instruction-Exception (UND): Eintritt durch Auftreten einer unbekannten Instruktion. Wird z. B. zur Emulation eines Gleitkomma-Coprozessors verwendet.
r13, r14 und das Statusregister werden für die Interrupt- und Exception-Modi gespiegelt (sogenannte Schattenregister), so dass Ausnahmebehandlungsroutinen sich nicht um die Sicherung des User-Stackpointers oder Link-Registers zu kümmern brauchen. Für die Fast Interrupts werden zusätzlich r8...r12 gespiegelt und stehen so dem Programmierer einer Interrupt-Service-Routine direkt zur Verfügung, ohne dass er den Inhalt dieser Register vorher sichern müsste.
Befehlsbreite und Adressierungsarten Der Load/Store-Befehl des ARM unterstützt die üblichen Adressierungsmodi. Bei der unmittelbaren Adressierung und der absoluten Adressierung gibt es jedoch einige Einschränkungen, die im Folgenden näher erklärt werden sollen:
Sämtliche Befehle im ARM-Befehlssatz sind 32 Bit lang. Dies bedeutet auf der einen Seite, dass jede Instruktion mit einem Speicherzugriff geladen werden kann, wodurch sich die Architektur der Pipeline und die Instruction Fetch-Unit vereinfachen. Auf der anderen Seite können 32-Bit-Adressen oder 32-Bit-Werte nicht in einem 32 Bit breiten Befehl angegeben werden, da dann kein Platz mehr für den eigentlichen Befehlscode bleibt. Stattdessen hilft man sich folgendermaßen:
Es können keine beliebigen 32-Bit-Werte direkt im Befehl codiert werden. Stattdessen werden für Direktwerte 8 Mantissen-Bits und 4 Shift-Bits angegeben, wobei der tatsächliche Shift-Wert der doppelte gespeicherte Wert ist, es können also Bitverschiebungen um 0, 2, 4, 6, 8, …, 26, 28 und 30 Stellen erfolgen. Dabei werden die Bits, die aus dem Register hinausgeschoben werden, auf der anderen Seite wieder hineingeschoben. Wird diese Technik z. B. auf den Wert 255 in den Mantissen-Bits angewendet, können die hexadezimalen Werte 000000FF, 000003FC, 00000FF0, 00003FC0, … 0FF00000, 3FC00000, FF000000, FC000003, F000000F und C000003F direkt kodiert werden. Andere Werte können durch Kombination von arithmetischen Operationen (z. B. Addition, Subtraktion) erzeugt werden.