Die berühmte Aussage, dass wir nur zehn Prozent unseres geistigen Potenzials verwenden, ist nach aktueller Forschung eindeutig ein Mythos. Ihren Ursprung hat sie auch nicht bei Alfred Einstein, dem dieses Zitat oft fälschlich zugeschrieben wird. Als eine von mehreren Quellen für die Aussage gilt etwa der Verhaltensforscher Karl Lashley, der um 1940 mit Rattenhirnen experimentierte. Er trainierte die Ratten dazu, ein Labyrinth zu durchqueren und  fügte danach den Gehirnen der trainierten Ratten an verschiedenen Stellen einen Schaden zu.

Wie sich herausstellte, konnte Lashley bis zu 90 Prozent des Rattengehirns verletzen, ohne dass die Ratten den Weg durch das Labyrinth oder die Fähigkeit, diesen Weg zu erlernen, verloren. Es schien also, als ob 90 Prozent des Gehirns gar nicht nötig waren, um diese Aufgabe zu lösen. Heute weiß man, dass verschiedene Sinne und verschiedene Arten von Erinnerungen ausreichen, um das Problem zu lösen. Diese können auch über weite Teile des Gehirns verteilt sein. Das Gehirn kann den Verlust von großen Anteilen erstaunlich gut kompensieren. Diese Anteile sind aber deswegen nicht nutzlos, sondern werden dauernd gebraucht. Entsprechend hoch ist auch das tatsächlich genutzte Potenzial des Gehirns.

Anders sieht es dagegen bei Entwicklung von Software für Embedded-Systeme aus. Dass hier häufig nur ein Bruchteil des vorhandenden Hardware-Potenzials auch tatsächlich ausgeschöpft wird, ist leider kein Mythos, sondern alltägliche Realität. Welche Methoden und Tools es ermöglichen, das volle Potenzial zu nutzen, untersucht dieser Beitrag am Beispiel von Infineons Aurix-Prozessor der ersten und zweiten Generation.

Bibliotheken

Schon bei der Entscheidung für eine Softwarebibliothek kommt es oft zu Fehleinschätzungen. So erscheint die Verwendung von Softwarebibliotheken eines Drittanbieters auf den ersten Blick wenig effizient, wenn ein Unternehmen über eine ausreichend große Software-Entwicklungsabteilung verfügt. Die Kosten für Bibliotheken eines Drittanbieters müssen meist gerechtfertigt werden, wogegen die eigenen Ingenieure unmittelbar verfügbar sind.

Häufig gelingt auch in relativ kurzer Zeit ein Konzeptentwurf, der genügend Potenzial zeigt, um das eigentliche Ziel zu erreichen. Von diesen vorläufigen Ergebnissen ausgehend, wird dann häufig versucht, die Kosten für einen Drittanbieter zu sparen. Funktionalität, die mithilfe einer kommerziellen Bibliothek zur Verfügung stünde, sollen die Mitarbeiter schnell selbst entwickeln. Die Erfahrung zeigt aber, dass diese Rechnung in den meisten Fällen nicht auf geht. Die Kosten für die Entwicklung eines vollständigen Softwareprodukts, das anders als ein bloßer Prototyp hoch performant, sehr stabil und gut getestet sein muss sowie über die passende Dokumentation verfügt, um sinnvoll von anderen Entwicklern eingesetzt zu werden, sind meist deutlich höher als erwartet. In den meisten Fällen rechnet sich eine Eigenentwicklung nur dann, wenn sich das fertige Softwareprodukt später an sehr viele Kunden verkaufen lässt.

