Beckhoff-Realtime-Kernel

Echtzeitverarbeitung – die Basis für PC-Control

Seite: 4/4

Anbieter zum Thema

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, die physikalisch parallel ablaufen, sodass die CPU-Hardware optimal genutzt wird. Allerdings treten in der Anwendung der physikalischen Parallelbearbeitung eher Synchronisationslücken auf als bei der quasi parallelen Abarbeitung von Threads, bei der die CPU sehr schnell zwischen verschiedenen Programmen hin- und her wechselt, sodass es zwar aussieht wie eine parallele Abarbeitung, die aber in Wirklichkeit sequentiell erfolgt. 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. Dies gibt Windows, wie auch TwinCAT, die Möglichkeit, die Abarbeitung von Programmteilen optimal auf die verfügbaren CPU-Cores zu verteilen. Monolithische Programme werden zwar weiterhin funktionieren, aber sie werden die vorhandene Rechenkapazität zu einem immer geringer werdenden Teil nutzen können.

Aufgrund der fallenden Kosten für dynamischen Arbeitsspeicher und dem zunehmenden Speicherbedarf ressourcenhungriger Anwendungen, wie zum Beispiel das Bearbeiten von HD-Videos, gibt es neue PCs zunehmend mit Speichergrößen oberhalb von 4 GB. Weil dies die theoretische Grenze des Adressraums einer 32-Bit-CPU ist (in physikalischer Realität stehen tatsächlich ca. 3,5 GB zur Verfügung), arbeiten moderne PCs zunehmend mit einem 64-Bit- Betriebssystem. 64-Bit-Windows nutzt einen Modus moderner x86-CPUs, der es erlaubt, 32-Bit-Applikationen unverändert parallel zu 64-Bit- Applikationen zu nutzen. Diese von AMD entwickelte Betriebsart ermöglicht somit einen sanften Übergang von 32- zu 64-Bit-Umgebungen. AMD nennt diesen Prozessormodus 64-Bit-Longmode, während Intel-CPUs mit diesen Features unter dem Begriff IA-32e-Mode anbietet. Beide Technologien sind untereinander kompatibel und bieten als Sub-Modi den 32-Bit- und den 64-Bit- Kompatibilitätsmodus an. In Anlehnung an die x86-Historie der betreffenden Prozessoren benennt Microsoft diesen Betriebsmodus in aktuellen Entwicklungswerkzeugen mit x64.

Aufgrund der genannten Prozessoreigenschaften kann Windows in der 64-Bit-Version 32- bzw. 64-Bit-Anwendungen ablaufen lassen. Wobei 32-Bit- Anwendungen leichte Geschwindigkeitseinbußen hinnehmen müssen, da alle Zugriffe auf das 64-Bit-Betriebssystem von 32 auf 64 Bit umgesetzt werden müssen. Gerätetreiber, die im Kernel-Mode ablaufen, müssen, wie das Betriebssystem für x64, kompiliert – und darüber hinaus – auch signiert sein. Die Signierung erreicht, dass die Herkunft eines Gerätetreibers eindeutig bestimmbar ist und somit das Laden eines Schadcodes in den Adressraum des Betriebssystems verhindert.

Programme, die für x64 kompiliert wurden, arbeiten in einem 64-Bit-Adressraum und haben Zugriff auf zusätzliche acht „General Purpose Register“ von 64-Bit-Breite. Weiterhin sind die von x86 bekannten Register ebenfalls 64 Bit breit. Die Segmentregister entfallen bzw. haben – mit Ausnahme vom GS-Register zur Adressierung von Betriebssystemstrukturen – keine Bedeutung. Im 64-Bit-Modus ergeben sich, aufgrund obengenannter Eigenschaften, je nach Anwendung, Vor- und Nachteile bezüglich der Leistungsfähigkeit des Gesamtsystems. Zum einen stehen mehr Speicher und mehr Register zur Verfügung, zum anderen ist der kompilierte Code auch signifikant größer, was wiederum einen größeren Bedarf an Speicher und Cache bedeutet. Ein allgemeiner Leistungsgewinn kann sich in Summe nur ergeben, wenn der Anwender alle Features konsequent nutzt, oder eine Anwendung zwingend einen größeren Adressraum benötigt.

