Die Architektur von FPGAs (Field Programmable Gate Arrays) kombiniert Programmierbarkeit mit einem hohen Potenzial zur Spezialisierung für verschiedene Rechenlasten. Wir analysieren in dieser Arbeit zunächst aktuelle Ansätze, die Produktivität bei der Entwicklung von FPGA-Anwendungen zu steigern, arbeiten konzeptuelle und praktische Vor- und Nachteile heraus, und identifizieren drei Säulen, die einander dabei ergänzen können, die Verwendung von FPGAs für allgemeine Rechenaufgaben voranzutreiben.Anschließend konzentrieren wir uns auf übergelagerte Architekturen als Ansatz für produktive Entwicklungsprozesse für FPGAs. Solche Architekturen bedingen aber auch bisher unzureichend verstandene Nachteile bei der resultierenden Rechenleistung. Unsere Arbeit quantifiziert für eine solche Architektur diese Nachteile anhand einer Auswahl unterschiedlicher Programmschleifen, die zu einer modernen Anwendung für stereoskopischen Bildabgleich gehören. Wir zeigen, dass die Architektur trotz dieser Nachteile als praktisch nutzbarer Beschleuniger dienen kann und identifizieren verschiede Unterschiede im Vergleich zu vollständig spezialisierten Konfigurationen. Darüber hinaus stellen wir Werkzeuge vor, die automatisch geeignete Schleifen aus Hochsprachenquelltexten oder Binärcode extrahieren und auf einem Vektorprozessor zur Ausführung bringen, der als übergelagerte Architektur auf FPGAs umgesetzt ist.Mit einem abstrakten Modell zur Abschätzung von Rechenleistung, das die gegenseitige Abhängigkeit zwischen Architekturen und Programmierentscheidungen berücksichtigt, erkunden wir schließlich systematisch Alternativen für Rechnersysteme, die Prozessoren und FPGAs enger koppeln als bisher. Insbesondere die Integration der Speicherhierarchie hat einen erheblichen Einfluss auf das Beschleunigungspotenzial des Systems. |