Multicore-Architekturen

Jürgen Bregenzer | Günter Herkommer,

Wie sich die Rechenlast optimal verteilen lässt

Der Einsatz mehrerer CPU-Kerne auf einem Chip verspricht einen deutlichen Performance-Gewinn in Steuerungsanwendungen. Die dafür unabdingbare Parallelisierung der Automatisierungsfirmware erfordert allerdings geeignete Werkzeuge und Methoden, die eine optimale Verteilung der Tasks auf die zur Verfügung stehenden CPU-Kerne ermöglichen.

© Bosch Rexroth

Bild 1. Zyklisches Laufzeitverhalten der Tasks in der Steuerung Indramotion MLC von Rexroth.

© Bosch Rexroth

Der verstärkte Einsatz von Multicore-Prozessor-Architekturen etwa ab dem Jahr 2005 hat nicht nur PCs einen deutlichen Leistungsschub beschert. Auch in der Automatisierungstechnik gibt es mittlerweile Ansätze, wie sich die Performance der Anwendungen durch den Einsatz mehrerer CPU-Kerne steigern lässt. Die effiziente Nutzung von Multicore-Prozessoren erfordert allerdings die Partitionierung einer Applikation in eine ausreichende Anzahl möglichst echt parallel ausführbarer Tasks, die sich den unterschiedlichen CPU-Kernen zuweisen lassen. Dies hat zur Konsequenz, dass der Umfang der Leistungssteigerung beim Wechsel auf eine leistungsfähigere CPU-Architektur nicht mehr allein durch die Hardware, sondern zu einem wesentlichen Teil durch die Software bestimmt wird.

Moderne Automatisierungsfirmware ist aufgrund ihrer Komplexität meist be-
reits als Multitasking-System implementiert: Dabei sind die einzelnen Funktionsbereiche der Steuerung unterschiedlichen Tasks zugeordnet, die vom jeweiligen Echtzeit-Betriebssystem unter wechselseitigem Ausschluss zur Ausführung gebracht werden. Das Betriebssystem führt zu diesem Zweck ein prioritätenbasiertes, prä­emptives Scheduling durch, so dass eine Task temporär unterbrochen wird, sobald eine Task höherer Priorität ausführungs­bereit ist. Um ein korrektes und zuver­lässiges Systemverhalten zu gewährleisten, sind deshalb die Task-Priori-
täten entsprechend der Relevanz der einzelnen Funktionsbereiche mit Sorgfalt zu wählen.

Am Beispiel der Standard-Konfiguration der Controller-basierten Motion-Logic-Steuerung IndraMotion MLC von Rexroth stellt Bild 1 das zyklische Laufzeitverhalten einer derartigen Multitasking-Firmware dar. Der Zyklus beginnt hier mit einer durch den Feldbus-Takt getriggerten Task hoher Priorität, die die vom Feldbus gelieferten Istwerte in den Arbeitsspeicher kopiert. Ist dieser Vorgang beendet, erfolgt ein Kontextwechsel zum Motionkernel, der diese Daten auswertet und aufbereitet. Nun wird die Motion-Task gestartet, die das Motion-Programm der SPS abarbeitet. Ist auch diese Task beendet, erfolgt ein Kontextwechsel zurück zum zuvor unterbrochenen Motionkernel, der nun die Sollwert-Generierung mittels Interpolation durchführt. Erst nach Ende dieser Berechnungen werden die übrigen Tasks niedrigerer Priorität ausgeführt.

Je nach Takt sind dies die zyklische SPS-Task, die logische Verknüpfungen von Eingangswerten zu Ausgangswerten durchführt, sowie diverse Kommunikations- und Hintergrund-Tasks. Zum Ende des Zyklus wird schließlich erneut ein Task zum Kopieren der Sollwerte zum Feldbus getriggert.
Ein derartiges Multitasking-Systems bietet ideale Voraussetzungen für eine Parallelisierung, da die Gesamt-Funktionalität bereits in eine Menge zumindest partiell nebenläufiger Kontrollflüsse partitioniert ist. Die Performance einer Multicore-CPU lässt sich nun durch eine Verteilung der bestehenden Tasks auf die CPU-Kerne ausnutzen.

Anzeige

Die Herausforderungen bei der Parallelisierung