Für automatisierungstechnische Anwendungen reicht in den meisten Fällen der Adressraum eines 32-Bit-Systems aus. Durch einen erweiterten Adressraums ergibt sich natürlich ein größeres Potenzial für Anwendungen, wie z. B. Condition Monitoring oder digitale Bildanalyse, die der PC, neben seinen bisherigen Aufgaben, mit erledigen kann. Beckhoff fasst diese Technologien unter dem Begriff Scientific Automation zusammen.

Optimale Nutzung moderner Prozessorarchitekturen

Neben der stetig steigenden Rechenleistung ist die Kompatibilität zwischen CPU-Generationen ein wesentliches Merkmal der x86-Architektur. x86-Prozessoren neuester Generation sind immer noch in der Lage, Programme auszuführen, die für die Intel-8086-CPU von 1978 kompiliert wurden. Aus Kompatibilitätsgründen nutzen viele 32-Bit-Anwendungen bis heute nur den Befehlsumfang oder die Eigenschaften einer 8086-CPU. Zwar werden selbst bei diesen Programmen Geschwindigkeitszuwächse mit jeder neuen Prozessorgeneration erreicht, aber die Kapazität neuer Prozessorarchitekturen wird zu einem immer geringer werdenden Anteil genutzt. Erschwerend kommt hinzu, dass man so manche Kompatibilitätsfunktion in aktuellen Prozessoren mit Hilfe von Mikro-Code emuliert, wodurch sich sogar leichte Performanceverluste einstellen könnten.

Abhilfe schafft hier unter Umständen Hyperthreading, das eine bessere Ressourcen-Nutzung durch Parallelisierung erreicht, soweit die betreffende Software dies unterstützt. Aber die optimale Nutzung der zur Verfügung stehenden Rechenleistung wird mittelfristig nur über die Nutzung der neuen Befehlssätze erreicht. TwinCAT 3 wurde unter diesem Gesichtspunkt grundlegend überarbeitet und lässt sich optional für aktuelle CPU-Typen optimieren. Dies betrifft unter anderem die Fließkommaberechnungen und die Nutzung des CPU-Caches.

Auf Multi-Core folgt allgemeine Parallelverarbeitung

Der Erfolg von PC-Control beruht auf der Konvergenz von technischen Errungenschaften der IT-Welt mit der Automatisierungstechnik. Hierbei profitiert die Automatisierungstechnik von der stetigen Fortentwicklung der Hard- und Software zu vertretbaren Kosten. Besonders auffällig erscheint der technische Fortschritt bei der Entwicklung neuer Prozessoren, aber auch im Bereich der allgemeinen Software-Entwicklung ergeben sich neue, interessante Möglichkeiten für die Nutzung in der Automatisierungstechnik.

Das aktuelle Stichwort ist hier AMP (Accelerated Massive Parallelism), eine Erweiterung der Programmiersprache C++, die eine bessere Nutzung der verfügbaren Rechenkapazität ermöglichen soll. Mit Hilfe von AMP können Entwickler künftig jede Art von Ressource im PC-System ansprechen und Anweisungen auf CPUs, GPUs und diskrete Grafikprozessoren verteilen. In Zukunft soll auch die Verteilung von Funktionen auf andere Rechner und virtuelle Maschinen unterstützt werden.

Um für den automatisierungstechnischen Einsatz geeignet zu sein, muss diese neue Technologie allerdings mit der notwendigen Echtzeitfähigkeit versehen werden. Aber auch hier ist PC-Control mit TwinCAT 3 und der Integration von C/C++ auf dem richtigen Weg.

Ramon Barth, Leiter Software-Entwicklung, System, HMI und Echtzeit, Beckhoff Automation

(ID:384424)