Assembling Pi

B.2 Erweiterungen der CPU-Funktionalität

2.3.4 VFP und NEON: VFP (Vector Floating Point) in der ARM-Architektur

Der Vector Floating Point (VFP) Coprozessor ist eine Erweiterung der ARM-Architektur, die Hardware-Unterstützung für Gleitkommaoperationen bietet. VFP ermöglicht effiziente Berechnungen mit Gleitkommazahlen im Single-Precision (32-Bit) und Double-Precision (64-Bit) Format. Diese Erweiterung ist entscheidend für Anwendungen, die umfangreiche mathematische Berechnungen erfordern, wie beispielsweise wissenschaftliche Simulationen, Signalverarbeitung und Multimedia-Anwendungen.

Hinweis: Im folgenden werden wir uns auf Single-Precision Arithmetik beschränken

VFP-Coprozessor

Der VFP wird als eigenständiger Coprozessor innerhalb des ARM-Systems implementiert. Dieser arbeitet parallel zum Hauptprozessor und verfügt über eigene Register und Instruktionen, die speziell für Gleitkommaoperationen entwickelt wurden. Durch die Auslagerung dieser rechenintensiven Aufgaben an den VFP-Coprozessor wird der Hauptprozessor entlastet, was zu einer verbesserten Gesamtleistung des Systems führt.

VFP-Register

Der VFP-Coprozessor verfügt über eine Reihe von Registern zur Speicherung von Operanden und Ergebnissen:

VFP-Instruktionssatz

Der VFP-Coprozessor bietet einen umfangreichen Instruktionssatz, der speziell für Gleitkommaoperationen entwickelt wurde. Dazu gehören:

Das Floating Point Status and Control Register (FPSCR)

Das FPSCR ist ein Register im VFP-Coprozessor, das Status- und Kontrollinformationen für Gleitkommaoperationen speichert.

Überschneidungen und Schnittmengen mit NEON: Gemeinsame Nutzung von Registern

Sowohl VFP als auch der NEON-Coprozessor nutzen die gleichen physikalischen Register im Prozessor:

Dekodierung und Ausführung von Gleitkommaoperationen

zurück Hauptmenü weiter
2.3 VFP und NEON
2.3.1 Intro
2.3.2 Gleitkommazahlen
2.3.3 Floating Point Format nach IEEE 754
2.3.4 VFP (Vector Floating Point) in der ARM-Architektur
2.3.5 VFP Data Conversion Befehle
2.3.6 Was ist NEON?
2.3.7 Überblick über die ARMv7 NEON-Register
2.3.8 Vektoren und Skalare
2.3.9 Registeradressierung in NEON
2.3.10 Das NEON und Floatingpoint Status Register
2.3.11 Steuerung und Statusübertragung zwischen ARM- und NEON/VFP-Statusregistern (VMSR und VMRS)
2.3.12 NEON Instruktionen
2.3.13 Datentransfer
2.3.14 NEON Load/Store Instruktionen
2.3.15 Arithmetische und logische NEON-Operationen
2.3.16 VTRN (Vector Transpose) Instruktionen
2.3.17 Implementierung von Trigonometrischen Funktionen
2.3.18 Implementierung einer 4x4-Matrixmultiplikationsfunktion mit NEON