Bild 2. Die Applikations-Software Indraworks erlaubt eine Konfiguration des Tasksystems inklusive der Core-Zuordnungen.

© Bosch Rexroth

Grundsätzlich gibt es bei der Verteilung der Rechenlast auf die CPU-Kerne zwei Alternativen: Beim dynamischen Scheduling kann das Betriebssystem die Zuordnung der Tasks zu den CPU-Kernen zur Laufzeit den aktuellen Lastverhältnissen anpassen. Alternativ dazu kann diese Zuweisung zum Entwicklungszeitpunkt oder beim Steuerungshochlauf definiert werden und ist dann zur Laufzeit des Systems statisch (partitioniertes Scheduling).

Ein partitioniertes Scheduling hat generell den Vorteil, dass die Anzahl möglicher Konstellationen der echt parallelen Code-Ausführung reduziert wird und man somit eine deterministischere System-Zuverlässigkeit erreicht. Darüber hinaus ist poten­ziell eine höhere Performanz erzielbar, da durch die Verhinderung von Task-Migra­tionen zwischen CPU-Kernen seltener Cache-Inhalte aus langsameren Speichern nachgeladen werden müssen.In der Automatisierungstechnik ist generell ein partitioniertes Scheduling besonders geeignet, da die Lastdynamik der Firmware zur Laufzeit in der Regel sehr gering und zudem zyklisch ist. Eine universelle Steuerung muss allerdings für viele verschiedene Maschinentypen einsetzbar sein, die mitunter sehr unterschiedliche Anforderungen an die Verteilung der Rechenlast stellen. Um die gewünschte, zur Laufzeit statische Task-Zuordnung damit in Einklang zu bringen, gibt es folgende Optionen:

■ Die Task-Zuordnung kann zum Entwurfszeitpunkt der Firmware statisch vorgegeben werden und ist somit in allen Einsatz-Szenarien der Steuerung identisch. Somit ist bei der Wahl der Verteilung bereits das zu erwartende Verhalten unter einer ausreichend großen Menge typischer Lastprofile zu berücksichtigen.

■ Alternativ dazu kann die Task-Zuordnung auch erst im Rahmen der Applikation der Steuerung an der Maschine definiert werden. Dies ermöglicht eine an das maschinenspezifische Lastprofil der Firmware angepasste Optimierung der Parallelisierung und somit zusätzliche Leistungssteigerungen.

Generell empfiehlt sich ein zweistufiges Vorgehen mittels einer Kombination der beiden Möglichkeiten. Das heißt: Um den Konfigurationsaufwand zu reduzieren, sollte die Firmware bereits zum Auslieferungszeitpunkt für eine Vielzahl typischer Einsatz-Szenarien eine hohe Performance in Folge einer geeigneten Task-Zuordnung aufweisen. Zusätzlich sollte allerdings im Rahmen der Applikation die Möglichkeit geboten werden, entsprechende Anpassungen an der voreingestellten Verteilung vorzunehmen, um die Leistungsfähigkeit des Systems weiter zu erhöhen. Das Werkzeug zur generellen Anpassung der Task-Konfiguration an die jeweiligen Rahmenbedingungen des Systems ist im Fall der Rexroth-Umgebung die Engineering-Software Indraworks.

Bereits heute ermöglicht die Engineering-Software der Steuerungssysteme Indralogic XLC (eXtended Logic Control; Steuerungssystem für die allgemeine Automatisierung) und Indramotion MLC (Motion Logic Control; bietet zusätzlich anwendungsbezogene Technologiefunktionen für anspruchsvolle Bewegungsaufgaben) umfassende Adaptionen der Task-Konfiguration im Rahmen der Applikation. Dies betrifft zunächst die In­stanziierung einer nahezu beliebigen Anzahl benutzerdefinierter Motion- oder SPS-Tasks. Weitere Anpassungen können mittels des in Bild 2 dargestellten Tasklisten-Konfigurators erfolgen.

Die Task-Konfiguration

Bild 3. Visualisierung eines aufgezeichneten System-Profils auf einer Dual-Core-CPU durch den „Wind River System Viewer“. Tasks sind vertikal entsprechend ihrer Priorität geordnet, wobei aktive Zustände als grüne Balken dargestellt werden. Ereignisse der Kommunikation und Synchronisation sind entsprechend ihrem Eintrittszeitpunkt angeordnet.

