103 lines
3.2 KiB
Markdown
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
|
|
- 
|
|
|
|
|
|
### ARM Instruction Sets
|
|

|
|
- 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)
|
|

|
|
|
|
|
|
### Wie wird aus einem Programm Maschinencode?
|
|

|
|
- 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)
|
|
|