Dagegen erleichtert die Verwendung von Standardbibliotheken für Kryptographie, Vektor- und Matrixberechnungen sowie das Lösen linearer Gleichungssysteme und Fourier-Transformationen die Entwicklung deutlich. Damit spart man sich den eigenen Entwicklungsaufwand nicht nur für die Erstellung der Bibliothek selbst, sondern auch für die Optimierung der Bibliothek für verschiedene Zielarchitekturen – wie zum Beispiel den Aurix. Darüber hinaus gibt es weitere Vorteile: Das Risiko eines schwer auffindbaren Problems in der Numerik oder einer fatalen Schwachstelle im Kryptoalgorithmus ist deutlich reduziert, wenn für diese Standardaufgaben von Experten entwickelte und verifizierte Bibliotheken verwendet werden.

Für die meisten Architekturen verfügbare und auf diese entsprechend optimierte Blas/Lapack-Bibliotheken (Basic Linear Algebra Subprograms/Linear Algebra Package) sind zudem oft um bis zu 70 Prozent schneller als eine nicht an die Zielarchitektur angepasste Variante. Applikationen, welche auf die Blas/Lapack-API aufsetzen, müssen bei einer Portierung auf eine neue Architektur nicht angepasst oder optimiert werden, wenn es entsprechende Bibliotheken für diese Hardware gibt.

Compiler

Bild 1: Taskings Performance Libraries stellen die vollständigen Blas/Lapack-Routinen für den Aurix optimiert und in aktueller Version zur Verfügung. Tasking

Für den Aurix/Aurix 2G empfehlen sich die seit April 2017 verfügbaren Tasking Lapack Performance Libraries, welche die vollständigen Blas/Lapack-Routinen für den Aurix optimiert und in aktueller Version für C99 zur Verfügung stellen (Bild 1). Die numerische Stabilität und das äquivalente Verhalten zur wissenschaftlichen Variante der für Embedded-Systeme entwickelten Bibliothek werden durch weitreichende Tests überprüft und für den Benutzer transparent dokumentiert, sodass sich die Bibliotheken bedenkenlos einsetzen lassen. Zusätzlich bietet Tasking Bibliotheken für FFT und Kryptoalgorithmen, die je nach verwendeter Architektur die Berechnungen hardwarebeschleunigt oder in Software durchführen.

Viele ADAS/Sensorfusions-Anwendungen verarbeiten Radarsignale mittels FFT und wären ohne hardwaregestütze FFT auf einem Mikrocontroller wie dem Aurix gar nicht möglich. Durch die Verwendung von Standardbibliotheken wie Blas/Lapack/FFT wird es einfach, solche Anwendungen auf leistungsfähigen Desktop-Computern vorzuentwickeln. Diese können dann performant auf einen für Safety-Anwendungen geeigneten Mikrocontroller – wie den Aurix – portiert und mit den üblichen MIL/SIL/PIL-Tests abgesichert werden, da Matlab die Verwendung von Blas/Lapack unterstützt.

Zusätzliche Security-Anforderungen an zukünftige Applikationen benötigen auch eine zunehmende Verschlüsselung etwa von CAN-Nachrichten, da beispielsweise bei einem Over-the-Air-Update kein Fremdcode auf die MCU gelangen darf. Nimmt man an, dass nur 100 aller CAN-Nachrichten pro Sekunde ver- oder entschlüsselt werden müssen, ergibt sich daraus bereits eine Prozessorlast von ungefähr 33 Prozent bei aktuellen TriCore-Prozessoren. Durch die Verwendung einer hardwarebeschleunigten Kryptobibliothek lässt sich die zusätzliche Sicherheit auch ohne große Geschwindigkeitseinbußen realisieren. Falls keine Hardwareunterstützung zur Verfügung steht, erlauben die Tasking Performance Libraries stattdessen auch die Verwendung von einem optimierten Softwarefallback.

Standardfunktionalitäten wie Blas/Lapack/FFTW und Kryptoalgorithmen lassen sich also sehr effektiv über Standardbibliotheken abdecken. Interessant wird die Applikation aber erst durch den Teil des Codes, der die Bibliotheken anspricht und deren Funktionalität zu einer einzigartigen Anwendung zusammenfügt.

Seite 1 von 3123