Der Aufbau von Datenerfassungssystemen für PCIe-Geräte mit hoher Bandbreite ist herausfordernd. Für diese Aufgabe wird häufig der sehr performante und in die Elektronik gut zu integrierende PCIe-Bus verwendet. Um die geforderte Rechenleistung zu erbringen kommen in der Regel Graphikprozessoren (GPUs) zum Einsatz. Zusätzliche Komplexität kommt durch die Notwendigkeit hinzu, die Entwicklung der Detektor-Hardware und der erforderlichen Auslesesoftware zu synchronisieren. Aufgrund der begrenzten Bandbreite des Systemspeichers ist für einen kontinuierlichen Datenfluss eine effiziente Implementierung des DMA-Protokolls notwendig. Für Echtzeitanwendungen sind sowohl Verarbeitungsgeschwindigkeit als auch Latenz zu beachten. Dies wird häufig von GPUs bereitgestellt. Um die Latenz zu reduzieren, ist es möglich, eine direkte Kommunikation zwischen Detektorelektronik und GPU unter Verwendung der NVIDIA GPUDirect- und AMD DirectGMA-Technologien herzustellen. Die entsprechenden Linux-Kerneltreiberschnittstellen sind allerdings schnelllebig und Kerneltreiber schwer zu entwickeln und zu warten. Hinzu kommt die Anforderung, die Entwicklung der Detektor-Hardware und der erforderlichen Auslesesoftware zu synchronisieren. Ein weiterer wichtiger Aspekt ist die Speicherung und Archivierung der erzeugten Daten. Das Speichersubsystem sollte in der Lage sein, einen Datenstrom von mehreren Gigabyte pro Sekunde kontinuierlich aufzunehmen. Die Lösung all dieser Anforderungen erfordert das Fachwissen verschiedener Bereiche, die sowohl Hardware- und Systemdesign als auch Software-Engineering umfassen.

Technologie

Die Advanced Linux PCI Services (Alps) sind eine Treiberplattform, die für die Entwicklung und den Test von anwendungs-spezifischer PCIe-basierter Elektronik gedacht ist. Sie ermöglicht die schnelle Entwicklung stabiler und effizienter Treiber für neu entwickelte Elektronik. Die Alps-Funktionalität umfasst ein flexibles Registermodell mit Skripting-Unterstützung, modulare Scatter-Gathering-DMA-Engines und RDMA-Kommunikation mit geringer Latenz zwischen GPUs und FPGA-Board unter Verwendung von GPUDirect- und DirectGMA-Technologien. Die Alps-Plattform wird derzeit von der am IPE entwickelten UFO-Smart-Kameraplattform verwendet. Aber auch für die Entwicklung der Elektronenstrahldiagnoseinstrumente KALYPSO und KAPTURE werden Alps-Treiber eingesetzt.

Um den Aufwand für die Treiberwartung, bei sich ständig weiterentwickelnden Linux-Kernel-Versionen, zu minimieren, besteht Alps aus zwei Komponenten. Ein kompaktes Kernelmodul bearbeitet Interrupts und verwaltet die DMA-Puffer. Der größte Teil der Funktionalität einschließlich der Implementierung der DMA-Protokolle ist jedoch außerhalb des Kernels in einer Userspace-Bibliothek realisiert. Trotz der Implementierung im Userspace kann die maximal mögliche Datenrate der verwendeten Elektronik immer erreicht werden. Mit PCIe Gen 3 und 16 Lanes wird beispielsweise eine Datenrate von bis zu 12 GB/s erreicht. Die Funktionen der Bibliothek stehen in Alps über eine flexible Skripting-Schnittstelle mit umfangreichen Debugging-Möglichkeiten zur Verfügung.

Die User-Space-Bibliothek gliedert sich in mehrere API-Schichten. Die Registerzugriffsschicht bietet Methoden zum Lesen, Schreiben und Modifizieren von Hardware-Registern. Die Liste der Register wird in einer XML-Datei definiert und kann auch zur Laufzeit modifiziert und erweitert werden. Standardmäßig ist die Elektronik mit ihren Register in einem oder in mehrere IO-mapped Speicherbereiche eingebunden, so dass für den Speicherzugriff die Standard-Linux-API verwendet werden kann. Benutzerdefinierte Register, die ein anderes Zugriffsprotokoll erfordern, werden als Plug-Ins implementiert. Sobald die Implementierung vorhanden ist, kann diese  ebenfalls in der XML-Konfiguration verwendet werden. DMA-Engines sind in der Regel spezifisch und sind daher ebenfalls über Plug-Ins realisiert.  Ein DMA-Plugin muss nur die Logik zur Interaktion mit den FPGA-spezifischen DMA-Registern implementieren. Die Verwaltung des DMA-Puffers wird von der Alps-Bibliothek übernommen.  Der Event-Engine-Layer definiert ein Event-basiertes Modell zur Integration von gerätespezifischem Funktionen als Plug-Ins. Jedes Gerät kann mehrere Event-Typen definieren die verschiedene Datentypen beinhalten. Die Events können sowohl von der Elektronik als auch von der Anwender-Software ausgelöst werden. Die Client-Anwendung kann Events abonnieren, um über diese benachrichtigt zu werden. Tritt das Event auf, erhält die Anwendung den gewünschten Datentyp.

Um die Vorteile großer Datenblöcke, die von modernen Dateisystemen unterstützt werden, voll auszuschöpfen und um Leistungseinbußen durch den Standard-POSIX-Stack zu vermeiden, haben wir die Bibliothek "FastWriter" entwickelt. Sie basiert auf der Linux-AIO-API und erlaubt es, Daten mit Raten von bis zu 3 GB/s zuverlässig aufzuzeichnen. Als Datensenken können SSD-RAIDs oder externe Magnetspeicher-Systeme verwenden werden, auf die über das iSER-Protokoll zugegriffen wird. Für die Online-Datenverarbeitung und Feedback-Systeme mit geringer Latenz sind die Technologien DirectGMA und GPUDirect integriert. DirectGMA realisiert die direkte Kommunikation zwischen unseren FPGA-Systemen und der professionellen Serie von AMD-Grafikkarten über den PCIe-Bus. Die Technologie ist als Erweiterung des OpenCL-Standards implementiert und vollständig in unser UFO-Parallel-Computing-Framework integriert. GPUDirect ist das Gegenstück zu NVIDIA und glänzt mit einer deutlich geringeren Latenz.

Die Alps-Plattform spiegelt den vielseitigen Charakter des Hardware-Designprozesses wider. Neue Hardware lässt sich durch die Beschreibung des Registermodells in XML leicht integrieren.  Ein einmal implementiertes DMA-Protokoll kann leicht für mehrere Hardware-Projekte wiederverwendet werden. Jegliche Änderungen des Hardware-Designs erfordern lediglich entsprechende Anpassungen in der XML-Konfiguration. Sogar die DMA-Engines können leicht angepasst werden, ohne dass die Treibersoftware geändert werden muss. Die Bereitstellung einer stabilen Treiberplattform schließt Fehlerquellen in der Software weitgehend aus. Die Hardware-Entwickler können sich so auf die Eliminierung von Hardware-Problemen konzentrieren.

Projekte

  • Studie zum Einsatz von GPUs als Track Trigger für CMS
  • Elektronenstrahldiagnose mit KALYPSO und KAPTURE
  • Datenkonzentrator für PANDA
  • UFO – Ultraschnelle Röntgentomographie