© Bosch Rexroth

Dieses Tool ermöglicht dabei zunächst eine Adaption der Task-Prioritäten mittels einer Umordnung in der nach absteigender Priorität sortierten Liste. Darüber hinaus lassen sich die Startbedingungen der Tasks, wie die Zykluszeit einer zyklischen Task oder entsprechende Trigger-Bedingungen einer ereignisgesteuerten Task, definieren. Die Adaption des Task-Systems wird dabei durch den „Task Execution Viewer“ unterstützt, der Zustands- und Kontextwechsel von Tasks aufzeichnet und entlang der Zeitachse darstellt. Eine Anpassung dieses Tools für Multicore-CPUs ist derzeit ebenso in Vorbereitung wie die Möglichkeit, die Task-Zuordnungen im Konfigurator definieren zu können. Unabhängig vom Zeitpunkt, zu dem die Definition der Task-Verteilung erfolgt, besteht allerdings das Problem, dass sich die zu erwartende Leistungsfähigkeit einer spezifischen Verteilung aufgrund der Komplexität gängiger Automatisierungsfirmware kaum prognostizieren lässt. Auch eine experimentelle Realisierung verschiedener Alternativen ist aufgrund des dafür erforderlichen Zeitaufwands selten eine praktikable Vorgehensweise. Aus diesem Grund wurde eine Methodik entwickelt, die auf Basis geeigneter Modelle einer automatisierungstechnischen Firmware performante Task-Verteilungen findet und bewertet.

Mittels des Profiling-Tools „Wind River System Viewer“ wird zu diesem Zweck ähnlich wie im Fall des „Task Execution Viewers“ ein dynamisches System-Profiling unter Ausführung der Firmware an einer realen Maschine durchgeführt. Wie in Bild 3 dargestellt, umfassen die dabei aufgezeichneten Daten zusätzlich zu Task-Zustandswechseln weitere Informationen zur Kommunikation und Synchronisation zwischen Tasks. Dabei ist jeweils eine separate Aufzeichnung für alle Last-Szenarien zu erstellen, bezüglich derer die Task-Verteilung optimiert werden soll.Im Falle einer Task-Verteilung zum Entwurfszeitpunkt sind dies im Idealfall alle zu erwartenden Anwendungsfälle der Steuerung oder zumindest eine möglichst repräsentative Auswahl. Im Falle einer applikativen Definition der Verteilung ist es hingegen ausreichend, die Modellierung nur auf Basis der jeweils vorgenommenen Maschinenkonfiguration durchzuführen.

Aus diesen Laufzeitdaten werden nun Modelle der Firmware in Form so genannter Task-Graphen extrahiert. Ein derartiger Graph definiert pro Task des Systems einen Knoten, der mit dem relativen Anteil der entsprechenden Task an der gesamten Auslastung des Systems gewichtet ist. Interaktionen zwischen Tasks, beispielsweise mittels Nachrichten oder Semaphoren, werden wiederum durch Kanten abgebildet, die entsprechend des Umfangs der jeweiligen Interaktionen gewichtet werden. Diese Modelle enthalten damit alle Informationen, um eine spezifische Task-Verteilung bezüglich der hierfür relevanten Kritierien zu bewerten. Die Bewertung einer Verteilung erfolgt dabei immer bezüglich mehrerer Krite­rien:

■ Intensive Task-Interaktionen über Kern-Grenzen reduzieren die System-Performance, da Daten zwischen lokalen Caches ausgetauscht und Ereignisse mittels Interrupts zwischen CPU-Kernen signalisiert werden müssen.
■ Eine gleichmäßige Lastverteilung auf den CPU-Kernen stellt auch niedriger priorisierten Aufgaben ausreichende Reserven an Rechenzeit zur Verfügung und reduziert im Falle sporadischer Lastspitzen Überlast-Situationen und somit die Gefahr von Latenzen. Die Bewertung der Lastverteilung kann beispielsweise mittels der Differenz zwischen der Auslastung des am stärksten und am geringsten ausgelasteten CPU-Kerns erfolgen.

Genetische Algorithmen zur Musterung des Entwurfsraumes

