PolyDyn - Polymorphe Objekte für dynamisch rekonfigurierbare FPGAs A. Schallenberg 1, F. Oppenheimer 2 und W. Nebel 1 1 Carl von Ossietzky Universität Oldenburg 2 OFFIS e.v. Bereich Eingebettete Hardware-/Software-Systeme 1. Juli 2004 Schallenberg, Oppenheimer, Nebel 1/26
Motivation und Ansatz 1 Motivation und Ansatz 2 Grundlegende Sprachkonstrukte 3 Weiterführende Sprachkonstrukte 4 Ausblick, Zusammenfassung und Kooperationen Schallenberg, Oppenheimer, Nebel 2/26
Beispiel FPGA Design Motivation und Ansatz configuration storage encrypted data input buffer control triple des output buffer plain data static interface reconfigured area Nutzung eines dynamisch rekonfigurierbaren FPGAs Logikstruktur kann sich wärend der Laufzeit ändern Partiell rekonfigurierbare FPGAs: Operiert weiter während sich Teile ändern Schallenberg, Oppenheimer, Nebel 3/26
Problemformulierung Motivation und Ansatz Problem Dynamische Hardware steht zur Verfügung, aber gegenwärtige Hardwarebeschreibungssprachen sind maßgeschneidert für statische Hardware! Ziele des PolyDyn Projektes Modellierung verschiedener Programmkontexte Zeitmodell für den Austausch von Programmkontexten Beschreibung muß simulierbar sein Beschreibung muß synthetisierbar sein Schallenberg, Oppenheimer, Nebel 4/26
Idee PolyDyn - Polymorphe Objekte Motivation und Ansatz Ansatz Eine bestehende HDL um Sprachkonstrukte für dynamische Hardwarekomponenten erweitern: SystemC mit OSSS-Erweiterung SystemC steuert bei: Ausführbare Modelle Syntheseflow OSSS steuert bei: Objekte Polymorphismus Arbitrierungskonstrukte Schallenberg, Oppenheimer, Nebel 5/26
Nutzung der Polymorphie Motivation und Ansatz CryptoAlgorithm CryptoModule AES DES3 Blowfish Eine Basisklasse definiert ein Interface zur Außenwelt, welches zum Zugriff von Außen auf alle Instanzen genutzt wird. Vorteil: Klar definierte und feste Schnittstelle zum statischen Logikteil. Schallenberg, Oppenheimer, Nebel 6/26
Grundlegende Sprachkonstrukte 1 Motivation und Ansatz 2 Grundlegende Sprachkonstrukte 3 Weiterführende Sprachkonstrukte 4 Ausblick, Zusammenfassung und Kooperationen Schallenberg, Oppenheimer, Nebel 7/26
Klassendeklarationen Grundlegende Sprachkonstrukte class CryptoAlgorithm { public: DURABLE_RECONFIGURABLE(CryptoAlgorithm); void encrypt(int & dataword); }; class Blowfish : public CryptoAlgorithm { public: TRANSIENT_RECONFIGURABLE(Blowfish, myclear); void myclear(); void encrypt(int & dataword); }; Auf TRANSIENT RECONFIGURABLE und DURABLE RECONFIGURABLE wird später eingegangen. Schallenberg, Oppenheimer, Nebel 8/26
ReconObject PolyDyn - Polymorphe Objekte Grundlegende Sprachkonstrukte Deklaration: class CryptoModule : public sc_module {... ReconObject< CryptoAlgorithm > crypto_object;... }; Verwendung im Thread: crypto_object = Blowfish(); RECON_OBJECT_PROCEDURE_CALL( crypto_object, encrypt(dataword) ); Schallenberg, Oppenheimer, Nebel 9/26
Reconfiguration-Controller Grundlegende Sprachkonstrukte Instanz eines Reconfiguration-Controllers: ReconfigurationController< ModifiedRoundRobin > controller_one; crypto object unter Kontrolle durch controller one: CONTROLLED_BY(crypto_module.crypto_object, controller_one); Schallenberg, Oppenheimer, Nebel 10/26
Timing PolyDyn - Polymorphe Objekte Grundlegende Sprachkonstrukte Zur zeitgenauen Simulation werden zusätzliche Angaben benötigt: DECLARE_TIME(controller_one, DES3, sc_time(3, SC_US), // 1) Attribute sc_time(300, SC_US)); // 2) Logik Zeitinformationen zu jedem Typ: 1 Speicher- und Restaurationszeit für Attribute 2 Rekonfigurationszeit für die Logik Die Speicher- und Restaurationszeit wird erst durch die fortgeschrittenen Sprachelemente genutzt. Schallenberg, Oppenheimer, Nebel 11/26
Simulation PolyDyn - Polymorphe Objekte Grundlegende Sprachkonstrukte Eigenschaften der Simulationsbibliothek: Einfügen von Kontrollcode vor und hinter jedem Zugriff auf oder jeder Zuweisung an ein ReconObject. Erwirkt, daß Zuweisungen an ReconObjects eine vorbestimmte Zeit dauern (angenommene Rekonfigurationszeit). Verhindert Kollisionen durch zeitlich überlappende Zugriffe und Rekonfigurationsanforderungen, die von verschiendenen Threads stammen. accesses time ReconObjects configuration lifetime time Schallenberg, Oppenheimer, Nebel 12/26
Weiterführende Sprachkonstrukte 1 Motivation und Ansatz 2 Grundlegende Sprachkonstrukte 3 Weiterführende Sprachkonstrukte 4 Ausblick, Zusammenfassung und Kooperationen Schallenberg, Oppenheimer, Nebel 13/26
Erinnerung PolyDyn - Polymorphe Objekte Weiterführende Sprachkonstrukte Bisheriger Zugriff auf ein ReconObject: RECON_OBJECT_PROCEDURE_CALL( crypto_object, encrypt(dataword) ); Implikation Der Designer muß Buch führen, welcher Kontext verfügbar ist, wenn das ReconObject angesprochen werden soll. Crypto Beispiel: Das Verarbeiten eines verschlüsselten Blowfish-Paketes erfordert, daß eine Konfiguration mit einer Blowfish-Routine verfügbar ist und das entsprechende Objekt mit den richtigen Kryptographieschlüsseln initialisiert ist. Schallenberg, Oppenheimer, Nebel 14/26
Identitäten PolyDyn - Polymorphe Objekte Weiterführende Sprachkonstrukte Identity< CryptoAlgorithm > blowfish_algorithm(crypto_object); Identity< CryptoAlgorithm > des3_algorithm(crypto_object);... blowfish_algorithm = Blowfish(); des3_algorithm = DES3();... RECON_OBJECT_PROCEDURE_CALL( blowfish_algorithm, encrypt(dataword) ); Schallenberg, Oppenheimer, Nebel 15/26
Eigenschaften PolyDyn - Polymorphe Objekte Weiterführende Sprachkonstrukte Jede Identität... gehört zu genau einem ReconObject repräsentiert einen Kontext des ReconObjects wird auf die gleiche Art bei Methodenaufrufen und Zuweisungen genutzt wie ein ReconObject koexistiert zeitlich zu anderen Identitäten des gleichen ReconObjects Anforderungen an das Laufzeitsystem sind... Zeit-Multiplexing der Identitäten (erfordert ggf. ein Ein- und Auslagern) Mechanismus zur Sicherung und Restauration von Attributswerten (Erfordert einen beschreibbaren Speicher) Schallenberg, Oppenheimer, Nebel 16/26
Attributssicherung und -restauration Weiterführende Sprachkonstrukte DECLARE_TIME(controller_one, DES3, sc_time(3, SC_US), // Attribute sc_time(300, SC_US)); // Logik Dies legt je 3 Mikrosekunden für die Attributssicherung und -restauration fest. DURABLE_RECONFIGURABLE(CryptoAlgorithm); TRANSIENT_RECONFIGURABLE(Blowfish, myclear); Die erste Anweisung deklariert alle Attribute als zu sichern. Die Zweite dagegen erlaubt das gezielte Ausblenden einiger Attribute. myclear() darf nur aus Zuweisungen von Konstanten an Attribute bestehen. Diese Konstanten werden als Restaurationswerte genutzt. Vorteile: Kleinerer Speicher und schnellere Kontextwechsel. Schallenberg, Oppenheimer, Nebel 17/26
Ausblick, Zusammenfassung und Kooperationen 1 Motivation und Ansatz 2 Grundlegende Sprachkonstrukte 3 Weiterführende Sprachkonstrukte 4 Ausblick, Zusammenfassung und Kooperationen Schallenberg, Oppenheimer, Nebel 18/26
Spracherweiterungen in Arbeit Ausblick, Zusammenfassung und Kooperationen Die nächste Sprachversion soll enthalten: Device-Typen (z.b. Typ Xilinx Virtex II Speed 4 ) Individuelle Scheduler für einzelne ReconObjects (u.a. vom Designer selbst implementierbar) Referenz für Identitäten Verbergen von Rekonfigurationszeiten Zur Diskussion stehen: Modellierung von Off-Chip Ressourcen, z.b. Speicher für Attributswerte oder Patternströme für die Rekonfiguration Sprachmittel für FPGAs mit mehreren Rekonfigurationsports Platzierungsgeometrien bei Rekonfigurationszeiten berücksichtigen Schallenberg, Oppenheimer, Nebel 19/26
Status PolyDyn - Polymorphe Objekte Ausblick, Zusammenfassung und Kooperationen Derzeitiger Stand Simulationen mit den vorgestellten Sprachelementen bereits lauffähig. To do Erweiterungen abschließen Viele Tests Synthesekonzept Übersetzen eines Designs von Hand Synthese Schallenberg, Oppenheimer, Nebel 20/26
Kooperation Erlangen Ausblick, Zusammenfassung und Kooperationen P1 Blowfish Pn crypto_object des PolyDyn blowfish P1 AES Pn P1 DES3 Pn des detect create CryptoAlgorithmen blowfish detect destroy o 2 create o 1 Design Space Exploration destroy Schallenberg, Oppenheimer, Nebel 21/26
Kooperation Paderborn Ausblick, Zusammenfassung und Kooperationen Schallenberg, Oppenheimer, Nebel 22/26
Ausblick, Zusammenfassung und Kooperationen Danke für Ihre Aufmerksamkeit! Schallenberg, Oppenheimer, Nebel 23/26
Klassen und Lebenszeiten Ausblick, Zusammenfassung und Kooperationen crypto_object des blowfish des detect create blowfish detect destroy create destroy Schallenberg, Oppenheimer, Nebel 24/26
Warum nicht ausschließlich Identitäten? Ausblick, Zusammenfassung und Kooperationen producer consumer encrypted data input buffer control triple des output buffer plain data static interface reconfigured area Beispiel mit 2 Threads und dem Entschlüsseln von Daten: Produzent: Muß den Algorithmus kennen für die Entschlüsselung Konsument: Gleichgültig, die die Daten entschlüsselt werden Schallenberg, Oppenheimer, Nebel 25/26
Einschränkungen PolyDyn - Polymorphe Objekte Ausblick, Zusammenfassung und Kooperationen Generell ReconObjects kennen die Ports der Module, in denen sie instanziiert werden, nicht. ReconObjects können nur umkonfiguriert werden, wärend kein Zugriff statt findet. Um diese Einschränkungen zu entfernen wäre ein Konzept nötig, daß das starten, stoppen, hinzufügen und entfernen von Prozessen zur Laufzeit gestatten würde. Hierzu ist derzeit kein robustes Konzept mit der gegenwärtigen Umgebung (SystemC Bibliothek, C++ Makroprozessor,...) verfügbar. Schallenberg, Oppenheimer, Nebel 26/26