Academic Über NI Veranstaltungen NI Developer Zone Support Lösungen Online Store Kontakt MyNI

Dokumententyp: Tutorium
Von NI unterstützt: Ja
Veröffentlichungsdatum: 28.01.2008


Feedback


Ja Nein

Thematisch verwandte Links - Developer Zone

Thematisch verwandte Links - Products and Services

Einführung in das symmetrische Multiprocessing (SMP) mit LabVIEW Real-Time

0 Bewertung(en) | 0.00 von 5
Sprache | Drucken

Übersicht

Dieses Dokument ist Teil der Serie zu den „Grundlagen der Multicore-Programmierung“
Multicore Programming Fundamentals Whitepaper Series


Serie zu den „Grundlagen der Multicore-Programmierung“

Symmetrisches Multiprocessing, kurz SMP, ist eine Eigenschaft von Betriebssystemen, welche Multicore-Prozessoren die Ausführung eines einzigen Vorgangs des Betriebssystems sowie die Anbindung an einen gängigen Hauptspeicher ermöglicht, während parallel dazu Programmcode ausgeführt wird. Die meisten modernen Desktop-Betriebssysteme (Windows, Linux, MacOS etc.) unterstützen SMP. In Echtzeitbetriebssystemen gehört die SMP-Unterstützung allerdings noch nicht zum Standard.

Dieses Whitepaper beschreibt, wie sich die SMP-Unterstützung im LabVIEW 8.5 Real-Time Module ausnutzen lässt, um höchst leistungsfähige Echtzeitanwendungen auf Multicore-Systemen zu implementieren.

Einleitung

Das LabVIEW 8.5 Real-Time Module umfasst die NI RT Extensions for SMP zur Ergänzung des ETS-Echtzeitbetriebssystems um Multicore-Unterstützung. Nach Installation der NI RT Extensions for SMP können Anwender die Vorteile der leistungsstarken Multicore-Prozessortechnologie nutzen. Abbildung 1 stellt den Prozess des sogenannten Auto-Load-Balancing dar, der es dem Real-Time Module erlaubt, Anwendungs-Threads auf die verfügbaren Prozessorkerne eines ETS-Echtzeitzielsystems zu verteilen.

Abbildung 1: Unterstützung von SMP durch LabVIEW Real-Time

Zuweisung von Tasks an bestimmte Prozessoren mit der zeitgesteuerten Schleife

Um die Leistung und Zuverlässigkeit eines Echtzeitsystems noch weiter zu erhöhen, können zeitgesteuerte Schleifen (Timed Loops) ganz einfach bestimmten Prozessorkernen zugewiesen werden. So lässt sich ein Core für die Ausführung einer zeitkritischen Steuer- und Regelschleife reservieren und von weniger wichtigen Tasks, die auf anderen Cores ablaufen, isolieren. Dies wird in Abbildung 2 gezeigt.

Abbildung 2: Ein zeitkritischer Task wird einem bestimmten Prozessor zugewiesen.

Mit dem LabVIEW 8.5 Real-Time Module lässt sich eine zeitgesteuerte Schleife einem bestimmten Prozessorkern zuweisen. Jede zeitgesteuerte Schleife stellt einen einzigartigen Thread dar und mit dem Abschnitt Prozessorauswahl des Dialogfelds Zeitgesteuerte Schleife konfigurieren kann der Anwender festlegen, dass der Thread nur auf einem bestimmten Core abläuft (siehe Abb. 3).

Abbildung 3: Eine zeitgesteuerte Schleife wird einem bestimmten Prozessorkern zugewiesen.

Fehlerbehebung bei echtzeitfähigen Multicore-Anwendungen

Mit zunehmender Komplexität von Anwendungen muss man auch im Low-Level-Bereich verstehen, wie Programmcode auf dem Echtzeitsystem ausgeführt wird. Die Ergänzung eines Systems mit zusätzlichen Prozessorkernen trägt darüber hinaus noch zu dieser Komplexität bei. Das Real-Time Execution Trace Toolkit 2.0 liefert eine visuelle Darstellung sowohl von VI- als auch von Thread-Ausführung auf Single- und auf Multicore-Systemen. So lassen sich kritische Stellen im Code und unerwünschtes Verhalten wie etwa Ressourcenkonflikte, Speicherzuweisung und Prioritätsumkehr aufspüren.