Bild 4. Einordnung potenzieller Task-Verteilungen (rote Rauten) und der bereits realisierten Parallelisierung (grüner Punkt) der Indramotion MTX.

© Bosch Rexroth

Zu beachten ist, dass es sich hierbei um konkurrierende Kriterien handelt: Eine umfassende Verteilung der Tasks auf den CPU-Kernen verbessert zwar die Lastverteilung des Systems, erhöht allerdings potenziell den Kommunikationsaufwand über Kern-Grenzen. Ebenso gilt der Umkehrschluss. Aus diesem Grund ist hier eine so genannte Pareto-Optimierung durchzuführen. Eine Lösung gilt genau dann als Pareto-optimal oder nicht-dominiert, wenn es im Entwurfsraum keine Lösung gibt, die bezüglich eines Kriteriums besser ist, ohne zugleich bei mindestens einem Kriterium schlechter abzuschneiden. Die Menge der Pareto-optimalen Lösungen bildet schließlich die Pareto-Menge oder Pareto-Front.

Besonders erschwert wird die Pareto-Optimierung durch die Tatsache, dass der Entwurfsraum möglicher Task-Verteilungen selbst bei Systemen mit geringer Komplexität enorm groß ist und einem exponentiellen Wachstum unterliegt. So gibt es beispielsweise bereits für die Verteilung einer typischen, aus 50 Tasks bestehenden Automatisierungs-Firmware auf einer CPU mit vier Kernen 450, also fast 1,27 × 1030 Möglichkeiten. Als Konsequenz ist eine erschöpfende Exploration des Entwurfsraums nicht zu leisten. Ergo sind Heuristiken erforderlich, die innerhalb einer vertretbaren Berechnungszeit ausreichend gute Approximationen an die Pareto-Optima herleiten.

Zu diesem Zweck werden genetische Algorithmen eingesetzt, die in Nachbildung der natürlichen Evolution den Entwurfsraum in heuristischer, zielgerichteter Weise durchmustern. Dies erfolgt, indem potenzielle Problemlösungen über mehrere Iterationen hinweg durch Rekombination und Mutation anderer Lösungen generiert und bewertet werden. Da die Evaluation potenzieller Lösungen stets unter allen zuvor als relevant bewerteten Firmware-Modellen erfolgt, findet durch den Algorithmus eine Optimierung der Parallelisierung auf genau die Lastprofile hin statt, auf deren Basis diese Modelle erstellt wurden. Das Wissen über die zu erwartende Leistungsfähigkeit der als Pareto-optimal identifizierten Lösungen bildet letztlich die Entscheidungsgrundlage für die Task-Verteilung.

Anwendungsfall Werkzeugmaschine

Um das Potenzial der von Rexroth entwickelten Methodik zu veranschaulichen, wurden Firmware-Modelle von drei Maschinentypen mit jeweils unterschiedlichen Konfigurationen des SPS- und Interpolationstakts abgeleitet. Auf Basis dieser Modelle fand nun die Optimierung der Task-Verteilung für eine CPU mit zwei Kernen statt. Dies erfolgte zunächst für den Fall einer Verteilung zum Entwurfszeitpunkt, so dass es jede Lösung bezüglich aller Maschinen und den jeweils modellierten Konfigura­tionen zu bewerten galt. Bei der Bewertung wurde für jedes der beiden Kriterien das jeweils schlechteste Resultat (Worst-Case) unter allen Modellen gewählt. Die im Rahmen dieser Optimierung abgeleiteten Pareto-Optima sind in Bild 4 als rote Rauten dargestellt. Gut sichtbar ist dabei die beschriebene Konkurrenz zwischen den beiden Kriterien: Eine gleichmäßigere Core-Auslastung wird durch einen größeren Anteil an Interaktionen über Core-Grenzen erkauft und umgekehrt.

