Wenn ein Problem sowohl mit Hardware als auch Software gelöst werden kann, empfiehlt sich die Software-Lösung. Die Hardware-Lösung bleibt eine Nische für Probleme, die hohe Anforderungen an Performance stellen und wo Software zu langsam ist. Deshalb gibt es heute viel mehr Software- als Hardware-Entwickler. Und da die Prozessoren immer leistungsfähiger werden, stellt sich mancher die Frage, ob die Hardware-Entwickler bald wegrationalisiert werden. Seit gut 25 Jahren beschreiben diese ihre Schaltungen mit VHDL und lassen mithilfe eines Synthese-Tools ein Schema generieren, anstatt dieses selber zu entwickeln. Dieser Paradigmenwechsel war genial, aber heute ist die Zeit reif für eine weitere Produktivitätssteigerung. Der Schritt von der RTL- zur Verhaltens-Synthese wird erwartet, doch alle Versuche sind bisher gescheitert.
Prozessor und Logik auf einem Chip zu vereinen, bringt Vorteile
Die beiden grossen FPGA-Anbieter, Xilinx und Altera, setzen neu auf leistungsstarke ARM-Prozessoren in Kombination mit programmierbarer FPGA-Logik – ein Vehikel also, an dem sowohl Software- als auch Hardware-Entwickler ihre Freude haben. Doch für welche Anwendungen sind sie gedacht? Prozessoren eignen sich gut für User Interfaces und komplexe Steueraufgaben. Es ist ein Vorteil, diese in Software zu schreiben, da Entwickler bis zur finalen Version flexibler auf Änderungswünsche reagieren können. Der FPGA-Teil hat seine Stärken, wenn die Datenverarbeitung rechenintensiv ist, da der Algorithmus parallel abgearbeitet werden kann. Der grosse Vorteil, Prozessor und Logik auf einem Chip zu haben, ist der Chip-interne Datenaustausch über einen 256 Bit breiten Bus. So können beide Welten mit grosser Bandbreite interagieren.
Leistungsstarke GPU für rechenintensive Aufgaben
Bei diesem Ansatz bleibt die Rollenverteilung wie gehabt: Die Software-Entwickler schreiben Code für die ARM-Cores und die Hardware-Entwickler schreiben VHDL für den FPGA-Teil. Ein neuer Ansatz erfreut jedoch die Software-Entwickler: Der FPGA dient lediglich als Co-Prozessor, welcher die ARM-Cores unterstützt. Zudem konfiguriert ein Tool den Co-Prozessor, d.h. man braucht nicht selber VHDL-Code zu schreiben. Möglich macht das Ganze das OpenCL-SDK von Altera.
OpenCL kommt aus der Software-Welt. Es wurde entwickelt, um die enorme Rechenkapazität von aktuellen Grafikprozessoren mit mehreren Kernen auch für nicht-gra- fische Anwendungen nutzbar zu machen. Das Hauptprogramm wird nach wie vor auf einer CPU (Host) ausgeführt, die rechenintensiven Teile jedoch auf eine GPU ausgelagert. Die GPU GeForce GTX 980M von Nvidia hat 1536 Cores, die parallel mit einem Takt von 1 GHz betrieben werden können.
Individuell generierte Cores für schnelle Datenverarbeitung
Neu wurde dieses Konzept von der FPGA-Welt übernommen, dessen Stärken ja ebenfalls die parallele Verarbeitung ist. FPGAs bieten sogar noch mehr Flexibilität und Möglichkeiten als die fixe Architektur von GPUs. Mit der Vielzahl von adaptiven Logik-Modulen, DSP-Funktionen und Block Memories lassen sich massgeschneiderte Cores erzeugen.
Die typischen Herausforderungen, bei denen die Stärken von OpenCL gefragt sind, findet man z.B. in der Videoverarbeitung. Bei hohen Auflösungen und schnellen Bildraten braucht es enorme Datenraten – z.B. benötigt 8K UHDTV 24 GByte/s. Da kommen mehrere Probleme zusammen: Erstens die hohe Datenrate an den Eingängen, zweitens die Verarbeitung der vielen Daten, drittens das Zwischenspeichern während der Verarbeitung und viertens das Weiterleiten der verarbeiteten Daten an die Ausgänge. Der Datenaustausch zwischen Host und Device geschieht bei GPUs über PCIe (PCIe 3.0 x 16 erreicht ca. 16 GByte/s). Dank den vielen Transceivern und den PCIe-HardIP-Cores auf den FPGAs können Transferraten von über 100 GBytes/s erreicht werden. Die Datenverarbeitung lässt sich mit individuell generierten Cores erledigen und als Zwischenspeicher lassen sich die internen Block Memories auf die ihnen zugeteilten Anforderungen in Bezug auf Datendurchsatz und Speichervolumen konfigurieren.
Für eine FPGA-Lösung liegt die Hürde höher
Jedoch liegen nicht alle Vorteile von OpenCL bei SOC-FPGAs. Ein Grafikprozessor befindet sich in jedem Desktop- und Laptop-Computer. Die Hürde ist somit viel kleiner, rechenintensive Aufgaben dorthin auszulagern, als eine FPGA-Plattform zu benutzen. Auch die Kompilierzeiten sind bei GPUs um Faktoren kürzer. Lässt sich das Problem mit CPU und GPU lösen, wählt man vorzugsweise diese Variante. Scheut man jedoch den Zusatzaufwand für ein FPGA-System nicht, lassen sich leistungsfähigere Lösungen realisieren. Diverse Versuche haben gezeigt, dass sich mit FPGAs ein besseres Verhältnis von Performance/Watt realisieren lässt.
Die FPGAs von Altera stehen in Konkurrenz zu GPUs. Für Xilinx gilt diese Aussage ab der UltraScale+-Familie auch. Bisher setzte der Hersteller auf High-Level-Synthese (HLS). Dabei wird die Aufgabe für den FPGA in einen Algorithmus- und einen Logik-Teil aufgetrennt. Der Algorithmus wird in Software beschrieben und mit der HLS optimiert, während der Rest nach wie vor in VHDL beschrieben wird. Somit benötigt dieser Ansatz immer noch das Know-how von RTL-Designern. Die Vielzahl von Möglichkeiten lässt erahnen, was passieren wird: Software-Spezialisten bevorzugen die Lösung mit OpenCL auf GPUs, allenfalls auf FPGAs während Hardware-Entwickler dem Ansatz der HLS den Vorzug geben.
Fachhochschulpraktika werden mit OpenCL ergänzt
Am Institut für Mikroelektronik der FHNW werden Bachelor- und Masterstudenten ausgebildet. Dabei ist es nicht möglich, sämtliche genannten Varianten bis ins Detail zu behandeln. Es ist wichtig, dass den Studenten die Problematik bekannt ist und sie den DesignFlow für eine Variante gesehen oder sogar selber durchgespielt haben. Bisher kam für die HLS Calypto (früher Catapult-C) zum Einsatz. Doch nun werden die Praktika mit OpenCL auf Altera ergänzt. Die Studierenden können so komplexe Aufgaben in kürzerer Zeit realisieren und auf der Hardware-Plattform verifizieren.
Infoservice
FHNW Institut für Mikroelektronik
Steinackerstrasse 5, 5210 Windisch
Tel. 056 202 80 22
www.fhnw.ch/ime