Abbildung 4: Real-Time Execution Trace Toolkit 2.0 mit Unterstützung von Fehlerbehebung in Multicore-Systemen

Auf Real-Time-8.5-Zielsystemen kann die CPU-Auslastung von echtzeitfähigen Multicore-Systemen auch mit der CPU-Nutzungsanzeige auf dem Bildschirm überwacht werden. Dieses Programm zeigt alle Informationen direkt auf einem Display an, der mit dem Echtzeitzielgerät verbunden ist. Angezeigt werden etwa die Gesamtauslastung (Total Load), ISR-Auslastung (Interrupt Service Request) und die CPU-Auslastung durch zeitgesteuerte Strukturen (Timed Structures) sowie durch Threads (Other Threads).

Abbildung 5: CPU-Nutzungsanzeige auf dem Bildschirm

Gerüstet für Multicore

Wird Echtzeitsoftware auf Multicore-Prozessoren übertragen, kann die Skalierbarkeit erheblich variieren. Deshalb muss jede Ebene der Software Multicore-fähig sein. Der Prozess, der notwendig ist, um dies zu erreichen, kann sich äußerst zeit- und kostenaufwändig gestalten. Ein großer Vorteil des LabVIEW 8.5 Real-Time Module besteht darin, dass die gesamte Software bereits alle Vorraussetzungen für die Multicore-Bereitschaft erfüllt.

Zu den echtzeitfähigen Softwarekomponenten gehören Entwicklungswerkzeuge, Bibliotheken, Gerätetreiber und ein Echtzeitbetriebssystem. Viele Echtzeitanwendungen von Systemen älteren Datums beruhen auf einer Softwarearchitektur, die nur für die Ausführung auf einem Prozessor konzipiert war. In Tabelle 1 werden einige Überlegungen aufgezeigt, die bei der Evaluierung der Einsatzbereitschaft echtzeitfähiger Softwarekomponenten einer typischen Steuer- und Regelanwendung helfen sollen.

Echtzeitfähige Softwarekomponenten

Bereit für den Multicore-Einsatz

Entwicklungswerkzeug

Auf dem Echtzeitbetriebssystem wird Unterstützung bereitgestellt. Das Werkzeug ermöglicht die Zuweisung und Optimierung von Threads. Funktionen für die Fehlerbehebung und Ablaufverfolgung werden bereitgestellt, um echtzeitfähige Multicore-Systeme zu analysieren.

Bibliotheken

Bibliotheken sind Thread-sicher und können ablaufinvariant gesetzt werden, so dass sie parallel ausgeführt werden können. Algorithmen sind so umgesetzt, dass sie keine Speicherzuweisung und keinen Jitter im System verursachen.

Gerätetreiber

Treiber wurden für eine optimale multithreading-fähige Leistung entwickelt.

Echtzeitbetriebssystem

Das Echtzeitbetriebssystem unterstützt Multithreading und Multitasking und kann mithilfe von SMP Tasks auf Multicore-Prozessoren verteilen.

Tabelle 1: Für Multicore gerüstete Echtzeitsoftware

Eine häufige Schwachstelle bei Echtzeitsystemen sind Gerätetreiber, die nicht Thread-sicher sind oder Bibliotheken, die nicht ablaufinvariant ausgeführt werden können. Nicht ablaufinvarianter Code funktioniert zwar eventuell noch, kann aber auf einem Multicore-Prozessor nicht parallel ausgeführt und zu einer gemeinsam genutzten Ressource werden, was zu Leistungseinbußen führen kann. LabVIEW umgeht diese Schwachstellen mit Thread-sicheren und ablaufinvarianten I/O-Treibern wie DAQmx sowie mit mathematischen Bibliotheken, die für die ablaufinvariante Ausführung konzipiert sind.

Einige VIs und Funktionen aus der Palette Mathematik und Signalverarbeitung sind standardmäßig für die nicht ablaufinvariante Ausführung konfiguriert. VIs können über die Seite Ausführung des Dialogfensters VI-Einstellungen für die ablaufinvariante Ausführung konfiguriert werden.

Kundenlösung zu LabVIEW Real-Time SMP: Wineman Technologies

