PolyDyn - Polymorphe Objekte für dynamisch rekonfigurierbare FPGAs

Ähnliche Dokumente
DFG SPPRR 1148 Zwischenkolloquium. PolyDyn. Modellierung rekonfigurierbarer Systeme. Andreas Schallenberg Abteilung EHS, Uni Oldenburg

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Vorlesung Datenstrukturen

II.1.1. Erste Schritte - 1 -

Bounded Model Checking mit SystemC

Entwurf eines FPGA-Cores zur Simulationsbeschleunigung zeitkontinuierlicher Modelle im HiL Kontext

Einstieg in die Informatik mit Java

II.1.1. Erste Schritte - 1 -

High Performance Embedded Processors

Einstieg in die Informatik mit Java

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

II.1.1. Erste Schritte - 1 -

Großer Beleg. Björn Gottschall Dresden,

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Secure Real-time Communication

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

Thread basierte partielle Rekonfiguration von SoC Systemen. Frank Opitz INF-M1 Anwendung 1 - Wintersemester 2009/

Vererbung, Polymorphie

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

VHDL Grundelemente. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

Algorithmen und Datenstrukturen

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Objekt-orientierte Programmierung

Hybride Apps DPR und Android auf dem Xilinx ZYNQ. Endric Schubert, Missing Link Electronics Fabian Zentner, Univ. Ulm

Automatisierte Rekonfiguration von Schnittstellen in eingebetteten Systemen

DyNoC. Konzepte für Temporale On-Chip-Netzwerke. SPP 1148 Zwischenkolloquium 2004 Bad Driburg

HS Technische Informatik

Javakurs für Anfänger

Automatische Verteilung in Pangaea. André Spiegel Freie Universität Berlin

Einstieg in die Informatik mit Java

FPGA Systementwurf. Rosbeh Etemadi. Paderborn University. 29. Mai 2007

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Programmieren in Java -Eingangstest-

Java-Grundkurs für Wirtschaftsinformatiker

ReCoNodes: Optimierungsmethoden zur Steuerung

Effiziente Überwachung von Laufzeiteigenschaften in Soft- und Hardware

Modularisierung in Java: Pakete Software Entwicklung 1

Digital Design 5 Rechnergestützte Schaltungsentwicklung

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Vorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2

Analyse von Ansätzen zur Beschleunigung von SAT - Lösern durch dedizierte Hardware Komponenten

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.

Das Interface-Konzept am Beispiel der Sprache Java

Entwicklung eines FPGA basierten Distributed Computing System. Frank Opitz INF-M3 Seminar - Wintersemester 2010/11 26.

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

1 Klassen und Objekte

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

Pakete Software Entwicklung 1

Ein rekonfigurierbarer Controller für mechatronische Systeme

Zweck: sequentieller Zugriff auf Elemente eines Aggregats

Programmieren in Java

Objektorientierte Programmierung mit Java

Vorkurs Informatik WiSe 15/16

1 Einleitung Generizität Syntax... 2

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Objektorientierte Programmierung (OOP)

COOL HASHING MIT FPGAS. Robert Bachran

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Programmieren 1 09 Vererbung und Polymorphie

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Programmiersprache Java II

Realisierung eines Speichermanagements zur Zugriffsvirtualisierung von konkurrierenden Nutzerdesigns auf Rekonfigurierbarer Hardware

Techniken der Projektentwicklungen

Sommersemester Implementierung I: Struktur

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung

Hyperrekonfigurierbare Hardware - Modelle, Partitionierungsprobleme und Schedulingstrategien

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Kapitel 9: Klassen und höhere Datentypen. Selektoren

7. Objektorientierung. Informatik II für Verkehrsingenieure

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Das Ersetzbarkeitsprinzip

AW2. related work. Benedikt Johannsen INF-M2 Anwendung 2 - Sommersemester Juni 2010

Modul A. Modul B. Bisheriger Ansatz für dynamisch und partiell rekonfigurierbare Systeme. Slot 0 Slot 1. Prozessor. Dynamischer Bereich

Vererbung und Polymorphie

Einführung in die Informatik 1

Programmieren in Java

Objektorientierte Sprachen

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Symmetric Multiprocessing mit einer FPGA basierten. Marco Kirschke INF-M3 Seminar Wintersemester 2010/ November 2010

SOLID für.net und JavaScript

Programmierkurs C++ Polymorphismus

Polymorphie. 15. Java Objektorientierung II

10. GI/ITG/GMM MBMV 2007

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

ReCoNodes Routingbewusste Platzierung von Hardwaremodulen

Transkript:

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