Abschlussarbeiten

Bachelor- / Masterarbeiten für Studierende aus allen MINT-Studiengängen


Bachelorarbeit / Masterarbeit 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.


Dauer: bis 6 Monate
Vergütung: ja
Wochenarbeitszeit: 40h
Bewerbungszeichen: Compiler-Student


Info und Bewerbung:
CODESYS Group
Personalabteilung, Frau Sabine Panzer
jobs@codesys.com

Interessiert? Hier noch mehr Infos für dich.

Wir bieten:

  • Anspruchsvolle Aufgaben und Projekte
  • 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


Dauer: Dauer der Abschlussarbeit gemäß Studienordnung
Umfang: 40 Stunden/Woche
Beginn: Nach Absprache