Die letzten Entwicklungen im Bereich der GPU Technologien haben gezeigt, dass der Fokus immer mehr auf GPGPU (General Purpose computing on Graphics Processing Units) gerichtet wird, bei dem die massiv parallelen Rechenkapazitäten auch für andere Anwendungen nutzbar gemacht werden sollen. Das Rendern von Bildern ist weiterhin möglich, aber es wird kaum mehr spezifische Hardware extra dafür implementiert. Die Marktführer Nvidia und AMD liefern gute Informationen, wie dessen Architekturen prinzipiell aufgebaut sind, aber trotzdem werden viele Details zurückgehalten. Es existieren auch nur sehr wenige Open Source Projekte in diesem Bereich und die meisten sind weder aktuell, noch in einem vollendeten Zustand. In dieser Arbeit wird ein neues Konzept für den Aufbau einer GPU Architektur präsentiert, welche vor allem gute Skalierbarkeit und Modularität bereitstellen soll. Die Anzahl und Art der Recheneinheiten/Compute Units (CU), die in einem Cluster angeordnet sind und von allen Threads verwendet werden können, ist frei konfigurierbar. Jede CU kann als Service Provider gesehen werden, hört selbstständig den Compute Dispatch Bus ab und gibt Feedback für Lanes, dessen anliegenden Befehle prinzipiell abgearbeitet werden könnten. Durch das Mappen von Thread Registern auf Einträge in ein gemeinsam verwendetes Register File, soll eine bessere Skalierung der Thread\-anzahl ermöglicht werden. Die vorgestellte Architektur wurde unter Verwendung einer gegebenen Befehlssatzarchitektur in SystemVerilog implementiert und ein Compiler stand bereits zu Verfügung. Die korrekte Funktionsweise des Architektur Konzepts konnte durch die Ausführung von C Programmen innerhalb der Simulation demonstriert werden. Beim Designen wurde ein möglichst geradliniger Datenfluss durch die Prozessorpipeline angestrebt. Dies ermöglicht eine gute Erweiterbarkeit und Module können einfach ausgetauscht werden, jedoch ergeben sich dadurch wiederum Performancenachteile, die mit Optimierungen noch verringert werden können.
de
Recent developments have shown that the focus for new GPU designs is lying on general purpose computing on graphics processing units (GPGPU). Rendering is just another job of the GPU and the available massive parallel hardware resources should be utilizable for other compute-intensive calculations too. Big vendors like Nvidia and AMD are providing insights into their designs, but many details are still unknown and there are only a very few open GPU implementations ready for full usage. A new concept for a modern GPU architecture will be presented, which should offer good scalability and modularity. The number and type of compute units (CU) are selectable. CUs, which can be seen as a service provider, are located in a cluster and are usable by every thread. Every CU is listening on the common compute dispatch bus and gives feedback, which lanes it would be able to process. A better thread scalability should be reached by introducing register mapping, where each thread register is mapped to an entry of a big shared register file. The presented architecture has been implemented in SystemVerilog. Thanks to using a predefined instruction set architecture (ISA) a compiler is available too. The proper function of the architecture concept is shown by executing C programs in the simulation. Data paths were chosen as straight as possible to make the design modular and easily extendable, but this has also downsides on the throughput performance of the processor and further improvements are needed.