Cadence Design Systems Bildverarbeitungssysteme haben andere Anforderungen

Der Cadence Tensilica Imaging/Vision DSP ist eine ideale Lösung für intelligente Bildverarbeitungsanwendungen. Grafik: Cadence Design Systems

Die Leistungsanforderungen für Bildverarbeitungssysteme explodieren. Ein Beispiel sind ADAS-Syteme wie Rückfahrkameras oder Systeme zur Überwachung des toten Winkels, zur Parkunterstützung oder Fahrerüberwachung.

Die Bildverarbeitung gehört zu den rechenintensivsten Aufgaben in Embedded-Systemen und erfordert hohe Abtastraten und umfangreiche Berechnungen pro Pixel. In vielen Anwendungen kommen mehrere Kameras zum Einsatz, die visuelle Daten erfassen. Außerdem ist immer häufiger nicht mehr die Extraktion von Bildern das eigentliche Ziel, sondern die Erlangung verwertbarer Informationen über das, was in den Bildfolgen geschieht, zum Beispiel die Identifikation von Personen und Objekten oder die Erkennung von Bewegungen. Der Umstieg von einer einfachen Pixel-Verarbeitung hin zu einer visuellen Intelligenz erfordert eine neue Art von Bildverarbeitungs-Befehlssatz-Designs.

Balance zwischen Effizienz und Programmierbarkeit

Beim Design eines Befehlssatzes für die Bildverarbeitung ist zwischen dem Wunsch nach maximalem Durchsatz und Effizienz auf der einen Seite und Programmierbarkeit und Flexibilität auf der anderen Seite abzuwägen. Die Erfahrung sagt uns, dass für eine maximale Effizienz eine harte Verdrahtung und keine Programmierbarkeit erforderlich ist. Für ein Bildverarbeitungssystem muss die Effizienz so nahe wie möglich an die einer festen Verdrahtung herankommen, gleichzeitig aber auch eine Programmierbarkeit möglich sein. Es gibt mehrere entscheidende Kriterien, die bei der Befehlssatz-Architektur (ISA) eines Subsystems für die Bildverarbeitung zu beachten sind:

• Sie sollte umfangreiche Datenströme handhaben können und Daten mit großer Bandbreite und geringer Latenz in den lokalen Speicher des Prozessors schreiben und von dort lesen können.

• Sie sollte verschiedene Datentypen (8 Bit, 16 Bit, und 32 Bit, Festkomma und Gleitkomma) sowie verschiedene Operationen (2D Datenzugriff, Histogramm, Faltung, Suche, nichtlineare Funktionen) unterstützen.

• Sie muss kontinuierliche Operationen/Zyklen mit Kombinationen von VLIW (Very Long Instruction Word) und SIMD (Single Instruction, Multiple Data) unterstützen.

• Skalierbarkeit ist entscheidend: Weil die Anforderungen der Applikationen ständig zunehmen, muss die Plattform und auch die Softwareumgebung mitwachsen können, um die Kosten und Leistung anpassen zu können.

• Eine automatische Inferenz des Compilers von Vektoren und komplexen Operationen ist hilfreich.

Ein anwendungsspezifischer Prozessor und ein Prozessor, die Hardware und Software generieren, können die Anforderungen unterschiedlichster Bildverarbeitungsdesigns erfüllen. Ein einzelner, konfigurierbarer Prozessor kann ebenfalls verschiedene Anforderungen erfüllen, obwohl dieser »one size fits all«-Ansatz nicht für alle Bildverarbeitungsaufgaben ideal ist.

Anwendungsvielfalt treibt die ISA-Flexibilität voran

Für die Bildverarbeitung gibt es eine große Palette von verfügbaren Anwendungs-Kernel, die das Rechenherz dieser komplexen Anwendungen darstellen. Insgesamt sind diese Anwendungs-Kernel in Bezug auf den erforderlichen Durchsatz des Speichers, der ALU-Operationen (Arithmetic Logic Unit) und der Anzahl der Multiplikationen sehr verschieden. Eine Analyse von 50 Kernel für reale Anwendungen offenbart einige wichtige Eigenschaften.

Normalerweise erfolgen mehrere ALU-Operationen pro Lade-Operation. Und es gibt unterschiedliche ALUs – das Lade-Speicher-Verhältnis liegt allgemein zwischen 1:2 und 5:1. Viele wichtige Funktionen führen keine Multiplikationen aus, andere dagegen sehr viele (zum Beispiel Faltungen). Eine gute Vision Computing ISA sollte daher eine große Bandbreite von Verhältnissen effizient handhaben können.

Eine erfolgreiche Architektur maximiert auch den Anteil der Kernel, die vektorisiert werden können. Es gibt viele Möglichkeiten, um Anwendungen zu vektorisieren, d.h. Arbeiten an einem ganzen Pixel-Streifen auf einmal in einem einzigen Zyklus auszuführen. Man kann sich oft die Tatsache zunutze machen, dass Aktionen mit einem Pixel üblicherweise unabhängig von Aktionen auf benachbarte Pixel sind. Ein Vektorrechner kann dann Anwendungen bis zu 50 Mal schneller ausführen als ein Skalarprozessor (einige wenige Funktionen können trotzdem noch verstärkt Skalaroperationen nutzen).

Bei manchem Kernel kann auch eine fließende Datenumstrukturierung erforderlich sein. Wenn eine Operation bei einem ganzen Pixel-Streifen ausgeführt werden soll, dann muss das nicht immer in der Reihenfolge oder Gruppierung erfolgen, wie die Pixel im Speicher abgelegt sind. Stattdessen könnte die Operation beispielsweise nur bei jedem vierten Pixel erforderlich sein. Operationen im Befehlssatz, die Daten on-the-fly reorganisieren können, helfen dabei, zusätzliche Möglichkeiten zu finden, ganze Pixel-Streifen zu verarbeiten. Mit einer effizienteren Datenreorganisation bietet die Vektorisierung mehr Vorteile.