11.07.2015 Aufrufe

Datenflussoptimierung in rekonfigurierbarer Hardware ... - ihmor.de

Datenflussoptimierung in rekonfigurierbarer Hardware ... - ihmor.de

Datenflussoptimierung in rekonfigurierbarer Hardware ... - ihmor.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Universität Pa<strong>de</strong>rbornFakultät für Elektrotechnik, Informatik und MathematikInstitut für Informatik<strong>Datenflussoptimierung</strong> <strong>in</strong><strong>rekonfigurierbarer</strong> <strong>Hardware</strong> durchPipel<strong>in</strong><strong>in</strong>gStudienarbeitStudiengang InformatikvonChristian BehlerLützer Weg 1834439 Willeba<strong>de</strong>ssen-Niesenbetreut durchDipl.-Inform. Stefan Ihmorvorgelegt beiProf. Dr. rer. nat. Franz Josef RammigimMai 2005


Dank und ErklärungDiese Studienarbeit entstand <strong>in</strong> <strong>de</strong>r Arbeitsgruppe von Prof. Dr. rer. nat. Franz JosefRammig (HNI) <strong>de</strong>r Universität Pa<strong>de</strong>rborn.Ich bedanke mich bei Prof. Rammig und vor allem bei Stefan Ihmor, <strong>de</strong>r mich <strong>in</strong> allenPhasen engagiert unterstützt und betreut hat. Außer<strong>de</strong>m danke ich Marion Pauly sowieBritta und Markus Göner für das Korrekturlesen.Hiermit erkläre ich, dass die vorliegen<strong>de</strong> Arbeit selbstständig von mir verfasst wur<strong>de</strong>und ke<strong>in</strong>e an<strong>de</strong>ren als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitatekenntlich gemacht wur<strong>de</strong>n.Niesen, im Mai 20053