Der grüne Punkt im Diagramm visualisiert hingegen die Worst-Case-Werte der derzeitigen Task-Verteilung der CNC-Steuerung Indramotion MTX, bei der die Funktionsbereiche NC und SPS bereits unterschiedlichen CPU-Kernen zugeordnet sind. Wie das Diagramm zeigt, finden hier maximal 51,9 % der Interaktionen über Kern-Grenzen statt und die Lastdifferenz zwischen den beiden CPU-Kernen beträgt in allen Last-Szenarien maximal 39,6 %. Somit ist bereits diese Parallelisierung für eine Vielzahl verschiedener Maschinen­typen geeignet. Die entwickelte Methodik zeigt jedoch, dass die System-Architektur noch Potenzial für zukünftige Performance-Steigerungen besitzt: So lässt sich der Anteil der Interaktionen über Kern-Grenzen auf minimal 14,5 % und die Lastdifferenz zwischen den CPU-Kernen auf minimal 12,2 % reduzieren. Zwischen diesen Extrema gibt es zudem eine Vielzahl weiterer Pareto-Optima. Weiteres Potenzial bietet eine an den konkreten Maschinentyp und die Steuerungskonfiguration angepasste Verteilung der Tasks im Rahmen der Applikation.

Autor: Jürgen Bregenzer arbeitet in der Systementwicklung Automationssysteme bei Bosch Rexroth.

SPS/IPC/Drives – der Kongress

Vertiefende Informationen zum Thema liefert der Autor im Rahmen des begleitenden Kongresses zur Fachmesse SPS/IPC/Drives (22. bis 24. November) in Nürnberg. Der Vortrag ist Teil des Kongressblockes 3 (Session 3a) und findet am 23.11.2011 um 13:00 Uhr statt. Das vollständige Kongressprogramm steht auf der Website www.mesago.de/sps/kongress zum Download zur Verfügung.

  • Xing Icon
  • LinkedIn Icon
Anzeige
Anzeige

Das könnte Sie auch interessieren

Anzeige

Feldbustechnik

Die Zukunft von CANopen

Ähnlich wie die Automobilindustrie benötigt auch die Industrieautomation immer mehr Busbandbreite. Zudem gewinnt in puncto Kommunikation das Thema Cloud mehr und mehr an Bedeutung. Wie trägt das in beiden Branchen seit Langem etablierte...

mehr...

Safety

Unbefugter Zutritt abgewehrt

Anlagenmodernisierungen bedingen oft neue sicherheitstechnische Vorkehrungen. So auch bei einem Hersteller von Reinigungs- und Desinfektionsmitteln, der unter anderem den Materialfluss im Bereich eines Rolltors abzusichern hatte.

mehr...
Anzeige
Anzeige

Kommunikation

WLAN in der Fabrik - die Auswahlkriterien

WLAN bietet sich für diverse Anwendungen in der Fabrik an. Aufgrund der vielen Einflussfaktoren ist jedoch nicht immer offensichtlich, wie sich ein Netzwerk nach dem Standard IEEE 802.11 auf die Anforderungen des industriellen Einsatzes optimieren...

mehr...
Anzeige

Werkstückträger-Transport

Flexibel puffern per Software

Die vollständige Automatisierung manueller oder halbautomatischer Prozesse ist bei sehr kurzen Taktzeiten eine große Herausforderung. Der Maschinenbauer Goldfuß setzt in puncto Werkstückträger-Transport auf ein System, welches die Bildung flexibler...

mehr...
Anzeige
Anzeige
Anzeige

Gateways

Individuelle IoT-Systeme

Wie groß? Wie viel Leistung? Wie robust? Welches Gehäuse? Die Anforderungen an IoT-Systeme sind extrem unterschiedlich. Mit der Gestaltung individueller Embedded-Applikationen können perfekt auf die Anwendung gemünzte Geräte entstehen.

mehr...

Produktionssoftware

Ein digitales Abbild

Der digitale Zwilling begleitet Maschinen und Anlagen ihr Leben lang – von der ersten Idee über den laufenden Betrieb bis hin zum Blick in die Zukunft. Das Ziel dabei: Fehler vermeiden, Anlagen optimieren und Ausfällen vorbeugen.

mehr...

Schalten und Schützen

Stolpersteine beim Gleichstrom

Die Frage "Gleichstrom oder Wechselstrom?" gewinnt an Wichtigkeit – nicht zuletzt durch den zunehmenden Einsatz regenerativer Energiequellen, die Gleichspannung erzeugen. Beim Schalten und Schützen mit Gleichstrom gilt es allerdings, einige...

mehr...
Jetzt Newsletter abonnieren