Wineman ist ein Partner von National Instruments, der Steuersysteme für Dynamometer sowie Hardware-in-the-Loop-Simulatoren entwickelt. Dabei kommen PID-Regelung, Erzeugung von Profilen, Alarme, Erstellung von Skripten, Analog- und Digital-I/Os, CAN, Modbus und TCP/IP-Kommunikation zum Einsatz. Die Produktfamilie von Wineman umfasst die Anwendungen EASE und INERTIA, die eine Architektur verwenden, welche auf LabVIEW Real-Time basiert.

Die Entwickler bei Wineman standen vor dem Problem, die hohe CPU-Auslastung zu optimieren. Eine Schleife mit hoher Priorität in einer ihrer gängigen Anwendungen beanspruchte den Großteil des Single-Core-Prozessors, um die Anforderungen an die Ausführung zu erfüllen. So blieb Schleifen mit niedrigerer Priorität nur wenig Zeit, Tasks wie etwa die Kommunikation mit der Benutzeroberfläche und Datenprotokollierung durchzuführen. Infolge dieser Ressourcenknappheit war die Anwendung schwer bedienbar und/oder instabil.

Dank der SMP-Unterstützung im LabVIEW 8.5 Real-Time Module konnte das bestehende System von Wineman um zusätzliche Regelschleifen ergänzt und die Leistung mit nur geringfügigen Änderungen am LabVIEW-Code um 40 % gesteigert werden.


[+] Bild vergrößern

Die Unterstützung von Multicore-Prozessoren durch LabVIEW Real-Time verbesserte die Gesamtleistung der Produkte des Unternehmens Wineman erheblich. Besonders bemerkenswert ist dabei, dass die Vorteile der Multicore-Technologie genutzt werden konnten, ohne den LabVIEW-Code wesentlich zu ändern. Durch die Nutzung der inhärenten Parallelität von LabVIEW wurden die Anwendungen von Wineman so auf die Multicore-Umgebung migriert, dass sie optimal von der zusätzlichen Verarbeitungsleistung profitieren konnten. Die nahtlose Unterstützung von SMP ermöglichte es Wineman, die Steuersysteme für Dynamometer und ihre Hardware-in-the-Loop-Simulatoren um zusätzliche Funktionalität zu ergänzen und so den Anforderungen der Endkunden noch besser gerecht zu werden.

Fazit

LabVIEW 8.5 Real-Time eröffnet Entwicklern von Echtzeitsystemen die Möglichkeit, die Leistung von Multicore-Prozessoren für ihre Echtzeitanwendungen zu nutzen. Neben der SMP-Unterstützung führt LabVIEW 8.5 erweiterte Fehlerbehebungswerkzeuge wie etwa das Execution Trace Toolkit 2.0 ein, mit dem VI- und Thread-Ausführung auf einem Multicore-System visuell analysiert werden können.

Die Multicore-kompatible Softwarearchitektur von LabVIEW 8.5 Real-Time ermöglicht es Unternehmen wie Wineman, mit der Migration auf Multicore-Systeme sofort Leistungssteigerungen zu erzielen, ohne den ursprünglichen LabVIEW-Code wesentlich zu ändern.

Weitere Ressourcen zur Multicore-Programmierung


Serie zu den „Grundlagen der Multicore-Programmierung“


 

 

0 Bewertung(en) | 0.00 von 5
Sprache | Drucken

AGB
Dieses Tutorium ("Tutorium") wurde von National Instruments ("NI") entwickelt. Auch wenn National Instruments dieses Tutorium technisch unterstützt, ist es jedoch möglich, dass dieses Tutorium nicht umfassend getestet und überprüft wurde. NI übernimmt weder Garantien bezüglich der Qualität des Tutoriums noch bezüglich der weiteren technischen Unterstützung neuer Versionen ähnlicher Produkte und Treiber. DIESES TUTORIUM WIRD IM "IST-ZUSTAND" ZUR VERFÜGUNG GESTELLT UND NI ÜBERNIMMT KEINERLEI GARANTIEN. AUSFÜHRLICHERE ERLÄUTERUNGEN ZU ANDEREN EINSCHRÄNKUNGEN ENTNEHMEN SIE BITTE DEN NUTZUNGSBEDINGUNGEN AUF NI.COM (http://ni.com/legal/termsofuse/unitedstates/us/).