Multi Core in der Automation

Von Dual- zu Multi-Core

In Zukunft werden über Doppelkern-CPUs hinaus auch Vierfach- beziehungsweise Achtfach-Kerne zu vertretbaren Kosten verfügbar sein. Diese Entwicklung kommt den software-basierten Automatisierungs-Lösungen entgegen, da diese in der Lage sind, Aufgaben je nach Anzahl der verfügbaren CPU-Kerne zu verteilen. Sprich: Funktionale Einheiten – HMI, PLC Control, PLC-Runtime, NC – können mit weniger Aufwand als heute auf dedizierte Cores verteilt werden. Beckhoff wird dem Anwender durch entsprechende Konfigurations- und Diagnosewerkzeuge die Nutzung von Multi-Core-Systemen erleichtern. So lassen sich im „TwinCAT System Manager“ zum Beispiel die Laufzeiten der Echtzeit-Tasks beobachten und Prioritäten beziehungsweise Ablaufreihenfolgen der Tasks manuell konfigurieren. In der Standardbetriebsart wird der zu aktivierenden Task durch „Load Balancing“ entweder ein freier Core zugeteilt oder – entsprechend der Priorität – der optimale Core zugewiesen. Mit konfigurierbaren Core-Affinitäten lassen sich Tasks aber auch statisch einem Core zuordnen. So kann per vorgefertigter Profile wieder eine klassische Einteilung in SPS- und NC-Laufzeitsysteme hergestellt werden. Da der Beckhoff-Anwender schon heute in SPS-Tasks und -Laufzeitsystemen denkt, wird auch hier der Übergang vom Single- beziehungsweise Dual-Core- zum Multi-Core-System fließend sein.

Die Anwendungs-Entwicklung

Für die Entwickler von Echtzeit- beziehungsweise SPS-Anwendungen in der TwinCAT-System-Umgebung vollzieht sich der Umstieg von Single-Core-Systemen zu Dual-Core-Systemen nahtlos. Die Echtzeit-Laufzeitumgebung nutzt weiterhin nur eine CPU, somit lassen sich bestehende SPS-Projekte ohne Vorteilsverlust 1:1 übernehmen.

Da TwinCAT nicht genutzte CPU-Zeit für Windows-Anwendungen zur Verfügung stellt, sieht das Windows Betriebssystem zwei CPUs, von denen eine teilweise ausgelastet ist. Hiervon können aus mehreren Programmfäden (Threads) aufgebaute Windows-Anwendungen ihre Vorteile ziehen. Das Windows-Betriebssystem verteilt die Anwendungs-Threads auf die verfügbaren CPUs, diese Threads laufen physikalisch parallel ab und die CPU-Hardware wird optimal genutzt. Allerdings treten in der Anwendung vorhandene Synchronisationslücken in der physikalischen Parallelbearbeitung eher auf als in der quasi parallelen Abarbeitung von Threads.

Um in Zukunft auch Multi-Core-Systeme optimal nutzen zu können, müssen alle Anwendungen soweit wie möglich modular in Threads beziehungsweise Tasks aufgeteilt werden (Bild 3).