EyeQ2 realisiert Echtzeit-Bilderkennung in Fahrerassistenzsystemen

Moderne Prozessortechnologien eröffnen den Entwicklern von Fahrerassistenzsystemen neue Dimensionen: Sie erbringen die erforderliche hohe Verarbeitungsleistung für preiswerte CMOS-Kameras in progressiven Systemen zur Objekterkennung.

Moderne Prozessortechnologien eröffnen den Entwicklern von Fahrerassistenzsystemen neue Dimensionen: Sie erbringen die erforderliche hohe Verarbeitungsleistung für preiswerte CMOS-Kameras in progressiven Systemen zur Objekterkennung.

Immer noch gibt es auf Europas Straßen laut einer Studie der EU-Kommission jährlich mehr als 40.000 Tote und eine Million Verletze. Hauptursache ist der Verlust der Kontrolle über das Fahrzeug z.B. durch Schleudern. Wären alle Autos mit ESP ausgestattet, gäbe es den Angaben zufolge 100 000 Unfälle mit 4000 Verkehrstoten pro Jahr weniger. Auch Sensoren, die den Fahrer vor einem Zusammenstoß warnen, könnten die Zahl der Auffahrunfälle um 60 Prozent senken. Bislang bremst allerdings nicht nur der hohe Preis der verfügbaren Systeme, sondern auch deren eingeschränkte Leistungsfähigkeit einen breiten Einsatz. Genau hier setzt der Automobilzubehör- Hersteller Mobileye (www.mobileye. com) mit seiner EyeQ-Technologie an: Sie verarbeitet Aufgaben, die bislang auch nicht mit teuren Technologien wie Radar zu realisieren waren. So bestimmt das Fahrerassistenzsystem EyeQ1 – unter Einsatz einer einzigen Kamera als Bildquelle – Hindernisse mit Hilfe von Vorlageerkennung. Bei der Verarbeitung der aufgenommenen Daten kommen mehrere Schlüsselfunktionen zum Einsatz, z.B. Fahrzeugerkennung und -klassifizierung sowie Wahrnehmung von Fahrbahnen. Der technologische Fortschritt prägt auch die Sicherheitstechnologie: Eye- Q2 musste unter Einsatz von preisgünstigen CMOS-Bildsensoren Funktionen wie das Wahrnehmen von Fußgängern und Fahrbahnen sowie die Warnung vor bevorstehenden Kollisionen in Echtzeit bieten (Bild 1). Die erforderliche Prozessorleistung ist allerdings um das sechs- bis siebenfache höher als bei der ersten Systemgeneration.

Silberstreifen am Horizont: Multithreading

Das grundlegende Problem des EyeQ1-Systems war seine eingeschränkte Echtzeit-Leistung. EyeQ1 musste mit hochentwickelten Bildmuster-Vergleichsalgorithmen für die Bilderkennung und dynamischer Zuordnung Daten von zwei Video-Eingängen gleichzeitig verarbeiten und zu einem Video-Ausgang führen. Für die neue Generation war deutlich mehr Prozessorleistung erforderlich, ohne aber dabei signifikant höhere Kosten und eine höhere Leistungsaufnahme zu generieren. Nach eingehender Prüfung einiger Alternativen entschied sich Mobileye für den MIPS32-34K-Prozessor, auf den EyeQ2 aufsetzen sollte. Er basiert auf einem Dual-Core-Design, das in einem 90-nm-Prozess gefertigt wird.

Die Architektur, die Mips (www.mips.com) in seinen 34K-Cores einsetzt, nutzt die Parallelität auf Systemebene, indem sie mehrere Threads simultan ausführt. Dazu bietet der 34KCore eine neunstufige Pipeline. Zusätzlich hinzugefügte Logik implementiert die beiden wichtigsten Funktionen des 34K-Cores, nämlich die so genannten virtuellen Prozess-Elemente (Virtual- Processing-Elements, VPE) und die etwas kleineren Thread-Kontexte (Thread-Context, TC). Jeder Thread hat eine eigene Hardware, um seinen Zustand zur Laufzeit zu beschreiben (Bild 2). Dadurch ist der Kontext für jeden Thread immer erreichbar, so dass der Core in jedem Takt einen anderen Thread zur Ausführung bringen und die Pipeline so gefüllt wie möglich halten kann. Dieses Design minimiert Leistungsverluste auf Grund von CacheÜberläufen (Cache stalls), maximiert dadurch die verfügbare Speicherband breite und wirkt zusätzlich benötigten Taktzyklen durch häufiges Umschalten zwischen den Programmen (Context Switching) entgegen. Zudem ermöglicht dieser Ansatz dem Core das Abarbeiten von bestehendem Code, ohne dass die bei Multicore-Systemen sonst notwendigen Änderungen ausgeführt werden müssen. Zudem können unterschiedliche Threads zusammen in einem Core bearbeitet werden. Das ist besonders hilfreich, um die unterschiedlichen Rechenblöcke des Systems ständig mit Daten zu versorgen.