Inhaltsverzeichnis1 E<strong>in</strong>führung 111.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.2 Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Grundlagen 152.1 Das FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Interface Block (IFB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 Datenfluss im IFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 IFD-Mapp<strong>in</strong>g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5 Ausführung als Pipel<strong>in</strong>e . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6 Detaillierte Darstellung <strong>de</strong>s IFB Datenflusses . . . . . . . . . . . . . . . . 263 <strong>Datenflussoptimierung</strong> 293.1 Ausführung <strong>de</strong>s IFB als Pipel<strong>in</strong>e . . . . . . . . . . . . . . . . . . . . . . . 293.2 Optimierungskonzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3 Optimierungsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.3.1 framebased schedule . . . . . . . . . . . . . . . . . . . . . . . . . 353.3.2 subframebased schedule . . . . . . . . . . . . . . . . . . . . . . . 373.4 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Rekonfigurierte Ausführung 454.1 I-P-O Schedul<strong>in</strong>g e<strong>in</strong>es rekonfigurierbaren IFB . . . . . . . . . . . . . . . 474.2 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Zusammenfassung und Ausblick 555.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555


Inhaltsverzeichnis6


Abbildungsverzeichnis1.1 Kommunikationsgraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1 FPGA mit Slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 IFB Makrostruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 IFB Datenfluss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 E<strong>in</strong> Basic Block aus e<strong>in</strong>em Protokoll mit Kontroll- und Nutzdaten . . . . 192.5 Funktion <strong>de</strong>s IFD-Mapp<strong>in</strong>gs . . . . . . . . . . . . . . . . . . . . . . . . . 202.6 Aufbau e<strong>in</strong>es PH Mo<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7 E<strong>in</strong> modifizierter PH Mo<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . 242.8 Nutzung von Instanzen und Superframes . . . . . . . . . . . . . . . . . . 253.1 simple Schedule I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2 simple Schedule II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3 E<strong>in</strong>führung von Unterteilungspunkten <strong>in</strong>nerhalb <strong>de</strong>s Input-Frames . . . . 313.4 Beispiel für <strong>de</strong>n Wegfall von Unterteilungspunkten . . . . . . . . . . . . . 333.5 framebased Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6 L<strong>in</strong>ks <strong>de</strong>r ursprüngliche Frame, rechts <strong>de</strong>r Frame mit <strong>de</strong>r <strong>in</strong>ternen Aufteilung<strong>in</strong> die drei Subframes . . . . . . . . . . . . . . . . . . . . . . . . . . 353.7 subframebased Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.8 L<strong>in</strong>ks <strong>de</strong>r ursprüngliche Frame, rechts die Subframes als ’unabhängige’Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.9 simple Schedule mit 8 Bits pro Frame . . . . . . . . . . . . . . . . . . . . 403.10 framebased Schedule mit 2 Subframes mit vier Bits . . . . . . . . . . . . 413.11 subframebased Schedule mit 2 Subframes mit vier Bits . . . . . . . . . . 424.1 Das neue I-P-O Schema mit sechs Stufen . . . . . . . . . . . . . . . . . . 464.2 Schedul<strong>in</strong>g mit beliebig vielen Slots (l<strong>in</strong>ks) und zwei Slots (rechts) [3]. . . 474.3 Die Stages zweier Kommunikationszyklen sowie <strong>de</strong>ren Abhängigkeiten . . 484.4 Der Kommunikationsgraph aus <strong>de</strong>r E<strong>in</strong>leitung . . . . . . . . . . . . . . . 494.5 Zwei Kommunikationszyklen auf e<strong>in</strong>em multi reconfigurable FPGA . . . 494.6 Zwei Kommunikationszyklen auf e<strong>in</strong>em s<strong>in</strong>gle reconfigurable FPGA . . . 504.7 IPO-Schedule: E<strong>in</strong> sen<strong>de</strong>n<strong>de</strong>r und drei empfangen<strong>de</strong> Tasks . . . . . . . . 514.8 IPO-Schedule: Zwei sen<strong>de</strong>n<strong>de</strong> und drei empfangen<strong>de</strong> Tasks . . . . . . . . 514.9 IPO-Schedule: Drei sen<strong>de</strong>n<strong>de</strong> und e<strong>in</strong> empfangen<strong>de</strong>r Tasks . . . . . . . . 527


Abbildungsverzeichnis8


Tabellenverzeichnis2.1 Detaillierte Darstellung <strong>de</strong>s Datenflusses im IFB . . . . . . . . . . . . . . 263.1 Vergleich <strong>de</strong>r Ausführungszeiten <strong>de</strong>r Optimierungsverfahren <strong>in</strong> IFB-Taktenfür e<strong>in</strong>en Frame mit 8 Bit . . . . . . . . . . . . . . . . . . . . . . . . . . 423.2 Vergleich <strong>de</strong>r Ausführungszeiten <strong>de</strong>r Optimierungsverfahren <strong>in</strong> IFB-Taktenfür e<strong>in</strong>en Frame mit 1024 Bit . . . . . . . . . . . . . . . . . . . . . . . . 439


Tabellenverzeichnis10


1 E<strong>in</strong>führung1.1 MotivationKommunikation ist <strong>in</strong> vielen Bereichen e<strong>in</strong> wichtiger Faktor. Neu entwickelte und bereitsbestehen<strong>de</strong> Komponenten müssen <strong>in</strong> <strong>de</strong>r Lage se<strong>in</strong>, Informationen untere<strong>in</strong>an<strong>de</strong>rauszutauschen. Dazu ist es wichtig, dass Komponenten, die mite<strong>in</strong>an<strong>de</strong>r kommunizieren,die gleiche Kommunikationsstruktur verwen<strong>de</strong>n, damit die Informationen korrekt<strong>in</strong>terpretiert und verarbeitet wer<strong>de</strong>n können.Im Bereich <strong>de</strong>r Informationstechnik wird häufig auf bereits bestehen<strong>de</strong> Komponentenzurückgegriffen, um neue Funktionalitäten zu implementieren. Somit ist es oft schwierig,e<strong>in</strong>e geme<strong>in</strong>same Kommunikationstruktur zu f<strong>in</strong><strong>de</strong>n, so dass die e<strong>in</strong>zelnen Teile <strong>de</strong>sGesamtsystems mite<strong>in</strong>an<strong>de</strong>r kommunizieren können. Um dieses Problem zu umgehen,gibt es zwei mögliche Ansätze [7]:• Die verwen<strong>de</strong>ten Komponenten benutzen die gleiche Kommunikationsstruktur un<strong>de</strong><strong>in</strong>e Anpassung ist nicht nötig. Dadurch wird das System unflexibel, da nichtbeliebige Komponenten e<strong>in</strong>gebun<strong>de</strong>n wer<strong>de</strong>n können.• Je<strong>de</strong> Komponente muss e<strong>in</strong> Interface bieten, dass mit e<strong>in</strong>em standardisierten Bussystemkommunizieren kann. Diese Standardisierung kann aber dazu führen, dassKomponenten, die von <strong>de</strong>r Funktionalität her recht kle<strong>in</strong> s<strong>in</strong>d, e<strong>in</strong> recht großesInterface implementieren müssen, um <strong>in</strong> das vorhan<strong>de</strong>ne System <strong>in</strong>tegriert wer<strong>de</strong>nzu können. Somit kann e<strong>in</strong> unverhältnismäßig hoher Aufwand entstehen.Betrachtet man diese Problematik auf <strong>de</strong>r Ebene <strong>de</strong>r E<strong>in</strong>gebetteten Systeme, so existiertdort e<strong>in</strong> weiterer Lösungsansatz. Durch die sogenannte Interface Synthesis (IFS),e<strong>in</strong>er Methodik für die Mo<strong>de</strong>llierung und automatisierte Synthese von Schnittstellen,kann e<strong>in</strong> Modul generiert wer<strong>de</strong>n, welches zwei Kommunikationspartner, zwischen <strong>de</strong>nene<strong>in</strong>e direkte Kommunikation nicht möglich ist, verb<strong>in</strong><strong>de</strong>t. Dieses Modul wird InterfaceBlock(IFB) genannt und fungiert als ”Übersetzer” zwischen <strong>de</strong>n <strong>in</strong>kompatiblenKomponenten. So wird <strong>de</strong>r Austausch von Informationen ermöglicht, ohne dass die Kommunikationspartnermodifiziert wer<strong>de</strong>n müssten.11


1 E<strong>in</strong>führungAbbildung 1.1: KommunikationsgraphAbbildung 1.1 zeigt e<strong>in</strong>en möglichen E<strong>in</strong>satz für <strong>de</strong>n IFB. Es existieren fünf Kommunikationspartner(hier als Task bezeichnet), zwischen <strong>de</strong>nen e<strong>in</strong>e direkte Kommunikationnicht möglich ist. Task 1 will mit Task 3 und Task 4 kommunizieren, Task 2 will Datenan Task 4 und Task 5 sen<strong>de</strong>n. Zwischen je<strong>de</strong>s Kommunikationspaar beschreibt e<strong>in</strong>e Abbildungsvorschrift(hier als Kommunikationsknoten C 1..4 bezeichnet) wie die gelesenenDaten zu transformieren s<strong>in</strong>d, so dass <strong>de</strong>r Empfänger diese korrekt <strong>in</strong>terpretieren kann.E<strong>in</strong>e Abbildungsvorschrift wird auf e<strong>in</strong>en IFB abgebil<strong>de</strong>t, d.h. sie wird dort implementiert.In Kapitel 2 wird <strong>de</strong>r genaue Aufbau <strong>de</strong>s IFBs und <strong>de</strong>ssen Funktionalität erklärt.Es wird auch darauf e<strong>in</strong>gegangen, welche <strong>Hardware</strong> verwen<strong>de</strong>t wer<strong>de</strong>n kann, um dieFunktionalität <strong>de</strong>s IFBs zu realisieren.Die Transformation <strong>de</strong>r Daten im IFB verursacht e<strong>in</strong>e Latenz, da das Sen<strong>de</strong>n undEmpfangen <strong>de</strong>r Daten sowie die Verarbeitung (also die ”Übersetzung”) e<strong>in</strong>e gewisse Zeitbenötigt. Latenz bezeichnet die Zeit, die vom Sen<strong>de</strong>n <strong>de</strong>r Daten bis zum Empfangen<strong>de</strong>r ersten Information vergeht. Daten, die zuerst von e<strong>in</strong>em IFB verarbeitet wer<strong>de</strong>n,kommen also zu e<strong>in</strong>em späteren Zeitpunkt bei <strong>de</strong>n empfangen<strong>de</strong>n Tasks, an als wenn dieDaten direkt gesen<strong>de</strong>t wür<strong>de</strong>n.E<strong>in</strong> weiterer Aspekt bei <strong>de</strong>r Betrachtung <strong>de</strong>s IFBs ist <strong>de</strong>r physikalische Platz auf <strong>de</strong>mChip, <strong>de</strong>r benötigt wird, um die Komponenten <strong>de</strong>s IFBs zu implementieren. Je größere<strong>in</strong> IFB wird, <strong>de</strong>sto mehr Platz benötigt dieser. Große Chips s<strong>in</strong>d allerd<strong>in</strong>gs mit hohenKosten verbun<strong>de</strong>n. Es ist e<strong>in</strong> allgeme<strong>in</strong>es Ziel, diese Kosten so ger<strong>in</strong>g wie möglich zuhalten.12


1.2 Aufgabenstellung1.2 AufgabenstellungAusgehend von <strong>de</strong>r existieren<strong>de</strong>n IFB-Technologie sollen im Rahmen dieser Studienarbeitzwei Verfahren zur Optimierung <strong>de</strong>r Aspekte Latenz und Fläche untersucht wer<strong>de</strong>n.<strong>Datenflussoptimierung</strong> In Kapitel 3 wird die Latenz durch <strong>Datenflussoptimierung</strong> reduziert.Dazu wird versucht, die maximal mögliche Anzahl an E<strong>in</strong>gabe-, VerarbeitungsundAusgabeprozessen parallel laufen zu lassen, damit die empfangenen Datenfrüher verarbeitet und zum Empfänger gesen<strong>de</strong>t wer<strong>de</strong>n können. Um dies zu erreichen,wer<strong>de</strong>n die e<strong>in</strong>gehen<strong>de</strong>n Datenpakete betrachtet. Die tatsächliche Größe,die <strong>de</strong>r IFB auf <strong>de</strong>m Chip, auf <strong>de</strong>m er implementiert ist, benötigt, wird nichtberücksichtigt.Flächenoptimierung Der zweite Ansatz beschäftigt sich mit <strong>de</strong>r optimalen Ausnutzung<strong>de</strong>r Fläche auf <strong>de</strong>m Chip, auf <strong>de</strong>m <strong>de</strong>r IFB implementiert ist. Die Grundlage iste<strong>in</strong> Chip, <strong>de</strong>r zu kle<strong>in</strong> ist, um alle gewünschten Funktionalitäten gleichzeitig unterzubr<strong>in</strong>genund es somit erfor<strong>de</strong>rlich macht, Funktionalitäten zur Laufzeit zu la<strong>de</strong>n.Der Ansatz dazu wird <strong>in</strong> Kapitel 4 vorgestellt.Diese bei<strong>de</strong>n Ansätze s<strong>in</strong>d nicht gleichzeitig realisierbar und zwar aus folgen<strong>de</strong>mGrund: Der erste Ansatz berücksichtigt ke<strong>in</strong>e Restriktionen bezüglich <strong>de</strong>r Größe <strong>de</strong>sIFBs (und somit <strong>de</strong>s Chips). Es wird davon ausgegangen, dass die vollständige IFB-Funktionalität zu je<strong>de</strong>r Zeit vorhan<strong>de</strong>n ist. Der zweite Optimierungsansatz verletzt dieseRestriktion: Die Flächenoptimierung setzt voraus, dass nicht die komplette Funktionalitätenzu je<strong>de</strong>r Zeit vorhan<strong>de</strong>n se<strong>in</strong> muss. Das führt dazu, dass ungenutzte Funktionalitätenverdrängt und durch solche Funktionalitäten ersetzt wer<strong>de</strong>n müssen, die gera<strong>de</strong>benötigt wer<strong>de</strong>n. E<strong>in</strong>e Optimierung <strong>de</strong>s Datenflusses, wie sie <strong>in</strong> Kapitel 3 beschriebenwird, ist dabei nicht möglich, da die Optimierung das Verdrängen und La<strong>de</strong>n von Funktionalitätennicht berücksichtigt. Bei<strong>de</strong> Verfahren wer<strong>de</strong>n anhand von ausgewählten Beispielenbewertet. Abschließend wird <strong>in</strong> Kapitel 5 e<strong>in</strong>e kurze Zusammenfassung gegeben.13


1 E<strong>in</strong>führung14


2 GrundlagenIn diesem Kapitel wer<strong>de</strong>n grundlegen<strong>de</strong> Begriffe erklärt sowie e<strong>in</strong>e E<strong>in</strong>führung <strong>in</strong> dieverwen<strong>de</strong>te <strong>Hardware</strong> und Software gegeben. Dabei wird <strong>in</strong>sbeson<strong>de</strong>re auf Field ProgrammableGate Arrays (siehe Kapitel 2.1) als e<strong>in</strong>e mögliche Zielplattform für IFBse<strong>in</strong>gegangen. Die partielle Rekonfigurierbarkeit dieser <strong>Hardware</strong>plattform ist die Grundlagefür die Flächenoptimierung, die <strong>in</strong> Kapitel 4 vorgestellt wird.2.1 Das FPGAE<strong>in</strong> Field Programmable Gate Array (FPGA) ist e<strong>in</strong> programmierbarer Chip, <strong>de</strong>r e<strong>in</strong>egeeignete Ausführungsplattform für <strong>de</strong>n IFB darstellt. Der Chip kann rekonfiguriertwer<strong>de</strong>n, d.h. Funktionalitäten können zu Laufzeit ausgetauscht wer<strong>de</strong>n. Somit kann dasFPGA auch als Plattform für die rekonfigurierbare Version <strong>de</strong>s IFBs [4] genutzt wer<strong>de</strong>n.Im Folgen<strong>de</strong>n wird e<strong>in</strong> kurzer E<strong>in</strong>blick <strong>in</strong> die Funktionalität von FPGAs gegeben. E<strong>in</strong>e<strong>de</strong>tailliertere Darstellung f<strong>in</strong><strong>de</strong>t sich <strong>in</strong> Kapitel 4.E<strong>in</strong> FPGA besteht aus rekonfigurierbaren E<strong>in</strong>heiten, sogenannten slices. Mehrere slicesergeben e<strong>in</strong>en Rekonfigurierungsblock (RB) o<strong>de</strong>r Slot. In diese Slots können diegewünschten Funktionen (Programme) gela<strong>de</strong>n wer<strong>de</strong>n. Allerd<strong>in</strong>gs benötigt je<strong>de</strong>r Slotsogenannte Bus Macros, die ihn mit <strong>de</strong>n an<strong>de</strong>ren Slots verb<strong>in</strong><strong>de</strong>t. Die Trennung durchBus Macros ist für die Rekonfigurierung notwendig und technisch bed<strong>in</strong>gt.Abbildung 2.1: FPGA mit Slots15


2 GrundlagenSomit ist es möglich, neue Funktionalitäten zur Laufzeit h<strong>in</strong>zuzufügen. Ist die neueFunktionalität komplett gela<strong>de</strong>n, kann diese e<strong>in</strong>fach h<strong>in</strong>zugeschaltet wer<strong>de</strong>n. E<strong>in</strong> weitererVorteil ist die Möglichkeit, vorhan<strong>de</strong>ne Funktionalitäten zu verdrängen. Soll e<strong>in</strong>eAnwendung verdrängt wer<strong>de</strong>n, wer<strong>de</strong>n die Bereiche, die von <strong>de</strong>r auszutauschen<strong>de</strong>n Taskbenutzt wer<strong>de</strong>n, <strong>de</strong>aktiviert. Dann wird die neue Funktionalität gela<strong>de</strong>n und die Bereichewie<strong>de</strong>r aktiviert, so dass die neue Funktionalität genutzt wer<strong>de</strong>n kann.In Abbildung 2.1 ist e<strong>in</strong> partiell rekonfigurierbares FPGA mit e<strong>in</strong>er gela<strong>de</strong>ne Taskabgebil<strong>de</strong>t. Der rechte Slot ist e<strong>in</strong>e nicht austauschbare Komponente (als ’fixed’ gekennzeichnet).Über diesen Slot, <strong>de</strong>r die zentralen und nicht austauschbaren Teile e<strong>in</strong>es IFBsbe<strong>in</strong>haltet, wird die Verb<strong>in</strong>dung zu externen Anwendungen hergestellt. Zusätzlich fungiertdieser Slot als Speicher. Dieser Speicher steht <strong>de</strong>n Anwendungen <strong>in</strong> allen Slots zurVerfügung, da <strong>de</strong>r Inhalt dieses Slots niemals ausgetauscht (also rekonfiguriert) wird.Der fest <strong>in</strong>stallierte Slot enthält im Falle <strong>de</strong>s IFB neben <strong>de</strong>m Speicher im Wesentlichene<strong>in</strong>e Kontrolle<strong>in</strong>heit. Diese wird u.a. für die Steuerung und Überwachung <strong>de</strong>r Rekonfigurierungbenötigt. Denn bevor e<strong>in</strong>e Rekonfigurierung durchgeführt wer<strong>de</strong>n kann, müssene<strong>in</strong>ige Bed<strong>in</strong>gungen erfüllt se<strong>in</strong>. Beispielsweise muss sichergestellt se<strong>in</strong>, dass zum Zeitpunkt<strong>de</strong>r Rekonfigurierung ke<strong>in</strong>e zu rekonfigurieren<strong>de</strong> Komponente aktiv ist. Details zu<strong>de</strong>r Kontrolle<strong>in</strong>heit wer<strong>de</strong>n <strong>in</strong> Kapitel 4 genauer erläutert.2.2 Interface Block (IFB)Im Folgen<strong>de</strong>n wird die eigentliche Anwendung, die auf <strong>de</strong>m FPGA implementiert wer<strong>de</strong>nsoll, näher erläutert. Dazu siehe auch [6] und [5].E<strong>in</strong> Interface Block (IFB) fungiert, wie bereits <strong>in</strong> <strong>de</strong>r E<strong>in</strong>leitung beschrieben, als”Übersetzungskomponente”. Existieren zwei Kommunikationspartner A und B (im Folgen<strong>de</strong>nals Task bezeichnet), <strong>de</strong>ren Kommunikationsstruktur (Protokolle) <strong>in</strong>kompatibels<strong>in</strong>d, so ist generell e<strong>in</strong>e direkte Kommunikation zwischen diesen bei<strong>de</strong>n Tasks nichtmöglich. Der IFB ist <strong>in</strong> <strong>de</strong>r Lage, mit bei<strong>de</strong>n Komponenten zu kommunizieren und dieDaten, die zwischen A und B ausgetauscht wer<strong>de</strong>n, so zu transformieren, dass die empfangen<strong>de</strong>Task die Daten vom sen<strong>de</strong>n<strong>de</strong>n Task verstehen kann. Der IFB ist dabei für Aund B transparent.Wie <strong>in</strong> Abbildung 2.2 dargestellt, besteht <strong>de</strong>r IFB generell aus drei Hauptkomponenten:<strong>de</strong>m Protocol Handler(PH), <strong>de</strong>m Sequence Handler(SH) und <strong>de</strong>r Control Unit(CU).Der Aufbau und die Funktionsweise dieser Komponenten wer<strong>de</strong>n im Folgen<strong>de</strong>n erklärt.Der Protocol Handler ist die Schnittstelle zwischen <strong>de</strong>n externen Tasks und <strong>de</strong>nan<strong>de</strong>ren Komponenten <strong>de</strong>s IFB. Der PH besteht aus e<strong>in</strong>zelnen PH Mo<strong>de</strong>s , die mit jeweils<strong>de</strong>r Schnittstelle e<strong>in</strong>er Task verbun<strong>de</strong>n s<strong>in</strong>d und die Kommunikation mit dieser Taskrealisieren. Um die Daten korrekt zu empfangen, muss <strong>de</strong>r PH Mo<strong>de</strong> das Protokoll <strong>de</strong>r externenTask verarbeiten können. Dazu besteht <strong>de</strong>r Mo<strong>de</strong> aus e<strong>in</strong>er F<strong>in</strong>ite State Mach<strong>in</strong>e(FSM), die das komplementäre Protokoll dieser Task implementiert. Dabei wer<strong>de</strong>n aus<strong>de</strong>m Protokoll, das von <strong>de</strong>r Task empfangen wird, Kontrollbits ausgefiltert, die e<strong>in</strong>enkorrekten Kommunikationsablauf sicherstellen sollen. E<strong>in</strong> PH Mo<strong>de</strong> kann ausschließlichmit <strong>de</strong>r Task kommunizieren, <strong>de</strong>ssen komplementäres Protokoll implementiert wird. Es16


2.2 Interface Block (IFB)Abbildung 2.2: IFB Makrostrukturwird also für je<strong>de</strong> Task, die mit <strong>de</strong>m IFB verbun<strong>de</strong>n s<strong>in</strong>d, e<strong>in</strong> PH Mo<strong>de</strong> benötigt. Die FSM<strong>in</strong>nerhalb <strong>de</strong>s Mo<strong>de</strong>s benötigt noch zusätzliche Zustän<strong>de</strong>, um die Interaktion mit <strong>de</strong>nan<strong>de</strong>ren Komponenten <strong>de</strong>s IFBs zu realisieren.Der Sequence Handler ist die Komponente, die die ”Übersetzung” <strong>de</strong>r Daten vornimmt.Er besteht aus e<strong>in</strong>er Anzahl von SH Mo<strong>de</strong>s und zwei Speichern (Data Rea<strong>de</strong>rund Data Writer). Die SH Mo<strong>de</strong>s bestehen, wie die PH Mo<strong>de</strong>s , aus Automaten und modifizierendie Daten. Das sogenannte IFD-Mapp<strong>in</strong>g(Kapitel 2.4) gibt dabei an, wie dieDaten aus <strong>de</strong>m Data Rea<strong>de</strong>r auf die Daten im Data Writer abzubil<strong>de</strong>n s<strong>in</strong>d. Die bei<strong>de</strong>nSpeicher s<strong>in</strong>d über Datenbusse mit <strong>de</strong>n PH M o<strong>de</strong>s und <strong>de</strong>n SH Mo<strong>de</strong>s verbun<strong>de</strong>n und dienenals Zwischenspeicher für e<strong>in</strong>gehen<strong>de</strong> bzw. ausgehen<strong>de</strong> Datenpakete. Die Größe <strong>de</strong>sSpeichers entspricht genau <strong>de</strong>r Menge an Daten, die empfangen bzw. durch die Transformationgeneriert und nachfolgend versen<strong>de</strong>t wer<strong>de</strong>n. Je<strong>de</strong>s Bit hat dabei e<strong>in</strong>e genaufestgelegte Position <strong>in</strong> <strong>de</strong>m Speicher, <strong>de</strong>r speziell für dieses Szenario synthetisiert wur<strong>de</strong>.Liest e<strong>in</strong> PH Mo<strong>de</strong> e<strong>in</strong> Bit e<strong>in</strong>, so wird die vorhan<strong>de</strong>ne Information an <strong>de</strong>r Stelle diesesBits überschrieben. Die Synthese <strong>de</strong>s Speichers erfolgt aufgrund <strong>de</strong>r Informationen, die<strong>in</strong> <strong>de</strong>m IFD-Mapp<strong>in</strong>g enthalten s<strong>in</strong>d.SH und PH wer<strong>de</strong>n durch die Control Unit koord<strong>in</strong>iert. Die CU ist bspw. für die Arbitrierung<strong>de</strong>r Datenbusse zuständig. Da allgeme<strong>in</strong> davon ausgegangen wird, dass e<strong>in</strong> IFBmit mehreren sen<strong>de</strong>n<strong>de</strong>n und mehreren empfangen<strong>de</strong>n Tasks verbun<strong>de</strong>n ist (Multi-TaskIFB), müssen die Zugriffe zeitlich gesteuert wer<strong>de</strong>n. Dazu existieren die CTRL In Komponenteund die CTRL Out Komponente (bei<strong>de</strong> im Folgen<strong>de</strong>n als Scheduler bezeichnet).Erstere vergibt <strong>de</strong>n Datenbus für e<strong>in</strong>gehen<strong>de</strong> Daten, letztere <strong>de</strong>n Datenbus für ausgehen<strong>de</strong>Daten. Somit wird sichergestellt, dass immer nur e<strong>in</strong> PH Mo<strong>de</strong> Daten <strong>in</strong> <strong>de</strong>n DataRea<strong>de</strong>r schreibt und e<strong>in</strong> PH Mo<strong>de</strong> Daten aus <strong>de</strong>m Data Writer liest. Des weiteren steuertdie CU die Sequence Handler Mo<strong>de</strong>s. Erst wenn die Mo<strong>de</strong>s e<strong>in</strong> entsprechen<strong>de</strong>s Signalvon <strong>de</strong>r CU erhalten, beg<strong>in</strong>nen sie mit <strong>de</strong>r Verarbeitung (Mapp<strong>in</strong>g) <strong>de</strong>r Daten. DiesesSignal wird vom Scoreboard gesen<strong>de</strong>t. Erst wenn durch das Scoreboard entsprechen<strong>de</strong>17


2 GrundlagenSignale gesen<strong>de</strong>t wur<strong>de</strong>n, kann e<strong>in</strong> Scheduler e<strong>in</strong>en Datenbus freigeben o<strong>de</strong>r e<strong>in</strong> SH Mo<strong>de</strong>mit <strong>de</strong>r Transformation <strong>de</strong>r Daten beg<strong>in</strong>nen. In Kapitel 2.5 wird das Scoreboard <strong>de</strong>tailliertererklärt, da es e<strong>in</strong>e wichtige Komponente zur Optimierung darstellt. Die letzteKomponente <strong>in</strong> <strong>de</strong>r CU ist die Reconfiguration Unit. Sie überwacht die Rekonfigurierungund ist e<strong>in</strong>e zentrale Komponente bei <strong>de</strong>r Flächenoptimierung (Kapitel 4).Die Kommunikation zwischen diesen Komponenten erfolgt über e<strong>in</strong> fully <strong>in</strong>terlockedprotocol. Die Funktionsweise <strong>de</strong>r Komponenten wird im folgen<strong>de</strong>n Abschnitt anhan<strong>de</strong><strong>in</strong>es Beispiels ver<strong>de</strong>utlicht2.3 Datenfluss im IFBEs wird von zwei Tasks A und B ausgegangen. Die Tasks besitzen <strong>in</strong>kompatible Protokolle,müssen aber Daten austauschen. Zwischen bei<strong>de</strong>n Tasks wird e<strong>in</strong> IFB e<strong>in</strong>gesetztund mit <strong>de</strong>n bei<strong>de</strong>n Tasks verbun<strong>de</strong>n. Sen<strong>de</strong>t nun Task A Daten, wer<strong>de</strong>n sie vom IFBempfangen.Abbildung 2.3: IFB DatenflussSchritt 1 Der PH Mo<strong>de</strong> A bewirbt sich um <strong>de</strong>n Zugriff auf <strong>de</strong>n Datenbus zum DataRea<strong>de</strong>r. Nach<strong>de</strong>m <strong>de</strong>r Scheduler <strong>de</strong>n Bus zugeteilt hat, wer<strong>de</strong>n die Daten vomPH Mo<strong>de</strong> gelesen.Schritt 2 Der PH Mo<strong>de</strong> leitet die Nutzdaten zum Data Rea<strong>de</strong>r, die dort gespeichert wer<strong>de</strong>n.Schritt 3 Wur<strong>de</strong>n die Daten komplett e<strong>in</strong>gelesen, startet das Scoreboard <strong>de</strong>n entsprechen<strong>de</strong>nSH Mo<strong>de</strong> , <strong>de</strong>r die Daten aus <strong>de</strong>m Data Rea<strong>de</strong>r liest und modifiziert.Schritt 4 Die transformierten Daten wer<strong>de</strong>n <strong>in</strong> <strong>de</strong>n Data Writer geschrieben.Schritt 5 Hat <strong>de</strong>r SH Mo<strong>de</strong> B se<strong>in</strong>e Arbeit been<strong>de</strong>t, kann sich <strong>de</strong>r PH Mo<strong>de</strong> B erfolgreichum <strong>de</strong>n Datenbus zum Data Writer bewerben. Darf <strong>de</strong>r PH Mo<strong>de</strong> <strong>de</strong>n Datenbusbelegen, liest er die Daten aus <strong>de</strong>m Data Writer, <strong>in</strong>tegriert diese <strong>in</strong> das ausgehen<strong>de</strong>Protokoll.Schritt 6 Darauf sen<strong>de</strong>t <strong>de</strong>r PH Mo<strong>de</strong> B die Daten an Task B.18


2 GrundlagenAbbildung 2.4 ist die Darstellung e<strong>in</strong>es Basic Blocks als Matrix. Diese Matrix bestehtaus Zustän<strong>de</strong>n (Spalten) und <strong>de</strong>n Signalen (Zeilen). In <strong>de</strong>n e<strong>in</strong>zelnen Zellen <strong>de</strong>r Matrixs<strong>in</strong>d die Bits e<strong>in</strong>es Protokolls als Redundanz o<strong>de</strong>r Informationen vorhan<strong>de</strong>n. DieRedundanz liegt <strong>in</strong> Form von Kontrollbits (C) vor. Die Informationen enthalten die eigentlichenDatenbits (D). Um das E<strong>in</strong>lesen bzw. Abspeichern <strong>de</strong>r Daten im Data Rea<strong>de</strong>rzu vere<strong>in</strong>fachen, wer<strong>de</strong>n zusammenhängen<strong>de</strong> Bits (also Daten, die sich <strong>in</strong> angrenzen<strong>de</strong>nZellen bef<strong>in</strong><strong>de</strong>n) zu Datenpaketen zusammengefasst. Hierbei wer<strong>de</strong>n zuerst die Zeilennach zusammenhängen<strong>de</strong>n Bits durchlaufen, dann erst die Spalten (<strong>de</strong>swegen ergibtsich im obigen Beispiel das Datenpaket 1 <strong>in</strong> <strong>de</strong>r oberen Zeile und das Datenpaket 2 <strong>in</strong><strong>de</strong>n bei<strong>de</strong>n darunterliegen<strong>de</strong>n). Im nächsten Schritt wer<strong>de</strong>n sogenannte Frames gebil<strong>de</strong>t.Frames enthalten m<strong>in</strong><strong>de</strong>stens e<strong>in</strong> Datenpaket und haben e<strong>in</strong>e e<strong>in</strong><strong>de</strong>utige ID. Überlappensich zwei Datenpakete im gleichen Zustand, wer<strong>de</strong>n diese zu e<strong>in</strong>em e<strong>in</strong>zigen Frame zusammengefasst.Im obigen Beispiel überlappen sich die Datenpakete 1 und 2 und ergeben<strong>de</strong>n Frame A, Datenpaket 3 hat ke<strong>in</strong>e Überschneidung mit an<strong>de</strong>ren Datenpaketen undbil<strong>de</strong>t so <strong>de</strong>n Frame B. Frames kapseln die Daten, die ohne Unterbrechung zwischen PHund SH übertragen wer<strong>de</strong>n. Für diese Übertragung muss <strong>de</strong>r entsprechen<strong>de</strong> Datenbusim IFB zugeteilt wer<strong>de</strong>n. Im Folgen<strong>de</strong>n soll <strong>in</strong> dieser Arbeit davon ausgegangen wer<strong>de</strong>n,dass je<strong>de</strong>r Frame immer exakt e<strong>in</strong> Datenpaket be<strong>in</strong>halte.Das folgen<strong>de</strong> Beispiel be<strong>in</strong>haltet drei <strong>de</strong>r vier Grundoperationen <strong>de</strong>s Mapp<strong>in</strong>gs undsoll die Funktionsweise <strong>de</strong>s IFD-Mapp<strong>in</strong>gs ver<strong>de</strong>utlichen:Abbildung 2.5: Funktion <strong>de</strong>s IFD-Mapp<strong>in</strong>gs20


2.5 Ausführung als Pipel<strong>in</strong>eDie e<strong>in</strong>zelnen Bits <strong>in</strong> Abbildung 2.5 wur<strong>de</strong>n farblich markiert, um zu ver<strong>de</strong>utlichen,was während <strong>de</strong>s Mapp<strong>in</strong>gs geschieht. Die hellblau gefärbten Bits wer<strong>de</strong>n auf die erstenvier Bits <strong>de</strong>s Output-Frames abgebil<strong>de</strong>t. Der Inhalt <strong>de</strong>r nächsten vier Bits wird durche<strong>in</strong>e ’0’ überschrieben und auf die mittleren vier Bitpositionen abgebil<strong>de</strong>t. Die gelbenund grünen Bits wur<strong>de</strong>n bitweise ’&’ verknüpft und die Ergebnisse auf die letzte vierBits abgebil<strong>de</strong>t.Die entsprechen<strong>de</strong>n Mapp<strong>in</strong>gEquations zu diesem Beispiel sehen folgen<strong>de</strong>rmaßen aus.Dabei steht ’P’ für e<strong>in</strong> Datenpaket.• P Out [1:1]


2 GrundlagenE<strong>in</strong>gabe Diese Bed<strong>in</strong>gungen beziehen sich auf die Daten, die von sen<strong>de</strong>n<strong>de</strong>n Tasks empfangenwer<strong>de</strong>n.• E<strong>in</strong> Frame enthält n Datenpakete.• E<strong>in</strong> Ausgangsdatenpaket kann nicht als E<strong>in</strong>gangsdatenpaket genutzt wer<strong>de</strong>n.• Wur<strong>de</strong>n alle Daten im Data Rea<strong>de</strong>r von e<strong>in</strong>em SH Mo<strong>de</strong> gelesen und verarbeitet,kann e<strong>in</strong> neuer Frame gelesen wer<strong>de</strong>n.• Nach<strong>de</strong>m <strong>de</strong>r PH Mo<strong>de</strong> e<strong>in</strong> Frame vollständig e<strong>in</strong>gelesen hat, wird dies <strong>de</strong>mScoreboard gemel<strong>de</strong>t.Verarbeitung Diese Bed<strong>in</strong>gungen beziehen sich auf <strong>de</strong>n Start <strong>de</strong>r Verarbeitung. Diesedarf beg<strong>in</strong>nen, wenn alle Daten vorhan<strong>de</strong>n s<strong>in</strong>d.• Sobald alle für e<strong>in</strong>en Sequence Handler Mo<strong>de</strong> notwendigen Datenpakete vollständigim Data Rea<strong>de</strong>r s<strong>in</strong>d und alle entsprechen<strong>de</strong>n Daten im Data Writer gesen<strong>de</strong>twur<strong>de</strong>n, startet das Scoreboard <strong>de</strong>n entsprechen<strong>de</strong>n SH Mo<strong>de</strong> .Ausgabe Hier prüft das Scoreboard, ob Daten versen<strong>de</strong>t wer<strong>de</strong>n dürfen.• E<strong>in</strong> Frame kann ausgegeben wer<strong>de</strong>n, wenn <strong>de</strong>r SH Mo<strong>de</strong> been<strong>de</strong>t ist und alleabgebil<strong>de</strong>ten Daten im Data Writer abgespeichert wur<strong>de</strong>n.Das Scoreboard ist damit e<strong>in</strong>e zentrale Komponente, die die Befolgung <strong>de</strong>s I-P-OSchemas und damit die Kausalität <strong>de</strong>s Datenverkehrs kontrolliert. Es wertet die Kontrollsignale<strong>de</strong>r beteiligten Komponenten aus und verh<strong>in</strong><strong>de</strong>rt o<strong>de</strong>r lässt zu, dass e<strong>in</strong>PH Mo<strong>de</strong> o<strong>de</strong>r SH Mo<strong>de</strong> mit se<strong>in</strong>er Ausführung fortfahren kann. Es existieren allerd<strong>in</strong>gsSzenarien, <strong>in</strong> <strong>de</strong>nen das I-P-O Schema nicht e<strong>in</strong>gehalten wer<strong>de</strong>n kann. Um die Problematikund <strong>de</strong>ren Lösung zu ver<strong>de</strong>utlichen, wird zunächst <strong>de</strong>r allgeme<strong>in</strong>e Aufbau e<strong>in</strong>esPH Mo<strong>de</strong>s gezeigt.22


2.5 Ausführung als Pipel<strong>in</strong>eAbbildung 2.6: Aufbau e<strong>in</strong>es PH Mo<strong>de</strong>sAbbildung 2.6 zeigt e<strong>in</strong>en beispielhaften PH Mo<strong>de</strong> , <strong>de</strong>ssen Automat e<strong>in</strong>en Start Zustandhat, aus <strong>de</strong>m <strong>in</strong> <strong>de</strong>n eigentlichen Lesevorgang gewechselt wird. In Establish Bus Incommunication for<strong>de</strong>rt <strong>de</strong>r PH Mo<strong>de</strong> <strong>de</strong>n Buszugriff an. Mit e<strong>in</strong>em e<strong>in</strong>maligen Durchlaufkann <strong>de</strong>r Input-Frame <strong>de</strong>s blau umran<strong>de</strong>ten Basic Blocks genau e<strong>in</strong>mal gelesen wer<strong>de</strong>n.Nach <strong>de</strong>m Lesen wird <strong>de</strong>r Datenbus <strong>in</strong> <strong>de</strong>m Zustand Release Bus In communicationwie<strong>de</strong>r frei gegeben.Problematisch wäre nun e<strong>in</strong> Szenario, <strong>in</strong> <strong>de</strong>m e<strong>in</strong> Input-Frame zweimal gelesen wer<strong>de</strong>nmuss, um alle benötigten Daten für e<strong>in</strong>en Output-Frame e<strong>in</strong>zulesen. Somit müsste <strong>de</strong>rBasic Block, <strong>de</strong>r <strong>de</strong>n Input-Frame be<strong>in</strong>haltet, zweimal ausgeführt wer<strong>de</strong>n.Ebenso wäre e<strong>in</strong> Szenario <strong>de</strong>nkbar, <strong>in</strong> <strong>de</strong>m für e<strong>in</strong>en Input-Frame mehrere Instanzene<strong>in</strong>es Output-Frames notwendig wären. Das wür<strong>de</strong> implizieren, dass auch das Process<strong>in</strong>gmehrfach ausgeführt wer<strong>de</strong>n müsste. Der Scheduler im IFB lässt nur die e<strong>in</strong>maligeAusführung <strong>de</strong>s Inputs, Process<strong>in</strong>gs und Outputs pro Kommunikationszyklus zu. Wennalso <strong>in</strong>nerhalb e<strong>in</strong>er Abbildungsvorschrift mehrere Instanzen e<strong>in</strong>es Frames benötigt wer<strong>de</strong>n,erfor<strong>de</strong>rt dies e<strong>in</strong>e Modifikation <strong>de</strong>r PH Mo<strong>de</strong>s .23


2 Grundlagen24Abbildung 2.7: E<strong>in</strong> modifizierter PH Mo<strong>de</strong>s


2.5 Ausführung als Pipel<strong>in</strong>eAbbildung 2.8: Nutzung von Instanzen und SuperframesIn Abbildung 2.7 ist e<strong>in</strong> modifizierter PH Mo<strong>de</strong> zu sehen. Dieser PH Mo<strong>de</strong> besitzt e<strong>in</strong>enAutomaten, <strong>in</strong> <strong>de</strong>m e<strong>in</strong> Basic Block ”verdoppelt” wur<strong>de</strong>. Das führt dazu, dass <strong>de</strong>r ursprünglicheBasic Block zweimal direkt h<strong>in</strong>tere<strong>in</strong>an<strong>de</strong>r ausgeführt wird. Die ”Vervielfachung”e<strong>in</strong>es Basic Blocks ist immer dann erlaubt, wenn e<strong>in</strong> Basic Block e<strong>in</strong>e Selbsttransitionbesitzt. Der durch diese Transformation entstan<strong>de</strong>ne Frame wird als Superframebezeichnet und erlaubt es, mehrere Instanzen e<strong>in</strong>es Pakets zu lesen bzw. zu schreiben.Abbildung 2.8 zeigt e<strong>in</strong> Szenario, <strong>in</strong> <strong>de</strong>m durch die Verwendung von Superframes dasI-P-O Schema e<strong>in</strong>gehalten wer<strong>de</strong>n kann. Das Beispiel zeigt e<strong>in</strong>en relativ großen Input-Frame, <strong>de</strong>r <strong>in</strong> drei Instanzen <strong>de</strong>s Output-Frames versen<strong>de</strong>t wer<strong>de</strong>n soll. Hierbei wur<strong>de</strong><strong>de</strong>r Superframe durch die Verdreifachung <strong>de</strong>s Basic Blocks gebil<strong>de</strong>t.25


2 Grundlagen2.6 Detaillierte Darstellung <strong>de</strong>s IFB DatenflussesUm die nachfolgen<strong>de</strong> Optimierung <strong>de</strong>r Latenz besser verstehen zu können, wird <strong>in</strong> diesemAbschnitt noch e<strong>in</strong>mal ausführlich <strong>de</strong>r Datenfluss <strong>de</strong>s IFB betrachtet. Dazu wer<strong>de</strong>n diee<strong>in</strong>zelnen Aktionen aufgeführt, um die Interaktion zwischen <strong>de</strong>n e<strong>in</strong>zelnen Komponenten<strong>in</strong>klusive <strong>de</strong>s fully <strong>in</strong>terlocked protocol aufzuzeigen.Takt Phase Aktion Komponente1 1 SetFrameId PH Mo<strong>de</strong>2 1 SetIRQ PH Mo<strong>de</strong>3 1 GrantBus CTRL In4 2 Daten lesen PH Mo<strong>de</strong>5 2 SetDR PH Mo<strong>de</strong>6 2 Daten <strong>in</strong> Speicher übernehmen Data Rea<strong>de</strong>r7 2 SetDA Data Rea<strong>de</strong>r8 2 ResetDR PH Mo<strong>de</strong>9 2 ResetDA Data Rea<strong>de</strong>r10 3 ResetIRQ PH Mo<strong>de</strong>11 3 AssignFrame or ReleaseBus CTRL In12 3 Frame wird <strong>in</strong> P <strong>in</strong> Register übernommen CU13 4 ModifyData SH Mo<strong>de</strong>14 4 Set SH Mo<strong>de</strong> Complete SH Mo<strong>de</strong>15 4 Set SH Mo<strong>de</strong> Complete CU16 5 SetFrameId PH Mo<strong>de</strong>17 5 SetIRQ PH Mo<strong>de</strong>18 5 GrantBus CTRL Out19 6 SetDR PH Mo<strong>de</strong>20 6 Daten auf Datenbus DataWriter21 6 SetDA Data Writer22 6 Daten schreiben PH Mo<strong>de</strong>23 6 ResetDR PH Mo<strong>de</strong>24 6 ResetDA Data Writer25 7 ResetIRQ PH Mo<strong>de</strong>26 7 AssignFrame or ReleaseBus CU27 7 Reset SH Mo<strong>de</strong> Complete ScoreboardTabelle 2.1: Detaillierte Darstellung <strong>de</strong>s Datenflusses im IFBDie Tabelle 2.1 beschreibt Taktzyklen-genau das E<strong>in</strong>lesen, das Verarbeiten und dasSen<strong>de</strong>n e<strong>in</strong>es Frames mit jeweils e<strong>in</strong>em Bit. Dabei können sieben Phasen unterschie<strong>de</strong>nwer<strong>de</strong>n. Die 27 Schritte wur<strong>de</strong>n direkt aus <strong>de</strong>n kommunizieren<strong>de</strong>n Automaten <strong>de</strong>s IFBsabgeleitet und beschreiben die präzise Übertragung e<strong>in</strong>es Frames. Die Schritte stellene<strong>in</strong>e Verfe<strong>in</strong>erung <strong>de</strong>s <strong>in</strong> Kapitel 2.3 angegebenen Datenflusses dar.26


2.6 Detaillierte Darstellung <strong>de</strong>s IFB DatenflussesPhase 1 – Establish Die erste Phase (Takt e<strong>in</strong>s bis drei) be<strong>in</strong>haltet das Festlegen <strong>de</strong>rFrame ID und die Bewerbung um <strong>de</strong>n Datenbus.Phase 2 – Read In <strong>de</strong>r zweiten Phase (Takt vier bis neun) läuft <strong>de</strong>r eigentliche Lesevorgang<strong>de</strong>r Daten ab. Diese Phase vervielfacht sich je nach Anzahl <strong>de</strong>r e<strong>in</strong>zulesen<strong>de</strong>nBits.Phase 3 – Release Das E<strong>in</strong>lesen wur<strong>de</strong> abgeschlossen und <strong>de</strong>r Datenbus wird wie<strong>de</strong>rfreigegeben (Takt zehn bis zwölf).Phase 4 – Process In <strong>de</strong>n Takten 13 bis 15 wer<strong>de</strong>n die Daten modifiziert und abgespeichert.Phase 5 – Establish Nun sollen die Daten an die empfangsbereite Task gesen<strong>de</strong>t wer<strong>de</strong>n.Dazu wird <strong>de</strong>r Datenbus benötigt. Dazu wer<strong>de</strong>n (wie beim E<strong>in</strong>lesen) dreiTakte benötigt.Phase 6 – Write Takte 19 bis 24 beschreiben das Schreiben e<strong>in</strong>es Bits zu e<strong>in</strong>er empfangsbereitenTask. Wer<strong>de</strong>n mehrere Bits geschrieben, müssen diese sechs Taktefür je<strong>de</strong>s Bit wie<strong>de</strong>rholt wer<strong>de</strong>n.Phase 7 – Release Das Sen<strong>de</strong>n <strong>de</strong>r Daten ist abgeschlossen und die letzten drei Taktegeben u.a. <strong>de</strong>n Datenbus wie<strong>de</strong>r frei.Die ersten drei Phasen Establish, Read und Release s<strong>in</strong>d Teil je<strong>de</strong>r Input Stage,die Phase Process steht für die gleichnamige Stage im I-P-O Schema. Die letzten dreiPhasen wer<strong>de</strong>n <strong>de</strong>r Output Stage zugeordnet.27


2 Grundlagen28


3.2 OptimierungskonzeptDas Schedul<strong>in</strong>g <strong>in</strong> <strong>de</strong>n Abbildungen 3.1 und 3.2 vorgestellten Kommunikationszyklenlässt sich nicht weiter optimieren, wenn man davon ausgeht, dass die repräsentiertenFrames ke<strong>in</strong>e Superframes s<strong>in</strong>d. Das be<strong>de</strong>utet, dass <strong>in</strong>nerhalb <strong>de</strong>r Input und OutputStage jeweils genau e<strong>in</strong>e Instanz <strong>de</strong>r ursprünglichen Frames enthalten ist.3.2 OptimierungskonzeptDie <strong>Datenflussoptimierung</strong> zur Reduzierung <strong>de</strong>r Latenz nutzt e<strong>in</strong>e Beson<strong>de</strong>rheit <strong>de</strong>s I–P–O Schemas aus. E<strong>in</strong>e Optimierung <strong>de</strong>r Latenz <strong>de</strong>s IFB ist möglich, wenn bed<strong>in</strong>gt durchdas IFD-Mapp<strong>in</strong>g e<strong>in</strong> Superframe für die Output Stage und damit auch für die Process<strong>in</strong>gStage vorliegt. Wie <strong>in</strong> Kapitel 2.4 beschrieben, wer<strong>de</strong>n <strong>in</strong> e<strong>in</strong>em solchen Fall e<strong>in</strong>egroße Menge e<strong>in</strong>gehen<strong>de</strong>r Daten e<strong>in</strong>es e<strong>in</strong>zigen Frames auf mehrere Instanzen kle<strong>in</strong>ererausgehen<strong>de</strong>r Frames abgebil<strong>de</strong>t, die zu e<strong>in</strong>em Superframe zusammengefasst wer<strong>de</strong>n. InAbbildung 3.3 ist e<strong>in</strong> solches Szenario dargestellt.Abbildung 3.3: E<strong>in</strong>führung von Unterteilungspunkten <strong>in</strong>nerhalb <strong>de</strong>s Input-Frames31


3 <strong>Datenflussoptimierung</strong>Das Beispiel <strong>in</strong> Abbildung 3.3 zeigt, dass die Möglichkeit besteht, dass die Daten <strong>de</strong>rersten Instanz im Output-Superframe bereits vollständig e<strong>in</strong>gelesen wur<strong>de</strong>n (beim erstenUnterteilungspunkt), bevor das letzte Bit <strong>de</strong>s Input-Frames im IFB e<strong>in</strong>trifft.Es wer<strong>de</strong>n <strong>in</strong> diesem Beispiel 16 Bits sequentiell e<strong>in</strong>gelesen und e<strong>in</strong> Superframe bestehendaus drei Instanzen mit je vier parallelen Bits versen<strong>de</strong>t. Die erste Instanz benötigtdie Bits A, D, G und H <strong>de</strong>s Input-Frames. Der SH Mo<strong>de</strong> kann die Verarbeitung dieser vierBits starten, sobald diese im Speicher abgelegt s<strong>in</strong>d (beim ersten Unterteilungspunkt).Dann versen<strong>de</strong>t <strong>de</strong>r entsprechen<strong>de</strong> PH Mo<strong>de</strong> die erste Instanz <strong>de</strong>s Superframes. S<strong>in</strong>d dieBits B, C, E und J komplett e<strong>in</strong>gelesen (zweiter Unterteilungspunkt), können diese verarbeitetund die zweite Instanz kann versen<strong>de</strong>t wer<strong>de</strong>n. Ist <strong>de</strong>r Input-Frame komplette<strong>in</strong>gelesen (letzter Unterteilungspunkt), s<strong>in</strong>d auch die Informationen für die letzte Instanzvorhan<strong>de</strong>n, so dass diese transformiert und dann <strong>in</strong> das ausgehen<strong>de</strong> Protokoll<strong>in</strong>tegriert wer<strong>de</strong>n können.Um festzustellen, wann alle benötigten Daten für e<strong>in</strong>e Instanz im Output-Superframevollständig e<strong>in</strong>gelesen s<strong>in</strong>d, wird das IFD-Mapp<strong>in</strong>g analysiert, das <strong>in</strong> Kapitel 2.4 vorgestelltwur<strong>de</strong>. Da das IFD-Mapp<strong>in</strong>g die Informationen be<strong>in</strong>haltet, welche Bits aus <strong>de</strong>mInput-Frame auf welche Bitpositionen <strong>de</strong>s Output-Superframes gemappt wer<strong>de</strong>n, kanndaraus abgeleitet wer<strong>de</strong>n, wann frühestens mit <strong>de</strong>m Process<strong>in</strong>g <strong>de</strong>r Daten e<strong>in</strong>er Instanz<strong>in</strong>nerhalb <strong>de</strong>s Output-Superframes begonnen wer<strong>de</strong>n kann. Aus diesen Informationenergeben sich die Unterteilungspunkte.Somit lässt sich für je<strong>de</strong> Instanz <strong>in</strong>nerhalb <strong>de</strong>s Output-Superframes ableiten, wann mit<strong>de</strong>r Verarbeitung <strong>de</strong>r e<strong>in</strong>gehen<strong>de</strong>n Daten begonnen wer<strong>de</strong>n kann. Die <strong>Datenflussoptimierung</strong>besteht also dar<strong>in</strong>, e<strong>in</strong>en ”großen” e<strong>in</strong>gehen<strong>de</strong>n Frame <strong>in</strong> mehrere Abschnitte zuunterteilen und diese dann frühzeitig zur berechnen und auszugeben. Diese Abschnittewer<strong>de</strong>n im Folgen<strong>de</strong>n als Subframes bezeichnet. Diese Subframes stellen e<strong>in</strong>en genau spezifiziertenTeil e<strong>in</strong>es Frames dar, d.h. je<strong>de</strong>r Subframe ist genau e<strong>in</strong>em Frame zugeordnetund be<strong>in</strong>haltet e<strong>in</strong>en Abschnitt zwischen zwei Unterteilungspunkten. Da e<strong>in</strong> Subframebei e<strong>in</strong>em Unterteilungspunkt beg<strong>in</strong>nt und beim nächsten aufhört, ist es nicht möglich,dass Subframes sich überlappen.⋂ Subframes = ∅Damit ergibt sich als alternative Beschreibung für e<strong>in</strong>en FrameFrame = ⋃ Subframes.32


3.2 OptimierungskonzeptAllerd<strong>in</strong>gs müssen zwei Bed<strong>in</strong>gungen e<strong>in</strong>gehalten wer<strong>de</strong>n, damit die Unterteilung <strong>de</strong>sFrames <strong>in</strong> Subframes erfolgen kann:• Der Input-Frame be<strong>in</strong>haltet Informationen für mehr als e<strong>in</strong>en Output-Frame, sodass mehrere Instanzen benötigt wer<strong>de</strong>n. Besteht die Ausgabe dagegen aus nure<strong>in</strong>em Frame, müssen alle Daten e<strong>in</strong>gelesen wer<strong>de</strong>n und es ergeben sich ke<strong>in</strong>e Unterteilungspunkte.• Der Input-Frame muss e<strong>in</strong>e serielle Folge von Datenbits be<strong>in</strong>halten. Ist diese Bed<strong>in</strong>gungnicht erfüllt, d.h. s<strong>in</strong>d alle E<strong>in</strong>gangsdaten parallel, wer<strong>de</strong>n sie gleichzeitige<strong>in</strong>gelesen. E<strong>in</strong>e Unterteilung ist somit nicht möglich.S<strong>in</strong>d diese Bed<strong>in</strong>gungen erfüllt, können anhand <strong>de</strong>r Unterteilungspunkte die Subframes<strong>de</strong>f<strong>in</strong>iert wer<strong>de</strong>n: Der erste Input-Subframe beg<strong>in</strong>nt am Anfang <strong>de</strong>s Input-Frames undreicht bis zum ersten Unterteilungspunkt (siehe Abbildung 3.3). Daran schließt sich <strong>de</strong>rzweite Subframe bis zum nächsten Unterteilungspunkt an, daran wie<strong>de</strong>rum <strong>de</strong>r dritteusw.Abbildung 3.4: Beispiel für <strong>de</strong>n Wegfall von Unterteilungspunkten33


3 <strong>Datenflussoptimierung</strong>Dabei kann es zu folgen<strong>de</strong>r Situation kommen: Abbildung 3.4 ist e<strong>in</strong>e Modifikation<strong>de</strong>r Abbildung 3.3. In diesem Beispiel s<strong>in</strong>d die Daten für die zweite Instanz bereits vor<strong>de</strong>m Unterteilungspunkt <strong>de</strong>r ersten Instanz e<strong>in</strong>gelesen. Die Reihenfolge, <strong>in</strong> <strong>de</strong>r Subframesverarbeitet wer<strong>de</strong>n, ist aber fest vorgegeben. Dadurch entfällt <strong>de</strong>r Unterteilungspunktfür die zweite Instanz. Erst nach<strong>de</strong>m <strong>de</strong>r erste Unterteilungspunkt erreicht ist, kann dieerste Instanz ausgeführt wer<strong>de</strong>n. Da die Daten für die zweite Instanz bereits vollständigvorliegen, können diese direkt im Anschluss an die erste Instanz transformiert wer<strong>de</strong>n.E<strong>in</strong> Nachteil dieses Optimierungsansatzes besteht im Folgen<strong>de</strong>n: Benötigt e<strong>in</strong>e InstanzDaten, die erst am En<strong>de</strong> <strong>de</strong>s Input-Frames e<strong>in</strong>gelesen wer<strong>de</strong>n, so reduziert sich <strong>de</strong>rOptimierungseffekt, da alle nachfolgen<strong>de</strong>n Instanzen erst dann ausgeführt wer<strong>de</strong>n dürfen,wenn die Informationen für <strong>de</strong>n Vorgänger komplett e<strong>in</strong>gelesen und transformiert s<strong>in</strong>d.Der schlimmste anzunehmen<strong>de</strong> Fall ist <strong>de</strong>r, dass die erste Output-Frame-Instanz dasletzte e<strong>in</strong>zulesen<strong>de</strong> Bit benötigt. In diesem Fall ist <strong>de</strong>r Optimierungseffekt gleich Null,da die Verarbeitung erst nach <strong>de</strong>m E<strong>in</strong>lesen <strong>de</strong>s letzten Bits beg<strong>in</strong>nt.Um die Aufteilung <strong>de</strong>r Input-Frames <strong>in</strong> <strong>de</strong>r automatischen Generierung zu realisieren,existieren zwei Möglichkeiten. Die erste Möglichkeit be<strong>in</strong>haltet das E<strong>in</strong>führen von SubframeIDs. E<strong>in</strong>e Subframe ID wird genau e<strong>in</strong>em Subframe zugeordnet. Somit s<strong>in</strong>d dieSubframes e<strong>in</strong><strong>de</strong>utig i<strong>de</strong>ntifizierbar und unterscheidbar. Diese Verwendung <strong>de</strong>r SubframeIDs kann dazu genutzt wer<strong>de</strong>n, um festzustellen, wann e<strong>in</strong> Subframe komplett e<strong>in</strong>gelesenwur<strong>de</strong>. Wird das En<strong>de</strong> e<strong>in</strong>es Subframes beim E<strong>in</strong>lesen erreicht, wird die Subframe ID<strong>in</strong>krementiert. Das ist das Signal, dass die Daten für die nächste Output-Frame-Instanzvorhan<strong>de</strong>n s<strong>in</strong>d und transformiert wer<strong>de</strong>n können.Die zweite Möglichkeit besteht dar<strong>in</strong>, dass <strong>de</strong>r PH Mo<strong>de</strong> nach <strong>de</strong>m E<strong>in</strong>lesen e<strong>in</strong>es Subframes<strong>de</strong>n Datenbus wie<strong>de</strong>r freigibt (Release) und sich dann für <strong>de</strong>n neuen Subframeerneut darum bewirbt. E<strong>in</strong> Frame wird somit nicht als Menge von Subframes verarbeitet,son<strong>de</strong>rn als Menge von kle<strong>in</strong>en Frames angesehen. Dabei geht die e<strong>in</strong><strong>de</strong>utige Zuordnunge<strong>in</strong>es Subframes zu e<strong>in</strong>em Frame nicht verloren!3.3 OptimierungsverfahrenIn <strong>de</strong>n bei<strong>de</strong>n folgen<strong>de</strong>n Abschnitten wer<strong>de</strong>n zwei Optimierungsansätze für das Beispielaus Abbildung 3.3 präsentiert. Die bei<strong>de</strong>n Ansätze resultieren aus <strong>de</strong>n bei<strong>de</strong>n Möglichkeiten,die Subframes zu realisieren.34


3.3 Optimierungsverfahren3.3.1 framebased scheduleAbbildung 3.5: framebased ScheduleDieses Verfahren verwen<strong>de</strong>t die Subframe IDs. Wie bereits beschrieben, wird je<strong>de</strong>mSubframe e<strong>in</strong>e solche ID zugewiesen, um die e<strong>in</strong>zelnen Subframes vone<strong>in</strong>an<strong>de</strong>r zu unterschei<strong>de</strong>n.Kontrolliert und verwaltet wer<strong>de</strong>n die Subframe IDs vom PH Mo<strong>de</strong> , <strong>de</strong>r an <strong>de</strong>nUnterteilungspunkten die Subframe ID <strong>in</strong>krementiert. Es ergibt sich folgen<strong>de</strong> Struktur:Abbildung 3.6: L<strong>in</strong>ks <strong>de</strong>r ursprüngliche Frame, rechts <strong>de</strong>r Frame mit <strong>de</strong>r <strong>in</strong>ternen Aufteilung<strong>in</strong> die drei Subframes35


3 <strong>Datenflussoptimierung</strong>Wie <strong>in</strong> Abbildung 3.6 sichtbar, bleibt <strong>de</strong>r Frame als solcher erhalten, es wer<strong>de</strong>n nurAbschnitte (die Subframes) <strong>in</strong> diesem Frame <strong>de</strong>f<strong>in</strong>iert.Hat e<strong>in</strong> PH Mo<strong>de</strong> e<strong>in</strong>en Subframe komplett e<strong>in</strong>gelesen, muss <strong>de</strong>r SH Mo<strong>de</strong> , <strong>de</strong>r die Datenaus diesem Subframe transformiert, darüber <strong>in</strong>formiert wer<strong>de</strong>n. Dazu sen<strong>de</strong>t <strong>de</strong>r PH Mo<strong>de</strong>über e<strong>in</strong>e neue Leitung, die zwischen <strong>de</strong>m PH Mo<strong>de</strong> und <strong>de</strong>m SH Mo<strong>de</strong> e<strong>in</strong>gerichtet wird,e<strong>in</strong> entsprechen<strong>de</strong>s Signal an <strong>de</strong>n SH Mo<strong>de</strong> . Diese zusätzliche Leitung fungiert als Bypasszur CU und ist notwendig, da das Scoreboard e<strong>in</strong>en Start <strong>de</strong>s SH Mo<strong>de</strong>s erst dann zulassenwür<strong>de</strong>, wenn <strong>de</strong>r komplette Frame e<strong>in</strong>gelesen ist. Zusätzlich benötigt <strong>de</strong>r PH Mo<strong>de</strong> e<strong>in</strong>eErweiterung <strong>de</strong>r Zustän<strong>de</strong>, um die Subframe IDs zu verwalten und <strong>de</strong>n Subframes zuzuweisen.Dabei kann die bereits vorhan<strong>de</strong>ne Frame ID erweitert wer<strong>de</strong>n, so dass sie auchdie Subframe ID enthält. Die CU muss <strong>de</strong>rart modifiziert wer<strong>de</strong>n, dass <strong>de</strong>r SH Mo<strong>de</strong> bereitsdann aktiviert wird, sobald <strong>de</strong>r Datenbus vom PH Mo<strong>de</strong> arbitriert wur<strong>de</strong>, damit <strong>de</strong>rSH Mo<strong>de</strong> rechtzeitig schon während <strong>de</strong>s E<strong>in</strong>lesens mit <strong>de</strong>r Verarbeitung beg<strong>in</strong>nen kann.Der SH Mo<strong>de</strong> benötigt zusätzliche Zustän<strong>de</strong>, um die Subframe ID auszuwerten. Nach<strong>de</strong>r Verarbeitung e<strong>in</strong>es Subframes wartet <strong>de</strong>r SH Mo<strong>de</strong> mit <strong>de</strong>r weiteren Verarbeitung darauf,dass <strong>de</strong>r PH Mo<strong>de</strong> die Subframe ID <strong>in</strong>krementiert.Input Bed<strong>in</strong>gungWie im simple Schedule müssen auch bei diesem Optimierungsansatz bestimmte Bed<strong>in</strong>gungene<strong>in</strong>gehalten wer<strong>de</strong>n, die durch die L<strong>in</strong>ien <strong>in</strong> Abbildung 3.5 ver<strong>de</strong>utlicht wer<strong>de</strong>n.Die erste Input Stage e<strong>in</strong>es Kommunikationszyklus darf erst dann begonnen wer<strong>de</strong>n,wenn alle Verarbeitungsphasen aus <strong>de</strong>m vorigen Zyklus been<strong>de</strong>t wur<strong>de</strong>n. In Abbildung3.5 ist diese Bed<strong>in</strong>gung zum Zeitpunkt t 1 erfüllt. E<strong>in</strong> verfrühtes E<strong>in</strong>lesen könnteDaten im Data Rea<strong>de</strong>r überschreiben, die noch nicht von e<strong>in</strong>em SH Mo<strong>de</strong> verarbeitetwur<strong>de</strong>n.• Input(x.1) 2 nach Process(x-1.L) 3Process<strong>in</strong>g Bed<strong>in</strong>gungenE<strong>in</strong>e Process<strong>in</strong>g Stage darf – gemäß <strong>de</strong>m I-P-O Schema – erst dann ausgeführt wer<strong>de</strong>n,wenn die dazugehörige Input Stage been<strong>de</strong>t wur<strong>de</strong>. Bspw. muss P2.1 auf I2.1 warten(t 3 ). Analog zum simple Schedule gilt außer<strong>de</strong>m die Bed<strong>in</strong>gung, dass die Output Stage<strong>de</strong>s vorigen Zyklus been<strong>de</strong>t se<strong>in</strong> muss, um das Überschreiben nicht gesen<strong>de</strong>ter Datenzu vermei<strong>de</strong>n (t 2 ). Bei<strong>de</strong> Bed<strong>in</strong>gungen s<strong>in</strong>d <strong>in</strong> Abbildung 3.5 durch die roten Strichegekennzeichnet.• Process(x.1) nach Output(x-1.L)• Process(x.y) nach Input(x.y)2 die erste Ziffer beschreibt wie<strong>de</strong>r die Nummer <strong>de</strong>s Kommunikationszyklus, die zweite Ziffer die Nummer<strong>de</strong>s Subframes3 das L kennzeichnet <strong>de</strong>n letzten Subframe e<strong>in</strong>er Stage, <strong>in</strong> diesem Fall wäre dies Process(x-1.3)36


3.3 OptimierungsverfahrenOutput Bed<strong>in</strong>gungDie Ausführung <strong>de</strong>r Output Stage richtet sich wie<strong>de</strong>rum nach <strong>de</strong>m En<strong>de</strong> <strong>de</strong>r zugehörigenProcess<strong>in</strong>g Stage. O2.1 darf nicht gestartet wer<strong>de</strong>n, bevor P2.1 been<strong>de</strong>t wur<strong>de</strong>. DieseBed<strong>in</strong>gung wird durch das Scoreboard kontrolliert, da sie durch die Kausalität im I-P-OSchema vorgegeben ist.• Output(x.y) nach Process(x.y)Somit kann e<strong>in</strong>e Verbesserung erreicht wer<strong>de</strong>n. Die Verarbeitung <strong>in</strong> e<strong>in</strong>em Kommunikationszykluskann früher begonnen wer<strong>de</strong>n (nämlich nach <strong>de</strong>m ersten Subframe), wasdazu führt, dass die komplette Verarbeitung früher been<strong>de</strong>t wird. Das wie<strong>de</strong>rum wirktsich auf <strong>de</strong>n nächsten Kommunikationszyklus aus, <strong>de</strong>r ja genau diesen Zeitpunkt abwartenmuss, bevor das Input beg<strong>in</strong>nen kann. Allerd<strong>in</strong>gs müssen dafür Subframe IDs <strong>de</strong>mIFB h<strong>in</strong>zugefügt wer<strong>de</strong>n, was e<strong>in</strong>e Modifikation <strong>de</strong>r PH Mo<strong>de</strong>s und <strong>de</strong>r SH Mo<strong>de</strong>s erfor<strong>de</strong>rt.Zusätzlich muss die CU <strong>in</strong> ger<strong>in</strong>gfügigem Maße geän<strong>de</strong>rt wer<strong>de</strong>n, so dass <strong>de</strong>r SH Mo<strong>de</strong>aktiviert wird, sobald Daten vom PH Mo<strong>de</strong> an <strong>de</strong>n Data Rea<strong>de</strong>r gesen<strong>de</strong>t wer<strong>de</strong>n. E<strong>in</strong>equalitative Auswertung <strong>de</strong>s Ansatzes ist <strong>in</strong> Kapitel 3.4 gegeben.3.3.2 subframebased scheduleAbbildung 3.7: subframebased ScheduleIm Gegensatz zum framebased Schedule, <strong>de</strong>r Subframe IDs verwen<strong>de</strong>t, wird <strong>in</strong> diesemAnsatz wird die eigentliche Struktur <strong>de</strong>s Frames geän<strong>de</strong>rt. Die Subframes wer<strong>de</strong>n nun zu”unabhängigen” Frames erweitert, <strong>in</strong><strong>de</strong>m je<strong>de</strong>r Subframe um e<strong>in</strong>e Establish und e<strong>in</strong>eRelease Phase erweitert wird. Das führt dazu, dass je<strong>de</strong>r Subframe <strong>de</strong>s e<strong>in</strong>gehen<strong>de</strong>nProtokolls nun e<strong>in</strong>e Input Stage darstellt (siehe Abbildung 3.8).37


3 <strong>Datenflussoptimierung</strong>Abbildung 3.8: L<strong>in</strong>ks <strong>de</strong>r ursprüngliche Frame, rechts die Subframes als ’unabhängige’FramesDies hat <strong>de</strong>n Effekt, dass sich <strong>de</strong>r PH Mo<strong>de</strong> für je<strong>de</strong>n Subframe um die Belegung <strong>de</strong>sDatenbusses bewirbt und nach je<strong>de</strong>m Subframe <strong>de</strong>n Datenbus wie<strong>de</strong>r freigibt. Dannbewirbt er sich erneut um <strong>de</strong>n Bus. Diese Vorgehensweise ermöglicht es an<strong>de</strong>ren, höherpriorisierten Prozessen, <strong>de</strong>n Datenbus zwischenzeitlich zu belegen, was <strong>in</strong> zeitbehaftetenProtokollen zu Verletzung von Zeitschranken führen kann.Für dieses Verfahren muss <strong>de</strong>r IFB jedoch nicht modifiziert wer<strong>de</strong>n. Die nun unabhängigenSubframes wer<strong>de</strong>n als normale Frames e<strong>in</strong>gelesen und behan<strong>de</strong>lt. Es wer<strong>de</strong>nauch ke<strong>in</strong>e Subframe IDs mehr verwen<strong>de</strong>t, son<strong>de</strong>rn je<strong>de</strong>r Subframe ist jetzt durch e<strong>in</strong>enormale Frame ID gekennzeichnet.Input Bed<strong>in</strong>gungenDie Bed<strong>in</strong>gungen, die <strong>in</strong> diesem Schedul<strong>in</strong>g gelten, s<strong>in</strong>d vergleichbar mit <strong>de</strong>nen im simpleSchedule (da ja nichts an<strong>de</strong>res als das E<strong>in</strong>lesen von Frames gemacht wird). Die ersteInput Stage e<strong>in</strong>es Kommunikationszyklus (bspw. I2.1) darf dann begonnen wer<strong>de</strong>n, wennsowohl die letzte Input Stage <strong>de</strong>s vorigen Kommunikationszyklus been<strong>de</strong>t ist (I1.3) alsauch das Process<strong>in</strong>g <strong>de</strong>s vorigen Kommunikationszyklus mit <strong>de</strong>r gleichen ID (hier P1.1).Im Beispiel <strong>in</strong> Abbildung 3.7 ist letztere Bed<strong>in</strong>gung bereits zum Zeitpunkt t 1 erfüllt, aberdie erste Input Stage muss noch bis zum Zeitpunkt t 3 warten, da erst die Input Stageaus <strong>de</strong>m ersten Kommunikationszyklus been<strong>de</strong>t se<strong>in</strong> muss. Alle weiteren Subframes (hierI2.2 und I2.3) müssen ebenfalls auf die Beendigung <strong>de</strong>r Process<strong>in</strong>g Stages aus <strong>de</strong>r vorigenStufe (also P2.2 bzw. P1.3) warten. Zusätzlich muss <strong>de</strong>r vorige Subframe e<strong>in</strong>gelesen und<strong>de</strong>r Datenbus zum Data Rea<strong>de</strong>r wie<strong>de</strong>r freigegeben se<strong>in</strong>.38


3.4 Ergebnisse• Input(x.1) nach (Input(x-1.L) und Process(x-1.1))• Input(x.y) nach (Input(x.y-1) und Process(x-1.y)) für y > 1Process<strong>in</strong>g Bed<strong>in</strong>gungenFür die Process<strong>in</strong>g Stages gelten die folgen<strong>de</strong>n Bed<strong>in</strong>gungen: zum E<strong>in</strong>en müssen dieDaten, die <strong>in</strong> dieser Stage verarbeitet wer<strong>de</strong>n sollen, vorhan<strong>de</strong>n se<strong>in</strong>. Diese Bed<strong>in</strong>gungist zum Zeitpunkt t 4 erfüllt. Zum An<strong>de</strong>ren muss die Output Stage aus <strong>de</strong>m vorigenZyklus mit <strong>de</strong>r gleichen Subframe Nummer been<strong>de</strong>t se<strong>in</strong> (bspw. muss P2.1 auf O1.1warten). Dies ist <strong>in</strong> Abbildung 3.7 zum Zeitpunkt t 2 erfüllt. Bei<strong>de</strong> Bed<strong>in</strong>gungen s<strong>in</strong>ddurch die roten Striche kenntlich gemacht.• Process(x.y) nach (Input(x.y) und Output(x-1.y))Output Bed<strong>in</strong>gungenAuch <strong>in</strong> diesem Verfahren gelten unterschiedliche Bed<strong>in</strong>gungen für <strong>de</strong>n ersten und für dierestlichen Subframes. Der Subframe darf erst dann ausgeführt wer<strong>de</strong>n, wenn die Daten,die <strong>in</strong> dieser Output Stage versen<strong>de</strong>t wer<strong>de</strong>n sollen, alle vorliegen (O2.1 muss also aufP2.1 warten) und wenn die letzte Output Stage aus <strong>de</strong>m vorigen Kommunikationszyklusbeen<strong>de</strong>t ist (was zum Zeitpunkt t 5 erfüllt ist). Alle an<strong>de</strong>ren Output Stages müssen aufdie zugehörige Process<strong>in</strong>g Stage warten und auf das En<strong>de</strong> <strong>de</strong>r vorigen Output Stage(bspw. muss O2.2 auf P2.2 und O2.1 warten).• Output(x.1) nach (Process(x.1) und Output(x-1.L))• Output(x.y) nach (Process(x.y) und Output(x.y-1)) für y > 1Auch durch das subframebased Schedule kann e<strong>in</strong>e Verbesserung <strong>de</strong>r Latenz erzieltwer<strong>de</strong>n. Durch das Umwan<strong>de</strong>ln von Subframes <strong>in</strong> Frames konnte erreicht wer<strong>de</strong>n, dassdie Verarbeitung noch früher begonnen wer<strong>de</strong>n konnte. Es musste nicht das En<strong>de</strong> <strong>de</strong>rletzten Process<strong>in</strong>g Stage (bspw. P1.3) abgewartet wer<strong>de</strong>n, son<strong>de</strong>rn das En<strong>de</strong> von P1.1und die Freigabe <strong>de</strong>s Datenbusses (I1.3).In diesem Verfahren ist e<strong>in</strong>e Verän<strong>de</strong>rung <strong>de</strong>s IFBs, wie sie im framebased Schedulenotwendig ist, nicht notwendig. Die Verbesserung wird durch das H<strong>in</strong>zufügen zusätzlicherEstablish und Release Phasen erreicht.Im nächsten Abschnitt wer<strong>de</strong>n e<strong>in</strong>ige konkrete Beispiele präsentiert, um die Verbesserungen,die durch die e<strong>in</strong>zelnen Schedules gewonnen wer<strong>de</strong>n, qualitativ abzuschätzen.3.4 ErgebnisseDie Ergebnisse, die <strong>in</strong> diesem Abschnitt präsentiert wer<strong>de</strong>n, wur<strong>de</strong>n durch e<strong>in</strong>e Erweiterung<strong>de</strong>s IFS-Editors generiert, die im Rahmen dieser Studienarbeit entwickelt wur<strong>de</strong>.Dabei han<strong>de</strong>lt es sich um e<strong>in</strong>e Visualisierung von Schedul<strong>in</strong>g Diagrammen, wie sie <strong>in</strong>Abbildung 3.9 dargestellt ist.39


3 <strong>Datenflussoptimierung</strong>Um die Beispiele zur Auswertung <strong>de</strong>r bei<strong>de</strong>n vorgestellten Optimierungsverfahren zugenerieren, müssen zwei Annahmen bezüglich <strong>de</strong>r Daten im Superframe gemacht wer<strong>de</strong>n.Die erste Annahme legt fest, dass die Menge <strong>de</strong>r e<strong>in</strong>gelesenen und versen<strong>de</strong>ten Datengleich ist. Daraus folgt, dass die Anzahl <strong>de</strong>r Output Instanzen, die ursprünglich <strong>de</strong>nOutput-Supeframe gebil<strong>de</strong>t haben, konstant ist. Die jeweilige Verteilung <strong>de</strong>r Bits unddamit <strong>de</strong>r Anordnung <strong>de</strong>r Unterteilungspunkte resultiert ausschließlich <strong>in</strong> e<strong>in</strong>er bestimmtenGruppierung <strong>de</strong>r Output Instanzen. Die zweite Annahme bezieht sich auf eben dieseGruppierungen <strong>de</strong>r Output Instanzen. Dabei wird <strong>in</strong> <strong>de</strong>n Beispielen davon ausgegangen,dass sich die Instanzen <strong>in</strong> zwei, vier und acht Gruppen äquivalenter Größe unterteilenlassen.Die Beispiele s<strong>in</strong>d folgen<strong>de</strong>rmaßen aufgebaut:• es wer<strong>de</strong>n zwei Kommunikationszyklen betrachtet• pro Kommunikationszyklus wer<strong>de</strong>n acht Bits vom IFB e<strong>in</strong>gelesen und acht Bitsgesen<strong>de</strong>t• im framebased Schedule und im subframebased Schedule wer<strong>de</strong>n diese acht Bitsnache<strong>in</strong>an<strong>de</strong>r <strong>in</strong> Subframes zu vier, zwei und e<strong>in</strong>em Bit aufgeteiltAbbildung 3.9 zeigt e<strong>in</strong>en Ausschnitt <strong>de</strong>s simple Schedules, das mit <strong>de</strong>r implementiertenErweiterung <strong>de</strong>s IFS-Editors visualisiert wird.Abbildung 3.9: simple Schedule mit 8 Bits pro Frame40


3.4 ErgebnisseE<strong>in</strong>e Betrachtung <strong>de</strong>r zyklengenauen Ausführung (Tabelle 2.1) erlaubt vorweg e<strong>in</strong>ee<strong>in</strong>fache Optimierung. Wie <strong>in</strong> Abbildung 3.9 sichtbar, konnte noch e<strong>in</strong>e ger<strong>in</strong>gfügigeVerbesserung implementiert wer<strong>de</strong>n: die ersten bei<strong>de</strong>n Schritte <strong>de</strong>r Establish Phaseim zweiten Zyklus (hier dunkelgrün dargestellt) können bereits während <strong>de</strong>s Process<strong>in</strong>gs(rot) ausgeführt wer<strong>de</strong>n (obwohl die Input Bed<strong>in</strong>gung <strong>in</strong> Kapitel 3.3.1 besagt, dassdas Establish erst nach <strong>de</strong>m Process<strong>in</strong>g ausgeführt wer<strong>de</strong>n dürfte). Dies ist dadurchmöglich, dass die bei<strong>de</strong>n ersten Schritte nur die Frame ID und <strong>de</strong>n IRQ setzen (sieheTabelle 2.1 <strong>in</strong> Kapitel 2.6). Diese Schritte bee<strong>in</strong>flussen nicht die Verarbeitung o<strong>de</strong>r <strong>de</strong>nInhalt <strong>de</strong>s Speichers. Der letzte Schritt, die Anfor<strong>de</strong>rung <strong>de</strong>s Datenbusses kann erst dannausgeführt wer<strong>de</strong>n, wenn das Process<strong>in</strong>g komplett been<strong>de</strong>t ist. Mit dieser zusätzlichenVerbesserung kann <strong>de</strong>r zweite Kommunikationszyklus bereits im 56. Takt begonnen wer<strong>de</strong>n.Nach 166 Takten s<strong>in</strong>d bei<strong>de</strong> Zyklen been<strong>de</strong>t. Diese 166 Takte s<strong>in</strong>d <strong>de</strong>r Referenzwertfür die bei<strong>de</strong>n Schedul<strong>in</strong>gs.In Abbildung 3.10 wird das framebased Schedule dargestellt. Die Input-Frameswur<strong>de</strong>n <strong>in</strong> zwei Subframes mit je vier Bits aufgeteilt. Durch die Aufteilung kann <strong>de</strong>rerste Zyklus bereits nach 82 Takten been<strong>de</strong>t wer<strong>de</strong>n, <strong>de</strong>r zweite Kommunikationszyklusist <strong>in</strong> Takt 139 abgearbeitet. Es liegt also e<strong>in</strong>e Verbesserung von 17% gegenüber <strong>de</strong>msimple Schedule vor.Im subframebased Schedule mit zwei Subframes a vier Bits (Abbildung 3.11) kann<strong>de</strong>r erste Kommunikationszyklus nach 91, <strong>de</strong>r zweite nach 151 Takten been<strong>de</strong>t wer<strong>de</strong>n.Abbildung 3.10: framebased Schedule mit 2 Subframes mit vier Bits41


3 <strong>Datenflussoptimierung</strong>Abbildung 3.11: subframebased Schedule mit 2 Subframes mit vier BitsDer subframebased Schedule ist <strong>in</strong> diesem Fall immer noch besser als <strong>de</strong>r simple Schedule(um 10%), aber er benötigt 12 Takte mehr als <strong>de</strong>r framebased Schedule.Wird die Größe <strong>de</strong>r Subframes und <strong>de</strong>r Instanzen auf jeweils e<strong>in</strong> Bit reduziert, ergebensich noch <strong>de</strong>utlichere Unterschie<strong>de</strong>. Das framebased Schedule benötigt für das E<strong>in</strong>lesen<strong>de</strong>r acht Subframes und <strong>de</strong>m Sen<strong>de</strong>n <strong>de</strong>r acht Instanzen 118 Takte. Gegenüber <strong>de</strong>m simpleSchedule ist das e<strong>in</strong>e Verbesserung von 28%. Der subframebased Schedule h<strong>in</strong>gegenbenötigt für die gleiche Anzahl Subframes und Instanzen 205 Takte. Er ist also um 39Takte (das entspricht 24%) langsamer als <strong>de</strong>r simple Schedule.Folgen<strong>de</strong> Tabelle stellt diese und weitere Werte gegenüber.Verfahren 8 Bits 2x4 Bits 4x2 Bits 8x1 Bitsimple Schedule 166 – – –framebased Schedule 166 139 124 118subframebased Schedule 166 151 199 205Tabelle 3.1: Vergleich <strong>de</strong>r Ausführungszeiten <strong>de</strong>r Optimierungsverfahren <strong>in</strong> IFB-Taktenfür e<strong>in</strong>en Frame mit 8 BitDas framebased Schedule erzielt also bessere Ergebnisse als das simple Schedule. Jekle<strong>in</strong>er die Subframes und die Instanzen, <strong>de</strong>sto schneller können sie abgearbeitet wer<strong>de</strong>n.Diese Verbesserungen erfor<strong>de</strong>rn aber e<strong>in</strong>e Modifikation <strong>de</strong>s IFB (siehe Kapitel 3.3.1).42


3.4 ErgebnisseDas subframebased Schedule erzielt nur bis zu e<strong>in</strong>er Subframegröße von vier Bitse<strong>in</strong> besseres Ergebnis als <strong>de</strong>r simple Schedule. S<strong>in</strong>d die Subframes kle<strong>in</strong>er, benötigt dasDurchlaufen <strong>de</strong>r zusätzlichen Establish und Release Phasen benötigt mehr Zeit, alsdurch die Verbesserung gewonnen wer<strong>de</strong>n kann. E<strong>in</strong>e Modifikation <strong>de</strong>s IFB ist <strong>in</strong> diesemSchedul<strong>in</strong>g nicht erfor<strong>de</strong>rlich, allerd<strong>in</strong>gs s<strong>in</strong>d die Verbesserungen ger<strong>in</strong>ger als im framebasedSchedule. Betrachtet man große Input-Frames, <strong>de</strong>ren Daten auf wenige Gruppenabgebil<strong>de</strong>t wer<strong>de</strong>n, so ist das Ergebnis nur ger<strong>in</strong>gfügig schlechter als das <strong>de</strong>s framebasedSchedules. E<strong>in</strong> Beispiel mit 1024 Input Bits ist <strong>in</strong> Tabelle 3.2 dargestellt und belegtdiesen Effekt.Verfahren 1024 Bits 2x512 Bits 4x256 Bits 8x128 Bitsimple Schedule 18.455 – – –framebased Schedule 18.455 15.377 13.840 13.060subframebased Schedule 18.455 15.391 13.878 13.150Tabelle 3.2: Vergleich <strong>de</strong>r Ausführungszeiten <strong>de</strong>r Optimierungsverfahren <strong>in</strong> IFB-Taktenfür e<strong>in</strong>en Frame mit 1024 BitWie gezeigt wur<strong>de</strong>, kann durch bei<strong>de</strong> Verfahren e<strong>in</strong>e <strong>de</strong>utliche Verbesserung <strong>de</strong>r Latenzerreicht wer<strong>de</strong>n. Die vorgezogene Verarbeitung <strong>de</strong>r Daten ist somit e<strong>in</strong> effektiverOptimierungsansatz. Die Ergebnisse bei<strong>de</strong>r Verfahren hängen dabei von <strong>de</strong>m Anwendungsszenarioab.43


3 <strong>Datenflussoptimierung</strong>44


4 Rekonfigurierte AusführungIm vorigen Kapitel wur<strong>de</strong> gezeigt, wie durch geschicktes Pipel<strong>in</strong><strong>in</strong>g im IFB die Latenz<strong>de</strong>s IFBs reduziert wer<strong>de</strong>n konnte. Dies geschah unter <strong>de</strong>r Annahme, dass alle Mo<strong>de</strong>s, diebenötigt wer<strong>de</strong>n, immer auf <strong>de</strong>m Chip vorhan<strong>de</strong>n s<strong>in</strong>d. Geht man nun davon aus, dasse<strong>in</strong> IFB mit vielen Tasks verbun<strong>de</strong>n ist und viele Mapp<strong>in</strong>g Equations implementiert,so wer<strong>de</strong>n entsprechend viele Mo<strong>de</strong>s benötigt. Somit benötigt die Implementierung <strong>de</strong>sIFB viel Platz. Der Platz stellt auf e<strong>in</strong>em Chip aber e<strong>in</strong>e teure Ressource dar und Chipskönnen nicht beliebig gross konstruiert wer<strong>de</strong>n. Die damit verbun<strong>de</strong>nen Kosten und dieGröße <strong>de</strong>r Chips wür<strong>de</strong>n enorm steigen, was <strong>in</strong> <strong>de</strong>m meisten Fällen unerwünscht ist.Man möchte eher ”kle<strong>in</strong>e” Chips verwen<strong>de</strong>n.Hier setzt <strong>de</strong>r zweite Optimierungsansatz an. Es wird davon ausgegangen, dass nichtausreichend Platz für alle Mo<strong>de</strong>s vorhan<strong>de</strong>n ist, die von e<strong>in</strong>em IFB benötigt wer<strong>de</strong>n.Somit ergibt sich die Notwendigkeit, Mo<strong>de</strong>s zu verdrängen und an<strong>de</strong>re Mo<strong>de</strong>s zu la<strong>de</strong>n.Das wie<strong>de</strong>rum erfor<strong>de</strong>rt <strong>Hardware</strong>, die zur Laufzeit rekonfiguriert wer<strong>de</strong>n kann.Es wer<strong>de</strong>n also multifunktionale Ausführungse<strong>in</strong>heiten benötigt, <strong>in</strong> die dynamisch diebenötigten Komponenten gela<strong>de</strong>n und dann ausgeführt wer<strong>de</strong>n können. Dazu wird e<strong>in</strong>FPGA verwen<strong>de</strong>t.Wie bereits im Abschnitt 2.1 kurz erläutert, besteht das FPGA aus slices, die wie<strong>de</strong>rumgruppiert und zu Slots zusammengefasst wer<strong>de</strong>n können (siehe Abbildung 2.1).Diese Slots s<strong>in</strong>d dynamisch rekonfigurierbar, d.h., dass zur Laufzeit vorhan<strong>de</strong>ne Mo<strong>de</strong>sdadurch verdrängt wer<strong>de</strong>n, <strong>in</strong><strong>de</strong>m neue Mo<strong>de</strong>s <strong>in</strong> diese Slots gela<strong>de</strong>n wer<strong>de</strong>n. Hierbeiunterschei<strong>de</strong>t man zwischen multi reconfigurable (es können mehrere Mo<strong>de</strong>s gleichzeitiggela<strong>de</strong>n wer<strong>de</strong>n) und s<strong>in</strong>gle reconfigurable (es kann nur e<strong>in</strong> Mo<strong>de</strong> gleichzeitig gela<strong>de</strong>nwer<strong>de</strong>n) FPGAs.Zur Rekonfigurierung wird e<strong>in</strong>e Kontrollkomponente benötigt, die <strong>de</strong>n Vorgang <strong>de</strong>r Rekonfigurierungausführt und kontrolliert. Denn bevor e<strong>in</strong>e Rekonfigurierung ausgeführtwer<strong>de</strong>n kann, muss die E<strong>in</strong>haltung bestimmter Bed<strong>in</strong>gungen sichergestellt wer<strong>de</strong>n. Esergeben sich folgen<strong>de</strong> Aufgaben für die Kontrolle<strong>in</strong>heit:• Auswahl <strong>de</strong>s Mo<strong>de</strong>s, <strong>de</strong>r verdrängt wird• Sicherstellung, dass zu Beg<strong>in</strong>n <strong>de</strong>r Rekonfigurierung ke<strong>in</strong> Mo<strong>de</strong> aktiv ist und somitke<strong>in</strong>e Kommunikation o<strong>de</strong>r Verarbeitung im Gange ist• Das korrekte E<strong>in</strong>b<strong>in</strong><strong>de</strong>n <strong>de</strong>s neuen Mo<strong>de</strong>s <strong>in</strong> <strong>de</strong>n Slot (u.a. die Verb<strong>in</strong>dungen)• Das Anpassen <strong>de</strong>s Interfaces an die neuen Funktionalitäten (wenn nötig)• Das Sicherstellen e<strong>in</strong>es reibungslosen Ablaufes ohne Bee<strong>in</strong>flussung <strong>de</strong>r an<strong>de</strong>renMo<strong>de</strong>s (ohne dass bei diesen Datenverlust auftritt)45


4 Rekonfigurierte AusführungDiese Kontrollkomponente ist für das FPGA notwendig und darf nicht ausgetauschtwer<strong>de</strong>n. Deswegen ist sie auf <strong>de</strong>m fixed slot implementiert. Dieser Slot ist nicht rekonfigurierbar,d.h. diese Slots können nicht durch an<strong>de</strong>re Funktionalitäten überschriebenwer<strong>de</strong>n.Im Falle <strong>de</strong>s IFBs wer<strong>de</strong>n auf <strong>de</strong>m nicht rekonfigurierbaren Slot neben <strong>de</strong>r Kontrolle<strong>in</strong>heit(<strong>de</strong>r Reconfiguration Unit) weitere Komponenten untergebracht, die für die Funktionalität<strong>de</strong>s IFBs unabd<strong>in</strong>gbar s<strong>in</strong>d und somit nicht ausgetauscht wer<strong>de</strong>n dürfen:Die Control Unit mit ihren Unterkomponenten (dazu gehört die ReconfigurationE<strong>in</strong>heit) s<strong>in</strong>d wichtige Steuer<strong>in</strong>strumente zur Kontrolle <strong>de</strong>s IFBs.Der Speicher (Data Rea<strong>de</strong>r und Data Writer) dient zur Zwischenablage <strong>de</strong>r Datenaus <strong>de</strong>n und für die Mo<strong>de</strong>s. Alle Komponenten müssen darauf zugreifen können. E<strong>in</strong>Austausch <strong>de</strong>s Speichers wür<strong>de</strong> somit zu Datenverlust führen.Auf <strong>de</strong>m festen Slot s<strong>in</strong>d außer<strong>de</strong>m die Verb<strong>in</strong>dungsleitungen zu <strong>de</strong>n externen Tasksuntergebracht. Letztere s<strong>in</strong>d nicht direkt mit <strong>de</strong>n Slots verbun<strong>de</strong>n, <strong>in</strong> <strong>de</strong>nen die PH Mo<strong>de</strong>sgela<strong>de</strong>n s<strong>in</strong>d, son<strong>de</strong>rn die Verb<strong>in</strong>dung läuft erst über diesen nicht austauschbaren Slot.Von hier aus gehen die Leitungen zum PH Mo<strong>de</strong> . Dies hat <strong>de</strong>n Vorteil, dass das Interfacefür die externen Tasks immer das gleiche ist und e<strong>in</strong> Mo<strong>de</strong> <strong>in</strong> e<strong>in</strong>en beliebigen Slotgela<strong>de</strong>n wer<strong>de</strong>n kann. Somit ist e<strong>in</strong>e Anpassung <strong>de</strong>r Tasks bzw. <strong>de</strong>s FPGAs unnötig(und auch nicht wünschenswert), <strong>de</strong>nn <strong>de</strong>r IFB soll für die Tasks ja transparent bleiben.Somit ergibt sich die bereits bekannte Abbildung 2.1.Um die Rekonfigurierung von Mo<strong>de</strong>s zu beschreiben, wur<strong>de</strong> das bisher verwen<strong>de</strong>teMo<strong>de</strong>ll erweitert. Grundlage war das I-P-O Schema. Es umfasste nur das Ausführen <strong>de</strong>rInput Stage, <strong>de</strong>r Process<strong>in</strong>g Stage und <strong>de</strong>r Output Stage. Ist e<strong>in</strong>e dieser Stages aber nichtvorhan<strong>de</strong>n, muss sie erst <strong>in</strong> e<strong>in</strong>en Slot gela<strong>de</strong>n wer<strong>de</strong>n. Also muss für je<strong>de</strong> <strong>de</strong>r drei Stufennoch e<strong>in</strong>e weitere Stufe h<strong>in</strong>zugefügt wer<strong>de</strong>n, <strong>in</strong> <strong>de</strong>r die entsprechen<strong>de</strong> Komponente <strong>in</strong>e<strong>in</strong>en Slot gela<strong>de</strong>n wird. Es ergibt sich das folgen<strong>de</strong> Schema:Abbildung 4.1: Das neue I-P-O Schema mit sechs StufenAbbildung 4.1 zeigt das daraus resultieren<strong>de</strong> Schema für die Ausführungs-Pipel<strong>in</strong>e. Diebereits bekannten Stufen wur<strong>de</strong>n <strong>in</strong> e<strong>in</strong>e Load Phase und e<strong>in</strong>e Execute Phase aufgeteilt.Zu beachten ist, dass diese neuen Stufen durchaus übersprungen wer<strong>de</strong>n können (durch<strong>de</strong>n Pfeil gekennzeichnet, <strong>de</strong>r durch die Load Phasen geht). Ist e<strong>in</strong>e Komponente bereitsgela<strong>de</strong>n, ist es unnötig, diese nochmals zu la<strong>de</strong>n.Wie bereits <strong>in</strong> <strong>de</strong>r E<strong>in</strong>leitung erwähnt, ist dieser Ansatz nicht mit <strong>de</strong>r <strong>Datenflussoptimierung</strong>komb<strong>in</strong>ierbar. Dieser betrachtet alle benötigten Mo<strong>de</strong>s als gegeben an, d.h. sies<strong>in</strong>d von alle auf <strong>de</strong>m FPGA gela<strong>de</strong>n und können ohne Verzögerung ausgeführt wer<strong>de</strong>n.46


4.1 I-P-O Schedul<strong>in</strong>g e<strong>in</strong>es rekonfigurierbaren IFBDas La<strong>de</strong>n e<strong>in</strong>er Stage wur<strong>de</strong> somit nicht berücksichtigt. Diese Optimierung kann alsogenutzt wer<strong>de</strong>n, wenn die Chips, auf <strong>de</strong>nen e<strong>in</strong> IFB implementiert wird, genügend großs<strong>in</strong>d, so dass tatsächlich alle Mo<strong>de</strong>s bereits zu Beg<strong>in</strong>n gela<strong>de</strong>n wer<strong>de</strong>n können. Benötigt<strong>de</strong>r IFB aber viele Mo<strong>de</strong>s (da viele Tasks an ihn angeschlossen s<strong>in</strong>d), für die nicht ausreichendSlots zur Verfügung stehen, kann die Flächenoptimierung genutzt wer<strong>de</strong>n. DieseOptimierung sorgt für e<strong>in</strong>e optimale Ausnutzung (Utilization) <strong>de</strong>r Slots, so dass Stagesfrühestmöglich und <strong>in</strong> optimaler Reihenfolge gela<strong>de</strong>n wer<strong>de</strong>n.Nach<strong>de</strong>m das erweiterte Mo<strong>de</strong>ll e<strong>in</strong>geführt und erklärt wur<strong>de</strong>, wird gezeigt, wann welcheStage ausgeführt wer<strong>de</strong>n kann und welche Bed<strong>in</strong>gungen e<strong>in</strong>gehalten wer<strong>de</strong>n müssen,um e<strong>in</strong>en korrekten Ablauf sicherzustellen.4.1 I-P-O Schedul<strong>in</strong>g e<strong>in</strong>es rekonfigurierbaren IFBDie grundlegen<strong>de</strong> I<strong>de</strong>e beim Schedul<strong>in</strong>g <strong>de</strong>s erweiterten I-P-O Schemas ist das Cach<strong>in</strong>g.Hat bspw. e<strong>in</strong> PH Mo<strong>de</strong> die Daten e<strong>in</strong>er Task gelesen, so wird dieser Mo<strong>de</strong> nicht sofortverdrängt. Er bleibt vorerst gela<strong>de</strong>n, <strong>de</strong>nn dieser Mo<strong>de</strong> wird im nächsten Kommunikationszykluswie<strong>de</strong>r benötigt. Der Mo<strong>de</strong> bleibt also so lange <strong>in</strong> e<strong>in</strong>em Slot gela<strong>de</strong>n, bis ervon e<strong>in</strong>em an<strong>de</strong>ren verdrängt wer<strong>de</strong>n muss. E<strong>in</strong> Beispiel soll dies ver<strong>de</strong>utlichen:Abbildung 4.2: Schedul<strong>in</strong>g mit beliebig vielen Slots (l<strong>in</strong>ks) und zwei Slots (rechts) [3].Im l<strong>in</strong>ken Teil von Abbildung 4.2 stehen die maximal benötigte Anzahl an Slots (<strong>in</strong>diesem Fall drei) zur Verfügung, so dass die Ausführung <strong>de</strong>s IFBs ohne unnötige Verzögerungenstattf<strong>in</strong><strong>de</strong>t. Das ist dadurch möglich, dass alle Slots parallel gela<strong>de</strong>n wer<strong>de</strong>n un<strong>de</strong><strong>in</strong> Nachla<strong>de</strong>n zur Laufzeit nicht notwendig ist.Im rechten Teil wird <strong>de</strong>utlich, dass weniger Slots die Ausführung <strong>de</strong>s IFBs verzögern,da Stages zur Laufzeit nachgela<strong>de</strong>n wer<strong>de</strong>n müssen (RTR = Runtime Reconfiguration).Dies führt zu e<strong>in</strong>em Tra<strong>de</strong>-Off zwischen Rechenzeit und benötigtem Platz. Im dritten47


4 Rekonfigurierte AusführungTakt kann daher nur die Output Stage <strong>de</strong>s ersten Kommunikationszyklus ausgeführtwer<strong>de</strong>n. Im an<strong>de</strong>ren Beispiel war es möglich, parallel zur Output Stage die Input Stagefür <strong>de</strong>n nächsten Kommunikationszyklus im zweiten Takt zu la<strong>de</strong>n und im drittenTakt auszuführen. Um e<strong>in</strong>e Verdrängung durchzuführen, wird e<strong>in</strong>e Verdrängungsstrategiebenötigt, die im Folgen<strong>de</strong>n erklärt wird [2]:1. grundsätzlich wer<strong>de</strong>n nur Mo<strong>de</strong>s verdrängt, die nicht aktiv s<strong>in</strong>d2. existieren ke<strong>in</strong>e <strong>in</strong>aktive Mo<strong>de</strong>s, wird die Verdrängung verzögert3. existiert m<strong>in</strong><strong>de</strong>stens e<strong>in</strong> <strong>in</strong>aktiver Mo<strong>de</strong>, so wer<strong>de</strong>n folgen<strong>de</strong> Fälle unterschie<strong>de</strong>n:a) ist genau e<strong>in</strong> Mo<strong>de</strong> <strong>in</strong>aktiv, wird dieser ersetztb) s<strong>in</strong>d mehrere Mo<strong>de</strong>s <strong>in</strong>aktiv, wird <strong>de</strong>r ersetzt, <strong>de</strong>r am weitesten entfernt undvon <strong>de</strong>m verdrängen<strong>de</strong>n Mo<strong>de</strong> <strong>in</strong> se<strong>in</strong>er Ausführung abhängig istc) existiert ke<strong>in</strong> abhängiger Mo<strong>de</strong>, so wird e<strong>in</strong>er <strong>de</strong>r Mo<strong>de</strong>s mit <strong>de</strong>r größtenEntfernung verdrängtAbbildung 4.3: Die Stages zweier Kommunikationszyklen sowie <strong>de</strong>ren AbhängigkeitenDiese Verdrängungsstrategie ist optimal. Die Grundlage <strong>de</strong>s Verfahrens ist aus <strong>de</strong>rCach<strong>in</strong>g Theorie abgeleitet, die besagt, dass i<strong>de</strong>alerweise das am längsten nicht mehrbenötigte Objekt zu verdrängen ist. Der Graph <strong>in</strong> Abbildung 4.3 zeigt beispielhaftzwei Kommunkationszyklen. Die Knoten <strong>de</strong>s Graphen repräsentieren die Stages, dieausgeführt wer<strong>de</strong>n müssen. Der Abstand zwischen zwei Stages lässt sich <strong>in</strong> Form <strong>de</strong>rvertikalen Distanz zwischen <strong>de</strong>r Stage, die platziert wer<strong>de</strong>n soll, und <strong>de</strong>r Stage, die <strong>in</strong>e<strong>in</strong>em Slot allokiert ist, messen. Das folgen<strong>de</strong> Kapitel enthält e<strong>in</strong>ige Ergebnisse zu dieserStrategie.48


4.2 Ergebnisse4.2 ErgebnisseUm die Effektivität <strong>de</strong>r oben präsentierten Verdrängungsstrategie aufzuzeigen, wur<strong>de</strong>nverschie<strong>de</strong>ne Beispiele im IFS-Editor simuliert.Abbildung 4.4: Der Kommunikationsgraph aus <strong>de</strong>r E<strong>in</strong>leitungIn Abbildung 4.4 wur<strong>de</strong> <strong>de</strong>r bereits bekannte Kommunikationsgraph nochmals gezeigt.In diesem Beispiel existieren zwei sen<strong>de</strong>n<strong>de</strong> und drei empfangen<strong>de</strong> Tasks. Zwischen <strong>de</strong>nTasks s<strong>in</strong>d die Abbildungsregeln, die auf <strong>de</strong>n IFB abgebil<strong>de</strong>t wer<strong>de</strong>n. Die folgen<strong>de</strong>n Abbildungenzeigen beispielhaft das I-P-O Schedul<strong>in</strong>g <strong>de</strong>s <strong>in</strong> Abbildung 4.4 abgebil<strong>de</strong>tenSzenarios. Dabei wur<strong>de</strong> e<strong>in</strong> FPGA mit vier Slots simuliert und <strong>de</strong>r Kommunikationszykluszweimal ausgeführt.Abbildung 4.5: Zwei Kommunikationszyklen auf e<strong>in</strong>em multi reconfigurable FPGA49


4 Rekonfigurierte AusführungAbbildung 4.6: Zwei Kommunikationszyklen auf e<strong>in</strong>em s<strong>in</strong>gle reconfigurable FPGAAbbildung 4.5 zeigt dabei die Ausführung auf e<strong>in</strong>em multi reconfigurable FPGA. InAbbildung 4.6 wur<strong>de</strong> e<strong>in</strong> s<strong>in</strong>gle reconfigurable FPGA verwen<strong>de</strong>t. Für das Beispiel wur<strong>de</strong>nvier Slots verwen<strong>de</strong>t, weil hier die Unterschie<strong>de</strong> zwischen <strong>de</strong>n bei<strong>de</strong>n Varianten beson<strong>de</strong>rs<strong>de</strong>utlich hervortreten. So benötigt das multi reconfigurable FPGA sechs Takte wenigerund weist dabei e<strong>in</strong>e höhere Utilization (siehe Gleichung 4.1) auf.Im Folgen<strong>de</strong>n wer<strong>de</strong>n drei repräsentative Szenarien betrachtet, die e<strong>in</strong>e qualitativeBewertung <strong>de</strong>s vorgestellten Pipel<strong>in</strong><strong>in</strong>g-Verfahrens erlaubt:• 1x Input, 3x Output (e<strong>in</strong> sen<strong>de</strong>n<strong>de</strong>r und drei empfangen<strong>de</strong> Tasks)• 2x Input, 3x Output (siehe Abbildung 4.4)• 3x Input, 1x OutputDie folgen<strong>de</strong>n drei Abbildungen zeigen die Ergebnisse <strong>de</strong>r berechneten Schedul<strong>in</strong>gs <strong>de</strong>rdrei Szenarien. Dabei wer<strong>de</strong>n sowohl die Anzahl <strong>de</strong>r benötigten Schritte (Pipel<strong>in</strong>e Clocks)als auch die Flächenausnutzung auf <strong>de</strong>m Chip(Utilization) für multi reconfigurable unds<strong>in</strong>gle reconfigurable FPGAs visualisiert. Die Utilitzation berechnet sich mit <strong>de</strong>r FormelUtilization =∑states Anzahl aktiver SlotsAnzahl aller Slots · Anzahl <strong>de</strong>r Slots(4.1)Je<strong>de</strong>s Szenario wur<strong>de</strong> erst mit e<strong>in</strong>em Slot, dann mit zwei Slots, usw. ausgeführt. Sobald<strong>in</strong> e<strong>in</strong>em Schedul<strong>in</strong>g die Anzahl <strong>de</strong>r Slots größer o<strong>de</strong>r gleich <strong>de</strong>r Anzahl <strong>de</strong>r zu la<strong>de</strong>n<strong>de</strong>nStages ist, kann ke<strong>in</strong>e Verbesserung <strong>de</strong>r Pipel<strong>in</strong>e clocks erzielt wer<strong>de</strong>n. Daher war s<strong>in</strong>ddie dargestellten Diagramme auf zehn Slots begrenzt. Zusätzliche Slots wür<strong>de</strong>n nur zue<strong>in</strong>er Verschlechterung <strong>de</strong>r Utilization führen.Je<strong>de</strong>s dieser Szenarien wird zehn Mal h<strong>in</strong>tere<strong>in</strong>an<strong>de</strong>r ausgeführt, es ergeben sich alsozehn Kommunikationszyklen.50


4.2 ErgebnisseAbbildung 4.7: IPO-Schedule: E<strong>in</strong> sen<strong>de</strong>n<strong>de</strong>r und drei empfangen<strong>de</strong> TasksAbbildung 4.8: IPO-Schedule: Zwei sen<strong>de</strong>n<strong>de</strong> und drei empfangen<strong>de</strong> Tasks51


4 Rekonfigurierte AusführungAbbildung 4.9: IPO-Schedule: Drei sen<strong>de</strong>n<strong>de</strong> und e<strong>in</strong> empfangen<strong>de</strong>r TasksIn <strong>de</strong>n ersten bei<strong>de</strong>n Szenarien (Abbildungen 4.7 und 4.8) ist <strong>de</strong>utlich zu erkennen,dass es von Vorteil ist, wenn mehrere Slots gleichzeitig rekonfiguriert wer<strong>de</strong>n können.Somit wird sowohl die Zahl <strong>de</strong>r benötigten Schritte reduziert als auch <strong>de</strong>r Platz optimalerausgenutzt (es wer<strong>de</strong>n s<strong>in</strong>d also mehr Stages pro Pipel<strong>in</strong>e Clock gela<strong>de</strong>n). DieseUnterschie<strong>de</strong> treten hauptsächlich auf, wenn zwei bis sechs Slots zur Verfügung stan<strong>de</strong>n,um die Pipel<strong>in</strong>e Stages zu la<strong>de</strong>n. Mit mehr o<strong>de</strong>r weniger Slots weichen die erzieltenErgebnisse nicht gravierend vone<strong>in</strong>an<strong>de</strong>r ab. Es ist also von Vorteil, mit zwei bis sechsverfügbaren Slots e<strong>in</strong>en multi reconfigurable FPGA zu verwen<strong>de</strong>n.In Abbildung 4.9 zeigen sich ke<strong>in</strong>e <strong>de</strong>utlichen Unterschie<strong>de</strong> zwischen bei<strong>de</strong>n Versionen.In diesem speziellen, sehr e<strong>in</strong>fachen Beispiel spielt es ke<strong>in</strong>e Rolle, ob mehrere Slotsgleichzeitig rekonfiguriert wer<strong>de</strong>n können.Vergleicht man die drei Szenarien h<strong>in</strong>sichtlich benötigter Zeit und Flächenausnutzung,so wird <strong>de</strong>utlich, dass je mehr Slots zur Verfügung stehen, die Zeiten verbessert wer<strong>de</strong>nkönnen. Allerd<strong>in</strong>gs konvergieren die Zeiten für die ersten bei<strong>de</strong>n Szenarion stetig gegendie m<strong>in</strong>imale Anzahl von Pipel<strong>in</strong>e Clocks, sobald mehr als sechs Slots verfügbar s<strong>in</strong>d.Danach können ke<strong>in</strong>e weiteren Verbesserungen erzielt wer<strong>de</strong>n. Beim dritten Szenario(Abbildung 4.9) pen<strong>de</strong>lt sich dieser Wert bei etwas mehr als 40 Zeite<strong>in</strong>heiten e<strong>in</strong>. DieFlächenausnutzung dagegen nimmt unterschiedlich stark ab, erreicht aber bei allendrei Szenarion mit zehn Slots e<strong>in</strong>en Wert zwischen 15% und 25%.Zusammenfassend kann gesagt wer<strong>de</strong>n, dass multi reconfigurable FPGAs mit zwei bisvier Slots <strong>de</strong>utliche Vorteile besitzen. Damit können die Kommunikationszeiten reduziert52


