Bild 1: Der Register-überall-Ansatz der HyperFlex-Architektur.

Bild 1: Der Register-überall-Ansatz der HyperFlex-Architektur.

Halbleiterbausteine müssen in ihrer Entwicklung immer mehrere Schritte voraus sein, um die Leistungsfähigkeit von Anwendungen zu steigern. Damit können die Hersteller rechtzeitig auf Marktanforderungen reagieren und ausreichende Stückzahlen bereitstellen. Dies trifft auf alle Bereiche der Halbleiterentwicklung zu, insbesondere aber bei Hochleistungsrechnern (High Performance Computing), die immer mehr Netzwerkbandbreite und Datendurchsatz bereitstellen sollen. Viele Designs in diesem Bereich basieren auf FPGAs, die diese hohe Leistungsfähigkeit garantieren sollen. Aber selbst bei fortschrittlichen Architekturen mussten Entwickler bisher extrem breite Busse innerhalb des FPGAs verlegen, manchmal bis zu 2048 Bit breit.

Leistungssteigerung von FPGAs

Routing-Architekturen können die Verdrahtung durch Hierarchie- und Optimierungstechniken effizienter gestalten. Die Verdopplung der Anzahl von Drähten vergrößert jedoch die Chipfläche und erhöht die Verlustleistung. Die herkömmliche Methode, LUT-Registerpaare (Lookup Table) zu bilden, wie sie in allen FPGA-Core-Architekturen zu finden sind, opfert allerdings Logikkapazitäten, um die zusätzlichen Pipeline-Register zu erreichen. Pipelining in herkömmlichen Architekturen sorgt auch für Verzögerungen, da ein Signal in und aus einem Logikblock geroutet werden muss. Die Pipeline-Technik verringert somit die Effizienz, vor allem wenn Routing-Verzögerungen die Gesamtverzögerung dominieren.

Eckdaten

Herkömmliche FPGA-Architekturen stehen vor der großen Herausforderung, den Funktionsumfang und den steigenden Bandbreitenbedarf kommender High-Performance-Designs zu erfüllen. Der Register-überall-Ansatz erreicht in der neuen HyperFlex-Architektur von Altera eine Performance-Steigerung durch sogenanntes Hyper-Retiming und Hyper-Pipelinig wie auch durch Hyper-Optimization komplexer Funktionsblöcke.

Eine weitere Herausforderung besteht darin, die Taktabweichungen und den Bitversatz (Skew) zu minimieren, was bei einer höheren Rechenleistung zunehmend an Bedeutung gewinnt. Bei über 500 MHz ist eine neue Taktlösung erforderlich, anstatt weitere symmetrische Taktbäume hinzuzufügen.

Altera hat vor kurzem die HyperFlex-Architektur für seine FPGAs vorgestellt, deren neue Funktionen die Core Performance verdoppeln. Um diese Leistungssteigerung nutzen zu können, müssen Entwickler eine Reihe von Techniken anwenden, die bereits vertraut sein sollten. Dazu zählen das Register Retiming, Pipelining und die Design-Optimierung. Nur die Kombination dieser Techniken erreicht im Zusammenspiel mit der Architekturverbesserung die gewünschte Leistungssteigerung.

Hyperflex-Register

Die entscheidende Architekturänderung beruht auf dem Hinzufügen vieler zusätzlicher Register (Hyper-Register) in jedem Interconnect-Routing-Segment und an den Eingängen jedes Funktionsblocks. Mit diesen Registern können Entwickler ein Retiming kritischer Pfade durchführen und mit Pipeline-Registern Routing-Verzögerungen beseitigen. Die überbrückbaren Retiming- und Pipelining-Register lösen den Zusammenhang zwischen den Funktionsregistern im ALM (Adaptive Logic Module) und den Registern für das Retiming und Pipeling auf.

Alle Routing-Segmente bieten ein optionales Hyper-Register, das in den programmierbaren Routing Multiplexer integriert ist. Damit kann das Routing-Segment registratorisch oder kombinatorisch sein. Diese Hyper-Register stehen überall in der Core Fabric zur Verfügung (Bild 1). Sie sind durch die kleinen Quadrate an der Kreuzung jedes horizontalen und vertikalen Routing-Segments dargestellt.

Bild 2: Routing-Beispiel vor und nach dem Retiming mit herkömmlichen Architekturen.

Bild 2: Routing-Beispiel vor und nach dem Retiming mit herkömmlichen Architekturen.

Mit dieser Architektur erübrigt sich ein ALM, um ein Pipeline-Register zu finden. Jede horizontale und vertikale Interconnect-Leitung enthält ein Hyper-Register, das durch die FPGA-Konfiguration aktiviert oder deaktiviert werden kann. Hyper-Register sind einfache überbrückbare Register mit einem Eingang und einem Ausgang und ohne Routing Multiplexer am Eingang. Sie werden über Konfigurationsbits gesteuert, sind kostengünstig und vergrößern die Chipfläche nur minimal. Da Hyper-Register praktisch überall in der Core Fabric zur Verfügung stehen, können Entwickler auf eine uneingeschränkte Zahl von Registern für ihr Design zugreifen. Retiming und Pipelining kann nach Belieben erfolgen, ohne zusätzliche LAB-Ressourcen zu verbrauchen. In vielen Fällen verwendet das Design sogar weniger LAB-Ressourcen, da die Register über die Hyper-Register im Routing implementiert werden, anstatt Teile eines ALMs und dessen Register zu belegen.

Hyper-Retiming

In herkömmlichen Architekturen führt Software das Retiming mittels Auffinden eines nahgelegenen ungenutzten ALM-Registers durch und fügt es in den Schaltkreis ein. Diese Retiming-Methode ist durch die Granularität der ALM-Registerplatzierung begrenzt, und das ungenutzte ALM ist möglicherweise schwierig aufzufinden, was zusätzliche Verzögerungen in das Design einbringt. Es ergibt sich ein Verzögerungs-Overhead wenn durch das ALM zum Register geroutet werden muss (Bild 2).

Bild 3: Hyper-Retiming in der HyperFlex-Architektur.

Bild 3: Hyper-Retiming in der HyperFlex-Architektur.

Mit Hyperflex ist das Register-Retiming, genannt Hyper-Retiming, und die Granularität extrem fein. Es zählt die Verzögerung eines einzigen Routingdrahts, die im zweistelligen Pikosekunden-Bereich liegt. Die Kompromisse beim Versuch, die Retiming-Register in herkömmlichen Architekturen (Bild 3) zu lokalisieren, erübrigen sich und Pfade, die wenige Nanosekunden lang sind, lassen sich während dem Hyper-Retiming aufteilen (Bild 4).

Hyper-Retiming hat keine Auswirkungen auf bestehende LABs und ALMs, das heißt ein inkrementelles Platzieren oder Routen ist nicht erforderlich und es treten keine großen Auswirkungen auf die Kompilierungszeit auf. Um ein Retiming eines Registers durchzuführen, wird der Registerstandort einfach in das Routing geschoben – an seine normale endgültige Lage nach dem Place & Route. Dies ist ein enormer Vorteil für Designs mit breiten Datenbussen, die Hunderte oder Tausende zusätzlicher ALMs benötigen, um ein Retiming in herkömmlichen Architekturen zu erreichen und die in der Regel ein umfangreiches Rerouting erfordern.

Bild 4: Pipelining in herkömmlichen FPGA-Architekturen.

Bild 4: Pipelining in herkömmlichen FPGA-Architekturen.

Hyper-Pipelining

Herkömmliches Pipelining hat die gleichen Nachteile wie herkömmliches Retiming. Die fehlende Register-Granularität verringert die Wirksamkeit dieser Optimierung. Der Prozess ist ebenfalls iterativ, da die Zahl der erforderlichen Pipeline-Stufen und deren optimale Lage zu Beginn des Prozesses unbekannt sind. Das Design muss daher einem mehrfachen Place & Route unterzogen werden, während versucht wird, eine Pipeline-Lösung zu erstellen, mit der sich die Leistungsanforderungen erfüllen lassen. Bild 4 zeigt ein Beispiel vor und nach dem herkömmlichen Pipelining.

Bei der HyperFlex-Architektur lässt sich ein beliebiges Pipelining mit Hyper-Registern durchführen, ohne das Design aufzublähen (Hyper-Pipelining). In vielen Fällen verringert sich in einem Design mit übermäßiger Registerverwendung die Zahl der erforderlichen ALMs. Dies führt zu kostenlosem Pipelining und kann überall eingesetzt werden, vor allem für Datenpfad- und Feed-Forward-Logik. Bild 5 zeigt ein Beispiel für Hyper-Pipelining.

Bild 5: Hyper-Pipelining in der HyperFlex-Architektur.

Bild 5: Hyper-Pipelining in der HyperFlex-Architektur.

Da die FPGA-Entwicklungssoftware (Altera Quartus II) ein automatisches Retiming der Logik durchführt, indem Register in die Interconnect-Struktur verlegt werden, muss nur die erforderliche Anzahl von Pipeline-Registern am Eingang zu einer Taktdomäne oder an der Anschlusslogik eines Subdesigns festgelegt werden. Die Software verlegt dann nach dem Place & Route die Register in das Routing, womit sich die verschiedenen Iterationen beim Pipelining in einer herkömmlichen Architektur erübrigen. Das gemeinsame Platzieren der Register in der RTL sorgt auch für eine einfache Logik-Parametrierung wenn Software-Bibliotheken (IP; Intellectual Property) mehr als eine Taktfrequenz (fMAX) benötigen.

Entwickler, die ihr Design pipeline-freundlich gestalten ziehen den größten Nutzen aus der HyperFlex-Architektur. Eine latenztolerante Ablaufsteuerung, wie zum Beispiel datengültige Signale anstelle von Taktfreigaben mit hohem Fanout, ermöglicht der Software, Register einfach durch die FPGA Core Fabric zu bewegen.

Hyper-Optimization

Nach Abschluss des Hyper-Retiming und Hyper-Pipeling ist es möglich, dass die Performance-Zuwächse in einigen Designbereichen andere Engpässe offenlegen, die weitere Leistungssteigerungen behindern. Ein Schaltkreis mit einer langen Rückkopplungsschleife oder eine komplexe Zustandsmaschine können die Ursache sein. Es kann daher sinnvoll sein, einen bestimmten Bereich des Designs zu optimieren. Hyper-Optimization zielt auf Regelkreise ab, in denen die Performance-Vorteile dem Flächenbedarf der zusätzlich erforderlichen Logik überwiegen.

Die Anforderungen kommender High-Performance-Designs zu erfüllen, stellt für herkömmliche FPGA-Architekturen eine Herausforderung dar. Mit einem „Register-überall-Ansatz“ verspricht die neue HyperFlex-Architektur von Altera, die Performance-Werte bereitzustellen, die durch den steigenden Bandbreitenbedarf neuer Anwendungen erforderlich sind.