Abschlussarbeit Compiler-Direktive für "Likeliness"

  • Kempten, CODESYS Group
  • Voll/Teilzeit
scheme image

Deine Abschlussarbeit bei der CODESYS Group: Compiler-Direktive für „Likeliness“

Problembeschreibung
CODESYS ist ein hardwareunabhängiges Programmiersystem für speicherprogrammierbare Steuerungen. Die verwendeten Programmiersprachen entsprechen dem Standard IEC 61131-3. Sie werden in prozessorspezifischen Code übersetzt. Aktuell existieren für CODESYS Codegenerator-Backends für mehr als 10 Prozessoren.
Moderne Prozessoren verfügen über tiefe Pipelines, um Instruktionen weit vor ihrer eigentlichen Ausführung zu laden und zu bearbeiten. Bei bedingten Sprüngen arbeiten diese Prozessoren mit einfachen Heuristiken, nach denen entschieden wird, welcher Pfad der vermutlich abzuarbeitende ist.

Eine falsche Heuristik kann für die Performance sehr schlecht sein, weil die Pipeline dann unter Umständen vollständig geleert und komplett neu gefüllt werden muss.
Ein effizienter Compiler kann diese Eigenschaften eines Prozessors ausnutzen, um schnelleren Code zu generieren, wenn die Wahrscheinlichkeit bekannt ist, mit der eine Bedingung zutrifft. Es wäre sehr hilfreich, eine Direktive zu implementieren, die dem Programmierer erlaubt, die Wahrscheinlichkeit einer Bedingung festzulegen. Eine solche Direktive könnte zum Beispiel folgendermaßen aussehen:

IF (__UNLIKELY(x > 100000)) THEN
         LOG_Message(‘Variable too big’);
ELSIF (__LIKELY(x < 100)) THEN
          // do this
ELSE
         // do that
END_IF

Neben IF-ELSIF-Anweisungen gibt es in den grafischen Sprachen der IEC 61131-3 auch bedingte Aufrufe, bedingte Sprünge und bedingte Return-Anweisungen. Auch diese sollen mit der __LIKELY-Direktive optimiert werden können.

Ziel der Arbeit
Es soll eine wie oben beschriebene Direktive implementiert und in den CODESYS-Compiler integriert werden. Außerdem soll untersucht werden, wie sich diese Direktive auf den verschiedenen Prozessor-Architekturen (Intel Pentium, ARM, PowerPC, evtl. SH, MIPS und weitere) ausnutzen lässt und welche Performance-Gewinne dadurch zu erzielen sind.
Die Arbeit kann eventuell zu einer Masterarbeit ausgeweitet werden durch Entwicklung einer Runtime-Analyse, die die Häufigkeit misst, mit der eine Bedingung zutrifft, um in einem zweiten Compile-Durchlauf den Code mit __LIKELY / __UNLIKELY – Direktiven zu optimieren.
 

Das wartet auf dich:

  • Persönliche Einarbeitung und Betreuung
  • Kollegiale Arbeitsatmosphäre
  • Chance auf eine Übernahme in ein festes Arbeitsverhältnis nach erfolgreichem Studienabschluss

Dein Profil:

  • Studium eines MINT-Fachs
  • Interesse und Engagement
  • Motivation zu eigenverantwortlichem Arbeiten
  • Genaue und zuverlässige Arbeitsweise

Wir freuen uns darauf, dich kennenzulernen!

CODESYS Group
Personalabteilung
+49-831-540 31-0