David Schirrmeister cc0ef991fc update
2024-06-03 09:10:32 +02:00

103 lines
3.2 KiB
Markdown

# ARM
## ARM Prozessoren
### Architektur Revisionen
- Unterschiedliche Features
- bspw. unterschiedliche Multiplikationsbefehle, Adressierungsarten, ...
- jeweils gleiches Befehssatzdesign für jede Revision
- aktuell: v7 / v8
### Profile: Konkrete Prozessor-Implementierungen
- Application Profil ['A']:
- High Performance
- bspw. Mobile, Enterprise
- Real Time Profil ['M']:
- Embedded Anwendungen
- bspw. Automotive, Industriesteuerungen
- Microcontroller Profil ['M']:
- Mikrocontroller für große Bandbreite an Anforderungen
- Anzahl Gatter, Kosten, Realtime, Performance
- Aktuell in 2017:
- v7 (32Bit):
- Cortex A7, Cortex M4, Cortex M0+
- v8 (64Bit):
- Cortex A53, Cortex A57
## Bedeutung des Befehlssatzes (ISA)
- Befehlssatz = Instruction Set Architektur
- ISA Level
- ist das Interface zwischen Soft- und Hardware
- definiert die Sprache, die von Soft- & Hardware verstanden werden muss
- ![image_291.png](image_291.png)
### ARM Instruction Sets
![image_292.png](image_292.png)
- ARM unterstützt derzeit 3 IS
- A64 instruction set
- eingeführt mit ARMv8-A, um 64 Bit zu unterstützen
- A32 instruction set ("ARM")
- 32 Bit Befehlsatz in pre-ARMv8-Architekturen
- T32 instruction set ("Thumb"/"Thumb2")
- komprimierter 16/32 Bit Befehlssatz (gemischt)
- in pre-ARMv8-Architekturen
## Coding Standards UAL und APCS
### Unified Assembler Language (UAL)
- Coding Standard, der von Compilern für ARM (32bit) und Thumb verstanden wird
- Macht Programme möglich, die mit verschiedenen Prozessoren kompatibel sind
### ARM Program Calling Standard (APCS)
- Regelt Aufruf von
- Unterprogrammen
- Verwendung von Registern
- ...
- Ermöglicht Verwendung von Objektbibliotheken, welche von anderen Compilern übersetzt wurden
## Architektonisches Erbe der ARM-Prozessoren
**Verwendete Merkmale**
- RISC
- Grundlegendes Design-Prinzip: Einfachheit
- Load/Store Architektur (Register-Register), von Neumann
- 32Bit oder 64Bit (1 Wort)
- 1Byte = 8Bit
- Byteweise Adressierung des Speichers
- Little-Endian und Big-Endian kompatibel
- Vorteil für Einsatzzweck als Standard CPU in Kommunikationsgeräten
- Standard: Little-Endian
- [3-Adressbefehle](Klassifikation.md#3-adress-befehle) (32Bit) oder Thumb
**Verworfene Merkmale**
- Registerfenster
- wird nur bei SPARC Prozessoren genutzt
- Delayed Branches
- der dem Branch folgende Befehl wird ausgeführt bevor der Sprung durchgeführt wurde
- Behandlung von Interrupts und Exceptions schwieriger
- Ausführung aller Befehle in einem Taktzyklus
- setzt [Harvard](MU6Rechner.md#harvard-architektur) voraus
- Kompensation durch verbesserte Adressierungsmodi
## Ein erstes ARM-Programm (GNU)
![image_293.png](image_293.png)
### Wie wird aus einem Programm Maschinencode?
![image_294.png](image_294.png)
- Codierungsvorgang immer gleich
- kann von Programm (_Assembler_) übernommen werden
- Kann weitere Erleichterungen ermöglichen
- Bezeichner Konstanten, Daten, Adressen
- Reservieren von Speicherbereichen für (Zwischen-)Ergebnisse
- Anlegen und Initialisieren von Daten und Datenstrukturen beim Programmstart hinzufügen
-
## [ARM Toolchain](arm_toolchain.md)
## [ARM Befehle](arm_befehle.md)