25 - Accelerating Data Processing Using FPGAs [ID:4726]
50 von 396 angezeigt

Was effektiver ist, den Co-Prozessor nicht als, wir haben das jetzt impliziten und expliziten Co-Prozessor genannt,

den nicht so nebendran zu stellen, sondern den Co-Prozessor so direkt in den Datenpart meines Systems reinzupacken,

will heißen, wir haben irgendwo unsere Datenquelle, Festplatte, kann auch was anderes sein, werden wir gleich noch sehen.

Und während ich die Daten lese in meinem Haussystem, fließen die so durch, durch meinen Co-Prozessor und sind dann in irgendeiner Art verarbeitet,

bevor sie sozusagen die CPU erreichen.

Das funktioniert in der Welt der Datenbanksysteme ganz besonders gut, wenn ich es schaffe quasi einen Datenpfad so zu bauen,

dass ich diesen Datenfluss wieder habe von der Quelle zu meinem Haussystem, aber wenn ich es schaffe,

dass ich unterwegs durch diese Vorverarbeitung im FPGA, dass ich da eine deutliche Reduktion meiner Datenmenge kriege.

Und ich werde jetzt im Folgenden zwei Beispiele zeigen, die wir gebaut haben, wo man sehr, sehr effektiv hergehen kann

und das FPGA dazu verwenden kann, sozusagen von der Komplexität her relativ einfache Aufgaben im FPGA zu lösen,

aber die Schwierigkeit der Aufgabe liegt an der Stelle im Datenvolumen, große Daten und einfache Aufgabe sozusagen.

Das ist, was so ein FPGA super geeignet ist.

Und wenn die Aufgabe dann noch so geartet ist, dass er das Datenvolumen quasi am Ausgang deutlich reduziert,

dann kann ich hier drüben auf der CPU diejenigen Aufgaben machen, die quasi echt eine schwierige Aufgabe sind,

auf verhältnismäßig kleinen Datenmengen, das ist das, was eine CPU super kann.

Und auf dem Weg können wir eigentlich so ein bisschen Stärken und Schwächen von FPGAs und CPUs besonders gut ausnutzen.

Ich möchte das an zwei Beispielen zeigen, die eigentlich beide diesem Muster folgen,

nämlich wir haben einmal ein System gebaut, das betreibt Filtern von XML-Daten direkt im Netzwerk

und ein zweites System, das ist quasi so ein echtes Datenbanksystem, das ist so eine intelligente Storage Engine für das MySQL-Datenbanksystem.

XML-Filtern im Netzwerk, ich möchte ganz kurz motivieren, weshalb das funktionieren kann und wie das funktionieren kann.

XML-Datenbanksysteme, die sind vor ein paar Jahren sehr populär geworden,

die hype App so ein ganz klein bisschen ab, aber es gibt nach wie vor sehr viele Systeme, die das tatsächlich verwenden.

Es gibt Anfragesprachen für XML und das hier oben ist so ein Beispiel für die Anfragesprache XQuery, das ist eigentlich so das SQL sozusagen für XML-Daten.

Die genaue Anfrage, die brauchen Sie jetzt nicht irgendwie verstehen oder so.

Was diese Anfragesprache auszeichnet, sind zwei Dinge.

Zum einen ist diese Anfragesprache extrem ausdrucksmächtig, die ist Turing-vollständig,

Sie können beliebig komplexe Programme in dieser Anfragesprache schreiben und reale XQuery-Programme, die sehen auch kompliziert aus.

Also die können richtig groß werden.

Die zweite Eigenschaft ist aber, dass in diesem XQuery drin, da steckt so ein Kern drin, der besteht aus XPath,

das ist eine Sprache, mit der Sie sehr einfach durch die Baumstruktur Ihres XML-Dokuments durchnavigieren können.

Und es gibt eine Möglichkeit, quasi aus einem großen XML-Dokument nur diejenigen Teile rauszupicken,

die für eine konkrete Anfrage möglicherweise relevant sind.

Und zwar in der Art, dass Sie diese Teile sehr leicht beschreiben können durch eine Menge an sogenannten Projektionspfaden.

Also das heißt, aus dieser Anfrage hier oben können Sie, also so sagen XML-Leute wissen, wie das geht,

können aus der Anfrage da oben die folgenden drei XPath-Anfragen, XPath-Pfade rausziehen.

Diese drei XPath-Anfragen, die können Sie jetzt auf Ihr XML-Dokument loslassen.

Sie reduzieren dann die Größe Ihres XML-Dokuments, weil Sie nur alles das übrig behalten, was einem dieser Pfade genügt.

Und wenn Sie auf das so gefilterte XML-Dokument die original Anfrage loslassen,

dann kriegen Sie das gleiche Ergebnis raus, wie wenn Sie die Anfrage auf dem vollständigen Dokument hätten laufen lassen.

Weil alles das erhalten bleibt, was die Anfrage da oben tatsächlich verwendet.

Da ist dann noch so ein bisschen Feinheiten.

Sie müssen an manchen Stellen, wenn Sie einen Baum haben, müssen Sie, an manchen Stellen reicht es, wenn Sie einzelne Knoten übrig behalten.

An anderen Stellen müssen Sie immer so ganze Teilbäume übrig behalten.

Das ist das, was dieses Hash-Symbol hier unten auf sich hat.

Aber das sind eigentlich XML-Details.

Also, wen es interessiert, kann ich da gerne nochmal fragen.

Weshalb ist das jetzt für uns besonders interessant?

Das Interessante ist, dass das ist genau so eine Aufgabe, wo ich vorher gesagt habe, die quasi hohe Komplexität im Sinne von irgendwie schwieriger Anfragesprache hat.

Und das hier unten ist was, was einfache Komplexität für die Auswertung hat.

Aber eben das muss ich auf großen Datenmengen ausführen, auf meiner ganzen Input-Datenmenge.

Presenters

Prof. Dr. Jens Teubner Prof. Dr. Jens Teubner

Zugänglich über

Offener Zugang

Dauer

00:44:43 Min

Aufnahmedatum

2015-02-27

Hochgeladen am

2015-03-11 12:19:21

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen