ARM-Befehlssatz

Aus C und Assembler mit Raspberry

Allgemeines

Der ARM-Befehlssatz (ARM: Advanced RISC Machine) ist eine Familie von Architekturen für Prozessoren, die auf dem Prinzip der Reduced Instruction Set Computing (RISC) basieren. Hier sind einige wesentliche Punkte über den ARM-Befehlssatz:

Überblick

  • RISC-Architektur: ARM-Prozessoren verwenden eine RISC-Architektur, die darauf abzielt, die Anzahl der Zyklen pro Befehl zu minimieren, was zu einer höheren Effizienz führt.
  • Energieeffizienz: ARM-Prozessoren sind bekannt für ihre Energieeffizienz, weshalb sie häufig in mobilen Geräten wie Smartphones und Tablets eingesetzt werden.
  • Breite Anwendung: ARM-Prozessoren finden auch Anwendung in eingebetteten Systemen, IoT-Geräten, Servern und sogar in Supercomputern.

Befehlssatz

  • 32-Bit und 64-Bit: ARM bietet sowohl 32-Bit (ARMv7) als auch 64-Bit (ARMv8) Architekturen an.
  • Thumb-Befehlssatz: ARM bietet auch den Thumb-Befehlssatz an, der eine komprimierte Form der Standardbefehle verwendet, um Speicherplatz zu sparen und die Effizienz zu erhöhen.
  • NEON: Eine Erweiterung des ARM-Befehlssatzes für SIMD (Single Instruction, Multiple Data) zur Beschleunigung von Multimedia- und Signalverarbeitungsanwendungen.

Register

  • Registerbank: ARM-Prozessoren verfügen über eine große Anzahl von Registern, typischerweise 16 allgemeine Register (R0-R15) in ARMv7.
  • Statusregister: Es gibt spezielle Statusregister wie CPSR (Current Program Status Register) und SPSR (Saved Program Status Register), die Zustandsinformationen speichern.

Anwendungsfälle

  • Mobile Geräte: Smartphones, Tablets
  • Eingebettete Systeme: Mikrocontroller, Automobilanwendungen
  • Server: ARM-basierte Serverprozessoren wie die von AWS Graviton
  • IoT: Verschiedene IoT-Geräte und Sensoren

Vorteile

  • Leistungsaufnahme: Geringe Leistungsaufnahme, ideal für batteriebetriebene Geräte.
  • Kosten: Kosteneffizient in der Herstellung.
  • Skalierbarkeit: Skalierbar von einfachen Mikrocontrollern bis hin zu leistungsstarken Serverprozessoren.

ARMv7

ARMv7 ist eine weit verbreitete Architektur, die viele moderne mobile und eingebettete Systeme antreibt. Hier sind einige wichtige Aspekte der ARMv7-Architektur:

Überblick

  • 32-Bit Architektur: ARMv7 ist eine 32-Bit-Architektur, die hauptsächlich in Smartphones, Tablets, eingebetteten Systemen und anderen energieeffizienten Geräten eingesetzt wird.
  • RISC-Prinzipien: Wie andere ARM-Architekturen basiert auch ARMv7 auf den Prinzipien der Reduced Instruction Set Computing (RISC), die eine einfache und effiziente Ausführung von Befehlen ermöglichen.

Varianten

  • ARMv7 ist in verschiedene Profile unterteilt, um unterschiedliche Anwendungsfälle abzudecken:
    • ARMv7-A: Für "Application" Prozessoren, die in leistungsfähigen Geräten wie Smartphones und Tablets verwendet werden.
    • ARMv7-R: Für "Real-time" Anwendungen, die in Echtzeitsystemen und Automobilanwendungen zum Einsatz kommen.
    • ARMv7-M: Für "Microcontroller" Anwendungen, die in eingebetteten Systemen und IoT-Geräten genutzt werden.

Register und Modus

  • Registerbank: ARMv7 verfügt über 16 allgemeine 32-Bit-Register (R0-R15), wobei R15 als Program Counter (PC) dient.
  • Statusregister: Das CPSR (Current Program Status Register) speichert Zustandsinformationen wie Flags und Modi.
  • Betriebsmodi: ARMv7 unterstützt verschiedene Betriebsmodi wie User, FIQ (Fast Interrupt Request), IRQ (Interrupt Request), Supervisor, *Abort, Undefined, und System-Modus.

Befehlssatz

  • Thumb und Thumb-2: ARMv7 unterstützt den Thumb-Befehlssatz, der 16-Bit-Befehle verwendet, um Speicherplatz zu sparen. Thumb-2 führt 32-Bit-Befehle ein, um die Effizienz weiter zu steigern.
  • NEON: Eine SIMD-Erweiterung (Single Instruction, Multiple Data) für Multimedia- und Signalverarbeitungsanwendungen.
  • VFP: Vector Floating Point (VFP) ist eine Erweiterung für Gleitkommaberechnungen.

Speicherverwaltung

  • MMU: Die Memory Management Unit (MMU) unterstützt virtuelle Speicherverwaltung und Paging.
  • MPU: Die Memory Protection Unit (MPU) bietet Schutzmechanismen für Speicherbereiche, insbesondere in eingebetteten Systemen.

Sicherheitsfunktionen

  • TrustZone: ARMv7-A implementiert die TrustZone-Technologie, die eine sichere Ausführungsumgebung schafft, um sensible Daten und Code zu schützen.

Anwendungsbereiche

  • Mobile Geräte: ARMv7-Prozessoren sind in vielen Smartphones und Tablets zu finden, insbesondere in älteren Modellen.
  • Eingebettete Systeme: Weit verbreitet in Mikrocontrollern und eingebetteten Systemen, die in einer Vielzahl von Industrien verwendet werden.
  • Automobilanwendungen: ARMv7-R-Prozessoren sind in Echtzeitsystemen und Automobilanwendungen zu finden.

Typische ARMv7 Prozessoren

  • Cortex-A Serie: Beispielsweise Cortex-A8 und Cortex-A9, die in vielen Smartphones und Tablets verwendet wurden.
  • Cortex-R Serie: Für Echtzeitanwendungen, z.B. in Automobil-ECUs.
  • Cortex-M Serie: Für Mikrocontroller und eingebettete Systeme, wie der weitverbreitete Cortex-M3.

Vorteile

  • Energieeffizienz: ARMv7-Prozessoren sind für ihre geringe Leistungsaufnahme bekannt, was sie ideal für mobile und eingebettete Anwendungen macht.
  • Flexibilität: Die verschiedenen Profile (A, R, M) bieten Flexibilität für unterschiedliche Anwendungsanforderungen.
  • Ökosystem: Ein großes Ökosystem von Entwicklertools, Bibliotheken und Betriebssystemen unterstützt ARMv7.

ARMv8

ARMv8 ist eine bedeutende Weiterentwicklung der ARM-Architektur und bringt viele neue Funktionen und Verbesserungen gegenüber seinen Vorgängern, insbesondere ARMv7. Hier sind einige wichtige Aspekte der ARMv8-Architektur:

Überblick

  • 64-Bit Architektur: ARMv8 führt die AArch64-Architektur ein, die native 64-Bit-Verarbeitung unterstützt. Dies ermöglicht die Adressierung von mehr Speicher und eine höhere Rechenleistung.
  • Abwärtskompatibilität: ARMv8 unterstützt auch die AArch32-Architektur, die abwärtskompatibel zu ARMv7 ist. Dies ermöglicht die Ausführung älterer 32-Bit-Software auf neuen 64-Bit-Prozessoren.

Register und Modus

  • Erweiterte Register: In der AArch64-Architektur gibt es 31 allgemeine 64-Bit-Register (X0-X30) sowie ein spezielles Register (XZR) für Null-Operationen.
  • Program Counter: Das Register PC (Program Counter) ist in ARMv8 ebenfalls 64-Bit breit.
  • Statusregister: Das PSTATE-Register (Program Status Register) speichert Zustandsinformationen wie Flags und Modi.

Befehlssatz

  • Verbesserte Instruktionen: ARMv8 bietet eine Vielzahl neuer und verbesserter Instruktionen für höhere Effizienz und Leistung.
  • SIMD und Kryptografie: Erweiterungen wie NEON für SIMD (Single Instruction, Multiple Data) und spezielle Kryptografie-Instruktionen sind integriert.
  • Load/Store Architektur: Wie bei früheren ARM-Architekturen basiert ARMv8 auf einer Load/Store-Architektur, bei der Speicherzugriffe nur über spezifische Load- und Store-Instruktionen erfolgen.

Modi und Ausführungszustände

  • EL0 bis EL3: ARMv8 führt verschiedene Ausführungsstufen (Exception Levels) ein, von EL0 (Nutzer-Modus) bis EL3 (Monitor-Modus), was eine feinere Kontrolle der Privilegien und Sicherheitsmechanismen ermöglicht.
  • TrustZone: ARMv8 integriert die TrustZone-Technologie, die eine sichere Ausführungsumgebung schafft, um sensible Daten und Code zu schützen.

Speicherverwaltung

  • Große Adressräume: Mit der 64-Bit-Architektur können Adressräume von bis zu 2^64 Bytes genutzt werden.
  • Erweiterte MMU: Die Memory Management Unit (MMU) ist verbessert und unterstützt erweiterte Paging-Mechanismen und größere Seitentabellen.

Sicherheitsfunktionen

  • Pointer Authentication: ARMv8.3-A führt Pointer Authentication Codes (PACs) ein, um vor Return-Oriented Programming (ROP) und anderen speicherbezogenen Angriffen zu schützen.
  • Memory Tagging: ARMv8.5-A führt Memory Tagging Extension (MTE) ein, um Speicherfehler und -verletzungen zu erkennen und zu verhindern.

Anwendungsbereiche

  • Server und Rechenzentren: ARMv8-Prozessoren werden zunehmend in Servern und Cloud-Infrastrukturen eingesetzt, z.B. AWS Graviton2.
  • High-End Smartphones und Tablets: Viele moderne Smartphones und Tablets nutzen ARMv8-basierte Prozessoren wegen ihrer hohen Leistung und Effizienz.
  • Embedded und IoT: ARMv8 findet auch Anwendung in eingebetteten Systemen und IoT-Geräten, die erweiterte Rechenleistung und Sicherheitsfunktionen erfordern.

Weiterentwicklungen

  • ARMv8.1-A bis ARMv8.6-A: Diese Subsequenten Versionen führen zusätzliche Optimierungen und Funktionen ein, wie z.B. verbesserte Virtualisierung und erweiterte Sicherheitsfunktionen.