Zugriff auf RAM zur Verwendung mit einem FPGA für High Performance Computing

Ich erforsche die Idee, einen FPGA für lineare Algebra zu verwenden. Ich hätte gerne die Möglichkeit, mit großen Matrizen (> 4 GB) zu arbeiten. Aber moderne High-End-FPGAs haben RAM in der Größenordnung von Megabytes.

Bitte beschreiben Sie, wie ich entweder:

  • Fügen Sie einen externen RAM-Chip hinzu
  • Zugriff und Nutzung des RAM eines angeschlossenen PCs

Alle anderen Kommentare oder Rückmeldungen sind willkommen.

Ich habe derzeit ein Digilent basys2. Ich bin ein Anfänger.

Die Auswahl des RAM-Typs kann die Leistung Ihres Systems stark beeinflussen; wähle mit Bedacht.
Angesichts der Tatsache, dass auf dieser Platine nur 16 Allzweck-E / A vorhanden sind, ist die Anbindung an einen externen Speicher im PC-Stil wahrscheinlich eine Herausforderung, und die einzigen SPI-Lösungen, die mir einfallen, sind viel kleiner. Während die Leistung für das anfängliche Lernen und Experimentieren schlecht ist, versuchen Sie vielleicht am besten, den USB-Anschluss zu verwenden. Wenn man sich die Schaltung ansieht, scheint es einen AT90USB zu geben, der sich zumindest um einige der Dinge des USB-Protokolls kümmert. Ich bin selbst nur ein FPGA-Neuling, um abzuwarten, welche Antworten Sie erhalten, aber ich denke, im Allgemeinen kann es mit diesem Board etwas schwieriger sein, als es sich anhört.
Wenn Sie mit diesem Board festsitzen, sind Sie im Allgemeinen nicht in einer guten Position, um dieses Projekt durchzuführen. Wenn Sie mit so vielen Daten arbeiten und Geschwindigkeit wichtig ist, möchten Sie den Speicher auf derselben Platine wie das FPGA, wahrscheinlich mit einer DDR2- oder DDR3-Schnittstelle dazwischen (aber ich bin kein Experte dafür). Wenn Geschwindigkeit keine Rolle spielt, dann lösen Sie das Problem einfach am PC und ersparen sich das Herumfummeln am FPGA.
Gibt es einen Grund, warum Sie keinen Computer mit einer sehr schnellen Grafikkarte verwenden? NVIDIA CUDA oder ähnliches.
@KevinChen Ich habe Nvidia Tesla CUDA-Karten. Ich bin ein Forschungsstudent in hoch heterogenen Systemen. Ein FPGA würde für interessante Experimente für Probleme sorgen, die sich nicht gut auf diese Architektur anwenden lassen.

Antworten (1)

Aus verschiedenen Gründen werden das Digilent Basys2 und das Xilinx Spartan-3E für Sie nicht funktionieren.

Für diese Menge an RAM benötigen Sie etwas wie DDR2- oder DDR3-SDRAM mit einer ziemlich hohen Taktrate. Dies ist nicht etwas, das Sie einfach auf eine Prototyp-Leiterplatte löten können. Die Leiterplatte muss für die Verbindung mit dem Speicher ausgelegt sein, idealerweise mit bereits auf die Leiterplatte gelötetem RAM. Wenn Sie noch nie eine solche Schaltung entworfen haben, schlage ich vor, dass Sie sich ein FPGA-Board besorgen, auf dem sich bereits das RAM befindet. Dies wird jedoch schwierig, da alle FPGA-Boards, die ich (in 5 Minuten Suche) gesehen habe, viel weniger als 4 GB RAM hatten.

Als nächstes brauchen Sie etwas Neueres als den Spartan-3/3A/3E. Während das S3 ein ansonsten gutes FPGA ist, hat die Spartan-6-Serie noch viel mehr zu bieten. Es hat viel mehr internen RAM (aber Sie brauchen immer noch externen RAM), viel mehr DSP48-Blöcke und mehr Logik. Aber am wichtigsten ist, dass es eine viel bessere SDRAM-Schnittstelle hat als das, was der Spartan-3 hat. Und mit „viel besser“ meine ich „viel einfacher für einen Anfänger erfolgreich zu verwenden“. Der Speichercontroller im S6 ist eine Hard-IP, was für Sie bedeutet, dass es viel einfacher ist, die strengen Timing-Anforderungen der Schnittstelle zu SDRAM zu erfüllen.

Aber die Kontrolle von DDR2/DDR3 SDRAM ist nicht einfach. Xilinx hat ein Tool namens "Memory Interface Generator", das im Core Generator zu finden ist. Dies generiert die Speicherschnittstellenlogik für Sie und bietet Ihnen viele coole Funktionen, die Ihnen das Leben erleichtern werden.

Eine Alternative zum Spartan-6 wäre ein Virtex-5 oder eines der Teile der 7er-Serie. Alle diese haben Speicherschnittstellen, die so gut oder besser sind als die des Spartan-6.

Dieses auf Virtex-7 basierende Board hat einen Sockel für zwei SO-DIMM-Module, mit denen Sie über 4 GB RAM hinauskommen könnten – aber es ist mit 5.000 US-Dollar super teuer.

Ich sollte auch erwähnen, dass ich Ihre Bemühungen unterstütze, wenn Sie dies tun, weil Sie etwas über FPGAs und Elektronik lernen möchten. Aber wenn Sie denken, dass dies irgendwie schneller sein wird als Standard-PCs, dann habe ich schlechte Nachrichten für Sie. Für das Geld ist es schwer, einen Intel i7-basierten Quad-Core-Rechner mit einer vernünftigen GPU-Karte zu schlagen. Ich warne Sie nur, falls Sie sich wirklich nur für mathematische Geschwindigkeit interessieren.

+1 für einen Kommentar darüber, dass eine moderne CPU / GPU für Mathematik nicht geschlagen wird. Es gibt einen Grund, warum moderne Supercomputer mit diesen und nicht mit FPGAs hergestellt werden!