WO2009021539A1 - Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung - Google Patents
Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung Download PDFInfo
- Publication number
- WO2009021539A1 WO2009021539A1 PCT/EP2007/007261 EP2007007261W WO2009021539A1 WO 2009021539 A1 WO2009021539 A1 WO 2009021539A1 EP 2007007261 W EP2007007261 W EP 2007007261W WO 2009021539 A1 WO2009021539 A1 WO 2009021539A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- threads
- program
- execution
- target
- time
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Definitions
- the invention relates to a method for compiling a source program into a target program for a target system with a multicore processor, a method for executing said target program on the target system with the multicore processor and a device that is suitable for executing the target program.
- the invention is used wherever time-critical processes are to be controlled in real time using a multicore processor.
- An example of this is called automation technology, in which a large number of sensors must be read in the industrial sector, the corresponding data must be processed in order to generate corresponding control signals for a large number of actuators.
- the data processing steps carried out in this case must be performed by a programmable logic controller, while maintaining specified real-time conditions, with the shortest possible processing time is sought by the CPU.
- So-called multicore processors are able to perform different tasks in a computer in parallel or asymmetrically multithreading, thus shortening the overall execution time of computer programs.
- a software developer of a computer program can use the parallel processing capability of such a multicore processor by dividing its program into several threads. The individual threads can be executed in parallel on several main processors of the multicore processor, so that the overall execution time of the program is considerably reduced compared to conventional single-processor CPUs.
- the distribution of the threads to the various main processors is performed by an operating system scheduler. In general, the scheduler assigns time slices to the threads with priority control. Prioritizing threads can be used by the software developer to create the computer program.
- the invention has for its object to accelerate the execution of computer programs on systems with multicore processors.
- This object is achieved by a method for compiling a source program having at least two threads into a target program executable on a real-time target system with a multicore processor, wherein a runtime information is generated during compilation for each of the at least two threads, which determines the target system the time required to execute the associated thread before it executes.
- the object is achieved by a computer program product with program code means for carrying out such a method when said computer program product is executed on a data processing system.
- the object is further achieved by an apparatus for executing a target program compiled from a source program having at least two threads according to such a method, the apparatus comprising a multi-core processor and a real-time operating system for determining the time required for executing each of includes at least two threads based on the associated runtime information prior to the execution of the threads.
- the invention is based on the finding that the distribution of the threads can be carried out considerably more efficiently by a scheduler of an operating system, if this scheduler at runtime can make a prediction about its time requirement during execution even before the execution of the threads.
- the runtime information, from which the scheduler can determine the time required is already generated during the compilation of the source program. The fact that this information is generated automatically during the compile time by a code analysis, the software developer is also relieved, since he himself must make no manual distribution of the individual threads on the various main processors of the multicore processor.
- the runtime information characterizes the runtime of the associated thread as a function of the resources available for the execution of the associated thread.
- the resources available to run the threads at runtime are usually unknown to the compiler. However, these can be determined by the scheduler at runtime before the threads are distributed to the various main processors, so that the scheduler can determine the time requirement of each thread based on the runtime information.
- the runtime information is stored as an additional data segment within the target program. If the runtime information is made available to the scheduler as a file segment of, for example, a PE file or ELF file, it can fine-tune the tasks or tasks to be performed with the aid of data determined at runtime. men. In this way, effective use of the CPUs of the multicore processor and faster processing of the computer program are achieved.
- an embodiment of the invention is advantageous in which the source program is a control program for a programmable logic controller.
- the object is also achieved by a method for executing a target program on a real-time target system with a multicore processor, wherein the target program has been compiled according to a method according to one of the embodiments described above from the source program with the at least two threads, the time required
- Executing each of the at least two threads is determined based on the associated runtime information before the execution of the threads.
- the object is achieved by a computer program product containing program code means for carrying out such a method when said computer program product is executed on a real-time capable data processing system.
- a computer program compiled according to the above-described method makes the runtime information available for execution so that it can be evaluated by the target system prior to the execution of the threads in order to enable an optimized distribution of the threads to the available hardware resources.
- the at least two threads are automatically distributed with a scheduler of the target system as a function of their respective time requirement on main processors of the multicore processor. A manual distribution of the threads on the various main processors by the software developer is therefore no longer necessary.
- the runtime behavior of the target program characterizing measured variables is determined during the runtime of the target program and the time requirement of each of the at least two Threads based on their runtime information and metrics.
- Such measures can be, for example, the number of memory accesses as well as the number of cache misses.
- FIG. 1 shows a schematic representation of a method for compiling a computer program with several
- FIG. 2 shows a data processing system for compiling and a programmable logic controller for executing the computer program.
- FIG. 1 shows a schematic representation of a method for compiling a computer program having a plurality of threads 2, 3 for a multicore processor system and its execution.
- the computer program is initially available in the form of a source program 1.
- two threads 2, 3 are provided with reference numerals by way of example, wherein the source program 1 still includes more threads that are not explicitly shown here for reasons of clarity.
- the target program 4 created here contains an additional data segment 11.
- Runtime information 7, 8 is stored within the additional data segment 11, by means of which a real-time operating system 9 with a scheduler 13 at runtime of the Target program 4 can determine the time requirement of the individual threads 2,3.
- the runtime information 7, 8 are already generated during the compilation process based on a code analysis and serve to optimize the parallelization of the individual threads 2, 3 on the target hardware at the later runtime of the machine program.
- the finished compiled target program 4 is to be executed on a real-time target system with a multicore processor 6.
- the multicore processor 6 naturally contains a number of main processors 10, with which different tasks, processes or threads can be executed in parallel.
- the scheduler 13 analyzes the execution of the target program 4 on the target hardware during the execution of the target program 4. For example, it determines the number of memory accesses and the cache misses, etc. that occur during the processing of the program instructions. If such measured quantities are available even before the execution of one of the threads 2, 3, then it links this information with the runtime information of the still executing threads 2, 3 and can then make a relatively accurate statement about the execution time that the still outstanding threads 2, 3 will need.
- the scheduler carries out a distribution of the threads 2, 3 still to be processed, to the available main processors 10, which leads to an optimal efficiency and utilization of the main processors 10 during the execution of the target program 4.
- 2 shows a data processing system 12 for compiling and a programmable logic controller 5 for executing the computer program, which has already been discussed under the description of FIG.
- the figure shows a software developer 15, which generates the source program 1 with the aid of the data processing system 12, which is a conventional PC or laptop. Within the source program 1, it defines individual threads 2, 3, of which again, for reasons of clarity, only two are shown explicitly and provided with reference numerals.
- a compiler is installed, which performs a code analysis during the compiling of the source program 1. The result of this code analysis is in each case a runtime information item 7, 8, which is created for each thread 2, 3 of the source program 1. This runtime information 7,8 is written into a new data segment 11, which is an extension of known executable files such as PE or ELF files.
- the finished compiled target program 4 is then loaded by the data processing system 12 onto a programmable logic controller 5 to be executed by it to control an industrial automated process.
- the programmable logic controller 5 comprises a multicore processor, which guarantees a much faster processing time of the target program 4 in comparison with a single-processor embodiment.
- a real-time operating system is installed on the PLC 5, which, based on the runtime information 7, 8 stored in the data segment 11, has an optimized distribution of the threads 2, 3 with regard to the total execution time of the target program 4 the various main processors of the multicore processor.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Die Erfindung betrifft ein Verfahren zum Kompilieren eines Quellprogramms (1) mit mindestens zwei Threads (2, 3) in ein Zielprogramm (4) für ein echtzeitfähiges Zielsystem mit einem Multicore-Prozessor (6), ein Verfahren zum Ausführen besagten Zielprogramms (4) auf dem Zielsystem sowie eine Vorrichtung, die zur Ausführung des Zielprogramms (4) geeignet ist. Um die Ausführung des Zielprogramms (4) zu beschleunigen, wir vorgeschlagen, für jedes der mindestens zwei Threads (2, 3) eine Laufzeitinformation (7, 8) beim Kompilieren zu generieren, die dem Zielsystem eine Ermittlung des Zeitbedarfs einer Ausführung des zugehörigen Threads (2, 3) vor dessen Ausführung ermöglicht.
Description
Beschreibung
Kompilieren von Computerprogrammen für Multicore-Prozessoren und deren Ausführung
Die Erfindung betrifft ein Verfahren zum Kompilieren eines Quellprogramms in ein Zielprogramm für ein Zielsystem mit einem Multicore-Prozessor, ein Verfahren zum Ausführen besagten Zielprogramms auf dem Zielsystem mit dem Multicore-Prozessor sowie eine Vorrichtung, die zur Ausführung des Zielprogramms geeignet ist.
Die Erfindung kommt überall dort zum Einsatz, wo zeitkritische Prozesse in Echtzeit unter Verwendung eines Multicore- Prozessors gesteuert werden sollen. Als Beispiel hierfür sei die Automatisierungstechnik genannt, bei der im industriellen Bereich eine Vielzahl von Sensoren ausgelesen werden müssen, die entsprechenden Daten verarbeitet werden müssen um entsprechende Steuersignale für eine Vielzahl von Aktoren zu ge- nerieren. Die hierbei durchgeführten Datenverarbeitungsschritte müssen unter Einhaltung vorgegebener Echtzeitbedingungen von einer speicherprogrammierbaren Steuerung durchgeführt werden, wobei eine möglichst kurze Verarbeitungszeit durch die CPU angestrebt wird.
Sogenannte Multicore-Prozessoren sind in der Lage, verschiedene Tasks in einem Rechner durch symmetrisches oder asymmetrisches Multithreading parallel auszuführen und somit die Ge- samtausführungszeit von Computerprogrammen zu verkürzen. Ein Softwareentwickler eines Computerprogramms kann die Parallel- verarbeitungsmöglichkeit eines solchen Multicore-Prozessors nutzen, in dem er sein Programm in mehrere Threads aufteilt. Die einzelnen Threads können parallel auf mehreren Hauptprozessoren des Multicore-Prozessors ausgeführt werden, so dass die Gesamtausführungszeit des Programmes im Vergleich zu herkömmlichen Einprozessor-CPUs erheblich reduziert wird.
Die Verteilung der Threads auf die verschiedenen Hauptprozessoren wird von einem Scheduler eines Betriebssystems durchgeführt. In der Regel teilt der Scheduler den Threads hierbei prioritätsgesteuert Zeitscheiben zu. Auf die Priorisierung der Threads kann der Softwareentwickler bei der Erstellung des Computerprogramms Einfluss nehmen.
Der Erfindung liegt die Aufgabe zugrunde, die Ausführung von Computerprogrammen auf Systemen mit Multicore-Prozessoren zu beschleunigen.
Diese Aufgabe wird durch ein Verfahren zum Kompilieren eines Quellprogramms mit mindestens zwei Threads in ein auf einem echtzeitfähigen Zielsystem mit einem Multicore-Prozessor aus- führbares Zielprogramm gelöst, wobei für jedes der mindestens zwei Threads eine Laufzeitinformation beim Kompilieren generiert wird, die dem Zielsystem eine Ermittlung des Zeitbedarfs einer Ausführung des zugehörigen Threads vor dessen Ausführung ermöglicht.
Ferner wird die Aufgabe durch ein Computerprogrammprodukt mit Programmcodemitteln zur Ausführung eines derartigen Verfahrens gelöst, wenn besagtes Computerprogrammprodukt auf einen Datenverarbeitungssystem ausgeführt wird.
Die Aufgabe wird darüber hinaus durch eine Vorrichtung zur Ausführung eines Zielprogramms gelöst, das aus einem Quellprogramm mit mindestens zwei Threads gemäß einem derartigen Verfahren kompiliert wurde, wobei die Vorrichtung einen MuI- ticore-Prozessor aufweist und ein Echtzeitbetriebssystem zur Ermittlung des Zeitbedarfs einer Ausführung jedes der mindestens zwei Threads anhand der zughörigen Laufzeitinformation vor der Ausführung der Threads umfasst.
Die Verwendung eines Multicore-Prozessors ermöglicht es, verschiedene Threads eines Computerprogramms parallel auszuführen und somit die gesamte Ausführungszeit besagten Computerprogramms im Vergleich zu herkömmlichen Einprozessorarchitek-
turen erheblich zu verkürzen. Wie hoch die Effizienz im Vergleich zu diesen herkömmlichen Prozessoren gesteigert wird, hängt jedoch erheblich davon ab, wie geschickt die einzelnen Threads des Computerprogramms auf die verschiedenen Hauptpro- zessoren des Multicore-Prozessors verteilt werden.
Der Erfindung liegt die Erkenntnis zugrunde, dass die Verteilung der Threads erheblich effizienter durch eine Scheduler eines Betriebssystems erfolgen kann, wenn dieser Scheduler zur Laufzeit schon vor der Ausführung der Threads eine Vorhersage über deren Zeitbedarf bei der Abarbeitung tätigen kann. Um dies zu gewährleisten, werden die Laufzeitinformationen, aus denen der Scheduler den Zeitbedarf bestimmen kann, schon während des Kompilierens des Quellprogramms generiert. Dadurch, dass diese Informationen während der Compileszeit durch eine Codeanalyse automatisch erzeugt werden, wird auch der Softwareentwickler entlastet, da er selbst keine manuelle Verteilung der einzelnen Threads auf die verschiedenen Hauptprozessoren des Multicore-Prozessors vornehmen muss.
In vorteilhafter Ausgestaltung der Erfindung kennzeichnet die Laufzeitinformation die Laufzeit des zugehörigen Threads in Abhängigkeit der für die Ausführung des zugehörigen Threads verfügbaren Ressourcen. Die Ressourcen, die zur Ausführung der Threads zur Laufzeit zur Verfügung stehen, sind dem Compiler in der Regel noch nicht bekannt. Diese können jedoch vor der Verteilung der Threads auf die verschiedenen Hauptprozessoren von dem Scheduler zur Laufzeit ermittelt werden, so dass der Scheduler den Zeitbedarf jedes Threads anhand der Laufzeitinformationen bestimmen kann.
Bei einer weiteren vorteilhaften Ausführung der Erfindung sind die Laufzeitinformationen als zusätzliches Datensegment innerhalb des Zielprogramms abgespeichert. Wenn die Laufzeit- Informationen als Dateisegment beispielsweise einer PE-Datei oder ELF-Datei dem Scheduler zur Verfügung gestellt werden, kann dieser mit Hilfe von zur Laufzeit ermittelten Daten ein Feintuning der zu erledigenden Aufgaben bzw. Threads vorneh-
men. Auf diese Art und Weise werden eine effektive Nutzung der CPUs des Multicore-Prozessors und eine schnellere Abarbeitung des Computerprogramms erreicht.
Insbesondere im Bereich der industriellen Fertigungs- und
Prozessautomatisierung werden echtzeitkritische Prozesse von speicherprogrammierbaren Steuerungen, sogenannten SPS, gesteuert und geregelt. In diesem Bereich kann die Verarbeitungsgeschwindigkeit erheblich durch den Einsatz von Multico- re-Prozessoren gesteigert werden. Daher ist gerade hier eine Ausgestaltung der Erfindung vorteilhaft, bei der das Quellprogramm ein Steuerungsprogramm für eine speicherprogrammierbare Steuerung ist.
Die Aufgabe wird darüber hinaus durch ein Verfahren zur Ausführung eines Zielprogramms auf einem echtzeitfähigen Zielsystem mit einem Multicore-Prozessor gelöst, wobei das Zielprogramm gemäß einem Verfahren nach einer der zuvor beschriebenen Ausführungen aus dem Quellprogramm mit den mindestens zwei Threads kompiliert wurde, wobei der Zeitbedarf einer
Ausführung jedes der mindestens zwei Threads anhand der zugehörigen Laufzeitinformation vor der Ausführung der Threads ermittelt wird.
Ferner wird die Aufgabe durch ein Computerprogrammprodukt enthaltend Programmcodemittel zur Ausführung eines derartigen Verfahrens gelöst, wenn besagtes Computerprogrammprodukt auf einem echtzeitfähigen Datenverarbeitungssystem ausgeführt wird.
Ein nach dem zuvor beschriebenen Verfahren kompiliertes Computerprogramm stellt für die Ausführung die Laufzeitinformationen zur Verfügung, so dass diese vom Zielsystem vor der Ausführung der Threads ausgewertet werden können, um eine op- timierte Verteilung der Threads auf die zur Verfügung stehenden Hardware-Ressourcen zu ermöglichen.
In vorteilhafter Ausgestaltung der Erfindung werden hierbei die mindestens zwei Threads mit einem Scheduler des Zielsystems automatisch in Abhängigkeit ihres jeweiligen Zeitbedarfs auf Hauptprozessoren des Multicore-Prozessors verteilt. Eine manuelle Verteilung der Threads auf die verschiedenen Hauptprozessoren durch den Softwareentwickler ist dadurch nicht mehr notwendig.
Da die Eigenschaften der Hardware des Zielsystems zur Lauf- zeit des Programms während des Kompiliervorgangs nicht vollständig bekannt sein können, werden in weiterer vorteilhafter Ausgestaltung der Erfindung während der Laufzeit des Zielprogramms das Laufzeitverhalten des Zielprogramms charakterisierende Messgrößen ermittelt und der Zeitbedarf jedes der min- destens zwei Threads anhand der zugehörigen Laufzeitinformationen und der Messgrößen ermittelt. Derartige Messgrößen können beispielsweise die Anzahl der Speicherzugriffe sein sowie die Anzahl der Cache Misses.
Im Folgenden wird die Erfindung anhand der in den Figuren dargestellten Ausführungsbeispiele näher beschrieben und erläutert. Es zeigen:
FIG 1 eine schematische Darstellung eines Verfahrens zum Kompilieren eines Computerprogramms mit mehreren
Threads für ein Multicore-Prozessorsystem und dessen Ausführung und
FIG 2 ein Datenverarbeitungssystem zum Kompilieren und eine speicherprogrammierbare Steuerung zum Ausführen des Computerprogramms.
FIG 1 zeigt eine schematische Darstellung eines Verfahrens zum Kompilieren eines Computerprogramms mit mehreren Threads 2,3 für ein Multicore-Prozessorsystem und dessen Ausführung. Das Computerprogramm liegt zunächst in Form eines Quellpro- gramms 1 vor. In der Abbildung sind exemplarisch zwei Threads 2,3 mit Bezugszeichen versehen, wobei das Quellprogramm 1
noch weitere Threads umfasst, die hier aus Gründen der Übersichtlichkeit nicht explizit dargestellt sind.
Mit Hilfe eines Compilers 14 wird das Quellprograπun 1, wel- ches in einer Hochsprache erstellt wurde, in Maschinencode übersetzt. Das hierbei entstehende Zielprogramm 4 enthält neben den nunmehr in Maschinencode vorliegenden Befehlen der einzelnen Threads 2,3 ein zusätzliches Datensegment 11. Innerhalb des zusätzlichen Datensegments 11 sind Laufzeitinfor- mationen 7,8 hinterlegt, anhand derer ein Echtzeitbetriebssystem 9 mit einem Scheduler 13 zur Laufzeit des Zielprogramms 4 den Zeitbedarf der einzelnen Threads 2,3 bestimmen kann. Die Laufzeitinformationen 7,8 werden schon während des Kompiliervorgangs basierend auf einer Codeanalyse erzeugt und dienen dazu, die Parallelisierung der einzelnen Threads 2,3 auf der Zielhardware bei der späteren Laufzeit des Maschinenprogramms zu optimieren.
Das fertig kompilierte Zielprogramm 4 soll auf einem echt- zeitfähigen Zielsystem mit einem Multicore-Prozessor 6 ausgeführt werden. Der Multicore-Prozessor 6 enthält naturgemäß eine Anzahl von Hauptprozessoren 10, mit denen parallel verschiedene Tasks, Prozesse bzw. Threads ausgeführt werden können. Der Scheduler 13 analysiert während der Abarbeitung des Zielprogramms 4 den Ablauf des Zielprogramms 4 auf der Zielhardware. So ermittelt er beispielsweise die Anzahl der Speicherzugriffe und der Cache Misses etc., die während der Abarbeitung der Programmbefehle entstehen. Liegen derartige Messgrößen schon vor der Ausführung eines der Threads 2,3 vor, so verknüpft er diese Informationen mit den Laufzeitinformationen der noch auszuführenden Threads 2,3 und kann daraufhin eine relativ genaue Aussage über die Abarbeitungszeit tätigen, die die noch ausstehenden Threads 2,3 benötigen werden. Anhand dieser Informationen nimmt der Scheduler eine Vertei- lung der noch abzuarbeitenden Threads 2,3 auf die zur Verfügung stehenden Hauptprozessoren 10 vor, die zu einer optimalen Effizienz und Auslastung der Hauptprozessoren 10 bei der Abarbeitung des Zielprogramms 4 führt.
FIG 2 zeigt ein Datenverarbeitungssystem 12 zum Kompilieren und eine speicherprogrammierbare Steuerung 5 zum Ausführen des Computerprogramms, welches bereits unter der Beschreibung zur FIG 1 thematisiert wurde. Die Abbildung zeigt einen Soft- wareentwickler 15, der mit Hilfe des Datenverarbeitungssystems 12, bei dem es sich um einen üblichen PC oder Laptop handelt, das Quellprogramm 1 erzeugt. Innerhalb des Quellpro- gramms 1 definiert er einzelne Threads 2,3, von denen auch hier wiederum aus Gründen der Übersichtlichkeit nur zwei ex- plizit dargestellt und mit Bezugszeichen versehen sind. Auf der Datenverarbeitungseinheit 12 ist ein Compiler installiert, der während des Kompilierens des Quellprogramms 1 eine Codeanalyse durchführt. Das Ergebnis dieser Codeanalyse ist jeweils eine Laufzeitinformation 7,8, die für jeden Thread 2,3 des Quellprogramms 1 erstellt wird. Diese Laufzeitinformationen 7,8 werden in ein neues Datensegment 11 geschrieben, welches eine Erweiterung bekannter ausführbarer Dateien wie beispielsweise PE oder ELF Dateien darstellt.
Das fertig kompilierte Zielprogramm 4 wird anschließend von dem Datenverarbeitungssystem 12 auf eine speicherprogrammierbare Steuerung 5 geladen, um von dieser zur Steuerung eines industriellen automatisierten Prozesses ausgeführt zu werden. Die Speicherprogrammierbare Steuerung 5 umfasst hierfür einen Multicore-Prozessor, der im Vergleich zu einer Ein-Prozessor Ausführung eine sehr viel schnellere Bearbeitungszeit des Zielprogramms 4 gewährleistet.
Um die Möglichkeiten dieser Hardware möglichst effizient aus- zunutzen, ist ein echtzeitfähiges Betriebssystem auf der SPS 5 installiert, welches anhand der in dem Datensegment 11 abgespeicherten Laufzeitinformationen 7,8 eine im Hinblick auf die Gesamtabarbeitungszeit des Zielprogramms 4 optimierte Aufteilung der Threads 2,3 auf die verschiedenen Hauptprozes- soren des Multicore-Prozessors ermöglicht.
Claims
1. Verfahren zum Kompilieren eines Quellprogramms (1) mit mindestens zwei Threads (2,3) in ein auf einem echtzeitfähi- gen Zielsystem mit einem Multicore-Prozessor (6) ausführbares Zielprogramm (4), wobei für jedes der mindestens zwei Threads (2,3) eine Laufzeitinformation (7,8) beim Kompilieren generiert wird, die dem Zielsystem eine Ermittlung des Zeitbedarfs einer Ausführung des zugehörigen Threads (2,3) vor des- sen Ausführung ermöglicht.
2. Verfahren nach Anspruch 1, wobei die Laufzeitinformation (7,8) die Laufzeit des zugehörigen Threads (2,3) in Abhängigkeit der für die Ausführung des zugehörigen Threads (2,3) verfügbaren Ressourcen kennzeichnet .
3. Verfahren nach Anspruch 1 oder 2, wobei die Laufzeitinformationen (2,3) als zusätzliches Daten- segment (11) innerhalb des Zielprogramms (4) abgespeichert werden.
4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das Quellprogramm (1) ein Steuerungsprogramm für eine Speicherprogrammierbare Steuerung (5) ist.
5. Computerprogrammprodukt enthaltend Programmcodemittel zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 4, wenn besagtes Computerprogrammprodukt auf einem Datenverar- beitungssystem (12) ausgeführt wird.
6. Verfahren zur Ausführung eines Zielprogramms (4) auf einem echtzeitfähigen Zielsystem mit einem Multicore-Prozessor (6), wobei das Zielprogramm gemäß einem Verfahren nach einem der Ansprüche 1 bis 4 aus dem Quellprogramm (1) mit den mindestens zwei Threads (2,3) kompiliert wurde, wobei der Zeitbedarf einer Ausführung jedes der mindestens zwei Threads (2,3) anhand der zugehörigen Laufzeitinformation (7,8) vor der Ausführung der Threads (2,3) ermittelt wird.
7. Verfahren nach Anspruch 6, wobei die mindestens zwei Threads (2,3) mit einem Scheduler (13) des Zielssystems automatisch in Abhängigkeit ihres jeweiligen Zeitbedarfs auf Hauptprozessoren (10) des Multicore- Prozessors (6) verteilt werden.
8. Verfahren nach Anspruch 6 oder 7, wobei während der Laufzeit des Zielprogramms (4) das Laufzeitverhalten des Zielprogramms (4) charakterisierende Messgrößen ermittelt werden und der Zeitbedarf jedes der mindestens zwei Threads (2,3) anhand der zugehörigen Laufzeitinfor- mation (7,8) und der Messgrößen ermittelt wird.
9. Computerprogrammprodukt enthaltend Programmcodemittel zur Ausführung eines Verfahrens nach einem der Ansprüche 6 bis 8, wenn besagtes Computerprogrammprodukt auf einem echtzeitfähi- gen Datenverarbeitungssystem ausgeführt wird.
10. Vorrichtung zur Ausführung eines Zielprogramms (4), das aus einem Quellprogramm (1) mit mindestens zwei Threads (7,8) gemäß einem Verfahren nach einem der Ansprüche 1 bis 4 kompi- liert wurde, wobei die Vorrichtung einen Multicore-Prozessor (6) aufweist und ein Echtzeitbetriebssystem (9) zur Ermittlung des Zeitbedarf einer Ausführung jedes der mindestens zwei Threads (2,3) anhand der zugehörigen Laufzeitinformation (7,8) vor der Ausführung der Threads (2,3) umfasst.
11. Vorrichtung nach Anspruch 10, wobei die Vorrichtung einen Scheduler (13) zur automatischen Verteilung der mindestens zwei Threads (2,3) in Abhängigkeit ihres jeweiligen Zeitbedarfs auf Hauptprozessoren (10) des Multicore-Prozessors (6) aufweist.
12. Vorrichtung nach Anspruch 10 oder 11, wobei die Vorrichtung Mittel zur Ermittlung von das Laufzeitverhalten des Zielprogramms (4) charakterisierenden Messgrößen während der Laufzeit des Zielprogramms (4) aufweist und der Scheduler dazu eingerichtet ist, den Zeitbedarf jedes der mindestens zwei Threads (2,3) anhand der zugehörigen Laufzeitinformation (7,8) und der Messgrößen zu ermitteln.
13. Vorrichtung nach einem der Ansprüche 10 bis 12, wobei die Vorrichtung als Speicherprogrammierbare Steuerung (5) ausgebildet ist.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP07786690A EP2179356A1 (de) | 2007-08-16 | 2007-08-16 | Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung |
PCT/EP2007/007261 WO2009021539A1 (de) | 2007-08-16 | 2007-08-16 | Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2007/007261 WO2009021539A1 (de) | 2007-08-16 | 2007-08-16 | Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009021539A1 true WO2009021539A1 (de) | 2009-02-19 |
Family
ID=38586808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2007/007261 WO2009021539A1 (de) | 2007-08-16 | 2007-08-16 | Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP2179356A1 (de) |
WO (1) | WO2009021539A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970580A (zh) * | 2014-05-05 | 2014-08-06 | 华中科技大学 | 一种面向多核集群的数据流编译优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003100603A2 (en) * | 2002-05-27 | 2003-12-04 | Radioscape Limited | A device comprising a communications stack with a scheduler |
EP1492005A2 (de) * | 2003-06-27 | 2004-12-29 | Kabushiki Kaisha Toshiba | Verfahren und System zum Scheduling von Threads für Echtzeit-Operationen |
WO2006068943A2 (en) * | 2004-12-21 | 2006-06-29 | Ntt Docomo, Inc. | Method and apparatus for supporting soft real-time behavior |
WO2006109887A1 (ja) * | 2005-04-12 | 2006-10-19 | Waseda University | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
-
2007
- 2007-08-16 WO PCT/EP2007/007261 patent/WO2009021539A1/de active Application Filing
- 2007-08-16 EP EP07786690A patent/EP2179356A1/de not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003100603A2 (en) * | 2002-05-27 | 2003-12-04 | Radioscape Limited | A device comprising a communications stack with a scheduler |
EP1492005A2 (de) * | 2003-06-27 | 2004-12-29 | Kabushiki Kaisha Toshiba | Verfahren und System zum Scheduling von Threads für Echtzeit-Operationen |
WO2006068943A2 (en) * | 2004-12-21 | 2006-06-29 | Ntt Docomo, Inc. | Method and apparatus for supporting soft real-time behavior |
WO2006109887A1 (ja) * | 2005-04-12 | 2006-10-19 | Waseda University | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
JP2006293768A (ja) * | 2005-04-12 | 2006-10-26 | Univ Waseda | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
Non-Patent Citations (3)
Title |
---|
CHEN W Y ET AL: "PROFILE-ASSISTED INSTRUCTION SCHEDULING", INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, PLENUM PRESS, NEW YORK, US, vol. 22, no. 2, 1 April 1994 (1994-04-01), pages 151 - 181, XP000448673, ISSN: 0885-7458 * |
GOPINATH P ET AL: "Applying compiler techniques to scheduling in real-time systems", PROCEEDINGS OF THE REAL TIME SYSTEMS SYMPOSIUM. LAKE BUENA VISTA, DEC. 5 - 7, 1990, WASHINGTON, IEEE. COMP. SOC. PRESS, US, vol. SYMP. 11, 5 December 1990 (1990-12-05), pages 247 - 256, XP010022055, ISBN: 0-8186-2112-5 * |
WAUTERS P ET AL: "COMPILE-TIME ANALYSIS TO MINIMISE RUN-TIME OVERHEAD IN PRE-EMPTIVE SCHEDULING ON MULTI-PROCESSORS", PROCEEDINGS OF THE SPIE, SPIE, BELLINGHAM, VA, US, vol. 2296, January 1994 (1994-01-01), pages 677 - 686, XP000569462, ISSN: 0277-786X * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970580A (zh) * | 2014-05-05 | 2014-08-06 | 华中科技大学 | 一种面向多核集群的数据流编译优化方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2179356A1 (de) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE102015112202A1 (de) | Kombinieren von Pfaden | |
DE102006009263A1 (de) | System und Verfahren zur Analyse des Laufzeitverhaltens eines Steuerungsprogramms für einen Fertigungsprozess | |
EP2706421B1 (de) | Verfahren zur rechnergestützten Erzeugung mindestens eines Teils eines ausführbaren Steuerungsprogramms | |
DE112006004005T5 (de) | Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor | |
DE102015004034B4 (de) | Steuervorrichtung zum Ausführen eines Ablaufprogramms, die einen Mehrkernprozessor verwendet | |
EP2962205B1 (de) | Mehrkern-prozessorsystem mit fehleranalysefunktion | |
DE112013001735T5 (de) | Optimieren des Verbindens von Anweisungen | |
EP0825540B1 (de) | Prozessor mit Pipelining-Aufbau | |
DE102016223939A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung | |
DE10306051B4 (de) | Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren | |
DE102017210126A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung | |
DE112018002316T5 (de) | Codeabdeckungsverfolgung für ein mikrocontroller-programm | |
DE102009050161A1 (de) | Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten | |
WO2012062595A1 (de) | Verfahren und vorrichtung zum bewerten von software-parallelisierung | |
DE102005001679B4 (de) | Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung | |
WO2009021539A1 (de) | Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung | |
EP3070553B1 (de) | Computerimplementiertes verfahren zur rechnergestützten übersetzung eines die funktionalität eines steuerungsprogrammes beschreibenden grafischen modells | |
WO2010026145A1 (de) | Mikroprozessor mit pipelineblasen-erfassungseinrichtung | |
DE102020102996A1 (de) | Verfahren für einen integrierten Entwurf zur Modellierung, Simulation und Test einer Echtzeit-Architektur innerhalb einer modellbasierten System- und Softwareentwicklung | |
EP3021220A1 (de) | Verfahren und Computer zum Zugriff eines Echtzeit-Betriebssystems auf einen AHCI-Controller | |
DE102020005352A1 (de) | Verfahren zur Validierung eines neuen Software-Standes in einem redundanten System | |
WO2017153411A1 (de) | Verfahren zum betreiben eines steuergeräts für ein kraftfahrzeug | |
WO2024110148A1 (de) | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug | |
EP2363771A1 (de) | Programmierschnittstelle und Verfahren zur Steuerung einer Anwendung eines Gerätes einer industriellen Automatisierungsanordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 07786690 Country of ref document: EP Kind code of ref document: A1 |
|
REEP | Request for entry into the european phase |
Ref document number: 2007786690 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2007786690 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |