DFG Mini Workshop Device Treiber für rekonfigurierbare Rechensysteme HW-ICAP API zur Anwendung der Read-, Modify-, Writeback-Methode für Xilinx Virtex-II FPGAs 8. 9. Dezember TU München Michael Hübner Institutsleitung: Prof. Dr.-Ing. K.D. Müller-Glaser Prof. Dr.-Ing. J. Becker Institut für Technik der Informationsverarbeitung
Gliederung -2- Einleitung und Motivation Grundlagen Readback- Modify- Writeback Methode Anwendungen Konfigurationsmanagement System Online Routing Integration und Test Audio- Streaming Anwendung Zusammenfassung und Ausblick
Bisheriger Ansatz für dynamisch und partiell rekonfigurierbare Systeme Aufteilung des Systems in 2 Bereiche: Statischer Bereich Dynamischer Bereich Dynamischer Bereich Slot 0 Slot 1 Statischer Bereich Interface IOs Motivation Aufteilung des Dynamischen Bereichs in Slots Slot Höhe entspricht Bausteinhöhe Modul A Modul B Prozessor Kommunikationstruktur Horizontale Busmakros -3- Interface ICAP Quelle: Markus Stitz Externer Speicher
Nachteile des traditionellen Designs Motivation Uneffektive Ausnutzung der zur Verfügung stehenden Chipfläche durch: Starre Aufteilung in dynamischen und statischen Bereich Unflexible Slotbelegung Anpassung der Slotgröße an größtes Modul Lange Signallaufzeiten auf den horizontalen Verbindungsmakros Festlegung auf Slotstruktur Komplizierte Anwendung des Modularen Design- Flow Problemspezifischer Ansatz Allgemeiner Design Ansatz -4-
Alternative Designmöglichkeiten Motivation Flexible Anordnung der Konfigurationsslots Flexible Position innerhalb der Slots Mehrere Module pro Slot Gute Ausnutzung der Chipfläche Kurze Signalwege Hohe Adaptivität Slot basierter Ansatz M 3 M 2 M 1 Static Area Makro Configuration Slot Modul basierter Ansatz FPGA User-IP Interface MicroBlaze/ PowerPC Eigenständige Module Frei platzierbar Module B Module A Module C Module D OPB-Bus UART Flash- Controller HWIcap to PC External Flash Memory -5- Frage: Warum nicht? Module E Quelle Matthias Kühnle ICAP
Virtex-II Architektur Grundlagen Logik Ressourcen Regelmäßige Anordnung in Spalten und Zeilen Routing Ressourcen Regelmäßige Anordnung zwischen Logik Ressourcen Homogenität in horizontaler Richtung nur von BRAM- Blöcken unterbrochen Block SelectRAM resource I/O Blocks (IOBs) Dedicated multipliers Programmable interconnect Configurable Logic Blocks (CLBs) Quelle Xilinx -6- Clock Management (DCMs, BUFGMUXes)
Virtex-II Konfigurationsspeicher Architektur Grundlagen Konfigurationsspeicher aus Frames aufgebaut Minor Frame konfiguriert Bruchteil aller CLB- Ressourcen einer Spalte Minor Frame ist kleinste adressierbare Einheit Major Frame Partiell dynamische Rekonfiguration kann nur CLB- Spalten weise erfolgen Lösung: Read-, Modify- Writeback Methode Minor Frame -7-
Prinzip Readback- Modify- Writeback Methode Voraussetzungen Partielles Auslesen der aktuellen Konfiguartion Glitchless Switching Readback- Modify- Writeback Methode Grundprinzip Auslesen einer partiellen Konfiguration Manipulieren der entsprechenden Ressourcen Rückschreiben der manipulierten Konfiguration Problem Keine Angaben zur Adressierung einzelner Ressourcen ICAP- Schnittstelle -8-
Reverse Engineering mit JBits Java Klassenbibliothek Readback- Modify- Writeback Methode API für Xilinx Virtex-II Konfigurationsbitstrom JBits- Klasse stellt Virtex-II Bausteinmodell da Manipulation einzelner FPGA Ressourcen Gesamtbitstrom Readback- Bitstrom Bitstrom Bitstrom Manipulation JBits- API JBits- API JBits.read() Serielles Serielles Interface Interface JBits.getCLBBits(row,col,source) JBits.generatePartial() Serielles Serielles Interface Interface Bitstrom Bitstrom JBits.setCLBBits(row,col,source,bits) ICAP ICAP Host- System FPGA -9-
Adressierung von Elementarblöcken Elementar- Block := CLB- Block + adjazente Switch Matrix IO-Block 12 Byte Elementar-Block n 10 Byte Readback- Modify- Writeback Methode Elementar-Block 2 10 Byte Elementar-Block 1 10 Byte Elementar-Block 0 IO-Block 10 Byte 12 Byte -10- Frame 0 1 2... 20 21
Möglichkeiten durch Elementarblock Adressierung Readback- Modify- Writeback Methode On- Chip Realisierung Verschieben von Elementarblöcken Vertauschen von Elementarblöcken Laden von Elementarblock Konfigurationen aus einem externem Speicher Zusammenfassen von E-Blöcken zu abgeschlossenen Funktionsmodulen Verschieben von Funktionsmodulen Vertauschen von Funktionsmodulen Laden von Funktionsmodulen -11-
Speicherung eines Moduls im externen Speicher Col 0 Col 1 0 1 2 21 0 1 2 21 Col 0 Col 1 0 1 2 21 0 1 2 21 n Speichermapping Readback- Modify- Writeback Methode............ COL 0 COL 1 0 1 2 21 1 2 3 21...... n..0 n..0 n..0 n..0 n..0 n..0 n..0 n..0 Modul ohne Placement Information 0-12- Modul Ausschneiden der Frames aus Gesamtbitstrom Normierung durch Verschieben nach unten Serielles Speichern der einzelnen Frames
Konfigurationsmanagement System Anwendungen Eigenschaften: Plattform unabhängig für alle Virtex-II Bausteine Allgemeiner nicht anwendungsbezogener Ansatz API für übergeordnetes Laufzeitsystem welches den Anwendungskontext herstellt Slot basiert -13- FPGA Basiskonfiguration + Konfigurationsmanagement System übernimmt folgende Aufgaben: Empfang von Konfigurationskommandos Ausgabe von Systemstatus Informationen Verwaltung der dynamisch re-konfigurierbaren FPGA Fläche Verwaltung des externen Modulspeichers Dynamisches Routing
Grundelemente Hardware Modul D Virtex-II FPGA Modul B Konfigurationsmanagement Modul A Modul AC IP-User Interface MicroBlaze V PowerPc Statisches Basissytem OPB- UartLite -14- OPB- HwIcap Memory Controller Host Externer Speicher
System Partitionierung Partitionierungs Statisches Parameter Basissystem Konfigurationsmanagement YEndPos Slot B Slot A Slot Slot B Anzahl der Slot Slots A YStartPos XStartPos XEndPos Routing Breite Slot C -15- Host Externer Speicher
Online Routing Elemente Variable Modulposition innerhalb der Slots Online Routing Online Routing Slot Modul Routing Channel Enthält dynamische Routing Blöcke Modul Interface Schnittstelle zu Routing Blöcken im Routing Channel Routingblöcke Verbindungsmakro Stellt Schnittstelle zu statischem Teil da Stellt Schnittstelle zu Routing Channel da -16- Type I Type II Type III
Online Routing Ablauf Initialisierung TYPE-I Blöcke TYPE-III Abschluss Online Routing Slot Routing Austausch TYPE-I TYPE-II Modul Un-Routing Austausch TYPE-II TYPE-I -17- IP-User Interface
Realisierung der Routing Blöcke LUT basiert Y X Y X Online Routing Verwendung von Double Line Routing Ressourcen Wichtig : Homogener Aufbau des Makros G # F# G #F# = Macro External Pin CLB- Breite =1 Signalbreite= 1-8 CLB- Breite =2 Signalbreite= 9-16 CLB- Breite =3 Signalbreite= 17-24 -18- Verschiedene Makrobreiten Als Makro mit FPGA Editor manuell erstellt
Modularer Aufbau der Software Configuration Manager Konfigurationsmanagement Serial Interface Flash Manager Icap Manager Uart Utils Flash Driver Icap Utils Uart Driver EDK- LIB Icap Driver UART FLASH ICAP-PRIMITIVE -19-
-20- ICAP API: Initialisierung
Beispiel Sequenz: Modul einfügen -21- Konfigurationsmanagement
-22- Configuration - Management
Audio Streaming Anwendung Lautsprecher Integration und Test D/A Wandler OPB-GP-IO MicroBlaze V PowerPc -23- OPB- HwIcap Memory Controller OPB- UartLite OPB- UartLite Host Externer Speicher
Performanz Integration und Test Performanz der RMW- Methode Pro E-Block = 20 ms Bei Virtex-II XC2V1000 Baustein Bei Taktrate von 100 MHz ICAP- Schnittstelle -24-
Zusammenfassung Dezentraler Ansatz mit JBits Entwicklungsplattform Tool zum Verschieben und Ausschneiden von Modulen Adressierung von E- Blöcken On-Chip Realisierung der RMW- Methode Laden von Modulen aus externem Speicher Völlig neuartige Designmöglichkeiten Plattformunabhängige Konfigurationsmanagement API Online Routing Fähigkeit Verzicht auf Makros im statischen Teil Vereinfachter Design- Flow Toolbox zum präparieren der Module Demonstration mittels Audio- Streaming Test System -25-
Ausblick Performanzsteigerung der RMW- Methode On-Chip Einbettung der Konfigurationsmanagement API in anwendungsspezifisches Laufzeitsystem On- Chip Realisierung alternativer Designs auf Basis der RMW- Methode Erweiterung durch Adressierung weiterer Ressourcen Netzlisten basiertes Online- Routing -26-
-27- Vielen Dank für Ihre Aufmerksamkeit!
-28-
Grundelemente Hardware Readback- Modify- Writeback Methode Einfache Anbindung an OBP- Bus EDK- LibGen erstellt Core Treiber MicroBlaze ICAP- Contr oller OPB- HwIcap OPB- UartLite Host Pc BRAM ICAP-Primitive OPB- Treiber Schreibe Buffer Lese Buffer Schreibe BRAM-Buffer zu Icap Lese Icap in BRAM-Buffer OPB- Contr oller OPB- HwIcap Datenfluß Kontrollfluß -29-
-30-