4.2 Ergebnisseund die Fläche besser ausgenutzt wer<strong>de</strong>n, ohne die Kommunikationszeiten drastisch zuerhöhen. Voraussetzung für e<strong>in</strong>e solche Optimierung ist, dass ke<strong>in</strong>e Real-Time Protokolleausgeführt wer<strong>de</strong>n können, da sonst ggf. Deadl<strong>in</strong>es verletzt wer<strong>de</strong>n könnten.Diese Optimierung ermöglicht es, die benötigte Fläche für e<strong>in</strong>e IFB-Implementierungzu reduzieren. Das erlaubt die Verwendung kle<strong>in</strong>erer Chips, was wie<strong>de</strong>rum die Kosten<strong>de</strong>s Designs senkt. Die Rekonfigurierungseigenschaften <strong>de</strong>s Chips bee<strong>in</strong>flussen dabei dieerreichbaren Verbesserungen. Plattformen, auf <strong>de</strong>nen mehrere Teilschaltungen gleichzeitigrekonfiguriert wer<strong>de</strong>n können, bieten Vorteile gegenüber solchen Plattformen, die nurdie Rekonfigurierung e<strong>in</strong>es Teilstücks unterstützen.53


4 Rekonfigurierte Ausführung54


5 Zusammenfassung und Ausblick5.1 ZusammenfassungIn dieser Arbeit wur<strong>de</strong>n zwei Verfahren präsentiert, um die Ausführung <strong>de</strong>s IFBs zubeschleunigen bzw. zu optimieren.Das erste Verfahren zielte auf die Reduzierung <strong>de</strong>r Latenz durch Analyse <strong>de</strong>r e<strong>in</strong>gelesenenDaten. Die Verarbeitung wur<strong>de</strong> nicht erst nach <strong>de</strong>m E<strong>in</strong>lesen aller Daten gestartet,son<strong>de</strong>rn e<strong>in</strong> Teil <strong>de</strong>r Daten konnte bereits vorher modifiziert wer<strong>de</strong>n. Dazu wur<strong>de</strong>n dieSubframes e<strong>in</strong>geführt, die auf zwei unterschiedlichen Arten <strong>in</strong> <strong>de</strong>n IFB <strong>in</strong>tegriert wur<strong>de</strong>n.Das erste Verfahren (das framebased Schedule) erwies sich als sehr effizient. Je kle<strong>in</strong>erdie Subframes und die Instanzen wur<strong>de</strong>n, <strong>de</strong>sto schneller konnten die e<strong>in</strong>zelnen Stagesdurchlaufen und been<strong>de</strong>t wer<strong>de</strong>n. Das zweite Verfahren (subframebased Schedule)stellte erwies sich ebenfalls als effizient. Nur für Subframegrößen unter vier Bit wur<strong>de</strong>nschlechtere Ergebnisse erzielt, was ke<strong>in</strong>e wesentliche E<strong>in</strong>schränkung darstellt.Das zweite Optimierungsverfahren beschreibt die Implementierung e<strong>in</strong>er effektivenVerdrängungsstrategie, um die benötigte Fläche für die Implementierung e<strong>in</strong>es IFB zum<strong>in</strong>imieren. Dazu wer<strong>de</strong>n die e<strong>in</strong>zelnen Stages <strong>de</strong>s I-P-O Schemas <strong>in</strong> Load Stage undExecute Stage aufgeteilt und e<strong>in</strong>e Verdrängungsstrategie verwen<strong>de</strong>t, die diese Aufteilungberücksichtigt. In Kapitel 4.2 wur<strong>de</strong> gezeigt, dass e<strong>in</strong> FPGA die besseren Ergebnisseerzielt, wenn mehrere Slots gleichzeitig rekonfiguriert wer<strong>de</strong>n können. Außer<strong>de</strong>m ist dieseStrategie dann am effektivsten, wenn weniger Sen<strong>de</strong>r als Empfänger vorhan<strong>de</strong>n s<strong>in</strong>d.Bei<strong>de</strong> Strategien s<strong>in</strong>d aus <strong>de</strong>n bereits dargelegten Grün<strong>de</strong>n nicht mite<strong>in</strong>an<strong>de</strong>r komb<strong>in</strong>ierbar.Das be<strong>de</strong>utet, dass man e<strong>in</strong>e Entscheidung h<strong>in</strong>sichtlich <strong>de</strong>r Be<strong>de</strong>utung vonLatenz und Fläche treffen muss. Ist e<strong>in</strong>e niedrige Latenz von hoher Be<strong>de</strong>utung, so solltedas framebased Schedule implementiert wer<strong>de</strong>n. Verfügt man aber nur über wenigeSlots (ist also <strong>de</strong>r FPGA relativ kle<strong>in</strong> und kann nicht alle Mo<strong>de</strong>s gleichzeitig speichern),so sollte man die Flächenoptimierung mit <strong>de</strong>r Verdrängungsstrategie aus Kapitel 4.1verwen<strong>de</strong>n.5.2 AusblickIn dieser Arbeit wur<strong>de</strong> für die <strong>Datenflussoptimierung</strong> nur <strong>de</strong>r e<strong>in</strong>fache Fall mit e<strong>in</strong>erInput Stage, e<strong>in</strong>er Process<strong>in</strong>g Stage und e<strong>in</strong>er Output Stage berücksichtigt. E<strong>in</strong> möglichesSzenario besteht dar<strong>in</strong>, dass e<strong>in</strong>e Process<strong>in</strong>g Stage Daten von zwei Input Stages benötigt.Das Schedul<strong>in</strong>g für e<strong>in</strong>en solchen Fall könnte durch e<strong>in</strong>e Erweiterung <strong>de</strong>r Schedul<strong>in</strong>gAlgorithmen implementiert wer<strong>de</strong>n.55


