Werden die Potenziale genutzt?
Vermehrt nutzen Industrie-PCs die neuen Dual-Core-Prozessoren und auch die Software trägt immer häufiger das Prädikat „Dual-Core-tauglich". Was dies konkret für die Programmiertechnik bedeutet, beleuchten im Trendinterview zu „ Industrial Control" die Experten von Beckhoff, Kontron, National Instruments und Siemens, ergänzt durch ein Statement des Softwarespezialisten 3S.
eA: Die datenflussorientierte Programmierung arbeitet parallel und unterstützt damit grundlegend die Multi-Core-Technologie. Die textuelle Programmierung nutzt hier aufgrund der sequenziellen Abarbeitung das schnell komplex werdende Multithreading. Auf welche Variante setzen Sie? Wird es zukünftig weitere Alternativen geben?
Hauser: Die Frage, ob datenflussorientiert oder textuell, ist eine sehr spezielle Frage, die sich auf die unterschiedliche Programmierung von SPSen oder die Automatisierungssuiten der verschiedenen Automatisierungshersteller bezieht, die Lösungen für End-User anbieten. Kontron bietet hingegen modulare, offene Automatisierungsplattformen u.a. für diese OEMs an und unterstützt deshalb alle wesentlichen Betriebssysteme wie Windows, Linux für Single- und Multi-Core-Umgebungen, die Multithreading unterstützen, sodass sich der Anwender in der Regel nicht um die Parallelisierung seiner Prozesse kümmern muss. Wählt er folglich eine solche Umgebung aus, stehen ihm alle Möglichkeiten offen, die dieses Betriebssystem und das ECO-System darum bieten. Damit hat er meist einen klaren Vorteil gegenüber Herstellern und Anwendern mit eigenentwickelten Betriebssystemen bzw. Umgebungen ohne Betriebssystem.
Jamal: Eine Programmiersprache, die von Haus aus Parallelität bereitstellt, ist Labview, das nach dem Datenflussprinzip arbeitet und Multi-Core-basierte parallele Anwendungen ermöglicht. Um die Leistungsfähigkeit der Multi-Core-Technologie in vollem Umfang und definiert innerhalb einer Applikation einsetzen zu können, erlaubt Labview die Erzeugung von Multithreading-fähigen Anwendungen. Zudem ist das Multithreading in integraler Bestandteil der Entwicklungsumgebung, sodass diese Technologie meist intuitiv ohne jeglichen Mehraufwand vom Anwender genutzt werden kann. Die Aufteilung einer Anwendung in mehrere Threads ist eine Grundvoraussetzung dafür, dass die von Multi-Core-Prozessoren gebotene Leistung innerhalb einer einzelnen Applikation ausgenutzt und echte Parallelität erzielt werden kann. Für die Praxis hängt die Leistungssteigerung daher direkt vom Parallelisierungsgrad des ausgeführten Programms, dem verwendeten Betriebssystem (Scheduler) und der Möglichkeit einer Zuordnung dieser Threads zu einzelnen CPU-Kernen ab.
Papenfort: Die Sprache der SPS ist und wird auch noch in naher Zukunft die IEC 61131 sein. In dieser Norm wird Multitasking genutzt. Der Anwender verteilt seine Aufgaben schon jetzt in einzelne Zeitebenen, die Tasks. Beckhoff bietet zudem durch die modulare Automatisierungssuite Twincat die Möglichkeit, verschiedene SPSen in Form von Laufzeitsystemen auf einem PC zu realisieren. Tasks oder Laufzeitsysteme können einfach auf verschiedene Cores verteilt werden.
Ruttkamp: Die Antwort auf diese Frage hängt stark vom Einsatzbereich und der konkreten Aufgabe der zu erstellenden Software ab: Für Aufgaben im Datenverarbeitungs- und Visualisierungsumfeld werden solche Programmiertechniken natürlich eingesetzt, um optimale Ergebnisse zu erzielen. Steuerungstechnische Anwendungen (SPS) mit hohen Anforderungen an die Deterministik erfordern eine gezielte Nutzung der verwendeten Prozessorkerne.
eA: Ist die Programmierung nicht optimal auf die höhere Anzahl der Cores abgestimmt, kann der Prozessor u.U. sogar langsamer arbeiten als ein konventioneller Prozessor. Wie bewerten Sie die aktuell möglichen und zukünftig zu erwartenden Performance-Steigerungen?
Hauser: Performance-Steigerungen sind immer dann möglich, wenn die Software Multithreading unterstützt. Dies ist auf Betriebssystemebene wie bei Windows oder Linux – dort laufen schon immer viele Prozesse parallel – heute kein Problem mehr. Das Betriebssystem übernimmt hier die Verteilung auf die Cores, sodass man üblicherweise allein durch das Wechseln auf Multi-Core schon eine höhere Performance erreicht. Speziell im Bereich Linux ist symmetrisches Multiprocessing schon seit Jahren Stand der Technik und deshalb hat sich eine höhere Anzahl an Cores auch immer als positiv in Bezug auf Benchmarks herausgestellt. In den meisten Anwendungen stellt sich diese Problematik deshalb gar nicht: Sobald in einem Linuxsystem mehr als ein Prozess läuft, verteilt der Scheduler die Last bestmöglich auf die beiden Cores. Nur, wenn wirklich ein einziger Prozess die gesamte Prozessorleistung der verfügbaren Cores in Anspruch nehmen soll, muss man sich als Anwendungsprogrammierer selbst darum kümmern, dass dieser Prozess parallelisierbar wird. Dazu stehen diverse Programmiersprachen und Libraries zur Verfügung.
Jamal: Entwickler können nicht unbedingt eine automatische Leistungssteigerung von ihren Softwareanwendungen erwarten, wenn diese auf Computern mit Multi-Core-Prozessoren ablaufen. Im Wesentlichen ist eine parallele statt einer sequenziellen Applikation zu entwickeln. Bei einigen einfachen Labview-Anwendungen ohne parallele Strukturen haben wir bei Dual-Core-Rechnern ohne Codeänderungen Leistungsverbesserungen zwischen 25 und 35 % festgestellt – allein durch automatisches Multithreading. Durch Einsatz paralleler Programmiertechniken haben wir erlebt, dass einfache in Labview implementierte Algorithmen Leistungssteigerungen von 60 bis 70 % erfuhren, wenn sie auf Multi-Core-Systeme verlagert wurden. Der Schlüssel zum Erzielen besserer Leistung ist wieder die Möglichkeit, eine Anwendung möglichst effizient in parallele Threads aufzuteilen und entsprechend auf die Kerne zu verteilen.
Papenfort: Twincat ist schon immer eine rein softwarebasierte Automatisierungssuite für SPS und Motion Control gewesen. Seit der Einführung von Twincat konnten unsere Kunden die meisten Automatisierungsaufgaben noch mit einem Pentium I lösen. Mittlerweile werden durch die zunehmende Komplexität der Aufgaben auch Pentium-4-Systeme an ihrer Leistungsgrenze betrieben. Die Mehrprozessortechnik ermöglicht unseren Kunden, weitere Aufgaben auf immer noch einer einzigen CPU zu lösen. Mit Extreme Fast Control Technology (XFC) können aus dem Prozess noch mehr Daten in kleineren Zyklen in die CPU transportiert werden. Für die Verarbeitung dieser Daten sind Multi-Core-CPUs wunderbar geeignet.
Ruttkamp: Simatic PC based Automation ermöglicht heute schon die Integration von Steuern, Visualisieren und Datenverarbeitung auf einem Gerät. Die Multi-Core-Architekturen erlauben eine Entzerrung der Funktionen mit einer insgesamt besseren Gesamt- und Einzelperformance. Zukünftige Automatisierungsplattformen werden die Integration weiterer Funktionen und Parallelisierung von Aufgaben bieten, was eine optimale Ausnutzung von vielen Cores erlaubt. Damit lassen sich Kosteneinsparung und Flexibilität bei der Auslegung der Automatisierungslösung erreichen.
eA: Die Multi-Core-Unterstützung durch die Programmiersoftware kann unterschiedlich weit umgesetzt sein. Bieten Sie beispiels-weise ein Trace-Tool für die Core-Auslastung an?
Hauser: Schon alleine der Linux-Kernel hat sehr brauchbare Mechanismen, um die Informationen der Core-Auslastung über das ausführende Filesystem auszulesen. Ohne weitere Tool-Unterstützung ist eine Optimierung des Systems oder die Fehlersuche jedoch schwer möglich. Deshalb unterstützen wir auf unseren Hardwareplattformen z.B. Workbench Tools von Wind River für Linux oder Trace-Tools wie Intel Vtune und Threadchecker, die unsere Prozessor- und Softwarepartner zur Verfügung stellen. Mit diesen Tools ist es möglich, „Hot-Spots" im Code zu identifizieren und zu optimieren. Dabei sind auf unseren Hardwareplattformen jedoch meist keine Grenzen gesetzt. Der Kunde kann frei wählen.
Jamal: Ein kritisches Element bei der Softwareentwicklung sind die Debugging-Werkzeuge, die Entwickler nutzen, um einsehen zu können, wie Programmcode auf Multi-Core-Hardware ausgeführt wird. In einer Umfrage von Virtutech, an der 354 Personen teilnahmen, sagten 56 %, dass die Fehlerbehebung für sie am zeitaufwendigsten sei. Diese Statistik sollte niemanden überraschen. Noch interessanter ist, dass 59 % der Teilnehmer aussagten, ihre Debugging-Werkzeuge würden keine Mehrkern- oder Multiprozessorentwicklung unterstützen. Insgesamt gesehen ist dies eine offensichtliche Lücke bei den heute verfügbaren Werkzeugen, die z.B mit dem NI Real-Time Execution Trace Toolkit 2.0 geschlossen werden kann, um Entwicklern ein erfolgreiches Arbeiten mit Multi-Core-Platt-formen zu ermöglichen.
Papenfort: Im Twincat System Manager kann der Programmierer schon jetzt die Auslastung der verschiedenen Tasks online beobachten. Eine Anzeige der Auslastung der einzelnen Cores wird noch realisiert.
Ruttkamp: Im Umfeld von beispielsweise PC-basierter Automatisierung kann die Core-Auslastung mit den Standard-Werkzeugen ermittelt und konfiguriert werden. Dedizierte Automatisierungssysteme von Siemens werden die Nutzung der Cores für den Anwender transparent gestalten, um eine optimale Anwendbarkeit für einen breiten Anwenderkreis zu erreichen.
eA: Lassen sich verschiedene Prozessoraufgaben konkret den einzelnen Cores zuweisen? Wenn ja, wie wird dies programmiert?
Hauser: Ja. Es gibt dabei unterschiedliche Betrachtungsebenen: Lösungen der Prozessoranbieter, die der Betriebssysteme und nicht zuletzt die der Anwendungsprogrammierung selbst. Auf Prozessorebene ist die Zuweisung über Hypervisor-Konfiguration und Virtualisierungstechnologien von Intel möglich; ebenso feste Konfigurationen bei asynchronem Multiprocessing z.B. bei Free-scale-Prozessoren. Von Seiten des Betriebssystems ist es in jedem synchrones Multiprocessing unterstützenden OS möglich, Tasks oder Prozesse einem Core fest zuzuordnen. So kann man bei Linux die CPU-Affinität mit einer Utility namens „taskset" steuern. Von Windows wird Multiprozessing schon seit NT angeboten. Hier gibt es Win32-APIs, welche Threads und Prozesse einem dedizierten Core/Prozessor zuordnen. Auch unter VxWorks ist es möglich, bestimmte Tasks einem Core zuzuordnen. Hierfür werden entsprechende API-Funktionen zur Verfügung gestellt. Natürlich kann man dies auch über einen API-Aufruf im Programm steuern. Und hier sind wir bei der Anwendungsprogrammierung. Programmierungsumgebungen können folglich sowohl auf die Tools der OS wie die der Prozessoren zurückgreifen.
Jamal: Um die Multi-Core-Technologie effektiv nutzen zu können, reicht die Identifizierung und Erzeugung von Threads noch nicht aus, da keine definierte Zuweisung zu den einzelnen CPU-Kernen erfolgt. Es empfiehlt sich daher, im Vorfeld eine Zergliederung in logische Programmteile vorzunehmen. Dies könnten z.B. zwei Threads zur Kommunikation und zur Datenerfassung sein, die in Labview durch zwei hardwaregetaktete Schleifen dargestellt werden. Die Repräsentation der Programmteile in dieser Form erlaubt in Verbindung mit einer hardwaregetakteten Schleife eine dedizierte Zuweisung der Threads bzw. Schleifen zu den einzelnen CPU-Kernen. Somit kann dediziert auf einem Kern die Datenerfassung ausgeführt werden, während ein anderer die Programmteile ausführt, die für die Benutzerschnittstelle, Kommunikation und Speicherung zuständig sind.
Papenfort: Twincat bietet schon seit zehn Jahren die Nutzung von bis zu vier SPS-Laufzeitsystemen auf einem PC, was viele Kunden verwenden, um ihr Automatisierungsproblem zu strukturieren. Eine Möglichkeit der Nutzung von mehreren Cores wäre also die Verteilung von Laufzeitsystemen auf einzelne Cores. Daneben wird es auch möglich sein, SPS und Motion Control auf verschiedenen Cores zu betreiben. Eine weitere Variante ist die Aufteilung in SPS und Motion Control auf der einen und Visualisierung auf der anderen Seite.
Ruttkamp: Die Zuordnung von Aufgaben zu Cores lässt sich – wo notwendig – am Gerät konfigurieren. Dazu werden Standardwerkzeuge des Betriebsystems verwendet. Je nach Anforderung der Aufgabe können Cores getrennt oder gemeinsam genutzt werden. Damit lässt sich individuell die optimale Hardware für die Automatisierungsaufgabe wählen.
eA: Welche Bedeutung hat die Multi-Core-Technologie aus Ihrer Sicht mittelfristig für die Automatisierungstechnik und speziell auch für die Programmiersoftware?
Hauser: Multi-Core-Technologie steht für Performance-Steigerung bei beherrschbarer Leistungsaufnahme. Applikationen, die vorher auf verschiedenen Rechnern liefen, nun auf einen Computer zu bringen, ist die zweite große treibende Kraft für Multi-Core in der Automatisierung. Hier wird es sogar möglich, durch Virtualisierung einen Ersatz für EOL(End Of Life)-Hardware umzusetzen. Eine vielleicht zehn Jahre alte Applikation z.B. von Windows 95 kann einfach in eine Virtuelle Maschine „geschoben" werden, indem die Hardwaretreiber in virtuelle Treiber umgeschrieben werden. Die Erfahrung zeigt dabei, dass ein gutes und überlegtes Software-Design die Multi-Core-Technologie noch besser ausnutzen kann, als eine simple Verteilung der Aufgaben dem Scheduler selbst zu überlassen. Daher müssen Software-Tools entwickelt werden, die den Programmierer noch besser unterstützen, als es derzeit der Fall ist. Wir sind aber sicher, dass aufgrund des hohen Bedarfs und der breiten Entwicklerfront deutlich schneller unterschiedlichste Tools bereitgestellt werden als in den 80er Jahren bei den Parallelrechnern.
Jamal: Mittel- bis langfristig werden Multi-Core-Technologien zunehmend integrale Bestandteile von Mess- und Automatisierungssystemen. So gibt es eine Fülle von Anwendungsbereichen aus der Mess- und Automatisierungstechnik, die von parallelen Verarbeitungsarchitekturen profitieren – beispielsweise zeitkritische Systeme: Bei Hochgeschwindigkeits-Regelsystemen kann es erforderlich sein, den zeitkritischen Programmcode von weniger wichtiger Kommunikation oder von Datei-I/O-Code zu trennen. Ein weiteres Beispiel ist die Datenübertragung: Jede Applikation, in der große Datenmengen bei hohen Geschwindigkeiten erfasst und verarbeitet oder gespeichert werden, kann sich die Multi-Core-Technologie zunutze machen. Insgesamt sind die Multi-Core-Systeme von Dauer. So hat Intel angekündigt, an einem Prozessorchip mit 100 Kernen zu arbeiten. Ebenso von Dauer sind die Herausforderungen, vor die Anwender gestellt werden – und damit die Chancen für moderne Werkzeuge.
Papenfort: Mittelfristig werden komple- xere Automatisierungsaufgaben mithilfe von Multi-Core-CPUs lösbar sein. Zentrale Steuerungstechnik wird mit ihnen und Extreme-Fast-Control-Maschinen noch schneller und damit effektiver. Langfristig kann man mithilfe von Multi-Core-CPUs einfach noch mehr Aufgaben zentral lösen. Vorstellbar und von vielen Kunden gewünscht ist die Integration von Messtechnik, Vision und Roboteransteuerung. Bei Beckhoff nennen wir dies ‚ Scientific Automation‘.
Ruttkamp: Siemens wird die neuen Multi-Core-Technologien zur Leistungssteigerung und Integration weiterer Aufgaben in einem Gerät nutzen. Damit steigt auch die Interoperabilität der verschiedenen Automatisierungsfunktionen. Unsere Visualisierungs-Software zum Beispiel lässt heute bereits eine optimale Verteilung der Aufgaben auf mehrere Cores zu, ohne dass der Anwender hierzu besondere Konfigurationen vornehmen muss.
zg
3S eA 417
Beckhoff eA 418
Kontron eA 419
National Instruments eA 420
Siemens eA 421
die experten
· Norbert Hauser, Vice President Marketing der Kontron AG in Eching (www.kontron.com)
· Rahman Jamal, Technical and Marketing Director bei National Instruments in München (www. ni.com/germany)
· Dr. Josef Papenfort, Produktmanager Twincat bei der Beckhoff Automation GmbH (www.beckhoff.de)
· Uwe Ruttkamp, Leiter Produkt- und System-Management Simatic Fertigungsautomatisierung beim Siemens-Bereich Automation & Drives (A&D) in Nürnberg (www.siemens.de/automation)
Ohne Titel
Details zum Unternehmen Virtutech selbst finden Sie hier.
Details zu den im Experten-Interview befragten Unternehmen sind nachfolgend verlinkt:
Parallelprogrammierung ist kein neues Thema
Einen ergänzenden Kommentar zum Thema Multi-Core-Prozessoren und Programmiertechnik erhielt die Redaktion von Manfred Werner, Geschäftsführer der 3S-Smart Software Solutions GmbH in Kempten (www.3s-software .com):
„Parallelprogrammierung ist kein neues Thema. Bereits vor 30 Jahren wurde umfassend in diese Richtung geforscht. Da die Prozessoren damals langsam waren, lag es nahe, Aufgaben auf mehrere Prozessoren zu verteilen. Dass sich schließlich Single-Core-Lösungen durchgesetzt haben, lag zum einen an der rasanten Performance-Steigerung der CPUs, zum anderen aber auch daran, wie schwierig es bei den meisten Aufgaben ist, sie in parallele Prozesse zu zerlegen. Der Anwender war damit schlicht überfordert.
Diese Ergebnisse gelten meines Erachtens auch heute noch: Die Zukunft liegt nicht darin, dem Anwender Programmierzugriff auf die Cores zu geben. Die will er gar nicht sehen. Der Anwender erwartet, dass das Tool für Multi- und Single-Core gleich funktioniert, die Cores aber dennoch – wenn vorhanden – optimal genutzt werden.
Von der Codeerzeugung her sehen wir deshalb mittelfristig keine Aufgaben. Unsere Aufgabe sehen wir derzeit darin, unsere Soft-SPS mit Echtzeit -Eigenschaften für Windows XP so zu erweitern, dass die SPS exklusiv auf einem Core läuft und von den anderen Applikationen und Treibern, die nicht zur SPS gehören, weder in der Laufzeit noch durch even-tuelle Abstürze beeinflusst werden kann. Wir denken, dass für 99 % der derzeitigen Steuerungsaufgaben ein Core ausreicht. Durch die exklusive Zuordnung können wir die derzeit bereits hohe Sicherheit PC-basierter Steuerungen nochmals verbessern.
Dramatische Veränderungen für die Automatisierung erwarten wir somit nicht. Multi-Core ist eine neue Technologie, die, wie so oft, nicht für die Automati-sierung entwickelt wurde, die die Automatisierung aber zu ihrem Vorteil nutzen kann."
eA-INO-TIPP
Nähere Informationen zu der von Rahman Jamal genannten Virtutech-Umfrage bzgl. der Debugging-Werkzeuge bietet der über den folgen-den Link aufrufbare Beitrag von EE Times:
· www.eetimes.com/news/design/ showArticle.jhtml?articleI D=199500682
Details zum Unternehmen Virtutech selbst finden Sie unter:
· www.virtutech.com
