Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
Software Optimierung www designelektronik de DESIGN ELEKTRONIK 03 2023 26 Gate Array immer mehr Aufmerksamkeit Dies führt zu hochgradig hetero genen Architekturen bei denen Teile des Algorithmus in Software und andere Teile auf dedizierter Hardware laufen Hierbei beschäftigt sich das Hardware Software-Codesign damit eine möglichst optimale Partitionierung sowohl funktional als auch temporal zu erreichen Zwei typische Optimierungsmöglichkeiten dieser Art sind ■ ■ Die Verwendung von SIMD-Instruktionen – eine relativ einfache Möglichkeit ■ ■ Das Prinzip des Hardware Software-Codesigns – eine besonders effektive Methode zur Leistungsoptimierung SIMD-Instruktionen an einem Beispiel Das Grundprinzip von SIMD-Instruktionen ist die parallele Ausführung ein und derselben Operation auf mehreren Datenbereichen Typische Anwendungsfälle sind Bildoder Videodaten bei denen sich dieselben Operationen häufig wiederholen Klassische SIMDbzw Vektorprozessoren gibt es schon seit Anfang der 1970er-Jahre Mit den steigenden Anforderungen für Multimediaanwendungen wurden auch RISC-Prozessoren um spezialisierte SIMD-Instruktionen erweitert So werden beispielsweise moderne Intel-Prozessoren durch SSE bzw AVX als SIMD-Einheit und ARM-Prozessoren durch den NEON-Befehlssatz erweitert Da im Embedded-Umfeld ARM-Prozessoren eine dominante Position einnehmen wird im Folgenden die Verwendung der NEON-Erweiterung speziell für ARM erläutert Die NEON-Technik von ARM ist eine Erweiterung des ARM-Befehlssatzes um zusätzliche Assembler-Instruktionen zur parallelen Datenverarbeitung die als grundlegende Datenstruktur Vektoren verwendet NEON-Instruktionen arbeiten mit einem eigenen 256-Byte-Registerfile Bild 2 das entweder als 32×64-bit-Register D0 D1 D2 oder als 16×128-bit-Register Q0 Q1 ausgelesen werden kann NEON-Instruktionen werden als packed SIMD-Instruktionen ausgeführt Dabei wird jedes Register als Vektor mit einer bestimmten Anzahl an Elementen interpretiert Die Vektorelemente können vorzeichen - lose oder vorzeichenbehaftete Integerzahlen mit 8 bit 16 bit 32 bit oder 64 bit oder 32-bit-Fließkommazahlen sein Die Besonderheiten von NEON sind ■ ■ Es ist ein Startup-Code nötig ■ ■ Bei Benutzung von NEON-Instruktionen innerhalb von Unterbrechungsroutinen sollten die Lanes gesichert werden ■ ■ NEON ist neben LDM STM Load Multiple Store Multiple sehr gut geeignet für Block-Transfers ohne DMA Direct Memory Access NEON-Instruktionen haben die Form V{}{}{} { } { } { } Die Komponenten in {} sind optional die anderen fakultativ Die Namen der Instruktionen beginnen stets mit Vsodass die kürzest mögliche Instruktion folgende Form hat V V bedeutet die Instruktion das erstangegebene Ziel sowie die erste Quelle im Register Zusätzlich können Bild 3 Visualisierung der Ausführung der NEON-Instruktion VMLA I16 Dd Dn Dm Die roten Register Dd stellen den Zielvektor dar die blauen Dn und gelben Dm die Quellvektoren Bei einem Ausführungszyklus werden die Werte z Bvon Dn[0] und Dm[0] multipliziert Symbol x in Kreis anschließend dem Wert in Dd[0] hinzuaddiert Symbol + in Kreis Bild Ingenics Digital Bild 4 Beispiel für einen Regelungszyklus n Er beginnt mit der Tätigkeit des Prozessors oben blau »busy« worauf nach einer festgelegten Zeit der Start des HW-Beschleunigers folgt »start« danach unten gelb »busy« Der Prozessor beendet seine Aufgabe und wartet auf das Ergebnis des HW-Beschleunigers das bei »done« dem Prozessor zurückgeliefert wird Der HW-Beschleuniger ist ab diesem Zeitpunkt »idle« während der Prozessor das Ergebnis verarbeitet oben blau zweites »busy« und dann selbst in den Zustand »idle« geht idealerweise vor der Deadline Ende des Zyklus Danach beginnt derselbe Ablauf mit Zyklus n+1 Bild Ingenics Digital