Effektive und effiziente Entwicklung benötigt die richtigen Werkzeuge. Wenn man Code hardwarenah auf Embedded-Plattformen entwickelt kann dies eine Herausforderung sein. In einem Projekt stand unser Kunde vor den folgenden drei Herausforderungen:
- Recompute des Target-spezifischen Codes auf Workstations.
- Das Ganze auch effizient zu tun.
- Und die Bit-Identität zwischen Recomputing und Target zu gewährleisten.
Um diese Ziele zu erreichen entwickelten wir zwei Bibliotheken für den Kunden. Die erste war ein transparenter Ersatz für Compiler-Intrinsics auf dem C6000™-DSP. Anstatt C6000-Instruktionen zu generieren, emulierte diese Bibliothek die Berechnungen unter Einsatz von AVX2, um eine hohe Geschwindigkeit zu erreichen. Das war nötig, da der C6000™-DSP sehr komplexe Instruktionen wie 2×2-Matrix-Vektor-Multiplikationen für komplexe Zahlen hat. Mit unserer Hilfe war es dem Kunden möglich, Recompute auf x86-64-Workstations in Echtzeit durchzuführen.
Die zweite Bibliothek war eine Sammlung von Standard-Mathematik-Funktionen für Gleitkommazahlen wie Sinus, Potenzen, etc. Sie produzierte für alle möglichen Eingaben bit-identische Ergebnisse sowohl auf dem C6000™-DSP als auch auf x86-64. Außerdem war schneller als die vom Hersteller bereitgestellte Mathematikbibliothek und gleichzeitig auch noch präziser.
Ein paar schnelle Fakten
Hardware:
- SoC: Texas Instruments™ TMS320C6000™
- DSP: Texas Instruments C6000
Operating System:
- Texas Instruments RTOS
Compiler:
- Texas Instruments CGT C6000
- GNU Compiler Collection für x86-64-Workstations
Zusammenfassung der von uns erzielten Ergebnisse:
- Entwicklung eines Intrinsics-Emulators für C6000™-Compiler-Intrinsics auf x86-64 für Echtzeit-Recompute.
- Entwicklung einer Mathematikbibliothek für bit-identische Ergebnisse, sowohl auf dem C6000™-DSP, als auch auf x86-64.