5 Zusammenfassung und Ausblick56


Literaturverzeichnis[1] D. Averberg. Synthese von <strong>de</strong>adl<strong>in</strong>e-konformen protokollkonvertern für heterogeneverteilte anwendungen. Studienarbeit, Universität Pa<strong>de</strong>rborn, März 2005.[2] Hennessy, John L. and Patterson, David A. and Goldberg, David und Asanovic,Krste. Computer Architecture. Morgan Kaufmann, June 2002.[3] Ihmor, Stefan and Dittmann, Florian. Optimiz<strong>in</strong>g Interface Implementation CostsUs<strong>in</strong>g Runtime Reconfigurable Systems . In , 2005.[4] Ihmor, Stefan and Hardt, Wolfram. Runtime Reconfigurable Interfaces - The RTR-IFB Approach. In Proceed<strong>in</strong>gs of the 11th Reconfigurable Architectures Workshop(RAW’04). IEEE Computer Society, 26 - 27 April 2004.[5] Ihmor, Stefan and Visarius, Markus and Hardt, Wolfram. A Consistent DesignMethodology for Configurable HW/SW-Interfaces <strong>in</strong> Embed<strong>de</strong>d Systems. Montreal,Canada, Aug. 2002.[6] Ihmor, Stefan and Visarius, Markus and Hardt, Wolfram. Mo<strong>de</strong>l<strong>in</strong>g of ConfigurableHW/SW-Interfaces. In RSS2003, pages 51 – 60, 2003.[7] T. Loke. Synthese von kommunikationsstrukturen <strong>in</strong> e<strong>in</strong>gebetteten systemen. Studienarbeit,Universität Pa<strong>de</strong>rborn, März 2005.57

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!