{"id":7691,"date":"2025-11-28T21:59:48","date_gmt":"2025-11-28T20:59:48","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7691"},"modified":"2026-02-14T06:30:27","modified_gmt":"2026-02-14T05:30:27","slug":"practical-tips-and-tricks-for-runtime-optimization","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/","title":{"rendered":"Practical tips and tricks for runtime optimization"},"content":{"rendered":"<h2>Optimierungsans\u00e4tze auf RTOS-\/Codeebene; Single-\/Multicore<\/h2>\n<p>Autor: Peter Gliwa, GLIWA GmbH embedded systems<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2018<\/h3>\n<p><strong>Die Ressource &#8222;Rechenzeit&#8220; wird in vielen Projekten im Verlauf der Entwicklung knapp. Im Folgenden sollen einige praktische Ans\u00e4tze beleuchtet werden, um in solchen Situationen Steuerger\u00e4tesoftware hinsichtlich der Laufzeit zu optimieren. Zum anderen werden Ma\u00dfnahmen angesprochen, um fr\u00fchzeitig beim Design, bei der Konfiguration und Implementierung Laufzeitprobleme zu verhindern.<\/strong><\/p>\n<p>In den letzten 20 Jahren hat sich mit Blick auf das Timing bei der Entwicklung von Steuerger\u00e4tesoftware viel getan. Wurde das Timing fr\u00fcher meist nur dann explizit betrachtet, wenn es Probleme verursachte, wird dem Timing heute oft systematisch und fr\u00fchzeitig Aufmerksamkeit zuteil. Die Betriebssystemkonfiguration wird beispielsweise nicht einfach vom Vorg\u00e4ngerprojekt \u00fcbernommen und hier und da angepasst. Stattdessen finden eingehende \u00dcberlegungen statt, welche Anforderungen an das Timing existieren und wie diese mit einer geeigneten Betriebssystemkonfiguration, Verteilung von Tasks auf die verschiedenen Kerne eines Multicoreprozessors etc. begegnet werden kann.<\/p>\n<p>Immer \u00f6fter kommen dabei Techniken wie die Schedulingsimulation oder Schedulinganalyse zum Einsatz. Dennoch kommt praktisch jedes Projekt an einen Punkt, bei dem das Verhalten des\u00a0<em>realen<\/em>\u00a0Systems mitunter gravierend vom\u00a0<em>erwarteten<\/em>\u00a0Verhalten \u2013 dem simulierten oder modellierten Timing \u2013 abweicht. Hier hilft nur eine Analyse der realen Systems, falls erforderlich in der realen Umgebung, also im Fahrzeug.<\/p>\n<h2>Laufzeitanalyse: Welche Technik f\u00fcr welche Situation?<\/h2>\n<p>Bevor wir uns den konkreten Timinganalysetechniken zuwenden, soll verdeutlicht werden, dass bei der Timinganalyse grunds\u00e4tzlich zwei Fragen vorangestellt werden sollten. Erstens: in welcher Phase befindet sich das Projekt? M\u00f6gliche Phasen sind &#8222;fr\u00fch&#8220; oder &#8222;sp\u00e4t&#8220; beziehungsweise &#8222;Design&#8220;, \u201eImplementierung\u201c oder &#8222;Verifikation&#8220;, um es mit den Begriffen des V-Modells zu sagen. Zweitens: Auf welcher Abstraktionsebene soll Timinganalyse betrieben werden? M\u00f6glich Ebenen sind &#8222;Codeebene&#8220;, &#8222;Schedulingebene&#8220; oder &#8222;Netzwerkebene&#8220;. Es l\u00e4sst sich feststellen, dass sich jede Auseinandersetzung mit einem konkreten Timingaspekt in einem Koordinatensystem mit den Achsen &#8222;Phase\/Projektlaufzeit&#8220; und &#8222;Ebene&#8220; verorten l\u00e4sst. Abbildung\u00a01 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) stellt dies anhand von V-Modellen auf der jeweiligen Ebene dar.<\/p>\n<p>Die gleichen Ebenen finden sich in Abbildung\u00a02 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) unterhalb der Granularit\u00e4tsachse wieder. Dar\u00fcber sind die verschiedenen Timinganalysetechniken aufgetragen; es besteht eine gewisse Zuordnung anhand der horizontalen Position. Die &#8222;statische Codeanalyse&#8220; beispielsweise findet auf der Codeebene statt und deckt den Bereich von &#8222;Opcode States&#8220; bis hin zu &#8222;TASK\/ISR&#8220; ab.<\/p>\n<p>Abbildung\u00a03 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) erg\u00e4nzt die \u00dcbersicht um die Aspekte &#8222;Art der Timinganalyse&#8220; und die bereits angesprochene (Projekt-) Phase.<\/p>\n<p>Eine kurze Beschreibung der Funktionsweise der verschiedenen Analysetechniken findet sich auf dem Timingposter [1], dem auch die bisherigen Abbildungen entnommen sind.<\/p>\n<p>Die folgende Liste zeigt Anwendungsf\u00e4lle (Use Cases) f\u00fcr die verschiedenen Timinganalysetechniken auf.<\/p>\n<ul>\n<li>Statische Codeanalyse\n<ul>\n<li><strong>Use-Case:<\/strong>\u00a0Ermittlung der WCET (worst-case core execution time) unabh\u00e4ngig von der Verf\u00fcgbarkeit von Hardware und unabh\u00e4ngig von Testvektoren<\/li>\n<li><strong>Anmerkungen:\u00a0<\/strong>Die Auswirkung von Interrupts auf Cache und Pipeline wird ignoriert, ebenso diverse Multicoreeffekte wie zum Beispiel Zugriffskonflikte am Memory-Interface.<br \/>\nIndirekte Funktionsaufrufe und Schleifenobergrenzen k\u00f6nnen unter Umst\u00e4nden nicht aufgel\u00f6st und m\u00fcssen manuell &#8222;annotiert&#8220; (von Hand erg\u00e4nzt) werden, was fehleranf\u00e4llig ist.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Codesimulation\n<ul>\n<li><strong>Use-Case:<\/strong>\u00a0Grobe Absch\u00e4tzung der CET (core execution time) f\u00fcr das gegebene Testszenario<\/li>\n<li><strong>Anmerkung:<\/strong>\u00a0Spielt in der Timinganalyse keine gro\u00dfe Rolle.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Messen\n<ul>\n<li><strong>Use-Ceses:<\/strong>\u00a0Analyse des realen Systems (die Software l\u00e4uft auf der Zielhardware) zwecks Profiling, Verifikation oder \u00dcberwachung.<\/li>\n<li><strong>Anmerkungen:<\/strong>\u00a0Unter (Timing-) Profiling versteht man die Ermittlung von Timingparametern wie der CPU-Auslastung, der CET (core execution time), der RT (response time) etc. Die Ergebnisse h\u00e4ngen von den Testvektoren ab, die die Software w\u00e4hrend der Messung bearbeitet hat.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Tracing\n<ul>\n<li><strong>Use-Cases:<\/strong>\u00a0Analyse des realen Systems (die Software l\u00e4uft auf der Zielhardware) zwecks Visualisierung, Debugging, Optimierung, Profiling oder Verifikation.<\/li>\n<li><strong>Anmerkungen:<\/strong>\u00a0Unter Tracing versteht man die Aufzeichnung von Ereignissen zur sp\u00e4teren Analyse und Visualisierung. Mit Blick auf das Timing eignen sich Schedulingtraces mit Ereignissen wie &#8222;Aktivierung&#8220;, &#8222;Start&#8220;, &#8222;Unterbrechung&#8220;, &#8222;Terminierung&#8220; von Tasks besonders gut.<br \/>\nMan unterscheidet Hardware-basiertes Tracing und Software-basiertes Tracing. Ersteres kann ohne Modifikation der Software auskommen, f\u00fcr letzteres wird die Software instrumentiert, was die Verwendung der serienidentischen Hardware im Fahrzeug erlaubt.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Schedulingsimulation\n<ul>\n<li><strong>Use-Case:<\/strong>\u00a0Design und Optimierung von Schedulingkonzepten und der Betriebssystemkonfiguration; Analyse des typischen Schedulingverhaltens<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Statische Schedulinganalyse\n<ul>\n<li><strong>Use-Case:<\/strong>\u00a0Design und Optimierung von Schedulingkonzepten und der Betriebssystemkonfiguration; Analyse des worst-case Schedulingverhaltens, zum Beispiel Ermittlung der WCRT (worst-case response time)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Laufzeitoptimierung<\/h2>\n<p>Eine komplette Liste aller Laufzeitoptimierungsans\u00e4tze zu erstellen ist unm\u00f6glich. Daher sollen im Folgenden lediglich ein paar grunds\u00e4tzliche Aspekte behandelt und exemplarisch einige konkrete Ma\u00dfnahmen vorgestellt werden.<\/p>\n<p>Als allgemein g\u00fcltige Regel l\u00e4sst sich festhalten, dass Laufzeitoptimierung immer &#8222;top-down&#8220; erfolgen sollte, also von den oberen zu den unteren Ebenen hin. W\u00fcrde man direkt mit der Codeoptimierung beginnen, w\u00fcsste man nicht, ob der betreffende Code \u00fcberhaupt zu einem Zeitpunkt ausgef\u00fchrt wird, an dem das Timing kritisch ist.<\/p>\n<p>Besser ist es, zun\u00e4chst auf der Schedulingebene ein\u00a0<em>gutes Verst\u00e4ndnis<\/em>\u00a0der aktuellen Situation herbeizuf\u00fchren, Optimierungen auf dieser Ebene durchzuf\u00fchren und anschlie\u00dfend mittels Codeoptimierung die verbleibenden &#8222;Hotspots&#8220; anzugehen.<\/p>\n<p>Die Bedeutung des\u00a0<em>guten Verst\u00e4ndnisses<\/em>\u00a0wird leider oft untersch\u00e4tzt. In vielen Projekten konnte ich beobachten, wie Integratoren beim Blick auf den ersten heruntergeladenen Trace mit einer gewissen Fassungslosigkeit feststellen mussten, dass sich das System ganz anders verh\u00e4lt, als gedacht und zuvor simuliert.<\/p>\n<h2>Laufzeitoptimierung auf der RTOS (Scheduling-) Ebene<\/h2>\n<p>Die oberste Regel f\u00fcr Laufzeitoptimierung auf der Schedulingebene wird leider oft missachtet, obwohl sie denkbar einfach ist:\u00a0<em>Keep it simple!<\/em><\/p>\n<p>Konkret hei\u00dft das beispielsweise, dass die Betriebssystemkonfiguration m\u00f6glichst einfach gehalten wird. Am besten sollte BCC1 (Basic Conformance Class ohne Mehrfachaktivierungen) zum Einsatz kommen. Leider legen die meisten AUTOSAR RTE-Generatoren die Verwendung von ECC nahe, indem sie eine nicht terminierende ECC-Task anlegen und darin eine zweite Ebene des Schedulings einf\u00fchren: Die RTE-Runnables werden in dieser ECC-Task mittels Events getriggert. Die damit verbundene Komplexit\u00e4t wird von den meisten Projektverantwortlichen nicht mehr \u00fcberblickt, und die Analyse von Timingproblemen wird deutlich erschwert.<\/p>\n<p>Ganz nebenbei l\u00e4sst sich mit der Verwendung von BCC der Stackbedarf signifikant verringern.<\/p>\n<p>Eine weitere Ma\u00dfnahme, um typische Echtzeitprobleme zu vermeiden, den Laufzeitbedarf und gleichzeitig den Stackbedarf weiter zu minimieren ist die Verwendung von kooperativem Multitasking. &#8222;Kooperativ&#8220; hei\u00dft hier, dass Taskwechsel nur zu bestimmten Zeitpunkten erfolgen d\u00fcrfen \u2013 sinnvollerweise dann, wenn gerade kein Runnable l\u00e4uft. Die RTE oder vergleichbare Mechanismen stellen dann fest, dass zur Sicherung der Datenkonsistenz keine Kopien der Daten notwendig sind. Ergebnis: Einsparung bei RAM und Laufzeit. Es leuchtet ein, dass dar\u00fcber hinaus der Stackbedarf typischerweise drastisch reduziert wird, da eine Verschachtelung von Runnables nicht mehr m\u00f6glich ist.<\/p>\n<p>Abbildung\u00a04 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt den Trace eines sehr positiven Beispiels f\u00fcr ein gelungenes Timingdesign: die Aktivlenkung des BMW X5 (e70). Das System ist \u2013 je nach Zustand \u2013 bis \u00fcber 93% ausgelastet, aber niemals \u00fcberlastet. Durch die Optimierungsma\u00dfnahmen konnte ein g\u00fcnstigerer, weniger leistungsf\u00e4higer Prozessor als in der Vorg\u00e4ngergeneration zum Einsatz kommen \u2013 und das bei zus\u00e4tzlicher Funktionalit\u00e4t.<\/p>\n<h2>Laufzeitoptimierung auf der Codeebene<\/h2>\n<p>Als Beispiel f\u00fcr die Laufzeitoptimierung auf der Codeebene soll an dieser Stelle die wohlbekannte Funktion memcpy optimiert werden. memcpy kopiert eine definierte Anzahl von Bytes von einem Speicherbereich in einen anderen. Eine Standardimplementierung ist in Abbildung\u00a05 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) ersichtlich.<\/p>\n<p>Wird diese Funktion zum Kopieren von einem Kibibyte (1024 Bytes) auf einem Infineon AURIX TC275 mit 200 MHz Taktfrequenz und unter Verwendung eines TASKING-Compilers verwendet, so ergibt sich f\u00fcr die Default Memory Locations eine minimale CET (core execution time) von 114,395\u00b5s oder\u00a0<strong>111,7ns pro Byte<\/strong>. Dies ist der Ausgangspunkt f\u00fcr die nun folgenden Optimierungen. Der generierte Assemblercode ist in Abbildung\u00a06 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zu sehen.<\/p>\n<p>Im ersten Schritt sollen nun andere Speicherorte verwendet werden. Abbildung\u00a07 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt einen Auszug aus dem AURIX-Handbuch, dass die Zugriffsdauer auf verschiedene Speicher in Taktzyklen angibt. Ein entscheidender Multicoreaspekt sei an dieser Stelle schon mal erw\u00e4hnt: Die in der Tabelle angegebenen Zahlen gelten f\u00fcr den Fall, dass am Memory-Interface kein Zugriffskonflikt auftritt, also nicht etwas ein anderer Kern gerade mit h\u00f6herer Priorit\u00e4t auf den Speicherbereich zugreift. Im Falle eines Konfliktes kann die Verz\u00f6gerung wesentlich gr\u00f6\u00dfer sein.<\/p>\n<p>Doch auch ohne Konflikte ist der Unterschied zwischen &#8222;schnellen&#8220; und &#8222;langsamen&#8220; Speichern erheblich. Die Default Memory Locations des Ausgangsstands waren: Cached Flash0 f\u00fcr den Code, LMU RAM f\u00fcr das Ziel der Kopie und Cached Flash0 f\u00fcr die Quelle.<\/p>\n<p>Wird das Ziel nun statt im LMU RAM im Local DSPR0 abgelegt, verringert sich die Kopiergeschwindigkeit auf\u00a0<strong>100,6ns pro Byte<\/strong>.<\/p>\n<p>Im n\u00e4chsten Schritt wird dem Compiler per #pragma oder per Compileroption \u2013t0 vorgegeben, bei der Kompilierung m\u00f6glichst schnellen Code zu erzeugen. Der Compiler generiert nun anderen Assemblercode, siehe Abbildung\u00a08 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>), unter der Verwendung von prinzipiell erstrebenswerten &#8222;post-increment&#8220; Speicherzugriffen und unter der Verwendung von speziellen Befehlen des AURIX Befehlssatzes, in diesem Fall der loop Anweisung.<\/p>\n<p>Der so erzeugte Code l\u00e4uft wesentlich schneller und ben\u00f6tigt nur noch\u00a0<strong>59,6ns pro Byte<\/strong>.<\/p>\n<p>Abschlie\u00dfend wird der Code von Hand optimiert. In den meisten F\u00e4llen ist dies auf der C-Code-Ebene m\u00f6glich, wobei permanent a) der erzeugte Assemblercode \u00fcberpr\u00fcft werden und b) mittels Messung die tats\u00e4chliche Laufzeit ermittelt werden muss. Im Bereich der Codeoptimierung ist die Verlockung gro\u00df, sich Annahmen und Vermutungen hinzugeben. Selbst die Besten der Besten erleben \u00dcberraschungen und m\u00fcssen sich eingestehen, dass das erwartete Laufzeitverhalten eines Optimierungsansatzes weit entfernt liegt vom realen Verhalten und nur die Messung am realen System dies offenbart.<\/p>\n<p>Vor der eigentlichen manuellen Optimierung ein paar \u00dcberlegungen zu memcpy. Laut Spezifikation kann sie Daten mit der Granularit\u00e4t von einem Byte kopieren. Der AURIX kann als 32bit-Prozessor sehr effizient mit vier Byte gro\u00dfen W\u00f6rtern umgehen. Analysiert man die Datenobjekte einer typischen Anwendung im Automobilbereich, stellt man fest, dass die Gr\u00f6\u00dfe der meisten Datenobjekte einem ganzzahligen Vielfachen von vier entspricht und sie auch vier Byte aligned sind \u2013 also eine Speicheradresse aufweisen, die ebenfalls ein ganzzahliges Vielfaches von vier ist. Die in Abbildung\u00a09 (s.\u00a0<a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) dargestellte Implementierung der entscheidenden Bereiche von memcpy macht sich diese Erkenntnisse zu Nutzen und \u00fcberpr\u00fcft, ob Quelle und Ziel vier Byte aligned sind und ob auch die Anzahl der zu kopierenden Bytes ein ganzzahliges Vielfaches von vier ist. Ist dies der Fall, werden immer vier Bytes in einem einzelnen Schleifendurchlauf kopiert.<\/p>\n<p>Diese manuelle Optimierung ergibt zusammen mit allen zuvor genannten Optimierungen einen Laufzeitbedarf von\u00a0<strong>14,7ns pro Byte<\/strong>. Immerhin eine Laufzeitersparnis von rund\u00a0<strong>87%<\/strong>\u00a0gegen\u00fcber der Ausgangsversion.<\/p>\n<h2><strong>Multicore-spezifische Aspekte<\/strong><\/h2>\n<p>F\u00fcr Multicoresysteme hat es sich bew\u00e4hrt, die Funktionalit\u00e4t so aufzuteilen, dass intensive Berechnungen und die Bearbeitung vieler Interrupts auf verschiedene Kerne aufgeteilt werden. Als Folge werden bei den komplexen Berechnungen Pipeline und Cache besser genutzt, was den Durchsatz erh\u00f6ht.<\/p>\n<p>&#8222;Busy-Spinning&#8220; also das Warten eines Kerns auf die Freigabe einer Ressource auf einem anderen Kern, sollte wo\u00a0 immer m\u00f6glich konzeptionell vermieden werden. In vielen F\u00e4llen l\u00e4sst sich der Einsatz von Spin-Locks durch geeignetes Design der Software komplett vermeiden. Bei der Portierung von Singlecore-Software auf Multicore ist das blinde Suchen\/Ersetzen von DisableInterrupts()\/EnableInterrupts() mit GetSpinlock()\/ ReleaseSpinlock() eine schlechte Idee. Der beste Mechanismus zum Schutz von Daten ist der, den man nicht braucht.<\/p>\n<h2>Zusammenfassung, Ausblick<\/h2>\n<p>Laufzeitoptimierung ist komplex und vielschichtig. Sie kann und sollte auf verschiedenen Ebenen stattfinden: auf der Schedulingebene und auf der Codeebene &#8211; und zwar in dieser Reihenfolge, um zu verhindern, dass (Codeoptimierungs-) Aufwand betrieben wird, der die Gesamtsituation gar nicht verbessert.<\/p>\n<p>Voraussetzung f\u00fcr eine zielgerichtete Analyse und Optimierung ist die Kenntnis der verschiedenen Analysetechniken. Nur so kann man f\u00fcr den jeweiligen Anwendungsfall das richtige Werkzeug bem\u00fchen.<\/p>\n<p>Der wichtigste erste Schritt, eine existierende Anwendung auf dem Weg zu einer effizienten und sicheren Software zu bringen, ist das Verst\u00e4ndnis dar\u00fcber, wie sich das System tats\u00e4chlich verh\u00e4lt. Vermutungen und Annahmen sind hier fehl am Platz; der Einblick und die Analyse des realen Systems unter realen Bedingungen (also auch im Fahrzeug) sind entscheidend.<\/p>\n<p>Seit einigen Jahren machen sogenannte C-to-C Compiler von sich reden, die gegebenen C-Code in parallelisierbaren C-Code \u00fcbersetzen sollen. Ich bin diesem Ansatz gegen\u00fcber skeptisch. Meine Vermutung (oder soll ich sagen: &#8222;Hoffnung&#8220;?) geht eher in die Richtung, dass eine bessere Ausnutzung von Multicore dadurch erzielt werden wird, dass die Codegeneratoren grunds\u00e4tzlich anders arbeiten werden. Zuk\u00fcnftige Generatoren werden es erlauben, aus einem generischen Modell (&#8222;generisch&#8220; im Sinne von nicht auf Singlecore oder Multicore festgelegt) entweder Code f\u00fcr Singlecore (bzw. Single-thread) oder aber gut parallelisierbaren Code f\u00fcr Multicore zu erzeugen.<\/p>\n<h2>Literatur- und Quellenverzeichnis<\/h2>\n<p>[1]<a title=\"Timingposter\" href=\"https:\/\/www.gliwa.com\/downloads\/Timing\/%20Poster.pdf\" target=\"_blank\" rel=\"noopener\">\u00a0Timingposter, Peter Gliwa, Februar 2013<\/a><\/p>\n<h2>Autor<\/h2>\n<p>Seit der Gr\u00fcndung 2003 steht Peter Gliwa als gesch\u00e4ftsf\u00fchrender Gesellschafter an der Spitze von GLIWA. \u00dcber viele Jahre hinweg entwickelte er die Timingsuite T1 und ber\u00e4t heute international Kunden in Timingfragen und bei Themen rund um Echtzeitbetriebssysteme. Zuvor war er bei ETAS zun\u00e4chst Entwickler, danach Produktmanager des Echtzeitbetriebssystems ERCOS<sup>EK<\/sup>. Zwischen 2001 und 2006 war er dar\u00fcber hinaus als Dozent f\u00fcr das Fach &#8222;Mikrocomputertechnik&#8220; t\u00e4tig. Peter Gliwa hat Elektrotechnik an der Berufsakademie Stuttgart studiert.<\/p>\n<p>Internet:\u00a0<a href=\"https:\/\/gliwa.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/gliwa.com<br \/>\n<\/a>Email:\u00a0 \u00a0peter.gliwa@gliwa.com<\/p>\n<p><a title=\"Fachinfo_ESE_laufzeitoptimierung_gliwa_gliwa\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_laufzeitoptimierung_gliwa_gliwa.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF-Datei downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Echtzeit &#8211; MicroConsult Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"Alle Trainings und Termine\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Embedded- und Echtzeit-Softwareentwicklung.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Echtzeit &#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema Embedded- und Echtzeit-Softwareentwicklung steht\u00a0<a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>\u00a0Fachwissen zu weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Fachinformationen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Optimierungsans\u00e4tze auf RTOS-\/Codeebene; Single-\/Multicore Autor: Peter Gliwa, GLIWA GmbH embedded systems Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die Ressource &#8222;Rechenzeit&#8220; wird in vielen Projekten im Verlauf der Entwicklung knapp. Im Folgenden sollen einige praktische Ans\u00e4tze beleuchtet werden, um in solchen Situationen Steuerger\u00e4tesoftware hinsichtlich der Laufzeit zu optimieren. Zum anderen werden Ma\u00dfnahmen angesprochen, um fr\u00fchzeitig [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7691","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/practical-tips-and-tricks-for-runtime-optimization\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Optimierungsans\u00e4tze auf RTOS-\/Codeebene; Single-\/Multicore Autor: Peter Gliwa, GLIWA GmbH embedded systems Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die Ressource &#8222;Rechenzeit&#8220; wird in vielen Projekten im Verlauf der Entwicklung knapp. Im Folgenden sollen einige praktische Ans\u00e4tze beleuchtet werden, um in solchen Situationen Steuerger\u00e4tesoftware hinsichtlich der Laufzeit zu optimieren. Zum anderen werden Ma\u00dfnahmen angesprochen, um fr\u00fchzeitig [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/practical-tips-and-tricks-for-runtime-optimization\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-28T20:59:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-14T05:30:27+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung\",\"datePublished\":\"2025-11-28T20:59:48+00:00\",\"dateModified\":\"2026-02-14T05:30:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/\"},\"wordCount\":2244,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/\",\"name\":\"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-28T20:59:48+00:00\",\"dateModified\":\"2026-02-14T05:30:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Practical tips and tricks for runtime optimization - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/practical-tips-and-tricks-for-runtime-optimization\/","og_locale":"en_GB","og_type":"article","og_title":"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung - MicroConsult Academy GmbH","og_description":"Optimierungsans\u00e4tze auf RTOS-\/Codeebene; Single-\/Multicore Autor: Peter Gliwa, GLIWA GmbH embedded systems Beitrag &#8211; Embedded Software Engineering Kongress 2018 Die Ressource &#8222;Rechenzeit&#8220; wird in vielen Projekten im Verlauf der Entwicklung knapp. Im Folgenden sollen einige praktische Ans\u00e4tze beleuchtet werden, um in solchen Situationen Steuerger\u00e4tesoftware hinsichtlich der Laufzeit zu optimieren. Zum anderen werden Ma\u00dfnahmen angesprochen, um fr\u00fchzeitig [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/practical-tips-and-tricks-for-runtime-optimization\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-28T20:59:48+00:00","article_modified_time":"2026-02-14T05:30:27+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung","datePublished":"2025-11-28T20:59:48+00:00","dateModified":"2026-02-14T05:30:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/"},"wordCount":2244,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/","url":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/","name":"Practical tips and tricks for runtime optimization - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-28T20:59:48+00:00","dateModified":"2026-02-14T05:30:27+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/praktische-tipps-und-tricks-fuer-die-laufzeitoptimierung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Praktische Tipps und Tricks f\u00fcr die Laufzeitoptimierung"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7691"}],"version-history":[{"count":4,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7691\/revisions"}],"predecessor-version":[{"id":11819,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7691\/revisions\/11819"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}