Rekonfigurierbare Multi-CPU-Architektur
(von Daniel Kliem)

Hintergrund

Hoch integrierte Chips können mehrere funktionale Blöcke beinhalten: universelle Rechenkerne, spezialisierte Beschleunigereinheiten und einen Großteil der zum Betrieb benötigten Peripherie. Mit dem Ziel, neben dem integrierten Chip nur wenige externe Komponenten zu benötigen, werden die Systemfunktionen nicht auf Geräte-, sondern auf Chip-Ebene integriert. Dieser Ansatz wird daher als System-on-a-Chip (SOC) bezeichnet.

Die hohe Integrationsdichte der SOCs ermöglicht es, leistungsstarke Geräte mit geringem Energiebedarf zu konstruieren. Insbesondere für mobile Anwendungen ist das entscheidend. In Smartphones, die neben Telefonie- und Internet-Anwendungen auch die Wiedergabe von Videomaterial ermöglichen, kommen dabei SOCs zum Einsatz, die einen oder mehrere Rechenkerne und Videobeschleunigung anbieten.

Um die Entwicklungszeiten von SOCs gering zu halten, werden wiederverwendbare Blöcke verwendet, die als Intellectual Property (IP) erhältlich sind. Die Kommunikation zwischen den verschiedenen Blöcken eines SOC geschieht dabei über gemeinsam genutzte Speicherbusse. IP-Blöcke, die zu dem gewählten Speicherbussystem kompatibel sind, können ohne größere Anpassungen verwendet werden. Der Einsatz von erprobten IP-Blöcken reduziert dabei auch das Entwurfsrisiko, was insbesondere bei der Entwicklung von SOCs als ASIC bedeutend ist.

Neben ASICs können auch FPGAs als Plattform verwendet werden. Heute verfügbare FPGAs sind hinreichend groß, um gleich mehrere Rechenkerne und Speicherbusse in konfigurierbaren Logikzellen zu implementieren. Auch hier wird auf IP-Blöcke zugegriffen.

Es gibt grundlegende Unterschiede zwischen den SOCs, die in FPGAs implementiert werden, und denen, die auf ASICs basieren.

Die Stärke der FPGA-basierten SOCs liegt in ihrer Flexibilität. Kommerziell erhältliche ASIC-basierte SOCs sollen einen breiten Markt bedienen und sind dementsprechend universell ausgelegt. FPGA-basierte SOCs lassen sich frei konfigurieren. So kann bspw. die Anzahl der erforderlichen Rechenkerne je nach Anwendungsfall festgelegt oder die Architektur kann um nötige Beschleunigereinheiten erweitert werden.

Während in ASICs Rechenkerne mit hoher Taktfrequenz realisierbar sind, ist die erreichbare Taktfrequenz in FPGAs etwa eine Größenordnung geringer, wenn die Rechenkerne in konfigurierbarer Logik implementiert werden.

Externe Speicherbausteine können jedoch auch bei FPGAs sehr effizient angebunden werden. Es ergibt sich daraus die Besonderheit, dass die physikalische Speicherbandbreite ausreichend ist, um mehrere Systeme zu versorgen.

Die Verbindung mehrerer abgeschlossener SOCs zu einem übergeordneten Verbund ermöglicht es, unabhängige Anwendungen bei bestehender Trennung der Funktionen hinreichend zu integrieren. Dabei können sowohl Sicherheitsaspekte beachtet, als auch das eigentliche SOC-Paradigma beibehalten werden.

Dissertationsprojekt

Im Rahmen dieser Forschungsarbeit sollen FPGA-basierte SOC-Architekturen hinsichtlich ihrer Skalierbarkeit untersucht werden. Den verwendeten Speicherbussen und deren Auslegung kommt dabei besondere Aufmerksamkeit zu. Insbesondere, wenn Mehrkernsysteme betrachtet werden, ist zu erwarten, dass sie zum Flaschenhals werden und so die Skalierbarkeit eines SOCs limitieren.

Untersucht wird ein System-of-SOCs (SOSOC), das unter anderem hinsichtlich der Anzahl der SOCs und Rechenkerne pro SOC parametrisiert werden kann. Entsprechende Instrumentierung ermöglicht es dabei, die Auslastung der Speicherbusse in Bezug auf Skalierbarkeit der Architektur zu bewerten.

Die hierzu verwendete IP-Bibliothek GRLIB der Firma Aeroflex Gaisler besitzt, als Alternative zu spezifischen Bibliotheken der FPGA-Hersteller, eine Abstraktionsschicht, die es ermöglicht, das SOSOC unabhängig von einem bestimmten Hersteller zu entwickeln. Die funktionalen Blöcke der Bibliothek sind in VHDL geschrieben und quelloffen unter der Open-Source-Lizenz GPL veröffentlicht. Zentrale Elemente dieser Bibliothek sind die Implementierung eines Speicherbusses gemäß der ARM AMBA 2.0 Spezifikation sowie die LEON3 CPU, die eine Implementierung der SPARC V8 ISA darstellt.