Der PXI Multicomputing Standard definiert die Hardware- und Softwareanforderungen, um zwei oder mehrere „intelligente“ Systeme, über PCI- oder PCI-Express-basierte Schnittstellen und eine sogenannte nicht transparente PCI-Express-Brücke (NTB) miteinander zu verbinden. Der PCI-Express-Bus bietet einen hohen Datendurchsatz mit mehreren GByte/s und eine geringe Latenz im Bereich von µs und ist somit gut geeignet, diesen Anforderungen mit einem optimalen Kosten-Nutzen-Verhältnis gerecht zu werden.
Technologie und Systemübersicht
In der typischen Struktur (Bild 1) eines PCI-Express-basierten Host-Systems kommunizieren PCI Express Switches mit dem zentralen Verarbeitungssystem (Root Complex) und den PCI/PCI-Express-Geräten (Endpoint Devices). Das zentrale Verarbeitungssystem stellt eine Verbindung zum Systembus her, um allen PCI/PCI-Express-Geräten des Systems die erforderlichen Ressourcen (Bus, RAM, CPU und so weiter) zugänglich zu machen.
Auf einen Blick
Entwickler stehen häufig vor der Aufgabe, große Datenmengen sowohl mit immer höherer Geschwindigkeit und steigender Kanalanzahl erfassen und erzeugen, als auch mit minimaler Latenz übertragen und direkt verteilt verarbeiten zu können. Neben diesen Anforderungen müssen sich Test- und Regelsysteme noch durch weitere Eigenschaften wie Flexibilität, Skalierbarkeit, Modularität, niedrige Gesamtsystemkosten (TCO) und Vendor-Interoperabilität auszeichnen. Der Standard PXI Multicomputing (PXImc), der durch die PXI Systems Alliance (PXISA) bereits im November 2009 verabschiedet wurde, versucht diesen Anforderungen mit kommerziell verfügbaren Technologien (COTS) gerecht zu werden.
Der PXImc-Standard spezifiziert ein Kommunikationsmodell in dem PCI und PCI Express als physikalische Kommunikationsschicht eingesetzt werden und damit einen hohen Datendurchsatz mit mehreren GByte/s und eine geringe Latenz im Bereich von wenigen µs realisiert. Eine direkte Verbindung zwischen zwei Systeme mit eigenen Systembussen kann jedoch nicht direkt über PCI/PCI Express erfolgen, da dies unweigerlich zu Ressourcenkonflikten zwischen den beiden eigenständigen Bereichen (PCI-Express-Domains) führen würde, beispielsweise bei der Busverwaltung und Endpunkt-Ressourcenvergabe (Endpoints, Devices).
Die Verwendung einer nichttransparenten Brücke (Non-Transparent Bridge, NTB) löst diese Problematik, indem die PCI-Bereiche logisch voneinander getrennt werden, gleichzeitig aber ein Mechanismus bereitgestellt wird, mit dem bestimmte Daten von einem PCI-Express-Bereich auf den anderen übertragen werden können (Inter-Domain Switching).
Über die NTB (Bild 2) können sowohl System A als auch System B die Ressourcenvergabe in ihren eigenen Bereichen selbstständig steuern und werden dabei nicht durch eine nicht-transparente PCI-Express-Brücke als Schnittstelle beeinflusst. Die nichttransparente Brücke reagiert auf Anfragen des Systembusses wie die anderen PCI-Endpunkte des Systems und fordert einen bestimmten physikalischen Adressraum an. Das BIOS des Systems teilt der nichttransparenten Brücke einen speziellen Bereich im physikalischen Adressraum zu. Da diese Ressourcenvergabe sowohl in System A als auch in System B stattfindet, fordert die nichttransparente Brücke die Ressourcen in beiden PCI-Bereichen (A und B) an.
Wie in Bild 3 dargestellt, dient der Adressraum, der von der nicht transparenten Brücke im PCI-Express-Bereich von System A erfasst wird, als Fenster in den physikalischen Adressraum des PCI-Express-Bereichs von System B und der Adressraum, der im PCI-Bereich von System B erfasst wird, als Fenster in den physikalischen Adressraum des PCI-Bereichs von System A.
Nach der Ressourcenvergabe auf beiden Systemen verfügt die nicht transparente Brücke über Speichermechanismen, um Daten zwischen beiden Systemen zu übertragen (Mapping). Dazu gehören Elemente wie ein schneller Zwischenspeicher für die Datenübertragung, Interruptregister zur Signalisierung und große Bereiche des Adressraums, die über die nicht transparente Brücke in den gegenüberliegenden Adressraum übertragen wird. Nicht transparente Brücken sind zwar keine neue Technologie, aber bisher gab es dazu keinen branchenweiten Standard, der die Kommunikation zwischen PCI-Express-Bereichen erleichtert hätte. Lösungen hierfür erfordern jedoch ein benutzerdefiniertes Hard- und Softwaredesign, bevor sie als Kommunikationskanal eingesetzt werden können.
Systembandbreite und -performance
Da PXImc PCI Express als physikalische Kommunikationsschicht verwendet, hängt die Leistung beziehungsweise die theoretische Bandbreite einer PXImc-Verbindung vom Typ der PCI-Express-Schnittstelle ab. Um diese vergleichen zu können, hat NI einige Benchmarktests mit Prototypenhardware und vorläufigen Software-Stacks durchgeführt. Für diesen Benchmark wurden zwei Chassis des Typs NI PXIe-1085 mit je einem NI-PXIe-8135-Controller und einem PXImc/PXI-Express-Adapter (PCI Express x8 Link, Gen 2, NI PXIe-8384, LabVIEW 2013 und 64 Bit Windows 7) ausgestattet. Mit diesem Setup wurden eine Latenz (unidirektional) von 5 µs und ein kontinuierlicher, aufrechtzuerhaltender Datendurchsatz von 2,7 GByte/s erzielt.
Im Vergleich zu klassischem Gigabit-Ethernet stellt diese in etwa eine zehnmal höhere Bandbreite und 100-mal geringere Latenz dar und validiert den PXImc-Standard als ideale Schnittstelle für den Aufbau von High-Performance-Mehrrechnersystemen in modernen Test- und Regelanwendungen. Zukünftige Verbesserungen am PCI-Express-Standard können so automatisch die Leistung von PXImc weiter skalieren.
Anwendungsbereiche und Systemarchitektur
Die folgenden drei Anwendungsbereiche profitieren am meisten von der PXImc-Technologie:
- Hybride High-Performance-Mess- und -Prüfsysteme,
- mehrere Systeme mit (Multicore-) CPUs für die verteilte Verarbeitung (Distributed-Chassis Multi-Master Processing),
- Einzelsysteme mit von x86-basierten CPUs als Co-Prozessoren
(In-Chassis Multi-Master Processing).
Komplexe Mess- und Prüfsysteme, wie sie zum Beispiel im Bereich HIL (Hardware-in-the-Loop) zu finden sind, bestehen typischerweise aus verschiedenen diskreten Teilsystemen (Subsystem, Secondary Nodes), die unterschiedliche Funktionen erfüllen. Oft sind diese Teilsysteme sogar auf unterschiedlichen hybriden Hardwareplattformen und Zielgeräten realisiert, die von der Verarbeitungsleistung und -geschwindigkeit optimal sind und den funktionalen Anforderungen des Gesamtsystems am einfachsten gerecht werden.
Die PXImc-Spezifikation ermöglicht die Verbindung dieser Teilsysteme über eine PCI-Express-Verbindung und bietet die ideale Kombination aus Leistung, Flexibilität und Kosteneffizienz. Durch die Nutzung von PXImc als Kommunikationsbus können solche Systeme im Vergleich zu Gigabit-Ethernet-Netzwerken und der Reflective-Memory-Technologie deutlich kürzere Test- und Zykluszeiten realisieren und so, zum Beispiel im Falle von HIL-Anwendungen, genauer reale Bedingungen nachbilden.
Bild 4 zeigt eine typische Konfiguration für ein solches System. In diesem Beispiel kommuniziert das übergeordnete PXI-System (Master) über die PXImc-Verbindung mit einem PXI-Subsystem (Secondary) und einem externen High-Performance-Messgerät mit PXImc-Schnittstelle, um ein flexibles und leistungsstarkes hybrides Mess- und Prüfsystem zu erstellen.
Anwendungen aus den Bereichen Signal Intelligence (SIGINT) und Real-Time High-Performance Computing (RTHPC), die Echtzeit- oder/und Inline-Datenverarbeitung erfordern, brauchen in der Regel leitungsstarke Datenverarbeitungsfähigkeiten, um mit dem kontinuierlichen Datenstrom Schritt halten zu können. Diese Anwendungen müssen die Fähigkeit haben, die Verarbeitungslast zwischen mehreren diskreten Verarbeitungsknoten (Nodes) mit einer Kommunikationsschnittstelle, die eine hohe Bandbreite und niedrige Latenz bietet, zu verteilen. Bei einigen verteilten Verarbeitungssystemen kann die Verwendung von Field-Programmable Gate Arrays (FPGAs) und diskreten digitalen Signalprozessoren (DSPs) als Co-Prozessoren diesen Bedarf unter Umständen decken.
Manche Anwendungen erfordern jedoch den Einsatz von bestehendem x86-basiertem Software-IP oder müssen Floating-Point-Operationen direkt durchführen können. In solchen Fällen bietet die PXImc-Technologie die Möglichkeit, mehrere verteilte Verarbeitungssysteme (x86 Compute Node) als zusätzliche externe Rechenknoten zu verwenden. Dieser Ansatz entspricht nicht nur den oben angeführten Anforderungen, sondern vereinfacht auch den vergleichsweise komplexen Entwicklungsprozess für FPGAs und DSPs und verkürzt so den Zeitaufwand für Entwicklung und Fehlerbehebung. Bild 5 zeigt exemplarisch eine Distributed-Computing-Systemkonfigurationen, die ein PXI-Express-System und PXImc-Schnittstellenkarten einsetzt.
In diesem Beispiel ist der übergeordnete PXI-Controller (Master) verantwortlich für die Aggregation der Daten von verschiedenen PXI-Modulen (I/O) und verteilt dann die Daten über PXImc-Verbindungen an vier x86-basierte Rechenknoten. Diese Rechenknoten können je nach benötigter Rechenleistung als reguläre, kommerziell verfügbare PCs oder High-End-Workstations ausgeführt sein.
Die PXImc-Spezifikation ermöglicht in der dritten Variante, dass die Rechenknoten (zum Beispiel als Prozessor-PXI-Module) direkt On-Board NTBs einsetzen. Dies bedeutet, dass sich solche Prozessormodule in einem Peripherie-Slot eines PXI-Express-Chassis befinden können und direkt die Chassis-Backplane verwenden, um mit den PXI-Modulen (Endpoints) und/oder dem PXI-Controller (Master) zu kommunizieren. Mit dieser peripheren In-Chassis-Verarbeitung erhöht sich die gesamte Verarbeitungskapazität von einem einzigen System und bietet eine kompakte und robuste Lösung. Diese Variante ist ideal für die Verarbeitung von rechenintensiven Test- und Regelaufgaben, minimiert die Gesamtsystemgröße und vereinfacht die Portabilität von System zu System.
NI PXImc – Schnittstelle für die PXI-Express-Plattform
Das Modul NI PXIe-8383mc (Bild 6) ist das industrieweit erste PXImc-Schnittstellenmodul von NI. Diese Hardware kann mit LabVIEW 2013 (32/64 Bit), C und C++ über den PXImc-1.0-Treiber integriert werden und ist unter Windows 7 und LabVIEW Real-Time einsetzbar.
Es verwendet ein PCI-Express-Kabel (PCIe 2.0, x8-Verbindung) zu unterschiedlichen Host-Adaptern – entweder ein PXIe-8384-Modul, um weitere, sekundäre PXI-Express-Systeme anzubinden oder eine PCIe-8381-Karte, um sich mit PC-basierten Rechenknoten zu verbinden. In dieser Konfiguration lässt sich ein Datendurchsatz von bis zu 2,7 GByte/s bei sehr geringer Latenz von lediglich 5 µs erzielen.
Pro PXI-System können nicht nur mehrere PXImc-Module eingesetzt werden, denen jeweils eigenständige Betriebssystem-/Systemressourcen zugewiesen werden, sondern es besteht auch die Möglichkeit mehrere Sessions pro PXImc-Modul zu erzeugen. In diesem Fall wird der durch den Treiber allokierte Speicher zwischen den Sessions aufgeteilt und jede Session ist über eine eigene ID eindeutig identifizierbar. Der Vorteil von mehreren parallelen Sessions liegt zum Beispiel in der logischen Trennung von Daten und Steuerbefehlen.
Zusammenfassung
Entwickler moderner Test- und Regelsysteme stehen häufig vor der Aufgabe, große Datenmengen sowohl mit immer höherer Geschwindigkeit und steigender Kanalanzahl erfassen und erzeugen, als auch mit minimaler Latenz übertragen und direkt verteilt verarbeiten zu können. Der Standard PXI Multicomputing (PXImc) versucht diesen Anforderungen mit kommerziell verfügbaren Technologien (COTS) gerecht zu werden und definiert Hardware- und Softwareanforderungen, um zwei oder mehrere „intelligente“ Systeme miteinander über PCI-Express-basierte Schnittstellen und eine nicht transparente PCI-Express-Brücke (NTB) zu verbinden. Dieser Vorgehensweise bietet einen hohen Datendurchsatz mit mehreren GByte/s und eine geringe Latenz im Bereich von µs und ist somit gut geeignet, diese Anforderungen zu erfüllen.
(jj)